{"version":3,"file":"static/js/main.6d992c94.js","mappings":";gMA2BA,MAkIA,EAlIkBA,IAGK,IAHJ,WACfC,EAAU,SACVC,GACaF,EAEb,MAAMG,GAAOC,EAAAA,EAAAA,iBAAgBC,GAAeA,EAAMF,QAG3CG,EAAWC,IAFAJ,QAAuBK,IAAdL,EAAKM,WAAyCD,IAAjBL,EAAKM,KAAKC,IAAqBP,EAAKM,KAAKC,IAEnEC,EAAAA,EAAAA,yBAExBC,EAAgBC,EAAAA,OAAkB,MAqBxC,OACIC,EAAAA,EAAAA,KAACD,EAAAA,SAAc,CAAAE,UACXD,EAAAA,EAAAA,KAAA,OACIE,MAAO,CAAEC,SAAU,OAAQC,WAAY,QACvCC,UAAW,WAAWJ,UAEtBD,EAAAA,EAAAA,KAACM,EAAAA,EAAI,CACDC,IAAKT,EACLU,cAAerB,EACfsB,cA5BIC,IAEhB,MAAM,QAAEC,GAAYD,EAEpB,GAAIC,EAAS,CACT,MAAMC,EAAWd,EAAce,QAAQC,OAEvCF,EAASG,IAAM5B,EAAaA,EAAW4B,IAAM,EAE7CvB,EAAUoB,GACLI,SACAC,MAAMC,QACNC,OAAOC,IACJC,QAAQC,IAAIF,EAAM,IAE1BhC,GAAS,EACb,GAaYmC,OAASC,IACLC,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EACIwB,EAAAA,EAAAA,MAACC,EAAAA,EAAO,CAAAzB,SAAA,EACJD,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACHC,KAAK,SACLC,QAASL,EAAgBM,SAAS7B,SACrC,YAGDD,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACHC,KAAK,SACLC,QAASA,IAAOzC,EAAWA,GAAS,GAAS,KAAMa,SACtD,eAILD,EAAAA,EAAAA,KAAA,OAAKE,MAAO,CAAE6B,UAAW,UAAW9B,UAChCD,EAAAA,EAAAA,KAACgC,EAAAA,EAAW,CACR9B,MAAO,CAACC,SAAU,OAAQC,WAAY,OAAQ6B,YAAa,QAAShC,UACpED,EAAAA,EAAAA,KAAA,OAAKK,UAAW,oBAAoBJ,UAChCwB,EAAAA,EAAAA,MAAA,YACIpB,UAAW,kBAAkBJ,SAAA,EAE7BwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,QACPC,KAAM,OACNC,UAAWC,EAAAA,UACXC,UAAWC,EAAAA,qBAEf1C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,QACPC,KAAM,cACNC,UAAWC,EAAAA,UACXC,UAAWE,EAAAA,kBAEf3C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,SACPC,KAAM,QACNC,UAAWC,EAAAA,UACXC,UAAW,CAACG,EAAAA,eAAgBF,EAAAA,sBAEhC1C,EAAAA,EAAAA,KAAA,OAAKE,MAAO,CAAE2C,UAAW,QAAS5C,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFlC,MAAO,CAAE4C,YAAa,SACtBT,MAAO,SACPC,KAAM,SACNS,cAAc,EACdR,UAAWS,EAAAA,qBAIvBvB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAM,WACNC,KAAM,WACNC,UAAWC,EAAAA,UACXC,UAAWC,EAAAA,qBAEf1C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAM,QACNC,KAAM,OACNC,UAAWC,EAAAA,UACXC,UAAWC,EAAAA,qBAEf1C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAM,YACNC,KAAM,WACNC,UAAWC,EAAAA,UACXC,UAAWC,EAAAA,qBAEf1C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAM,cACNC,KAAM,aACNjC,UAAW,gBACXkC,UAAWC,EAAAA,gCAWtC,+BC1JzB,IAAAzC,EAAAkD,EAAA,MACAC,EAAAD,EAAA,MAOAE,EAAAF,EAAA,KAMAG,EAAAH,EAAA,MACAI,EAAAJ,EAAA,MACAK,EAAAL,EAAA,KACAM,EAAAN,EAAA,MACAO,EAAAP,EAAA,MAEAQ,EAAAR,EAAA,KACAS,EAAAT,EAAA,MACAU,EAAAV,EAAA,MAEAW,EAAAX,EAAA,MACAY,EAAAZ,EAAA,MAEAa,EAAAb,EAAA,MACAc,EAAAd,EAAA,MA6NAe,EAAAA,EApNmB,SAACC,GAKF,IAJdC,EAAQD,EAAAC,SACRC,EAAQF,EAAAE,SACRC,EAAWH,EAAAG,YACXhF,EAAQ6E,EAAA7E,SAEFC,EAAOyE,EAAAxE,gBAAe,SAACC,GAAU,OAAAA,EAAMF,IAAN,IACjCgF,EAAwBtE,EAAMuE,SAAkBjF,QAAuBK,IAAdL,EAAKM,MAAuBN,EAAKM,KAAK4E,MACjGlF,EAAKM,KAAK4E,KAAKC,SAAS,WAAaL,GADlCM,EAAOJ,EAAA,GAGRK,GAHoBL,EAAA,GAGEtE,EAAMuE,UAAkB,IAA7CK,EAAMD,EAAA,GAAEE,EAASF,EAAA,GAElBG,EAA6Bd,EAAAe,kBAAkBZ,GAA7Ca,EAAIF,EAAAE,KAAE3D,EAAKyD,EAAAzD,MAAE4D,EAASH,EAAAG,UAExBC,EAA8BlF,EAAMuE,SAAc,MAAjDnF,EAAU8F,EAAA,GAAEC,EAAaD,EAAA,GAE1BE,EAA8BpF,EAAMuE,SAAiB,SAApDc,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAE1BG,EAAe,WACjBD,EAAeE,OAAOC,YAAc,IAAO,KAC/C,EAEAzF,EAAM0F,WAAU,WACZF,OAAOG,iBAAiB,SAAUJ,EACtC,GAAG,IAEHvF,EAAM0F,WAAU,WACZJ,EAAeE,OAAOC,YAAc,IAAO,MAEvCT,GACAG,EAAcH,EAEtB,GAAG,CAACA,IASJ,OACIhF,EAAA4F,cAAC5F,EAAM6F,SAAQ,KACX7F,EAAA4F,cAAA,OAAKtF,UAAU,cACVe,EAASrB,EAAA4F,cAAC9B,EAAAgC,QAAe,MAAOb,EAAYjF,EAAA4F,cAACpC,EAAAuC,OAAM,CAACC,KAAK,QAAQC,KAAK,uBAA0B7G,EAC7FY,EAAA4F,cAAA,WACI5F,EAAA4F,cAACxC,EAAAzB,QAAO,KACJ3B,EAAA4F,cAACxC,EAAA8C,YAAW,KACJlG,EAAA4F,cAACxC,EAAAxB,OAAM,CACHC,KAAK,OACLC,QAAS,SAACqE,GAAM,OAAA9G,GAAA,GAEfgF,KAIhBK,GACG1E,EAAA4F,cAAA,OAAKzF,MAAO,CAAEiG,SAAU,QAASC,IAAK,OAAQC,MAAO,OAAQC,OAAQ,OACjEvG,EAAA4F,cAACxC,EAAA8C,YAAW,KACPxB,GAAW1E,EAAA4F,cAACxC,EAAAxB,OAAM,CACfC,KAAK,OACL2E,WAAY,UACZ1E,QAAS,WAAM,OAAA+C,GAAU,EAAV,GAAe,QAGlC7E,EAAA4F,cAACxC,EAAAxB,OAAM,CACHC,KAAK,QACL1B,MAAO,CAAEsG,gBAAiB,QAASC,gBAAiB,OACpDC,UAAU,EACVH,WAAY,WAAS,WAKpC5B,EACG5E,EAAA4F,cAACnC,EAAAmD,OAAM,CAACC,aAAc,CAAEC,MAAO,WAC3B9G,EAAA4F,cAAC/B,EAAAiC,QAAS,CACN1G,WAAYA,EACZC,SAAU,SAAC0H,GAAqB,OA5C3C,SAACA,GAClBlC,GAAU,GACNkC,GACA5B,EAAc,KAEtB,CAuCgE6B,CAAaD,EAAb,KAIxC/G,EAAA4F,cAACzC,EAAA5C,KAAI,CACDE,cAAe,CACX8B,KAAMnD,EAAWmD,KACjB0E,OAAQ7H,EAAW8H,YACnBC,MAAO/H,EAAWgI,WAClBC,MAAOjI,EAAWiI,MAClBC,SAAUlI,EAAWkI,SACrBC,KAAMnI,EAAWmI,KACjBC,SAAUpI,EAAWoI,SACrBC,OAAQrI,EAAWsI,WACnBzB,KAAM7G,EAAW6G,KACjB0B,YAAyC,MAA3BvI,EAAWuI,YAAuB,KAAO,MACvDC,OAA+B,MAAtBxI,EAAWwI,OAAkB,KAAO,MAC7CC,SAAUzI,EAAWyI,UAEzBrG,OAAQ,SAACC,GAAqC,OAC1CzB,EAAA4F,cAAA,OAAKzF,MAAO,CAAE2H,OAAQzC,EAAYjF,SAAU,SACxCJ,EAAA4F,cAACzC,EAAAlB,YAAW,CAAC9B,MAAO,CAAE4H,OAAQ,SAC1B/H,EAAA4F,cAAA,YACItF,UAAW,mBAEXN,EAAA4F,cAACrC,EAAApB,YAAW,CAACC,IAAK,IACdpC,EAAA4F,cAACzC,EAAA6E,aAAY,KACThI,EAAA4F,cAACvC,EAAA4E,MAAK,CAAC3H,UAAU,gBAAc,QAC/BN,EAAA4F,cAAA,OAAKtF,UAAU,qBACXN,EAAA4F,cAACzC,EAAAd,MAAK,CACFE,KAAM,OACNC,UAAWc,EAAA4E,MACXvB,UAAU,MAItB3G,EAAA4F,cAACzC,EAAA6E,aAAY,KACThI,EAAA4F,cAACvC,EAAA4E,MAAK,CAAC3H,UAAU,gBAAc,SAC/BN,EAAA4F,cAAA,OAAKtF,UAAU,qBACXN,EAAA4F,cAACzC,EAAAd,MAAK,CACFE,KAAM,SACNC,UAAWc,EAAA4E,MACXvB,UAAU,MAItB3G,EAAA4F,cAACzC,EAAA6E,aAAY,KACThI,EAAA4F,cAACvC,EAAA4E,MAAK,CAAC3H,UAAU,gBAAc,SAC/BN,EAAA4F,cAAA,OAAKtF,UAAU,qBACXN,EAAA4F,cAACzC,EAAAd,MAAK,CACFE,KAAM,QACNC,UAAWc,EAAA4E,MACXvB,UAAU,MAItB3G,EAAA4F,cAAA,aAEJ5F,EAAA4F,cAACrC,EAAApB,YAAW,CAACC,IAAK,IACdpC,EAAA4F,cAACzC,EAAA6E,aAAY,KACThI,EAAA4F,cAACvC,EAAA4E,MAAK,CAAC3H,UAAU,gBAAc,WAC/BN,EAAA4F,cAAA,OAAKtF,UAAU,qBACXN,EAAA4F,cAACzC,EAAAd,MAAK,CACFE,KAAM,WACNC,UAAWc,EAAA4E,MACXvB,UAAU,MAItB3G,EAAA4F,cAACzC,EAAA6E,aAAY,KACThI,EAAA4F,cAACvC,EAAA4E,MAAK,CAAC3H,UAAU,gBAAc,QAC/BN,EAAA4F,cAAA,OAAKtF,UAAU,qBACXN,EAAA4F,cAACzC,EAAAd,MAAK,CACFE,KAAM,OACNC,UAAWc,EAAA4E,MACXvB,UAAU,MAItB3G,EAAA4F,cAACzC,EAAA6E,aAAY,KACThI,EAAA4F,cAACvC,EAAA4E,MAAK,CAAC3H,UAAU,gBAAc,YAC/BN,EAAA4F,cAAA,OAAKtF,UAAU,qBACXN,EAAA4F,cAACzC,EAAAd,MAAK,CACFE,KAAM,WACNC,UAAWc,EAAA4E,MACXvB,UAAU,MAItB3G,EAAA4F,cAACzC,EAAA6E,aAAY,KACThI,EAAA4F,cAACvC,EAAA4E,MAAK,CAAC3H,UAAU,gBAAc,eAC/BN,EAAA4F,cAAA,OAAKtF,UAAU,qBACXN,EAAA4F,cAACzC,EAAAd,MAAK,CACFE,KAAM,SACNC,UAAWc,EAAA4E,MACXvB,UAAU,SAOlC3G,EAAA4F,cAAA,UAAQtF,UAAW,iBAAe,gBAClCN,EAAA4F,cAACjC,EAAAmC,QAAiB,CACd3F,MAAO,CAAEgI,UAAW,QAASJ,OAAQ,uBACrC/C,KAAM5F,EAAWgJ,QACjB5D,KAAK,cACL6D,cAAc,qBAElBrI,EAAA4F,cAAA,UAAQtF,UAAW,iBAAe,SAClCN,EAAA4F,cAAClC,EAAAoC,QAAe,CACZ3F,MAAO,CAAEgI,UAAW,QAASJ,OAAQ,uBACrC/C,KAAM5F,EAAWkJ,MACjBC,SAAUnJ,EAAWmD,KACrB8F,cAAc,qBAElBrI,EAAA4F,cAAA,UAAQtF,UAAW,iBAAe,QAClCN,EAAA4F,cAAChC,EAAAkC,QAAc,CACX3F,MAAO,CAAEgI,UAAW,QAASJ,OAAQ,uBACrC/C,KAAM5F,EAAWoJ,KACjBH,cAAc,qBArGoB,KA6G1D,MAKpB,qLCnOA,MAAMI,EAAc,CAChB,6BACA,yBACA,qBACA,kBAmjBJ,EA3iBiBtJ,IAGK,IAHJ,aACduJ,EAAY,SACZrJ,GACYF,EAEZ,MAAOwJ,EAAajJ,IAAYkJ,EAAAA,EAAAA,0BAE1BC,EAAe7I,EAAAA,OAAkB,OAEhCqF,EAAYC,GAAiBtF,EAAAA,SAAuB,SAE3DA,EAAAA,WAAgB,KACZwF,OAAOG,iBAAiB,SAAUJ,GAClCD,EAAeE,OAAOC,YAAc,GAAM,KAAK,GAChD,IAEH,MAAMF,EAAeA,KACjBD,EAAeE,OAAOC,YAAc,GAAM,KAAK,EAwDnD,OACIxF,EAAAA,EAAAA,KAACD,EAAAA,SAAc,CAAAE,UAEXD,EAAAA,EAAAA,KAAA,OACIE,MAAO,CAAEC,SAAU,OAAQC,WAAY,QACvCC,UAAW,WAAWJ,UAEtBD,EAAAA,EAAAA,KAACM,EAAAA,EAAI,CACDC,IAAKqI,EACLpI,cA9DYiI,KAExB,GAAIA,GAAgBA,EAAaI,QAAkC,MAAvBJ,EAAaI,OAAiB,CAEtE,MAAMC,EAA4B,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC3IC,EAAwB,CAAC,IAAK,IAAK,IAAK,IAAK,KACnD,IAAIC,EAAWP,EAAaI,OAAOI,QAAO,SAAUC,EAAaC,GAG7D,GAAgB,SAAZA,EAAMC,EACN,IAAKD,KAASA,EAAME,QACZP,EAAgBtE,SAAS2E,EAAMG,YAC/BJ,EAAO,IAAMC,EAAMG,WAAaH,EAAMI,EACtCL,EAAO,IAAMC,EAAMG,YAAa,GACzBP,EAAYvE,SAAS2E,EAAMG,aAClCJ,EAAO,IAAMC,EAAMG,WAAaH,EAAMI,GAKlD,OAAOL,CACX,GAAG,CAAC,GAMJ,OAJAF,EAASQ,UAAY,IAAIC,KAAKhB,EAAae,WAC3CR,EAAShD,KAAOyC,EAAazC,KAC7BgD,EAASU,KAAOjB,EAAaiB,KAEtBV,CACX,CACI,MAAO,EACX,EAgC2BW,CAAclB,GAC7BhI,cA5BIC,IAEhB,MAAM,QAAEC,GAAYD,EAEpB,GAAIC,EAAS,CACT,MAAMiJ,EAAehB,EAAa/H,QAAQC,OAE1C8I,EAAa7I,IAAM0H,EAAeA,EAAa7I,GAAK,EAEpD8I,EAAYkB,GACP5I,SACAC,MAAMC,IAAc9B,GAAS,EAAK,IAClC+B,OAAOC,IACJC,QAAQC,IAAIF,EAAM,GAE9B,GAcYG,OAASC,IACLC,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EACKwB,EAAAA,EAAAA,MAACC,EAAAA,EAAO,CAAAzB,SAAA,EACDD,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACPC,KAAK,SACDC,QAASL,EAAgBM,SAAS7B,SACrC,YAGLD,EAAAA,EAAAA,KAACiG,EAAAA,EAAW,CAAAhG,UACRD,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACHC,KAAK,SACLC,QAAUqE,GAAM9G,GAAS,GAAOa,SACnC,iBAKVD,EAAAA,EAAAA,KAAA,OAAKE,MAAO,CAAE6B,UAAW,UAAW9B,UAC/BD,EAAAA,EAAAA,KAACgC,EAAAA,EAAW,CACR9B,MAAO,CAAE2H,OAAQzC,EAAYjF,SAAU,OAAQC,WAAY,OAAQ6B,YAAa,QAAShC,UACzFD,EAAAA,EAAAA,KAAA,OAAKK,UAAW,oBAAoBJ,UAChCwB,EAAAA,EAAAA,MAAA,YACIvB,MAAO,CAAC,EACRG,UAAW,kBAAkBJ,SAAA,EAE7BD,EAAAA,EAAAA,KAAA,UACIE,MAAO,CAAE2J,WAAY,QACrBxJ,UAAW,gBAAgBJ,SAAC,WAIhCwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAIjC,MAAO,CAAE2C,UAAW,SAAW5C,SAAA,EACjDD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,cACPC,KAAM,YACNC,UAAWuH,EAAAA,eACXC,YAAY,GACZtH,UAAWC,EAAAA,qBAEf1C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,QACPC,KAAM,OACNC,UAAWyH,EAAAA,iBACXjF,KAAMyD,EACP/F,UAAWC,EAAAA,qBAEd1C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,kCACPC,KAAM,OACNC,UAAWC,EAAAA,UACXC,UAAWC,EAAAA,wBAInB1C,EAAAA,EAAAA,KAAA,UACIE,MAAO,CAAE2J,WAAY,QACrBxJ,UAAW,gBAAgBJ,SAAC,yBAIhCwB,EAAAA,EAAAA,MAAA,OAAKpB,UAAW,2BAA2BJ,SAAA,EACxCwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EAChBD,EAAAA,EAAAA,KAAA,YACAyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,aACND,EAAAA,EAAAA,KAAA,QAAAC,SAAM,8BAEVD,EAAAA,EAAAA,KAAA,cAGJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,+DACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,6DACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACTD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACDE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,oFACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,+BACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,2BACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,uDACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,kFACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,mFACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,gCACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,wBACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,4BACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACTD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACDE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,oBACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,mBACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,kFACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,gFACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,eACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,eACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,eACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,8BACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,2DACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,mCACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,cAEJyB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,QAAAC,SAAM,2BACNwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAAAjC,SAAA,EACRD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWS,EAAAA,aACX9C,MAAO,CAAE4C,YAAa,YAE1B9C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,OACNC,UAAWC,EAAAA,UACXtC,MAAO,CAAE4C,YAAa,eAG9B9C,EAAAA,EAAAA,KAAA,iBAIRA,EAAAA,EAAAA,KAAA,UACIE,MAAO,CAAE2J,WAAY,OAAQI,aAAa,SAC1C5J,UAAW,gBAAgBJ,SAAC,WAGhCD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,+CACPC,KAAM,OACNC,UAAWC,EAAAA,UACXC,UAAWC,EAAAA,qBAEf1C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,oFACPC,KAAM,OACNC,UAAWC,EAAAA,UACXC,UAAWC,EAAAA,qBAEf1C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,4KACPC,KAAM,OACNC,UAAWC,EAAAA,UACXC,UAAWC,EAAAA,qBAEf1C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,+LACPC,KAAM,OACNC,UAAWC,EAAAA,UACXC,UAAWC,EAAAA,qBAEf1C,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,oDACPC,KAAM,OACNC,UAAWC,EAAAA,UACXC,UAAWC,EAAAA,qCAUlC,gFCzkBzB,IAAA3C,EAAAkD,EAAA,MACAC,EAAAD,EAAA,MAOAiH,EAAAjH,EAAA,MACAkH,EAAAlH,EAAA,MAKAE,EAAAF,EAAA,KAEAK,EAAAL,EAAA,KAMAG,EAAAH,EAAA,MACAI,EAAAJ,EAAA,MACAO,EAAAP,EAAA,MACAM,EAAAN,EAAA,MAEAY,EAAAZ,EAAA,MAEAa,EAAAb,EAAA,MACAc,EAAAd,EAAA,MAEAmH,EAAAnH,EAAA,KACAoH,EAAApH,EAAA,MAEMqH,EAAO,CACT,CACIlB,EAAG,+CACHmB,KAAM,gBACNC,EAAG,OACHrI,IAAK,OAET,CACIiH,EAAG,sDACHmB,KAAM,uBACNC,EAAG,OACHrI,IAAK,OAET,CACIiH,EAAG,wCACHmB,KAAM,SACNC,EAAG,OACHrI,IAAK,QAUPsI,EAAe,SAACC,GAClB,IAHsBC,EAGhBC,EAAWF,EAAMvB,MAAQuB,EAAMG,SAASH,EAAMvB,OAAS,KAGvDjJ,EAAQ,CAAE4K,MADDF,GAAYF,EAAMG,SAASE,MAAUH,EAASpG,SAASkG,EAAMG,SAASE,OAAS,MAAQ,QAAW,IAG7GC,GARkBL,EAQYC,EARE7K,EAAA4F,cAAA,QAAMsF,wBAAyB,CAAEC,OAAQP,MAU7E,OACI5K,EAAA4F,cAAA,MAAIpB,KAAK,WAAWrE,MAAOA,GACtB8K,EAGb,EAyJAhH,EAAAA,QAvJkB,SAACC,GAGF,IAFbkH,EAAOlH,EAAAkH,QACP/L,EAAQ6E,EAAA7E,SAEFC,EAAOyE,EAAAxE,gBAAe,SAACC,GAAU,OAAAA,EAAMF,IAAN,IACjCgF,EAAwBtE,EAAMuE,SAAkBjF,QAAuBK,IAAdL,EAAKM,MAAuBN,EAAKM,KAAK4E,MACjGlF,EAAKM,KAAK4E,KAAKC,SAAS,UADrBC,EAAOJ,EAAA,GAGRK,GAHoBL,EAAA,GAGEtE,EAAMuE,UAAkB,IAA7CK,EAAMD,EAAA,GAAEE,EAASF,EAAA,GAElBG,EAAuEd,EAAAqH,oBAAoBD,GAAnFE,EAAQxG,EAAAE,KAASuG,EAAazG,EAAAzD,MAAamK,EAAe1G,EAAAG,UAElEC,EAAkClF,EAAMuE,SAAc,MAArDmE,EAAYxD,EAAA,GAAEuG,EAAevG,EAAA,GAE9BE,EAAgCpF,EAAMuE,SAAiB,GAAtDmH,EAAWtG,EAAA,GAAEuG,EAAcvG,EAAA,GAC5BwG,EAAsB5L,EAAM6L,OAAY,MACxCC,EAAsC9L,EAAMuE,SAAiB,SAA5DwH,EAAcD,EAAA,GAAEE,EAAiBF,EAAA,GAExC9L,EAAM0F,WAAU,WACZF,OAAOG,iBAAiB,SAAUJ,EACtC,GAAG,IACHvF,EAAM0F,WAAU,WACZsG,EAAmBxG,OAAOC,YAAc,IAAO,KACnD,GAAG,CAAC6F,IAEJ,IAAM/F,EAAe,WACjByG,EAAmBxG,OAAOC,YAAc,IAAO,KACnD,EAQAzF,EAAM0F,WAAU,WACR4F,GACAG,EAAgBH,EAExB,GAAG,CAACA,IASJ,OACItL,EAAA4F,cAAC5F,EAAM6F,SAAQ,KACV0F,EAAiBvL,EAAA4F,cAAC9B,EAAAgC,QAAe,MAAO0F,EAAmBxL,EAAA4F,cAACpC,EAAAuC,OAAM,CAACC,KAAK,QAAQC,KAAK,uBAA2ByC,EAC5G1I,EAAA4F,cAAA,WACG5F,EAAA4F,cAACxC,EAAAzB,QAAO,KACJ3B,EAAA4F,cAACxC,EAAA8C,YAAW,KACRlG,EAAA4F,cAACxC,EAAAxB,OAAM,CACHtB,UAAU,kBACVuB,KAAK,OACLC,QAAS,SAACqE,GAAM,OAAA9G,GAAA,GAAU,yBAMtCW,EAAA4F,cAACrC,EAAA0I,SAAQ,CACLzL,IAAKoL,EACLM,SAAUR,EACVS,SArCI,SAAChG,GACrBwF,EAAexF,EAAE+F,UACbN,GAAuBA,EAAoB9K,SAAW8K,EAAoB9K,QAAQsL,UAAYR,EAAoB9K,QAAQsL,SAASlM,WACnI0L,EAAoB9K,QAAQsL,SAASlM,SAAS,GAAGmM,UAAY,EACrE,EAkCoBC,iBAAiB,EACjBC,WAAW,EACXpM,MAAO,CAAE2J,WAAY,MAAOhC,OAAQiE,GACpCzL,UAAW,cACXN,EAAA4F,cAACrC,EAAAiJ,YAAW,CAACC,MAAM,WAElB/H,GACG1E,EAAA4F,cAAA,OAAKzF,MAAO,CAAEiG,SAAU,QAASC,IAAK,OAAQC,MAAO,OAAQC,OAAQ,OACjEvG,EAAA4F,cAACxC,EAAA8C,YAAW,KACPxB,GACG1E,EAAA4F,cAACxC,EAAAxB,OAAM,CACHC,KAAK,OACL2E,WAAY,UACZ1E,QAAS,WAAM,OAAA+C,GAAU,EAAV,GAAe,UAMjDD,EACG5E,EAAA4F,cAACnC,EAAAmD,OAAM,CAACC,aAAc,CAAEC,MAAO,WAC3B9G,EAAA4F,cAACyE,EAAAvE,QAAQ,CACL4C,aAAcA,EACdrJ,SAAU,SAAC0H,GAAqB,OAjD3C,SAACA,GAClBlC,GAAU,GACNkC,GACA0E,EAAgB,KAExB,CA4CgEzE,CAAaD,EAAb,KAIxC/G,EAAA4F,cAAA,WACI5F,EAAA4F,cAACzC,EAAA5C,KAAI,CACDiB,OAAQ,SAACC,GAAqC,OAC1CzB,EAAA4F,cAACzC,EAAAlB,YAAW,CAAC9B,MAAO,CAAC,GACjBH,EAAA4F,cAAA,YAAUtF,UAAW,mBAChBoI,EAAaI,OAAO4D,KAAI,SAACtD,GACtB,MAAqB,SAAZA,EAAMC,EACVrJ,EAAA4F,cAAA,OAAKtF,UAAU,oBAAoBH,MAAO,CAAE2C,UAAWyH,EAAKnB,EAAMuD,EAAI,GAAGvK,MACtEpC,EAAA4F,cAACuE,EAAAyC,OAAM,CAACzM,MAAO,CAAE0M,gBAAiB,aAC9BhG,aAAc,CAAEiB,OAAQsB,EAAMuD,EAAIpC,EAAKnB,EAAMuD,EAAI,GAAGlC,EAAI,GAAIqC,UAAW,UACvEC,eAAgB3D,EAAMuD,EAAIpC,EAAKnB,EAAMuD,EAAI,GAAGtD,EAAI,GAChD2D,MAAO,MAID,YAAZ5D,EAAMC,EACHrJ,EAAA4F,cAACzC,EAAA6E,aAAY,KACVhI,EAAA4F,cAAA,OAAKtF,UAAU,oBAAoBH,MAAO,CAAE0M,gBAAiB,cACzD7M,EAAA4F,cAACvC,EAAA4E,MAAK,CAAC3H,UAAU,gBAAgB8I,EAAMD,OAAO8D,GAC9CjN,EAAA4F,cAACzC,EAAAd,MAAK,CACFE,KAAM,IAAM6G,EAAMD,OAAOI,UACzBvG,aAAcoG,EAAMD,OAAOK,EAAI,IAAMJ,EAAMD,OAAO+D,EAClD/M,MAAO,CACHgN,WAAY,QAEhBxG,UAAWyC,EAAMD,OAAO+D,EAAEzI,SAAS,MACnC2I,UAAU,EACV5K,UAAY4G,EAAMD,OAAOK,EAAE/E,SAAS,OAAU2E,EAAMD,OAAO+D,EAAEzI,SAAS,MAAUnB,EAAA+J,SAAW/J,EAAAgK,YAItGtN,EAAA4F,cAACwE,EAAAmD,KAAI,CACFvI,KAAMoE,EAAME,QACZnJ,MAAO,CAAEgN,WAAY,QACrB7M,UAAW,gCAEXN,EAAA4F,cAACwE,EAAAoD,WAAU,CAACpE,MAAM,IAAItC,MAAO,UAC7B9G,EAAA4F,cAACwE,EAAAoD,WAAU,CAACpE,MAAM,IAAIqE,KAAM/C,IAI5C,KAvCkC,MA+C1D1K,EAAA4F,cAACrC,EAAAiJ,YAAW,CAACC,MAAM,sBACfzM,EAAA4F,cAAC0E,EAAAxE,QAAiB,CAACsF,QAASA,OAG9B,KAG1B,+BCnOA,IAAApL,EAAAkD,EAAA,MAEAM,EAAAN,EAAA,MACAE,EAAAF,EAAA,KAEAkH,EAAAlH,EAAA,MAOAmH,EAAAnH,EAAA,KACAwK,EAAAxK,EAAA,MAEAc,EAAAd,EAAA,MA+FAe,EAAAA,EA1FmB,SAAC0G,GACV,IAAAzG,EAA0EF,EAAA2J,qBAAqB,IAAvFC,EAAS1J,EAAAc,KAAS6I,EAAc3J,EAAA7C,MAAayM,EAAgB5J,EAAAe,UAErEX,EAA8BtE,EAAMuE,SAAiB,SAApDwJ,EAAUzJ,EAAA,GAAE0J,EAAa1J,EAAA,GAEhCtE,EAAM0F,WAAU,WACZF,OAAOG,iBAAiB,SAAUJ,EACtC,GAAG,IACHvF,EAAM0F,WAAU,WACZsI,EAAexI,OAAOC,YAAc,IAAO,KAC/C,GAAG,CAACmI,IAEJ,IAAMrI,EAAe,WACjByI,EAAexI,OAAOC,YAAc,IAAO,KAC/C,EAEMd,EAAgC3E,EAAMuE,UAAkB,GAAvDoE,EAAWhE,EAAA,GAAEsJ,EAActJ,EAAA,GAE5BG,EAAoC9E,EAAMuE,SAE7C,CAAC,GAFG2J,EAAapJ,EAAA,GAAEqJ,EAAgBrJ,EAAA,GAIhCI,EAAgClF,EAAMuE,SAAiB,IAAtD6J,EAAWlJ,EAAA,GAAEmJ,EAAcnJ,EAAA,GAclC,OACIlF,EAAA4F,cAAC5F,EAAM6F,SAAQ,KACc,IAAvBuI,EAAYE,OACTtO,EAAA4F,cAAE8H,EAAA5H,QAAS,CACRsF,SAAUgD,EACV/O,SAAU,WAAM,OAAAgP,EAAe,GAAf,IAGvB1F,EACI3I,EAAA4F,cAAA,WACG5F,EAAA4F,cAACyE,EAAAvE,QAAQ,CACLzG,SAAU,SAACkP,GAAuB,OAAAN,GAAe,EAAf,KAGzCjO,EAAA4F,cAAA,WACG5F,EAAA4F,cAAA,OAAKtF,UAAU,kBAAgB,mBAC9BuN,EAAkB7N,EAAA4F,cAAA5F,EAAA6F,SAAA,uBAAuBiI,EAAmB9N,EAAA4F,cAACpC,EAAAuC,OAAM,CAACC,KAAK,QAAQC,KAAK,uBAA0B2H,EACjH5N,EAAA4F,cAAA,WACI5F,EAAA4F,cAACxC,EAAAxB,OAAM,CACH4E,WAAY,UACZ3E,KAAK,cACLC,QAAS,WAAM,OAAAmM,GAAe,EAAf,EACf9N,MAAO,CAAEiG,SAAU,WAAYC,IAAK,OAAQC,MAAO,OAAQQ,MAAO,QAASP,OAAO,OAAM,iBAG5FvG,EAAA4F,cAACwE,EAAAmD,KAAI,CACDpN,MAAO,CAAE2H,OAAQiG,GACjBzN,UAAU,4BACV0E,KAAM4I,EACNY,UAAU,EACVC,YAAY,EACZC,WAAW,EACXC,aAAa,EACb3I,KAAM,QACN4I,YAzEN,MA0EMC,cAzEL,WA0EKC,WAAY,CACRC,SAAS,EACTC,KAAM,UAEVC,kBApDM,SAAC9I,GAC3B,IAAM+I,EAAW9E,EAAA+E,iBAAiB,CAC9BxO,MAAOwF,EACP+H,cAAeA,EACfU,YA/BU,QAiCdT,EAAiBe,GAEjBb,EAAee,OAAOC,KAAKH,GAAU,GACzC,GA6CwBlP,EAAA4F,cAACwE,EAAAoD,WAAU,CAACpE,MAAM,YAAYqD,MAAM,OAAOgC,YAAY,EAAOa,OAAO,mBACrEtP,EAAA4F,cAACwE,EAAAoD,WAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,EAAMc,OAAO,SAC/DvP,EAAA4F,cAACwE,EAAAoD,WAAU,CAACpE,MAAM,OAAOqD,MAAM,gBAAgBgC,YAAY,EAAMc,OAAO,SACxEvP,EAAA4F,cAACwE,EAAAoD,WAAU,CAACpE,MAAM,SAASqD,MAAM,IAAIgC,YAAY,EAAOc,OAAO,WAGnE,MAKxB,mWCnGA,MAsCA,EAtCwBC,KAEpB,MAEM,KAAExK,EAAI,MAAE3D,EAAK,UAAE4D,IAAcwK,EAAAA,EAAAA,qBAAoB,IAEvD,OACIxP,EAAAA,EAAAA,KAACD,EAAAA,SAAc,CAAAE,SACVmB,GAASpB,EAAAA,EAAAA,KAACyP,EAAAA,QAAe,IAAOzK,GAAYhF,EAAAA,EAAAA,KAAC8F,EAAAA,EAAM,CAACC,KAAK,QAAQC,KAAK,uBAA0BjB,GAC7F/E,EAAAA,EAAAA,KAAA,OAAKK,UAAW,oBAAoBJ,UAChCwB,EAAAA,EAAAA,MAAA,YACIpB,UAAW,kBAAkBJ,SAAA,EAE7BD,EAAAA,EAAAA,KAAA,UACIE,MAAO,CAAE2J,WAAY,QACrBxJ,UAAW,gBAAgBJ,SAAC,wBAGhCwB,EAAAA,EAAAA,MAAA,QAAAxB,SAAA,CAAM,kCAA8BD,EAAAA,EAAAA,KAAA,KAAAC,SAAG,QAAO,8DAE9CD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,GACPC,KAAM,OACNC,UAAWmN,EAAAA,gBACXC,WAAW,EACXC,QAAQ5P,EAAAA,EAAAA,KAAA,QAAME,MAAO,CAAE2P,MAAO,QAASC,aAAc,OAAQC,UAAW,UAAW9P,SAAC,yBACpF8E,KAAMA,EAAK0H,KAAKuD,GAAcA,EAAK1N,UAEvCtC,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,QACPC,KAAM,OACNC,UAAWC,EAAAA,iBAGb,MACA,kECzC1B,MA6BA,EA7B+BtD,IAIyC,IAJxC,MAC5BmD,EAAK,SACLpC,KACGyK,GAC2DxL,EAC9D,OACIuC,EAAAA,EAAAA,MAAA,eACQiJ,EACJ,iBACAxK,MAAO,CACH+P,OAAQ,gCACRC,QAAS,cACTC,aAAc,UACXzF,EAAMxK,OACXD,SAAA,EAEFD,EAAAA,EAAAA,KAAA,UACIE,MAAO,CACHgQ,QAAS,EACTjG,cAAe,IACjBhK,SAEDoC,IAEJpC,IACM,gBCdZ,MAAMmQ,EAAiBlR,IAKF,IALG,IAC3BmR,EAAG,IACHC,EAAG,QACHC,EAAO,SACPC,GACkBtR,EAElB,MAAMmD,GACFrC,EAAAA,EAAAA,KAACyQ,EAAAA,EAAI,CACDlG,KAAI,YAAAmG,OAAcJ,EAAM,GACxBK,SAAS,YAIjB,OACIlP,EAAAA,EAAAA,MAACmP,EAAsB,CAACvO,MAAOA,EAAMpC,SAAA,EACjCD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM+N,EAAIrK,KACVzD,UAAWyH,EAAAA,iBACXjF,KAAM,CAAC,QAAQ2L,OAAOF,GACtB/N,UAAWC,EAAAA,qBAEfjB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAIjC,MAAO,CAAEE,WAAY,QAASH,SAAA,EAChDD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,MACPC,KAAM+N,EAAIQ,IACVtO,UAAWC,EAAAA,UACXkE,UAAU,KAEd1G,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,MACPC,KAAM+N,EAAIS,IACVvO,UAAWuH,EAAAA,eACXC,YAAY,GACZrD,UAAU,KAEd1G,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,WACPC,KAAM+N,EAAIU,SACVxO,UAAWyH,EAAAA,iBACXjF,KAAM,CAAC,OAAQ,OAAQ,OAAQ,QAC/B2B,UAAU,SAGG,EC6CjC,EA/E4BxH,IAGK,IAHJ,QACzBqR,EAAO,KACPS,EAAI,KAAEC,EAAI,KAAEC,GACWhS,EAEvB,MAAMiS,EAA2B,QAAZZ,EAAqB,EAAkB,QAAZA,EAAqB,EAAI,GACjExL,KAAMyL,EAAUpP,MAAOgQ,EAAepM,UAAWqM,IAAoBC,EAAAA,EAAAA,qBAAoBH,IAU1FI,EAAWC,GAAgBzR,EAAAA,SAAuBmR,EAAO,EAAKD,EAAO,EAAKD,EAAO,EAAI,GAQ5F,OACIhR,EAAAA,EAAAA,KAACD,EAAAA,SAAc,CAAAE,UAEXD,EAAAA,EAAAA,KAAA,OAAAC,UACIwB,EAAAA,EAAAA,MAAA,YACIvB,MAAO,CAAC,EACRG,UAAW,kBAAkBJ,SAAA,EAE7BwB,EAAAA,EAAAA,MAAA,UAAQpB,UAAW,gBAAiBH,MAAO,CAAE2C,UAAW,OAAQiI,MAAO,aAAc7K,SAAA,CAAC,WAEhFsR,EAAY,IACVvR,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACHqE,KAAK,SACLpE,KAAK,MACL+O,SAAS,OACTzQ,MAAO,CAAEE,WAAY,IACrByB,QAtBT4P,KACXF,EAAY,GACZC,EAAaD,EAAY,EAC7B,EAmB4CtR,SACvB,mBAjCM,CAC3B,CAAE+F,KAAM,OAAQ6K,IAAK,OAAQC,IAAK,OAAQC,SAAU,QACpD,CAAE/K,KAAM,OAAQ6K,IAAK,OAAQC,IAAK,OAAQC,SAAU,QACpD,CAAE/K,KAAM,OAAQ6K,IAAK,OAAQC,IAAK,OAAQC,SAAU,QACpD,CAAE/K,KAAM,OAAQ6K,IAAK,OAAQC,IAAK,OAAQC,SAAU,QACpD,CAAE/K,KAAM,OAAQ6K,IAAK,OAAQC,IAAK,OAAQC,SAAU,SAiC3BzB,QAAO,CAACe,EAAKC,IAASA,GAAOiB,IAAY9E,KAAI,CAAC4D,EAAKC,KAC5DtQ,EAAAA,EAAAA,KAACoQ,EAAc,CACXC,IAAKA,EACLC,IAAKA,EACLC,QAASA,EACTC,SAAUA,OAIlBxQ,EAAAA,EAAAA,KAAA,UACIK,UAAW,gBAAiBH,MAAO,CAAE2C,UAAW,OAAQiI,MAAO,aAAc7K,SAAC,UAGnFD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACDE,KAAM,OACNC,UAAWuH,EAAAA,eACXC,YAAY,GACZtH,UAAWC,EAAAA,qBAEf1C,EAAAA,EAAAA,KAAA,UACIK,UAAW,gBAAiBH,MAAO,CAAE2C,UAAW,OAAQiI,MAAO,aAAc7K,SAAC,WAGnFD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACDE,KAAM,OACNC,UAAWmP,EAAAA,aACXxR,MAAO,CAAC2H,OAAO,iBAId,ECRzB,EA/EwB3I,IAEK,IAFJ,gBACrBsC,GACmBtC,EAEnB,MAAQ6F,KAAM4M,EAAUvQ,MAAOwQ,EAAe5M,UAAW6M,IAAoBC,EAAAA,EAAAA,qBAAoB,GAgBjG,OACI9R,EAAAA,EAAAA,KAACD,EAAAA,SAAc,CAAAE,UAEXD,EAAAA,EAAAA,KAAA,OAAKK,UAAW,oBAAoBJ,UAEhCwB,EAAAA,EAAAA,MAAA,YACIvB,MAAO,CAAC,EACRG,UAAW,kBAAkBJ,SAAA,EAE7BD,EAAAA,EAAAA,KAAA,UACIE,MAAO,CAAE2J,WAAY,QACrBxJ,UAAW,gBAAgBJ,SAAC,cAIhCwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBwB,EAAAA,EAAAA,MAAA,QAAAxB,SAAA,EACID,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,OACPC,KAAM,OACNC,UAAWwP,EAAAA,mBACXhI,YAAY,GACZiI,SApCE9L,IACtBA,EAAE+L,OACFzQ,EAAgBwQ,SAAS,OAAQ,CAAEC,MAAO/L,EAAE+L,OAChD,KAmCoBjS,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACHzB,MAAO,CAAE2P,MAAO,QAAShJ,MAAO,QAChCb,KAAK,SACLpE,KAAK,QACLC,QApCLqQ,KACnB1Q,EAAgBwQ,SAAS,OAAQ,CAAEC,MAAO,KAC1CzQ,EAAgBwQ,SAAS,OAAQ,CAAEC,MAAO,IAAK,QAqC/BxQ,EAAAA,EAAAA,MAAA,QAAAxB,SAAA,EACID,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,KACPC,KAAM,OACNC,UAAWwP,EAAAA,mBACXhI,YAAY,MAEhB/J,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACHzB,MAAO,CAAE2P,MAAO,QAAShJ,MAAO,QAChCb,KAAK,SACLpE,KAAK,QACLC,QA9CPsQ,KACjB3Q,EAAgBwQ,SAAS,OAAQ,CAAEC,MAAO,IAAK,WAiDnCjS,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,0BACPC,KAAM,eACNC,UAAWyH,EAAAA,iBACXjF,KAAM4M,EACN5O,aAAc,CAAEhC,IAAK,EAAGuB,KAAMd,EAAgB4Q,YAAY,SAC1DC,UAAW,eAIV,gBCtDzB,MA+RA,EA/RiBnT,IAMK,IANJ,OACdoT,EAAM,SACNC,EAAQ,SACRC,EAAQ,OACR3J,EAAM,SACNzJ,GACYF,EAEZ,MAAOuT,EAAUhT,IAAYiT,EAAAA,EAAAA,uBAEvBC,EAAe5S,EAAAA,OAAkB,OAEhCqF,EAAYC,GAAiBtF,EAAAA,SAAuB,UAEpD6S,EAASC,GAAc9S,EAAAA,UAAwB,GAEtDA,EAAAA,WAAgB,KACZwF,OAAOG,iBAAiB,SAAUJ,GAClCD,EAAeE,OAAOC,YAAc,GAAM,KAAK,GAChD,IAEH,MAAMF,EAAeA,KACjBD,EAAeE,OAAOC,YAAc,GAAM,KAAK,GA4J5ChF,EAAesS,GAAoB/S,EAAAA,SAAkC,SAAbyS,EAzJtCD,KACrB,MAAMQ,EAAc,CAAEC,QAAS,QAASC,KAAM,UAAWC,MAAO,QAASC,IAAK,WAE9E,MAAO,CACHC,OAAQb,EAASa,OACjBC,OAAQd,EAASc,OAASd,EAASc,OAAOC,mBAAmB,QAASP,GAAaQ,UAAU,GAAK,GAClGjF,UAAWiE,EAASjE,UAAYiE,EAASjE,UAAUgF,mBAAmB,QAASP,GAAaQ,UAAU,GAAK,GAC3GC,WAAYjB,EAASiB,WACrBC,UAAWlB,EAASkB,UACpBC,YAAanB,EAASmB,YACtBC,WAAYpB,EAASoB,WACrBC,cAAerB,EAASqB,cACxBC,UAAWtB,EAASsB,UACpBC,cAAevB,EAASuB,cACxBC,gBAAiBxB,EAASwB,gBAC1BC,QAASzB,EAASyB,QAClBC,WAAY1B,EAAS0B,WACrBC,SAAU3B,EAAS2B,SACnBC,cAAe5B,EAAS4B,cACxBC,SAAU7B,EAAS6B,SACnBC,OAAS9B,EAAS8B,QAAW9B,EAAS8B,OAAOhG,OAAS,EAAM,IAAI5E,KAAK8I,EAAS8B,QAAU,KACxFC,UAAW/B,EAAS+B,UACpBC,UAAWhC,EAASgC,UACpBC,YAAajC,EAASiC,YACtBC,gBAAiBlC,EAASkC,gBAC1BC,gBAAiBnC,EAASmC,gBAC1BC,SAAUpC,EAASoC,SACnBC,SAAUrC,EAASqC,SACnBC,OAAQtC,EAASsC,OACjBC,QAASvC,EAASuC,QAClBC,QAASxC,EAASwC,QAClBC,SAAUzC,EAASyC,SACnBC,WAAY1C,EAAS0C,WACxB,EAwHiFC,CAAW3C,GArHrE1J,KACxB,IAAIsM,EAAqB,CAAC,EAE1B,MAAMC,EAAuB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACrEC,EAAwB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACzD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAErE,IAAIrM,EAAWH,EAAOI,QAAO,SAAUC,EAAYC,GAC/C,IAAImM,EAAoB,GACpBC,EAAqB,GAEzB,GAAgB,YAAZpM,EAAMC,EACNkM,EAAY,IAAMnM,EAAMD,OAAOI,UAEA,IAA1BH,EAAMD,OAAOK,EAAE8E,QAAkB8G,EAAcG,KAChDnM,EAAMD,OAAOK,EAAI4L,EAAcG,IAG/BD,EAAY7Q,SAAS2E,EAAMD,OAAOI,WAClCJ,EAAOoM,GAAanM,EAAMD,OAAOK,EAAEiM,MAAM,OAER,MAA3BrM,EAAMD,OAAOI,WAAkD,MAA3BH,EAAMD,OAAOI,UACvDJ,EAAOoM,GAAiC,QAAnBnM,EAAMD,OAAOK,EAE7B6L,EAAW5Q,SAAS2E,EAAMD,OAAOI,WACtCJ,EAAOoM,GAAcnM,EAAMD,OAAOK,EAAE8E,OAAS,EAAK,IAAI5E,KAAKN,EAAMD,OAAOK,GAAK,GAG7EL,EAAOoM,GAAanM,EAAMD,OAAOK,EAErCL,EAAO,IAAMC,EAAMD,OAAOI,WAAaH,EAAMD,OAAO+D,OAEnD,GAAgB,SAAZ9D,EAAMC,EACX,IAAKD,KAASA,EAAME,QAChBiM,EAAY,IAAMnM,EAAMG,UAEA,IAAnBH,EAAMI,EAAE8E,QAAkB8G,EAAcG,KACzCnM,EAAMI,EAAI4L,EAAcG,IAGxBF,EAAW5Q,SAAS2E,EAAMG,WAC3BJ,EAAOoM,GAAcnM,EAAMI,EAAE8E,OAAS,EAAK,IAAI5E,KAAKN,EAAMI,GAAK,GACvD8L,EAAY7Q,SAAS2E,EAAMG,WACnCJ,EAAOoM,GAAanM,EAAMI,EAAEiM,MAAM,OAGlCtM,EAAOoM,GAAanM,EAAMI,EAE7BL,EAAO,IAAMC,EAAMG,WAAaH,EAAM8D,OAGzC,GAAgB,UAAZ9D,EAAMC,EAEX,IAAKD,KAASA,EAAME,QAChBiM,EAAY,IAAMnM,EAAMG,UACxBiM,EAAa,KAAOpM,EAAMG,UAAY,GACtCJ,EAAOoM,GAA2B,QAAbnM,EAAMsM,GAC3BvM,EAAOqM,GAA4B,QAAbpM,EAAMuM,GAIpC,OAAOxM,CACX,GAAG,CAAC,GAoDJ,OAlDqC,IAAjCiG,OAAOC,KAAKpG,GAAUqF,SACtBrF,EAAe,KAAI,gCACnBA,EAAe,KAAI,KACnBA,EAAe,KAAI,0CACnBA,EAAe,KAAI,CAAC,mCACpBA,EAAe,KAAI,SACnBA,EAAe,KAAI,SACnBA,EAAe,KAAI,SACnBA,EAAe,KAAI,SACnBA,EAAe,KAAI,SACnBA,EAAe,KAAI,CAAC,UACpBA,EAAe,KAAI,KACnBA,EAAe,KAAI,KACnBA,EAAe,KAAI,CAAC,QACpBA,EAAe,KAAI,CAAC,QACpBA,EAAe,KAAI,IACnBA,EAAe,KAA6B,QAAxBuJ,EAASoD,WAAwB,IAAM,MAC3D3M,EAAe,KAAI,cACnBA,EAAe,KAAI,SACnBA,EAAe,KAAI,CAAC,UACpBA,EAAe,KAAI,CAAC,UACpBA,EAAe,KAAI,IACnBA,EAAe,KAAI,KACnBA,EAAe,KAAI,CAAC,UACpBA,EAAe,KAAI,CAAC,UACpBA,EAAe,KAAI,SACnBA,EAAe,KAAI,SACnBA,EAAe,KAAI,SACnBA,EAAe,KAAI,KACnBA,EAAe,KAAI,SACnBA,EAAe,KAAI,SACnBA,EAAe,KAAI,SACnBA,EAAe,KAAI,SACnBA,EAAe,KAAI,2BACnBA,EAAe,KAAI,yBACnBA,EAAe,KAAI,yJACnBA,EAAe,KAAI,gLACnBA,EAAe,KAAI,sCACnBA,EAAe,MAAI,EACnBA,EAAe,MAAI,EACnBA,EAAe,MAAI,EACnBA,EAAe,MAAI,EACnBA,EAAe,MAAI,EACnBA,EAAe,KAAI,MAGvBA,EAAe,KAAI,UACnBA,EAAS,aAAeA,EAAe,KACvCA,EAAe,KAAI,GAEZA,CAAQ,EAG0FW,CAAcd,IAErH+M,EAAYC,IACd,MAAMjV,EAAW+R,EAAa9R,QAAQC,OACtCF,EAASkV,SAAWtD,EACpB5R,EAASmV,OAASzD,EAClB1R,EAASoV,QAAUzD,EAAS0D,QAC5BrV,EAASsV,MAAQ3D,EAAS4D,MACtBN,IACAjV,EAASwV,OAAS,QAGtB3D,EAAS7R,GACJI,SACAC,MAAMC,QACNC,OAAOC,IACJC,QAAQC,IAAIF,EAAM,IAE1BhC,GAAS,EAAK,EAGZiX,EAAWA,KACbT,GAAS,EAAK,EAgBlB,OACInU,EAAAA,EAAAA,MAAC1B,EAAAA,SAAc,CAAAE,SAAA,CAET2S,IACE5S,EAAAA,EAAAA,KAAC2G,EAAAA,EAAM,CACH6F,OAAO/K,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EAAKD,EAAAA,EAAAA,KAAA,QAAMK,UAAU,+BAA+BH,MAAO,CAAE4K,MAAO,SAAiB,wBAC5FwL,QAAUpQ,GAAM2M,GAAW,GAAO5S,UAClCwB,EAAAA,EAAAA,MAAA,KAAGvB,MAAO,CAAE4H,OAAQ,OAAQyO,UAAW,QAAStW,SAAA,CAAC,qDACID,EAAAA,EAAAA,KAAA,UAAMA,EAAAA,EAAAA,KAAA,SAAM,uCAK1EA,EAAAA,EAAAA,KAAA,OACKE,MAAO,CAAEC,SAAU,OAAQC,WAAY,QACvCC,UAAW,WAAWJ,UAEtBD,EAAAA,EAAAA,KAACM,EAAAA,EAAI,CACDC,IAAKoS,EACLnS,cAAkBA,EAClBC,cAhCIC,IAEhB,MAAM,QAAEC,GAAYD,EAEhBC,EACAiV,GAAS,GAGT/C,GAAW,EACf,EAwBYtR,OAASC,IACLC,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EACKwB,EAAAA,EAAAA,MAACC,EAAAA,EAAO,CAAAzB,SAAA,EACOD,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACfC,KAAK,SACLC,QAASL,EAAgBM,SAAS7B,SACrC,YAGDwB,EAAAA,EAAAA,MAACwE,EAAAA,EAAW,CAAAhG,SAAA,CACQ,eAAbuS,IAA8BxS,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACpCC,KAAK,OACLC,QAASwU,EAASpW,SACrB,UAGDD,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACHC,KAAK,SACLC,QAAUqE,GAAM9G,GAAS,GAAOa,SACnC,kBAKVD,EAAAA,EAAAA,KAAA,OAAKE,MAAO,CAAE6B,UAAW,UAAW9B,UAC/BwB,EAAAA,EAAAA,MAACO,EAAAA,EAAW,CACR9B,MAAO,CAAE2H,OAAQzC,EAAYjF,SAAU,OAAQC,WAAY,OAAQ6B,YAAa,QAAShC,SAAA,CAC1E,SAAbuS,IAAwBxS,EAAAA,EAAAA,KAACwW,EAAAA,QAAgB,CAACC,SAAS,EAAOC,KAAM/D,IACnD,aAAbH,IAA4BxS,EAAAA,EAAAA,KAAC2W,EAAe,CAACnV,gBAAiBA,IACjD,aAAbgR,IAA4BxS,EAAAA,EAAAA,KAACuP,EAAe,IAC/B,gBAAbiD,IAA+BxS,EAAAA,EAAAA,KAAC4W,EAAAA,QAAkB,IACrC,YAAbpE,IAA2BxS,EAAAA,EAAAA,KAAC6W,EAAAA,QAAc,CAACC,WAAW,GAAGC,QAAQ,KACpD,kBAAbvE,IAAiCxS,EAAAA,EAAAA,KAACgX,EAAAA,QAAoB,CAACN,KAAM/D,IAChD,eAAbH,IAA8BxS,EAAAA,EAAAA,KAACiX,EAAAA,EAAa,CAAC1G,QAASgC,EAAS0B,WAAYzS,gBAAiBA,IAC/E,iBAAbgR,IAAgCxS,EAAAA,EAAAA,KAACkX,EAAmB,CAClD3G,QAASgC,EAAS0B,WAClBjD,KAAMxQ,EAAc2W,KACpBlG,KAAMzQ,EAAc4W,KACpBlG,KAAM1Q,EAAc6W,OAET,aAAb7E,IAA4BxS,EAAAA,EAAAA,KAACsX,EAAAA,QAAe,CAACb,SAAS,EAAOnE,OAAQA,kBAOlF,yBClSzB,MA+EA,EA/E4BpT,IAKK,IALJ,OACzBoT,EAAM,OACNzJ,EAAM,SACN2J,KACG+E,GACoBrY,EAEvB,MAWOsY,EAAY/X,IAAYgY,EAAAA,EAAAA,yBAEzBC,EAAaxR,IAAyB,IAADyR,EAAAC,EAEvC,IAAIC,EAAQ,OAAD3R,QAAC,IAADA,GAAmB,QAAlByR,EAADzR,EAAG4R,cAAc,UAAE,IAAAH,GAAnBA,EAAqBI,WAAc,OAAD7R,QAAC,IAADA,GAAmB,QAAlB0R,EAAD1R,EAAG4R,cAAc,UAAE,IAAAF,OAAlB,EAADA,EAAqBG,kBAAerY,EACjF,IAAIsY,EAAoB,IAAIC,SAC5BD,EAAaE,OAAO,OAAQL,GAC5BG,EAAaE,OAAO,SAAU5F,GAE9BkF,EAAWQ,GACNhX,SACAC,MAAMC,QACNC,OAAOC,IACJC,QAAQC,IAAIF,EAAM,GACpB,EAGV,OACIK,EAAAA,EAAAA,MAAC1B,EAAAA,SAAc,CAAAE,SAAA,EACXD,EAAAA,EAAAA,KAACM,EAAAA,EAAI,CACJiB,OAASC,IACNxB,EAAAA,EAAAA,KAAA,OAAKK,UAAW,oBAAqBH,MAAO,CAAE2C,UAAW,OAAQ5C,UACzDD,EAAAA,EAAAA,KAAA,OAAKE,MAAO,CAAE6B,UAAW,UAAW9B,UAChCD,EAAAA,EAAAA,KAACgC,EAAAA,EAAW,CACR9B,MAAO,CAAEC,SAAU,OAAQC,WAAY,OAAQ6B,YAAa,QAAShC,UACrED,EAAAA,EAAAA,KAAA,OAAKK,UAAW,oBAAqBH,MAAO,CAAE2C,UAAW,OAAQ5C,UAC9DD,EAAAA,EAAAA,KAAA,YACCE,MAAO,CAAC,EACRG,UAAW,kBAAkBJ,UAEzBD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFC,MAAO,cACPC,KAAM,cACNC,UAAW4V,EAAAA,WACXC,MAAOV,iBASvC1X,EAAAA,EAAAA,KAAA,SACAA,EAAAA,EAAAA,KAACsN,EAAAA,EAAI,CACDpN,MAAO,CAAE2H,OAAQ,QAASoI,OAAO,aACjC5P,UAAU,iBACV0E,KAAM8D,EAAO4D,KAAKuD,IAAS,CACvBqI,SAAUrI,EAAK9G,OAAOK,EACtB+O,SAAUtI,EAAK9G,OAAO+D,MAE1BwB,WAAW,EACXC,aAAa,EACb3I,KAAM,QAAQ9F,UAEdD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,WAAWqF,YAAY,EAAOhB,KAlE1C9C,IACd,MAAM6N,EAAW7N,EAAMG,SAASwN,SAC1BG,EAAW9N,EAAMG,SAASyN,SAEhC,OACItY,EAAAA,EAAAA,KAAA,MAAI,sBAAqB,EAAEC,UACvBD,EAAAA,EAAAA,KAAA,KAAGyY,KAAM,kDAAoDD,EAAW,IAAMlG,EAAS,IAAMiG,EAAStY,SAAEsY,KACtG,QA8DO,gBC/EzB,MAAMG,EAAWxZ,IAQK,IARJ,OACdyZ,EAAM,OACN9P,EAAM,KACNyB,EAAI,mBACJsO,EAAkB,OAClBC,EAAM,aACNpO,KACG8M,GACSrY,EAEZ,OACIc,EAAAA,EAAAA,KAACD,EAAAA,SAAc,CAAAE,UACXwB,EAAAA,EAAAA,MAAA,YAAUpB,UAAW,kBAAkBJ,SAAA,EACnCD,EAAAA,EAAAA,KAAA,UAAQK,UAAW,gBAAiBH,MAAO,CAAE2J,WAAY,QAAS5J,SAAE0Y,IACnE9P,EAAO4D,KAAKtD,GACY,SAAZA,EAAMC,GACV3H,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EACGD,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBACXH,MAAO,CAAE2C,UAAWyH,EAAKnB,EAAMuD,EAAI,GAAGvK,IAAK2I,MAAO,OAAQjD,OAAQsB,EAAMuD,EAAIpC,EAAKnB,EAAMuD,EAAI,GAAGlC,EAAI,IAAKvK,SACrGkJ,EAAMuD,GAAKpC,EAAKnB,EAAMuD,EAAI,GAAGnC,KAAQD,EAAKnB,EAAMuD,EAAI,GAAGnC,KAAO,QAI1D,YAAZpB,EAAMC,GACHpJ,EAAAA,EAAAA,KAAC+H,EAAAA,EAAY,CAAA9H,UACVwB,EAAAA,EAAAA,MAAA,OAAKpB,UAAU,oBAAoBH,MAAO,CAAE0M,gBAAiB,aAAc3M,SAAA,EACvED,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAEkJ,EAAMD,OAAO8D,KAC9ChN,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,IAAM6G,EAAMD,OAAOI,UACzBvG,aAAc6V,EAAmBzP,GAAS,IAAMA,EAAMD,OAAO+D,EAC7D/M,MAAO,CACHgN,WAAY,OACZpC,MAAO3B,EAAMD,OAAO6B,MAAS5B,EAAMD,OAAOK,EAAEuP,WAAW3P,EAAMD,OAAO6B,OAAS,MAAQ,QAAW,GAChGlD,OAAmC,MAA3BsB,EAAMD,OAAOI,UAAoB,QACT,MAA3BH,EAAMD,OAAOI,UAAoB,QAAU,IAEpD5C,UAAWyC,EAAMD,OAAO+D,EAAEzI,SAAS,MACnC2I,UAAU,EACV5K,UAAY4G,EAAMD,OAAOK,EAAE/E,SAAS,OAAU2E,EAAMD,OAAO+D,EAAEzI,SAAS,MAAU4I,EAAAA,EAAWC,EAAAA,SAIzF,SAAZlE,EAAMC,GACH3H,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACFvI,KAAMoE,EAAME,QACZnJ,MAAO,CAAEgN,WAAY,QACrB7M,UAAW,+BAA+BJ,SAAA,EAE1CD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,IAAItC,MAAOgS,KAC7B7Y,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,IAAIqE,KAAM/C,KAC5BzK,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,IAAIqE,KAAM/C,QAE/BhJ,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACFvI,KAAMoE,EAAME,QACZnJ,MAAO,CAAEgN,WAAY,QAASjN,SAAA,EAE9BD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,IAAIqD,MAAM,IAAI3F,MAAOgS,KACvC7Y,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,KAAKqD,MAAM,YAAYgB,KAAM/C,KAC/CzK,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,KAAKqD,MAAM,UAAUgB,KAAM/C,aAKxD,EA0NzB,EA9MgBsO,IAOK,IAPJ,SACbxG,EAAQ,KACRjI,EAAI,mBACJsO,EAAkB,OAClBC,EAAM,aACNpO,KACG8M,GACQwB,EAEX,OACItX,EAAAA,EAAAA,MAAC1B,EAAAA,SAAc,CAAAE,SAAA,EACXwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBD,EAAAA,EAAAA,KAAA,OAAKE,MAAO,CAAEqW,UAAW,QAAStW,UAC9BD,EAAAA,EAAAA,KAAA,OAAKgZ,IAAI,0BAA0BC,IAAI,WAE3CxX,EAAAA,EAAAA,MAAA,OAAKvB,MAAO,CAAEqW,UAAW,UAAWtW,SAAA,EAChCD,EAAAA,EAAAA,KAAA,OAAAC,SAAMsS,EAAS2G,WAAa,2CAC5BlZ,EAAAA,EAAAA,KAAA,OAAAC,SAAMsS,EAAS0C,cACfjV,EAAAA,EAAAA,KAAA,OAAAC,SAAM,OAASsS,EAASyC,YACxBhV,EAAAA,EAAAA,KAAA,OAAAC,SAAM,UAAYsS,EAAS4G,qBAGnCnZ,EAAAA,EAAAA,KAACM,EAAAA,EAAI,CACDE,cAAe,CACXgT,WAAYjB,EAASiB,WACrBC,UAAWlB,EAASkB,UACpBC,YAAanB,EAASmB,YACtBC,WAAYpB,EAASoB,WACrBK,QAASzB,EAASyB,QAClBC,WAAY1B,EAAS0B,WACrBC,SAAU3B,EAAS2B,SACnBE,SAAU7B,EAAS6B,SACnBC,OAAS9B,EAAS8B,QAAW9B,EAAS8B,OAAOhG,OAAS,EAAO,IAAI5E,KAAK8I,EAAS8B,QAASf,qBAAuB,KAC/GgB,UAAW/B,EAAS+B,UACpBC,UAAWhC,EAASgC,UACpBE,gBAAiBlC,EAASkC,iBAE9BlT,OAASC,IACLC,EAAAA,EAAAA,MAACO,EAAAA,EAAW,CAAC9B,MAAO,CAAC,EAAED,SAAA,EACnBwB,EAAAA,EAAAA,MAAA,YACIpB,UAAW,kBAAkBJ,SAAA,EAE7BD,EAAAA,EAAAA,KAAA,UAAQK,UAAW,gBAAgBJ,SAAC,WACpCwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBwB,EAAAA,EAAAA,MAACsG,EAAAA,EAAY,CAAA9H,SAAA,EACTD,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,gBAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,aACNC,UAAW0F,EAAAA,GACXvB,UAAU,UAItBjF,EAAAA,EAAAA,MAACsG,EAAAA,EAAY,CAAA9H,SAAA,EACTD,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,eAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,YACNC,UAAW0F,EAAAA,GACXvB,UAAU,UAItBjF,EAAAA,EAAAA,MAACsG,EAAAA,EAAY,CAAA9H,SAAA,EACTD,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,kBAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,cACNC,UAAW0F,EAAAA,GACXvB,UAAU,UAItBjF,EAAAA,EAAAA,MAACsG,EAAAA,EAAY,CAAA9H,SAAA,EACTD,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,WAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,aACNC,UAAW0F,EAAAA,GACXvB,UAAU,gBAM9BjF,EAAAA,EAAAA,MAAA,YACIpB,UAAW,kBAAkBJ,SAAA,EAE7BD,EAAAA,EAAAA,KAAA,UAAQK,UAAW,gBAAgBJ,SAAC,SACpCwB,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBwB,EAAAA,EAAAA,MAACsG,EAAAA,EAAY,CAAA9H,SAAA,EACTD,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,UAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,UACNC,UAAW0F,EAAAA,GACXvB,UAAU,UAItBjF,EAAAA,EAAAA,MAACsG,EAAAA,EAAY,CAAA9H,SAAA,EACTD,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,aAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,aACNC,UAAW0F,EAAAA,GACXvB,UAAU,UAItBjF,EAAAA,EAAAA,MAACsG,EAAAA,EAAY,CAAA9H,SAAA,EACTD,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,WAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,WACNC,UAAW0F,EAAAA,GACXvB,UAAU,UAItBjF,EAAAA,EAAAA,MAACsG,EAAAA,EAAY,CAAA9H,SAAA,EACTD,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,WAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,WACNC,UAAW0F,EAAAA,GACXvB,UAAU,aAK1BjF,EAAAA,EAAAA,MAACS,EAAAA,EAAW,CAACC,IAAK,GAAGlC,SAAA,EACjBwB,EAAAA,EAAAA,MAACsG,EAAAA,EAAY,CAAA9H,SAAA,EACTD,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,eAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,SACNC,UAAW0F,EAAAA,GACXvB,UAAU,UAItBjF,EAAAA,EAAAA,MAACsG,EAAAA,EAAY,CAAA9H,SAAA,EACTD,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,YAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,YACNC,UAAW0F,EAAAA,GACXvB,UAAU,UAItBjF,EAAAA,EAAAA,MAACsG,EAAAA,EAAY,CAAA9H,SAAA,EACTD,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,iBAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,YACNC,UAAW0F,EAAAA,GACXvB,UAAU,UAItBjF,EAAAA,EAAAA,MAACsG,EAAAA,EAAY,CAAA9H,SAAA,EACTD,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,iBAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC9BD,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,kBACNC,UAAW0F,EAAAA,GACXvB,UAAU,gBAM9B1G,EAAAA,EAAAA,KAAC0Y,EAAQ,CACL7P,OAAQ0J,EAAS6G,WAAWvQ,OAC5B8P,OAAO,YACPrO,KAAMA,EACNuO,OAAQA,EACRpO,aAAcA,EACdmO,mBAAoBA,KAExB5Y,EAAAA,EAAAA,KAAC0Y,EAAQ,CACL7P,OAAQ0J,EAAS8G,aAAaxQ,OAC9B8P,OAAO,eACPrO,KAAMA,EACNuO,OAAQA,EACRpO,aAAcA,EACdmO,mBAAoBA,KAExB5Y,EAAAA,EAAAA,KAAC0Y,EAAQ,CACL7P,OAAQ0J,EAAS+G,SAASzQ,OAC1B8P,OAAO,WACPrO,KAAMA,EACNuO,OAAQA,EACRpO,aAAcA,EACdmO,mBAAoBA,WAMvB,ECrRnBtO,EAAO,CACT,CACIlB,EAAG,4EACHoB,EAAG,OACHrI,IAAK,OAET,CACIiH,EAAG,2zEACHoB,EAAG,QACHrI,IAAK,OAET,CACIiH,EAAG,6XACHoB,EAAG,QACHrI,IAAK,QAET,CACIiH,EAAG,uPACHoB,EAAG,QACHrI,IAAK,QAET,CACIiH,EAAG,uKACHoB,EAAG,OACHrI,IAAK,QAET,CACIiH,EAAG,oJACHoB,EAAG,OACHrI,IAAK,QAET,CACIiH,EAAG,+gCACHoB,EAAG,QACHrI,IAAK,QAET,CACIiH,EAAG,w8EAYHoB,EAAG,QACHrI,IAAK,QAET,CACIiH,EAAG,wvCAQHoB,EAAG,QACHrI,IAAK,OAET,CACIiH,EAAG,qDACHmB,KAAM,qBACNC,EAAG,OACHrI,IAAK,QAET,CACIiH,EAAG,4DACHmB,KAAM,4BACNC,EAAG,OACHrI,IAAK,QAET,CACIiH,EAAG,kQACHoB,EAAG,OACH+O,EAAG,GACHpX,IAAK,QAET,CACIiH,EAAG,8CACHmB,KAAM,eACNC,EAAG,OACHrI,IAAK,OAET,CACIiH,EAAG,+DACHmB,KAAM,+BACNC,EAAG,OACHrI,IAAK,QAET,CACIiH,EAAG,uEACHmB,KAAM,uCACNC,EAAG,OACHrI,IAAK,QAET,CACIiH,EAAG,0DACHmB,KAAM,0BACNC,EAAG,OACHrI,IAAK,QAET,CACIiH,EAAG,sEACHmB,KAAM,sCACNC,EAAG,OACHrI,IAAK,QAET,CACIiH,EAAG,sDACHmB,KAAM,sBACNC,EAAG,OACHrI,IAAK,QAET,CACIiH,EAAG,6CACHmB,KAAM,aACNC,EAAG,OACHrI,IAAK,QAET,CACIiH,EAAG,wDACHmB,KAAM,wBACNC,EAAG,OACHrI,IAAK,QAET,CACIiH,EAAG,oCACHmB,KAAM,IACNC,EAAG,OACHrI,IAAK,QAET,CACIiH,EAAG,mHACHoB,EAAG,OACHrI,IAAK,OAET,CACIiH,EAAG,wHACHoB,EAAG,OACHrI,IAAK,OAET,CACIiH,EAAG,gEACHmB,KAAM,gCACNC,EAAG,OACHrI,IAAK,SAYPqX,GAAoB7O,IAAa3K,EAAAA,EAAAA,KAAA,QAAMiL,wBAAyB,CAAEC,OAAQP,KAE1EF,GAAgBC,IAClB,MAEME,EAAWF,EAAMvB,MAAQuB,EAAMG,SAASH,EAAMvB,OAAS,KAGvDjJ,EAAQ,CAAE4K,MADDF,GAAYF,EAAMG,SAASE,MAAUH,EAASpG,SAASkG,EAAMG,SAASE,OAAS,MAAQ,QAAW,IAGjH,IAAIC,EAAaJ,EACjB,GAAIA,GAAyB,MAAZA,GARY,CAAC,IAAK,KAQcpG,SAASkG,EAAMG,SAASvB,WAAY,CACjF,MAAMmQ,EAAgB7O,EAAS8O,QAAQ,4BAA6B,qCACpE1O,EAAawO,GAAiBC,EAAcE,WAAW,KAAM,SAASA,WAAW,KAAM,SAC3F,MACsB,OAAb/O,IACLI,EAAawO,GAAiB5O,IAGlC,OACI5K,EAAAA,EAAAA,KAAA,MAAIuE,KAAK,WAAWrE,MAAOA,EAAMD,SAC5B+K,GACA,EA6Rb,GAzRgB9L,IAOK,IAPJ,OACboT,EAAM,SACNC,EAAQ,SACRC,EAAQ,SACRrO,EAAQ,OACR0U,KACGtB,GACQrY,EAEX,MAAMG,GAAOC,EAAAA,EAAAA,iBAAgBC,GAAUA,EAAMF,QACtCoF,EAASmV,GAAc7Z,EAAAA,SAAwBwS,GAAiC,WAApBA,EAASa,QACxE/T,QAAuBK,IAAdL,EAAKM,MAAuBN,EAAKM,KAAK4E,MAAsB,gBAAbiO,IACtDnT,EAAKM,KAAK4E,KAAKC,SAAS,UAAYnF,EAAKM,KAAK4E,KAAKC,SAAS,iBACzDnF,EAAKM,KAAK4E,KAAKC,SAAS,WAA2B,aAAbgO,KAExCqH,EAAUC,GAAe/Z,EAAAA,SAAqC,iBAAbyS,IACjDuH,EAAQC,GAAaja,EAAAA,SAAsC,iBAAbyS,GAA8C,eAAbA,GAEhFyH,EAAqBla,EAAAA,OAAwB,OAE5C4E,EAAQC,GAAa7E,EAAAA,UAAwB,IAE7C8I,EAAQqR,GAAana,EAAAA,SAAoB,MAEhDA,EAAAA,WAAgB,KACZ,GAAIwS,EAAU,CAeV,MAAM4H,EAbW,CACb,CAAE7X,KAAM,OAAQuG,OAAQ,IACxB,CAAEvG,KAAM,WAAYuG,OAAQ0J,EAAS6H,SAASvR,QAC9C,CAAEvG,KAAM,WAAYuG,OAAQ0J,EAAS8H,SAASxR,QAC9C,CAAEvG,KAAM,cAAeuG,OAAQ0J,EAAS+H,YAAYzR,QACpD,CAAEvG,KAAM,UAAWuG,OAAQ0J,EAASgI,QAAQ1R,QAC5C,CAAEvG,KAAM,gBAAiBuG,OAAQ0J,EAASiI,cAAc3R,QACxD,CAAEvG,KAAM,aAAcuG,OAAQ0J,EAAS6G,WAAWvQ,QAClD,CAAEvG,KAAM,eAAgBuG,OAAQ0J,EAAS8G,aAAaxQ,QACtD,CAAEvG,KAAM,WAAYuG,OAAQ0J,EAAS+G,SAASzQ,QAC9C,CAAEvG,KAAM,cAAeuG,OAAQ0J,EAASkI,YAAY5R,SAG1B6R,MAAK3B,IAAA,IAAC,KAAEzW,GAAMyW,EAAA,OAAKzW,IAASkQ,CAAQ,IAClE0H,EAAUC,EAAMtR,OACpB,IACD,CAAC0J,EAAUC,IAEd,MAOMoG,EAA2BzP,GAKzBA,GAASA,EAAMD,QAHU,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAGpB1E,SAAS2E,EAAMD,OAAOI,WACnDH,EAAMD,OAAOK,EAAK,IAAIE,KAAKN,EAAMD,OAAOK,GAAI+J,qBAAuB,GAErEnK,GAASA,EAAMD,QALK,CAAC,IAAK,KAKU1E,SAAS2E,EAAMD,OAAOI,WACxDH,EAAMD,OAAOK,EAAK,IAAIE,KAAKN,EAAMD,OAAOK,GAAIoR,iBAAmB,GAGnExR,EAAMD,OAAOK,EAGlBqR,EAAcC,IAChB,GAAkB,eAAbrI,GAA+BqI,EAK/B,CACD,MAAMC,EAAcvV,OAAOwV,KAAK,GAAI,UACpC,GAAID,EAAa,CAEb,GADAA,EAAYE,SAASC,MAAM,sBAAwBzI,EAAW,4BAC7C,iBAAbA,EAA6B,CAC7BsI,EAAYE,SAASC,MAAM,sFAE3B,IAAIC,EAAc,aAIlB3I,EAAS8G,aAAaxQ,OAAOsS,SAAShS,IACjB,YAAZA,EAAMC,GAAgD,MAA3BD,EAAMD,OAAOI,YACzC4R,EAAc/R,EAAMD,OAAOK,EAAE6R,MAAM,EAAG,IAC1C,IAGJ,IAAIC,EAAM,GACV,MAAMC,EAAW/I,EAAS8B,OAAOmB,MAAM,KACnC8F,EAASjN,QAAU,IACnBgN,EAAMC,EAAS,IAGnBR,EAAYE,SAASC,MACjB,iDACoB1I,EAAS2G,WAD7B,mDAEU3G,EAAS0C,WAFnB,kBAGc1C,EAASyC,SAHvB,qBAIiBzC,EAAS4G,YAJ1B,gDAKsC5G,EAASyB,QAAU,MAAQzB,EAASiB,WAAa,IAAMjB,EAASkB,UALtG,uBAMuByH,EANvB,WAOQ3I,EAAS0B,WAAa,KAAO1B,EAAS+B,UAAY,MAAQ/B,EAAS2B,SAC3E,MAAQ3B,EAAS4B,cAAgB,MAAQ5B,EAAS6B,SAClD,mBAAqBiH,EATrB,sCAYJ9I,EAAS8G,aAAaxQ,OAAOsS,SAAShS,IAClB,SAAZA,EAAMC,IACN0R,EAAYE,SAASC,MAAM,YAC3B9R,EAAME,QAAQ8R,SAASjS,IACO,MAArBA,EAAOI,WAA4C,MAArBJ,EAAOI,WAA4C,MAArBJ,EAAOI,WAC9C,MAArBJ,EAAOI,WAA4C,MAArBJ,EAAOI,UACtCwR,EAAYE,SAASC,MAAM,4CAAgD/R,EAAOK,EAAI,UACzD,MAArBL,EAAOI,WAA4C,MAArBJ,EAAOI,WAA4C,MAArBJ,EAAOI,WACrD,MAArBJ,EAAOI,WAA4C,MAArBJ,EAAOI,UACtCwR,EAAYE,SAASC,MAAM,QAAU/R,EAAO8D,EAAI,KAAO9D,EAAOK,EAAE6R,MAAM,EAAG,IAAM,UAE/EN,EAAYE,SAASC,MAAM,QAAU/R,EAAO8D,EAAI,KAAO9D,EAAOK,EAAI,SACtE,IAEJuR,EAAYE,SAASC,MAAM,QAC/B,IAEJH,EAAYE,SAASC,MAAM,UAE3BH,EAAYE,SAASC,MAAM,yBAA2B1I,EAASwC,QAAU,MAAQxC,EAASgJ,eAAiB,SAEzE,KAA9BhJ,EAASiJ,kBACTV,EAAYE,SAASC,MAAM,kBAAoB1I,EAASkJ,MAAQ,IAAMlJ,EAASiJ,iBAAmB,SAE1G,CACAV,EAAYE,SAASC,MAAM,kBAC3BH,EAAYE,SAASU,QAErBZ,EAAYa,OAAS,WACbd,EACAC,EAAYD,SAEZe,EAAAA,EAAAA,GAAQd,EAAYE,SAASa,KAAM,CAC/BC,UAAW,SACXhU,OAAQ,GACRiU,SAAUxJ,EAASyB,QAAU,IAAMzB,EAASiB,WAAajB,EAASkB,UAAY,iBAGtFqH,EAAYY,OAChB,CACJ,CACJ,MAjFQzB,EAAmBpZ,SACnBoZ,EAAmBpZ,QAAQmb,MAgFnC,EAGJ,OACIva,EAAAA,EAAAA,MAAC1B,EAAAA,SAAc,CAAAE,SAAA,EACTkE,IACEnE,EAAAA,EAAAA,KAAA,OAAKE,MAAO,CAAEiG,SAAU,QAASC,IAAK,QAASC,MAAO,OAAQC,OAAQ,MAAOrG,UACzEwB,EAAAA,EAAAA,MAACwE,EAAAA,EAAW,CAAAhG,SAAA,CACPwE,IAAWzE,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACfC,KAAK,OACL2E,WAAY,UACZ1E,QAASA,IAAM+C,GAAU,GAAM3E,SAAC,SAGnC4Z,IAAY7Z,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CAChBC,KAAK,QACL1B,MAAO,CAAEsG,gBAAiB,QAASC,gBAAiB,OACpDC,UAAU,EACV7E,QAASA,IAAM+Y,GAAW,GAC1BrU,WAAY,UAAUtG,SAAC,UAG1B8Z,IAAU/Z,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACdsa,SAAS,eACT/b,MAAO,CAAEsG,gBAAiB,QAASC,gBAAiB,OACpDC,UAAU,EACV7E,QAASA,IAAM+Y,GAAW,GAC1BrU,WAAY,UAAUtG,SAAC,aAMrC8Z,GAAsB,eAAXvH,IACTxS,EAAAA,EAAAA,KAAA,OAAKE,MAAO,CAAEiG,SAAU,WAAY+V,KAAM,WAAY9V,IAAK,EAAG+V,SAAU,UAAWlc,UAC/ED,EAAAA,EAAAA,KAACoc,EAAAA,EAAS,CAACN,UAAU,KAAKhU,OAAO,MAAMuU,MAAO,GAAI9b,IAAK0Z,EACnD8B,SAAUxJ,EAASyB,QAAU,IAAMzB,EAASiB,WAAajB,EAASkB,UAAY,QAAQxT,UACtFD,EAAAA,EAAAA,KAACsc,EAAO,CAAC/J,SAAUA,EAAUjI,KAAMA,EAAMuO,OAAQA,EAAQpO,aAAcA,GAAcmO,mBAAoBA,QAIpHjU,GACI3E,EAAAA,EAAAA,KAAC2G,EAAAA,EAAM,CAACC,aAAc,CAAEC,MAAO,UAAW5G,UACvCD,EAAAA,EAAAA,KAACuc,EAAQ,CACLjK,OAAQA,EACRC,SAAUA,EACVC,SAAUA,EACV3J,OAAQA,EACRzJ,SAAW0H,GAzJTA,KAClBlC,GAAU,GACNkC,GACAoT,EAAU,KACd,EAqJgDnT,CAAaD,OAIxC,OAAX+B,GAAmB7I,EAAAA,EAAAA,KAAC8F,EAAAA,EAAM,CAACC,KAAK,QAAQC,KAAK,uBAChC,SAAbwM,GACExS,EAAAA,EAAAA,KAACwc,IAAiB,CACVlK,OAAQA,EACRmK,MAAOlK,EAAS4D,MAChB5D,SAAUA,EACVpO,SAAUA,EACdqO,SAAS,SAGF,gBAAbA,GACExS,EAAAA,EAAAA,KAAC0c,EAAmB,CAChBpK,OAAQA,EACRzJ,OAAQA,EACR2J,SAAS,iBAGbxS,EAAAA,EAAAA,KAACM,EAAAA,EAAI,CACLiB,OAASC,IACLxB,EAAAA,EAAAA,KAACgC,EAAAA,EAAW,CAAC9B,MAAO,CAAC,EAAED,UACfD,EAAAA,EAAAA,KAAA,YAAUK,UAAW,kBAAkBJ,SACtC4I,EAAO4D,KAAKtD,GACY,SAAZA,EAAMC,GACVpJ,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAoBH,MAAO,CAAE2C,UAAWyH,EAAKnB,EAAMuD,EAAI,GAAGvK,KAAKlC,UAC3ED,EAAAA,EAAAA,KAAC2M,EAAAA,EAAM,CAACzM,MAAO,CAAE0M,gBAAiB,aAC9BhG,aAAc,CAAEiB,OAAQsB,EAAMuD,EAAIpC,EAAKnB,EAAMuD,EAAI,GAAGlC,EAAI,GAAIqC,UAAW,UACvEC,eAAgB3D,EAAMuD,EAAIpC,EAAKnB,EAAMuD,EAAI,GAAGtD,EAAI,GAChDuT,gBAAiB,MACjB5P,MAAO,OAID,YAAZ5D,EAAMC,GACHpJ,EAAAA,EAAAA,KAAC+H,EAAAA,EAAY,CAAA9H,UACVwB,EAAAA,EAAAA,MAAA,OAAKpB,UAAU,oBAAoBH,MAAO,CAAE0M,gBAAiB,aAAc3M,SAAA,EACvED,EAAAA,EAAAA,KAACgI,EAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAEkJ,EAAMD,OAAO8D,KAC9ChN,EAAAA,EAAAA,KAACoC,EAAAA,EAAK,CACFE,KAAM,IAAM6G,EAAMD,OAAOI,UACzBvG,aAAc6V,EAAmBzP,GAAS,IAAMA,EAAMD,OAAO+D,EAC7D/M,MAAO,CACHgN,WAAY,OACZpC,MAAO3B,EAAMD,OAAO6B,MAAS5B,EAAMD,OAAOK,EAAEuP,WAAW3P,EAAMD,OAAO6B,OAAS,MAAQ,QAAW,GAChGlD,OAAmC,MAA3BsB,EAAMD,OAAOI,UAAoB,QACT,MAA3BH,EAAMD,OAAOI,UAAoB,QAAU,IAEpD5C,UAAWyC,EAAMD,OAAO+D,EAAEzI,SAAS,MACnC2I,UAAU,EACV5K,UAAY4G,EAAMD,OAAOK,EAAE/E,SAAS,OAAU2E,EAAMD,OAAO+D,EAAEzI,SAAS,MAAU4I,EAAAA,EAAWC,EAAAA,SAIzF,SAAZlE,EAAMC,GACP3H,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACFvI,KAAMoE,EAAME,QACZnJ,MAAO,CAAEgN,WAAY,QACrB7M,UAAW,+BAA+BJ,SAAA,EAE1CD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,IAAItC,MAAOgS,KAC7B7Y,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,IAAIqE,KAAM/C,MAC5BzK,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,IAAIqE,KAAM/C,SAE/BhJ,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACEvI,KAAMoE,EAAME,QACZnJ,MAAO,CAAEgN,WAAY,QAASjN,SAAA,EAE9BD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,IAAIqD,MAAQ,IAAI3F,MAAOgS,KACzC7Y,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,KAAKqD,MAAQ,YAAYgB,KAAM/C,MACjDzK,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,KAAKqD,MAAQ,UAAUgB,KAAM/C,kBAS3E,ECxHxB,GAhVavL,IAKK,IALJ,OACVoT,EAAM,SACNnO,EAAQ,YACRC,EAAW,SACXhF,GACQF,EAER,MAAMG,GAAOC,EAAAA,EAAAA,iBAAgBC,GAAUA,EAAMF,QACtCud,EAAUC,GAAe9c,EAAAA,SAAwBV,QAAuBK,IAAdL,EAAKM,MAAuBN,EAAKM,KAAK4E,OAClGlF,EAAKM,KAAK4E,KAAKC,SAAS,UAAYnF,EAAKM,KAAK4E,KAAKC,SAAS,mBAC1DsY,EAASC,GAAchd,EAAAA,SAAwBV,QAAuBK,IAAdL,EAAKM,MAAuBN,EAAKM,KAAK4E,MACjGlF,EAAKM,KAAK4E,KAAKC,SAAS,WACrBwY,EAAUC,GAAeld,EAAAA,SAAwBV,QAAuBK,IAAdL,EAAKM,MAAuBN,EAAKM,KAAK4E,MACnGlF,EAAKM,KAAK4E,KAAKC,SAAS,YAErB0Y,EAAcC,GAAmBpd,EAAAA,UAAwB,IAEzDqd,EAAiBC,GAAsBtd,EAAAA,UAAwB,IAC/Dud,EAAeC,GAAoBxd,EAAAA,SAAuB,KAE1Dyd,EAAaC,GAAkB1d,EAAAA,UAAwB,IACvD2d,EAAaC,GAAkB5d,EAAAA,UAAwB,IACvD6d,EAAgBC,GAAqB9d,EAAAA,UAAwB,IAE7D+d,EAAYC,GAAiBhe,EAAAA,SAAuB,KAEpDie,EAAgBve,IAAYwe,EAAAA,EAAAA,6BAE7BC,EAAkBne,EAAAA,OAAkB,OAEpC,KAAEgF,EAAI,MAAE3D,EAAK,UAAE4D,IAAcmZ,EAAAA,EAAAA,iBAAgB7L,IAE5C7G,EAAaC,GAAkB3L,EAAAA,SAAuB,IAEtD+L,EAAgBC,GAAqBhM,EAAAA,SAAuB,SAEnEA,EAAAA,WAAgB,KACZwF,OAAOG,iBAAiB,SAAUJ,EAAa,GAChD,IACHvF,EAAAA,WAAgB,KAEZ,GADAgM,EAAmBxG,OAAOC,YAAc,IAAO,MAC3CT,EAAM,CAEN,IAAIqZ,EAAsBrZ,EAAKsV,UAAYtV,EAAKsV,SAASxR,QAAW9D,EAAKsV,SAASxR,OAAOwF,OAAS,EAAMtJ,EAAKsV,SAASxR,OAAO,GAAGK,OAAOK,EAAI,GACvI8U,EAA2BD,EAAY5Z,SAAS,gBAChD4Z,EAAY5Z,SAAS,iCACrB4Z,EAAY5Z,SAAS,UACrB4Z,EAAY5Z,SAAS,sBACrB4Z,EAAY5Z,SAAS,cACrB4Z,EAAY5Z,SAAS,aACrB4Z,EAAY5Z,SAAS,yBACzB2Y,EAAgBP,IAA8B,SAAhB7X,EAAKqO,QAAsBiL,IAEzDZ,EAAeW,EAAY/P,OAAS,GACpCsP,EAAe5Y,EAAKuU,UAAYvU,EAAKuU,SAASzQ,QAAW9D,EAAKuU,SAASzQ,OAAOwF,OAAS,GACvFwP,EAAkB9Y,EAAK0V,aAAe1V,EAAK0V,YAAY5R,QAAW9D,EAAK0V,YAAY5R,OAAOwF,OAAS,GAGnG,IAAIiQ,EAAS,GACb,MAAMC,EAAcxZ,EAAKuP,UAAUkB,MAAM,MACd,IAAvB+I,EAAYlQ,OACZiQ,EAASC,EAAY,GAAGhL,UAAU,EAAG,GAET,IAAvBgL,EAAYlQ,SACjBiQ,EAASC,EAAY,GAAGhL,UAAU,EAAG,GAAKgL,EAAY,GAAGhL,UAAU,EAAG,IAG1E,IAAIiL,IAAQ,IAAI/U,MAAQgV,UAAa,IAAIhV,KAAK1E,EAAKsP,QAASoK,WAAS,QAErEV,EAAchZ,EAAKiP,QAAU,KAAOjP,EAAKyO,WAAa,IAAMzO,EAAK0O,UAAY,OACzE1O,EAAKkP,WAAa,MAAQqK,EAAS,MAAQvZ,EAAKwP,UAAY,SAAWiK,EAAIE,QAAQ,GAAK,OAChG,IAED,CAAC3Z,IAEJ,MAAMO,EAAeA,KACjByG,EAAmBxG,OAAOC,YAAc,IAAO,KAAK,EASlDmZ,GAAW5e,EAAAA,OAAkB,MAE7B6e,GAAcC,IAChB,MAAMje,EAAW+d,GAAS9d,QAAQC,OAClCF,EAASmV,OAASzD,EAClB1R,EAASkV,SAAW,SACpBlV,EAASwS,OAASyL,EAElBb,EAAepd,GACVI,SACAC,MAAMC,QACNC,OAAOC,IACJC,QAAQC,IAAIF,EAAM,IAE1BhC,GAAU,EAGR0f,GAAyB,kCAE/B,OACI9e,EAAAA,EAAAA,KAACD,EAAAA,SAAc,CAAAE,UACfD,EAAAA,EAAAA,KAAA,OAAAC,SACSmB,GAASpB,EAAAA,EAAAA,KAACyP,EAAAA,QAAe,IAAOzK,GAAahF,EAAAA,EAAAA,KAAC8F,EAAAA,EAAM,CAACC,KAAK,QAAQC,KAAK,uBAA2BjB,GAC/FtD,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EACOkE,GAAYiZ,IACX3b,EAAAA,EAAAA,MAACkF,EAAAA,EAAM,CAAC6F,OAAO/K,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EAAKD,EAAAA,EAAAA,KAAA,QAAMK,UAAU,8BAA8BH,MAAO,CAAE4K,MAAO,WAAmB,wBACjGwL,QAAUpQ,GAAMmX,GAAmB,GAAOpd,SAAA,EAC1CwB,EAAAA,EAAAA,MAAA,KAAGvB,MAAO,CAAE4H,OAAQ,OAAQyO,UAAW,UAAWtW,SAAA,CAAC,kCACjBD,EAAAA,EAAAA,KAAA,UAAMA,EAAAA,EAAAA,KAAA,SAAM,mDAE9CyB,EAAAA,EAAAA,MAACsd,EAAAA,EAAgB,CAAA9e,SAAA,EACbD,EAAAA,EAAAA,KAAA,UACIK,UAAU,uEACVwB,QAAUqE,GAAM0Y,GAAW,UAAU3e,SACxC,SAGDD,EAAAA,EAAAA,KAAA,UACIK,UAAU,uEACVwB,QAAUqE,GAAMmX,GAAmB,GAAOpd,SAC7C,aAMXqd,EAAcjP,OAAS,IACrB5M,EAAAA,EAAAA,MAACkF,EAAAA,EAAM,CAAC6F,OAAO/K,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EAAKD,EAAAA,EAAAA,KAAA,QAAMK,UAAU,8BAA8BH,MAAO,CAAE4K,MAAO,WAAmB,wBACjGwL,QAAUpQ,GAAMqX,EAAiB,IAAItd,SAAA,EACrCwB,EAAAA,EAAAA,MAAA,KAAGvB,MAAO,CAAE4H,OAAQ,OAAQyO,UAAW,UAAWtW,SAAA,CAAC,+CACFqd,MAEjD7b,EAAAA,EAAAA,MAACsd,EAAAA,EAAgB,CAAA9e,SAAA,EACbD,EAAAA,EAAAA,KAAA,UACIK,UAAU,uEACVwB,QAAUqE,GAAM0Y,GAAWtB,GAAerd,SAC7C,SAGDD,EAAAA,EAAAA,KAAA,UACIK,UAAU,uEACVwB,QAAUqE,GAAMqX,EAAiB,IAAItd,SACxC,cAMXkE,IACE1C,EAAAA,EAAAA,MAACC,EAAAA,EAAO,CAAAzB,SAAA,EACJwB,EAAAA,EAAAA,MAACwE,EAAAA,EAAW,CAAAhG,SAAA,EACRD,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACHtB,UAAU,kBACVuB,KAAK,OACLC,QAAUqE,GAAM9G,IAAWa,SAE1BmE,IAEH8Y,IAAiB4B,GAAeta,SAASO,EAAKqO,UAC5CpT,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACHtB,UAAU,kBACV4b,SAAS,kBACT1V,WAAY,UACZrG,MAAO,CAAEoP,OAAQ,mBACjBzN,QAAUqE,GAAMmX,GAAmB,GAAMpd,SAC5C,kBAIH6c,GAAWgC,GAAeta,SAASO,EAAKqO,UACtCpT,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACHtB,UAAU,kBACV4b,SAAS,gBACT1V,WAAY,UACZrG,MAAO,CAAEoP,OAAQ,mBACjBzN,QAAUqE,GAAM0Y,GAAW,QAAQ3e,SACtC,cAIH6c,IAAYgC,GAAeta,SAASO,EAAKqO,UACvCpT,EAAAA,EAAAA,KAACgf,EAAAA,EAAc,CACX3e,UAAU,kBACVkK,KAAK,aACL0R,SAAS,YACTgD,MAAO,CAAC,YAAa,SAAU,WAC/BC,YAAchZ,GAAMqX,EAAiBrX,EAAE8J,YAInDhQ,EAAAA,EAAAA,KAAA,OAAKE,MAAO,CAAEif,SAAU,QAASjS,WAAY,OAAQkS,YAAa,QAASnf,SACrE6d,QAIlB9d,EAAAA,EAAAA,KAACM,EAAAA,EAAI,CACDC,IAAKoe,GACLpd,OAASC,IACLxB,EAAAA,EAAAA,KAAA,aAIVyB,EAAAA,EAAAA,MAACuK,EAAAA,EAAQ,CACHzL,IAAK2d,EACLjS,SAAUR,EACVS,SAnIKhG,IACrBwF,EAAexF,EAAE+F,UACbiS,GAAmBA,EAAgBrd,SAAWqd,EAAgBrd,QAAQsL,UAAY+R,EAAgBrd,QAAQsL,SAASlM,WACnHie,EAAgBrd,QAAQsL,SAASlM,SAAS,GAAGmM,UAAY,EAAC,EAiI9CC,iBAAiB,EACjBC,WAAW,EACXpM,MAAO,CAAE2J,WAAY,MAAOhC,OAAQiE,GACpCzL,UAAW,aAAaJ,SAAA,EACxBD,EAAAA,EAAAA,KAACuM,EAAAA,EAAW,CAACC,MAAM,OAAMvM,UACrBD,EAAAA,EAAAA,KAACqf,GAAO,CACJ/M,OAAQA,EACRC,SAAUxN,EACVyN,SAAS,OACTrO,SAAUA,EACV0U,OAAO,aAGb1U,IAAa6Y,KAAahd,EAAAA,EAAAA,KAACuM,EAAAA,EAAW,CAACC,MAAM,WAAUvM,UACrDD,EAAAA,EAAAA,KAACqf,GAAO,CACJ/M,OAAQA,EACRC,SAAUxN,EACVyN,SAAS,WACTrO,SAAUA,EACV0U,OAAO,aAIX7Y,EAAAA,EAAAA,KAACuM,EAAAA,EAAW,CACRC,MACIgR,GACI/b,EAAAA,EAAAA,MAAC6d,EAAAA,EAAc,CAAArf,SAAA,CAAC,YAEZD,EAAAA,EAAAA,KAACuf,EAAAA,EAAK,CAACpZ,SAAS,OAAOqZ,MAAM,OAAOjZ,WAAW,eAEvD,WACHtG,UACDD,EAAAA,EAAAA,KAACqf,GAAO,CACJ/M,OAAQA,EACRC,SAAUxN,EACVyN,SAAS,WACTrO,SAAUA,EACV0U,OAAO,aAGnB7Y,EAAAA,EAAAA,KAACuM,EAAAA,EAAW,CAACC,MAAM,cAAavM,UACxBD,EAAAA,EAAAA,KAACqf,GAAO,CACJ/M,OAAQA,EACRC,SAAUxN,EACXyN,SAAS,cACRrO,SAAUA,EACV0U,OAAO,aAGnB7Y,EAAAA,EAAAA,KAACuM,EAAAA,EAAW,CAACC,MAAM,UAASvM,UACpBD,EAAAA,EAAAA,KAACqf,GAAO,CACJ/M,OAAQA,EACRE,SAAS,UACTD,SAAUxN,EACVZ,SAAUA,EACV0U,OAAO,aAGnB7Y,EAAAA,EAAAA,KAACuM,EAAAA,EAAW,CAACC,MAAM,gBAAevM,UAC1BD,EAAAA,EAAAA,KAACqf,GAAO,CACJ/M,OAAQA,EACRC,SAAUxN,EACVyN,SAAS,gBACTrO,SAAUA,EACV0U,OAAO,aAGjB1U,IAAa6Y,KAAahd,EAAAA,EAAAA,KAAEuM,EAAAA,EAAW,CAACC,MAAM,cAAavM,UACzDD,EAAAA,EAAAA,KAACqf,GAAO,CACJ/M,OAAQA,EACRC,SAAUxN,EACVyN,SAAS,aACTrO,SAAUA,EACV0U,OAAO,aAIb1U,IAAa6Y,KAAahd,EAAAA,EAAAA,KAACuM,EAAAA,EAAW,CAACC,MAAM,cAAavM,UACxDD,EAAAA,EAAAA,KAACqf,GAAO,CACJ/M,OAAQA,EACRC,SAAUxN,EACVyN,SAAS,eACTrO,SAAUA,EACV0U,OAAO,aAIX7Y,EAAAA,EAAAA,KAACuM,EAAAA,EAAW,CAACC,MACTkR,GACAjc,EAAAA,EAAAA,MAAC6d,EAAAA,EAAc,CAAArf,SAAA,CAAC,YAEZD,EAAAA,EAAAA,KAACuf,EAAAA,EAAK,CAACpZ,SAAS,OAAOqZ,MAAM,OAAOjZ,WAAW,aAEnD,WACHtG,UACDD,EAAAA,EAAAA,KAACqf,GAAO,CACJ/M,OAAQA,EACRC,SAAUxN,EACVyN,SAAS,WACTrO,SAAUA,EACV0U,OAAO,aAGX7Y,EAAAA,EAAAA,KAACuM,EAAAA,EAAW,CAACC,MACToR,GACInc,EAAAA,EAAAA,MAAC6d,EAAAA,EAAc,CAAArf,SAAA,CAAC,eAEZD,EAAAA,EAAAA,KAACuf,EAAAA,EAAK,CAACpZ,SAAS,OAAOqZ,MAAM,OAAOjZ,WAAW,eAEnD,cACPtG,UACDD,EAAAA,EAAAA,KAACqf,GAAO,CACJ/M,OAAQA,EACRC,SAAUxN,EACVyN,SAAS,cACTrO,SAAUA,EACV0U,OAAO,kBAIT,QAEN,+TCpXxB,IAAA9Y,EAAAkD,EAAA,MACAC,EAAAD,EAAA,MAMAE,EAAAF,EAAA,KAKAK,EAAAL,EAAA,KACAO,EAAAP,EAAA,MAEAwc,EAAAxc,EAAA,MACAyc,EAAAzc,EAAA,MACA0c,EAAA1c,EAAA,MACA2c,EAAA3c,EAAA,MACA4c,EAAA5c,EAAA,MAEAc,EAAAd,EAAA,MA8MAe,EAAAA,QAlMgB,SAACC,GAEF,IADX7E,EAAQ6E,EAAA7E,SAGFiF,EAAyBN,EAAA+b,qBAAxBC,EAAU1b,EAAA,GAEX2b,GAFqB3b,EAAA,GAEPtE,EAAM6L,OAAY,OAChCqU,EAAUlgB,EAAM6L,OAAY,MAE5BlH,EAA8B3E,EAAMuE,SAAiB,SAApDc,EAAUV,EAAA,GAAEW,EAAaX,EAAA,GAEhC3E,EAAM0F,WAAU,WACZF,OAAOG,iBAAiB,SAAUJ,GAClCD,EAAeE,OAAOC,YAAc,IAAO,KAC/C,GAAG,IAEH,IAAMF,EAAe,WACjBD,EAAeE,OAAOC,YAAc,IAAO,KAC/C,EAEMX,EAA8B9E,EAAMuE,SAAiB,MAApDwS,EAAUjS,EAAA,GAAEqb,EAAarb,EAAA,GAC1BI,EAAwBlF,EAAMuE,SAAiB,MAA9CyS,EAAO9R,EAAA,GAAEkb,EAAUlb,EAAA,GAEpBmb,EAAY,CACdX,EAAA5Z,QAAiB,CAAE4Q,SAAQ,EAAMC,KAAMsJ,IACvCN,EAAA7Z,UACA8Z,EAAA9Z,QAAe,CAAEiR,WAAYA,EAAYC,QAASA,IAClD6I,EAAA/Z,QAAqB,CAAE6Q,KAAOsJ,IAC9BH,EAAAha,QAAgB,CAAE4Q,SAAS,EAAMnE,OAAO,MAGtCnN,EAAkBpF,EAAMuE,SAAS,GAAhC+b,EAAIlb,EAAA,GAAEmb,EAAOnb,EAAA,GACd0G,EAA4B9L,EAAMuE,SAAiB,CAAC,GAAnDic,EAAS1U,EAAA,GAAE2U,EAAY3U,EAAA,GACxB4U,EAAoB1gB,EAAMuE,SAAgC,CAC5D,CACIjC,MAAO,YACPT,KAAM,kBACNjB,aAASjB,GAEb,CACI2C,MAAO,cACPT,KAAM,WACNjB,aAASjB,GAEb,CACI2C,MAAO,UACPT,KAAM,gBACNjB,aAASjB,GAEb,CACI2C,MAAO,gBACPT,KAAM,sBACNjB,aAASjB,GAEb,CACI2C,MAAO,WACPT,KAAM,cACNjB,aAASjB,KAxBVghB,EAAKD,EAAA,GAAEE,EAAQF,EAAA,GA4BhBG,EAA4B7gB,EAAMuE,UAAkB,GAAnDgK,EAASsS,EAAA,GAAEC,EAAYD,EAAA,GAExBE,EAAgBJ,EAAMrS,OAAS,EAC/B0S,EAAaD,IAAkBT,EAE/BW,EAAejhB,EAAMkhB,aACvB,SAACvgB,GACW,IAAAC,EAAoBD,EAAKC,QAAhBG,EAAWJ,EAAKI,OAE3BogB,EAAeR,EAAMjU,KACvB,SAAC0U,EAA6BC,GAAkB,OAAAC,EAAAA,EAAC,CAAC,EAC3CF,GAAW,CACdxgB,QAASygB,IAAUf,EAAO1f,EAAUwgB,EAAYxgB,SAFJ,IAQpD,GAFAggB,EAASO,GAEJvgB,IAIS,IAAT0f,GAAeL,GAAeA,EAAYnf,SAAWmf,EAAYnf,QAAQC,SAC1Eof,EAAcF,EAAYnf,QAAQC,OAAO0S,WAAa,IAAMwM,EAAYnf,QAAQC,OAAO2S,WACvF0M,EAAWH,EAAYnf,QAAQC,OAAOkT,UAG1CsM,GAAQ,WAAM,OAAAgB,KAAKC,IAAIlB,EAAO,EAAGS,EAAnB,IACdN,EAAa1f,GAEbmf,EAAQpf,QAAQZ,SAAS,GAAGA,SAAS,GAAGmM,UAAY,EAEhD2U,GAAY,CACZ,IAAMngB,EAAWof,EAAYnf,QAAQC,OACrCF,EAAS4R,SAAW,MAEpBuN,EAAWnf,GACNI,SACAC,MAAK,WAAQ,IACbE,OAAM,SAACC,GACJC,QAAQC,IAAIF,EAChB,IAEJyf,GAAa,EAAM,CAE3B,GACA,CAACH,EAAOK,EAAYV,EAAMS,IAGxBU,EAAczhB,EAAMkhB,aACtB,SAACvgB,GACGA,EAAM+gB,iBACNnB,GAAQ,WAAM,OAAAgB,KAAKI,IAAIrB,EAAO,EAAG,EAAnB,IAEdJ,EAAQpf,QAAQZ,SAAS,GAAGA,SAAS,GAAGmM,UAAY,CACxD,GACA,CAACiU,EAAMC,IAGX,OACIvgB,EAAA4F,cAAC5F,EAAM6F,SAAQ,KACf7F,EAAA4F,cAAA,WACI5F,EAAA4F,cAACxC,EAAAzB,QAAO,KACJ3B,EAAA4F,cAACxC,EAAA8C,YAAW,KACJlG,EAAA4F,cAACxC,EAAAxB,OAAM,CACHC,KAAK,OACLC,QAAS,SAACqE,GAAM,OAAA9G,GAAA,GAAU,qBAOtCW,EAAA4F,cAACrC,EAAAqe,QAAO,CAAC1P,MAAOoO,EAAMpB,MAAOyB,IAE7B3gB,EAAA4F,cAAA,OACIpF,IAAM0f,EACN/f,MAAO,CAAEC,SAAU,OAAQC,WAAW,QACtCC,UAAW,YAEXN,EAAA4F,cAACzC,EAAA5C,KAAI,CACDC,IAAMyf,EACNxf,cAAe+f,EACf9f,cAAeugB,EACfzf,OAAQ,SAACC,GAAqC,OAC1CzB,EAAA4F,cAAA,OAAKzF,MAAO,CAAE6B,UAAW,WACrBhC,EAAA4F,cAACzC,EAAAlB,YAAW,CACR9B,MAAO,CAAE2H,OAAQzC,EAAYjF,SAAU,OAAQC,WAAY,OAAQ6B,YAAY,SAC9Eme,EAAUC,IAEftgB,EAAA4F,cAACxC,EAAA8C,YAAW,CAACY,MAAM,OACf9G,EAAA4F,cAACxC,EAAAxB,OAAM,CACHzB,MAAO,CACH4H,OAAQ,MACR8Z,QAAS,IAEbrb,WAAW,UACXG,SAAmB,IAAT2Z,EACVxe,QAAS2f,GAAW,YAIxBzhB,EAAA4F,cAACxC,EAAAxB,OAAM,CACHzB,MAAO,CACH4H,OAAQ,MACR8Z,QAASb,EAAa,EAAM,GAC5B7T,WAAY6T,EAAa,OAAS,UAEtCxa,WAAW,UACXG,UAAWlF,EAAgBqgB,YAC3BhgB,QAASL,EAAgBM,UAExBif,EAAa,SAAW,SA5BK,MAoCxDzS,GACEvO,EAAA4F,cAACnC,EAAAmD,OAAM,CACH6F,MAAO,YACP8J,QAASlX,GAETW,EAAA4F,cAAA,KAAGzF,MAAO,CAAE4H,OAAQ,OAAQyO,UAAW,WAAU,iCACfxW,EAAA4F,cAAA,aAMtD,0JC5MA,MAAMmc,EAAa,CACf,MACA,MACA,SACA,SACA,UACA,QACA,UACA,QACA,SACA,SACA,eACA,YACA,UACA,OACA,SACA,sBAGEC,EAAY,CACd,+BACA,+BACA,gCACA,mBACA,mBACA,iBACA,mBACA,0BACA,sBACA,4BACA,mBACA,4BACA,yBACA,wBACA,sBACA,2BACA,UACA,eACA,SACA,iBACA,uBACA,eACA,aACA,gBACA,iBACA,sBACA,QACA,WACA,eACA,2BACA,UACA,cACA,gBACA,uBACA,gCACA,YACA,sBACA,YACA,QACA,YACA,YACA,oBACA,oBACA,yBACA,kBACA,iBACA,2BACA,oCACA,gBACA,uBACA,kBACA,iBACA,kBACA,sBACA,kBACA,mBACA,gBACA,aACA,iBACA,6BACA,YACA,qBACA,WACA,eACA,mCACA,kBACA,uBACA,uBACA,gBACA,qBACA,aACA,aACA,UACA,qBACA,qBACA,eACA,2BACA,uBACA,WACA,uBACA,UACA,aACA,SACA,MACA,cACA,YACA,sBACA,aACA,eACA,aACA,mBACA,WACA,oBACA,YACA,WACA,iBACA,gBACA,8BACA,cACA,6BACA,qBACA,UACA,aACA,8BACA,UACA,qBAGEC,EAAY,CACd,mCACA,qCACA,mCACA,oBACA,UACA,SACA,qBACA,uBACA,WACA,YACA,cACA,UACA,MACA,gBACA,UACA,iBAGEC,EAAc,CAChB,OAGEC,EAAa,CAAC,SAAU,OAAQ,iBAAkB,iBAAkB,WAwb1E,EAlbyBhjB,IAGK,IAHJ,QACtBuX,EAAO,KACPC,GACoBxX,EAEpB,MAAMG,GAAOC,EAAAA,EAAAA,iBAAgBC,GAAeA,EAAMF,OAC5C8iB,EAAY9iB,QAAuBK,IAAdL,EAAKM,WAAyCD,IAAjBL,EAAKM,KAAKC,GAAqBP,EAAKM,KAAKC,IAAM,GAG/FmF,KAAMqd,EAAahhB,MAAOihB,EAAkBrd,UAAWsd,IAFjDjjB,QAAuBK,IAAdL,EAAKM,WAA2CD,IAAnBL,EAAKM,KAAK4E,MAAuBlF,EAAKM,KAAK4E,MAETge,EAAAA,EAAAA,wBAAuBJ,K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,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ/C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJgD,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,cAIZC,OAAQ,CACJ1zN,OAAQ,CACJuzN,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,cAIZE,SAAU,CACN3zN,OAAQ,CACJuzN,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,cACA,cACA,cACA,gBAGR,cAAe,CACXF,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,cACA,cACA,cACA,iBAIZG,WAAY,CACR5zN,OAAQ,CACJuzN,YAAa,CACTM,SAAU,WACVz1M,GAAI,KACJ,iBAAkB,KAClB01M,KAAM,OACNz1M,GAAI,KACJ,iBAAkB,KAClB01M,SAAU,iBACVC,WAAY,mBACZC,SAAU,iBACVC,OAAQ,YAEZV,OAAQ,CACJK,SAAU,KACVz1M,GAAI,IACJ,iBAAkB,KAClB01M,KAAM,IACNz1M,GAAI,IACJ,iBAAkB,KAClB01M,SAAU,iBACVC,WAAY,mBACZC,SAAU,iBACVC,OAAQ,YAEZT,KAAM,CACFI,SAAU,WACVz1M,GAAI,KACJ,iBAAkB,KAClB01M,KAAM,OACNz1M,GAAI,KACJ,iBAAkB,KAClB01M,SAAU,iBACVC,WAAY,mBACZC,SAAU,iBACVC,OAAQ,aAGhB,cAAe,CACXX,YAAa,CACTM,SAAU,WACVz1M,GAAI,KACJ,iBAAkB,KAClB01M,KAAM,OACNz1M,GAAI,KACJ,iBAAkB,KAClB01M,SAAU,UACVC,WAAY,YACZC,SAAU,UACVC,OAAQ,SAEZV,OAAQ,CACJK,SAAU,WACVz1M,GAAI,KACJ,iBAAkB,KAClB01M,KAAM,OACNz1M,GAAI,KACJ,iBAAkB,KAClB01M,SAAU,UACVC,WAAY,YACZC,SAAU,UACVC,OAAQ,SAEZT,KAAM,CACFI,SAAU,WACVz1M,GAAI,KACJ,iBAAkB,KAClB01M,KAAM,OACNz1M,GAAI,KACJ,iBAAkB,KAClB01M,SAAU,UACVC,WAAY,YACZC,SAAU,UACVC,OAAQ,WAIpBC,KAAM,CACFn0N,OAAQ,CACJyzN,KAAM,CACF,EAAK,gBACL,EAAK,cACL,gBAAiB,oBACjB,gBAAiB,cAErBF,YAAa,CACT,EAAK,KACL,EAAK,KACL,gBAAiB,MACjB,gBAAiB,MAErBC,OAAQ,CACJ,EAAK,IACL,EAAK,IACL,gBAAiB,MACjB,gBAAiB,QAI7BztN,WAAY,CACR0nB,IAAK,CACDgmM,KAAM,MACNhD,MAAO,MACP+C,OAAQ,OAEZ5vN,KAAM,CACF6vN,KAAM,OACNhD,MAAO,MACP+C,OAAQ,OAEZY,QAAS,CACLX,KAAM,UACNhD,MAAO,OACP+C,OAAQ,QAEZ3vN,MAAO,CACH4vN,KAAM,QACNhD,MAAO,MACP+C,OAAQ,OAEZa,KAAM,CACFZ,KAAM,OACNhD,MAAO,MACP+C,OAAQ,OAEZc,YAAa,CACTb,KAAM,gBACNhD,MAAO,aACP+C,OAAQ,cAEZ1vN,IAAK,CACD2vN,KAAM,MACNhD,MAAO,MACP+C,OAAQ,OAEZe,UAAW,CACPd,KAAM,cACNhD,MAAO,aACP+C,OAAQ,cAEZ7vN,QAAS,CACL8vN,KAAM,kBACNhD,MAAO,aACP+C,OAAQ,cAEZgB,eAAgB,CACZf,KAAM,uBACNhD,MAAO,gBACP+C,OAAQ,iBAEZhvM,UAAW,CACPisM,MAAO,QACPgD,KAAM,QACND,OAAQ,SAEZh2M,KAAM,CACFi2M,KAAM,OACNhD,MAAO,MACP+C,OAAQ,OAEZjyM,OAAQ,CACJkyM,KAAM,SACNhD,MAAO,OACP+C,OAAQ,QAEZ/uM,OAAQ,CACJgvM,KAAM,SACNhD,MAAO,OACP+C,OAAQ,QAEZiB,KAAM,CACFhB,KAAM,YACNhD,MAAO,OACP+C,OAAQ,QAEZkB,YAAa,CACTlB,OAAQ,KACR/C,MAAO,KACPgD,KAAM,kBAKtBkB,aAAc,CACVC,cAAe,CACXzG,GAAI,cAER0G,aAAc,CACVp+M,OAAQ,CACJq+M,GAAI,CACA,CACInF,IAAK,CACDjoD,MAAO,kBAM3BqtD,SAAU,CACNC,SAAU,CACNF,GAAI,OAERG,aAAc,CACV,MAAO,OAEXC,WAAY,CACR,MAAO,UCplBR,SAASliL,EAASpwC,GAC7B,MAAwB,kBAAVA,CAClB,CCAA,IAAIknB,EAAe,eAEfqrM,EAAY,SAAmBjkO,GAC/B,IAAI+B,EAAO/B,EAAI+B,KACX64C,EAAU56C,EAAI46C,QAElB,IAAK74C,IAAS64C,EACV,MAAM,IAAItiB,MAAM,yDAGpBrM,KAAKlqB,KAAOA,EACZkqB,KAAK2uB,QAAUA,CACnB,EAEAqpL,EAAU93M,UAAU8uC,cAAgB,WAE5B,IADA,IAAI16D,EAAS,GAAIyiD,EAAMrqB,UAAU7qB,OACzBk1C,KAAQziD,EAAQyiD,GAAQrqB,UAAWqqB,GAE/C,IAAIkhL,EAAgBtO,EAAQr1N,GAExB4jO,EAAmBl4M,KAAK2uB,QAAQzhC,QAAQyf,GAAc,SAAShf,EAAOiH,GACtE,OAAOqjN,EAActqI,SAAS/4E,EAAO,IACzC,IAEA,OAASoL,KAAKlqB,KAAQ,KAAOoiO,CACjC,EAEAF,EAAU93M,UAAUtrB,MAAQ,WAEpB,IADA,IAAIN,EAAS,GAAIyiD,EAAMrqB,UAAU7qB,OACzBk1C,KAAQziD,EAAQyiD,GAAQrqB,UAAWqqB,GAE/C,OAAO,IAAI1qB,MAAMrM,KAAKgvC,cAAc16D,GACxC,EAEA,IAAIq1N,EAAU,SAASlvK,GACnB,OAAOA,EAAIh+C,QAAO,SAAUM,EAAGqpB,GAAK,OAAOrpB,EAAEmH,OAAOkiB,EAAI,GAAG,GAC/D,EAWI+xM,EATe,SAASA,GAMxB,OAAOx1N,OAAOC,KAAKu1N,GAAQ17N,QALX,SAASqxB,EAAMh4B,GAE3B,OADAg4B,EAAKh4B,GAAQ,IAAIkiO,EAAU,CAAEliO,KAAMA,EAAM64C,QAASwpL,EAAOriO,KAClDg4B,CACX,GAE6C,CAAC,EAClD,CAEasqM,CC9Cb,CACI,SAAY,gCACZ,WAAc,iFACd,uBAA0B,wEAC1B,iBAAoB,oCACpB,kBAAqB,uJACrB,UAAa,iFACb,WAAc,oFACd,WAAc,kJACd,gBAAmB,0HACnB,iBAAoB,0FCejB,IAAIC,EAAOC,EAEX,SAASC,EAAcC,GAO1B,OALI3iL,EAAS2iL,GACFC,EAAWD,GAEXA,CAGf,CAEO,SAASC,EAAWD,GACvB,GAAIH,EAAKG,GACL,OAAOH,EAAKG,GAIhB,GADoBH,EAAKb,aAAaC,cACnB,CACf,IAAIroI,EAAQopI,EAAOxvN,MAAM,KACrBs5G,EAAWlzB,EAAM,GACjBspI,EAAWtpI,EAAMxgF,MAAM,GACvB+pN,EArCZ,SAAwBr2G,EAAUo2G,GAG9B,IAFA,IAAIjB,EAAgBY,EAAKb,aAAaC,cAE7B3zN,EAAM,EAAGA,EAAM40N,EAAS72N,OAAQiC,IAAO,CAC5C,IAAIhO,EAAO2hO,EAAcn1G,EAAW,IAAMo2G,EAAS50N,IACnD,GAAIhO,EACA,OAAOA,CAEf,CAEA,GAAI2hO,EAAcn1G,GACd,OAAOm1G,EAAcn1G,EAE7B,CAwBuBs2G,CAAet2G,EAAUo2G,GACpC56N,EAAO66N,EA/CnB,SAA6BA,EAAUD,GACnC,IAAItpI,EAAQupI,EAAS3vN,MAAM,KACvBs5G,EAAWlzB,EAAM,GACjBwoE,EAASxoE,EAAM,GACf+hI,EAAY/hI,EAAM,GAEtB,OAAOipI,EAAKM,KAA+C,IAAjCD,EAASz9L,QAAQk2L,IAAqBkH,EAAK/1G,EAAW,IAAM6uG,KAA8C,IAA9BuH,EAASz9L,QAAQ28H,IAAkBygE,EAAK/1G,EAAW,IAAMs1C,IAAYygE,EAAK/1G,EACpL,CAwC8Bu2G,CAAoBF,EAAUD,GAAY,KAChE,GAAI56N,EACA,OAAOA,CAEf,CAEA,MAAMq6N,EAAOW,SAASlkO,MAAM4jO,EAChC,CC1DO,IAAIO,EAAU,UACVC,EAAW,WACXC,EAAa,aACbC,EAAU,UACVC,EAAa,aAEbC,EAAuB,IACvBC,EAAsB,IACtBC,EAAqB,IAErBC,EAAiB,IACjBC,EAAkB,IAElBC,EAAQ,IACRC,EAAQ,GAERC,EAAiB,KCbxBC,EAAuB,4BACvBC,EAAuB,4BAEvBC,EAAgB,aAChBC,EAAqB,QAEzB,SAASC,EAAYn3M,GAGjB,OAFAi3M,EAAcv/K,UAAY,EAEnB13B,EAAQ3V,QAAQ6sN,EAAoBX,GAAsBlsN,QAAQ4sN,EAAeR,GAAoBtwN,MAAMuwN,EACtH,CAEA,SAASU,EAAap3M,GAUlB,OATAi3M,EAAcv/K,UAAY,EAELu/K,EAAc/+K,KAAKl4B,EAAQ7Z,MAAMuwN,GAAgB,IAAI,GAAGvwN,MAAMywN,GACtD,GAELzwN,MAAMwwN,GAAiB5qN,MAAM,GAAG3O,KAAI,SAASshE,GACjE,OAAOA,EAAM1/D,MACjB,IAAGsf,SAGP,CAEA,SAAS+4M,EAAyBC,EAAcC,GAC5C,IAAK,IAAIz9N,KAASy9N,EACVz9N,EAAM2P,WAAW,iBACjB6tN,EAAax9N,GAASy9N,EAAgBz9N,GAAOuQ,QAAQ,MAAOosN,GAAoBpsN,QAAQ,MAAOksN,GAG3G,CAEe,SAASiB,EAAgB7B,EAAQ16N,GAC5C,IAAI26N,EAAaJ,EAAKG,GAClBpH,EAAUqH,EAAWrH,QAAUqH,EAAWrH,SAAW,CAAC,EAE1D,IAAK,IAAIz0N,KADTy0N,EAAQC,QAAUD,EAAQC,SAAW,CAAC,EACpBvzN,EACd,GAAInB,IAAUk9N,EACVl3N,OAAO2mB,OAAO8nM,EAAQC,QAASvzN,EAAKnB,SACjC,GAAIA,EAAM3E,SAAS4hO,GAAuB,CAC7C,IAAIlmO,EAAQiJ,EAAM0qG,OAAO,EAAG1qG,EAAMs+B,QAAQ2+L,IACtC/2M,EAAU/kB,EAAKnB,GAAO29N,SAC1BlJ,EAAQ19N,GAAS,CACbu+N,SAAU+H,EAAYn3M,IAEtBnvB,IAAUslO,GACV5H,EAAQ19N,GAAOw+N,UAAY+H,GAAcn8N,EAAKi7N,EAAUa,IAAyB97N,EAAKnB,IAAQ29N,UAC9FJ,EAAyB9I,EAAQ19N,GAAQoK,EAAKnB,IAC9Cy0N,EAAQ6H,GAAc,CAClBhH,SAAU+H,EAAYl8N,EAAKnB,GAAOs8N,IAClC/G,UAAWd,EAAQ19N,GAAOw+N,YAG9Bd,EAAQ19N,GAAOw+N,UAAY+H,EAAap3M,EAEhD,KAAqB,eAAVlmB,IACPy0N,EAAQiB,WAAav0N,EAAKnB,GAGtC,CC7DA,IAAI49N,EAAyB,CACzB9tM,EAAG,gCACHwmM,EAAG,kCAGHuH,EAAa,MACbC,EAAa,CAAE,CAAE,cAAe,UAEhCC,EAAe,CACf7H,EAAG,CAAE,CAAE,cAAe,SACtBr3K,EAAG,CAAE,CAAE,kBAAmB,mBAAoB,SAC9Cs3K,EAAG,CAAE,CAAE,kBAAmB,mBAAoB,UAC9CziI,EAAG,CAAE,CAAE,kBAAmB,mBAAoB,SAC9CuvD,EAAG,CAAE,CAAE,kBAAmB,mBAAoB,UAC9CmzE,EAAG,CAAE,CAAE,cAAe,QAAU,CAAE,cAAe,WACjD1mI,EAAG,CAAE,CAAE,kBAAmB,mBAAoB,OAAS,CAAE,cAAe,UACxE4jD,EAAG,CAAE,CAAE,kBAAmB,mBAAoB,OAAS,CAAE,cAAe,WACxErzI,EAAG,CAAE,CAAE,cAAe,UACtBo2N,EAAG,CAAE,CAAE,cAAe,YAG1B,SAASx4K,EAAQ7D,GAGb,IAFA,IAAIj6C,EAAS,GACTmkB,EAAQle,OAAOm0C,oBAAoBH,GAC9B7yC,EAAM,EAAGA,EAAM+c,EAAMhf,OAAQiC,IAAO,CACzC,IAAI2B,EAAQkxC,EAAI91B,EAAM/c,IACtBpH,EAAOskB,KAAKvb,EAChB,CACA,OAAO/I,CACX,CAEA,SAASi+N,EAAiB78N,EAAM88N,GAC5B,IAAIl+N,EAAS,CAAC,EACd,IAAK,IAAIm+N,KAAc/8N,EAAM,CACzB,IAAI+iB,EAAQnkB,EAAOm+N,GAAc,CAAC,EAClC,IAAK,IAAIh4N,KAAU/E,EAAK+8N,GAAa,CACjC,IAAIC,EAAUh9N,EAAK+8N,GAAYh4N,GAC/Bge,EAAMhe,GAAU+3N,EAAQE,EAAUtgL,EAAQsgL,EAC9C,CACJ,CACA,OAAOp+N,CACX,CAmBA,SAASq+N,EAAkBvC,EAAQjlM,GAC/B,IAAIynM,EAAiB3C,EAAKG,GAAQjlM,SAClCynM,EAAe7E,KAAOwE,EAAiBpnM,EAAS4iM,MAChD6E,EAAezE,OAASoE,EAAiBpnM,EAASgjM,QAClDyE,EAAexE,SAAWmE,EAAiBpnM,EAASijM,UACpDwE,EAAevE,WAAakE,EAAiBpnM,EAASkjM,YAAY,GAElEuE,EAAehE,KAxBnB,SAAqBA,GACjB,IAAIt6N,EAAS,CAAC,EACVmG,EAASnG,EAAOmG,OAAS,CAAC,EAC1Bo4N,EAAa,CACbC,QAAS,cACTC,SAAU,OACVC,UAAW,UAGf,IAAK,IAAIC,KAAiBrE,EAEtBn0N,EADiBo4N,EAAWI,IACPrE,EAAKqE,GAG9B,OAAO3+N,CACX,CAS0B4+N,CAAY/nM,EAASyjM,KAC/C,CAEA,SAASuE,EAAuB/C,EAAQn8N,GACpC,IAAI2+N,EAAiB3C,EAAKG,GAAQjlM,SAC9B3qB,EAAa,CAAC,EAElB,IAAK,IAAIjM,KAASN,EAAQ,CACtB,IAAItI,EAAM4I,EAAMqM,MAAM,KAClBgzE,EAAYjoF,EAAI,GAChB8mO,EAAa9mO,EAAI,QAAwB,IAAf8mO,IAAwBA,EAAa,QACnE,IAAIW,EAAY5yN,EAAWozE,IAAc,CAAC,EACtCliD,EAAcz9B,EAAOM,GAAOm9B,YAE3BA,IAEL0hM,EAAUX,GAAc/gM,EACxBlxB,EAAWozE,GAAaw/I,EAC5B,CAEAR,EAAepyN,WAAaA,CAChC,CAEA,SAAS6yN,EAAoBjjF,EAAOjlH,GAGhC,IAFA,IAAI72B,EAAS,GAEJg/N,EAAU,EAAGA,EAAUljF,EAAM32I,OAAQ65N,IAAW,CAGrD,IAFA,IAAIr/N,EAASm8I,EAAOkjF,GAChB74M,EAAU0Q,EACLzvB,EAAM,EAAGA,EAAMzH,EAAOwF,OAAQiC,IACnC+e,EAAUA,EAAQxmB,EAAOyH,IAE7BpH,EAAOskB,KAAK6B,EAChB,CAEA,OAAOnmB,EAAOkhD,KAAK,IACvB,CAEA,SAAS+9K,EAAqBnD,EAAQjlM,GAClC,IAAIqoM,EAAevD,EAAKG,GAAQjlM,SAC5B0+L,EAAW2J,EAAa3J,SAAW,CAAC,EAIxC,IAAK,IAAIpvM,KAFTovM,EAAS9rM,EAAIs1M,EAAoBhB,EAAYlnM,GAAUrmB,QAAQstN,EAAY,KAEvDE,EAChBzI,EAASpvM,GAAW44M,EAAoBf,EAAa73M,GAAU0Q,GAGnE,IAAK,IAAIsoM,KAAatB,EAClBtI,EAAS4J,GAAatB,EAAuBsB,GAGjD,IAAI3I,EAAkB3/L,EAAS2/L,gBAC/B0I,EAAa1I,gBAAkB,CAC3BC,KAAMD,EAAgBC,KACtBC,KAAMF,EAAgBE,KACtBC,OAAQH,EAAgBG,OACxBC,MAAOJ,EAAgBI,MACvBC,iBAAkBL,EAAgBK,kBAEtCqI,EAAa3F,YAAc1iM,EAAS0iM,YACpC2F,EAAa1F,YAAc3iM,EAAS2iM,WACxC,CAGe,SAAS4F,EAAiBtD,EAAQ16N,GAC7C,IAAIy1B,EAAW8kM,EAAKG,GAAQjlM,SAAW8kM,EAAKG,GAAQjlM,UAAY,CAAC,EACjE,IAAK,IAAI52B,KAASmB,EACA,kBAAVnB,GACA42B,EAASo/L,UAAY70N,EAAKnB,GAAOg2N,UACjCp/L,EAASq/L,cAAgB90N,EAAKnB,GAAOi2N,eACpB,cAAVj2N,GAAyBmB,EAAKnB,GAAOo/N,WAC5CJ,EAAqBnD,EAAQ16N,EAAKnB,GAAOo/N,WACzChB,EAAkBvC,EAAQ16N,EAAKnB,GAAOo/N,YACrB,WAAVp/N,GACP4+N,EAAuB/C,EAAQ16N,EAAKzB,OAGhD,CCtHe,SAAS2/N,EAAgBl+N,GACpC,GAAIA,EAAKqzN,UACL,OAAOrzN,EAAKqzN,UAGhB,IAEIA,EAFAr7N,EAAOgI,EAAKhI,KACZi/E,EAAWj3E,EAAKi3E,SAWpB,OAPIo8I,EADAp8I,GAAYA,EAASo8I,UACTp8I,EAASo8I,UArC7B,SAA2Br7N,EAAMi/E,GAC7B,IAAI0iJ,EAAgBY,EAAKb,aAAaC,cAClCroI,EAAQt5F,EAAKkT,MAAM,KACvB,GAAIyuN,EAAe,CACf,IAAIwE,EAAaxE,EAAc3hO,IAAS2hO,EAAcroI,EAAM,IACxD6sI,IACA7sI,EAAQ6sI,EAAWjzN,MAAM,KAEjC,CAEA,GAAI+rE,EACA,IAAK,IAAIjxE,EAAMsrF,EAAMvtF,OAAS,EAAGiC,GAAO,EAAGA,IAAO,CAC9C,IAAImc,EAAOmvE,EAAMtrF,GACbmc,IAAS80D,EAASsgE,SAAWp1H,IAAS80D,EAAS6iF,QAC/CxoE,EAAMtrE,OAAOhgB,EAAK,EAE1B,CAGJ,IAAIjC,EAASutF,EAAMvtF,OAEnB,GAAIA,EAAS,EAET,OADgButF,EAAMvtF,EAAS,GACd42C,aAEzB,CAcoByjL,CAAkBpmO,EAAMi/E,GAGxCj3E,EAAKqzN,UAAYA,EAEVA,CACX,CC/CA,IAAIgL,EAAc,uBACdC,EAAmB,wBACnBC,EAAqB,0BACrBC,EAAqB,WAEzB,SAASC,EAAYllI,GAEjB,OADYA,EAAK+kI,IAAqB/kI,EAAKglI,IAC9BnvN,QAAQovN,EAAoB,GAC7C,CAEe,SAASE,EAAU/D,EAAYgE,GAC1ChE,EAAWllM,SAAS3qB,WAAW2uN,YAAc,CACzClB,OAAQkG,EAAYE,EAAMpG,OAAO8F,IACjC7I,MAAOiJ,EAAYE,EAAMnJ,MAAM6I,IAC/B7F,KAAMiG,EAAYE,EAAMrJ,KAAK+I,IAErC,CCVA,SAASO,EAAWlE,EAAQ16N,GACxB,IAAK,IAAInB,KAASmB,EACA,YAAVnB,EACA09N,EAAgB7B,EAAQ16N,EAAKnB,IACZ,UAAVA,GACPm/N,EAAiBtD,EAAQ16N,EAAKnB,GAG1C,CAEe,SAASggO,IAIpB,IAHA,IAAItkI,EAAc3rE,UAEd7qB,EAAS6qB,UAAU7qB,OACdiC,EAAM,EAAGA,EAAMjC,EAAQiC,IAAO,CACnC,IAAI81B,EAAQy+D,EAAYv0F,GACxB,GAAI81B,EAAMw8E,KAAM,CACZ,IAAIoiH,EAAS71N,OAAOC,KAAKg3B,EAAMw8E,MAAM,GACjCt4G,EAAO87B,EAAMw8E,KAAKoiH,GAClBC,EAAaJ,EAAKG,GAAUH,EAAKG,IAAW,CAAC,EAE7C16N,EAAK2+N,MACLD,EAAU/D,EAAY36N,EAAK2+N,QAE3BhE,EAAW3iO,KAAO2iO,EAAW3iO,MAAQ0iO,EACrCC,EAAW1jJ,SAAW0jJ,EAAW1jJ,UAAYj3E,EAAKi3E,SAElDinJ,EAAgBvD,GAChBiE,EAAWlE,EAAQ16N,GAE3B,MAAO,GAAI87B,EAAM49L,aACb,GAAI59L,EAAM49L,aAAaI,SACnBS,EAAKb,aAAaI,SAAW,CACzBC,SAAUj+L,EAAM49L,aAAaI,SAASC,SACtCC,aAAcl+L,EAAM49L,aAAaI,SAASE,aAC1CC,WAAYn+L,EAAM49L,aAAaI,SAASG,iBAEzC,GAAIn+L,EAAM49L,aAAaC,cAC1BY,EAAKb,aAAaC,cAAgB90N,OAAO2mB,OAAO+uM,EAAKb,aAAaC,cAAe79L,EAAM49L,aAAaC,oBACjG,GAAI79L,EAAM49L,aAAaE,aAAc,CACxC,IAAIA,EAAeW,EAAKb,aAAaE,aACrCA,EAAap+M,OAAS3W,OAAO2mB,OAAOouM,EAAap+M,QAAU,CAAC,EAAGsgB,EAAM49L,aAAaE,aAAap+M,QAC/Fo+M,EAAakF,UAAYj6N,OAAO2mB,OAAOouM,EAAakF,WAAa,CAAC,EAAGhjM,EAAM49L,aAAaE,aAAakF,UACzG,CAER,CACJ,CChDe,SAAS9sM,EAAciuB,EAASy6K,QAC3B,IAAXA,IAAoBA,EAASmB,GAElC,IACI/wN,EADO6vN,EAAWD,GACAjlM,SAAS3qB,WAC/B,IAAKA,EACD,MAAMuvN,EAAO0E,iBAAiBjoO,QAGlC,IAAIkoO,EAAgBl0N,EAAWm1C,EAAQvkD,OAAS,CAAC,EAEjD,OAAOsjO,EAAc/+K,EAAQg/K,WAAaD,EAAoB,IAClE,CCQe,SAAS/7M,GAAgBy3M,EAAQz6K,GAC5C,IAAIvkD,EAAOukD,EAAQvkD,KACfujO,EAAWh/K,EAAQg/K,SACnBC,EAAaj/K,EAAQi/K,WACrBC,EAAQl/K,EAAQk/K,MAChBn/N,EAAOy6N,EAAcC,GACrBqC,EAAamC,EAAa,cAAgB,SAC1CE,GAAiBD,EAAQ,SAAWvD,GAASqD,EAC7CI,EAAcr/N,EAAKy1B,SAAS/5B,GAAMqhO,GAClCn+N,EAASygO,EAAYD,GAIzB,OAHKxgO,GAAUugO,IACXvgO,EAASygO,EAAYD,GAhB7B,SAAoBvmL,GAChB,IAAIj6C,EAASsb,MAAMC,QAAQ0+B,GAjB/B,SAAoB8D,GAEhB,IADA,IAAI/9C,EAAS,GACJoH,EAAM,EAAGA,EAAM22C,EAAI54C,OAAQiC,IAChCpH,EAAOskB,KAAKy5B,EAAI32C,GAAK0xC,eAEzB,OAAO94C,CACX,CAWsC0gO,CAAWzmL,GATjD,SAAqBA,GACjB,IAAIj6C,EAAS,CAAC,EACd,IAAK,IAAIC,KAASg6C,EACdj6C,EAAOC,GAASg6C,EAAIh6C,GAAO64C,cAE/B,OAAO94C,CACX,CAGwD2gO,CAAY1mL,GAChE,OAAOj6C,CACX,CAa8C4gO,CAAWH,EAAYJ,KAE1DrgO,CACX,CCtCe,SAAS6gO,GAAe93N,GACnC,IAAI2pF,EAAQ3pF,EAAMuD,MAAM,KACpBvC,EAAOknF,SAASyB,EAAM,GAAI,IAC1B1oF,EAAQinF,SAASyB,EAAM,GAAI,IAAM,EACjCzoF,EAAMgnF,SAASyB,EAAM,GAAI,IAE7B,OAAO,IAAInyF,KAAKwJ,EAAMC,EAAOC,EACjC,CCAA,IAAI62N,GAAarF,EAAOqF,WACpBC,GAAoBtF,EAAOsF,kBAC3BC,GAAyBvF,EAAOuF,uBAChCC,GAAmBxF,EAAOwF,iBAC1BC,GAAkBzF,EAAOyF,gBAEzBC,GAA6B,EAC7BC,GAAS,SACTC,GAAwB,MAExBC,GAAoB,CACpB,MAAO,MACP,IAAO,OAIX,SAASC,GAAgBzF,EAAQpG,EAAU8L,GACvC,IACI7L,EADOkG,EAAcC,GACHpH,QAAQiB,WAC9B,GAAKA,EAAL,CAQA,IAAI8L,EAAsB9L,EAAWD,GAErC,GAAK+L,EAQL,OAAOA,EAPH,GAAID,EACA,MAAMT,GAAkB7oO,OANhC,MALI,GAAIspO,EACA,MAAMV,GAAW5oO,OAiB7B,CAEA,SAASwpO,GAAerhO,EAAGqpB,GACvB,OAAOA,EAAEvkB,OAAS9E,EAAE8E,MACxB,CA+FO,SAASw8N,GAAsBlN,EAAW+M,GAG7C,QAFwB,IAAnBA,IAA4BA,GAAiB,GAE9CF,GAAkB7M,GAClB,OAAO6M,GAAkB7M,GAG7B,IAAIuG,EAAeW,EAAKb,aAAaE,aACrC,GAAKA,EAAL,CAQA,IAAI4G,EAAmB5G,EAAap+M,OAAO63M,GAE3C,GAAKmN,EAAL,CAQA,IAAIC,EAvHR,SAAwBD,GAIpB,IAHA,IAAIE,EAAkBC,EAClBC,EAAkBC,EAEb76N,EAAM,EAAGA,EAAMw6N,EAAiBz8N,OAAQiC,IAAO,CACpD,IAAIsuN,EAAWkM,EAAiBx6N,GAC5B24C,EAAO95C,OAAOC,KAAKwvN,GAAU,GAC7Bt0N,EAAOs0N,EAAS31K,GACpB,GAAIA,IAASshL,IAA0C,UAAjBjgO,EAAK8gO,SAAuB9gO,EAAKysK,MACnE,GAAKzsK,EAAK0sK,KAMH,IAAKk0D,EAAkB,CAC1B,IAAIG,EAAYtB,GAAez/N,EAAKysK,OAChCu0D,EAAUvB,GAAez/N,EAAK0sK,OAC7Bi0D,GAAyBA,EAAsBtgK,GAAK2gK,GAAWL,EAAsBvhL,KAAO2hL,KAC7FL,EAAmB/hL,EACnBgiL,EAAwB,CACpBvhL,KAAM2hL,EACN1gK,GAAI2gK,GAGhB,MAhBe,CACX,IAAIC,EAAiBxB,GAAez/N,EAAKysK,SACpCo0D,GAAwBA,EAAuBI,KAChDL,EAAmBjiL,EACnBkiL,EAAuBI,EAE/B,CAYR,CAEA,OAAOL,GAAoBF,CAC/B,CAyFuBQ,CAAeV,GAElC,OAAOC,CAJP,CALI,GAAIL,EACA,MAAMP,GAAiB/oO,MAAMu8N,EANrC,MALI,GAAI+M,EACA,MAAMR,GAAuB9oO,OAmBzC,CAEO,SAAS69N,GAAe+F,EAAQ0F,GACnC,IAAIpgO,EAAOy6N,EAAcC,GACrBpH,EAAUtzN,EAAKszN,QAEnB,IAAKA,EAAQqB,eAAgB,CACzB,IAAIL,EAAWiM,GAAsBrC,EAAgBl+N,GAAOogO,GAE5D,IAAK9L,GAAY8L,EACb,MAAMN,GAAgBhpO,MAAMkJ,EAAKhI,MAGrCs7N,EAAQqB,eAAiBL,CAC7B,CAEA,OAAOhB,EAAQqB,cACnB,CC7LO,IAAIwM,GAAe,CAAE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAE3DC,GAAoB,MCG3BC,GAAahH,EAAOgH,WACpBC,GAAajH,EAAOiH,WAET,SAASvH,GAASW,GAC7B,IAAI16N,EAAOy6N,EAAcC,GAEzB,IAAK3kJ,MAAM/1E,EAAK+5N,UACZ,OAAO/5N,EAAK+5N,SAGhB,IAAID,EAAWS,EAAKb,aAAaI,SACjC,IAAKA,EACD,MAAMuH,GAAWvqO,QAGrB,IAAIijO,EAAWD,EAASC,SAASmE,EAAgBl+N,KAAU85N,EAASC,SAASqH,IAE7E,IAAKrH,EACD,MAAMuH,GAAWxqO,QAKrB,OAFAkJ,EAAK+5N,SAAWoH,GAAahkM,QAAQ48L,GAE9B/5N,EAAK+5N,QAChB,CCxBiBM,EAAOgH,WCJT,SAASE,GAAc7G,GAGlC,OAFWD,EAAcC,GAEbpH,QAAQC,OACxB,CCNe,SAASiO,GAAe75N,GACnC,OAAQ,EAAIA,KAAW4vG,GAC3B,CCAe,SAASkqH,GAAqBzhO,EAAMigD,QAC9B,IAAZA,IAAqBA,EAAU,CAAC,GAEhCA,EAAQq0K,WACTr0K,EAAQq0K,SAAWK,GAAe30N,GAAM,IAG5C,IAAI8lG,EN8FD,SAAyB40H,EAAQz6K,GACpC,IAAIt4C,EAAQs4C,EAAQt4C,MAChB2sN,EAAWr0K,EAAQq0K,SACnBoN,EAAkBzhL,EAAQyhL,gBAE9B,QAFwE,IAApBA,IAA6BA,EAAkB1B,IAE3E,SAApB0B,EACA,OAAOpN,EAGX,IAAI+H,EAAe8D,GAAgBzF,EAAQpG,GAAU,GAarD,OAVIoN,IAAoB1B,GACX3D,EAAa,sBAAwBA,EAAa2D,IAEtC,qBAAVr4N,GAAmC,IAAVA,EACvB00N,EAAa,2BAEbA,EAAa,wBAKlC,CMrHkBqF,CAAgB1hO,EAAMigD,GAEpC,OAAO6lD,CACX,CCZe,SAAS67H,GAAa1iL,EAAQh6B,EAAOiE,EAAK+2B,EAASjgD,GAC9D,IAAIuzN,EAAUvzN,EAAKszN,QAAQC,QACvBqO,EAAe3iL,EAAO9hB,QAAQo2L,EAAQC,SACtCqO,EAAa5hL,EAAQm0K,UAAUtjN,QAC/BsjN,EAAYyN,EAAWtwI,QAEvBuwI,GAA+B,IAAlBF,EAAsBA,EAAe14M,EAAM,EAExD64M,EAAU9iL,EAAOh2C,UAAUgc,EAAO68M,GAClCljO,EAASqgD,EACT+iL,EAAgBD,EAAQh+N,OAE5B,GAAIi+N,GAAiB5N,EAAW,CAI5B,IAHA,IAAIpuN,EAAMg8N,EACN1wI,EAAQ,GAELtrF,GAAO,GAAG,CACb,IAAI2B,EAAQo6N,EAAQ94N,UAAUjD,EAAMouN,EAAWpuN,GAC3C2B,GACA2pF,EAAMpuE,KAAKvb,GAEf3B,GAAOouN,EACP,IAAI6N,EAAeJ,EAAWtwI,QAG9B,GAAkB,KAFlB6iI,OAA6Bh/N,IAAjB6sO,EAA6BA,EAAe7N,GAEnC,EACjBzsN,EAAQo6N,EAAQ94N,UAAU,EAAGjD,KAEzBsrF,EAAMpuE,KAAKvb,GAEf,KACJ,CACJ,CAEAo6N,EAAUzwI,EAAMjuE,UAAUy8B,KAAKyzK,EAAQ9vJ,OACvC7kE,EAASqgD,EAAOh2C,UAAU,EAAGgc,GAAS88M,EAAU9iL,EAAOh2C,UAAU64N,EACrE,CAEA,OAAOljO,CACX,CCrCe,SAASsjO,GAAgBtsO,GACpC,OAAOA,IAAUslO,GAAYtlO,IAAUulO,CAC3C,CCJe,SAASzrI,GAAIzwC,EAAQm7C,EAAQr+F,QACxB,IAAXq+F,IAAoBA,EAAS,QACnB,IAAVr+F,IAAmBA,GAAQ,GAEhC,IAAIwkF,EAAQ6Z,EAASvxE,OAAOo2B,GAAQl7C,OAChCnF,EAASqgD,EAEb,GAAIshC,EAAQ,EAAG,CACX,IAAI4hJ,EAAY,IAAIjoN,MAAMqmE,EAAQ,GAAGzgC,KAAK,KAC1ClhD,EAAS7C,EAAQkjD,EAASkjL,EAAYA,EAAYljL,CACtD,CAEA,OAAOrgD,CACX,CCbA,IAAIwjO,GAAgB,GAEL,SAAS72K,GAAM5jD,EAAO0xF,GACjC,IAAIz6F,EAAS+I,EACT06N,EAAWhpI,GAAa,EAQ5B,OANAz6F,EAASA,EAAOw4C,WAAWlsC,MAAM,KAGjCtM,GAFAA,EAASoY,KAAKu0C,MAAMzN,OAAOl/C,EAAO,GAAK,KAAOA,EAAO,GAAMk/C,OAAOl/C,EAAO,IAAMyjO,EAAYA,MAE3EjrL,WAAWlsC,MAAM,MACjCtM,EAASk/C,OAAOl/C,EAAO,GAAK,KAAOA,EAAO,GAAMk/C,OAAOl/C,EAAO,IAAMyjO,GAAaA,KAEnEjuN,QAAQ4C,KAAKC,IAAIorN,EAAUD,IAC7C,CCJA,IAAIE,GAA2B,EAC3BC,GAA2B,EAE3BC,GAAoB,MAExB,SAASC,GAAgBxiL,GACrB,IAIIyiL,EAJAC,EAAwB1iL,EAAQ0iL,sBAChCC,EAAwB3iL,EAAQ2iL,sBAChChtO,EAAQqqD,EAAQrqD,MAChBitO,EAAaX,GAAgBtsO,GAoBjC,OAlBIitO,IACAH,EX2GD,SAAiC/jL,GACpC,IAAIgkL,EAAwB5C,GACxB6C,EAAwB7C,GAExBjB,IAAcvE,EAAKb,aAAaE,cAAgB,CAAC,GAAGkF,WAAa,CAAC,GAAGngL,GAMzE,OAJImgL,GAAaA,EAAUgE,UACvBF,EAAwBD,EAAwB9yI,SAASivI,EAAUgE,QAAS,KAGzE,CACHH,sBAAuBA,EACvBC,sBAAuBA,EAE/B,CWzH4BG,CAAwB9iL,EAAQq0K,gBAG1Bl/N,IAA1ButO,IACAA,EAAwBE,EAAaH,EAAkBC,sBAAwB,QAGrDvtO,IAA1BwtO,IAEIA,EADAhtO,IAAUwlO,EACcpkN,KAAKI,IAAIurN,EAAuBJ,IACjDM,EACiB7rN,KAAKI,IAAIurN,EAAuBD,EAAkBE,uBAElD5rN,KAAKI,IAAIurN,EAAuBL,KAIzD,CACHK,sBAAuBA,EACvBC,sBAAuBA,EAE/B,CA6Be,SAASI,GAAqB/jL,EAAQgB,EAASjgD,GAC1D,IAAIuzN,EAAUvzN,EAAKszN,QAAQC,QACvB39N,EAAQqqD,EAAQrqD,MAChBitO,EAAaX,GAAgBtsO,GAGjC,GAAIA,IAAUylO,EAEV,YADoDjmO,IAAlC6qD,EAAQ0iL,sBAAsC1jL,EAAOgkL,cAAchjL,EAAQ0iL,uBAAyB1jL,EAAOgkL,iBAC1G7zN,QAAQusN,EAAOpI,EAAQC,SAG9C,IACI/V,EADA91M,EAAQs3C,EAGR4jL,IACA5iL,EAAQt4C,MAAQA,EAChB81M,EAASgkB,GAAqBzhO,EAAMigD,IAGpCrqD,IAAUwlO,IACVzzN,GAAS,IACT81M,EAAS8V,EAAQE,aAGrB,IAAIx9N,EAAMwsO,GAAgBxiL,GACtB0iL,EAAwB1sO,EAAI0sO,sBAK5BO,GAFJv7N,EAAQ4jD,GAAM5jD,EAFc1R,EAAI2sO,wBAIT,EACnBO,EAAe3B,GAAeviL,GAE9BqyC,EAAQ3pF,EAAMuD,MAAMywN,GAEpBoG,EAAUzwI,EAAM,GAChB8xI,EAAW1zI,GAAI4B,EAAM,GAAKA,EAAM,GAAGliF,QAAQozN,GAAmB5G,GAASA,EAAO+G,GAAuB,GAGrGO,IACAnB,EAAUA,EAAQ94N,UAAU,IAG5Bg3C,EAAQojL,uBACRtB,EAAUryI,GAAIqyI,EAAS9hL,EAAQojL,uBAGnC,IAMIt+M,EANAu+M,GAAyC,IAAxBrjL,EAAQsjL,YAAwB5B,GAAaI,EAAS,EAAGA,EAAQh+N,OAAQk8C,EAASjgD,GAAQ+hO,EAQ/G,GANIqB,IACAE,GAAkB/P,EAAQC,QAAU4P,GAKpCP,GAA0C,SAA5B5iL,EAAQyhL,gBACtB38M,EAnER,SAA6B/kB,EAAM2H,GAC/B,IAAI00N,EAAer8N,EAAKszN,QAAQgB,SAC5BvvM,EAAoB,IAAVpd,EAAc00N,EAAa,2BAA6BA,EAAa,yBAKnF,OAJI10N,EAAQ,IACRod,EAAUA,EAAQ3V,QAAQosN,EAAqB,IAAMA,IAGlDz2M,CACX,CA2DkBy+M,CAAoBxjO,EAAMi/C,OACjC,CACH,IAAIk1K,EAAWl0K,EAAQk0K,SACvBpvM,EAAWm+M,GAAYC,EAAgBhP,EAAS,IAAO,IAAMA,EAAS,GAAMA,EAAS,EACzF,CAEA,GAAIpvM,IAAYy2M,IAAuB0H,EACnC,OAAOI,EAGX,IAAI1kO,EA7FR,SAAsB+I,EAAOod,EAAS04L,GAElC,IADA,IAAI7+M,EAASg9N,EACJ51N,EAAM,EAAGjC,EAASghB,EAAQhhB,OAAQiC,EAAMjC,EAAQiC,IAAO,CAC5D,IAAImiH,EAAKpjG,EAAQ4lC,OAAO3kD,GAGpBpH,GADAupH,IAAOqzG,EACG7zN,EACHwgH,IAAOmzG,GAAwBnzG,IAAOozG,EACnC9d,EAEAt1F,CAElB,CACA,OAAOvpH,CACX,CA+EiB6kO,CAAaH,EAAgBv+M,EAAS04L,GAEnD,OAAO7+M,CACX,CCzIA,IAAI8kO,GAAgB,uCAChBC,GAAc,SAEX,SAASC,GAAgBC,EAAe7jO,GAC3C,IAAI+E,EAAS8+N,EAAc9+N,QAGkB,IAAzCA,EAAOo4B,QAAQo+L,KACfsI,EAAcjuO,MAAQwlO,EACtByI,EAAcpmB,OAASz9M,EAAKszN,QAAQC,QAAQE,YAC5CoQ,EAAc5kL,QAAU,MAGkB,IAA1Cl6C,EAAOo4B,QAAQm+L,KACfuI,EAAcjuO,MAAQslO,EACtB2I,EAAcpmB,OAASgkB,GAAqBzhO,GAEpD,CAEO,SAAS8jO,GAAkBD,GAC9B,IAAI9+N,EAAS8+N,EAAc9+N,OAC3B,GAAIA,EAAOo4B,QAAQ,MAAQ,GAAKp4B,EAAOo4B,QAAQ,MAAS,GAAKp4B,EAAOo4B,QAAQ,OAAS,EAAG,CACpF,IAAI0qH,EAAWg8E,EAAch8E,SAAW,GACxCg8E,EAAc9+N,OAASA,EAAOqK,QAAQs0N,IAAe,SAAS7zN,GAC1D,IAAIk0N,EAAYl0N,EAAM86C,OAAO,GAAGv7C,QAAQ,KAAMwsN,GAC1CoI,EAAUn0N,EAAMiB,MAAM,GAAG1B,QAAQ20N,EAAWnI,GAIhD,OAFA/zE,EAAS3kI,KAAK8gN,GAEPL,EACX,GACJ,CACJ,CC7BA,IAAIM,GAAQ,IACRrqI,GAAO,IAEPsqI,GAAsB,2BACtBC,GAAsB,MACtBC,GAAc,KAclB,SAASC,GAAYR,GACjB,IAAI5kL,EAAS4kL,EAAc5kL,OACvBl6C,EAAS8+N,EAAc9+N,OACvB68N,EAAe78N,EAAOo4B,QAAQw+L,GAElC,IAAsB,IAAlBiG,EAAqB,CACrB,IAAI0C,EAAYv/N,EAAOu8E,YAAYsY,IAAQgoI,EACvC2C,EAAax/N,EAAOu8E,YAAY2iJ,IAASrC,EACzC4C,EAAUF,GAAa,EACvBG,EAAWF,GAAc,EACzBnB,EAAWnkL,EAAO7H,WAAWlsC,MAAM,KASnCmuF,GAFJ+pI,GAJIA,EADAA,EAAS,GACE73K,GAAMtM,EAAQjoC,KAAK6T,IAAIu4M,EAAS,KAEhCA,EAAS,IAEJl4N,MAAMywN,GAAO,IAAMC,GAEd73N,OACrB2gO,GAAiB,EAEhBF,GAAYC,EAIND,GAAWF,EAAYC,EAC9BlrI,EAAYirI,EACLC,EAAaD,IAChBG,GAAYprI,EAAYkrI,EACxBlrI,EAAYkrI,EACLC,GAAWnrI,EAAYirI,IAC9BjrI,EAAYirI,GAGhBI,EAAgBF,EAAUF,EAAY,IAZtCT,EAAc9+N,OAASA,EAAOkE,UAAU,EAAG24N,GAAgB78N,EAAOkE,UAAU24N,EAAe,GAC3FA,GAAgB,EAChBvoI,EAAY,GAaZA,GAAa,IACbp6C,EAASsM,GAAMtM,EAAQo6C,GACnBqrI,GAAiB,IACjBzlL,EArDhB,SAA2Bt3C,EAAOg9N,GAC9B,IAAIC,EAQJ,OALIA,EADa,IAAbD,EACYT,GAEA,IAAIp1M,OAAQ,aAAe61M,EAAW,cAAgB,KAG/Dh9N,EAAMyH,QAAQw1N,EAAW,MAAMx1N,QAAQ+0N,GAAqBvI,EACvE,CA2CyBiJ,CAAkB5lL,EAAQylL,IAG/C,MACIzlL,EAASsM,GAAMtM,GAGf4kL,EAAcX,WAAuB,EAAVjkL,GAAgB,IAAM4kL,EAAcV,eAC/DU,EAAcX,UAAW,GAG7BW,EAAc5kL,OAASA,EACvB4kL,EAAcjC,aAAeA,CACjC,CAMA,SAASkD,GAAuBjB,GAC5B,IAAI5kL,EAAS4kL,EAAc5kL,OACvBl6C,EAAS8+N,EAAc9+N,OAE3B,GADAA,EAASA,EAAOmG,MAAMuwN,IACjBoI,EAAcX,UAAYW,EAAcV,eAAiBp+N,EAAO,GACjEA,EAASA,EAAO,GAChB8+N,EAAckB,mBAAoB,OAC/B,GAAe,IAAX9lL,EAAc,CACrB,IAAI+lL,EAAajgO,EAAO,GACxBA,EAASigO,GAAcjgO,EAAO,GAC1BigO,GAdZ,SAA0BjgO,GACtB,OAAkC,IAA3BA,EAAOo4B,QAAQ8mM,MAA2C,IAA1Bl/N,EAAOo4B,QAAQy8D,GAC1D,CAY0BqrI,CAAiBD,KAC/BnB,EAAcqB,SAAWF,EAEjC,MACIjgO,EAASA,EAAO,GAGpB8+N,EAAc9+N,OAASA,CAC3B,CASA,SAASogO,GAAiBC,EAAQC,EAAQpgN,GAStC,OAPgB,IAAZmgN,IAA6B,IAAZC,EACTA,GACW,IAAZD,IAA6B,IAAZC,EAChBD,EAEAngN,EAAQjO,KAAKC,IAAImuN,EAAQC,GAAUruN,KAAKI,IAAIguN,EAAQC,EAGpE,CAwGA,SAASC,GAAkBzB,EAAe7jO,GACtC,IAAIi/C,EAAS4kL,EAAc5kL,OAO3B,OAN6B,IAAzB4kL,EAAc5+M,QACdg6B,EAxER,SAA6B4kL,EAAe7jO,GACxC,IAAIilB,EAAQ4+M,EAAc5+M,MACtBiE,EAAM26M,EAAc36M,IACpBg6M,EAAWW,EAAcX,SACzBC,EAAeU,EAAcV,aAC7Bp+N,EAAS8+N,EAAc9+N,OACvB68N,EAAeiC,EAAcjC,aAC7B2D,EAAgB1B,EAAc0B,cAC9BR,EAAoBlB,EAAckB,kBAClCS,EAAW3B,EAAc2B,SACzBvmL,EAAS4kL,EAAc5kL,OACvBt3C,EAAQs3C,EAAO7H,WAAWlsC,MAAMywN,GAChC53N,EAASgB,EAAOhB,OAChBg+N,EAAUp6N,EAAM,GAChBy7N,EAAWz7N,EAAM,IAAMi0N,EACvBoG,EAAgBD,EAAQh+N,OACxB+tJ,EAAc8pE,EAElB38K,EAASl6C,EAAOkE,UAAU,EAAGgc,IAExBi+M,IAAYC,GAAkB4B,IAC/B9lL,GAAU,KAGd,IAAK,IAAIj5C,EAAMif,EAAOjf,EAAMjC,EAAQiC,IAAO,CACvC,IAAImiH,EAAKpjH,EAAO4lD,OAAO3kD,GAEvB,IAAsB,IAAlB47N,GACA,GAAI14M,EAAMljB,EAAMg8N,EAAe,CAE3B/iL,GAAU8iL,EACV,KACJ,OAWA,IATuB,IAAnBwD,GAAwBA,EAAgBv/N,IACxC8rJ,EAAc8pE,GAGbgG,EAAe57N,GAAQg8N,GAAiBJ,EAAe57N,GAAO,IAC/Di5C,GAAU8iL,EACV/7N,EAAM47N,GAGNA,IAAiB57N,EAAK,CACtBi5C,IAAWmkL,EAAWpjO,EAAKszN,QAAQC,QAAQC,QAAUoI,GAASwH,EAC9Dp9N,GAAOkjB,EAAM04M,EAAe,EAC5B,QACJ,CAGAz5G,IAAOvuB,IACP36C,GAAUkpE,EACV2pC,EAAc3pC,GACPA,IAAO87G,KACdhlL,GAAU6yG,EAElB,CAUA,OARI0zE,IACAvmL,EAAS0iL,GAAa1iL,EAAQh6B,GAASi+M,IAAa6B,EAAoB,EAAI,GAAI/tN,KAAKI,IAAI8R,EAAM84M,EAAgB/8M,GAASjlB,EAAKszN,QAAQE,QAASxzN,IAG9IkpB,GAAOjE,IACPg6B,GAAUl6C,EAAOkE,UAAUigB,EAAM,IAG9B+1B,CACX,CAKiBwmL,CAAoB5B,EAAe7jO,GAE5Ci/C,EDlMD,SAAyBA,EAAQ4oG,GACpC,IAAIjpJ,EAASqgD,EACb,GAAI4oG,EAEA,IADA,IAAI9jJ,EAAS8jJ,EAAS9jJ,OACbiC,EAAM,EAAGA,EAAMjC,EAAQiC,IAC5BpH,EAASA,EAAOwQ,QAAQu0N,GAAa97E,EAAS7hJ,IAGtD,OAAOpH,CACX,CCyLiB8mO,CADTzmL,EArFR,SAA6BA,EAAQrpD,EAAO6nN,GACxC,IAAI7+M,EAASqgD,EACb,GAAIrpD,IAAUslO,GAAYtlO,IAAUwlO,EAAS,CACzCx8N,EAASg9N,EACT,IAAK,IAAI51N,EAAM,EAAGjC,EAASk7C,EAAOl7C,OAAQiC,EAAMjC,EAAQiC,IAAO,CAC3D,IAAImiH,EAAKlpE,EAAO0L,OAAO3kD,GACvBpH,GAAWupH,IAAOmzG,GAAwBnzG,IAAOozG,EAAuB9d,EAASt1F,CACrF,CACJ,CACA,OAAOvpH,CACX,CA2EiB+mO,CAAoB1mL,EAAQ4kL,EAAcjuO,MAAOiuO,EAAcpmB,QACvComB,EAAch8E,WAG5C5oG,CACX,CAEe,SAAS2mL,GAAmB3mL,EAAQl6C,EAAQ/E,GACvD,IAAI6jO,EAAgB,CAChBX,SAAUjkL,EAAS,EACnBA,OAAQjoC,KAAK6T,IAAIo0B,GACjBkkL,aAAc3B,GAAeviL,GAC7Bl6C,OAAQA,GAKZ,OAFA+/N,GAAuBjB,GAEnBA,EAAcqB,SACPrB,EAAcqB,UAGzBpB,GAAkBD,GAClBD,GAAgBC,EAAe7jO,GAnJnC,SAAyB6jO,GACrBA,EAAc2B,SAAW3B,EAAc9+N,OAAOo4B,QAAQu+L,IAAoB,EACtEmI,EAAc2B,WACd3B,EAAc9+N,OAAS8+N,EAAc9+N,OAAOqK,QAAQg1N,GAAaxI,GAEzE,CA+IIiK,CAAgBhC,GAChBQ,GAAYR,GAlIhB,SAA+BA,GAC3B,IAAI9+N,EAAS8+N,EAAc9+N,OACvBw/N,EAAax/N,EAAOo4B,QAAQ8mM,IAC5BK,EAAYv/N,EAAOo4B,QAAQy8D,IAE3B30E,EAAQkgN,GAAiBZ,EAAYD,GAAW,GAKhDp7M,EAAMi8M,GAHVZ,EAAax/N,EAAOu8E,YAAY2iJ,IAChCK,EAAYv/N,EAAOu8E,YAAYsY,KAI3B30E,IAAUlgB,EAAOhB,SACjBmlB,EAAMjE,GAGV4+M,EAAc5+M,MAAQA,EACtB4+M,EAAc36M,IAAMA,EACpB26M,EAAc0B,cAAgBjB,CAClC,CAgHIwB,CAAsBjC,GAEfyB,GAAkBzB,EAAe7jO,GAC5C,CC/PA,IAAI+lO,GAAuB,sBA8BZ,SAASlC,GAAc9+N,GAQlC,OANIgzC,EAAShzC,GA9BjB,SAA+BA,GAC3B,IAAIihO,EAAqBD,GAAqB9oL,KAAKl4C,GAEnD,GAAIihO,EAAoB,CACpB,IAAI/lL,EAAU,CACVrqD,MAAOqlO,GAGPrlO,EAAQowO,EAAmB,GAAGtuL,cAgBlC,MAdc,MAAV9hD,EACAqqD,EAAQrqD,MAAQslO,EACC,MAAVtlO,EACPqqD,EAAQrqD,MAAQulO,EACC,MAAVvlO,EACPqqD,EAAQrqD,MAAQwlO,EACC,MAAVxlO,IACPqqD,EAAQrqD,MAAQylO,GAGhB2K,EAAmB,KACnB/lL,EAAQ0iL,sBAAwB1iL,EAAQ2iL,sBAAwB/yI,SAASm2I,EAAmB,GAAI,KAG7F/lL,CACX,CACJ,CAKkBgmL,CAAsBlhO,GAEtBA,CAIlB,CCpCe,SAASmhO,GAAajnL,EAAQl6C,EAAQ21N,GAIjD,QAHgB,IAAX31N,IAAoBA,EAASy2N,QAClB,IAAXd,IAAoBA,EAASmB,QAEnBzmO,IAAX6pD,GAAmC,OAAXA,EACxB,OAAO28K,EAGX,IAAK79K,SAASkB,GACV,OAAOp2B,OAAOo2B,GAGlB,IAGIrgD,EAHAoB,EAAO26N,EAAWD,GAClBz6K,EAAU4jL,GAAc9+N,GAG5B,GAAIk7C,EAAS,CACT,IAAIrqD,EAAQqqD,EAAQrqD,OAASqlO,EAC7Br8N,EAASokO,GAAqB/jL,EAAQp6C,OAAO2mB,OAAO,CAAC,EAAGxrB,EAAKszN,QAAQ19N,GAAQqqD,GAAUjgD,EAC3F,MACIpB,EAASgnO,GAAmB3mL,EAAQl6C,EAAQ/E,GAGhD,OAAOpB,CACX,CC9Be,SAASq5C,GAAStwC,GAC7B,MAAwB,kBAAVA,CAClB,CCMA,IAAIw+N,GAAiB,kBACjBC,GAAyB,UAE7B,SAASC,GAAqBpnL,EAAQk1K,GAClC,GAAIA,EAASpwN,OAAS,EAAG,CACrB,IAAIutF,GAAS6iI,EAAS,IAAMyH,GAAOxsN,QAAQksN,EAAsBM,GAAO1wN,MAAMswN,GAC9E,GAAIv8K,EAAO9hB,QAAQm0D,EAAM,KAAO,GAAKryC,EAAO9hB,QAAQm0D,EAAM,KAAO,EAC7D,OAAOryC,EAAO7vC,QAAQkiF,EAAM,GAAIsqI,GAAOxsN,QAAQkiF,EAAM,GAAIsqI,EAEjE,CACJ,CAEA,SAAS0K,GAAoB3+N,EAAO3H,EAAM+E,GACtC,IAGIm+N,EAHAjjL,EAAU4jL,GAAc9+N,IAAW,CAAC,EACpC89N,EAAaX,GAAgBjiL,EAAQrqD,OACrCqpD,EAASt3C,EAGT2sN,EAAWr0K,EAAQq0K,UAAYK,GAAe30N,EAAM6iO,GAExD,GAAIvO,EAAU,CACV,IAAIiS,EjBsDL,SAA0B7L,EAAQpG,EAAU8L,QACvB,IAAnBA,IAA4BA,GAAiB,GAElD,IAAI/D,EAAe8D,GAAgBzF,EAAQpG,EAAU8L,GACrD,GAAK/D,EAAL,CAIA,IAAKA,EAAakK,SAAU,CACxB,IAAIA,EAAW,CAAEjS,GACjB,IAAK,IAAIz1N,KAASw9N,EACdkK,EAASrjN,KAAKm5M,EAAax9N,IAE/B0nO,EAASvmN,KAAKsgN,IACdjE,EAAakK,SAAWA,CAC5B,CAEA,OAAOlK,EAAakK,QAXpB,CAYJ,CiBxEuBC,CAAiBxmO,EAAMs0N,EAAUuO,GAChD,GAAI0D,EACA,IAAK,IAAIvgO,EAAM,EAAGA,EAAMugO,EAASxiO,OAAQiC,IAAO,CAC5C,IAAI8/F,EAAUygI,EAASvgO,GACvB,GAAIi5C,EAAO/kD,SAAS4rG,GAAU,CAC1B7mD,EAASA,EAAO7vC,QAAQ02F,EAAS81H,GACjCiH,GAAa,EACb,KACJ,CACJ,CAGJ,GAAIA,EAAY,CACZ,IAAI4D,EAAcJ,GAAqBpnL,EAAQj/C,EAAKszN,QAAQgB,SAASH,WACjEkS,GAAqBpnL,EAAQj/C,EAAKszN,QAAQsB,WAAWT,UAErDsS,IACAvD,GAAW,EACXjkL,EAASwnL,EAGjB,CACJ,CAEA,MAAO,CACHxnL,OAAQA,EACRikL,SAAUA,EAElB,CA6Be,SAASwD,GAAY/+N,EAAO+yN,EAAQ31N,GAI/C,QAHgB,IAAX21N,IAAoBA,EAASmB,QAClB,IAAX92N,IAAoBA,EAAS,CAAC,IAE9B4C,GAAmB,IAAVA,EACV,OAAO,KAGX,GAAIswC,GAAStwC,GACT,OAAOA,EAGX,IAKIg/N,EALA3mO,EAAO26N,EAAWD,GAClBnH,EAAUvzN,EAAKszN,QAAQC,QAEvBt0K,EAASt3C,EAAMyvC,WACfysL,EAAgB9+N,GAAU,CAAC,EAgB/B,GAbIgzC,EAAShzC,KAET++N,GADAD,EAAgB,CAAE9+N,OAAQA,IAE1Bk6C,EAjDR,SAAuBA,EAAQ4kL,GAC3B,IAAIh8E,EAAWg8E,EAAch8E,SACzBjpJ,EAASqgD,EAEb,GAAI4oG,EACA,IAAK,IAAI7hJ,EAAM,EAAGA,EAAM6hJ,EAAS9jJ,OAAQiC,IACrCpH,EAASA,EAAOwQ,QAAQy4I,EAAS7hJ,GAAM41N,GAI/C,OAAOh9N,CACX,CAsCiBgoO,CAAc3nL,EAAQ4kL,GAE/BD,GAAgBC,EAAe7jO,KAG/B6jO,EAAcjuO,QAAUwlO,GAAWn8K,EAAO9hB,QAAQo2L,EAAQE,cAAgB,KAC1Ex0K,EAASA,EAAO7vC,QAAQmkN,EAAQE,YAAamI,GAC7C+K,GAAY,GAGZR,GAAex2M,KAAKsvB,GAEpB,OADAA,EAAS+2B,WAAW/2B,EAAO7vC,QAAQmkN,EAAQC,QAASmI,IAC7C5lJ,MAAM92B,GAAU,KAAOA,EAGlC,IAAIhpD,EAAMqwO,GAAoBrnL,EAAQj/C,EAAM6jO,GACxCgD,EAAmB5wO,EAAIitO,SACvB4D,EAAiB7wO,EAAIgpD,OAGrB8nL,GAFJ9nL,EAASp2B,OAAOi+M,GAAgBlrL,QAEDze,QAAQ,KACvC,GAAI4pM,EAAoB,EACpB,OAAO,KAGX,IAAIC,EAAaD,GAAqB,EAqBtC,OAnBAC,OAAkC5xO,IAArByxO,EAAiCA,EAAmBG,EAEjE/nL,EAASA,EAAO7vC,QAAQ,IAAKwsN,GACtBxsN,QAAQg3N,GAAwB,KAChCl7N,MAAMqoN,EAAQ9vJ,MAAMr0D,QAAQg3N,GAAwB,MAAMtmL,KAAK87K,GAC/DxsN,QAAQmkN,EAAQC,QAASmI,GAEhC18K,EAAS+2B,WAAW/2B,GAEhB82B,MAAM92B,GACNA,EAAS,KACF+nL,IACP/nL,IAAW,GAGXA,GAAU0nL,IACV1nL,EA/ER,SAAqBA,GACjB,IAAIgoL,EAAYp+M,OAAOo2B,GACnBioL,EAAaD,EAAU9pM,QAAQw+L,GAE/B/8N,EAASqgD,EAASjoC,KAAKg4E,IAAI,GADb,GAGlB,IAAoB,IAAhBk4I,GAAqBr+M,OAAOjqB,GAAQmF,QAAUkjO,EAAUljO,OAH1C,EAId,OAAOnF,EAGX,IAAIuoO,EAAiBF,EAAUljO,OAASmjO,EAAa,EAPnC,EAQlB,OAAOlxJ,WAAWp3E,EAAOwV,QAAQ+yN,GACrC,CAmEiBC,CAAYnoL,IAGlBA,CACX,CC3JA,IAAIpwB,GAAe,YAEJ,SAASw4M,GAAatiO,GACjC,IAAIvO,EAASo4B,UAEb,OAAO7pB,EAAOqK,QAAQyf,IAAc,SAAUhf,EAAOiH,GAGjD,OAFYtgB,EAAOq5F,SAAS/4E,EAAO,IAAM,EAG7C,GACJ,CCNA,IAAIwwN,GAAkB,IAClBC,GAAmB,GACnBC,GAAe,CAAE,EAAG,EAAG,EAAG,EAAG,GAM7BC,GAAY,CAAC,EACjBA,KAN+B,GAMGrwL,YAAc,EAChDqwL,KANgC,GAMGrwL,YAAc,EACjDqwL,GAL8B,GAKIrwL,YAAc,EAChDqwL,GAP+B,GAOIrwL,YAAc,EAEjD,IAAIswL,GAAsB,CACtBC,QAAS,EACT,UAAW,EACXnS,MAAO,EACPF,KAAM,EACNiD,OAAQ,GAGRqP,GAAwB,kBAM5B,IAAIC,GAAmB,CAAE,CACrBr6M,IAAK,MACLs6M,UAAW,KACZ,CACCt6M,IAAK,OACLs6M,UAAW,KACZ,CACCt6M,IAAK,QACLs6M,UAAW,KACZ,CACCt6M,IAAK,MACLs6M,UAAW,KACZ,CACCt6M,IAAK,UACLs6M,UAAW,KACZ,CACCt6M,IAAK,OACLu6M,aArBJ,SAA0B9nL,GACtB,OAAOA,EAAQxtB,OAAS,IAAM,GAClC,GAoBG,CACCjF,IAAK,SACLs6M,UAAW,KACZ,CACCt6M,IAAK,SACLs6M,UAAW,KACZ,CACCt6M,IAAK,eACLs6M,UAAW,MAGXE,GAAyB,CACzBpsO,EAAG,IACHi6N,EAAG,IACHb,EAAG,IACHz1E,EAAG,KAGH0oF,GAAkB,CAAC,EACnBC,GAAkB,CAAC,EAEvB,SAASC,GAAkBL,GAIvB,OAHKG,GAAgBH,KACjBG,GAAgBH,GAAa,IAAIh5M,OAAOg5M,EAAY,MAEjDG,GAAgBH,EAC3B,CAEA,SAASM,GAAmB/1M,GAIxB,IAHA,IAAIzzB,EAAS,GACTrI,EAAU87B,EAASs4B,OAAO,GAC1Bm9K,EAAYvxO,EACPyP,EAAM,EAAGA,EAAMqsB,EAAStuB,OAAQiC,IAAO,CAC5C,IAAIqiO,EAAYh2M,EAASs4B,OAAO3kD,GAC5BqiO,IAAcP,EACdvxO,GAAW8xO,GAEXzpO,EAAOskB,KAAK3sB,GACZA,EAAUuxO,EAAYO,EAE9B,CAIA,OAFAzpO,EAAOskB,KAAK3sB,GAELqI,CACX,CAEA,SAAS0pO,GAAcC,EAAY9S,GAC/B,IAEI+S,EAAa5pO,EAFb6pO,EAAmBF,EAAWxkO,OAC9B2kO,GAAY5qL,OAAOkqG,UAEvB,IAAK,IAAIjjJ,KAAU0wN,EAAkB,CAIjC,IAHA,IAAIhrL,EAAU,GACVk+L,EAAgB5jO,EAAOqK,QAAQ,IAAK,KACpCw5N,EAAQ,EACH5iO,EAAM,EAAGA,EAAMyiO,EAAkBziO,IAAO,CAC7C,IAAI8hO,EAAYS,EAAWviO,GAEvB6J,GADiBs4N,GAAkBL,EAAU,IACrB7qL,KAAK0rL,IAAkB,IAAI,GAEvD,GAAK94N,GAID,GADA84N,EAAgBA,EAAcv5N,QAAQS,EAAO+rN,GACzC/rN,EAAM9L,SAAW+jO,EAAU/jO,OAAQ,CACnC,IAAIorF,EAAQn4E,KAAKI,IAAIJ,KAAKC,IAAIuwN,GAAa33N,EAAM9L,QAAUyjO,GAAaM,EAAU/jO,QAAS,IAAK,GAChG6kO,GAASnB,GAAUt4I,EACvB,OANAy5I,GAAStB,GAWb,GAFA78L,EAAQvnB,KAAKrT,GAET+4N,EAAQF,EACR,KAER,CAEIC,EAAc5kO,SACd6kO,GAASR,GAAmBO,GAAe5kO,OAASwjO,IAGpDqB,EAAQF,IACRA,EAAWE,EACXJ,EAAc/9L,EACd7rC,EAAS62N,EAAiB1wN,GAElC,CAEAnG,EAASA,EAAOwQ,QAAQ,IAAK,KAE7B,IAAK,IAAIy5N,EAAQ,EAAGA,EAAQJ,EAAkBI,IAAS,CACnD,IAAIC,EAAYN,EAAYK,GAC5B,GAAIC,GAAaA,IAAcP,EAAWM,GAAQ,CAC9C,IAAIE,EAAiBP,EAAYK,GAAO,GACxCjqO,EAASA,EAAOwQ,QAAQ+4N,GAAkBY,GAAiBR,EAAWM,IAClEb,GAAuBe,KACvBnqO,EAASA,EAAOwQ,QAAQ+4N,GAAkBH,GAAuBe,IAAkBR,EAAWM,IAEtG,CACJ,CAEA,OAAOjqO,CACX,CAUA,SAASoqO,GAAe32M,EAAUryB,GAC9B,IAAIy1N,EAAmBz1N,EAAKy1B,SAAS2/L,gBAAgBK,iBACrD,GAAIA,EAAiBpjM,GACjB,OAAOojM,EAAiBpjM,GAE5B,GAAI61M,GAAgBloO,EAAKhI,OAASkwO,GAAgBloO,EAAKhI,MAAMq6B,GACzD,OAAO61M,GAAgBloO,EAAKhI,MAAMq6B,GAEtC,IACIzzB,EADAqqO,EAAiB52M,EAASi4B,OAAOs9K,IAErC,GAAIqB,EAAiB,EAAG,CACpB,IAAIC,EAAe72M,EAASk3E,OAAO,EAAG0/H,GAClCE,EAAe92M,EAASk3E,OAAO0/H,GAEnCrqO,EAASyoO,GAAarnO,EAAKy1B,SAAS2/L,gBAAgBI,MAChDC,EAAiB0T,IAAiBb,GAAcF,GAAmBe,GAAe1T,GAClFA,EAAiByT,IAAiBZ,GAAcF,GAAmBc,GAAezT,GAC1F,MACI72N,EAAS0pO,GAAcF,GAAmB/1M,GAAWojM,GAIzD,OA9BJ,SAAqBpjM,EAAUttB,EAAQ21N,GAC9BwN,GAAgBxN,KACjBwN,GAAgBxN,GAAU,CAAC,GAE/BwN,GAAgBxN,GAAQroM,GAAYttB,CACxC,CAwBIqkO,CAAY/2M,EAAUzzB,EAAQoB,EAAKhI,MAC5B4G,CACX,CAiBe,SAASyqO,GAAYtkO,EAAQ/E,GACxC,IACIpB,EADA62B,EAAWz1B,EAAKy1B,SAEpB,GAAIsiB,EAAShzC,GAELnG,EADA62B,EAAS0+L,SAASpvN,GACT0wB,EAAS0+L,SAASpvN,GAElBA,OAEV,GAAIA,EAAQ,CACf,GAAIA,EAAOggB,QACP,OAAOhgB,EAAOggB,QAGlB,IAAIsN,EAAWttB,EAAOstB,SACjBA,IACGttB,EAAOwtB,SACP3zB,EAASyoO,GAAa5xM,EAAS2/L,gBAAgBrwN,EAAOwtB,UAAWkD,EAAS0iM,YAAYpzN,EAAOwtB,UAAWkD,EAAS2iM,YAAYrzN,EAAOwtB,WAC7HxtB,EAAO0c,KACd7iB,EAAS62B,EAAS2iM,YAAYrzN,EAAO0c,MAC9B1c,EAAOutB,KACd1zB,EAAS62B,EAAS0iM,YAAYpzN,EAAOutB,MAErCD,EAtChB,SAA6B4tB,GAEzB,IADA,IAAIrhD,EAAS,GACJoH,EAAM,EAAGA,EAAM6hO,GAAiB9jO,OAAQiC,IAAO,CACpD,IAAIo6C,EAASynL,GAAiB7hO,GAE1B2B,EAAQs4C,EADAG,EAAO5yB,KAEnB,GAAI7lB,EAAO,CACP,IAAI2hO,EAAWlpL,EAAO0nL,WAAa1nL,EAAO2nL,aAAa9nL,GACvDrhD,EAAOskB,KAAKomN,EAASC,OAAO7B,GAAoB//N,IACpD,CACJ,CAEA,OAAO/I,EAAOkhD,KAAK87K,EACvB,CAyB2B4N,CAAoBzkO,IAInCstB,IACAzzB,EAASoqO,GAAe32M,EAAUryB,GAE1C,CAMA,OAJKpB,IACDA,EAAS62B,EAAS0+L,SAAS9rM,GAGxBzpB,CACX,CC/Oe,SAAS6qO,GAAaC,GACjC,IAAIzK,EAWJ,OAVIyK,GAAgB,EAChBzK,EAAW,cACa,IAAjByK,EACPzK,EAAW,OACa,IAAjByK,EACPzK,EAAW,SACa,IAAjByK,IACPzK,EAAW,SAGRA,CACX,CCVe,SAASI,GAAY3E,EAAQh/N,EAAMguO,EAAcxK,EAAYC,GACxE,OAAOl8M,GAAgBy3M,EAAQ,CAC3Bh/N,KAAMA,EACNujO,SAAUwK,GAAaC,GACvBxK,WAAYA,EACZC,MAAOA,GAEf,CCVA,SAASnnL,GAAW2xL,GAChB,MAAuB,oBAATA,CAClB,CAEe,SAASnxL,GAAO7wC,GAC3B,OAAOmlB,QAAQnlB,IAAUqwC,GAAWrwC,EAAMwM,UAAY6jC,GAAWrwC,EAAM0vE,SAC3E,CCNA,IAAIuyJ,GAAQ,QACRC,GAAO,OACPC,GAAO,OACPC,GAAU,UACVC,GAAU,UAEVC,GAAiB,CACjB,EAAK,MACL,EAAK,OACL,EAAKD,GACL,EAAKA,GACL,EAAKJ,GACL,EAAKA,GACL,EAAK,MACL,EAAKG,GACL,EAAKA,GACL,EAAKA,GACL,EAAKF,GACL,EAAKA,GACL,EAAKA,GACL,EAAKA,GACL,EAAK,SACL,EAAK,SACL,EAAK,cACL,EAAK,YACL,EAAKC,GACL,EAAKA,GACL,EAAKA,GACL,EAAKA,IAGLI,GAAmB,kLCVvB,SAASC,GAAYvhO,EAAO8gO,EAAc1pO,EAAMk/N,GAC5C,OAAIwK,GAAgB,EACTh6I,GAAI9mF,EAAQ,EAAG8gO,GAEnBrK,GAAYr/N,EAAM,SAAU0pO,EAAcxK,GAAYt2N,EACjE,CAEA,SAASwhO,GAAc3oN,EAAMioN,EAAc1pO,EAAMk/N,GAC7C,IAAI/F,EAAUniN,KAAK4M,MAAMnC,EAAK41D,WAAa,GAC3C,OAAIqyJ,EAAe,EACRvQ,EAAU,EAGdkG,GAAYr/N,EAAM,WAAY0pO,EAAcxK,GAAY/F,EACnE,CAGA,SAASkR,GAAe5oN,EAAMzhB,EAAMigD,GAChC,IAAIqqL,EAAarqL,EAAQqqL,WACrBC,EAAkBtqL,EAAQsqL,gBAC1B9hM,EAAYwX,EAAQxX,UACpB+hM,EAAgBvqL,EAAQuqL,cACxBC,EAAcxqL,EAAQwqL,YACtB9/M,EAASlJ,EAAKipN,oBAAsB,GACxC,GAAe,IAAX//M,GAAgB8/M,EAChB,MAAO,IAEX,IAAIzyI,EAAOrtE,GAAU,EAAI,IAAM,IAC3BggN,EAAe3zN,KAAK6T,IAAIF,GAAQysB,WAAWlsC,MAAM,KACjDy4E,EAAUgnJ,EAAa,IAAM,EAC7B/rO,EAASo5F,GAAQsyI,EAAaK,EAAa,GAAKj7I,GAAIi7I,EAAa,GAAI,MACrEhnJ,GAAY4mJ,IACZ3rO,IAAW6pC,EAAY,IAAMmzL,GAASlsI,GAAI/L,EAAS,IAGnD6mJ,KAEA5rO,EAASyoO,GADwB,IAAX18M,EAAe3qB,EAAKy1B,SAASq/L,cAAgB90N,EAAKy1B,SAASo/L,UAC1Cj2N,IAG3C,OAAOA,CACX,CAEA,SAASgsO,GAAgBnpN,EAAMioN,EAAc1pO,EAAMk/N,GAC/C,IAAItgO,EAMJ,OAJIA,EADA8qO,EAAe,EAzDvB,SAA8B7gO,EAAK6gO,EAAc/O,GAC7C,IAAIkQ,EAAgB9Q,GAASY,GAQ7B,OANI9xN,EAAMgiO,EACK,EAAIA,EAAgBhiO,EAEpBA,EAAMgiO,GAGH,CACtB,CAgDiBC,CAAqBrpN,EAAK0iE,SAAUulJ,EAAc1pO,GAElDq/N,GAAYr/N,EAAM,OAAQ0pO,EAAcxK,GAAYz9M,EAAK0iE,UAE/DvlF,CACX,CAEA,IAAImsO,GAAa,CAAC,EAmHH,SAASjmN,GAAWrD,EAAM1c,EAAQ21N,GAG7C,QAFgB,IAAXA,IAAoBA,EAASmB,IAE7BrjL,GAAO/2B,GACR,YAAarsB,IAATqsB,GAA+B,OAATA,EACfm6M,EAEJn6M,EAGX,IAAIzhB,EAAO26N,EAAWD,GAGtB,OAFc2O,GAAYtkO,EAAQ/E,GAEnBoP,QAAQ86N,IAAkB,SAASr6N,GAC9C,IAAI65N,EAAe75N,EAAM9L,OASzB,OANI8L,EAAM3V,SAAS,MAAQ2V,EAAM3V,SAAS,KAC7B2V,EAAMiB,MAAM,EAAG44N,EAAe,GAE9BqB,GAAWl7N,EAAM,IAAI4R,EAAMioN,EAAc1pO,EAI1D,GACJ,CCtNO,SAASgrO,GAAgBvpN,EAAMopK,EAAYC,GAC9C,IAAImgD,EAAkBxpN,EAAKipN,oBAEvBQ,EAAa,IAAI/rO,KAAKsiB,EAAKtN,UAAsC,KAAzB02K,EAAaC,IAErDqgD,EAAgBD,EAAWR,oBAE/B,OAAO,IAAIvrO,KAAK+rO,EAAW/2N,UAAgD,KAAnCg3N,EAAgBF,GAC5D,CDoEAF,GAAW1iN,EAAI,SAAS5G,EAAMioN,GAC1B,OAAOh6I,GAAIjuE,EAAK2C,UAAWslN,EAC/B,EAEAqB,GAAWlV,EAAI,SAASp0M,EAAMioN,EAAc1pO,GACxC,OAAOq/N,GAAYr/N,EAAM,OAAQ0pO,GAAcjoN,EAAK0iE,SACxD,EAEA4mJ,GAAW/V,EAAI,SAASvzM,EAAMioN,EAAc1pO,GACxC,OAAOmqO,GAAY1oN,EAAK41D,WAAYqyJ,EAAc1pO,GAAM,EAC5D,EAEA+qO,GAAWK,EAAI,SAAS3pN,EAAMioN,EAAc1pO,GACxC,OAAOmqO,GAAY1oN,EAAK41D,WAAYqyJ,EAAc1pO,GAAM,EAC5D,EAEA+qO,GAAWx4I,EAAI,SAAS9wE,EAAMioN,GAC1B,IAAI/gO,EAAO8Y,EAAK4hB,cAIhB,OAHqB,IAAjBqmM,IACA/gO,GAAc,KAEX+mF,GAAI/mF,EAAM+gO,EACrB,EAEAqB,GAAW7qO,EAAI,SAASuhB,EAAMioN,GAE1B,OAAOh6I,GADKjuE,EAAKe,WAAa,IAAM,GAClBknN,EACtB,EAEAqB,GAAWrU,EAAI,SAASj1M,EAAMioN,GAC1B,OAAOh6I,GAAIjuE,EAAKe,WAAYknN,EAChC,EAEAqB,GAAW54M,EAAI,SAAS1Q,EAAMioN,GAC1B,OAAOh6I,GAAIjuE,EAAKe,YAAc,GAAIknN,EACtC,EAEAqB,GAAWM,EAAI,SAAS5pN,EAAMioN,GAC1B,OAAOh6I,GAAIjuE,EAAKe,WAAa,GAAIknN,EACrC,EAEAqB,GAAWrtL,EAAI,SAASj8B,EAAMioN,GAC1B,OAAOh6I,GAAIjuE,EAAK4E,aAAcqjN,EAClC,EAEAqB,GAAWp8M,EAAI,SAASlN,EAAMioN,GAC1B,OAAOh6I,GAAIjuE,EAAKmF,aAAc8iN,EAClC,EAEAqB,GAAWniG,EAAI,SAASnnH,EAAMioN,GAC1B,IAAI7lJ,EAAepiE,EAAK61D,kBAOxB,OALqB,IAAjBuM,EACS6L,GAAI7mE,OAAOg7D,EAAe,KAAM34E,MAAM,KAAK,GAAGq+F,OAAO,EAAGmgI,GAAeA,GAAc,GAErFh6I,GAAIksI,EAAO8N,EAG5B,EAEAqB,GAAW9rO,EAAI,SAASwiB,EAAMioN,EAAc1pO,GACxC,OAAOq/N,GAAYr/N,EAAM,aAAc0pO,GAAcjoN,EAAKe,WAAa,GAAK,KAAO,KACvF,EAEAuoN,GAAWO,EAAI,SAAS7pN,EAAMioN,EAAc1pO,GACxC,OAAOqqO,GAAe5oN,EAAMzhB,EAAM,CAC9BsqO,WAAYZ,EAAe,EAC3Ba,gBAAiBb,EAAe,EAChCjhM,WAAW,EACX+hM,eAAe,GAEvB,EAEAO,GAAWQ,EAAI,SAAS9pN,EAAMioN,EAAc1pO,GACxC,OAAOqqO,GAAe5oN,EAAMzhB,EAAM,CAC9ByoC,UAAWihM,EAAe,EAC1Bc,cAAgC,IAAjBd,EACfe,YAA8B,IAAjBf,GAErB,EAEAqB,GAAW1+J,EAAI,SAAS5qD,EAAMioN,EAAc1pO,GACxC,OAAOqqO,GAAe5oN,EAAMzhB,EAAM,CAC9BuqO,gBAAkC,IAAjBb,EACjBjhM,UAA4B,IAAjBihM,GAAuC,IAAjBA,GAEzC,EAEAqB,GAAWlpF,EAAI,SAASpgI,EAAMioN,EAAc1pO,GACxC,OAAOqqO,GAAe5oN,EAAMzhB,EAAM,CAC9BuqO,gBAAkC,IAAjBb,EACjBjhM,UAA4B,IAAjBihM,GAAuC,IAAjBA,EACjCe,aAAa,GAErB,EAEAM,GAAW54F,EAAI,SAAS1wH,EAAMioN,EAAc1pO,GACxC,IAAIwyB,EAAM/Q,EAAK4hB,eAAiB,EAAI,EAAI,EACxC,OAAOg8L,GAAYr/N,EAAM,OAAQ0pO,GAAcl3M,EACnD,EAEAu4M,GAAWnvO,EAAIgvO,GAEfG,GAAW97N,EAAI,SAASwS,EAAMioN,EAAc1pO,GACxC,OAAO4qO,GAAgBnpN,EAAMioN,EAAc1pO,GAAM,EACrD,EAEA+qO,GAAWroO,EAAI,SAAS+e,EAAMioN,EAAc1pO,GACxC,OAAOoqO,GAAc3oN,EAAMioN,EAAc1pO,GAAM,EACnD,EAEA+qO,GAAWxrF,EAAI6qF,GElLf,IAAIoB,GAAuB,6BACvBjqJ,GAAa,sBACbkqJ,GAAe,UACfC,GAAe,CACf,EAAG,WACH,EAAG,WACH,EAAG,UAEHC,GAAc,MACdhI,GAAc,MAEdiI,GAAqB,MACrBC,GAAsB,MAEtBC,GAAsB,CACtB,sBACA,mBACA,aACA,yBACA,iCACA,6BACA,4BACA,yBACA,8BACA,0BACA,sBACA,oBACA,sBACA,mBACA,sBACA,mBACA,aACA,WACA,SAEAC,GAAmB,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAGhF,SAASC,GAAWrkO,EAAOsd,EAAOiE,GAC9B,QAASvhB,GAASsd,GAAStd,GAASuhB,EACxC,CAEA,SAAS+iN,GAAUp8N,EAAO5a,GAItB,IAHA,IAAI8P,EAAS9P,EAAM8P,OACfiB,EAAM/Q,EAAM+Q,IACZ5D,EAAI,EACD2C,EAAOiB,KAAS6J,GACnBzN,IACA4D,IAMJ,OAJI5D,EAAI,IACJ4D,GAAO,GAEX/Q,EAAM+Q,IAAMA,EACL5D,CACX,CAEA,SAAS8pO,GAAUzwO,EAAMxG,GACrB,IAAIk3O,EAAQ1wO,EAAQiwO,GAAajwO,IAAS,IAAIqzB,OAAO,UAAYrzB,EAAO,KAAQkwO,GAC5E97N,EAAQ5a,EAAM0S,MAAM4hG,OAAOt0G,EAAMm3O,SAAU3wO,GAAMoU,MAAMs8N,GAE3D,OAAIt8N,GACAA,EAAQA,EAAM,GACd5a,EAAMm3O,UAAYv8N,EAAM9L,OACjB8rF,SAAShgF,EAAO,KAEpB,IACX,CAEA,SAASw8N,GAAetpN,EAAO9tB,EAAOkqO,GAQlC,IAPA,IAEInnO,EAAMs0O,EAGNC,EALAnqO,EAAI,EACJ2B,EAASgf,EAAMhf,OAEfyoO,EAAc,EACdC,EAAW,EAGRrqO,EAAI2B,EAAQ3B,IAEfkqO,GADAt0O,EAAO+qB,EAAM3gB,IACK2B,OAClBwoO,EAAWt3O,EAAM0S,MAAM4hG,OAAOt0G,EAAMm3O,SAAUE,GAE1CnN,IACAoN,EAAWA,EAAS70L,eAGpB60L,IAAav0O,GAAQs0O,EAAaE,IAClCA,EAAcF,EACdG,EAAWrqO,GAInB,OAAIoqO,GACAv3O,EAAMm3O,UAAYI,EACXC,EAAW,GAGf,IACX,CAEA,SAASC,GAAaz3O,GAClB,IAAI2J,GAAS,EAKb,OAJI3J,EAAM0S,MAAMgjD,OAAO11D,EAAMm3O,YAAcn3O,EAAM8P,OAAO9P,EAAM+Q,OAC1D/Q,EAAMm3O,WACNxtO,GAAS,GAENA,CACX,CAYA,SAAS+tO,GAAoB13O,EAAO+K,EAAMigD,GACtC,IAAIqqL,EAAarqL,EAAQqqL,WACrBsC,EAAc3sL,EAAQ2sL,YACtBrC,EAAkBtqL,EAAQsqL,gBAC1BC,EAAgBvqL,EAAQuqL,cACxBqC,EAAW5sL,EAAQ4sL,SAGvB,GAFA53O,EAAMmiF,KAAM,EAERy1J,GAAmD,MAAvC53O,EAAM0S,MAAMgjD,OAAO11D,EAAMm3O,UAErC,OADAn3O,EAAMm3O,YACC,EAGX,GAAI5B,IAAkB6B,GAvB1B,SAA4B52M,GACxB,IAAIo/L,EAAYp/L,EAASo/L,UACrBC,EAAgBr/L,EAASq/L,cAC7B,IAAKD,EACD,MAAMwF,EAAOyS,UAAUh2O,QAG3B,MAAO,CAAE+9N,EAAUzlN,QAAQu0N,GAAa/H,GAAOlkL,cAAeo9K,EAAc1lN,QAAQu0N,GAAa/H,GAAOlkL,cAC5G,CAeyCq1L,CAAmB/sO,EAAKy1B,UAAWxgC,GAAO,GAC3E,OAAO,EAGX,IAAIw1C,EAAU+gM,GAAqBvuL,KAAKhoD,EAAM0S,MAAM4hG,OAAOt0G,EAAMm3O,SAAU,IAC3E,IAAK3hM,EACD,OAAQ+/L,EAGZ,IAAIwC,EAAaviM,EAAQ,GACrBwiM,EAAexiM,EAAQ,GACvByiM,EAAcr9I,SAASm9I,EAAY,IACnCvkM,EAAYgC,EAAQ,GACpB0iM,EAAgBt9I,SAASo9I,EAAc,IAE3C,SAAIl3J,MAAMm3J,KAAkB5C,GAAoC,IAAtB0C,EAAWjpO,SAAmBwmO,GAAmBx0J,MAAMo3J,IAAoBP,GAAenkM,KAIhIstC,MAAMo3J,KACNA,EAAgB,SAGhBnB,GAAWkB,GAAc,GAAI,KAAQC,GAAiBnB,GAAWmB,EAAe,EAAG,OAIvFl4O,EAAMm3O,UAAY3hM,EAAQ,GAAG1mC,OAC7B9O,EAAMi4O,YAAcA,OACpBj4O,EAAMk4O,cAAgBA,IAC1B,CAEA,SAASC,GAAWjlH,EAAIlzH,EAAO+K,GAC3B,IAAIugF,EAAQ0rJ,GAAU9jH,EAAIlzH,GACtB8tB,EAAQs8M,GAAYr/N,EAAM,SAAUugF,EAAc,MAAP4nC,GAAY,GAEvDv/G,EAAQ23E,EAAQ,EAAI2rJ,GAAU,EAAGj3O,GAASo3O,GAAetpN,EAAO9tB,GAAO,GAE3E,GAAc,OAAV2T,GAAkBojO,GAAWpjO,EAAO,EAAG,IACvC,OAAO,EAEX3T,EAAM2T,MAAQA,EAAQ,CAC1B,CAEA,SAASykO,GAAellH,EAAIlzH,EAAO+K,GAC/B,IAAIugF,EAAQ0rJ,GAAU9jH,EAAIlzH,GACtB8tB,EAAQs8M,GAAYr/N,EAAM,OAAQugF,EAAc,MAAP4nC,GAAY,GACrDpkC,EAAYxD,EAAQ,EAAI2rJ,GAAU,EAAGj3O,GAASo3O,GAAetpN,EAAO9tB,GAAO,GAC/E,IAAM8uF,GAA2B,IAAdA,GAAoBioJ,GAAWjoJ,EAAW,EAAG,GAC5D,OAAO,CAEf,CAEA,IAAIupJ,GAAU,CAAC,EA2Rf,SAASC,GAAgB5lO,EAAO5C,GAI5B,MAAQ,GAHY6mO,GAAmB3uL,KAAKl4C,GAAQ,GAGvB4C,EAFRkkO,GAAoB5uL,KAAKl4C,GAAQ,EAG1D,CAEA,SAASyoO,GAAW7lO,EAAO5C,EAAQ/E,GAmB/B,IAlBA,IAAI+kB,EAAUskN,GAAYtkO,EAAQ/E,GAAMkL,MAAM0wN,GAE1C3mO,EAAQ,CACR8P,OAAQggB,EACR/e,IAAK,EACL2B,MAAO4lO,GAAgB5lO,EAAO5C,GAC9BqnO,SAAU,EACVzjO,KAAM,KACNC,MAAO,KACPC,IAAK,KACL6Y,MAAO,KACPiiE,QAAS,KACTC,QAAS,KACTC,aAAc,MAEd9/E,EAASghB,EAAQhhB,OACjBigO,GAAU,EAEP/uO,EAAM+Q,IAAMjC,EAAQ9O,EAAM+Q,MAAO,CACpC,IAAImiH,EAAKpjG,EAAQ9vB,EAAM+Q,KAEvB,GAAIg+N,EACW,MAAP77G,IACA67G,GAAU,GAGd0I,GAAaz3O,QAEb,GAAIq4O,GAAQnlH,IAER,GADcmlH,GAAQnlH,GAAIlzH,EAAO+K,GAE7B,OAAO,UAER,GAAW,MAAPmoH,EACP67G,GAAU,EACV0I,GAAaz3O,QACV,IAAKy3O,GAAaz3O,GACrB,OAAO,IAGnB,CAEA,OAAIA,EAAMm3O,SAAWzkO,EAAM5D,OAChB,KA/Gf,SAAoB9O,GAChB,IAaI2J,EAbA+J,EAAO1T,EAAM0T,KACbC,EAAQ3T,EAAM2T,MACdC,EAAM5T,EAAM4T,IACZ6Y,EAAQzsB,EAAMysB,MACdiiE,EAAU1uF,EAAM0uF,QAChBC,EAAU3uF,EAAM2uF,QAChBC,EAAe5uF,EAAM4uF,aACrB4pJ,EAASx4O,EAAMw4O,OACfr2J,EAAMniF,EAAMmiF,IACZ81J,EAAcj4O,EAAMi4O,YACpBC,EAAgBl4O,EAAMk4O,cACtBO,EAAoB,OAAVhsN,GAA8B,OAAZiiE,GAAoBC,GAAW,KAC3DniE,EAAO,IAAItiB,KAwCf,OArCa,OAATwJ,GAA2B,OAAVC,GAA0B,OAARC,GAAgB6kO,GACnD/kO,EAAO8Y,EAAK4hB,cACZz6B,EAAQ6Y,EAAK41D,WACbxuE,EAAM4Y,EAAK2C,YAEE,OAATzb,IACAA,EAAO8Y,EAAK4hB,eAGJ,OAARx6B,IACAA,EAAM,IAIV4kO,GAAU/rN,EAAQ,KAClBA,GAAS,IAGT01D,GACI81J,IACAxrN,IAAUwrN,GAGVC,IACAxpJ,IAAYwpJ,GAAiBD,EAAc,GAAK,EAAI,IAGxDtuO,EAAS,IAAIO,KAAKA,KAAKi4E,IAAIzuE,EAAMC,EAAOC,EAAK6Y,EAAOiiE,EAASC,EAASC,KDlcvE,SAAmBpiE,EAAMC,GACvBA,GAA6B,KAApBD,EAAKe,YACff,EAAKD,SAASC,EAAKe,WAAa,EAExC,CCicQ8gE,CADA1kF,EAAS,IAAIO,KAAKwJ,EAAMC,EAAOC,EAAK6Y,EAAOiiE,EAASC,EAASC,GAC3CniE,GAGlB/Y,EAAO,KACP/J,EAAOklF,YAAYn7E,GAGnB/J,EAAOwlB,YAAcvb,QAAezT,IAARgiF,EACrB,KAGJx4E,CACX,CAwDW8kF,CAAWzuF,IAAU,IAChC,CAWA,SAAS04O,GAAyBhmO,GAC9B,GAAIA,GAAiC,IAAxBA,EAAMw1B,QAAQ,MAAa,CACpC,IAAI1b,EAAO8/D,GAAWtkC,KAAKt1C,GAC3B,GAAI8Z,EAAM,CACNA,EAAOA,EAAK,GACZ,IAAImsN,EAAWnC,GAAaxuL,KAAKx7B,EAAKxY,UAAU,IAUhD,OARAwY,EAAO,IAAItiB,KAAK0wF,SAASpuE,EAAM,KAE3BmsN,IACAA,EAnBhB,SAAkCjjN,GAC9B,IAAIqtE,EAA+B,MAAxBrtE,EAAO4+E,OAAO,EAAG,IAAc,EAAI,EAE1C3qG,EAAS+rB,EAAO1hB,UAAU,GAG9B,OAAO+uF,GAFuC,GAApCnI,SAASjxF,EAAO2qG,OAAO,EAAG,GAAI,IAAY1Z,SAASjxF,EAAOqK,UAAU,GAAI,IAGtF,CAY2B4kO,CAAyBD,EAAS,IAC7CnsN,EAAOupN,GAAgBvpN,EAAMA,EAAKipN,oBAAqB,GACvDjpN,EAAOupN,GAAgBvpN,EAAM,GAAI,EAAImsN,IAGlCnsN,CACX,CACJ,CACJ,CAce,SAASqyD,GAAUnsE,EAAOq1N,EAAStC,GAG9C,QAFgB,IAAXA,IAAoBA,EAASmB,IAE7Bl0N,EACD,OAAO,KAGX,GAAI6wC,GAAO7wC,GACP,OAAOA,EAGX,IAAImmO,EAAajlN,OAAOlhB,GAAOi0C,OAC3Bn6B,EAAOksN,GAAyBG,GACpC,GAAIrsN,EACA,OAAOA,EASX,IANA,IAAIzhB,EAAO26N,EAAWD,GAClBqT,EAAe/Q,GA9BvB,SAAwBvnM,GAKpB,IAJA,IAAIunM,EAAU,GACV7I,EAAW1+L,EAAS0+L,SACpBpwN,EAASgoO,GAAiBhoO,OAErBiC,EAAM,EAAGA,EAAMjC,EAAQiC,IAC5Bg3N,EAAQ95M,KAAKixM,EAAS4X,GAAiB/lO,KAG3C,OAAOg3N,EAAQ52N,OAAO0lO,GAC1B,CAoBkCkC,CAAehuO,EAAKy1B,UAG9C1xB,GAFJgqO,EAAe7zN,MAAMC,QAAQ4zN,GAAgBA,EAAe,CAAEA,IAEpChqO,OAEjBiC,EAAM,EAAGA,EAAMjC,EAAQiC,IAE5B,GADAyb,EAAO+rN,GAAWM,EAAYC,EAAa/nO,GAAMhG,GAE7C,OAAOyhB,EAIf,OAAOA,CACX,CA1ZA6rN,GAAQjlN,EAAI,SAASpzB,GACjBg3O,GAAU,IAAKh3O,GACf,IAAI4T,EAAMqjO,GAAU,EAAGj3O,GAEvB,GAAY,OAAR4T,GAAgBmjO,GAAWnjO,EAAK,EAAG,IACnC,OAAO,EAGO,OAAd5T,EAAM4T,MACN5T,EAAM4T,IAAMA,EAEpB,EAEAykO,GAAQzX,EAAI,SAAS5gO,EAAO+K,GAIxB,GAAkB,OADFqsO,GAAehN,GAAYr/N,EAAM,OAFrCisO,GAAU,IAAKh3O,IAEqC,GAAO,GAAOA,GAAO,GAEjF,OAAO,CAEf,EAEAq4O,GAAQtY,EAAI,SAAS//N,EAAO+K,GACxB,OAAOotO,GAAW,IAAKn4O,EAAO+K,EAClC,EAEAstO,GAAQlC,EAAI,SAASn2O,EAAO+K,GACxB,OAAOotO,GAAW,IAAKn4O,EAAO+K,EAClC,EAEAstO,GAAQ/6I,EAAI,SAASt9F,GACjB,IAAIsrF,EAAQ0rJ,GAAU,IAAKh3O,GACvB0T,EAAOujO,GAAoB,IAAV3rJ,OAAcnrF,EAAYmrF,EAAOtrF,GAEtD,GAAa,OAAT0T,EACA,OAAO,EAGX,GAAc,IAAV43E,EAAa,CACb,IAAI0tJ,GAAc,IAAI9uO,MAAOkkC,eAC7B16B,EAAQslO,EAAcA,EAAc,IAAOtlO,GA/L1B,OAiMbA,GAAQ,IAEhB,CAEA1T,EAAM0T,KAAOA,CACjB,EAEA2kO,GAAQptO,EAAI,SAASjL,GACjBg3O,GAAU,IAAKh3O,GAEf,IAAIysB,EAAQwqN,GAAU,EAAGj3O,GAKzB,GAJc,KAAVysB,IACAA,EAAQ,GAGE,OAAVA,GAAkBsqN,GAAWtqN,EAAO,EAAG,IACvC,OAAO,EAGXzsB,EAAMysB,MAAQA,CAClB,EAEA4rN,GAAQjC,EAAI,SAASp2O,GACjBg3O,GAAU,IAAKh3O,GAEf,IAAIysB,EAAQwqN,GAAU,EAAGj3O,GAEzB,GAAc,OAAVysB,GAAkBsqN,GAAWtqN,EAAO,EAAG,IACvC,OAAO,EAGXzsB,EAAMysB,MAAQA,CAClB,EAEA4rN,GAAQruO,EAAI,SAAShK,EAAO+K,GACxB,IACIkuO,EAAgB7O,GAAYr/N,EAAM,aAD1BisO,GAAU,IAAKh3O,IACgC,GAAO,GAE9Dw4O,EAASpB,GAAe,CAAE6B,EAAc9qN,IAAMnuB,GAAO,GACzD,IAAKw4O,IAAWpB,GAAe,CAAE6B,EAAc/qN,IAAMluB,GAAO,GACxD,OAAO,EAGXA,EAAMw4O,OAASA,CACnB,EAEAH,GAAQ5W,EAAI,SAASzhO,GACjBg3O,GAAU,IAAKh3O,GACf,IAAIysB,EAAQwqN,GAAU,EAAGj3O,GACzB,GAAc,OAAVysB,GAAkBsqN,GAAWtqN,EAAO,EAAG,IACvC,OAAO,EAEXzsB,EAAMysB,MAAQA,CAClB,EAEA4rN,GAAQn7M,EAAI,SAASl9B,GACjBg3O,GAAU,IAAKh3O,GAEf,IAAIysB,EAAQwqN,GAAU,EAAGj3O,GAEzB,GAAc,OAAVysB,GAAkBsqN,GAAWtqN,EAAO,EAAG,IACvC,OAAO,EAGXzsB,EAAMysB,MAAkB,KAAVA,EAAe,EAAIA,CACrC,EAEA4rN,GAAQ5vL,EAAI,SAASzoD,GACjBg3O,GAAU,IAAKh3O,GACf,IAAI0uF,EAAUuoJ,GAAU,EAAGj3O,GAE3B,GAAgB,OAAZ0uF,GAAoBqoJ,GAAWroJ,EAAS,EAAG,IAC3C,OAAO,EAGX1uF,EAAM0uF,QAAUA,CACpB,EAEA2pJ,GAAQ3+M,EAAI,SAAS15B,GACjBg3O,GAAU,IAAKh3O,GACf,IAAI2uF,EAAUsoJ,GAAU,EAAGj3O,GAC3B,GAAgB,OAAZ2uF,GAAoBooJ,GAAWpoJ,EAAS,EAAG,IAC3C,OAAO,EAEX3uF,EAAM2uF,QAAUA,CACpB,EAEA0pJ,GAAQ1kG,EAAI,SAAS3zI,GACjB,IAAIsrF,EAAQ0rJ,GAAU,IAAKh3O,GACvB4a,EAAQ5a,EAAM0S,MAAM4hG,OAAOt0G,EAAMm3O,SAAU7rJ,GAC3CsD,EAAe,KASnB,GAPK9N,MAAM8Z,SAAShgF,EAAO,OAEvBg0E,EAAet4B,GADfs4B,EAAe7N,WAAW,KAAOnmE,EAAO,IACL,GACnCg0E,GAAgB,IAChB5uF,EAAMm3O,UAAY7rJ,GAGD,OAAjBsD,GAAyBmoJ,GAAWnoJ,EAAc,EAAG,KACrD,OAAO,EAGX5uF,EAAM4uF,aAAeA,CACzB,EAEAypJ,GAAQhC,EAAI,SAASr2O,EAAO+K,GACxB,IAEImuO,EAFQlC,GAAU,IAAKh3O,GAED,EAEtBm5O,EAAUzB,GAAoB13O,EAAO+K,EAAM,CAC3CsqO,WAAY6D,EACZ5D,gBAAiB4D,EACjB3D,eAAe,IAGnB,GAAI4D,EACA,OAAOA,CAEf,EAEAd,GAAQ/B,EAAI,SAASt2O,EAAO+K,GACxB,IAAIugF,EAAQ0rJ,GAAU,IAAKh3O,GAEvBm5O,EAAUzB,GAAoB13O,EAAO+K,EAAM,CAC3C4sO,YAAarsJ,EAAQ,EACrBssJ,SAAoB,IAAVtsJ,EACViqJ,cAAyB,IAAVjqJ,IAGnB,GAAI6tJ,EACA,OAAOA,CAEf,EAEAd,GAAQjhK,EAAI,SAASp3E,EAAO+K,GACxB,IAAIugF,EAAQ0rJ,GAAU,IAAKh3O,GAEvBm5O,EAAUzB,GAAoB13O,EAAO+K,EAAM,CAC3C4sO,YAAuB,IAAVrsJ,GAAyB,IAAVA,EAC5BgqJ,gBAA2B,IAAVhqJ,IAErB,GAAI6tJ,EACA,OAAOA,CAEf,EAEAd,GAAQzrF,EAAI,SAAS5sJ,EAAO+K,GACxB,IAAIugF,EAAQ0rJ,GAAU,IAAKh3O,GAEvBm5O,EAAUzB,GAAoB13O,EAAO+K,EAAM,CAC3C4sO,YAAuB,IAAVrsJ,GAAyB,IAAVA,EAC5BgqJ,gBAA2B,IAAVhqJ,EACjBssJ,UAAU,IAEd,GAAIuB,EACA,OAAOA,CAEf,EAEAd,GAAQn7F,EAAI,SAASl9I,EAAO+K,GACxB,IACIk5N,EAAOmG,GAAYr/N,EAAM,OADjBisO,GAAU,IAAKh3O,IACiB,GAAO,GAGnD,GAAY,OAFFo3O,GAAe,CAAEnT,EAAK,GAAIA,EAAK,IAAMjkO,GAAO,GAGlD,OAAO,CAEf,EAEAq4O,GAAQ1xO,EAAI,SAAS3G,EAAO+K,GACxB,OAAOqtO,GAAe,IAAKp4O,EAAO+K,EACtC,EAEAstO,GAAQr+N,EAAI,SAASha,EAAO+K,GACxB,OAAOqtO,GAAe,IAAKp4O,EAAO+K,EACtC,ECxZA,IAAIquO,GAAa,CACbzlO,MAAO,CACHlN,KAAM,SACN4yO,UAAW,EACXpP,WAAY,KAGhB/F,QAAS,CACLz9N,KAAM,WACN4yO,UAAW,EACXpP,WAAY,KAGhBx2N,QAAS,CACLhN,KAAM,OACN4yO,UAAW,CACPzY,EAAG,EACH5mN,EAAG,EACHrT,EAAG,GAEPsjO,WAAY,KAGhB31M,UAAW,CACP7tB,KAAM,aACN4yO,UAAW,GAGf97M,IAAK,CACD92B,KAAM,OACN4yO,UAAW,IAIfC,GAAU,UAEd,SAASC,GAAWl9I,EAAO3pF,GACvB,IAAI8mO,EAAWn9I,EAAMA,EAAMvtF,OAAS,GAChC0qO,GAAYA,EAAS/yO,OAAS6yO,GAC9BE,EAAS1pN,SAAWpd,EAEpB2pF,EAAMpuE,KAAK,CACPxnB,KAAM6yO,GACNxpN,QAASpd,GAGrB,CAEA,SAAS+mO,GAAS3pN,GACd,MAAmB,MAAZA,GAA+B,MAAZA,CAC9B,CAEe,SAASqM,GAAgBrsB,EAAQ21N,QAC5B,IAAXA,IAAoBA,EAASmB,GAQlC,IANA,IACI92M,EAAUskN,GAAYtkO,EADf41N,EAAWD,IAElBppI,EAAQ,GACR70C,EAAYytL,GAAiBztL,UAAY,EACzC5sC,EAAQq6N,GAAiBjtL,KAAKl4B,GAE3BlV,GAAO,CACV,IAAIlI,EAAQkI,EAAM,GAMlB,GAJI4sC,EAAY5sC,EAAMiH,OAClB03N,GAAWl9I,EAAOvsE,EAAQ9b,UAAUwzC,EAAW5sC,EAAMiH,QAGrDnP,EAAM6G,WAAW,MAAQ7G,EAAM6G,WAAW,KAC1CggO,GAAWl9I,EAAO3pF,OACf,CACH,IAAImgO,EAAYngO,EAAM,GAClBjM,EAAOuuO,GAAenC,GACtB3lN,EAAO,CACPzmB,KAAMA,EACNqpB,QAASpd,GAGA,SAATjM,IACAymB,EAAKsQ,OAASi8M,GAAS/mO,IAG3B,IAAIob,EAAQsrN,GAAW3yO,GAEvB,GAAIqnB,EAAO,CACP,IAAIurN,EAAYr2L,GAASl1B,EAAMurN,WAAavrN,EAAMurN,UAAYvrN,EAAMurN,UAAUxG,GAC1E6G,EAAgBhnO,EAAM5D,OAEtB4qO,GAAiBL,IACjBnsN,EAAKY,MAAQ,CACTrnB,KAAMqnB,EAAMrnB,KACZujO,SAAUwK,GAAakF,GACvBzP,WAAYn8M,EAAMm8M,aAAe4I,GAG7C,CAEAx2I,EAAMpuE,KAAKf,EACf,CAEAs6B,EAAYytL,GAAiBztL,UAC7B5sC,EAAQq6N,GAAiBjtL,KAAKl4B,EAClC,CAMA,OAJI03B,EAAY13B,EAAQhhB,QACpByqO,GAAWl9I,EAAOvsE,EAAQ9b,UAAUwzC,IAGjC60C,CACX,CC9GA,IAAIziE,GAAe,sBAEZ,SAASuoB,GAASzvC,EAAO5C,EAAQ21N,GACpC,GAAI31N,EAAQ,CACR,GAAIyzC,GAAO7wC,GACP,OAAOmd,GAAWnd,EAAO5C,EAAQ21N,GAC9B,GAAIziL,GAAStwC,GAChB,OAAOu+N,GAAav+N,EAAO5C,EAAQ21N,EAE3C,CAEA,YAAiBtlO,IAAVuS,GAAiC,OAAVA,EAAiBA,EAAQi0N,CAC3D,CAEO,SAAS72N,GAAOA,EAAQvO,EAAQkkO,GACnC,OAAO31N,EAAOqK,QAAQyf,IAAc,SAAShf,EAAOiH,EAAO83N,GAGvD,OAAOx3L,GAFK5gD,EAAOq5F,SAAS/4E,EAAO,KAEZ83N,EAAoBA,EAAkB3lO,UAAU,GAAK2yN,EAAOlB,EACvF,GACJ,wFC1BA,IAAioCmU,EAAUC,EAAvoCC,EAAQ,CAAC,WAAW,WAAW,eAAe,WAAW,eAAe,eAAe,WAAW,eAAe,WAAW,+BAA+B,WAAW,mBAAmB,eAAe,2CAA2C,eAAe,WAAW,WAAW,eAAe,WAAW,mBAAmB,WAAW,WAAW,WAAW,OAAO,WAAW,mCAAmC,WAAW,WAAW,mBAAmB,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,WAAW,mBAAmB,WAAW,WAAW,mBAAmB,+DAA+D,uBAAuB,2BAA2B,WAAW,eAAe,WAAW,mCAAmC,WAAW,WAAW,eAAe,2CAA2C,WAAW,WAAW,OAAO,OAAO,WAAW,+CAA+C,WAAW,eAAe,WAAW,WAAW,eAAe,WAAW,eAAe,2BAA2B,WAAW,mBAAmB,WAAW,WAAW,WAAW,YAAsBF,EAA8IE,EAApID,EAA4I,IAAnH,SAASE,GAAW,OAAQA,GAAWH,EAAgB,KAAEA,EAAiB,QAAM,CAAEI,GAAYH,GAA6B,IAAII,EAAQ,SAASL,EAAUC,GAAmC,IAAIG,EAAUF,EAAtCF,GAAoB,GAAqC,QAAuBz5O,IAApB85O,EAAgB,OAAc,CAA4fA,EAAgB,OAAE,SAASC,GAA+D,IAApD,IAAIC,EAAvhB,SAASC,GAA6J,IAAnJ,IAAyKC,EAAUC,EAAjGC,EAAU3mN,OAAOwmN,GAAmB,QAAE,MAAM,IAAQI,EAAU,GAAWC,EAAU,EAAwBC,EAAU,EAAIJ,EAAUC,EAAkB,OAAEG,MAAcJ,IAAYD,EAAUI,EAAU,EAAc,GAAVJ,EAAeC,EAAUA,EAAUG,IAAY,GAAKD,GAAW5mN,OAAqB,aAAE,IAAKymN,KAAa,EAAII,EAAU,IAAM,EAAKH,EAA9Y,oEAA2a,QAAEA,GAAY,OAAOE,CAAU,CAAsDT,CAAUG,GAAeS,EAAU,GAAWC,EAAU,EAAIC,EAAUV,EAAkB,OAAES,EAAUC,EAAUD,IAAaD,GAAW,KAAK,KAAKR,EAAsB,WAAES,GAAqB,SAAE,KAAc,OAAG,GAAM,OAAOnmL,mBAAmBkmL,EAAW,EAAEV,EAAgB,OAAE,CAAC,EAAEA,EAAgB,QAAE,CAAK,CAAC,IAAIa,EAAUb,EAAgB,OAAEL,GAAW,YAAmBz5O,IAAZ26O,GAAuBd,EAAUC,EAAgB,OAAED,GAAWC,EAAgB,OAAEL,GAAWI,GAAWA,EAAUc,EAAUd,CAAU,EAAMx1L,EAAQ,CAACh/C,KAAK,+XAAua88C,EAAM,IAAI65I,IAAM,SAAS4+C,EAAaC,GAAW,CAAC,SAAS73M,EAAgB83M,GAAW,GAAG34L,EAAM23L,EAAQ,QAAQgB,EAAUhB,EAAQ,SAAS,CAAC,GAAGA,EAAQ,UAAUA,EAAQ,QAAQ,OAAO33L,EAAM23L,EAAQ,SAASgB,EAAUhB,EAAQ,QAAqF,CAAC,IAAqYiB,EAAjYC,EAAUF,EAAUhB,EAAQ,SAAS,KAAQgB,EAAUhB,EAAQ,SAAS,GAAGmB,EAAUH,EAAUhB,EAAQ,QAAQkB,EAAUE,EAAU1vL,KAAKsuL,EAAQ,SAASz1L,EAAQy1L,EAAQ,UAAUqB,GAAWD,EAAUpB,EAAQ,WAAWoB,EAAUpB,EAAQ,SAASsB,EAAUF,EAAUpB,EAAQ,iBAAiBuB,iBAAiBvB,EAAQ,QAAQwB,EAA45J,SAAsBC,EAAUC,GAAW,IAAIC,EAAUF,EAAUzB,EAAQ,SAAS,IAAI2B,IAAYA,EAAU3B,EAAQ,SAAS,CAAC,GAAGA,EAAQ,UAAUA,EAAQ,OAA+D,OAAO,IAAK,CAAC,IAAI4B,EAAU,IAAI/tC,IAAI6tC,GAAW,OAAOC,EAAU3B,EAAQ,UAAS,SAAS6B,EAAUC,GAAW,GAAG9B,EAAQ,SAASA,EAAQ,QAAiD,OAAO8B,EAAU9B,EAAQ,SAAS6B,EAAU7B,EAAQ,QAAS,IAAGA,EAAQ,UAAS,SAAS+B,GAAW,GAAG/B,EAAQ,UAAUA,EAAQ,QAAQ,OAAO4B,EAAU5B,EAAQ,QAAQ+B,EAAU/B,EAAQ,SAAmG,GAAG,CAA5kLgC,CAAaZ,EAAUJ,EAAUhB,EAAQ,UAAoB,GAAGqB,GAAWC,EAAW,GAAGtB,EAAQ,UAAUA,EAAQ,OAAO,CAA6D,MAAMiB,EAAU,CAAC,KAAO,EAAI,YAAcE,EAAU,QAAUH,EAAUhB,EAAQ,cAAe,GAAGA,EAAQ,UAAUA,EAAQ,QAAS,GAAIwB,GAA8V,IAAgC,IAA7BA,EAAUxB,EAAQ,UAAiBiC,GAA0+J,IAAIhyO,MAAO+vO,EAAQ,WAAW,IAA7+JwB,EAAUxB,EAAQ,UAAW,GAAGA,EAAQ,UAAUA,EAAQ,QAAQ,CAAmY,MAAMiB,EAAU,CAAC,KAAO,EAAI,YAAcE,EAAU,WAAav8J,EAAU48J,EAAUxB,EAAQ,UAAU,QAAUgB,EAAUhB,EAAQ,cAAe,GAAGiC,EAAUjB,EAAUhB,EAAQ,QAAQwB,EAAUxB,EAAQ,UAAW,GAAGA,EAAQ,UAAUA,EAAQ,OAAO,CAA6D,MAAMiB,EAAU,CAAC,KAAO,EAAI,YAAcE,EAAU,YAAcv8J,EAAUo8J,EAAUhB,EAAQ,SAAS,WAAap7J,EAAU48J,EAAUxB,EAAQ,UAAU,QAAUgB,EAAUhB,EAAQ,cAAt0C,GAAGA,EAAQ,UAAUA,EAAQ,QAAQiB,EAAU,CAAC,KAAO,EAAI,YAAcE,EAAU,QAAUH,EAAUhB,EAAQ,aAAa,CAAgN,KAA2gC,CAAoF,CAAE,GAAGiB,UAAkBp5O,UAAUm4O,EAAQ,QAAS,GAAGA,EAAQ,UAAUA,EAAQ,QAAQ,CAAC,IAAIkC,EAAUlC,EAAQ,OAAOA,EAAQ,SAASgB,EAAUhB,EAAQ,UAAUmC,SAAiBt6O,QAAQm4O,EAAQ,WAAWA,EAAQ,QAAQ,GAAGmC,EAAW,GAAGnC,EAAQ,UAAUA,EAAQ,QAAQn4O,QAAQm4O,EAAQ,SAASkC,OAAe,CAA6D,MAAO,GAAGlC,EAAQ,UAAUA,EAAQ,QAAQn4O,QAAQm4O,EAAQ,SAASkC,OAAe,CAAuM,CAAmD,GAAjDr6O,QAAQm4O,EAAQ,SAA6gB,SAAqBoC,GAAW,IAAIC,EAAUrC,EAAQ,OAAOA,EAAQ,SAASoC,EAAUpC,EAAQ,SAAS,MAAQ,GAAgC,IAA7BoC,EAAUpC,EAAQ,SAAgB,GAAGA,EAAQ,SAASA,EAAQ,OAAO,CAA0G,MAAMqC,GAAWrC,EAAQ,QAAQA,EAAQ,SAASoC,EAAUpC,EAAQ,SAASA,EAAQ,UAAUA,EAAQ,SAASA,EAAQ,SAASoC,EAAUpC,EAAQ,QAAQA,EAAQ,UAAU,OAAU,GAAgC,IAA7BoC,EAAUpC,EAAQ,SAAgB,GAAGA,EAAQ,UAAUA,EAAQ,QAAQqC,GAAWrC,EAAQ,QAAQA,EAAQ,SAASoC,EAAUpC,EAAQ,SAASA,EAAQ,UAAU,WAAa,CAA6lB,MAAO,GAAgC,IAA7BoC,EAAUpC,EAAQ,SAAgB,GAAGA,EAAQ,UAAUA,EAAQ,QAAQ,CAA0G,MAAMqC,GAAWrC,EAAQ,aAAc,GAAgC,IAA7BoC,EAAUpC,EAAQ,SAAgB,GAAGA,EAAQ,UAAUA,EAAQ,QAAQ,CAA8U,MAAMqC,GAAWrC,EAAQ,OAAU,OAAOqC,EAAWrC,EAAQ,QAAQA,EAAQ,SAASoC,EAAUpC,EAAQ,QAAQA,EAAQ,OAAkB,CAA/+EsC,CAAYrB,IAAekB,EAAW,GAAGnC,EAAQ,UAAUA,EAAQ,QAAQ,CAAoD,MAAMn4O,QAAQm4O,EAAQ,UAAY,KAAK,CAAsP,CAAE,IAAIuC,GAAWtB,EAAU,OAAO54L,EAAM23L,EAAQ,QAAQgB,EAAUhB,EAAQ,QAAQuC,GAAWA,CAAU,CAAwqF,SAAS39J,EAAU49J,GAAW,OAAO,IAAIvyO,KAAe,IAAVuyO,EAAiB,CAAuE,SAASP,EAAUQ,EAAUC,GAAW,IAAIC,EAAU/9J,EAAU89J,GAAuK,OAAOD,EAAzJ,IAAIxyO,KAAK0yO,EAAU3C,EAAQ,WAAW2C,EAAU3C,EAAQ,WAAW2C,EAAU3C,EAAQ,WAAW,GAAyBA,EAAQ,WAAW,GAAiC,4FCA57S,SAAS4C,IAYtB,OAXAA,EAAWjtO,OAAO2mB,OAAS3mB,OAAO2mB,OAAOuF,OAAS,SAAUzU,GAC1D,IAAK,IAAIla,EAAI,EAAGA,EAAIwsB,UAAU7qB,OAAQ3B,IAAK,CACzC,IAAIm8C,EAAS3vB,UAAUxsB,GACvB,IAAK,IAAIorB,KAAO+wB,EACV15C,OAAOud,UAAUsG,eAAeC,KAAK41B,EAAQ/wB,KAC/ClR,EAAOkR,GAAO+wB,EAAO/wB,GAG3B,CACA,OAAOlR,CACT,EACOw1N,EAASzvN,MAAMH,KAAM0M,UAC9B,CCbe,SAASmjN,EAA8BxzL,EAAQm4G,GAC5D,GAAc,MAAVn4G,EAAgB,MAAO,CAAC,EAC5B,IAEI/wB,EAAKprB,EAFLka,EAAS,CAAC,EACV01N,EAAantO,OAAOC,KAAKy5C,GAE7B,IAAKn8C,EAAI,EAAGA,EAAI4vO,EAAWjuO,OAAQ3B,IACjCorB,EAAMwkN,EAAW5vO,GACbs0J,EAASv5H,QAAQ3P,IAAQ,IAC7BlR,EAAOkR,GAAO+wB,EAAO/wB,IAEvB,OAAOlR,CACT,CCXe,SAAS21N,EAAgBC,EAAGzpN,GAKzC,OAJAwpN,EAAkBptO,OAAO0jB,eAAiB1jB,OAAO0jB,eAAewI,OAAS,SAAyBmhN,EAAGzpN,GAEnG,OADAypN,EAAE1pN,UAAYC,EACPypN,CACT,EACOD,EAAgBC,EAAGzpN,EAC5B,CCLe,SAAS0pN,EAAeC,EAAUC,GAC/CD,EAAShwN,UAAYvd,OAAOkkB,OAAOspN,EAAWjwN,WAC9CgwN,EAAShwN,UAAU0G,YAAcspN,EACjC,EAAeA,EAAUC,EAC3B,CCLA,SAASC,EAAiBC,EAAWC,GACnC,OAAOD,EAAUnjO,QAAQ,IAAI0f,OAAO,UAAY0jN,EAAgB,YAAa,KAAM,MAAMpjO,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,GACtI,eCFA,SACY,ECAZ,EAAe3Z,EAAAA,cAAoB,MCO5B,IAAIg9O,EAAY,YACZC,EAAS,SACTC,EAAW,WACXC,EAAU,UACVC,EAAU,UA6FjBC,EAA0B,SAAUC,GAGtC,SAASD,EAAW1yO,EAAOq5C,GACzB,IAAI70B,EAEJA,EAAQmuN,EAAiBpqN,KAAKzG,KAAM9hB,EAAOq5C,IAAYv3B,KACvD,IAGI8wN,EADAC,EAFcx5L,MAEuBy5L,WAAa9yO,EAAM20B,MAAQ30B,EAAM6yO,OAuB1E,OArBAruN,EAAMuuN,aAAe,KAEjB/yO,EAAMgzO,GACJH,GACFD,EAAgBN,EAChB9tN,EAAMuuN,aAAeR,GAErBK,EAAgBJ,EAIhBI,EADE5yO,EAAMizO,eAAiBjzO,EAAMkzO,aACfb,EAEAC,EAIpB9tN,EAAM3vB,MAAQ,CACZ6T,OAAQkqO,GAEVpuN,EAAM2uN,aAAe,KACd3uN,CACT,CAhCAutN,EAAeW,EAAYC,GAkC3BD,EAAWU,yBAA2B,SAAkC5+O,EAAMqzM,GAG5E,OAFarzM,EAAKw+O,IAEJnrC,EAAUn/L,SAAW2pO,EAC1B,CACL3pO,OAAQ4pO,GAIL,IACT,EAkBA,IAAIe,EAASX,EAAW1wN,UA0OxB,OAxOAqxN,EAAOzmN,kBAAoB,WACzB9K,KAAKwxN,cAAa,EAAMxxN,KAAKixN,aAC/B,EAEAM,EAAOvmN,mBAAqB,SAA4BukB,GACtD,IAAIkiM,EAAa,KAEjB,GAAIliM,IAAcvvB,KAAK9hB,MAAO,CAC5B,IAAI0I,EAASoZ,KAAKjtB,MAAM6T,OAEpBoZ,KAAK9hB,MAAMgzO,GACTtqO,IAAW6pO,GAAY7pO,IAAW8pO,IACpCe,EAAahB,GAGX7pO,IAAW6pO,GAAY7pO,IAAW8pO,IACpCe,EAAad,EAGnB,CAEA3wN,KAAKwxN,cAAa,EAAOC,EAC3B,EAEAF,EAAOxiN,qBAAuB,WAC5B/O,KAAK0xN,oBACP,EAEAH,EAAOI,YAAc,WACnB,IACI7yB,EAAMjsL,EAAOk+M,EADb5tL,EAAUnjC,KAAK9hB,MAAMilD,QAWzB,OATA27J,EAAOjsL,EAAQk+M,EAAS5tL,EAET,MAAXA,GAAsC,kBAAZA,IAC5B27J,EAAO37J,EAAQ27J,KACfjsL,EAAQswB,EAAQtwB,MAEhBk+M,OAA4B79O,IAAnBiwD,EAAQ4tL,OAAuB5tL,EAAQ4tL,OAASl+M,GAGpD,CACLisL,KAAMA,EACNjsL,MAAOA,EACPk+M,OAAQA,EAEZ,EAEAQ,EAAOC,aAAe,SAAsBI,EAAUH,QACnC,IAAbG,IACFA,GAAW,GAGM,OAAfH,GAEFzxN,KAAK0xN,qBAEDD,IAAehB,EACjBzwN,KAAK6xN,aAAaD,GAElB5xN,KAAK8xN,eAEE9xN,KAAK9hB,MAAMizO,eAAiBnxN,KAAKjtB,MAAM6T,SAAW4pO,GAC3DxwN,KAAKuO,SAAS,CACZ3nB,OAAQ2pO,GAGd,EAEAgB,EAAOM,aAAe,SAAsBD,GAC1C,IAAIG,EAAS/xN,KAET6S,EAAQ7S,KAAK9hB,MAAM20B,MACnBm/M,EAAYhyN,KAAKu3B,QAAUv3B,KAAKu3B,QAAQy5L,WAAaY,EAErDrlO,EAAQyT,KAAK9hB,MAAM+zO,QAAU,CAACD,GAAa,CAACE,EAAAA,YAAqBlyN,MAAOgyN,GACxEG,EAAY5lO,EAAM,GAClB6lO,EAAiB7lO,EAAM,GAEvB8lO,EAAWryN,KAAK2xN,cAChBW,EAAeN,EAAYK,EAAStB,OAASsB,EAASx/M,OAGrD++M,IAAa/+M,GAAS6pB,EACzB18B,KAAKuyN,aAAa,CAChB3rO,OAAQ8pO,IACP,WACDqB,EAAO7zO,MAAMs0O,UAAUL,EACzB,KAIFnyN,KAAK9hB,MAAMu0O,QAAQN,EAAWC,GAC9BpyN,KAAKuyN,aAAa,CAChB3rO,OAAQ6pO,IACP,WACDsB,EAAO7zO,MAAMw0O,WAAWP,EAAWC,GAEnCL,EAAOY,gBAAgBL,GAAc,WACnCP,EAAOQ,aAAa,CAClB3rO,OAAQ8pO,IACP,WACDqB,EAAO7zO,MAAMs0O,UAAUL,EAAWC,EACpC,GACF,GACF,IACF,EAEAb,EAAOO,YAAc,WACnB,IAAIc,EAAS5yN,KAET8+L,EAAO9+L,KAAK9hB,MAAM4gN,KAClBuzB,EAAWryN,KAAK2xN,cAChBQ,EAAYnyN,KAAK9hB,MAAM+zO,aAAU/+O,EAAYg/O,EAAAA,YAAqBlyN,MAEjE8+L,IAAQpiK,GASb18B,KAAK9hB,MAAM20O,OAAOV,GAClBnyN,KAAKuyN,aAAa,CAChB3rO,OAAQ+pO,IACP,WACDiC,EAAO10O,MAAM40O,UAAUX,GAEvBS,EAAOD,gBAAgBN,EAASvzB,MAAM,WACpC8zB,EAAOL,aAAa,CAClB3rO,OAAQ4pO,IACP,WACDoC,EAAO10O,MAAM60O,SAASZ,EACxB,GACF,GACF,KArBEnyN,KAAKuyN,aAAa,CAChB3rO,OAAQ4pO,IACP,WACDoC,EAAO10O,MAAM60O,SAASZ,EACxB,GAkBJ,EAEAZ,EAAOG,mBAAqB,WACA,OAAtB1xN,KAAKqxN,eACPrxN,KAAKqxN,aAAa5/M,SAClBzR,KAAKqxN,aAAe,KAExB,EAEAE,EAAOgB,aAAe,SAAsBt2M,EAAW45B,GAIrDA,EAAW71C,KAAKgzN,gBAAgBn9K,GAChC71C,KAAKuO,SAAS0N,EAAW45B,EAC3B,EAEA07K,EAAOyB,gBAAkB,SAAyBn9K,GAChD,IAAIo9K,EAASjzN,KAET7kB,GAAS,EAcb,OAZA6kB,KAAKqxN,aAAe,SAAUn9O,GACxBiH,IACFA,GAAS,EACT83O,EAAO5B,aAAe,KACtBx7K,EAAS3hE,GAEb,EAEA8rB,KAAKqxN,aAAa5/M,OAAS,WACzBt2B,GAAS,CACX,EAEO6kB,KAAKqxN,YACd,EAEAE,EAAOoB,gBAAkB,SAAyBxvL,EAAS01F,GACzD74H,KAAKgzN,gBAAgBn6F,GACrB,IAAIh5C,EAAO7/E,KAAK9hB,MAAM+zO,QAAUjyN,KAAK9hB,MAAM+zO,QAAQ59O,QAAU69O,EAAAA,YAAqBlyN,MAC9EkzN,EAA0C,MAAX/vL,IAAoBnjC,KAAK9hB,MAAMi1O,eAElE,GAAKtzI,IAAQqzI,EAAb,CAKA,GAAIlzN,KAAK9hB,MAAMi1O,eAAgB,CAC7B,IAAI5hC,EAAQvxL,KAAK9hB,MAAM+zO,QAAU,CAACjyN,KAAKqxN,cAAgB,CAACxxI,EAAM7/E,KAAKqxN,cAC/Dc,EAAY5gC,EAAM,GAClB6hC,EAAoB7hC,EAAM,GAE9BvxL,KAAK9hB,MAAMi1O,eAAehB,EAAWiB,EACvC,CAEe,MAAXjwL,GACFnzB,WAAWhQ,KAAKqxN,aAAcluL,EAXhC,MAFEnzB,WAAWhQ,KAAKqxN,aAAc,EAelC,EAEAE,EAAOx8O,OAAS,WACd,IAAI6R,EAASoZ,KAAKjtB,MAAM6T,OAExB,GAAIA,IAAW2pO,EACb,OAAO,KAGT,IAAI8C,EAAcrzN,KAAK9hB,MACnBzK,EAAW4/O,EAAY5/O,SAgBvB6/O,GAfMD,EAAYnC,GACFmC,EAAYjC,aACXiC,EAAYlC,cACnBkC,EAAYtC,OACbsC,EAAYxgN,MACbwgN,EAAYv0B,KACTu0B,EAAYlwL,QACLkwL,EAAYF,eACnBE,EAAYZ,QACTY,EAAYX,WACbW,EAAYb,UACfa,EAAYR,OACTQ,EAAYP,UACbO,EAAYN,SACbM,EAAYpB,QACVpC,EAA8BwD,EAAa,CAAC,WAAY,KAAM,eAAgB,gBAAiB,SAAU,QAAS,OAAQ,UAAW,iBAAkB,UAAW,aAAc,YAAa,SAAU,YAAa,WAAY,aAEjP,OAGE9/O,EAAAA,cAAoBggP,EAAuBC,SAAU,CACnD/tO,MAAO,MACc,oBAAbhS,EAA0BA,EAASmT,EAAQ0sO,GAAc//O,EAAAA,aAAmBA,EAAAA,SAAe6mL,KAAK3mL,GAAW6/O,GAEzH,EAEO1C,CACT,CA1S8B,CA0S5Br9O,EAAAA,WA+LF,SAAS+2B,IAAQ,CA7LjBsmN,EAAW6C,YAAcF,EACzB3C,EAAW5kN,UA0LP,CAAC,EAIL4kN,EAAWvnN,aAAe,CACxB6nN,IAAI,EACJE,cAAc,EACdD,eAAe,EACfJ,QAAQ,EACRl+M,OAAO,EACPisL,MAAM,EACN2zB,QAASnoN,EACTooN,WAAYpoN,EACZkoN,UAAWloN,EACXuoN,OAAQvoN,EACRwoN,UAAWxoN,EACXyoN,SAAUzoN,GAEZsmN,EAAWL,UAAYA,EACvBK,EAAWJ,OAASA,EACpBI,EAAWH,SAAWA,EACtBG,EAAWF,QAAUA,EACrBE,EAAWD,QAAUA,EACrB,UC7lBA,IAMIvuI,EAAc,SAAqBvC,EAAMj/C,GAC3C,OAAOi/C,GAAQj/C,GAAWA,EAAQ53C,MAAM,KAAK2F,SAAQ,SAAU5B,GAC7D,OJPyClZ,EIObkZ,QJPIsb,EIOVw3E,GJNZtiE,UACVlV,EAAQkV,UAAUC,OAAO3pC,GACa,kBAAtBw0B,EAAQx0B,UACxBw0B,EAAQx0B,UAAYu8O,EAAiB/nN,EAAQx0B,UAAWA,GAExDw0B,EAAQ6/B,aAAa,QAASkoL,EAAiB/nN,EAAQx0B,WAAaw0B,EAAQx0B,UAAU6/O,SAAW,GAAI7/O,KAN1F,IAAqBw0B,EAASx0B,CIQ3C,GACF,EAwEI8/O,EAA6B,SAAU9C,GAGzC,SAAS8C,IAGP,IAFA,IAAIjxN,EAEKgjC,EAAOh5B,UAAU7qB,OAAQqmB,EAAO,IAAIlQ,MAAM0tC,GAAOzO,EAAO,EAAGA,EAAOyO,EAAMzO,IAC/E/uB,EAAK+uB,GAAQvqB,UAAUuqB,GAgHzB,OA7GAv0B,EAAQmuN,EAAiBpqN,KAAKtG,MAAM0wN,EAAkB,CAAC7wN,MAAM9b,OAAOgkB,KAAUlI,MACxE4zN,eAAiB,CACrB7C,OAAQ,CAAC,EACTl+M,MAAO,CAAC,EACRisL,KAAM,CAAC,GAGTp8L,EAAM+vN,QAAU,SAAUN,EAAWC,GACnC,IAAIyB,EAAwBnxN,EAAMoxN,iBAAiB3B,EAAWC,GAC1DvyI,EAAOg0I,EAAsB,GAC7B7B,EAAY6B,EAAsB,GAEtCnxN,EAAMqxN,cAAcl0I,EAAM,QAE1Bn9E,EAAMsxN,SAASn0I,EAAMmyI,EAAY,SAAW,QAAS,QAEjDtvN,EAAMxkB,MAAMu0O,SACd/vN,EAAMxkB,MAAMu0O,QAAQN,EAAWC,EAEnC,EAEA1vN,EAAMgwN,WAAa,SAAUP,EAAWC,GACtC,IAAI6B,EAAyBvxN,EAAMoxN,iBAAiB3B,EAAWC,GAC3DvyI,EAAOo0I,EAAuB,GAG9Bz6O,EAFYy6O,EAAuB,GAEhB,SAAW,QAElCvxN,EAAMsxN,SAASn0I,EAAMrmG,EAAM,UAEvBkpB,EAAMxkB,MAAMw0O,YACdhwN,EAAMxkB,MAAMw0O,WAAWP,EAAWC,EAEtC,EAEA1vN,EAAM8vN,UAAY,SAAUL,EAAWC,GACrC,IAAI8B,EAAyBxxN,EAAMoxN,iBAAiB3B,EAAWC,GAC3DvyI,EAAOq0I,EAAuB,GAG9B16O,EAFY06O,EAAuB,GAEhB,SAAW,QAElCxxN,EAAMqxN,cAAcl0I,EAAMrmG,GAE1BkpB,EAAMsxN,SAASn0I,EAAMrmG,EAAM,QAEvBkpB,EAAMxkB,MAAMs0O,WACd9vN,EAAMxkB,MAAMs0O,UAAUL,EAAWC,EAErC,EAEA1vN,EAAMmwN,OAAS,SAAUV,GACvB,IACItyI,EADyBn9E,EAAMoxN,iBAAiB3B,GAClB,GAElCzvN,EAAMqxN,cAAcl0I,EAAM,UAE1Bn9E,EAAMqxN,cAAcl0I,EAAM,SAE1Bn9E,EAAMsxN,SAASn0I,EAAM,OAAQ,QAEzBn9E,EAAMxkB,MAAM20O,QACdnwN,EAAMxkB,MAAM20O,OAAOV,EAEvB,EAEAzvN,EAAMowN,UAAY,SAAUX,GAC1B,IACItyI,EADyBn9E,EAAMoxN,iBAAiB3B,GAClB,GAElCzvN,EAAMsxN,SAASn0I,EAAM,OAAQ,UAEzBn9E,EAAMxkB,MAAM40O,WACdpwN,EAAMxkB,MAAM40O,UAAUX,EAE1B,EAEAzvN,EAAMqwN,SAAW,SAAUZ,GACzB,IACItyI,EADyBn9E,EAAMoxN,iBAAiB3B,GAClB,GAElCzvN,EAAMqxN,cAAcl0I,EAAM,QAE1Bn9E,EAAMsxN,SAASn0I,EAAM,OAAQ,QAEzBn9E,EAAMxkB,MAAM60O,UACdrwN,EAAMxkB,MAAM60O,SAASZ,EAEzB,EAEAzvN,EAAMoxN,iBAAmB,SAAU3B,EAAWC,GAC5C,OAAO1vN,EAAMxkB,MAAM+zO,QAAU,CAACvvN,EAAMxkB,MAAM+zO,QAAQ59O,QAAS89O,GACzD,CAACA,EAAWC,EAChB,EAEA1vN,EAAMyxN,cAAgB,SAAU36O,GAC9B,IAAI41B,EAAa1M,EAAMxkB,MAAMkxB,WACzBglN,EAA2C,kBAAfhlN,EAE5BilN,EAAgBD,EAAqB,IAD5BA,GAAsBhlN,EAAaA,EAAa,IAAM,IACZ51B,EAAO41B,EAAW51B,GAGzE,MAAO,CACL66O,cAAeA,EACfC,gBAJoBF,EAAqBC,EAAgB,UAAYjlN,EAAW51B,EAAO,UAKvF+6O,cAJkBH,EAAqBC,EAAgB,QAAUjlN,EAAW51B,EAAO,QAMvF,EAEOkpB,CACT,CAvHAutN,EAAe0D,EAAe9C,GAyH9B,IAAIU,EAASoC,EAAczzN,UA6D3B,OA3DAqxN,EAAOyC,SAAW,SAAkBn0I,EAAMrmG,EAAMg7O,GAC9C,IAAI3gP,EAAYmsB,KAAKm0N,cAAc36O,GAAMg7O,EAAQ,aAG7CD,EADsBv0N,KAAKm0N,cAAc,SACLI,cAE3B,WAAT/6O,GAA+B,SAAVg7O,GAAoBD,IAC3C1gP,GAAa,IAAM0gP,GAKP,WAAVC,GAEF30I,GAAQA,EAAKjgG,UAGX/L,IACFmsB,KAAK4zN,eAAep6O,GAAMg7O,GAAS3gP,EAhOzB,SAAkBgsG,EAAMj/C,GAC/Bi/C,GAAQj/C,GAAWA,EAAQ53C,MAAM,KAAK2F,SAAQ,SAAU5B,GAC7D,OCJsClZ,EDIbkZ,QCJIsb,EDIVw3E,GCHTtiE,UAAWlV,EAAQkV,UAAUE,IAAI5pC,GCHhC,SAAkBw0B,EAASx0B,GACxC,OAAIw0B,EAAQkV,YAAoB1pC,GAAaw0B,EAAQkV,UAAUg7C,SAAS1kF,IACkC,KAAlG,KAAOw0B,EAAQx0B,UAAU6/O,SAAWrrN,EAAQx0B,WAAa,KAAKonC,QAAQ,IAAMpnC,EAAY,IAClG,CDAoE4gP,CAASpsN,EAASx0B,KAA6C,kBAAtBw0B,EAAQx0B,UAAwBw0B,EAAQx0B,UAAYw0B,EAAQx0B,UAAY,IAAMA,EAAew0B,EAAQ6/B,aAAa,SAAU7/B,EAAQx0B,WAAaw0B,EAAQx0B,UAAU6/O,SAAW,IAAM,IAAM7/O,KADxR,IAAkBw0B,EAASx0B,CDKxC,GACF,CA8NM6gP,CAAU70I,EAAMhsG,GAEpB,EAEA09O,EAAOwC,cAAgB,SAAuBl0I,EAAMrmG,GAClD,IAAIm7O,EAAwB30N,KAAK4zN,eAAep6O,GAC5C66O,EAAgBM,EAAsBvmH,KACtCkmH,EAAkBK,EAAsBx5O,OACxCo5O,EAAgBI,EAAsBh6L,KAC1C36B,KAAK4zN,eAAep6O,GAAQ,CAAC,EAEzB66O,GACFjyI,EAAYvC,EAAMw0I,GAGhBC,GACFlyI,EAAYvC,EAAMy0I,GAGhBC,GACFnyI,EAAYvC,EAAM00I,EAEtB,EAEAhD,EAAOx8O,OAAS,WACd,IAAIs+O,EAAcrzN,KAAK9hB,MAEnBA,GADIm1O,EAAYjkN,WACRygN,EAA8BwD,EAAa,CAAC,gBAExD,OAAoB9/O,EAAAA,cAAoBq9O,EAAYhB,EAAS,CAAC,EAAG1xO,EAAO,CACtEu0O,QAASzyN,KAAKyyN,QACdD,UAAWxyN,KAAKwyN,UAChBE,WAAY1yN,KAAK0yN,WACjBG,OAAQ7yN,KAAK6yN,OACbC,UAAW9yN,KAAK8yN,UAChBC,SAAU/yN,KAAK+yN,WAEnB,EAEOY,CACT,CAxLiC,CAwL/BpgP,EAAAA,WAEFogP,EAActqN,aAAe,CAC3B+F,WAAY,IAEdukN,EAAc3nN,UAiIT,CAAC,EACN,uBG3ZI/F,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAMI0hG,EAAShgC,EAAAA,EAAKggC,OACds2I,EAAgC,SAAUptN,GAE1C,SAASotN,IACL,IAAIlyN,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAEhE,OADA0C,EAAMmyN,WAAathP,EAAAA,YACZmvB,CACX,CA2HA,OAhIAuD,EAAU2uN,EAAgBptN,GAM1B7kB,OAAO6nB,eAAeoqN,EAAe10N,UAAW,UAAW,CAIvDuK,IAAK,WACD,OAAOzK,KAAK60N,WAAWxgP,OAC3B,EACAq2B,YAAY,EACZC,cAAc,IAKlBiqN,EAAe10N,UAAUnrB,OAAS,WAC9B,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOzK,EAAWgE,EAAGhE,SAAUC,EAAQ+D,EAAG/D,MAAOq9O,EAASt5O,EAAGs5O,OAAQl+M,EAAQp7B,EAAGo7B,MAAOisL,EAAOrnN,EAAGqnN,KAAMg2B,EAAiBr9O,EAAGq9O,eAAgBC,EAA0Bt9O,EAAGs9O,wBAAyBC,EAAyBv9O,EAAGu9O,uBAAwBnhP,EAAY4D,EAAG5D,UAAW4+O,EAAUh7O,EAAGg7O,QAASC,EAAaj7O,EAAGi7O,WAAYF,EAAY/6O,EAAG+6O,UAAWK,EAASp7O,EAAGo7O,OAAQC,EAAYr7O,EAAGq7O,UAAWC,EAAWt7O,EAAGs7O,SAAUkC,EAAgBx9O,EAAGw9O,cAAe7D,EAAe35O,EAAG25O,aAAcD,EAAgB15O,EAAG05O,cAAe+D,EAAyBz9O,EAAGy9O,uBAAwBC,EAAwB19O,EAAG09O,sBAAuBC,EAAwB39O,EAAG29O,sBAAuBC,EAAuB59O,EAAG49O,qBAAsB5oJ,EAAQjyE,EAAO/iB,EAAI,CAAC,WAAY,QAAS,SAAU,QAAS,OAAQ,iBAAkB,0BAA2B,yBAA0B,YAAa,UAAW,aAAc,YAAa,SAAU,YAAa,WAAY,gBAAiB,eAAgB,gBAAiB,yBAA0B,wBAAyB,wBAAyB,yBACtjC69O,GAAoClmN,EAAAA,EAAAA,GAAWv7B,EAAWyqG,EAAO,8BACjEi3I,EAAe1gO,EAAS,CAAE2gO,gBAAiB,OAAS9hP,GACpD+hP,EAAiB,CACjBC,SAAU7gO,EAAS,CAAE8gO,mBAAoB,GAAGzxO,OAAO6wO,EAAyB,OAASG,GACrFU,QAAS/gO,EAAS,CAAC,EAAGsgO,GACtBU,QAAShhO,EAAS,CAAE8gO,mBAAoB,GAAGzxO,OAAO8wO,EAAwB,OAASI,GACnFU,OAAQjhO,EAAS,CAAC,EAAGwgO,IAErBU,EAAkB,CAClB7E,GAAIlxN,KAAK9hB,MAAMgzO,GACfH,OAAQA,EACRl+M,MAAOA,EACPisL,KAAMA,EACNsyB,aAAcA,EACdD,cAAeA,EACfhuL,QAAS,CACLtwB,MAAOkiN,EACPj2B,KAAMk2B,GAEVvC,QAAU,WACFA,GACAA,EAAQhsN,UAAKvzB,EAAW,CAAE8iP,gBAAiBtzN,EAAM2F,QAASjO,OAAQsI,GAE1E,EACAgwN,WAAa,WACLA,GACAA,EAAWjsN,UAAKvzB,EAAW,CAAE8iP,gBAAiBtzN,EAAM2F,QAASjO,OAAQsI,GAE7E,EACA8vN,UAAY,WACJA,GACAA,EAAU/rN,UAAKvzB,EAAW,CAAE8iP,gBAAiBtzN,EAAM2F,QAASjO,OAAQsI,GAE5E,EACAmwN,OAAS,WACDA,GACAA,EAAOpsN,UAAKvzB,EAAW,CAAE8iP,gBAAiBtzN,EAAM2F,QAASjO,OAAQsI,GAEzE,EACAowN,UAAY,WACJA,GACAA,EAAUrsN,UAAKvzB,EAAW,CAAE8iP,gBAAiBtzN,EAAM2F,QAASjO,OAAQsI,GAE5E,EACAqwN,SAAW,WACHkC,GACAA,EAAcxuN,UAAKvzB,EAAW,CAAE8iP,gBAAiBtzN,EAAM2F,QAASjO,OAAQsI,IAExEqwN,GACAA,EAAStsN,UAAKvzB,EAAW,CAAE8iP,gBAAiBtzN,EAAM2F,QAASjO,OAAQsI,GAE3E,EACA0M,WAAY,CACR2hN,OAAQzyI,EAAO,GAAGp6F,OAAO4wO,EAAgB,aAAe,GAAG5wO,OAAO4wO,EAAgB,WAClFmB,aAAc33I,EAAO,GAAGp6F,OAAO4wO,EAAgB,oBAAsB,GAAG5wO,OAAO4wO,EAAgB,kBAC/FjiN,MAAOyrE,EAAO,GAAGp6F,OAAO4wO,EAAgB,YAAc,GAAG5wO,OAAO4wO,EAAgB,UAChFoB,YAAa53I,EAAO,GAAGp6F,OAAO4wO,EAAgB,mBAAqB,GAAG5wO,OAAO4wO,EAAgB,iBAC7Fh2B,KAAMxgH,EAAO,GAAGp6F,OAAO4wO,EAAgB,WAAa,GAAG5wO,OAAO4wO,EAAgB,SAC9EqB,WAAY73I,EAAO,GAAGp6F,OAAO4wO,EAAgB,kBAAoB,GAAG5wO,OAAO4wO,EAAgB,kBAGnG,OAAQvhP,EAAAA,cAAoBogP,EAAe9+N,EAAS,CAAC,EAAGkhO,EAAiBtpJ,EAAO,CAAEwlJ,QAASjyN,KAAK60N,cAAe,SAAUjuO,GACrH,OAAQrT,EAAAA,cAAoB,MAAO,CAAEG,MAAOmhB,EAASA,EAAS,CAAC,EAAG0gO,GAAeE,EAAe7uO,IAAU/S,UAAWyhP,EAAmCvhP,IAAK2uB,EAAMmyN,YAAcphP,EACrL,GACJ,EAIAmhP,EAAe5oN,UAAY,CACvBklN,GAAIjlN,EAAAA,KACJx4B,SAAUw4B,EAAAA,UAAoB,CAC1BA,EAAAA,QAAkBA,EAAAA,MAClBA,EAAAA,OAEJ6oN,eAAgB7oN,EAAAA,OAAiBoY,WACjCxwC,UAAWo4B,EAAAA,OACX8kN,OAAQ9kN,EAAAA,KACR4G,MAAO5G,EAAAA,KACP6yL,KAAM7yL,EAAAA,KACN8oN,wBAAyB9oN,EAAAA,OAAiBoY,WAC1C2wM,uBAAwB/oN,EAAAA,OAAiBoY,WACzC+sM,aAAcnlN,EAAAA,KACdklN,cAAellN,EAAAA,KACfipN,uBAAwBjpN,EAAAA,OACxBkpN,sBAAuBlpN,EAAAA,OACvBmpN,sBAAuBnpN,EAAAA,OACvBopN,qBAAsBppN,EAAAA,QAK1B2oN,EAAevrN,aAAe,CAC1B+nN,cAAc,EACdD,eAAe,EACfsB,QAASnoN,EAAAA,EACTooN,WAAYpoN,EAAAA,EACZkoN,UAAWloN,EAAAA,EACXuoN,OAAQvoN,EAAAA,EACRwoN,UAAWxoN,EAAAA,EACXyoN,SAAUzoN,EAAAA,EACV2qN,cAAe3qN,EAAAA,EACf4qN,uBAAwB,CAAC,EACzBC,sBAAuB,CAAC,EACxBC,sBAAuB,CAAC,EACxBC,qBAAsB,CAAC,GAEpBT,CACX,CAlIoC,CAkIlCrhP,EAAAA,WCrKK,SAAS6iP,EAAgB3iP,EAAU4iP,GACxC,IAII35O,EAASiG,OAAOkkB,OAAO,MAO3B,OANIpzB,GAAU6iP,EAAAA,SAASr2O,IAAIxM,GAAU,SAAUsZ,GAC7C,OAAOA,CACT,IAAG4B,SAAQ,SAAU6oG,GAEnB96G,EAAO86G,EAAMlsF,KATF,SAAgBksF,GAC3B,OAAO6+H,IAASE,EAAAA,EAAAA,gBAAe/+H,GAAS6+H,EAAM7+H,GAASA,CACzD,CAOsBn7B,CAAOm7B,EAC7B,IACO96G,CACT,CAiEA,SAAS85O,EAAQh/H,EAAOprF,EAAMluB,GAC5B,OAAsB,MAAfA,EAAMkuB,GAAgBluB,EAAMkuB,GAAQorF,EAAMt5G,MAAMkuB,EACzD,CAaO,SAASqqN,EAAoBz6M,EAAW06M,EAAkB3D,GAC/D,IAAI4D,EAAmBP,EAAgBp6M,EAAUvoC,UAC7CA,EA/DC,SAA4Bq6B,EAAMD,GAIvC,SAAS+oN,EAAetrN,GACtB,OAAOA,KAAOuC,EAAOA,EAAKvC,GAAOwC,EAAKxC,EACxC,CALAwC,EAAOA,GAAQ,CAAC,EAChBD,EAAOA,GAAQ,CAAC,EAQhB,IAcI3tB,EAdA22O,EAAkBl0O,OAAOkkB,OAAO,MAChCiwN,EAAc,GAElB,IAAK,IAAIC,KAAWjpN,EACdipN,KAAWlpN,EACTipN,EAAYj1O,SACdg1O,EAAgBE,GAAWD,EAC3BA,EAAc,IAGhBA,EAAY91N,KAAK+1N,GAKrB,IAAIC,EAAe,CAAC,EAEpB,IAAK,IAAIC,KAAWppN,EAAM,CACxB,GAAIgpN,EAAgBI,GAClB,IAAK/2O,EAAI,EAAGA,EAAI22O,EAAgBI,GAASp1O,OAAQ3B,IAAK,CACpD,IAAIg3O,EAAiBL,EAAgBI,GAAS/2O,GAC9C82O,EAAaH,EAAgBI,GAAS/2O,IAAM02O,EAAeM,EAC7D,CAGFF,EAAaC,GAAWL,EAAeK,EACzC,CAGA,IAAK/2O,EAAI,EAAGA,EAAI42O,EAAYj1O,OAAQ3B,IAClC82O,EAAaF,EAAY52O,IAAM02O,EAAeE,EAAY52O,IAG5D,OAAO82O,CACT,CAmBiBG,CAAmBT,EAAkBC,GAmCpD,OAlCAh0O,OAAOC,KAAKnP,GAAUkb,SAAQ,SAAU2c,GACtC,IAAIksF,EAAQ/jH,EAAS63B,GACrB,IAAKirN,EAAAA,EAAAA,gBAAe/+H,GAApB,CACA,IAAI4/H,EAAW9rN,KAAOorN,EAClBW,EAAW/rN,KAAOqrN,EAClBW,EAAYZ,EAAiBprN,GAC7BisN,GAAYhB,EAAAA,EAAAA,gBAAee,KAAeA,EAAUp5O,MAAMgzO,IAE1DmG,GAAaD,IAAWG,EAQhBF,IAAWD,GAAYG,EAMxBF,GAAWD,IAAWb,EAAAA,EAAAA,gBAAee,KAI9C7jP,EAAS63B,IAAOksN,EAAAA,EAAAA,cAAahgI,EAAO,CAClCu7H,SAAUA,EAASlkN,KAAK,KAAM2oF,GAC9B05H,GAAIoG,EAAUp5O,MAAMgzO,GACpBpyB,KAAM03B,EAAQh/H,EAAO,OAAQx7E,GAC7BnJ,MAAO2jN,EAAQh/H,EAAO,QAASx7E,MAXjCvoC,EAAS63B,IAAOksN,EAAAA,EAAAA,cAAahgI,EAAO,CAClC05H,IAAI,IAVNz9O,EAAS63B,IAAOksN,EAAAA,EAAAA,cAAahgI,EAAO,CAClCu7H,SAAUA,EAASlkN,KAAK,KAAM2oF,GAC9B05H,IAAI,EACJpyB,KAAM03B,EAAQh/H,EAAO,OAAQx7E,GAC7BnJ,MAAO2jN,EAAQh/H,EAAO,QAASx7E,IAZD,CA+BpC,IACOvoC,CACT,CClIA,IAAIa,EAASqO,OAAOrO,QAAU,SAAUqiD,GACtC,OAAOh0C,OAAOC,KAAK+zC,GAAK12C,KAAI,SAAUgwB,GACpC,OAAO0mB,EAAI1mB,EACb,GACF,EAuBIwnN,EAA+B,SAAU5G,GAG3C,SAAS4G,EAAgBv5O,EAAOq5C,GAC9B,IAAI70B,EAIAg1N,GAFJh1N,EAAQmuN,EAAiBpqN,KAAKzG,KAAM9hB,EAAOq5C,IAAYv3B,MAE9B03N,aAAa7oN,KC5C3B,SAAgCuoB,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIugM,eAAe,6DAE3B,OAAOvgM,CACT,CDuC+CwgM,CAAuBl1N,IAUlE,OAPAA,EAAM3vB,MAAQ,CACZ8kP,aAAc,CACZ7G,YAAY,GAEd0G,aAAcA,EACdI,aAAa,GAERp1N,CACT,CAlBAutN,EAAewH,EAAiB5G,GAoBhC,IAAIU,EAASkG,EAAgBv3N,UAqE7B,OAnEAqxN,EAAOzmN,kBAAoB,WACzB9K,KAAKujL,SAAU,EACfvjL,KAAKuO,SAAS,CACZspN,aAAc,CACZ7G,YAAY,IAGlB,EAEAO,EAAOxiN,qBAAuB,WAC5B/O,KAAKujL,SAAU,CACjB,EAEAk0C,EAAgBnG,yBAA2B,SAAkCt1M,EAAWtpC,GACtF,IDiBmCwL,EAAO60O,ECjBtC2D,EAAmBhkP,EAAKe,SACxBikP,EAAehlP,EAAKglP,aAExB,MAAO,CACLjkP,SAFgBf,EAAKolP,aDeY55O,ECbc89B,EDaP+2M,ECbkB2E,EDcvDtB,EAAgBl4O,EAAMzK,UAAU,SAAU+jH,GAC/C,OAAOggI,EAAAA,EAAAA,cAAahgI,EAAO,CACzBu7H,SAAUA,EAASlkN,KAAK,KAAM2oF,GAC9B05H,IAAI,EACJH,OAAQyF,EAAQh/H,EAAO,SAAUt5G,GACjC20B,MAAO2jN,EAAQh/H,EAAO,QAASt5G,GAC/B4gN,KAAM03B,EAAQh/H,EAAO,OAAQt5G,IAEjC,KCtB8Eu4O,EAAoBz6M,EAAW06M,EAAkBgB,GAC3HI,aAAa,EAEjB,EAGAvG,EAAOmG,aAAe,SAAsBlgI,EAAO3X,GACjD,IAAIk4I,EAAsB3B,EAAgBp2N,KAAK9hB,MAAMzK,UACjD+jH,EAAMlsF,OAAOysN,IAEbvgI,EAAMt5G,MAAM60O,UACdv7H,EAAMt5G,MAAM60O,SAASlzI,GAGnB7/E,KAAKujL,SACPvjL,KAAKuO,UAAS,SAAUx7B,GACtB,IAAIU,EAAWm8O,EAAS,CAAC,EAAG78O,EAAMU,UAGlC,cADOA,EAAS+jH,EAAMlsF,KACf,CACL73B,SAAUA,EAEd,IAEJ,EAEA89O,EAAOx8O,OAAS,WACd,IAAIs+O,EAAcrzN,KAAK9hB,MACnB85O,EAAY3E,EAAYt9O,UACxBkiP,EAAe5E,EAAY4E,aAC3B/5O,EAAQ2xO,EAA8BwD,EAAa,CAAC,YAAa,iBAEjEwE,EAAe73N,KAAKjtB,MAAM8kP,aAC1BpkP,EAAWa,EAAO0rB,KAAKjtB,MAAMU,UAAUwM,IAAIg4O,GAK/C,cAJO/5O,EAAM6yO,cACN7yO,EAAM20B,aACN30B,EAAM4gN,KAEK,OAAdk5B,EACkBzkP,EAAAA,cAAoBggP,EAAuBC,SAAU,CACvE/tO,MAAOoyO,GACNpkP,GAGeF,EAAAA,cAAoBggP,EAAuBC,SAAU,CACvE/tO,MAAOoyO,GACOtkP,EAAAA,cAAoBykP,EAAW95O,EAAOzK,GACxD,EAEOgkP,CACT,CA3FmC,CA2FjClkP,EAAAA,WAEFkkP,EAAgBzrN,UAyDZ,CAAC,EACLyrN,EAAgBpuN,aA5KG,CACjBtzB,UAAW,MACXkiP,aAAc,SAAsBzgI,GAClC,OAAOA,CACT,GAyKF,uBEzLWrhF,EAAkB,CACzBrgC,KAAM,kCACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,yJCTlBhyC,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EASI0hG,EAAShgC,EAAAA,EAAKggC,OAEd45I,EAA2B,SAAU1wN,GAErC,SAAS0wN,EAAUh6O,GACf,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAExC,OADAkW,EAAAA,EAAAA,GAAgBC,GACTzT,CACX,CA0CA,OA/CAuD,EAAUiyN,EAAW1wN,GASrB0wN,EAAUh4N,UAAUnrB,OAAS,WACzB,IAAI0C,EAAKuoB,KAAK9hB,MAAO9K,EAAKqE,EAAGrE,GAAIM,EAAQ+D,EAAG/D,MAAOD,EAAWgE,EAAGhE,SAAUsC,EAAY0B,EAAG1B,UAAWlC,EAAY4D,EAAG5D,UAAWokP,EAAexgP,EAAGwgP,aAAgDE,GAAlB1gP,EAAG2gP,cAAqC3gP,EAAG0gP,qBAAqBE,EAA0B5gP,EAAG4gP,wBAAyB5rJ,EAAQjyE,EAAO/iB,EAAI,CAAC,KAAM,QAAS,WAAY,YAAa,YAAa,eAAgB,gBAAiB,sBAAuB,4BAClas+O,EAAkB,CAClB3iP,GAAIA,EACJM,MAAOA,EACPqC,UAAWA,EACXkiP,aAAcA,EACdpkP,WAAWu7B,EAAAA,EAAAA,GAAWkvE,EAAO,uBAAwBA,EAAO,gCAAiCzqG,IAE7F+lD,EAAUrmD,EAAAA,SAAe0M,IAAIxM,GAAY,MAAM,SAAU+jH,GAAS,OAAQjkH,EAAAA,cAAoBqhP,EAAgB//N,EAAS,CAAC,EAAG43E,EAAO,CAAE/4F,MAAOykP,EAAqBtkP,UAAWwkP,IAA4B7gI,EAAS,IACpN,OAAQjkH,EAAAA,cAAoBkkP,EAAiB5iO,EAAS,CAAC,EAAGkhO,GAAkBn8L,EAChF,EAIAs+L,EAAUlsN,UAAY,CAClBv4B,SAAUw4B,EAAAA,UAAoB,CAC1BA,EAAAA,QAAkBA,EAAAA,MAClBA,EAAAA,OAEJgsN,aAAchsN,EAAAA,IACdp4B,UAAWo4B,EAAAA,OACXl2B,UAAWk2B,EAAAA,OACX74B,GAAI64B,EAAAA,OACJv4B,MAAOu4B,EAAAA,IACP6oN,eAAgB7oN,EAAAA,OAAiBoY,WACjC0sM,OAAQ9kN,EAAAA,KAAeoY,WACvBxR,MAAO5G,EAAAA,KAAeoY,WACtBy6K,KAAM7yL,EAAAA,KAAeoY,WACrB0wM,wBAAyB9oN,EAAAA,OAAiBoY,WAC1C2wM,uBAAwB/oN,EAAAA,OAAiBoY,YAK7C6zM,EAAU7uN,aAAe,CACrBtzB,UAAW,OAERmiP,CACX,CAjD+B,CAiD7B3kP,EAAAA,8GChGE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAMI07O,EAAwB,SAAU9wN,GAElC,SAAS8wN,IACL,IAAI51N,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KA+ChE,OA3CA0C,EAAM3vB,MAAQ,CACV2I,eAAWxI,EACXyc,cAAUzc,GAEdwvB,EAAM61N,mBAAqB,SAAUrkP,GACjC,IAAIuD,EAAKirB,EAAMxkB,MAAOu0O,EAAUh7O,EAAGg7O,QAAS+F,EAAgB/gP,EAAG+gP,cAC3DA,GACAA,EAAc/xN,UAAKvzB,EAAWgB,GAElCwuB,EAAM+1N,0BAA0BvkP,EAAM8hP,iBAAiB,WAC/CvD,GACAA,EAAQhsN,UAAKvzB,EAAWgB,EAEhC,GACJ,EACAwuB,EAAMg2N,oBAAsB,SAAUxkP,GAClC,IAAIw+O,EAAahwN,EAAMxkB,MAAMw0O,WAC7BhwN,EAAM+1N,0BAA0BvkP,EAAM8hP,iBAAiB,WAC/CtD,GACAA,EAAWjsN,UAAKvzB,EAAWgB,EAEnC,GACJ,EACAwuB,EAAMi2N,kBAAoB,SAAUzkP,GAChC,IAAI2+O,EAASnwN,EAAMxkB,MAAM20O,OACzBnwN,EAAM+1N,0BAA0BvkP,EAAM8hP,iBAAiB,WAC/CnD,GACAA,EAAOpsN,UAAKvzB,EAAWgB,EAE/B,GACJ,EACAwuB,EAAM+1N,0BAA4B,SAAU54I,EAAMllD,QACjC,IAATA,IAAmBA,EAAOrwB,EAAAA,GAC9B,IAAIsvB,EAAUimD,EAAKH,WACnB,GAAI9lD,EAAS,CACT,IAAI63J,EAAYnzI,EAAAA,EAAKs6K,YAAYh/L,GAC7B43J,EAAWlzI,EAAAA,EAAKu6K,WAAWj/L,GAC/Bl3B,EAAM6L,SAAS,CACX7yB,UAAW+1M,EACX9hM,SAAU6hM,GACX72J,EACP,CACJ,EACOj4B,CACX,CAwDA,OA1GAuD,EAAUqyN,EAAQ9wN,GAsDlB8wN,EAAOp4N,UAAUnrB,OAAS,WACtB,IAEI+jP,EAFArhP,EAAKuoB,KAAK9hB,MAAOmzB,EAAY55B,EAAG45B,UAAW59B,EAAWgE,EAAGhE,SAAUwkP,EAAexgP,EAAGwgP,aAAcxrJ,EAAQjyE,EAAO/iB,EAAI,CAAC,YAAa,WAAY,iBAChJI,EAAKmoB,KAAKjtB,MAAO2I,EAAY7D,EAAG6D,UAAWiU,EAAW9X,EAAG8X,SAQzDulO,EAAyB,CACzBx5O,WANAo9O,EADc,aAAdznN,EACY,CAAE31B,UAAWA,EAAY,GAAGwI,OAAOxI,EAAW,MAAQ,IAGtD,CAAEiU,SAAUA,EAAW,GAAGzL,OAAOyL,EAAU,MAAQ,KAG1CjU,UACrBiU,SAAUmpO,EAAUnpO,UASxB,OAAQpc,EAAAA,cAAoB2kP,EAAAA,EAAWrjO,EAAS,CAAC,EAAG43E,EAAO,CAAEwrJ,aAP/C,SAAUzgI,GACpB,IAAI96G,EAASu7O,EAAeA,EAAazgI,GAASA,EAClD,OAAK96G,EAAOwB,MAAMgzO,GAGXx0O,EAFInJ,EAAAA,aAAmBmJ,EAAQmY,EAASA,EAAS,CAAC,EAAGnY,EAAOwB,OAAQ,CAAExK,MAAOmhB,EAASA,EAAS,CAAC,EAAGnY,EAAOwB,MAAMxK,OAAQ,CAAEgI,UAAWo9O,EAAUp9O,UAAWiU,SAAUmpO,EAAUnpO,aAGzL,EACoF8iO,QAASzyN,KAAKu4N,mBAAoB7F,WAAY1yN,KAAK04N,oBAAqB7F,OAAQ7yN,KAAK24N,kBAAmBzD,uBAAwBA,EAAwBJ,eAAgB,UAAU5wO,OAAOmtB,KAAe59B,EAChS,EAIA6kP,EAAOtsN,UAAY,CACfv4B,SAAUw4B,EAAAA,UAAoB,CAC1BA,EAAAA,QAAkBA,EAAAA,MAClBA,EAAAA,OAEJgsN,aAAchsN,EAAAA,IACdp4B,UAAWo4B,EAAAA,OACXoF,UAAWpF,EAAAA,MAAgB,CACvB,aACA,aAEJl2B,UAAWk2B,EAAAA,OACX74B,GAAI64B,EAAAA,OACJv4B,MAAOu4B,EAAAA,KAKXqsN,EAAOjvN,aAAe,CAClB0nN,QAAQ,EACRl+M,OAAO,EACPisL,MAAM,EACNi2B,wBAAyB,IACzBC,uBAAwB,IACxB3jN,UAAW,YAERinN,CACX,CA5G4B,CA4G1B/kP,EAAAA,wDCbF,QALgB,CACZqlP,YAlIc,SAAUvwN,GACxB,IAAKA,IAAYA,EAAQgO,cAAcosJ,YACnC,OAAO,EAEX,IACIs2D,EADM1wN,EAAQgO,cAAcosJ,YACP9uI,iBAAiBtrB,GACtChyB,EAAYy9E,WAAWilK,EAAe1iP,WACtCoH,EAAeq2E,WAAWilK,EAAet7O,cAC7C,OAAO4qB,EAAQtC,aAAe1vB,EAAYoH,CAC9C,EA0HIo7O,WAtHa,SAAUxwN,GACvB,IAAKA,IAAYA,EAAQgO,cAAcosJ,YACnC,OAAO,EAEX,IACIs2D,EADM1wN,EAAQgO,cAAcosJ,YACP9uI,iBAAiBtrB,GACtCz0B,EAAakgF,WAAWilK,EAAenlP,YACvC6B,EAAcq+E,WAAWilK,EAAetjP,aAC5C,OAAO4yB,EAAQm9H,YAAc5xJ,EAAa6B,CAC9C,EA8GI6oG,OA1GS,CACT,sBAAuB,wBACvB,+BAAgC,iCAChC,4BAA6B,8BAC7B,mBAAoB,qBACpB,oBAAqB,sBACrB,0BAA2B,4BAC3B,2BAA4B,6BAC5B,kBAAmB,oBACnB,yBAA0B,2BAC1B,kBAAmB,oBACnB,mBAAoB,qBACpB,yBAA0B,2BAC1B,0BAA2B,4BAC3B,iBAAkB,mBAClB,wBAAyB,0BACzB,kBAAmB,oBACnB,mBAAoB,qBACpB,yBAA0B,2BAC1B,0BAA2B,4BAC3B,iBAAkB,mBAClB,wBAAyB,0BACzB,gBAAiB,kBACjB,iBAAkB,mBAClB,uBAAwB,yBACxB,wBAAyB,0BACzB,eAAgB,iBAChB,sBAAuB,wBACvB,OAAU,WACV,wBAAyB,0BACzB,yBAA0B,2BAC1B,+BAAgC,iCAChC,gCAAiC,kCACjC,uBAAwB,yBACxB,8BAA+B,gCAC/B,0BAA2B,4BAC3B,2BAA4B,6BAC5B,iCAAkC,mCAClC,kCAAmC,oCACnC,yBAA0B,2BAC1B,gCAAiC,kCACjC,4BAA6B,8BAC7B,aAAc,eACd,cAAe,gBACf,oBAAqB,sBACrB,qBAAsB,uBACtB,YAAa,cACb,mBAAoB,qBACpB,gBAAiB,kBACjB,iBAAkB,mBAClB,uBAAwB,yBACxB,wBAAyB,0BACzB,eAAgB,iBAChB,sBAAuB,wBACvB,iBAAkB,mBAClB,kBAAmB,oBACnB,wBAAyB,0BACzB,yBAA0B,2BAC1B,gBAAiB,kBACjB,uBAAwB,yBACxB,kBAAmB,oBACnB,SAAY,aACZ,yBAA0B,2BAC1B,mBAAoB,qBACpB,oBAAqB,sBACrB,0BAA2B,4BAC3B,2BAA4B,6BAC5B,kBAAmB,oBACnB,yBAA0B,2BAC1B,iBAAkB,mBAClB,kBAAmB,oBACnB,wBAAyB,0BACzB,yBAA0B,2BAC1B,gBAAiB,kBACjB,uBAAwB,yBACxB,oBAAqB,sBACrB,qBAAsB,uBACtB,2BAA4B,6BAC5B,4BAA6B,8BAC7B,mBAAoB,qBACpB,0BAA2B,4BAC3B,mBAAoB,qBACpB,oBAAqB,sBACrB,0BAA2B,4BAC3B,2BAA4B,6BAC5B,kBAAmB,oBACnB,yBAA0B,2BAC1B,wBAAyB,0BACzB,yBAA0B,2BAC1B,+BAAgC,iCAChC,gCAAiC,kCACjC,uBAAwB,yBACxB,8BAA+B,gCAC/B,0BAA2B,4BAC3B,2BAA4B,6BAC5B,iCAAkC,mCAClC,kCAAmC,oCACnC,yBAA0B,2BAC1B,gCAAiC,qKC/HjCr4E,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAsBA,IAAIzH,EAAwB,SAAUqyB,GAElC,SAASryB,EAAO+I,GACZ,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAUxC,OATA0C,EAAM/iB,SAAW,KACjB+iB,EAAMoe,YAAc,SAAU5sC,GAC1BwuB,EAAMs2N,qBACFt2N,EAAMxkB,MAAM7I,SACZqtB,EAAMxkB,MAAM7I,QAAQoxB,UAAKvzB,EAAWgB,EAE5C,GACAgiC,EAAAA,EAAAA,GAAgBC,EAAAA,GAChBzT,EAAM3vB,MAAQ,CAAE0M,UAAoC,IAA1BijB,EAAMxkB,MAAMo1B,YAA+C,IAAzB5Q,EAAMxkB,MAAMuB,UACjEijB,CACX,CAgGA,OA7GAuD,EAAU9wB,EAAQqyB,GAclB7kB,OAAO6nB,eAAer1B,EAAO+qB,UAAW,UAAW,CAI/CuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAer1B,EAAO+qB,UAAW,WAAY,CAKhDuK,IAAK,WACD,YAA8Bv3B,IAAvB8sB,KAAKi5N,cAA8Bj5N,KAAKi5N,cAAgBj5N,KAAKjtB,MAAM0M,QAC9E,EACAirB,YAAY,EACZC,cAAc,IAKlBx1B,EAAOm8O,yBAA2B,SAAUpzO,EAAOnL,GAC/C,OAAImL,EAAMo1B,gBAAgCpgC,IAAnBgL,EAAMuB,UAA0BvB,EAAMuB,WAAa1M,EAAM0M,SACrE,CAAEA,SAAUvB,EAAMuB,UAEtB,IACX,EAIAtK,EAAO+qB,UAAUnrB,OAAS,WACtB,IAAI0C,EACAirB,EAAQ1C,KACRnoB,EAAKmoB,KAAK9hB,MAAOzK,EAAWoE,EAAGpE,SAAU6/B,EAAYz7B,EAAGy7B,UAAWl+B,EAAOyC,EAAGzC,KAAM8jP,EAAYrhP,EAAGqhP,UAAWvgN,EAAU9gC,EAAG8gC,QAASlpB,EAAW5X,EAAG4X,SAAU0pO,EAAWthP,EAAGshP,SAA0DjhP,GAApCL,EAAGhE,UAAqBgE,EAAGxC,QAAcwC,EAAG0B,MAAMA,OAAc,IAAPrB,EAAgB/C,EAAOk0B,aAAa9vB,KAAOrB,EAAIG,EAAKR,EAAGy/B,QAASA,OAAiB,IAAPj/B,EAAgBlD,EAAOk0B,aAAaiO,QAAUj/B,EAAII,EAAKZ,EAAGsM,SAAUA,OAAkB,IAAP1L,EAAgBtD,EAAOk0B,aAAallB,SAAW1L,EAAIE,EAAKd,EAAGkC,WAAYA,OAAoB,IAAPpB,EAAgBxD,EAAOk0B,aAAatvB,WAAapB,EAAIygP,EAAiB5+N,EAAO3iB,EAAI,CAAC,WAAY,YAAa,OAAQ,YAAa,UAAW,WAAY,WAAY,YAAa,UAAW,OAAQ,UAAW,WAAY,eAC/rBwhP,OAAuBnmP,IAAZylC,QAAkCzlC,IAATkC,QAAoClC,IAAdgmP,QAAwChmP,IAAbuc,EACrF6pO,OAA2BpmP,IAAbO,EACd8lP,EAnEZ,SAAqB9hP,GACjB,IAAIgY,EAAWhY,EAAGgY,SAAU3Z,EAAO2B,EAAG3B,KAAMojP,EAAYzhP,EAAGyhP,UAAWvgN,EAAUlhC,EAAGkhC,QAASwgN,EAAW1hP,EAAG0hP,SAC1G,OAAI1pO,EACQlc,EAAAA,cAAoB,MAAO,CAAEwE,KAAM,eAAgBlE,UAAW,gBAAiB4Y,IAAK0sO,EAAU3sO,IAAKiD,IAEtG3Z,GAAQ6iC,EACNplC,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,gBAAiBiC,KAAMA,EAAMV,KAAMujC,IAEhFugN,EACG3lP,EAAAA,cAAoB,OAAQ,CAAEwE,KAAM,eAAgBlE,WAAWu7B,EAAAA,EAAAA,GAAW,gBAAiB8pN,KAEhG,IACX,CAuDqBM,CAAY,CACrB1jP,KAAMV,EACNujC,QAASA,EACTugN,UAAWA,EACXzpO,SAAUA,EACV0pO,SAAUA,IAEd,OAAQ5lP,EAAAA,cAAoB,SAAUshB,EAAS,CAAE9gB,IAAK,SAAUqkM,GAAU,OAAO11K,EAAM/iB,SAAWy4L,CAAQ,EAAG,eAAgB9kK,EAAYtT,KAAKjtB,MAAM0M,cAAWvM,GAAakmP,EAAgB,CAAE/jP,QAAS2qB,KAAK8gB,YAAajtC,WAAWu7B,EAAAA,EAAAA,GAAW,YAAa33B,EAAK,CAAC,EAC1PA,EAAG,YAAYyM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EAC/D9B,EAAG,YAAYyM,OAAOC,IAAaA,EACnC1M,EAAG,YAAYyM,OAAOC,EAAU,KAAKD,OAAOnK,IAAe6wB,QAAQzmB,GAAYpK,GAC/EtC,EAAG,aAAayM,OAAOk0B,EAAAA,EAAeE,WAAWhB,IAAYA,IAAYA,EACzE7/B,EAAG,kBAAoB6hP,GAAeD,EACtC5hP,EAAG,cAAgBuoB,KAAK9hB,MAAMhE,SAC9BzC,EAAG,cAAgBuoB,KAAKjtB,MAAM0M,SAC9BhI,EAAG,SAA8B,QAAnBuoB,KAAK9hB,MAAMyd,IACzBlkB,GAAKuoB,KAAK9hB,MAAMrK,aACpB0lP,EACA9lP,GAAaF,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,iBAAmBJ,GACjF,EACA0B,EAAO+qB,UAAU84N,mBAAqB,WAClC,IAAIt2N,EAAQ1C,KACZ,GAAIA,KAAK9hB,MAAMo1B,gBAAqCpgC,IAAxB8sB,KAAK9hB,MAAMuB,SAAwB,CAC3D,IAAIA,GAAYugB,KAAKjtB,MAAM0M,SAC3BugB,KAAKi5N,cAAgBx5O,EACrBugB,KAAKuO,SAAS,CAAE9uB,SAAUA,IAAY,WAAc,OAAOijB,EAAMu2N,mBAAgB/lP,CAAW,GAChG,CACJ,EAIAiC,EAAO62B,UAAY,CACfv4B,SAAUw4B,EAAAA,KACVxsB,SAAUwsB,EAAAA,KACVqH,UAAWrH,EAAAA,KACX72B,KAAM62B,EAAAA,OACN0M,QAAS8gN,EAAAA,GACTP,UAAWjtN,EAAAA,OACXxc,SAAUwc,EAAAA,OACVktN,SAAUltN,EAAAA,OACV1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5D9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,OAAQ,OAAQ,UAAW,UAE5DlyB,WAAYkyB,EAAAA,MAAgB,CAAC,KAAM,OAAQ,UAAW,YAAa,WAAY,OAAQ,UAAW,UAAW,QAAS,OAAQ,QAAS,aAK3I92B,EAAOk0B,aAAe,CAClBiK,WAAW,EACX/5B,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,QACVpK,WAAY,QAET5E,CACX,CA/G4B,CA+G1B5B,EAAAA,wHCzKE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAOI4xE,EAAShgC,EAAAA,EAAKggC,OACd7kG,EAA6B,SAAU+tB,GAEvC,SAAS/tB,EAAYyE,GACjB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAGxC,OAFA0C,EAAM/iB,SAAW,MACjBu2B,EAAAA,EAAAA,GAAgBC,EAAAA,GACTzT,CACX,CA0DA,OAhEAuD,EAAUxsB,EAAa+tB,GAUvB/tB,EAAYymB,UAAUnrB,OAAS,WAC3B,IAAI0C,EACAirB,EAAQ1C,KACR05K,EAAU15K,KAAK05N,WAAW15N,KAAK9hB,MAAMzK,UACrCkmP,GAAevqN,EAAAA,EAAAA,GAAW,CAACkvE,EAAO,mBAAmB7mG,EAAK,CAAC,GACxD,cAAgBuoB,KAAK9hB,MAAMhE,SAC9BzC,EAAG6mG,EAAO,6BAA+Bt+E,KAAK9hB,MAAM7D,MACpD5C,GAAKuoB,KAAK9hB,MAAMrK,WAChB+lP,EAAa,CACb/lP,UAAW8lP,EACXjmP,MAAO,CAAE,MAAS,GAAGwQ,OAAO8b,KAAK9hB,MAAM7D,QACvCshB,IAAKqE,KAAK9hB,MAAMyd,IAEhB5jB,KAAM,QACN,gBAAiBioB,KAAK9hB,MAAMhE,UAEhC,OAAQ3G,EAAAA,cAAoB,MAAOshB,EAAS,CAAE9gB,IAAK,SAAUsxB,GAAO3C,EAAM/iB,SAAW0lB,CAAK,GAAKu0N,EAAY,CAAE/lP,UAAW8lP,IAAiBjgD,EAC7I,EACAjgM,EAAYymB,UAAUw5N,WAAa,SAAUjmP,GACzC,IAAIivB,EAAQ1C,KACRq+D,EAAQ9qF,EAAAA,SAAe8qF,MAAM5qF,GAC7BomP,OAAyB3mP,IAAnB8sB,KAAK9hB,MAAMyd,IACI,QAAnBqE,KAAK9hB,MAAMyd,IACVqE,KAAKrgB,UAA2D,QAA9Cg0C,iBAAiB3zB,KAAKrgB,UAAU0xB,YAAwB,EACjF,OAAO99B,EAAAA,SAAe0M,IAAIxM,GAAU,SAAU+jH,EAAO5iG,GACjD,OAAIrhB,EAAAA,eAAqBikH,GACd90F,EAAMo3N,aAAatiI,EAAO5iG,EAAQA,IAAUypE,EAAQ,EAAIw7J,GAE5DriI,CACX,GACJ,EACA/9G,EAAYymB,UAAU45N,aAAe,SAAUtiI,EAAO5iG,EAAO0sC,EAAQxd,GACjE,IAAIrsC,EACA5D,GAAYu7B,EAAAA,EAAAA,GAAWooF,EAAMt5G,MAAMrK,YAAY4D,EAAK,CAAC,GAClD6mG,EAAO,gBAAkBx6D,EAAQwd,EAAmB,IAAV1sC,EAC7Cnd,EAAG6mG,EAAO,cAAgBx6D,EAAkB,IAAVlvB,EAAc0sC,EAChD7pD,IACA/D,EAAQmhB,EAASA,EAAS,CAAC,EAAImL,KAAK9hB,MAAM7D,MAAQ,CAAEA,MAAO2lB,KAAK9hB,MAAM7D,OAAU,CAAC,GAAMm9G,EAAMt5G,MAAMxK,OAAS,CAAC,GAC7GwG,EAAW8lB,KAAK9hB,MAAMhE,UAAYs9G,EAAMt5G,MAAMhE,SAC9C6/O,EAAcllO,EAASA,EAASA,EAASA,EAAS,CAAC,EAAG2iG,EAAMt5G,OAASrK,EAAY,CAAEA,UAAWA,GAAc,CAAC,GAAM8O,OAAOC,KAAKlP,GAAOmO,OAAS,CAAEnO,MAAOA,GAAU,CAAC,QAAmBR,IAAbgH,EAAyB,CAAEA,SAAUA,GAAa,CAAC,GAChO,OAAO3G,EAAAA,SAAe8qF,MAAMm5B,EAAMt5G,MAAMzK,UAAY,EAChDF,EAAAA,aAAmBikH,EAAOuiI,EAAaviI,EAAMt5G,MAAMzK,UACnDF,EAAAA,aAAmBikH,EAAOuiI,EAClC,EAIAtgP,EAAYuyB,UAAY,CACpBv4B,SAAUw4B,EAAAA,UAAoB,CAACA,EAAAA,QAAkBA,EAAAA,SAAoBA,EAAAA,UACrEp4B,UAAWo4B,EAAAA,OACX/xB,SAAU+xB,EAAAA,KACV5xB,MAAO4xB,EAAAA,OACPtQ,IAAKsQ,EAAAA,QAEFxyB,CACX,CAlEiC,CAkE/BlG,EAAAA,qOCnGEshB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAeWzoB,EAAO1Q,EAAAA,YAAiB,SAAU2K,EAAOnK,GAChD,IAAI0D,GACJy+B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAI/b,EAAS7mB,EAAAA,OAAa,MACtBymP,EAAUzmP,EAAAA,OAAa,MACvBooB,GAAMs+N,EAAAA,EAAAA,GAAOD,EAAS97O,EAAMyd,KAChCpoB,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAAS2xN,EAAQ3lP,QACjB6J,MAAOA,EACP,IACJ3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAAIwD,EAAKtE,EAAAA,WAAiB2mP,EAAAA,IAA2Bp1H,EAAYjtH,EAAG,GAAIsiP,EAAoBtiP,EAAG,GAC3FK,EAAK3E,EAAAA,WAAiB6mP,EAAAA,IAAuBnyN,EAAQ/vB,EAAG,GAAImiP,EAAgBniP,EAAG,GACnCoiP,EAAvC/mP,EAAAA,WAAiBgnP,EAAAA,IAAwC,GAC9D96O,EAAWlM,EAAAA,SAAc,WACzB,OAAQ2K,EAAMuB,WAAauY,MAAMC,QAAQ6sG,GACnCA,EAAUlmE,MAAK,SAAU1+C,GAAK,OAAOA,IAAMhC,EAAMuH,KAAO,IACxDq/G,IAAc5mH,EAAMuH,MAC9B,GAAG,CAACvH,EAAMuB,SAAUvB,EAAMuH,MAAOq/G,IAC7BjvF,EAAUtiC,EAAAA,SAAc,WAAc,OAAO00B,IAAU/pB,EAAMuH,KAAO,GAAG,CAACvH,EAAMuH,MAAOwiB,IACzF10B,EAAAA,WAAgB,WACRsiC,GAAWmkN,EAAQ3lP,SACnB2lP,EAAQ3lP,QAAQ4zB,OAExB,GAAG,CAAC4N,IACJ,IAAIiL,EAAcvtC,EAAAA,aAAkB,SAAUW,GAC1CimP,EAAkB,CAAE3gP,KAAMghP,EAAAA,GAAiB3yB,OAAQnzN,QAASwJ,EAAMuH,MAAOvR,MAAOA,GACpF,GAAG,CAACimP,EAAmBj8O,EAAMuH,QACzBg1O,EAAelnP,EAAAA,aAAkB,SAAUW,GACtCgK,EAAMw8O,YAGXJ,EAAa,CAAE9gP,KAAMmhP,EAAAA,EAAiBn9M,OAAQ9oC,QAASwJ,EAAMuH,MAAOvR,MAAOA,IAC3EmmP,EAAc,CAAE7gP,KAAMohP,EAAAA,EAAatrK,MAAO56E,QAASwJ,EAAMuH,MAAOvR,MAAOA,IACvEimP,EAAkB,CAAE3gP,KAAMghP,EAAAA,GAAiBh9M,OAAQ9oC,QAASwJ,EAAMuH,MAAOvR,MAAOA,IAC5EgK,EAAMqsC,UACNrsC,EAAMqsC,SAAS9jB,UAAKvzB,EAAW,CAC3BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,IAG5B,GAAG,CAACgK,EAAMqsC,SAAUrsC,EAAMuH,MAAOvH,EAAMw8O,UAAWJ,EAAcD,EAAeF,IAC3E/vN,EAAgB72B,EAAAA,aAAkB,SAAUW,GAC5C,OAAQA,EAAMm2B,SACV,KAAKtD,EAAAA,EAAKrX,KACN2qO,EAAc,CAAE7gP,KAAMohP,EAAAA,EAAa9sN,KAAMp5B,QAASwJ,EAAMuH,MAAOvR,MAAOA,IACtE,MACJ,KAAK6yB,EAAAA,EAAKltB,MACNwgP,EAAc,CAAE7gP,KAAMohP,EAAAA,EAAa/sN,KAAMn5B,QAASwJ,EAAMuH,MAAOvR,MAAOA,IACtE,MACJ,KAAK6yB,EAAAA,EAAK8L,MACNsnN,EAAkB,CAAE3gP,KAAMghP,EAAAA,GAAiB3yB,OAAQnzN,QAASwJ,EAAMuH,MAAOvR,MAAOA,IAChF,MACJ,KAAK6yB,EAAAA,EAAK0tB,OACNgmM,EAAavmP,GAKjBgK,EAAMutB,WACNvtB,EAAMutB,UAAUhF,UAAKvzB,EAAW,CAC5BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACgK,EAAMutB,UAAWvtB,EAAMuH,MAAO40O,EAAeF,EAAmBM,IAChE9wN,EAAcp2B,EAAAA,aAAkB,SAAUW,GAC1CmmP,EAAc,CAAE3lP,QAASwJ,EAAMuH,MAAOjM,KAAMohP,EAAAA,EAAavmP,QAASH,MAAOA,IACrEgK,EAAM0rB,SACN1rB,EAAM0rB,QAAQnD,UAAKvzB,EAAW,CAC1BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACgK,EAAM0rB,QAAS1rB,EAAMuH,MAAO40O,IAC5BxwN,EAAat2B,EAAAA,aAAkB,SAAUW,GACrCgK,EAAM4rB,QACN5rB,EAAM4rB,OAAOrD,UAAKvzB,EAAW,CACzBknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACgK,EAAM4rB,SACN+wN,GAAaC,EAAAA,EAAAA,GAAS58O,EAAOkc,EAAQ,CAAE/kB,QAASyrC,IACpD,OAAQvtC,EAAAA,cAAoB,MAAOshB,EAAS,CAAC,EAAGgmO,EAAY,CAAE9iP,KAAMmG,EAAMnG,KAAM3E,GAAI8K,EAAMuH,MAAO/R,MAAOwK,EAAMxK,MAAOK,IAAKimP,EAASr+N,IAAKA,EAAK4P,UAAUkvC,EAAAA,EAAAA,GAAYv8D,EAAMqtB,SAAUrtB,EAAMhE,cAAUhH,GAAYW,WAAWu7B,EAAAA,EAAAA,GAAW,UAAW33B,EAAK,CACzO,QAAiB,QAARkkB,EACT,aAAczd,EAAMhE,SACpB,aAAcuF,EACd,UAAWo2B,GAEfp+B,EAAG,UAAUyM,OAAOk0B,EAAAA,EAAeC,QAAQn6B,EAAM3E,OAAS2E,EAAM3E,OAAS2E,EAAM3E,KAC/E9B,EAAG,aAAayM,OAAOk0B,EAAAA,EAAeE,WAAWp6B,EAAMo5B,UAAYp5B,EAAMo5B,UAAYp5B,EAAMo5B,QAC3F7/B,EAAG,UAAUyM,OAAOhG,EAAMiG,WAAajG,EAAMiG,SAC7C1M,EAAG,UAAUyM,OAAOhG,EAAMiG,SAAU,KAAKD,OAAOhG,EAAMnE,aAAe6wB,QAAQ1sB,EAAMiG,UAAYjG,EAAMnE,YACrGtC,GAAKyG,EAAMrK,WAAY,eAAgB4L,EAAU,gBAAiBvB,EAAMhE,SAAU,mBAAoBgE,EAAMu5B,gBAAiB7N,QAASD,EAAaG,OAAQD,EAAY4B,UAAWrB,IACrL3qB,IAAavB,EAAM68O,cAAgB78O,EAAM88O,kBACtCznP,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,cAAeiC,KAAMoI,EAAM68O,cAAeE,EAAAA,EAAAA,IAAW/8O,EAAM68O,mBAAgB7nP,EAAWkC,KAAM8I,EAAM88O,gBAAiBzhP,KAAM,WACvK2E,EAAM9I,MAAQ8I,EAAMy6B,UACjBplC,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,cAAeiC,KAAMoI,EAAM9I,MAAO6lP,EAAAA,EAAAA,IAAW/8O,EAAM9I,WAAQlC,EAAWkC,KAAM8I,EAAMy6B,QAASp/B,KAAM,UAC/I2E,EAAMg9O,QACH3nP,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oCAAoCqQ,OAAOhG,EAAMg9O,OAAO5jN,QAAS,sDAAuD5jC,MAAOwK,EAAMg9O,OAAOxnP,OAChLH,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,kBACrCN,EAAAA,cAAoB,MAAO,CAAEiZ,IAAKtO,EAAMg9O,OAAO7oI,MAAO5lG,IAAKvO,EAAMg9O,OAAO/B,aACpF5lP,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,uBAAuCX,IAAnBgL,EAAMzK,SAC7DyK,EAAMzK,SACNyK,EAAMH,MACJxK,EAAAA,cAAoB,OAAQ,CAAE,aAAc2K,EAAMi9O,WAAaj9O,EAAMH,KAAMlK,UAAW,gBAAkBqK,EAAMH,OACtHG,EAAMw8O,WAAcnnP,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,kBACzDN,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,gBAAiB,wBAAyB/5B,QAASolP,GACnGlnP,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAMoI,EAAMk9O,YAAaH,EAAAA,EAAAA,IAAW/8O,EAAMk9O,iBAAcloP,EAAWkC,KAAM8I,EAAMm9O,eAAiBC,EAAAA,IAAa/hP,KAAM,YACnK,IACIyyB,EAAY,CACZ54B,GAAI64B,EAAAA,OACJluB,KAAMkuB,EAAAA,OACNxmB,MAAOwmB,EAAAA,IACPtQ,IAAKsQ,EAAAA,MAAgB,CAAC,MAAO,QAC7ByuN,UAAWzuN,EAAAA,KACXmvN,WAAYnvN,EAAAA,OACZsvN,cAAe9B,EAAAA,GACfv/O,SAAU+xB,EAAAA,KACV72B,KAAM62B,EAAAA,OACN0M,QAAS8gN,EAAAA,GACTsB,aAAc9uN,EAAAA,OACduvN,gBAAiB/B,EAAAA,GACjBlvM,SAAUte,EAAAA,KACV5tB,SAAU4tB,EAAAA,IACVxsB,SAAUwsB,EAAAA,KACVwL,gBAAiBxL,EAAAA,OACjB1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5D9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,UAAW,UAE5ClyB,WAAYkyB,EAAAA,MAAgB,CAAC,KAAM,OAAQ,OAAQ,UAAW,UAAW,WAY7EhoB,EAAK61B,YAAc,iBAEnB71B,EAAK+nB,UAAYA,EACjB/nB,EAAKolB,aAbc,CACfnvB,UAAU,EACVwgP,WAAW,EACXU,WAAY,eACZz/N,IAAK,MACLpiB,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,QACVpK,WAAY,iOCvKZ8a,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAaWwtN,EAA2B3mP,EAAAA,cAAoB,CAAC,KAAM,SAAUkoP,GACnE,IAKGrB,EAAuB7mP,EAAAA,cAAoB,CAAC,KAAM,SAAUkoP,GAC/D,IAKGlB,EAAsBhnP,EAAAA,cAAoB,CAAC,KAAM,SAAUkoP,GAC9D,IA4CGC,EAAWnoP,EAAAA,YAAiB,SAAU2K,EAAOnK,GACpD,IAAI0D,GACJy+B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAI/b,EAAS7mB,EAAAA,OAAa,MACtBooP,EAAcpoP,EAAAA,OAAa,MAC3BooB,GAAMs+N,EAAAA,EAAAA,GAAO0B,EAAaz9O,EAAMyd,KAChCigO,EAAO19O,EAAM09O,KAAMxoP,EAAK8K,EAAM9K,GAAIM,EAAQwK,EAAMxK,MAAO63B,EAAWrtB,EAAMqtB,SAAUrxB,EAAWgE,EAAMhE,SAAUX,EAAO2E,EAAM3E,KAAM1F,EAAYqK,EAAMrK,UAAW4jC,EAAkBv5B,EAAMu5B,gBAAiBD,EAAiBt5B,EAAMs5B,eAAgB3/B,EAAKqG,EAAM4mH,UAAWA,OAAmB,IAAPjtH,EAAgBwxB,EAAay7F,UAAYjtH,EAAIK,EAAKgG,EAAMuH,MAAOA,OAAe,IAAPvN,EAAgBmxB,EAAa9yB,aAAe2B,EAAIG,EAAK6F,EAAMo6N,YAAaA,OAAqB,IAAPjgO,EAAgBgxB,EAAaivM,YAAcjgO,EAAII,EAAKyF,EAAM29O,WAAYA,OAAoB,IAAPpjP,EAAgB4wB,EAAawyN,WAAapjP,EAAIE,EAAKuF,EAAM2H,UAAWA,OAAmB,IAAPlN,EAAgB0wB,EAAaxjB,UAAYlN,EAAI6M,EAAWtH,EAAMsH,SAAUs2O,EAAe59O,EAAM49O,aAC5qBC,EAAgBxoP,EAAAA,SAAc,WAAc,OAAOqoP,GAAQ33O,EAAAA,CAAM,GAAG,CAAC23O,EAAM33O,EAAAA,IAC/E1Q,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASszN,EAAYtnP,QACrB6J,MAAOA,EACP,IACJ3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAAIq1B,EAAen2B,EAAAA,aAAkB,SAAU+6K,EAAUp6K,GACjDsR,GAAY4U,EAAO/lB,SACnBmR,EAASihB,UAAKvzB,EAAW,CACrBuS,MAAO6oK,EACPl0J,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACsR,IACAnG,EA7DW,SAAU9I,EAAc2xB,EAAM2tC,GAC7C,IAAIp+D,EAAKlE,EAAAA,SAAegD,GAAexD,EAAQ0E,EAAG,GAAI82B,EAAW92B,EAAG,GAQpE,MAAO,CAAC1E,EAPsB,SAAUsf,GACpC,IAAI5P,GAAWu5O,EAAAA,EAAAA,IAAiB9zN,EAAKn1B,OAASA,EAAO8hB,EAASA,EAAS,CAAC,EAAGxC,GAAS6V,IAChF2tC,GACAA,EAASpzD,EAAU4P,EAAOne,OAE9Bq6B,EAAS9rB,EACb,EAEJ,CAmDaw5O,CAAax2O,EAAO,CACzBq/G,UAAWA,EACX/xH,MAAO0S,GACRikB,GAAe+Y,EAAapjC,EAAG,GAAI68O,EAAqB78O,EAAG,GAC1D88O,EAAmB5oP,EAAAA,aAAkB,SAAU6oP,EAASloP,GACpD4nP,GAAgB1hO,EAAO/lB,SACvBynP,EAAar1N,UAAKvzB,EAAW,CACzBuS,MAAO22O,EACPhiO,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAAC4nP,IACA7nO,EAjDM,SAAUqkN,EAAapwM,EAAM2tC,GACvC,IAAIp+D,EAAKlE,EAAAA,SAAe+kO,GAAcvlO,EAAQ0E,EAAG,GAAI82B,EAAW92B,EAAG,GAQnE,MAAO,CAAC1E,EAPiB,SAAUsf,GAC/B,IAAI5P,GAAW45O,EAAAA,EAAAA,GAAYn0N,EAAKn1B,OAASA,EAAO8hB,EAASA,EAAS,CAAC,EAAGxC,GAAS6V,IAC3E2tC,GACAA,EAASpzD,EAAU4P,EAAOne,OAE9Bq6B,EAAS9rB,EACb,EAEJ,CAuCa65O,CAAQp+O,EAAM3F,MAAQ+/N,EAAa,CACxCvlO,MAAOmL,EAAM3F,KACbsjP,WAAYA,GACbM,GAAmBI,EAAYtoO,EAAG,GAAIqmO,EAAermO,EAAG,GACvDuoO,GAAejpP,EAAAA,aAAkB,SAAU85B,EAAKh5B,GAEhD,OADAg5B,EAAIrM,KAAK3sB,EAAQwnP,IACVxuN,CACX,GAAG,CAACwuN,IACAtjP,GAAOhF,EAAAA,SAAc,WAAc,OAAO2K,EAAM3F,MAAQgkP,CAAW,GAAG,CAACr+O,EAAM3F,KAAMgkP,IACnFE,GAAYlpP,EAAAA,SAAc,WAAc,OAAOkS,GAASg9B,CAAY,GAAG,CAACh9B,EAAOg9B,IAC/EhwB,GAAQlf,EAAAA,SAAc,WAAc,OAAOgF,GAAKkE,OAAO+/O,GAAc,GAAK,GAAG,CAACjkP,GAAMikP,KACpF52O,GAAcrS,EAAAA,aAAkB,SAAUiQ,GAAQ,OAAO4Y,EAAAA,EAAAA,GAAOy/N,EAAPz/N,CAAmB5Y,EAAO,GAAG,CAACq4O,IACvFa,GAAanpP,EAAAA,aAAkB,SAAUiQ,GAAQ,OAAO4Y,EAAAA,EAAAA,GAAOvW,EAAPuW,CAAkB5Y,EAAO,GAAG,CAACqC,IACrFuO,GAzEO,SAAU8T,GACrB,IAAIzwB,EAAKlE,EAAAA,SAAe,MAAOR,EAAQ0E,EAAG,GAAI82B,EAAW92B,EAAG,GAK5D,MAAO,CAAC1E,EAJkB,SAAUsf,GAChC,IAAI5P,GAAWk6O,EAAAA,EAAAA,GAAatqO,EAAO3d,QAASmgB,EAASA,EAAS,CAAC,EAAGxC,GAAS6V,IAC3EqG,EAAS9rB,EACb,EAEJ,CAkEam6O,CAAS,CAAEnqO,MAAOA,KAAUwV,GAAQ7T,GAAG,GAAIimO,GAAgBjmO,GAAG,GACnEymO,IAAaC,EAAAA,EAAAA,GAAS58O,EAAOkc,GACjC,OAAQ7mB,EAAAA,cAAoB2mP,EAAyB1G,SAAU,CAAE/tO,MAAO,CAACg3O,GAAWP,IAChF3oP,EAAAA,cAAoB6mP,EAAqB5G,SAAU,CAAE/tO,MAAO,CAACwiB,GAAOoyN,KAChE9mP,EAAAA,cAAoBgnP,EAAoB/G,SAAU,CAAE/tO,MAAO,CAAClN,GAAM+hP,IAC9D/mP,EAAAA,cAAoB,MAAOshB,EAAS,CAAE9gB,IAAK4nP,GAAed,GAAY,CAAE9iP,KAAM,UAAW3E,GAAIA,EAAIuoB,IAAKA,EAAKjoB,MAAOA,EAAO63B,UAAUkvC,EAAAA,EAAAA,GAAYlvC,EAAUrxB,OAAUhH,GAAYW,WAAWu7B,EAAAA,EAAAA,GAAW,eAAgB33B,EAAK,CAC9M,QAAiB,QAARkkB,EACT,aAAczhB,GAElBzC,EAAG,eAAeyM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EAClE9B,GAAK5D,GAAY,kBAAmB2jC,EAAgB,mBAAoBC,IAAoBl/B,GAAK0H,KAAI,SAAUuD,EAAMoR,GACzH,OAAQrhB,EAAAA,cAAoBwoP,EAAe,CAAEhkP,KAAM,SAAUsG,SAAUmF,EAAMjK,KAAMA,EAAM+xB,IAAK,CAAC1lB,GAAYpC,GAAOoR,GAAOgpC,KAAK,KAAM7/C,KAAM2+O,GAAWl5O,GAAOiC,MAAOG,GAAYpC,GAAO23O,UAAW33O,EAAK23O,UAAWxiN,QAASn1B,EAAKm1B,cAAWzlC,GAC9O,OAChB,IACI84B,EAAY,CACZ54B,GAAI64B,EAAAA,OACJp4B,UAAWo4B,EAAAA,OACXV,SAAUU,EAAAA,OACV1zB,KAAM0zB,EAAAA,IACNqsM,YAAarsM,EAAAA,QAAkBA,EAAAA,KAC/B6vN,aAAc7vN,EAAAA,KACdxmB,MAAOwmB,EAAAA,UAAoB,CAACA,EAAAA,IAAeA,EAAAA,QAAkBA,EAAAA,OAC7D11B,aAAc01B,EAAAA,UAAoB,CAACA,EAAAA,IAAeA,EAAAA,QAAkBA,EAAAA,OACpEzmB,SAAUymB,EAAAA,KACV64F,UAAW74F,EAAAA,MAAgB,CAAC,SAAU,OAAQ,aAC9CpmB,UAAWomB,EAAAA,OACX4vN,WAAY5vN,EAAAA,OACZ/xB,SAAU+xB,EAAAA,KACVtQ,IAAKsQ,EAAAA,MAAgB,CAAC,MAAO,QAC7BuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjB1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,WAEhD5C,EAAe,CACfuyN,KAAM33O,EAAAA,EACN1K,KAAM,SACNW,UAAU,EACV3D,aAAc,KACd+hO,YAAa,GACb38M,IAAK,MACLmpG,UAAW,OACXj/G,UAAW,OACXg2O,WAAY,QACZnB,UAAW,aAEfgB,EAAS5hN,YAAc,qBAEvB4hN,EAAS1vN,UAAYA,EACrB0vN,EAASryN,aAAeA,+BC7KjB,IAAIsxN,2BACX,SAAWA,GACPA,EAAyB,OAAI,SAC7BA,EAAsB,IAAI,MAC1BA,EAA0B,QAAI,SACjC,CAJD,CAIGA,IAAqBA,EAAmB,CAAC,IAIrC,IAAI0B,EAAc,SAAUtpP,EAAOsf,GACtC,OAAQA,EAAO7Y,MACX,KAAKmhP,EAAiBl9M,IAElB,MACJ,KAAKk9M,EAAiBn9M,OAClB,OAAOzqC,EAAM+P,QAAO,SAAU5C,GAAK,OAAOA,EAAEmS,EAAOwpO,cAAgBxpO,EAAO3d,OAAS,IACvF,KAAKimP,EAAiBkC,QAElB,MACJ,QACI,OAAO9pP,EAEnB,+BCtBO,IAAI6nP,2BACX,SAAWA,GACPA,EAAmB,KAAI,OACvBA,EAAmB,KAAI,OACvBA,EAAsB,QAAI,UAC1BA,EAAoB,MAAI,OAC3B,CALD,CAKGA,IAAiBA,EAAe,CAAC,IAI7B,IAAI+B,EAAe,SAAU5pP,EAAOsf,GACvC,IAAIyqO,EAAezqO,EAAOI,MAAM6tE,WAAU,SAAUpgF,GAAK,OAAOA,IAAMnN,CAAO,IAC7E,OAAQsf,EAAO7Y,MACX,KAAKohP,EAAa/sN,KACd,OAAOivN,IAAiBzqO,EAAOI,MAAM5Q,OAAS,EACxC9O,EACAsf,EAAOI,MAAMqqO,EAAe,GACtC,KAAKlC,EAAa9sN,KACd,OAAwB,IAAjBgvN,EACD/pP,EACAsf,EAAOI,MAAMqqO,EAAe,GACtC,KAAKlC,EAAavmP,QACd,OAAOge,EAAO3d,QAClB,KAAKkmP,EAAatrK,MACd,OAAO,KACX,QACI,OAAOv8E,EAEnB,0DC/BA,IAYWgqP,EASAvC,EArBP/3K,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,GAKA,SAAW6/L,GACPA,EAAuB,OAAI,SAC3BA,EAAyB,SAAI,WAC7BA,EAAqB,KAAI,MAC5B,CAJD,CAIGA,IAAmBA,EAAiB,CAAC,IAKxC,SAAWvC,GACPA,EAAyB,OAAI,SAC7BA,EAAyB,OAAI,QAChC,CAHD,CAGGA,IAAqBA,EAAmB,CAAC,IAIrC,IAAIwB,EAAmB,SAAUjpP,EAAOsf,GAC3C,OAAQA,EAAOyyG,WACX,KAAKi4H,EAAehlO,OAChB,OAAQ1F,EAAO7Y,MACX,KAAKghP,EAAiB3yB,OAClB,IAAK7vM,MAAMC,QAAQllB,IAAoB,OAAVA,EACzB,OAAOsf,EAAO3d,UAAY3B,EAAQ,KAAOsf,EAAO3d,QAEpD,MAAM,IAAI23B,MAAM,gDAEpB,KAAKmuN,EAAiBh9M,OAClB,OAAOnrB,EAAO3d,UAAY3B,EAAQ,KAAOA,EAE7C,QACI,OAAOA,EAEnB,KAAKgqP,EAAex9M,SAChB,OAAQltB,EAAO7Y,MACX,KAAKghP,EAAiB3yB,OAClB,GAAI7vM,MAAMC,QAAQllB,GACd,OAAOA,EAAM6rD,MAAK,SAAU1+C,GAAK,OAAOA,IAAMmS,EAAO3d,OAAS,IACxD3B,EAAM+P,QAAO,SAAU5C,GAAK,OAAOA,IAAMmS,EAAO3d,OAAS,IACzD+tE,EAAcA,EAAc,GAAI1vE,GAAO,GAAO,CAACsf,EAAO3d,UAAU,GAE1E,GAAc,OAAV3B,EACA,MAAO,CAACsf,EAAO3d,SAEnB,MAAM,IAAI23B,MAAM,mDAEpB,KAAKmuN,EAAiBh9M,OAClB,OAAIxlB,MAAMC,QAAQllB,GACPA,EAAM6rD,MAAK,SAAU1+C,GAAK,OAAOA,IAAMmS,EAAO3d,OAAS,IACxD3B,EAAM+P,QAAO,SAAU5C,GAAK,OAAOA,IAAMmS,EAAO3d,OAAS,IACzD+tE,EAAcA,EAAc,GAAI1vE,GAAO,GAAO,CAACsf,EAAO3d,UAAU,GAEnE3B,EAEX,QACI,OAAOA,EAEnB,KAAKgqP,EAAejyF,KAChB,OAAO,KACX,QACI,OAAO/3J,EAEnB,kFCrEWiqP,EAAa,SAAU9+O,GAC9B,IAAI4iC,EAAcvtC,EAAAA,aAAkB,SAAUW,GAC1CgK,EAAM7I,QAAQnB,EAAOgK,EAAM0W,MAC/B,GAAG,CAAC1W,IACA++O,EAAK/+O,EAAMG,SAAStJ,QAAUmJ,EAAMsF,YAAwBtQ,IAAfgL,EAAMsF,KAAqBtF,EAAMnJ,OAAS,MACvFgJ,OAA+B7K,IAAxBgL,EAAMG,SAASN,KAAqBG,EAAMG,SAASN,KAAQG,EAAM2H,UAAY3H,EAAMG,SAASH,EAAM2H,WAAa3H,EAAMG,SAC5HmF,EAAQjQ,EAAAA,cAAoB,KAAM,CAAEH,GAAI8K,EAAM9K,GAAIS,WAAWu7B,EAAAA,EAAAA,GAAW,SAAUlxB,EAAMrK,UAAW,CAAE,UAAWqK,EAAM23B,UAAYtK,UAAW,EAAGl2B,QAASyrC,EAAajR,YAAa3xB,EAAMg/O,OAAQC,cAAej/O,EAAMg/O,OAAQnlP,KAAM,WAAY,gBAAiBmG,EAAMG,SAASnE,eAAYhH,GAAcK,EAAAA,cAAoB,OAAQ,CAAEg4B,UAAW,EAAG13B,WAAWu7B,EAAAA,EAAAA,GAAW,qBAAsB,CAC9X,aAAclxB,EAAMG,SAASoB,SAC7B,aAAcvB,EAAMG,SAASnE,WAC7BoxB,IAAK,QAAU2xN,EAChB1pP,EAAAA,cAAoB0pP,EAAI,CAAEz5O,KAAMtF,EAAMG,SAAUorB,UAAWvrB,EAAM0W,QACjErhB,EAAAA,cAAoBA,EAAAA,SAAgB,MAClC2K,EAAMG,SAASjJ,MAAQ8I,EAAMG,SAAS66O,YAAe3lP,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAWqK,EAAMG,SAAS66O,UAAWpjP,KAAMoI,EAAMG,SAASjJ,KAAMA,KAAM8I,EAAMG,SAASs6B,UAC1Kz6B,EAAMG,SAASoR,UAAclc,EAAAA,cAAoB,MAAO,CAAEwE,KAAM,eAAgB0U,IAAK,GAAID,IAAKtO,EAAMG,SAASoR,SAAU5b,UAAW,WAClIkK,GAAUxK,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,oBAAsBkK,MAClF,YAAwB7K,IAAfgL,EAAMsF,WACMtQ,IAAjBgL,EAAMnJ,OAAwBmJ,EAAMnJ,OAAO0xB,UAAKvzB,EAAWsQ,EAAMtF,GAASsF,CAClF,EACAw5O,EAAWljN,YAAc,kPCvBrB7T,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAgCIla,EAAgC,SAAUgV,GAE1C,SAAShV,EAAetU,GACpB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAiJxC,OA7IA0C,EAAM3vB,MAAQ,CACV8T,QAAQ,EACRgvB,SAAS,EACTunN,cAAe,GAEnB16N,EAAMmD,QAAU,KAChBnD,EAAM26N,WAAa,KACnB36N,EAAM0I,KAAO,KACb1I,EAAM46N,WAAY,EAClB56N,EAAMyR,MAAOA,EAAAA,EAAAA,KACbzR,EAAM66N,YAAc,GACpB76N,EAAM+I,UAAY,SAAUv3B,GACxB,IAAIkpP,EAAe16N,EAAM3vB,MAAMqqP,aAC/B,GAAIlpP,EAAM0+B,OACDlQ,EAAM7b,QAAU3S,EAAMm2B,UAAYtD,EAAAA,EAAKI,KAKnCzE,EAAM7b,QAAU3S,EAAMm2B,UAAYtD,EAAAA,EAAKG,KAC5CxE,EAAM6L,SAAS,CAAE6uN,cAAe,IAChC16N,EAAM86N,SAAQ,KANd96N,EAAM86N,SAAQ,GACd96N,EAAM+6N,mBAAmBvpP,GAAO,GAChCwuB,EAAM6L,SAAS,CAAE6uN,aAAc,SAJvC,CAYA,IAAI36O,EAAWoS,EAAS,CAAC,EAAG6N,EAAM3vB,OAClC,GAAImB,EAAMm2B,UAAYtD,EAAAA,EAAK8L,OAAS3+B,EAAMm2B,UAAYtD,EAAAA,EAAKytB,MAAO,CAC1D4oM,GAAgB,GAChB16N,EAAMg7N,mBAAmBxpP,EAAOkpP,GAIpClpP,EAAM+gB,iBACN,IAAI0oO,GAAaj7N,EAAM7b,OAMvB,OALA6b,EAAM86N,QAAQG,QACVA,IACAj7N,EAAM+6N,mBAAmBvpP,GAAO,GAChCwuB,EAAM6L,SAAS,CAAE6uN,aAAc16N,EAAM7b,QAAU,EAAI,KAG3D,CACK,GAAI6b,EAAM7b,QAAU3S,EAAMm2B,UAAYtD,EAAAA,EAAKiP,IAG5C,OAFAtT,EAAM6L,SAAS,CAAE6uN,cAAe,SAChC16N,EAAM86N,SAAQ,GAGlB,GAAI96N,EAAM7b,OAAQ,CACd,IAAI+2O,GAAavqN,EAAAA,EAAAA,GAAW+pN,EAAclpP,EAAMm2B,QAASn2B,EAAM0+B,OAAQlQ,EAAM66N,YAAY17O,QACzFY,EAAS26O,aAAeQ,EACxB,IAAIC,EAAW3pP,EAAMm2B,UAAYtD,EAAAA,EAAKG,IAAMhzB,EAAMm2B,UAAYtD,EAAAA,EAAKI,MAC/DjzB,EAAMm2B,UAAYtD,EAAAA,EAAKrX,MAAQxb,EAAMm2B,UAAYtD,EAAAA,EAAKltB,MACrD3F,EAAM0+B,SAAWirN,GAAY3pP,EAAMm2B,UAAYtD,EAAAA,EAAKE,MAAQ/yB,EAAMm2B,UAAYtD,EAAAA,EAAKC,KAEpF9yB,EAAM+gB,gBAEd,CACAyN,EAAM6L,SAAS9rB,EAhCf,CAiCJ,EACAigB,EAAMo7N,YAAc,SAAUC,GAC1Br7N,EAAM46N,WAAY,EAClBS,IACAhlP,OAAOi3B,YAAW,WAAc,OAAOtN,EAAM46N,WAAY,CAAO,GAAG,EACvE,EACA56N,EAAMiH,YAAc,SAAUz1B,GACtBwuB,EAAM46N,YAGV56N,EAAM6L,SAAS,CAAEsH,SAAS,EAAMunN,aAAc16N,EAAM7b,OAAS,GAAK,KAClE+/L,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAM0rB,QAAS11B,EAAOwuB,OAAOxvB,GACrD,EACAwvB,EAAMmH,WAAa,SAAU31B,GACrBwuB,EAAM46N,YAGV56N,EAAM6L,SAAS,CAAEsH,SAAS,EAAOunN,cAAe,IAChD16N,EAAM86N,SAAQ,IACd52C,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAM4rB,OAAQ51B,EAAOwuB,OAAOxvB,GACpD,EACAwvB,EAAM86N,QAAU,SAAU/3O,GACtBid,EAAMs7N,qBAAuBv4O,EAC7Bid,EAAM6L,SAAS,CAAE1nB,OAAQpB,GAC7B,EACAid,EAAMhQ,YAAc,SAAUxe,EAAO+pP,GACjCv7N,EAAM6L,SAAS,CAAE6uN,cAAe,IAChC16N,EAAM86N,SAAQ,GACd96N,EAAMg7N,mBAAmBxpP,EAAO+pP,EACpC,EACAv7N,EAAMw7N,WAAa,SAAUhqP,IACL+1B,EAAAA,EAAAA,GAAiBzb,YACfkU,EAAM0I,MACxBl3B,EAAM+gB,gBAEd,EACAyN,EAAMguK,UAAY,SAAUx8L,GACxBA,EAAM+gB,iBACN,IAAI+U,GAAgBC,EAAAA,EAAAA,GAAiBzb,UACjCkU,EAAM2F,SAAW2B,IAAkBtH,EAAM2F,SAAW2B,IAAkBtH,EAAM0I,MAC5E1I,EAAM2F,QAAQJ,OAEtB,EACAvF,EAAMy7N,aAAe,WACbz7N,EAAM3vB,MAAM8iC,SACZnT,EAAMo7N,aAAY,WACVp7N,EAAM2F,UACN3F,EAAM2F,QAAQm3E,gBAAgB,YAC9B98E,EAAM2F,QAAQJ,MAAM,CAAEkC,eAAe,IAE7C,IAEJzH,EAAM+6N,mBAAmB,CAAC,GAAG,EACjC,EACA/6N,EAAM07N,QAAU,SAAUhzN,GACtB1I,EAAM0I,KAAOA,EACTA,GAAQ1I,EAAM3vB,MAAM8iC,SACpBnT,EAAMo7N,aAAY,WACd1yN,EAAKnD,MAAM,CAAEkC,eAAe,IACxBzH,EAAM2F,UACN3F,EAAM2F,QAAQkD,UAAY,EAElC,GAER,EACA7I,EAAM27N,kBAAoB,SAAUnqP,GAChC,GAAKwuB,EAAM66N,YAAY17O,OAAvB,CAGA,IAAIy8O,GAAU57N,EAAM7b,OACpB6b,EAAM6L,SAAS,CACXsH,SAAS,EACTunN,aAAckB,EAAS,GAAK,IAEhC57N,EAAM86N,QAAQc,GACVA,GACA57N,EAAM+6N,mBAAmBvpP,EAAOoqP,EARpC,CAUJ,EACA57N,EAAM+6N,mBAAqB,SAAUc,EAAiBhwO,IAClDq4L,EAAAA,EAAAA,GAAcr4L,EAAOmU,EAAMxkB,MAAMs7B,OAAS9W,EAAMxkB,MAAM4L,QAASy0O,EAAiB77N,OAAOxvB,GACvFwvB,EAAMs7N,0BAAuB9qP,CACjC,GACAgjC,EAAAA,EAAAA,GAAgBC,EAAAA,GACTzT,CACX,CAoHA,OAxQAuD,EAAUzT,EAAgBgV,GAqJ1B7kB,OAAO6nB,eAAehY,EAAe0N,UAAW,SAAU,CACtDuK,IAAK,WACD,YAAqCv3B,IAA9B8sB,KAAKg+N,qBACNh+N,KAAKg+N,0BACiB9qP,IAAtB8sB,KAAK9hB,MAAM2I,OACPmZ,KAAKjtB,MAAM8T,OACXmZ,KAAK9hB,MAAM2I,MACzB,EACA6jB,YAAY,EACZC,cAAc,IAKlBnY,EAAe0N,UAAUnrB,OAAS,WAC9B,IAAI2tB,EAAQ1C,KACR65N,EAAM75N,KAAK8jB,QACXnoB,EAAMk+N,EAAM,WAAQ3mP,EACpBuE,EAAKuoB,KAAK9hB,MAAO9K,EAAKqE,EAAGrE,GAAIM,EAAQ+D,EAAG/D,MAAO63B,EAAW9zB,EAAG8zB,SAAUrxB,EAAWzC,EAAGyC,SAKzF,OAJA8lB,KAAKu9N,YAAcv9N,KAAK9hB,MAAMuU,OAC1Blf,EAAAA,SAAeinD,QAAQx6B,KAAK9hB,MAAMzK,UAC7BqP,QAAO,SAAU00G,GAAS,OAAOA,GAASA,EAAMh+G,OAASglP,EAAAA,CAAoB,IAC7Ev+O,KAAI,SAAUu3G,GAAS,OAAOA,EAAMt5G,KAAO,IAC5C3K,EAAAA,cAAoB,MAAO,CAAEH,GAAIA,EAAIM,MAAOA,EAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,oBAAqB,CAC9F,UAAWpP,KAAKjtB,MAAM8iC,SACvB7V,KAAK9hB,MAAMrK,WAAY43B,UAAWzL,KAAKyL,UAAW7B,QAAS5J,KAAK2J,YAAaG,OAAQ9J,KAAK6J,WAAYlO,IAAKA,EAAK5nB,IAAK,SAAUy3B,GAAM,OAAO9I,EAAMmD,QAAU2F,CAAI,GACnKj4B,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEoE,KAAMymB,KAAK9hB,MAAM3E,KAAM+9B,QAAStX,KAAK9hB,MAAMo5B,QAASnzB,SAAU6b,KAAK9hB,MAAMiG,SAAUpK,WAAYimB,KAAK9hB,MAAMnE,WAAY1E,QAAS2qB,KAAKq+N,kBAAmBxuN,YAAa7P,KAAK0wK,UAAWx2L,SAAUA,QAAYhH,EAAWq4B,SAAUA,EAAUkzN,UAAWz+N,KAAK9hB,MAAMugP,UAAWrpP,KAAM4qB,KAAK9hB,MAAM9I,KAAMujC,QAAS3Y,KAAK9hB,MAAMy6B,QAASugN,UAAWl5N,KAAK9hB,MAAMg7O,UAAWrlP,UAAWmsB,KAAK9hB,MAAMwgP,YAAajvO,SAAUuQ,KAAK9hB,MAAMuR,SAAUkM,IAAKA,EAAK5nB,IAAK,SAAU47B,GAAO,OAAOjN,EAAM26N,WAAa1tN,GAAOA,EAAItH,OAAS,EAAG7uB,KAAM,SAAU,iBAAiB,EAAM,gBAAiBwmB,KAAKnZ,aAAU3T,EAAW,aAAc8sB,KAAK9hB,MAAMi9O,UAAW,gBAAiBn7N,KAAKnZ,OAASmZ,KAAKmU,UAAOjhC,EAAWE,GAAI,UAAY4sB,KAAKmU,KAAMn0B,MAAOggB,KAAK9hB,MAAM8B,OAASggB,KAAK9hB,MAAMH,MAC7vBiiB,KAAKyb,YAAYo+M,GACzB,EAIArnO,EAAe0N,UAAU4K,kBAAoB,iBAEjB53B,IAAnB8sB,KAAK9hB,MAAMyd,KAAqBqE,KAAK8jB,SAAY9jB,KAAKnZ,SACvDmZ,KAAK+K,aAEb,EACApoB,OAAO6nB,eAAehY,EAAe0N,UAAW,UAAW,CAIvDuK,IAAK,WACD,OAAOzK,KAAKq9N,UAChB,EACA3yN,YAAY,EACZC,cAAc,IAElBnY,EAAe0N,UAAUw9N,mBAAqB,SAAUa,EAAiB3pO,GAChEoL,KAAK2+N,eAAe/pO,KACrBgyL,EAAAA,EAAAA,GAAc5mL,KAAK9hB,MAAMwU,YAAa6rO,EAAiBv+N,KAAM,CACzDxc,KAAMwc,KAAKu9N,YAAY3oO,GACvB6U,UAAW7U,GAGvB,EACApC,EAAe0N,UAAUub,YAAc,SAAUo+M,GAC7C,IAAIpiP,EACAI,EAAKmoB,KAAK9hB,MAAM67B,cAAeA,OAAuB,IAAPliC,EAAgB,CAAC,EAAIA,EACpEulP,EAAep9N,KAAKjtB,MAAMqqP,aAC9B,OAAQ7pP,EAAAA,cAAoBqkC,EAAAA,EAAO,CAAEkB,OAAQ9Y,KAAK6F,QAASqE,KAAMlK,KAAKnZ,OAAQokB,QAAS8O,EAAc9O,QAAS8N,YAAY3J,EAAAA,EAAAA,GAAW,eAAgB2K,EAAchB,YAAaC,YAAae,EAAcf,cAAe4lN,EAAAA,EAAAA,GAAe/E,GAAM1gN,WAAYY,EAAcZ,aAAc0lN,EAAAA,EAAAA,GAAchF,GAAMnmP,MAAOmmP,EAAM,CAAExoN,UAAW,YAAUn+B,EAAW4W,QAASkW,KAAKm+N,cACpW5qP,EAAAA,cAAoB,KAAM,CAAEwE,KAAM,OAAQ3E,GAAI4sB,KAAKmU,KAAM,kBAAmB,UAAYnU,KAAKmU,KAAM5I,UAAW,EAAG,wBAAyB6xN,GAAgB,EAAI,GAAGl5O,OAAO8b,KAAKmU,KAAM,KAAKjwB,OAAOk5O,QAAgBlqP,EAAWa,IAAKisB,KAAKo+N,QAASvqP,WAAWu7B,EAAAA,EAAAA,GAAW,gCAAiC33B,EAAK,CAAC,EAClSA,EAAG,gBAAgByM,OAAOk0B,EAAAA,EAAeC,QAAQrY,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,KACpG9B,KAAQuoB,KAAK8+N,oBAC7B,EACAtsO,EAAe0N,UAAU4+N,iBAAmB,WACxC,IAAIp8N,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOsF,EAAO/L,EAAG+L,KAAMu7O,EAAatnP,EAAGsnP,WAAYl5O,EAAYpO,EAAGoO,UAChF,OAAOma,KAAKu9N,YAAY17O,OAAS,EAAKme,KAAKu9N,YAAYt9O,KAAI,SAAU5B,EAAUuW,GAC3E,OAAQrhB,EAAAA,cAAoBypP,EAAAA,EAAY,CAAEnpP,UAAW,cAAewK,SAAUA,EAAUwH,UAAWA,EAAWgwB,QAASnT,EAAM3vB,MAAMqqP,eAAiBxoO,EAAOvf,QAASqtB,EAAMhQ,YAAawqO,OAAQx6N,EAAMw7N,WAAYnpP,OAAQgqP,EAAYv7O,KAAMA,EAAMoR,MAAOA,EAAO0W,IAAK1W,EAAOxhB,GAAI,GAAG8Q,OAAOwe,EAAMyR,KAAM,KAAKjwB,OAAO0Q,IACrT,IAAM,IACV,EACApC,EAAe0N,UAAUy+N,eAAiB,SAAU/pO,GAChD,OAAOoL,KAAKu9N,YAAY3oO,GAASoL,KAAKu9N,YAAY3oO,GAAO1a,SAAW8lB,KAAK9hB,MAAMhE,QACnF,EACAsY,EAAe0N,UAAU4jB,MAAQ,WAC7B,YAA0B5wC,IAAnB8sB,KAAK9hB,MAAMyd,IAAuC,QAAnBqE,KAAK9hB,MAAMyd,MAC3CqE,KAAK6F,SAAwD,QAA7C8tB,iBAAiB3zB,KAAK6F,SAASwL,SACzD,EAIA7e,EAAewZ,UAAY,CACvByyN,UAAWxyN,EAAAA,OACXkvN,UAAWlvN,EAAAA,OACXjsB,MAAOisB,EAAAA,OACPrC,QAASqC,EAAAA,KACTnC,OAAQmC,EAAAA,KACRvZ,YAAauZ,EAAAA,KACbuN,OAAQvN,EAAAA,KACRniB,QAASmiB,EAAAA,KACTxZ,MAAOwZ,EAAAA,QAAkBA,EAAAA,KACzBpmB,UAAWomB,EAAAA,OACXV,SAAUU,EAAAA,OACV/xB,SAAU+xB,EAAAA,KACV72B,KAAM62B,EAAAA,OACN0M,QAAS8gN,EAAAA,GACTP,UAAWjtN,EAAAA,OACXxc,SAAUwc,EAAAA,OACV8N,cAAe9N,EAAAA,OACf8yN,WAAY9yN,EAAAA,KACZzoB,KAAMyoB,EAAAA,KACNp4B,UAAWo4B,EAAAA,OACXyyN,YAAazyN,EAAAA,OACbtQ,IAAKsQ,EAAAA,QAKTzZ,EAAe6W,aAAe,CAC1B9vB,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,QACVpK,WAAY,QAETyY,CACX,CA1QoC,CA0QlCjf,EAAAA,iFCnUE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAiBzCm9N,EAAoC,SAAUh3N,GAE9C,SAASg3N,IACL,OAAkB,OAAXh3N,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAmBA,OAtBAiG,EAAUu4N,EAAoBh3N,GAO9Bg3N,EAAmBt+N,UAAUnrB,OAAS,WAClC,OAAO,IACX,EAIAypP,EAAmBxyN,UAAY,CAC3BjuB,KAAMkuB,EAAAA,OACN72B,KAAM62B,EAAAA,OACNitN,UAAWjtN,EAAAA,OACXxc,SAAUwc,EAAAA,OACVxsB,SAAUwsB,EAAAA,KACV/xB,SAAU+xB,EAAAA,KACVl3B,OAAQk3B,EAAAA,KAELuyN,CACX,CAxBwC,CAwBtCjrP,EAAAA,+OCzCE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA+CzC29N,EAA6B,SAAUx3N,GAEvC,SAASw3N,EAAY9gP,GACjB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA4JxC,OAxJA0C,EAAM3vB,MAAQ,CACV8iC,SAAS,EACTunN,cAAe,EACfv2O,QAAQ,GAEZ6b,EAAMmD,QAAU,KAChBnD,EAAM26N,WAAa,KACnB36N,EAAM0I,KAAO,KACb1I,EAAMyR,MAAOA,EAAAA,EAAAA,KACbzR,EAAM46N,WAAY,EAClB56N,EAAM66N,YAAc,GACpB76N,EAAM+I,UAAY,SAAUv3B,GACxB,IAAIkpP,EAAe16N,EAAM3vB,MAAMqqP,aAC/B,GAAIlpP,EAAM0+B,OACDlQ,EAAM7b,QAAU3S,EAAMm2B,UAAYtD,EAAAA,EAAKI,KAKnCzE,EAAM7b,QAAU3S,EAAMm2B,UAAYtD,EAAAA,EAAKG,KAC5CxE,EAAM6L,SAAS,CAAE6uN,cAAe,IAChC16N,EAAM86N,SAAQ,KANd96N,EAAM+6N,mBAAmBvpP,GAAO,GAChCwuB,EAAM6L,SAAS,CAAE6uN,aAAc,IAC/B16N,EAAM86N,SAAQ,QAJtB,CAYA,IAAI/6O,OAAWvP,EACf,GAAIgB,EAAMm2B,UAAYtD,EAAAA,EAAK8L,OAAS3+B,EAAMm2B,UAAYtD,EAAAA,EAAKytB,OAKvD,GAFAtgD,EAAM+gB,iBACNyN,EAAMg7N,mBAAmBxpP,EAAOkpP,GAC5BA,GAAgB,EAAG,CACnB36O,EAAW,CACP26O,aAAc16N,EAAM7b,QAAU,EAAI,GAEtC,IAAI82O,GAAaj7N,EAAM7b,OACvB6b,EAAM86N,QAAQG,GACVA,GACAj7N,EAAM+6N,mBAAmBvpP,EAAOypP,EAExC,OAEC,GAAIj7N,EAAM7b,QAAU3S,EAAMm2B,UAAYtD,EAAAA,EAAKiP,IAG5C,OAFAtT,EAAM6L,SAAS,CAAE6uN,cAAe,SAChC16N,EAAM86N,SAAQ,GAGlB,GAAI96N,EAAM7b,OAAQ,CACd,IAAI+2O,GAAavqN,EAAAA,EAAAA,GAAW+pN,EAAclpP,EAAMm2B,QAASn2B,EAAM0+B,OAAQlQ,EAAM66N,YAAY17O,QACrF+7O,IAAeR,KACf36O,EAAWA,GAAY,CAAC,GACf26O,aAAeQ,GAE5B,IAAIC,EAAW3pP,EAAMm2B,UAAYtD,EAAAA,EAAKG,IAAMhzB,EAAMm2B,UAAYtD,EAAAA,EAAKI,MAC/DjzB,EAAMm2B,UAAYtD,EAAAA,EAAKrX,MAAQxb,EAAMm2B,UAAYtD,EAAAA,EAAKltB,MACrD3F,EAAM0+B,SAAWirN,GAAY3pP,EAAMm2B,UAAYtD,EAAAA,EAAKE,MAAQ/yB,EAAMm2B,UAAYtD,EAAAA,EAAKC,KAEpF9yB,EAAM+gB,gBAEd,CACIxS,GACAigB,EAAM6L,SAAS9rB,EArCnB,CAuCJ,EACAigB,EAAMo7N,YAAc,SAAUC,GAC1Br7N,EAAM46N,WAAY,EAClBS,IACAhlP,OAAOi3B,YAAW,WAAc,OAAOtN,EAAM46N,WAAY,CAAO,GAAG,EACvE,EACA56N,EAAMkH,QAAU,SAAU11B,GAClBwuB,EAAM46N,aAGV12C,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAM0rB,QAAS11B,EAAOwuB,OAAOxvB,GACjDwvB,EAAM6L,SAAS,CAAEsH,SAAS,IAC9B,EACAnT,EAAM86N,QAAU,SAAU/3O,GACtBid,EAAMs7N,qBAAuBv4O,EAC7Bid,EAAM6L,SAAS,CAAE1nB,OAAQpB,GAC7B,EACAid,EAAMhQ,YAAc,SAAUxe,EAAO+pP,GACpBv7N,EAAM7b,SAEf6b,EAAM6L,SAAS,CAAE6uN,aAAc,IAC/B16N,EAAM86N,SAAQ,IAElB96N,EAAMg7N,mBAAmBxpP,EAAO+pP,EACpC,EACAv7N,EAAMoH,OAAS,SAAU51B,GACjBwuB,EAAM46N,YAGV56N,EAAM6L,SAAS,CACXsH,SAAS,EACTunN,cAAe,IAEnB16N,EAAM86N,SAAQ,IACd52C,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAM4rB,OAAQ51B,EAAOwuB,OAAOxvB,GACpD,EACAwvB,EAAMy7N,aAAe,WACbz7N,EAAM3vB,MAAM8iC,SACZnT,EAAMo7N,aAAY,WACVp7N,EAAM2F,UACN3F,EAAM2F,QAAQm3E,gBAAgB,YAC9B98E,EAAM2F,QAAQJ,MAAM,CAAEkC,eAAe,IAE7C,IAEJzH,EAAM+6N,mBAAmB,CAAC,GAAG,EACjC,EACA/6N,EAAM07N,QAAU,SAAUhzN,GACtB1I,EAAM0I,KAAOA,EACTA,GAAQ1I,EAAM3vB,MAAM8iC,SACpBnT,EAAMo7N,aAAY,WACd1yN,EAAKnD,MAAM,CAAEkC,eAAe,IACxBzH,EAAM2F,UACN3F,EAAM2F,QAAQkD,UAAY,EAElC,GAER,EACA7I,EAAMu8N,iBAAmB,SAAU/qP,GAC/B,GAAIwuB,EAAM66N,YAAY17O,OAAQ,CAC1B,IAAIy8O,GAAU57N,EAAM7b,OAChBy3O,GACA57N,EAAM+6N,mBAAmBvpP,EAAOoqP,GAEpC57N,EAAM6L,SAAS,CACX6uN,aAAckB,EAAS,GAAK,EAC5BzoN,SAAS,IAEbnT,EAAM86N,QAAQc,EAClB,CACJ,EACA57N,EAAMw8N,gBAAkB,SAAUhrP,GAC9BA,EAAM+gB,iBACN,IAAI+U,GAAgBC,EAAAA,EAAAA,GAAiBzb,UACjCkU,EAAM2F,SAAW2B,IAAkBtH,EAAM2F,SAAW2B,IAAkBtH,EAAM0I,MAC5E1I,EAAM2F,QAAQJ,OAEtB,EACAvF,EAAMw7N,WAAa,SAAUhqP,IACL+1B,EAAAA,EAAAA,GAAiBzb,YACfkU,EAAM0I,MACxBl3B,EAAM+gB,gBAEd,EACAyN,EAAM+6N,mBAAqB,SAAUc,EAAiBhwO,IAClDq4L,EAAAA,EAAAA,GAAcr4L,EAAOmU,EAAMxkB,MAAMs7B,OAAS9W,EAAMxkB,MAAM4L,QAASy0O,EAAiB77N,OAAOxvB,GACvFwvB,EAAMs7N,0BAAuB9qP,CACjC,GACAgjC,EAAAA,EAAAA,GAAgBC,EAAAA,GACTzT,CACX,CA4HA,OA3RAuD,EAAU+4N,EAAax3N,GAgKvB7kB,OAAO6nB,eAAew0N,EAAY9+N,UAAW,SAAU,CACnDuK,IAAK,WACD,YAAqCv3B,IAA9B8sB,KAAKg+N,qBACNh+N,KAAKg+N,0BACiB9qP,IAAtB8sB,KAAK9hB,MAAM2I,OACPmZ,KAAKjtB,MAAM8T,OACXmZ,KAAK9hB,MAAM2I,MACzB,EACA6jB,YAAY,EACZC,cAAc,IAKlBq0N,EAAY9+N,UAAUnrB,OAAS,WAC3B,IAAI2tB,EAAQ1C,KACZA,KAAKu9N,YAAcv9N,KAAK9hB,MAAMuU,OAC1Blf,EAAAA,SAAeinD,QAAQx6B,KAAK9hB,MAAMzK,UAC7BqP,QAAO,SAAU00G,GAAS,OAAOA,GAASA,EAAMh+G,OAAS2lP,EAAAA,CAAiB,IAC1El/O,KAAI,SAAUu3G,GAAS,OAAOA,EAAMt5G,KAAO,IACpD,IAAI27O,EAAM75N,KAAK8jB,QACXnoB,EAAMk+N,EAAM,WAAQ3mP,EACpBuE,EAAKuoB,KAAK9hB,MAAO9K,EAAKqE,EAAGrE,GAAIM,EAAQ+D,EAAG/D,MAAO63B,EAAW9zB,EAAG8zB,SAAUrxB,EAAWzC,EAAGyC,SACzF,OAAQ3G,EAAAA,cAAoB,MAAO,CAAEH,GAAIA,EAAIM,MAAOA,EAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,iBAAkB,iBAAkB,CAC7G,UAAWpP,KAAKjtB,MAAM8iC,SACvB,aAAa3xB,OAAOk0B,EAAAA,EAAeE,WAAWtY,KAAK9hB,MAAMo5B,SAAW,WAAYtX,KAAK9hB,MAAMrK,WAAY43B,UAAWzL,KAAKyL,UAAW7B,QAAS5J,KAAK4J,QAASE,OAAQ9J,KAAK8J,OAAQnO,IAAKA,EAAK5nB,IAAK,SAAUy3B,GAAM,OAAO9I,EAAMmD,QAAU2F,CAAI,GAC3Oj4B,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEpB,IAAK,SAAUy3B,GAAM,OAAO9I,EAAM26N,WAAa7xN,GAAMA,EAAGnD,OAAS,EAAG7uB,KAAM,SAAUD,KAAMymB,KAAK9hB,MAAM3E,KAAM+9B,QAAStX,KAAK9hB,MAAMo5B,QAASnzB,SAAU6b,KAAK9hB,MAAMiG,SAAUpK,WAAYimB,KAAK9hB,MAAMnE,WAAY1E,QAAS,SAAUnB,GAAS,OAAOwuB,EAAMhQ,YAAYxe,GAAQ,EAAI,EAAGgG,SAAUA,QAAYhH,EAAWq4B,SAAUA,EAAUkzN,UAAWz+N,KAAK9hB,MAAMugP,UAAW5qP,UAAWmsB,KAAK9hB,MAAMwgP,YAAatpP,KAAM4qB,KAAK9hB,MAAM9I,KAAMujC,QAAS3Y,KAAK9hB,MAAMy6B,QAASugN,UAAWl5N,KAAK9hB,MAAMg7O,UAAWzpO,SAAUuQ,KAAK9hB,MAAMuR,SAAUkM,IAAKA,EAAK,gBAAiBzhB,EAAU,iBAAiB,EAAM,gBAAiB8lB,KAAKnZ,aAAU3T,EAAW,aAAc8sB,KAAK9hB,MAAMi9O,UAAW,gBAAiBn7N,KAAKnZ,OAASmZ,KAAKmU,UAAOjhC,EAAWE,GAAI,UAAY4sB,KAAKmU,KAAMn0B,MAAOggB,KAAK9hB,MAAM8B,OAASggB,KAAK9hB,MAAMH,MAC3xBxK,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEqE,KAAM,SAAUD,KAAMymB,KAAK9hB,MAAM3E,KAAM+9B,QAAStX,KAAK9hB,MAAMo5B,QAASnzB,SAAU6b,KAAK9hB,MAAMiG,SAAUpK,WAAYimB,KAAK9hB,MAAMnE,WAAY3E,KAAM,iBAAkBujC,QAASymN,EAAAA,IAAkBvrP,UAAW,uBAAwBqG,SAAUA,QAAYhH,EAAWq4B,UAAW,EAAGl2B,QAAS2qB,KAAKi/N,iBAAkBpvN,YAAa7P,KAAKk/N,gBAAiB/B,cAAen9N,KAAKk/N,gBAAiBvjO,IAAKA,EAAK,aAAc,yBACzaqE,KAAKyb,YAAYo+M,GACzB,EAIAmF,EAAY9+N,UAAU4K,kBAAoB,iBAEd53B,IAAnB8sB,KAAK9hB,MAAMyd,KAAqBqE,KAAK8jB,SAAY9jB,KAAKnZ,SACvDmZ,KAAK+K,aAEb,EACApoB,OAAO6nB,eAAew0N,EAAY9+N,UAAW,UAAW,CAIpDuK,IAAK,WACD,OAAOzK,KAAKq9N,UAChB,EACA3yN,YAAY,EACZC,cAAc,IAElBq0N,EAAY9+N,UAAUw9N,mBAAqB,SAAUa,EAAiBN,GAC7Dj+N,KAAK2+N,eAAeV,MACK,IAAtBA,GACAr3C,EAAAA,EAAAA,GAAc5mL,KAAK9hB,MAAMmhP,cAAed,EAAiBv+N,UAAM9sB,IAG/D0zM,EAAAA,EAAAA,GAAc5mL,KAAK9hB,MAAMwU,YAAa6rO,EAAiBv+N,KAAM,CACzDxc,KAAMwc,KAAKu9N,YAAYU,GACvBx0N,UAAWw0N,IAI3B,EACAe,EAAY9+N,UAAUub,YAAc,SAAUo+M,GAC1C,IAAIpiP,EACAI,EAAKmoB,KAAK9hB,MAAM67B,cAAeA,OAAuB,IAAPliC,EAAgB,CAAC,EAAIA,EACpEulP,EAAep9N,KAAKjtB,MAAMqqP,aAC9B,OAAQ7pP,EAAAA,cAAoBqkC,EAAAA,EAAO,CAAEkB,OAAQ9Y,KAAK6F,QAASqE,KAAMlK,KAAKnZ,OAAQokB,QAAS8O,EAAc9O,QAAS8N,YAAY3J,EAAAA,EAAAA,GAAW,eAAgB2K,EAAchB,YAAaC,YAAae,EAAcf,cAAe4lN,EAAAA,EAAAA,GAAe/E,GAAM1gN,WAAYY,EAAcZ,aAAc0lN,EAAAA,EAAAA,GAAchF,GAAMnmP,MAAOmmP,EAAM,CAAExoN,UAAW,YAAUn+B,EAAW4W,QAASkW,KAAKm+N,cACpW5qP,EAAAA,cAAoB,KAAM,CAAEwE,KAAM,OAAQ3E,GAAI4sB,KAAKmU,KAAM,kBAAmB,UAAYnU,KAAKmU,KAAM5I,UAAW,EAAGx3B,IAAKisB,KAAKo+N,QAAS,wBAAyBhB,GAAgB,EAAI,GAAGl5O,OAAO8b,KAAKmU,KAAM,KAAKjwB,OAAOk5O,QAAgBlqP,EAAWW,WAAWu7B,EAAAA,EAAAA,GAAW,gCAAiC33B,EAAK,CAAC,EAClSA,EAAG,gBAAgByM,OAAOk0B,EAAAA,EAAeC,QAAQrY,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,KACpG9B,KAAQuoB,KAAK8+N,oBAC7B,EACAE,EAAY9+N,UAAU4+N,iBAAmB,WACrC,IAAIp8N,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOsF,EAAO/L,EAAG+L,KAAMu7O,EAAatnP,EAAGsnP,WAAYl5O,EAAYpO,EAAGoO,UAChF,OAAOma,KAAKu9N,YAAY17O,OAAS,EAAKme,KAAKu9N,YAAYt9O,KAAI,SAAU5B,EAAUuW,GAC3E,OAAQrhB,EAAAA,cAAoBypP,EAAAA,EAAY,CAAEnpP,UAAW,cAAewK,SAAUA,EAAUwH,UAAWA,EAAWgwB,QAASnT,EAAM3vB,MAAMqqP,eAAiBxoO,EAAOvf,QAASqtB,EAAMhQ,YAAawqO,OAAQx6N,EAAMw7N,WAAYnpP,OAAQgqP,EAAYv7O,KAAMA,EAAM8nB,IAAK1W,EAAOA,MAAOA,EAAOxhB,GAAI,GAAG8Q,OAAOwe,EAAMyR,KAAM,KAAKjwB,OAAO0Q,IACrT,IAAM,IACV,EACAoqO,EAAY9+N,UAAUy+N,eAAiB,SAAU/pO,GAC7C,OAAOoL,KAAKu9N,YAAY3oO,GAASoL,KAAKu9N,YAAY3oO,GAAO1a,SAAW8lB,KAAK9hB,MAAMhE,QACnF,EACA8kP,EAAY9+N,UAAU4jB,MAAQ,WAC1B,YAA0B5wC,IAAnB8sB,KAAK9hB,MAAMyd,IAAuC,QAAnBqE,KAAK9hB,MAAMyd,MAC3CqE,KAAK6F,SAAwD,QAA7C8tB,iBAAiB3zB,KAAK6F,SAASwL,SACzD,EAIA2tN,EAAYhzN,UAAY,CACpByyN,UAAWxyN,EAAAA,OACXkvN,UAAWlvN,EAAAA,OACXjsB,MAAOisB,EAAAA,OACPozN,cAAepzN,EAAAA,KACfrC,QAASqC,EAAAA,KACTnC,OAAQmC,EAAAA,KACRvZ,YAAauZ,EAAAA,KACbuN,OAAQvN,EAAAA,KACRniB,QAASmiB,EAAAA,KACTluB,KAAMkuB,EAAAA,OACNxZ,MAAOwZ,EAAAA,QAAkBA,EAAAA,KACzBpmB,UAAWomB,EAAAA,OACXV,SAAUU,EAAAA,OACV/xB,SAAU+xB,EAAAA,KACV72B,KAAM62B,EAAAA,OACN0M,QAAS8gN,EAAAA,GACTP,UAAWjtN,EAAAA,OACXxc,SAAUwc,EAAAA,OACV8N,cAAe9N,EAAAA,OACf8yN,WAAY9yN,EAAAA,IACZzoB,KAAMyoB,EAAAA,KACNp4B,UAAWo4B,EAAAA,OACXyyN,YAAazyN,EAAAA,OACbtQ,IAAKsQ,EAAAA,QAKT+yN,EAAY31N,aAAe,CACvB9vB,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,QACVpK,WAAY,QAETilP,CACX,CA7RiC,CA6R/BzrP,EAAAA,iFC5UE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAiBzC89N,EAAiC,SAAU33N,GAE3C,SAAS23N,IACL,OAAkB,OAAX33N,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAkBA,OArBAiG,EAAUk5N,EAAiB33N,GAO3B23N,EAAgBj/N,UAAUnrB,OAAS,WAC/B,OAAO,IACX,EAIAoqP,EAAgBnzN,UAAY,CACxBjuB,KAAMkuB,EAAAA,OACN72B,KAAM62B,EAAAA,OACNitN,UAAWjtN,EAAAA,OACXxc,SAAUwc,EAAAA,OACV/xB,SAAU+xB,EAAAA,KACVl3B,OAAQk3B,EAAAA,KAELkzN,CACX,CAvBqC,CAuBnC5rP,EAAAA,uECpCEgtC,EAAW,SAAU68M,EAAc/yN,EAASuI,EAAQrR,GACpD,GAAIqR,EACA,OAAOwqN,EAEX,IAAIxoO,EAAQE,KAAKC,IAAIwM,EAAQ,EAAGzM,KAAKI,IAAI,EAAGkoO,IAC5C,OAAQ/yN,GACJ,KAAKtD,EAAAA,EAAK8L,MACV,KAAK9L,EAAAA,EAAKytB,MACV,KAAKztB,EAAAA,EAAKiP,IACN,OAAQ,EACZ,KAAKjP,EAAAA,EAAKG,GACV,KAAKH,EAAAA,EAAKrX,KACN,OAAOkF,EAAQ,EAAI,EAAI2M,EAAQ,EAAI3M,EAAQ,EAC/C,KAAKmS,EAAAA,EAAKI,KACV,KAAKJ,EAAAA,EAAKltB,MACN,OAAO+a,EAAQ,GAAK2M,EAAQ,EAAI3M,EAAQ,EAC5C,KAAKmS,EAAAA,EAAKE,KACN,OAAO,EACX,KAAKF,EAAAA,EAAKC,IACN,OAAOzF,EAAQ,EACnB,QACI,OAAO67N,EAEnB,+BCxBO,SAASwB,EAAeU,GAC3B,IAAIp/B,EAAQ,CAAEjnL,WAAY,OAAQC,SAAU,UAI5C,OAHIomN,IACAp/B,EAAMjnL,WAAa,SAEhBinL,CACX,CAIO,SAAS2+B,EAAcS,GAC1B,IAAIp/B,EAAQ,CAAEjnL,WAAY,OAAQC,SAAU,OAI5C,OAHIomN,IACAp/B,EAAMjnL,WAAa,SAEhBinL,CACX,6eCnBIj6L,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAuBzCk+N,EAA6B,SAAU/3N,GAEvC,SAAS+3N,IACL,IAAI78N,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAEhE,OADA0C,EAAM/iB,SAAW,KACV+iB,CACX,CAwBA,OA7BAuD,EAAUs5N,EAAa/3N,GAMvB7kB,OAAO6nB,eAAe+0N,EAAYr/N,UAAW,UAAW,CAIpDuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAKlB40N,EAAYr/N,UAAUnrB,OAAS,WAC3B,IAAI2tB,EAAQ1C,KACZ,OAAQzsB,EAAAA,cAAoB,MAAO,CAAEH,GAAI4sB,KAAK9hB,MAAM9K,GAAIS,WAAWu7B,EAAAA,EAAAA,GAAW,iBAAkBpP,KAAK9hB,MAAMrK,WAAYH,MAAOssB,KAAK9hB,MAAMxK,MAAOK,IAAK,SAAU2F,GAAK,OAAOgpB,EAAM/iB,SAAWjG,CAAG,GAAKsmB,KAAK9hB,MAAMzK,SACnN,EAIA8rP,EAAYvzN,UAAY,CACpBn4B,UAAWo4B,EAAAA,QAERszN,CACX,CA/BiC,CA+B/BhsP,EAAAA,yBC9CSisP,EAAgBjsP,EAAAA,YAAiB,SAAU2K,EAAOnK,GACzD,IAAIs0B,EAAU90B,EAAAA,OAAa,MACvBksP,EAASlsP,EAAAA,OAAa,MAC1BA,EAAAA,oBAA0BksP,GAAQ,WAAc,MAAQ,CAAEp3N,QAASA,EAAQh0B,QAAY,IACvFd,EAAAA,oBAA0BQ,GAAK,WAAc,MAAQ,CAAEs0B,QAASA,EAAQh0B,QAAY,IACpF,IAAIR,EAAYN,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,WAAYlxB,EAAMrK,UAAY,GAAG,CAACqK,EAAMrK,YACtG,OAAQN,EAAAA,cAAoB,OAAQ,CAAEQ,IAAKs0B,EAASx0B,UAAWA,GACnE,IACA2rP,EAAc1lN,YAAc,0BAC5B0lN,EAAcxzN,UAAY,CACtBn4B,UAAWo4B,EAAAA,uJClBXpX,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAkBW8iP,EAA2BnsP,EAAAA,YAAiB,SAAU2K,EAAOnK,GACpE,IAAIF,EAAYqK,EAAMrK,UAAWqG,EAAWgE,EAAMhE,SAAU6D,EAAOG,EAAMH,KAAM3I,EAAO8I,EAAM9I,KAAM1B,EAAQwK,EAAMxK,MAAON,EAAK8K,EAAM9K,GAAIyiC,EAAU33B,EAAM23B,QAAStK,EAAWrtB,EAAMqtB,SAAU3W,EAAQ1W,EAAM0W,MAAOvW,EAAWH,EAAMG,SAAUmF,EAAOtF,EAAMsF,KAAMm1B,EAAUz6B,EAAMy6B,QAASukN,EAASh/O,EAAMg/O,OAAQ7nP,EAAU6I,EAAM7I,QAASo3C,EAASjyB,EAAOtc,EAAO,CAAC,YAAa,WAAY,OAAQ,OAAQ,QAAS,KAAM,UAAW,WAAY,QAAS,WAAY,OAAQ,UAAW,SAAU,YAC3d22O,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACC23N,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,GAAG,CAACA,IACRpsP,EAAAA,oBAA0BQ,EAAK6rP,GAC/B,IAAI9+M,EAAcvtC,EAAAA,aAAkB,SAAUW,GACtCmB,QAAqBnC,IAAV0hB,IAAwB1a,GACnC7E,EAAQnB,EAAO0gB,EAEvB,GAAG,CAACvf,EAASuf,IACTirO,EAAiBtsP,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,aAAc,CAC7E,UAAWyG,EACX,aAAc37B,GACfrG,EAAY,GAAG,CAACA,EAAWqG,EAAU27B,IACpCiqN,EAAWt8O,EACf,OAAQjQ,EAAAA,cAAoB,KAAMshB,EAAS,CAAE9gB,IAAK8gP,EAAYzhP,GAAIA,EAAIS,UAAWgsP,EAAgBnsP,MAAOA,EAAOqE,KAAM,WAAYwzB,UAAUkvC,EAAAA,EAAAA,GAAYlvC,EAAUrxB,GAAW,gBAAiBA,EAAU,aAAc,GAAGgK,OAAOnG,GAAQ,GAAI,8BAA+B1I,QAASyrC,EAAajR,YAAaqtN,EAAQC,cAAeD,GAAUzwM,GAASqzM,EACnVvsP,EAAAA,cAAoBusP,EAAU,CAAEr2N,UAAW7U,EAAOpR,KAAMnF,IACvD9K,EAAAA,cAAoBA,EAAAA,SAAgB,KACjCwK,GAAQxK,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,mBAAqBkK,GACrE3I,GAAQujC,EAAWplC,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,kBAAmBiC,KAAMV,EAAMA,KAAMujC,IAAa,MAC7H,IACA+mN,EAAyB1zN,UAAY,CACjCn4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPx4B,SAAUw4B,EAAAA,IACV/xB,SAAU+xB,EAAAA,KACV4J,QAAS5J,EAAAA,KACTrX,MAAOqX,EAAAA,OACP72B,KAAM62B,EAAAA,OACN0M,QAAS8gN,EAAAA,GACT17O,KAAMkuB,EAAAA,OACNV,SAAUU,EAAAA,OACV8zN,WAAY9zN,EAAAA,KAEhByzN,EAAyB5lN,YAAc,8CC9E5BkmN,EAAiB,OAIjBC,EAAiB,SAAU/pM,GAClC,MAAmB,kBAARA,EACAA,EAAM,KAEVA,CACX,EAIW0oM,EAAiB,SAAUsB,EAAUrG,GAC5C,IAAI35B,EAAQ,CAAEjnL,WAAa4gN,EAAM,QAAU,OAAS3gN,SAAU,UAI9D,MAH4B,QAAxBgnN,EAASjnN,aACTinL,EAAMjnL,WAAa4gN,EAAM,OAAS,SAE/B35B,CACX,EAIW2+B,EAAgB,SAAUqB,EAAUrG,GAC3C,IAAI35B,EAAQ,CAAEjnL,WAAa4gN,EAAM,QAAU,OAAS3gN,SAAU,OAI9D,MAH4B,QAAxBgnN,EAASjnN,aACTinL,EAAMjnL,WAAa4gN,EAAM,OAAS,SAE/B35B,CACX,EA8CIigC,EAAqB,SAAUjgC,EAAOp8K,GAEtC,MAAO,CACH9c,IAAK8c,EAAQ,OAAS,QACtB0tD,OAAQ,OACRzuE,MAAO+gB,EAAQ,QAAU,QAJZo8K,EAAMjnL,YAKP,MACpB,EACImnN,EAAmB,SAAUlgC,GAC7B,MAAO,CACHtmN,IAAK,MACLymP,OAAQ,MACRlmJ,OAAQ,UACV+lH,EAAMhnL,UAAY,SACxB,YC5FIrkB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EA0BW0jP,EAAuB/sP,EAAAA,YAAiB,SAAU2K,EAAOnK,IAChEmiC,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAI1+B,EAAKyG,EAAMgiN,MAAOA,OAAe,IAAPzoN,EAAgB4xB,EAAa62L,MAAQzoN,EAAI8oP,EAAcriP,EAAMqiP,YAAa1sP,EAAYqK,EAAMrK,UAAWqG,EAAWgE,EAAMhE,SAAU9E,EAAO8I,EAAM9I,KAAMujC,EAAUz6B,EAAMy6B,QAASugN,EAAYh7O,EAAMg7O,UAAW9lP,EAAK8K,EAAM9K,GAAIqf,EAAQvU,EAAMuU,MAAOjP,EAAOtF,EAAMsF,KAAMzF,EAAOG,EAAMH,KAAMlG,EAAKqG,EAAMsiP,aAAcA,OAAsB,IAAP3oP,EAAgBwxB,EAAam3N,aAAe3oP,EAAIK,EAAKgG,EAAM3E,KAAMA,OAAc,IAAPrB,EAAgBmxB,EAAa9vB,KAAOrB,EAAIxE,EAAQwK,EAAMxK,MAAO2E,EAAK6F,EAAMo5B,QAASA,OAAiB,IAAPj/B,EAAgBgxB,EAAaiO,QAAUj/B,EAAII,EAAKyF,EAAMnE,WAAYA,OAAoB,IAAPtB,EAAgB4wB,EAAatvB,WAAatB,EAAIgoP,EAAeviP,EAAMuiP,aAAcl1N,EAAWrtB,EAAMqtB,SAAUkzN,EAAYvgP,EAAMugP,UAAW9lP,EAAKuF,EAAM67B,cAAeA,OAAuB,IAAPphC,EAAgB,CAAC,EAAIA,EAAI+nP,EAAQxiP,EAAMwiP,MAAOrrP,EAAU6I,EAAM7I,QAASqd,GAAcxU,EAAMwU,YAAakX,GAAU1rB,EAAM0rB,QAASE,GAAS5rB,EAAM4rB,OAAQ2B,GAAYvtB,EAAMutB,UAAW+N,GAASt7B,EAAMs7B,OAAQ1vB,GAAU5L,EAAM4L,QAAS2iC,GAASjyB,EAAOtc,EAAO,CAAC,QAAS,cAAe,YAAa,WAAY,OAAQ,UAAW,YAAa,KAAM,QAAS,OAAQ,OAAQ,eAAgB,OAAQ,QAAS,UAAW,aAAc,eAAgB,WAAY,YAAa,gBAAiB,QAAS,UAAW,cAAe,UAAW,SAAU,YAAa,SAAU,YAC5yCyiP,IAAgBC,EAAAA,EAAAA,KAChBC,GAAgBF,GAAgBA,GApBlB,EAEG,IAmBjBvmO,GAAS7mB,EAAAA,OAAa,MACtBshP,GAAathP,EAAAA,OAAa,MAC1B6qP,GAAU7qP,EAAAA,OAAa,MACvButP,GAAWvtP,EAAAA,OAAa,MACxBosP,GAAepsP,EAAAA,aAAkB,WAC7BshP,GAAWxgP,SACXwgP,GAAWxgP,QAAQ4zB,OAE3B,GAAG,IACC23N,GAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,GAAWxgP,QACpB4zB,MAAO03N,GACP,GAAG,CAACA,KACRpsP,EAAAA,oBAA0B6mB,GAAQwlO,IAClCrsP,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,GAAO/lB,OAAS,IACpE,IAAIgL,GAAK9L,EAAAA,UAAe,GAAQgb,GAAOlP,GAAG,GAAIm+O,GAAUn+O,GAAG,GACvD4U,GAAK1gB,EAAAA,UAAe,GAAQsiC,GAAU5hB,GAAG,GAAI8sO,GAAa9sO,GAAG,GAC7DG,GAAK7gB,EAAAA,UAAgB,GAAI6pP,GAAehpO,GAAG,GAAI4sO,GAAkB5sO,GAAG,GACpE6sO,GAAW1tP,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IACzDxY,IAAMs+N,EAAAA,EAAAA,GAAOpF,GAAY32O,EAAMyd,KAC/BmoB,GAAgB,QAARnoB,GACRulO,GAAS3tP,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IAC3D5gC,EAAAA,WAAgB,YD3BE,SAAUQ,EAAKmsN,EAAOqgC,EAAaz8M,GACrD,IAAI7K,EAAainL,EAAMjnL,WACnBC,EAAWgnL,EAAMhnL,SACrB,GAAInlC,EAAIM,QAAS,CACb,IAAI8sP,EAAOZ,QAAiCrtP,IAAlBqtP,EAAYp2K,EAClC81K,EAAeM,EAAYp2K,GAC3B61K,EACAoB,EAAab,QAAiCrtP,IAAlBqtP,EAAYp2K,EACxC,cAAcjmE,OAAO+7O,EAAeM,EAAYp2K,GAAI,KACpD,MACAk3K,EAAOd,QAAiCrtP,IAAlBqtP,EAAYlwJ,EAClC4vJ,EAAeM,EAAYlwJ,GAC3B2vJ,EACAsB,EAAaf,QAAiCrtP,IAAlBqtP,EAAYlwJ,EACxC,cAAcnsF,OAAO+7O,EAAeM,EAAYlwJ,GAAI,KACpD,MACJt8F,EAAIM,QAAQX,MAAMs2G,YAAYm2I,EAAmBjgC,EAAOp8K,GAAuB,WAAf7K,EAA0BmoN,EAAaD,GACvGptP,EAAIM,QAAQX,MAAMs2G,YAAYo2I,EAAiBlgC,GAAqB,WAAbhnL,EAAwBooN,EAAaD,GACxFv9M,IACkB,QAAb5K,GAAmC,WAAbA,GAAyC,UAAfD,GACjDllC,EAAIM,QAAQX,MAAMs2G,YAAY,OAAQ,SAEzB,WAAb9wE,GAAwC,QAAfD,GACzBllC,EAAIM,QAAQX,MAAMs2G,YAAY,QAAS,SAE1B,WAAb9wE,GAAwC,UAAfD,GACzBllC,EAAIM,QAAQX,MAAMs2G,YAAY,OAAQ,SAGlD,CACJ,CCFQrwG,CAASk7O,GAAY30B,EAAOqgC,EAAaz8M,GAC7C,GAAG,CAAC+wM,GAAY30B,EAAOqgC,EAAaz8M,KACpCvwC,EAAAA,WAAgB,WACRsiC,IAAWg/M,IAAcA,GAAWxgP,SAEpCwgP,GAAWxgP,QAAQ4zB,OAE3B,GAAG,CAAC4N,GAASg/M,KACb,IAAI4I,GAAqBlqP,EAAAA,aAAkB,SAAUgrP,EAAiB5lF,GAC7DlmJ,IAGLm0L,EAAAA,EAAAA,GAAcjuC,EAASn/H,GAAS1vB,GAASy0O,EAAiBqB,UAAuB1sP,EACrF,GAAG,CAACsmC,GAAQ1vB,GAAS2I,IACjBquB,GAAcvtC,EAAAA,aAAkB,SAAUW,GACrCA,EAAMkmB,SAAUlgB,KAGhBuY,GAASpd,GACVuxM,EAAAA,EAAAA,GAAcvxM,EAASnB,EAAO0rP,UAAuB1sP,IAGrDsqP,IAASjvO,IACTwyO,IAAW,GACXC,GAAiBzyO,IAAY,EAAL,GACxBkvO,GAAmBvpP,GAAQqa,KAEnC,GAAG,CAACivO,GAASuD,GAAYC,GAAiB3rP,EAASooP,GAC/ClvO,GAAMkE,EAAOvY,IACbyvB,GAAcp2B,EAAAA,aAAkB,SAAUW,GAC1C6sP,IAAW,GACXC,GAAgBzyO,GAAO,GAAK,GACxBqb,KACAg9K,EAAAA,EAAAA,GAAch9K,GAAS11B,EAAO0rP,UAAuB1sP,EAE7D,GAAG,CAAC02B,GAASm3N,GAAYC,KACrBn3N,GAAat2B,EAAAA,aAAkB,SAAUW,GACzC6sP,IAAW,GACXvD,IAAQ,GACRwD,IAAiB,IACjBp6C,EAAAA,EAAAA,GAAc98K,GAAQ51B,EAAO0rP,UAAuB1sP,GAC/Bqb,IAEjBkvO,GAAmBvpP,GAAO,EAElC,GAAG,CAAC41B,GAAQi3N,GAAYvD,GAASwD,GAAiBvD,KAC9C58M,GAAkBttC,EAAAA,aAAkB,SAAUW,GAC9CA,EAAM+gB,gBACV,GAAG,IACCssO,GAAyBhuP,EAAAA,aAAkB,SAAUgrP,EAAiB3pO,GACjEnC,IAGAA,EAAMmC,GAAO1a,WACd0sM,EAAAA,EAAAA,GAAcl0L,GAAa6rO,EAAiBqB,KAAuB,CAC/D4B,UAAW/uO,EAAMmC,GACjB6U,UAAW7U,IAGvB,GAAG,CAAClC,KACA+uO,GAAkBluP,EAAAA,aAAkB,SAAUW,EAAO+pP,GAChD/pP,EAAMkmB,QAAW3H,IAGtBuuO,GAAgB/C,GAChBT,IAAQ,GACR+D,GAAuBrtP,EAAO+pP,GAC9BR,GAAmBvpP,GAAO,GAC9B,GAAG,CAAC8sP,GAAiBxD,GAAS+D,GAAwB9D,KAClDiE,GAAiBnuP,EAAAA,aAAkB,SAAUW,IACzB+1B,EAAAA,EAAAA,GAAiBzb,YACfqmO,GAAWxgP,SAC7BH,EAAM+gB,gBAEd,GAAG,CAAC4/N,KACAzqN,GAAgB72B,EAAAA,aAAkB,SAAUW,GAC5C,IAAIytP,EAAYvE,GACZhpM,EAAc3hC,EAAQA,EAAM5Q,OAAS,GAAK,EAC1C+/O,EAAgC,WAAnB1hC,EAAMhnL,SACvB,OAAQhlC,EAAMm2B,SACV,KAAKtD,EAAAA,EAAK8L,MACV,KAAK9L,EAAAA,EAAKytB,MACFmtM,GAAa,GACbJ,GAAuBrtP,EAAOytP,GAElCztP,EAAM+gB,iBACNuoO,IAASjvO,IACTyyO,GAAiBzyO,IAAY,EAAL,GACxB,MACJ,KAAKwY,EAAAA,EAAKiP,IACN9hC,EAAM+gB,iBACNuoO,IAAQ,GACRwD,IAAiB,GACjB,MACJ,KAAKj6N,EAAAA,EAAKE,KACN/yB,EAAM+gB,iBACN+rO,GAAgB,GAChB,MACJ,KAAKj6N,EAAAA,EAAKC,IACN9yB,EAAM+gB,iBACN+rO,GAAgB5sM,GAChB,MACJ,KAAKrtB,EAAAA,EAAKI,KACV,KAAKJ,EAAAA,EAAKltB,MACN3F,EAAM+gB,iBACF0sO,EAAYvtM,IAAgBwtM,GAC5BZ,GAAgBW,EAAY,GAE5BA,EAAY,GAAKC,GACjBZ,GAAgBW,EAAY,GAEhC,MACJ,KAAK56N,EAAAA,EAAKG,GACV,KAAKH,EAAAA,EAAKrX,KACNxb,EAAM+gB,iBACF0sO,EAAY,IAAMC,GAClBZ,GAAgBW,EAAY,GAE5BA,EAAYvtM,GAAewtM,GAC3BZ,GAAgBW,EAAY,IAMxC/6C,EAAAA,EAAAA,GAAcn7K,GAAWv3B,EAAO0rP,UAAuB1sP,EAC3D,GAAG,CAACu4B,GAAW2xN,GAAc4D,GAAiBl9M,GAAO05M,KACjDzzM,GAAmBx2C,EAAAA,SAAc,WACjC,IAAIkE,EACJ,OAAO23B,EAAAA,EAAAA,GAAW,sBAAsB33B,EAAK,CACrC,WAAqB,UAAT8B,EACZ,WAAqB,WAATA,EACZ,WAAqB,UAATA,EACZ,aAAcW,EACd,iBAAmC,aAAjBsmP,EAClB,cAAgC,UAAjBA,EACf,UAAW3qN,KAEZ,aAAa3xB,OAAOk0B,EAAAA,EAAeE,WAAWhB,IAAYA,IAAYA,EACzE7/B,EAAG,eAAeyM,OAAOnK,IAAeA,EACxCtC,GAAK,KAAKyM,OAAOg8M,EAAMhnL,SAAU,KAAKh1B,OAAOg8M,EAAMjnL,YAAaplC,EACxE,GAAG,CAACkG,EAAYR,EAAM+9B,EAASp9B,EAAUsmP,EAActgC,EAAOrqL,GAAShiC,IACnEguP,GAAYpvO,GAAUA,EAAMxS,KAAI,SAAUooB,EAASzT,GACnD,OAAQrhB,EAAAA,cAAoBmsP,EAA0B7qO,EAAS,CAAC,EAAGwT,EAAS,CAAEiD,IAAK1W,EAAOA,MAAOA,EAAOxhB,GAAI,GAAG8Q,OAAOg9O,GAAQ,KAAKh9O,OAAO0Q,GAAQ1a,SAAUA,GAAYmuB,EAAQnuB,SAAU27B,QAASunN,KAAiBxoO,EAAOvW,SAAUgqB,EAAS7kB,KAAMA,EAAM3P,WAAWu7B,EAAAA,EAAAA,GAAW/G,EAAQx0B,WDtLnPgmP,ECsLoRl+N,IAAO,MDtLtRmmO,ECsL6R5hC,EAAMjnL,WDpLhU,CACb4gN,IAAK,CAAE7yN,IAAK,cAAejE,MAAO,gBAClCg/N,IAAK,CAAEh/N,MAAO,cAAeiE,IAAK,iBAEpB6yN,GALE,QAAXiI,EAAmB,MAAQ,WCqL2TzsP,QAASosP,GAAiBvE,OAAQwE,MDtLlW,IAAU7H,EAAKiI,CCuL9C,IACIE,GAAYp3N,SAASx1B,GAAQujC,KAAa56B,GAG1CkkP,IAFWpN,GAAWxgP,QAAUwgP,GAAWxgP,QAAQmxJ,YAAc,GAE3C,EAAM08F,GAChC,OAAQ3uP,EAAAA,cAAoB4uP,EAAAA,EAAc3O,SAAU,CAAE/tO,MAAOo7O,IACzDttP,EAAAA,cAAoBA,EAAAA,SAAgB,KAChCA,EAAAA,cAAoB,SAAUshB,EAAS,CAAE9gB,IAAK8gP,GAAYzhP,GAAIA,GAAM6tP,GAAUlpP,KAAM0a,EAAQ,aAAe,SAAUjZ,KAAM,SAAU,gBAAiBU,EAAU,gBAAiBuY,EAAQlE,QAAOrb,EAAW,kBAAiBuf,EAAsB,aAAc,GAAGvO,OAAOnG,GAAQ,GAAI,yBAA0B,YAAa0U,EAAQyuO,QAAShuP,EAAW,wBAAyBkqP,IAAgB,GAAK3qO,EAAQ,GAAGvO,OAAOg9O,GAAQ,KAAKh9O,OAAOk5O,SAAgBlqP,EAAWq4B,UAAUkvC,EAAAA,EAAAA,GAAYlvC,EAAUrxB,GAAWukP,UAAWA,EAAW9iO,IAAKA,GAAKzhB,SAAUA,EAAUrG,UAAWk2C,GAAkBr2C,MAAOA,EAAO2B,QAASyrC,GAAajR,YAAagR,GAAiBjX,QAASD,GAAaG,OAAQD,GAAY4B,UAAWrB,IAAiBqiB,IACvsBr3C,GAAQujC,EACLplC,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,aAAciC,KAAMV,EAAMA,KAAMujC,IAC3EugN,EACI3lP,EAAAA,cAAoB,OAAQ,CAAEwE,KAAM,eAAgBlE,UAAWqlP,IAAe,KACtFn7O,GAAQxK,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,cAAgBkK,IACrE2iP,GAASnyO,IAAShb,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YAAaH,MAAOmhB,EAAS,CAAE/a,OAAQ+mP,IAAiBJ,KAClHltP,EAAAA,cAAoBqkC,EAAAA,EAAO,CAAE7jC,IAAK+sP,GAAUhoN,OAAQ+7M,GAAWxgP,QAAS61B,KAAM3b,GAAM0c,QAAS8O,EAAc9O,QAAS8N,YAAY3J,EAAAA,EAAAA,GAAW,kCAAmC2K,EAAchB,YAAaC,YAAae,EAAcf,aAAe4lN,EAAe1+B,EAAOp8K,IAAQ3K,WAAYY,EAAcZ,YAAc0lN,EAAc3+B,EAAOp8K,IAAQpwC,MAAO,CAAE0uP,UAAW,SACtW7uP,EAAAA,cAAoB,KAAM,CAAEQ,IAAKqqP,GAASrmP,KAAM,OAAQ,kBAAmB3E,EAAIA,GAAI8tP,GAAQrtP,WAAWu7B,EAAAA,EAAAA,GAAW,cAAe,CACxH,qBAAyC,WAAnB8wL,EAAMhnL,SAC5B,kBAAsC,WAAnBgnL,EAAMhnL,WACzBxlC,MAAO,CACPkf,YAAaovO,GAAYC,QAAU/uP,EACnCoQ,aAAc0+O,GAAYC,QAAU/uP,IACnC2uP,MACzB,IACAvB,EAAqBt0N,UAAY,CAC7Bn4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACP74B,GAAI64B,EAAAA,OACJtQ,IAAKsQ,EAAAA,OACLV,SAAUU,EAAAA,OACVwyN,UAAWxyN,EAAAA,OACX/xB,SAAU+xB,EAAAA,KACV72B,KAAM62B,EAAAA,OACN0M,QAAS8gN,EAAAA,GACTP,UAAWjtN,EAAAA,OACXluB,KAAMkuB,EAAAA,OACNs0N,YAAat0N,EAAAA,MAAgB,CACzBk+C,EAAGl+C,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC1CokE,EAAGpkE,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,WAE9Ci0L,MAAOj0L,EAAAA,MAAgB,CACnBiN,SAAUjN,EAAAA,MAAgB,CAAC,MAAO,SAAU,WAC5CgN,WAAYhN,EAAAA,MAAgB,CAAC,QAAS,SAAU,UAEpDu0N,aAAcv0N,EAAAA,MAAgB,CAAC,WAAY,UAC3C1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5DlyB,WAAYkyB,EAAAA,MAAgB,CAAC,KACzB,UAAW,YAAa,WACxB,OAAQ,UAAW,UACnB,QAAS,OAAQ,QAAS,YAE9By0N,MAAOz0N,EAAAA,KACPw0N,aAAcx0N,EAAAA,QAElB,IAAI5C,EAAe,CACf62L,MAAO,CAAEhnL,SAAU,SAAUD,WAAY,OACzC1/B,KAAM,SACN+9B,QAAS,OACTv9B,WAAY,UACZymP,aAAc,SAElBF,EAAqBxmN,YAAc,0ECrR5B,IAAI3D,EAAkB,CACzBrgC,KAAM,gCACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,yRCTlBhyC,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAqCIx3B,EAAyB,SAAUsyB,GAEnC,SAAStyB,EAAQgJ,GACb,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA2CxC,OA1CA0C,EAAM/iB,SAAW,KACjB+iB,EAAMqD,aAAe,EACrBrD,EAAM8iI,YAAc,EACpB9iI,EAAMg3K,QAAU,GAChBh3K,EAAM2/N,gBAAkB3/N,EAAM4/N,UAAUriP,KAAI,SAAUwsB,GAAK,OAAOA,EAAI,QAAU,IAAGmxB,KAAK,KACxFl7B,EAAM6/N,YAAc,SAAUnF,GAC1B,IAAI3lP,EAAKirB,EAAMxkB,MAAMqtB,SAAUA,OAAkB,IAAP9zB,EAAgBvC,EAAQm0B,aAAakC,SAAW9zB,EAC1FirB,EAAMg3K,QAAQ/qL,SAAQ,SAAUypL,EAAQxjL,GACpCwjL,EAAO7sK,SAAY3W,IAAUwoO,EAAgB7xN,GAAY,CAC7D,GACJ,EACA7I,EAAM+I,UAAY,SAAUv3B,GACxB,IAAIkmB,EAASlmB,EAAMkmB,OAEnB,IADelmB,EAAMm2B,UAAYtD,EAAAA,EAAKrX,MAAQxb,EAAMm2B,UAAYtD,EAAAA,EAAKltB,SACpD3F,EAAMmjM,mBAAwF,IAApE30K,EAAMg3K,QAAQp5G,WAAU,SAAUl6D,GAAK,OAAOA,IAAMhM,CAAQ,IAAvG,CAGA,IAAIgjO,EAAe16N,EAAM06N,aACrBlpP,EAAMm2B,UAAYtD,EAAAA,EAAKrX,KACvBgT,EAAM8/N,YAAYpF,EAAcA,EAAe,GAG/C16N,EAAM8/N,YAAYpF,EAAcA,EAAe,EANnD,CAQJ,EACA16N,EAAM+/N,eAAiB,SAAUvuP,GAC7B,IAAIm0B,EAAU3F,EAAM2F,QACpB,GAAKA,EAAL,CAGA,IAAIm9H,EAAcn9H,EAAQm9H,YACtBz/H,EAAesC,EAAQtC,aAC3B,GAAIrD,EAAM8iI,cAAgBA,GAAe9iI,EAAMqD,eAAiBA,EAAc,CAC1ErD,EAAM8iI,YAAcA,EACpB9iI,EAAMqD,aAAeA,EACrB,IAAI28N,EAAW,CAAEl9F,YAAa9iI,EAAM8iI,YAAaz/H,aAAcrD,EAAMqD,cACjErD,EAAMxkB,MAAMykP,UACZjgO,EAAMxkB,MAAMykP,SAASl8N,UAAKvzB,EAAW2hB,EAASA,EAAS,CAAEuF,OAAQsI,GAASggO,GAAW,CAAEvwN,YAAaj+B,IAE5G,CAVA,CAWJ,GACAgiC,EAAAA,EAAAA,GAAgBC,EAAAA,GACTzT,CACX,CAsGA,OApJAuD,EAAU/wB,EAASsyB,GA+CnB7kB,OAAO6nB,eAAet1B,EAAQgrB,UAAW,YAAa,CAClDuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMw7L,SAAWkpD,EAAAA,CACjC,EACAl4N,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAet1B,EAAQgrB,UAAW,eAAgB,CACrDuK,IAAK,WACD,IAAIoL,EAAU7V,KAAKqI,SAAWrI,KAAKqI,QAAQzC,cAAc5F,KAAKqiO,iBAC9D,OAAOvtO,KAAKI,IAAI,EAAG8K,KAAK05K,QAAQp5G,WAAU,SAAU5mF,GAAK,OAAOA,IAAMm8B,CAAS,IACnF,EACAnL,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAet1B,EAAQgrB,UAAW,UAAW,CAIhDuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAKlBz1B,EAAQgrB,UAAU4K,kBAAoB,WAClC/xB,OAAOG,iBAAiB,SAAU8mB,KAAKyiO,gBACvC,IAAIp6N,EAAUrI,KAAKqI,QACfA,IACArI,KAAKwlI,YAAcn9H,EAAQm9H,YAC3BxlI,KAAK+F,aAAesC,EAAQtC,cACU,IAAlC/F,KAAK9hB,MAAM2kP,qBACX7iO,KAAK05K,QAAU1hL,MAAMklC,KAAK70B,EAAQs2E,iBAAiB3+E,KAAKsiO,UAAU1kM,KAAK,OACvE59B,KAAKuiO,YAAY,IAG7B,EAIArtP,EAAQgrB,UAAU8K,mBAAqB,WACnC,IAAI3C,EAAUrI,KAAKqI,QACdA,IAA6C,IAAlCrI,KAAK9hB,MAAM2kP,qBAG3B7iO,KAAK05K,QAAU1hL,MAAMklC,KAAK70B,EAAQs2E,iBAAiB3+E,KAAKsiO,UAAU1kM,KAAK,OACvE59B,KAAKuiO,YAAYviO,KAAKo9N,cAC1B,EAIAloP,EAAQgrB,UAAU6O,qBAAuB,WACrCh2B,OAAOq5C,oBAAoB,SAAUpyB,KAAKyiO,gBAC1CziO,KAAK05K,QAAQ73L,OAAS,CAC1B,EAIA3M,EAAQgrB,UAAUnrB,OAAS,WACvB,IAAI0C,EACAirB,EAAQ1C,KACZ,OAAQzsB,EAAAA,cAAoB,MAAO,CAAEH,GAAI4sB,KAAK9hB,MAAM9K,GAAI,aAAc4sB,KAAK9hB,MAAMi9O,UAAWtnP,WAAWu7B,EAAAA,EAAAA,GAAW,aAAc33B,EAAK,CAAC,EAC9HA,EAAG,aAAayM,OAAOk0B,EAAAA,EAAeC,QAAQrY,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,KACjG9B,GAAKuoB,KAAK9hB,MAAMrK,WAAYH,MAAOssB,KAAK9hB,MAAMxK,MAAOqE,UAA0B7E,IAApB8sB,KAAK9hB,MAAMnG,KAAsBioB,KAAK9hB,MAAMnG,WAAQ7E,EAAa,UAAWyoB,IAAKqE,KAAK9hB,MAAMyd,IAAK5nB,IAAK,SAAUs0B,GAAW,OAAO3F,EAAM/iB,SAAW0oB,CAAS,EAAGoD,WAA6C,IAAlCzL,KAAK9hB,MAAM2kP,mBAA+B7iO,KAAKyL,eAAYv4B,GAAa8sB,KAAK9hB,MAAMzK,SACpU,EACAyB,EAAQgrB,UAAUsiO,YAAc,SAAUluM,EAAW1/B,GACjD,IAAInd,EAAKuoB,KAAK9hB,MAAMqtB,SAAUA,OAAkB,IAAP9zB,EAAgBvC,EAAQm0B,aAAakC,SAAW9zB,EACrF2gM,EAASp4K,KAAK05K,QAAQ9kL,GAC1B,GAAIwjL,EAAQ,CACRA,EAAO7sK,SAAWA,EAClB6sK,EAAOnwK,QACP,IAAI66N,EAAa9iO,KAAK05K,QAAQplJ,GAC1BwuM,IACAA,EAAWv3N,UAAY,EAE/B,CACJ,EAIAr2B,EAAQ82B,UAAY,CAChBT,SAAUU,EAAAA,OACVtQ,IAAKsQ,EAAAA,OACL42N,mBAAoB52N,EAAAA,KACpBv4B,MAAOu4B,EAAAA,OACPp4B,UAAWo4B,EAAAA,OACXl0B,KAAMk0B,EAAAA,OACN02N,SAAU12N,EAAAA,KACVytK,QAASztK,EAAAA,QAAkBA,EAAAA,QAC3B1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,WAKpD/2B,EAAQm0B,aAAe,CACnBkC,SAAU,EACVhyB,KAAM,UAEHrE,CACX,CAtJ6B,CAsJ3B3B,EAAAA,iFCpNE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAiBzC0hO,EAAkC,SAAUv7N,GAE5C,SAASu7N,IACL,OAAkB,OAAXv7N,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAOA,OAVAiG,EAAU88N,EAAkBv7N,GAO5Bu7N,EAAiB7iO,UAAUnrB,OAAS,WAChC,OAAQxB,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,cAAepP,KAAK9hB,MAAMrK,YACzF,EACOkvP,CACX,CAZsC,CAYpCxvP,EAAAA,qEC1BF,IAkBIyvP,EAAgB,qGAITJ,EAAiB,CACxB,SAAWI,EACX,2BAA6BA,EAC7B,kBACA,kBAKJ,SACI1kJ,OAhCS,CACT85F,OAAQ,WACR,KAAQ,SACR,QAAW,YACX,MAAS,iBACT,QAAW,YACX,iBAAkB,aAClB,cAAe,gBACf,kBAAmB,oBACnB,iBAAkB,aAClB,cAAe,gBACf,YAAa,cACb,eAAgB,iBAChB,yBAA0B,2BAC1B,IAAO,QACP,IAAO,gFCVA6qD,EAAY1vP,EAAAA,YAAiB,SAAU2K,EAAOnK,GACrD,IAAImvP,EAAW3vP,EAAAA,OAAa,MACxB6mB,EAAS7mB,EAAAA,OAAa,MACtB4vP,EAAa5vP,EAAAA,aAAkB,WAAc,OAAO2vP,EAAS7uP,SAAW6uP,EAAS7uP,QAAQg0B,QACvF66N,EAAS7uP,QAAQg0B,QACjB66N,EAAS7uP,OAAS,GAAG,CAAC6uP,IAC5B3vP,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CAAEiO,QAAS86N,KAAgB,KAAS,IAC5F5vP,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpEd,EAAAA,oBAA0B2K,EAAMglP,UAAU,WAAc,OAAOA,EAAS7uP,OAAS,IACjF,IAAI+uP,EAAc7vP,EAAAA,aAAkB,SAAUW,GACrCgK,EAAMmlP,SAGXnlP,EAAMmlP,QAAQ,CACVh7N,QAAS86N,IACT/oO,OAAQA,EAAO/lB,QACfH,MAAOA,GAEf,GAAG,CAACivP,EAAYjlP,EAAMmlP,UAClBC,EAAgB/vP,EAAAA,aAAkB,SAAUW,GACvCgK,EAAMqlP,WAGXrlP,EAAMqlP,UAAU,CACZl7N,QAAS86N,IACT/oO,OAAQA,EAAO/lB,QACfH,MAAOA,GAEf,GAAG,CAACivP,EAAYjlP,EAAMqlP,YAClBC,EAAkBjwP,EAAAA,aAAkB,SAAUW,GACzCgK,EAAMulP,aAGXvlP,EAAMulP,YAAY,CACdp7N,QAAS86N,IACT/oO,OAAQA,EAAO/lB,QACfH,MAAOA,GAEf,GAAG,CAACgK,EAAOilP,IACPO,EAAanwP,EAAAA,aAAkB,SAAUW,GACpCgK,EAAMylP,QAGXzlP,EAAMylP,OAAO,CACTt7N,QAAS86N,IACT/oO,OAAQA,EAAO/lB,QACfH,MAAOA,GAEf,GAAG,CAACivP,EAAYjlP,EAAMylP,SAClBC,EAAgBrwP,EAAAA,aAAkB,SAAUW,GACvCgK,EAAM2lP,WAGX3lP,EAAM2lP,UAAU,CACZx7N,QAAS86N,IACT/oO,OAAQA,EAAO/lB,QACfH,MAAOA,GAEf,GAAG,CAACivP,EAAYjlP,EAAM2lP,YAatB,OAZAC,EAAAA,EAAAA,GAAaZ,EAAU,CACnBG,QAASD,EACTG,UAAWD,EACXG,YAAaD,EACbG,OAAQD,EACRG,UAAWD,GACZ,CACCG,UAAW7lP,EAAM6lP,UACjBC,WAAY9lP,EAAM8lP,WAClBtqO,KAAMxb,EAAMwb,KACZuqO,gBAAiB/lP,EAAM+lP,kBAEpB/lP,EAAMzK,SACNF,EAAAA,aAAmBA,EAAAA,SAAe6mL,KAAKl8K,EAAMzK,UAAW,CAAEM,IAAKmvP,IAChE,IACV,IACAD,EAAUnpN,YAAc,oEChFxB,IAAIoqN,EAAc,WAAc,MAA2B,qBAAb11O,SAA2BA,SAAW,CAAC,CAAG,EAIpF21O,EAAuC,WACvC,SAASA,IACLnkO,KAAKokO,UAAY,CACrB,CAiBA,OAhBAzhP,OAAO6nB,eAAe25N,EAAsBjkO,UAAW,iBAAkB,CACrEuK,IAAK,WACD,IAAIjc,EAAW01O,IACf,IAAKlkO,KAAKokO,WAAa51O,GAAYA,EAASrV,cAAe,CACvD,IAAIksB,EAAM7W,EAASrV,cAAc,OACjCksB,EAAI3xB,MAAMutG,QAAU,oEACpB57E,EAAI89E,UAAY,SAChB30F,EAASa,KAAKyW,YAAYT,GAC1BrF,KAAKokO,UAAY/+N,EAAImgI,YAAcngI,EAAIg/N,YACvC71O,EAASa,KAAK2W,YAAYX,EAC9B,CACA,OAAOrF,KAAKokO,SAChB,EACA15N,YAAY,EACZC,cAAc,IAEXw5N,CACX,CArB2C,iDCJpC,IAAI/+N,EAAYwF,QAEL,qBAAX7xB,QACHA,OAAOyV,UACPzV,OAAOyV,SAASrV,6DCJb,IAAIi2B,EAAa,WAEpB,IADA,IAAIlH,EAAO,GACFwR,EAAK,EAAGA,EAAKhN,UAAU7qB,OAAQ63B,IACpCxR,EAAKwR,GAAMhN,UAAUgN,GAEzB,IAAIh9B,EAAS,CAAC,EAOV4nP,EAAU,SAAUl5N,GAAQ,OAAOA,EAClCtoB,QAAO,SAAUkpE,GAAO,OAAe,IAARA,KAAkBA,CAAK,IACtD/rE,KAAI,SAAU+rE,GACf,OAAOh0D,MAAMC,QAAQ+zD,GACjBs4K,EAAQt4K,GAVE,SAAUA,GAAO,MAAsB,kBAARA,EAAmBrpE,OAC/DC,KAAKopE,GACLr9D,SAAQ,SAAU2c,GACnB5uB,EAAO4uB,GAAO0gD,EAAI1gD,EACtB,IAAK5uB,EAAOsvE,IAAO,CAAM,CAOjBu4K,CAAYv4K,EACpB,GAAI,EAGJ,OADAs4K,EAAQp8N,GACDvlB,OACFC,KAAKlG,GACLuD,KAAI,SAAUqrB,GAAO,OAAQ5uB,EAAO4uB,IAAQA,GAAQ,IAAM,IAC1DxoB,QAAO,SAAU0oB,GAAM,OAAc,OAAPA,CAAa,IAC3CoyB,KAAK,IACd,mGCzBWl+B,EAAY,SAAUH,GAAQ,OAAOA,EAAO,IAAItiB,KAAKsiB,EAAKtN,WAAa,IAAM,EAIjF,SAASwN,EAAMk3B,GAClB,IAAIj6C,EAAS,CAAC,EAEd,OADA8nP,EAAY7tM,EAAKj6C,GACVA,CACX,CAIO,SAAS8nP,EAAY7tM,EAAKj6C,GAC7B,IAAK,IAAIC,KAASg6C,EACd,GAAIA,EAAInwB,eAAe7pB,GAAQ,CAC3B,IAAI8I,EAAQkxC,EAAIh6C,GAChBD,EAAOC,GAAS8nP,EAAWh/O,EAAO/I,EAAOC,GAC7C,CAER,CAIO,SAAS8nP,EAAWh/O,EAAOs2B,GAC9B,GAAI/jB,MAAMC,QAAQxS,GACd,OAAOi/O,EAAWj/O,GAEjB,GAAIA,aAAiBxI,KACtB,OAAOyiB,EAAUja,GAEhB,GAAIlS,EAAAA,eAAqBkS,GAC1B,OAAOlS,EAAAA,aAAmBkS,EAAOA,EAAMvH,OAEtC,GAAIuH,GAA0B,kBAAVA,EAAoB,CACzC,IAAIk/O,EAAe5oN,GAAa,CAAC,EAEjC,OADAyoN,EAAY/+O,EAAOk/O,GACZA,CACX,CAEI,OAAOl/O,CAEf,CAIO,SAASi/O,EAAW1pG,GACvB,OAAOA,EAAM/6I,KAAI,SAAUwF,GAAS,OAAOg/O,EAAWh/O,OAAOvS,EAAY,GAC7E,sECjDWivP,EAAgB5uP,EAAAA,cAAoB,GAEpCqtP,EAAmB,WAAc,OAAOrtP,EAAAA,WAAiB4uP,EAAgB,EACpFA,EAAcroN,YAAc,4HCAjB8qN,EAAcrxP,EAAAA,cAAoB,MACzCL,EACAo3B,EAAAA,IAKOu6N,EAActxP,EAAAA,cAAoB,MACzCL,EACAo3B,EAAAA,IAKOw6N,EAAevxP,EAAAA,cAAoB,CAAC,GAAI+2B,EAAAA,EAAMA,EAAAA,IAI9Cy6N,EAAexxP,EAAAA,cAAoB,CAAC,GAAI+2B,EAAAA,EAAMA,EAAAA,iCCXlD,SAASs8K,EAAco+C,EAAczG,EAAiBnkO,EAAQq+C,GACjE,GAAIusL,EAAc,CACd,IAAIC,EAAgB,CAChB7yN,eAAgBmsN,EAChBpsN,YAAaosN,EAAgBpsN,YAC7B/X,OAAQA,GAEZ4qO,EAAav+N,UAAKvzB,EAAWyP,OAAO2mB,OAAO27N,EAAexsL,GAC9D,CACJ,gEClBO,IAAIqhB,EAAc,sDCClB,SAASorK,EAAUvoP,GACtB,IAAIN,EAAS,GAIb,OAHAM,EAAMuQ,QAAQ4sE,GAAa,SAAUqrK,EAAQvwO,EAAOslE,EAAe8B,GAC/D3/E,EAAO2kB,UAAe9tB,IAAV0hB,EAAsBA,EAASslE,GAAiB8B,EAChE,IACO3/E,CACX,gDCPO,IAAI+oP,EAA2B,SAAUhrO,GAC5C,GAAIA,EAAQ,CACR,IAAKA,aAAkBirO,mBAAyC,IAArBjrO,EAAOmR,WAAoBnR,EAAO6N,MAEzE,YADA7N,EAAO6N,QAGX,IAAII,EAAUjO,EAAOwL,cAAc,0CAC/ByC,GAAWA,EAAQJ,OACnBI,EAAQJ,OAEhB,CACJ,wDCXO,IAAIq9N,EAAwB,SAAUj9N,GACzC,IAAIy+K,EAAaz+K,EAAQy+K,WACrBy+C,EAAkBl9N,EAAQk9N,gBAC9B,OAAIz+C,GAAcA,EAAW98K,cAClBs7N,EAAsBx+C,EAAW98K,eAExCu7N,GAAmBA,EAAgBv7N,cAC5Bs7N,EAAsBC,EAAgBv7N,eAE1C3B,CACX,EAIW4B,EAAmB,SAAUzb,GACpC,GAAKA,GAAaA,EAASwb,cAG3B,OAAOs7N,EAAsB92O,EAASwb,cAC1C,gDClBA,IAQWywC,EAAc,SAAUlvC,EAAUrxB,EAAUsrP,GACnD,IAAIC,EAAqC,kBAAbl6N,EAAwBoiE,SAASpiE,OAAUr4B,GAAaq4B,EACpF,GAAuBmhE,MAAnB+4J,EAGJ,YAA0BvyP,IAAnBuyP,EACDA,EACAvrP,EACGsrP,OAAiCtyP,GAhBtB,EAID,CAcvB,8DCrBI2mF,EAAc,CAAC,EAeZ,SAASz9D,EAAOzf,GACnB,GAAIk9E,EAAYl9E,GACZ,OAAOk9E,EAAYl9E,GAEvB,IAAIN,GAAS6oP,EAAAA,EAAAA,GAAUvoP,GAQvB,OAPAk9E,EAAYl9E,GAAS,SAAUg6C,GAE3B,IADA,IAAIj6C,EAASi6C,EACJ7yC,EAAM,EAAGA,EAAMzH,EAAOwF,QAAUnF,EAAQoH,IAC7CpH,EAASA,EAAOL,EAAOyH,IAE3B,OAAOpH,CACX,EACOm9E,EAAYl9E,EACvB,CA3BAk9E,EAAY3mF,UAAY,WAAgC,gDCEjD,IAAIihC,EAAO,WACd,IACIj0B,EACA87C,EAFA5oD,EAAK,GAGT,IAAK8M,EAAI,EAAGA,EAAI,GAAIA,IAChB87C,EAAyB,GAAhBlnC,KAAKknC,SAAgB,EACpB,IAAN97C,GAAiB,KAANA,GAAkB,KAANA,GAAkB,KAANA,IACnC9M,GAAM,KAEVA,IAAa,KAAN8M,EAAW,EAAW,KAANA,EAAqB,EAAT87C,EAAa,EAAKA,GAAS9G,SAAS,IAE3E,OAAO9hD,CACX,8DCdWsyP,EAA6B,SAAUC,GAC9C,IAAKvgO,EAAAA,EACD,OAAO,EAIX,IAAIwgO,EAAkBD,EAAgBA,EAActvN,cAAgB7nB,SACpE,IAAKo3O,IAAoBA,EAAgBv2O,KACrC,OAAO,EAEX,IACIkrI,EAASqrG,EAAgBzsP,cAAc,OAC3CohJ,EAAO7mJ,MAAMy3B,UAAY,6BACzB,IAAIqsF,EAAQouI,EAAgBzsP,cAAc,OAC1Cq+G,EAAM1xF,YAAY8/N,EAAgB/qF,eAAe,UACjDrjD,EAAM9jH,MAAMiG,SAAW,QACvB69G,EAAM9jH,MAAMkG,IAAMA,OAClB2gJ,EAAOz0H,YAAY0xF,GACnBouI,EAAgBv2O,KAAKyW,YAAYy0H,GACjC,IAAIsrG,EATM,KASQruI,EAAM7V,wBAAwB/nG,IAEhD,OADAgsP,EAAgBv2O,KAAK2W,YAAYu0H,GAC1BsrG,CACX,wECxBIhxO,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAWWuL,EAAiB,SAAUxgC,GAClC,IAAIhE,EAAWgE,EAAGhE,SAAUm2B,EAAUnyB,EAAGmyB,QAASE,EAASryB,EAAGqyB,OAAQoO,EAAczgC,EAAGygC,YAAaC,EAAa1gC,EAAG0gC,WAChHjQ,GAAO49N,EAAAA,EAAAA,GAAkB,CAAEl8N,QAASA,EAASE,OAAQA,EAAQoO,YAAaA,EAAaC,WAAYA,IACvG,OAAO5kC,EAAAA,cAAoBA,EAAAA,SAAgB,KAAME,EAASgzB,UAAKvzB,EAAW2hB,EAAS,CAAC,EAAGqT,IAC3F,gFCzBIrT,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAIW4N,EAAqB,WAAc,OAAO/mC,EAAAA,eAAoB,SAAU2K,GAAS,OAAOA,CAAO,GAAI,EAEnGs8B,EAAmB,SAAU+c,EAASygM,GAE7C,OAAOzkP,EAAAA,YAAiB,SAAU2K,EAAOnK,GACzC,IAAIgyP,GAAeC,EAAAA,EAAAA,GAAgBzuM,EAASr5C,GAC5C,OAAQ3K,EAAAA,cAAoBykP,EAAWnjO,EAAS,CAAC,EAAGkxO,EAAc,CAAEhyP,IAAKA,IAC7E,GAAI,8DCrBA0uE,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAUO,SAAS4oM,EAAkBruP,GAC9B,IAAImyB,EAAUnyB,EAAGmyB,QAASE,EAASryB,EAAGqyB,OAAQoO,EAAczgC,EAAGygC,YAAaC,EAAa1gC,EAAG0gC,WACxFtC,EAAUtiC,EAAAA,QAAa,GACvB0yP,EAAO1yP,EAAAA,OAAa,GACpB+6B,EAAW/6B,EAAAA,aAAkB,SAAUw8B,GACvCtB,aAAaw3N,EAAK5xP,SAClB4xP,EAAK5xP,QAAU0E,OAAOi3B,YAAW,WAAc,OAAOD,GAAK,GAC/D,GAAG,CAACk2N,IACAt8N,EAAcp2B,EAAAA,aAAkB,WAEhC,IADA,IAAIW,EAAQ,GACHwlC,EAAK,EAAGA,EAAKhN,UAAU7qB,OAAQ63B,IACpCxlC,EAAMwlC,GAAMhN,UAAUgN,GAE1BjL,aAAaw3N,EAAK5xP,SACd6jC,GACAA,EAAYzR,UAAKvzB,EAAWgB,EAAM,IAElC2hC,EAAQxhC,UAIZwhC,EAAQxhC,SAAU,EACdu1B,GACAA,EAAQnD,KAAKtG,MAAMyJ,EAAS64C,EAAc,MAACvvE,GAAYgB,GAAO,IAEtE,GAAG,CAAC2hC,EAASjM,EAASsO,IAClBrO,EAAat2B,EAAAA,aAAkB,WAE/B,IADA,IAAIW,EAAQ,GACHwlC,EAAK,EAAGA,EAAKhN,UAAU7qB,OAAQ63B,IACpCxlC,EAAMwlC,GAAMhN,UAAUgN,GAEtBvB,GACAA,EAAW1R,UAAKvzB,EAAWgB,EAAM,IAErCo6B,GAAS,WACAuH,EAAQxhC,SAGTy1B,IACA+L,EAAQxhC,SAAU,EAClBy1B,EAAOrD,KAAKtG,MAAM2J,EAAQ24C,EAAc,MAACvvE,GAAYgB,GAAO,IAEpE,GACJ,GAAG,CAAC2hC,EAASvH,EAAUxE,EAAQqO,IAM/B,OALA5kC,EAAAA,WAAgB,WACZ,OAAO,WACHk7B,aAAaw3N,EAAK5xP,QACtB,CACJ,GAAG,IACI,CACHu1B,QAASD,EACTG,OAAQD,EAEhB,gDCpEO,IAAIq8N,EAAqB,SAAUC,GAItC,MAAO,CAACA,EAAM,CAAC,EACnB,8DCJO,SAASlM,EAAOpF,EAAYuR,EAAYl+N,GAE3C,IAAIzwB,EAAKlE,EAAAA,SAAe6yP,GAAazqO,EAAMlkB,EAAG,GAAI4uP,EAAS5uP,EAAG,GAW9D,OAVAlE,EAAAA,WAAgB,WACZ,IAAKooB,GAAO5iB,QAAU87O,EAAWxgP,QAAS,CAEtC,IAAIiyP,EAAevtP,OAAO46C,iBAAiBkhM,EAAWxgP,SAASg9B,UAC3Di1N,GAEAD,EAAOC,EAEf,CACJ,GAAGp+N,GACIvM,CACX,8DCdW4qO,EAAc,SAAUxyP,GAC/B,IAAIovP,EAAa5vP,EAAAA,aAAkB,WAAc,OAAOQ,EAAIM,SAAWN,EAAIM,QAAQg0B,QAC7Et0B,EAAIM,QAAQg0B,QACZt0B,EAAIM,OAAS,GAAG,CAACN,IAKvB,OAJkBR,EAAAA,aAAkB,WAChC,IAAI80B,EAAU86N,IACd,OAAO96N,GAAUA,EAAQgO,eAA4B7nB,QACzD,GAAG,CAAC20O,GAER,oDCVWqD,YCgBAvsJ,EAAY,SAAU5xE,EAASo+N,GACtC,IAAIvxO,EAAM,EACNxY,EAAS,KAUb,OATA+pP,EAAW93O,SAAQ,SAAUyR,GACzB,GAAIA,GAAaiI,EAAS,CACtB,IAAIq+N,EAxBD,SAAUr+N,EAASjO,GAC9B,IAAIusO,EAAct+N,EAAQs5E,wBACtBilJ,EAAaxsO,EAAOunF,wBACpB/nG,EAAMkb,KAAKI,IAAI0xO,EAAWhtP,IAAK+sP,EAAY/sP,KAC3C8V,EAAOoF,KAAKI,IAAI0xO,EAAWl3O,KAAMi3O,EAAYj3O,MAC7C7V,EAAQib,KAAKC,IAAI6xO,EAAWl3O,KAAOk3O,EAAWvsP,MAAOssP,EAAYj3O,KAAOi3O,EAAYtsP,OACpF8/F,EAASrlF,KAAKC,IAAI6xO,EAAWhtP,IAAMgtP,EAAWvrP,OAAQsrP,EAAY/sP,IAAM+sP,EAAYtrP,QACpFhB,EAAQR,EAAQ6V,EAChBrU,EAAS8+F,EAASvgG,EACtB,GAAI8V,EAAO7V,GAASD,EAAMugG,EAAQ,CAC9B,IAAI0sJ,EAAaD,EAAWvsP,MAAQusP,EAAWvrP,OAC3CyrP,EAAYH,EAAYtsP,MAAQssP,EAAYtrP,OAC5C0rP,EAAmB1sP,EAAQgB,EAE/B,OAAOugD,QADiBmrM,GAAoBF,EAAaC,EAAYC,IACrC70O,QAAQ,GAC5C,CACA,OAAO,CACX,CAOyB80O,CAAS3+N,EAASjI,GAC3BsmO,EAASxxO,IACTA,EAAMwxO,EACNhqP,EAAS0jB,EAEjB,CACJ,IACO1jB,CACX,EChCIuqP,EAAgB,WAChB,IAAI54M,EAAKt1C,QAAUA,OAAOu1C,UAAUC,UACpC,IAAKF,EACD,OAAO,EAEX,IAAIi9C,GAAU,EACV39E,EAAQ,GACRigF,EAAa,CACbC,KAAM,uBACNC,OAAQ,+BACRC,OAAQ,yBACRC,MAAO,sCACPlmC,KAAM,mCACNmmC,QAAS,kCAEb,IAAK,IAAIC,KAASN,EACd,GAAIA,EAAWpnE,eAAe0nE,KAC1BvgF,EAAQ0gC,EAAG1gC,MAAMigF,EAAWM,KACjB,EACP5C,EAAU,CAAC,GACH4C,IAAS,EACjB5C,EAAQ39E,EAAM,GAAG6nC,cAAcxsC,MAAM,KAAK,GAAGA,MAAM,KAAK,KAAM,EAC9DsiF,EAAQv8B,QAAU4+B,SAASn/E,SAAS04O,eAAiBv5O,EAAM,GAAI,IAC/D,KACJ,CAGR,OAAO29E,CACX,EAEW44J,EAAc,SAAU77N,GAC/B,OAAOA,GAAUA,EAAQgO,eAAmCt9B,OAAOyV,QACvE,EASW24O,EAAiB,SAAU9+N,GAClC,IAAIkjE,EAAqB07J,IACrBz4O,EAAW01O,EAAY77N,GAC3B,OAAQkjE,EAAgBsC,MAAQtC,EAAgBwC,OAAUv/E,EAASa,KAAOb,EAASglG,eACvF,EAEW4zI,EAAe,SAAU57N,GAChC,GAAIA,GAAMA,EAAG33B,WAAuC,kBAAlB23B,EAAG33B,WAA2B23B,EAAG33B,UAAUonC,QAAQ,sBAAwB,EACzG,OAAO,EAEX,IAAItnC,EAAWoF,OAAO46C,iBAAiBnoB,EAAI,YAAY73B,SACvD,OAAOA,EAASsnC,QAAQ,SAAW,GAAKtnC,EAASsnC,QAAQ,WAAa,CAC1E,EAEWosN,EAAsB,SAAU77N,GACvC,IAAIwiG,EAAOm5H,EAAe37N,GAC1B,IAAKA,GAAMA,IAAOhd,SAASa,MAAQmc,IAAOhd,SAASglG,gBAC/C,OAAOwa,EAGX,IADA,IAAIusB,EAAS/uH,EACN+uH,GACAA,IAAW/rI,SAASa,MACpBkrI,EAAO/+C,WAAamzD,KAAK24F,wBACzB/sG,EAAO/+C,WAAamzD,KAAKu4F,gBACxBE,EAAa7sG,IACjBA,EAASA,EAAO17C,WAEpB,OAAI07C,GAAWA,IAAW/rI,SAASa,MAAQkrI,EAAO/+C,WAAamzD,KAAK24F,uBAG7D/sG,EAFIvsB,CAGf,GFpEA,SAAWw4H,GACPA,EAA4C,aAAI,cAChDA,EAA4C,aAAI,cAChDA,EAA0C,WAAI,YAC9CA,EAA8C,eAAI,gBAClDA,EAA0C,WAAI,YAC9CA,EAA0C,WAAI,YAC9CA,EAAwC,SAAI,UAC5CA,EAA4C,aAAI,cAChDA,EAA2C,YAAI,aAC/CA,EAA0C,WAAI,YAC9CA,EAAyC,UAAI,WAC7CA,EAA4C,aAAI,cAChDA,EAAsC,OAAI,SAC1CA,EAAqC,MAAI,4BACzCA,EAAoC,KAAI,2BACxCA,EAAmC,IAAI,0BACvCA,EAAsC,OAAI,4BAC7C,CAlBD,CAkBGA,IAAkCA,EAAgC,CAAC,IACtE,IAsDIl8N,EAAO,WAAc,EAEdi9N,EAAsB,SAAUx0P,EAAOsf,EAAQm1O,QACpC,IAAdA,IAAwBA,EAAY,CAAC,GACzC,IAAI/vP,EAAK+vP,EAAUC,kBAAmBA,OAA2B,IAAPhwP,EAAgB6yB,EAAO7yB,EAAII,EAAK2vP,EAAUE,oBAAqBA,OAA6B,IAAP7vP,EAAgByyB,EAAOzyB,EAAIK,EAAKsvP,EAAUG,iBAAkBA,OAA0B,IAAPzvP,EAAgBoyB,EAAOpyB,EAAIG,EAAKmvP,EAAUI,eAAgBA,OAAwB,IAAPvvP,EAAgBiyB,EAAOjyB,EAAII,EAAK+uP,EAAUK,mBAAoBA,OAA4B,IAAPpvP,EAAgB6xB,EAAO7xB,EAAIE,EAAK6uP,EAAUM,qBAAsBA,OAA8B,IAAPnvP,EAAgB2xB,EAAO3xB,EAAI0G,EAAKmoP,EAAUO,qBAAsBA,OAA8B,IAAP1oP,EAAgBirB,EAAOjrB,EAAI4U,EAAKuzO,EAAUQ,4BAA6BA,OAAqC,IAAP/zO,EAAgBqW,EAAOrW,EAClqBg0O,EAAO51O,EAAO3d,QACd2zB,EAAU4/N,EAAK5/N,QACf3O,EAAOuuO,EAAKvuO,KACZwuO,EAAsBn1P,EAAMm1P,oBAC5BC,EAA2Bp1P,EAAMq1P,iBACjCl0P,EA7DoB,SAAUA,EAAOnB,GAAS,OAHnC,SAAUmB,GAAS,MAAO,SAASu5B,KAAKv5B,EAAMsF,KAAO,CAGV6uP,CAAan0P,GACpE,CACCo0P,MAAOp0P,EAAMq0P,eAAe,GAAGD,MAC/BE,MAAOt0P,EAAMq0P,eAAe,GAAGC,MAC/B/wD,QAASvjM,EAAMq0P,eAAe,GAAG9wD,QACjCC,QAASxjM,EAAMq0P,eAAe,GAAG7wD,QACjC+wD,QAAS11P,EAAM21P,aAAav+K,EAC5Bw+K,QAAS51P,EAAM21P,aAAar4J,EAC5Bu4J,QAAS71P,EAAM01B,OAAO0hD,EACtB0+K,QAAS91P,EAAM01B,OAAO4nE,EACtB72F,KAAMtF,EAAMsF,KACZsvP,cAAe50P,EACf60P,SAAS,EACTn2N,QAAQ,EACR6gK,SAAS,EACTE,UAAU,EACVD,SAAS,GAlBG,SAAUx/L,GAAS,MAAO,YAAYu5B,KAAKv5B,EAAMsF,KAAO,CAoBtEwvP,CAAc90P,GACT,CACCo0P,MAAOv1P,EAAMk2P,WAAW9+K,EACxBq+K,MAAOz1P,EAAMk2P,WAAW54J,EACxBonG,QAAS1kM,EAAMm2P,aAAa/+K,EAC5ButH,QAAS3kM,EAAMm2P,aAAa74J,EAC5Bo4J,QAAS11P,EAAM21P,aAAav+K,EAC5Bw+K,QAAS51P,EAAM21P,aAAar4J,EAC5Bu4J,QAAS71P,EAAM01B,OAAO0hD,EACtB0+K,QAAS91P,EAAM01B,OAAO4nE,EACtB72F,KAAMtF,EAAMsF,KACZsvP,cAAe50P,EACf0+B,QAAQ,EACR6gK,SAAS,EACTE,UAAU,EACVD,SAAS,GAEV,CACC40D,MAAOp0P,EAAMo0P,MACbE,MAAOt0P,EAAMs0P,MACb/wD,QAASvjM,EAAMujM,QACfC,QAASxjM,EAAMwjM,QACfkxD,QAAS10P,EAAM00P,QACfC,QAAS30P,EAAM20P,QACfJ,QAAS11P,EAAM21P,aAAav+K,EAC5Bw+K,QAAS51P,EAAM21P,aAAar4J,EAC5B72F,KAAMtF,EAAMsF,KACZi6L,QAASv/L,EAAMu/L,QACfE,SAAUz/L,EAAMy/L,SAChB/gK,OAAQ1+B,EAAM0+B,OACd8gK,QAASx/L,EAAMw/L,QACfo1D,cAAe50P,EACd,CAWGi1P,CAAe92O,EAAOne,MAAOnB,GACzC,OAAQmB,EAAMsF,MACV,KAAKgtP,EAA8B4C,aAC/B,GAAIl1P,EAAMsF,OAASgtP,EAA8B4C,gBACxCl1P,EAAM40P,cAAcO,WACa,IAA/Bn1P,EAAM40P,cAAc1wD,QAC3B,MAKR,KAAKouD,EAA8B8C,WAC/B,GAAIp1P,EAAMsF,OAASgtP,EAA8B8C,YACzCp1P,EAAM40P,cAAcn0C,OACjBzgN,EAAM40P,cAAcn0C,MAAQ,GAChC5hN,EAAMw2P,YACT,MAER,KAAK/C,EAA8BgD,YAC/B,GAAIt1P,EAAMsF,OAASgtP,EAA8BgD,aACH,IAAvCt1P,EAAM40P,cAAc7pF,QAAQp9J,OAC/B,MAER,KAAK2kP,EAA8BiD,MAC/B,IAAIC,EAAqBvB,GAA4Bd,EAAoBh1O,EAAO3d,QAAQ2zB,SACxF2/N,EAA4B0B,aAA8BC,OACpD,CAAEx/K,EAAGu/K,EAAmBjB,QAASp4J,EAAGq5J,EAAmBf,SACvD,CAAEx+K,EAAGu/K,EAAmB12I,WAAY3iB,EAAGq5J,EAAmB9pP,YAChEkoP,EAAqB,CACjB39K,EAAGj2E,EAAMujM,QACTpnG,EAAGn8F,EAAMwjM,UAEbmwD,EAAmB,CACf19K,EAAGj2E,EAAMo0P,MACTj4J,EAAGn8F,EAAMs0P,QAEbZ,EAAe,CACXz9K,EAAGj2E,EAAM00P,QACTv4J,EAAGn8F,EAAM20P,UAEbpB,GAAkB,GACdQ,EAAK5E,SACL4E,EAAK5E,QAAQnvP,GAEjB,MAEJ,KAAKsyP,EAA8BoD,OAC/B,GAAI11P,EAAMsF,OAASgtP,EAA8BoD,SAAW72P,EAAM82P,QAC9D,MAEJ,IAAIzB,EAAmBD,GAA4Bd,EAAoBh/N,GACnEqgO,EAAeN,aAA4BuB,OACzC,CAAEx/K,EAAGi+K,EAAiBK,QAASp4J,EAAG+3J,EAAiBO,SACnD,CAAEx+K,EAAGi+K,EAAiBp1I,WAAY3iB,EAAG+3J,EAAiBxoP,WAC5D1L,EAAMu0P,QAAUC,EAAav+K,EAAIp3E,EAAM+2P,oBAAoB3/K,EAC3Dj2E,EAAMy0P,QAAUD,EAAar4J,EAAIt9F,EAAM+2P,oBAAoBz5J,EAC3D03J,EAAqB,CACjB59K,EAAGj2E,EAAMu0P,QACTp4J,EAAGn8F,EAAMy0P,UAEjB,KAAKnC,EAA8BuD,aAC/B,GAAI71P,EAAMsF,OAASgtP,EAA8BuD,eAAiB71P,EAAM40P,cAAcO,UAClF,MAER,KAAK7C,EAA8BwD,WACnC,KAAKxD,EAA8ByD,WAC/B,GAAI/1P,EAAMsF,OAASgtP,EAA8ByD,YAAqD,IAAvC/1P,EAAM40P,cAAc7pF,QAAQp9J,OACvF,MAER,KAAK2kP,EAA8B0D,KAC/B,GAAIn3P,EAAM82P,QAAS,CACf,GAAI92P,EAAMixP,YAA2C,WAA7B9vP,EAAM40P,cAActvP,MACpC6uB,EAAS,CACT,IAAI8hO,EAAajG,EAAY77N,GACzB+hO,EAAqBjC,GAA4Bd,EAAoB8C,EAAWpmE,iBAAiB7vL,EAAMujM,QAASvjM,EAAMwjM,UACtH2yD,EExFI,SAAUC,EAAQC,EAAQ1tJ,GACtD,IAAI2tJ,EAAW,CAAErgL,EAAG,EAAGkmB,EAAG,GACtBo6J,EAAmB,GAavB,OAZIH,EAASztJ,EAAKntF,KAAO+6O,EACrBD,EAASrgL,IAAMsgL,GAAoBH,EAASztJ,EAAKntF,OAE5CmtF,EAAKhjG,MAAQywP,EAASG,IAC3BD,EAASrgL,EAAIsgL,GAAoB5tJ,EAAKhjG,MAAQywP,IAE9CC,EAAS1tJ,EAAKjjG,IAAM6wP,EACpBD,EAASn6J,IAAMo6J,GAAoBF,EAAS1tJ,EAAKjjG,MAE5CijG,EAAK1C,OAASowJ,EAASE,IAC5BD,EAASn6J,EAAIo6J,GAAoB5tJ,EAAK1C,OAASowJ,IAE5CC,CACX,CFwE0CE,CAAmBx2P,EAAMujM,QAASvjM,EAAMwjM,QEtElD,SAAUlsK,EAAIzyB,GAC1C,IAAIi1H,EAAOm5H,EAAe37N,GAC1B,GAAIA,IAAOwiG,EACP,MAAO,CACHp0H,IAAKo0H,EAAKpuH,UACV8P,KAAMs+G,EAAKhb,WACX7Y,OAAQ6zB,EAAKpuH,UAAY7G,EAAOC,YAChCa,MAAOm0H,EAAKhb,WAAaj6G,EAAO4xP,YAIpC,IAAI9tJ,EAAOrxE,EAAGm2E,wBACd,MAAO,CACHxH,OAAQ0C,EAAKjjG,IAAMijG,EAAKxhG,OACxBxB,MAAOgjG,EAAKntF,KAAOmtF,EAAKxiG,MACxBqV,KAAMmtF,EAAKntF,KACX9V,IAAKijG,EAAKjjG,IAGtB,CFmD2FgxP,CAAmBR,EEhIvF,SAAU/hO,GAC7B,IAAI7Z,EAAW01O,EAAY77N,GAC3B,OAAO7Z,GACDA,EAASi0K,aACT1pL,MACV,CF2HkI8xP,CAAUxiO,KACpHs/N,EAAiB,CACbx9K,EAAI+9K,IAA0D,IAAnCA,EAAoBjvN,WAAwB,EAAIoxN,EAAYlgL,EACvFkmB,EAAI63J,IAAwD,IAAjCA,EAAoBhvN,SAAsB,EAAImxN,EAAYh6J,IAEzFq3J,EAAsC,IAAlB2C,EAAYh6J,GAA6B,IAAlBg6J,EAAYlgL,EAC3D,EAECp3E,EAAMk1P,MAAQA,EAAKxE,aACpBwE,EAAKxE,YAAYvvP,GAEjB+zP,EAAKtE,QACLsE,EAAKtE,OAAOzvP,GAEhB,IAAI42P,EAAgB7wJ,EAAUvgF,GAAQ2O,EAASt1B,EAAMg4P,MAAM9qP,KAAI,SAAUguH,GAAQ,OAAOA,GAAQA,EAAK5lG,OAAS,IAAGvlB,QAAO,SAAUqjB,GAAK,OAAOA,KAAOzM,GAAQ2O,EAAU,KACnK4lG,EAAOl7H,EAAMg4P,MAAM78O,MAAK,SAAU+/G,GAAQ,OAAOA,EAAK5lG,UAAYyiO,CAAe,IACjF78H,GACG68H,GElEe,SAAU3gL,EAAGkmB,EAAGlrE,GAClD,IAAI03E,EAAO13E,EAAUw8E,wBACrB,OAAQ9E,EAAKjjG,KAAOy2F,GAChBwM,EAAKntF,MAAQy6D,GACbkmB,GAAKwM,EAAK1C,QACVhwB,GAAK0yB,EAAKhjG,KAClB,CF6DuBmxP,CAAyB92P,EAAMujM,QAASvjM,EAAMwjM,QAASywD,GAA4Bd,EAAoByD,KACvGA,IAAkBziO,GAChBt1B,EAAMk7H,MAAQl7H,EAAMk7H,KAAK5lG,WAAayiO,GACnC/3P,EAAMk7H,MAAQl7H,EAAMk7H,KAAKg9H,aACzBl4P,EAAMk7H,KAAKg9H,YAAY/2P,GAEvB+5H,EAAKx7E,aACLw7E,EAAKx7E,YAAYv+C,IAIjB+5H,EAAKv7E,YACLu7E,EAAKv7E,WAAWx+C,GAInBnB,EAAMk7H,MAAQl7H,EAAMk7H,KAAKg9H,aAC9Bl4P,EAAMk7H,KAAKg9H,YAAY/2P,EAE/B,CACA4zP,EAAqB,CACjB39K,EAAGj2E,EAAMujM,QACTpnG,EAAGn8F,EAAMwjM,UAEbmwD,EAAmB,CACf19K,EAAGj2E,EAAMo0P,MACTj4J,EAAGn8F,EAAMs0P,QAEb,MAEJ,KAAKhC,EAA8B0E,WAC/B,GAAIh3P,EAAMsF,OAASgtP,EAA8B0E,aAAeh3P,EAAM40P,cAAcO,UAChF,MAER,KAAK7C,EAA8B2E,SAGnC,KAAK3E,EAA8B4E,UAC/B,GAAIl3P,EAAMsF,OAASgtP,EAA8B4E,WAAoD,IAAvCl3P,EAAM40P,cAAc7pF,QAAQp9J,OACtF,MAER,KAAK2kP,EAA8B6E,IAC/B5D,GAAkB,GAClBC,GAAoB,GACpBK,EAAqB,CAAE59K,EAAG,EAAGkmB,EAAG,IAC5B43J,EAAK1E,WACL0E,EAAK1E,UAAUrvP,GAEfnB,EAAMk7H,MAAQl7H,EAAMk7H,KAAKn8E,QACzB/+C,EAAMk7H,KAAKn8E,OAAO59C,GAElBnB,EAAMk1P,MAAQA,EAAKpE,WACnBoE,EAAKpE,UAAU3vP,GAEnB,MAEJ,KAAKsyP,EAA8B8E,eACnC,KAAK9E,EAA8B+E,aACnC,KAAK/E,EAA8BgF,aACnC,KAAKhF,EAA8BiF,OAC/BhE,GAAkB,GAClBC,GAAoB,GACpBK,EAAqB,CAAE59K,EAAG,EAAGkmB,EAAG,IAC5B43J,EAAKpE,WACLoE,EAAKpE,UAAU3vP,GAEfnB,EAAMk7H,MAAQl7H,EAAMk7H,KAAKg9H,aACzBl4P,EAAMk7H,KAAKg9H,YAAY/2P,GAOvC,EG5PW8vP,EAAa,SAAUoE,EAAkBsD,GAChD,GAAKtD,EAAL,CAGA,IAAIuD,EACAC,EACaxD,IAAqBjB,EAAeiB,IAEjDuD,EAAgBn9O,SAASa,KAAKw8O,aAAe9yP,OAAOC,YACpD4yP,EAAgBp9O,SAASa,KAAKg1O,YAActrP,OAAO4xP,aAGnDgB,EAAgBvD,EAAiBriO,cAAgBqiO,EAAiByD,aAClED,EAAgBxD,EAAiB5iG,aAAe4iG,EAAiB/D,aAErE,IAAIyH,EAAS1D,EAAiBxoP,UAAY8rP,EAAIr7J,EAC1C07J,EAAYJ,GAAiBG,EAAS,GAAKA,EAAS1D,EAAiByD,aACrEG,EAAS5D,EAAiBp1I,WAAa04I,EAAIvhL,EAC3C8hL,EAAYL,GAAiBI,EAAS,GAAKA,EAAS5D,EAAiB/D,YACrE0H,EACA3D,EAAiBxoP,WAAa8rP,EAAIr7J,EAE7Bs7J,GAAiBG,EAAS,IAC/B1D,EAAiBxoP,UAAY,GAE7BqsP,EACA7D,EAAiBp1I,YAAc04I,EAAIvhL,EAE9ByhL,GAAiBI,EAAS,IAC/B5D,EAAiBp1I,WAAa,EA1BlC,CA4BJ,gCC5BIk5I,EAAuB,IAWpB,SAASpI,EAAa/vP,EAAKyzP,EAAWzpM,QACzB,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAItmD,EAAK+vP,EAAUnE,QAASA,OAAiB,IAAP5rP,EAAgB6yB,EAAAA,EAAO7yB,EAAII,EAAK2vP,EAAUjE,UAAWA,OAAmB,IAAP1rP,EAAgByyB,EAAAA,EAAOzyB,EAAIK,EAAKsvP,EAAU/D,YAAaA,OAAqB,IAAPvrP,EAAgBoyB,EAAAA,EAAOpyB,EAAIG,EAAKmvP,EAAU7D,OAAQA,OAAgB,IAAPtrP,EAAgBiyB,EAAAA,EAAOjyB,EAAII,EAAK+uP,EAAU3D,UAAWA,OAAmB,IAAPprP,EAAgB6xB,EAAAA,EAAO7xB,EAC3TE,EAAKolD,EAAQrkC,KAAMA,OAAc,IAAP/gB,EAAgB,KAAOA,EAAI0G,EAAK0+C,EAAQgmM,UAAWA,OAAmB,IAAP1kP,GAAwBA,EAAI4U,EAAK8pC,EAAQimM,WAAYA,OAAoB,IAAP/vO,GAAuBA,EAAIG,EAAK2pC,EAAQkmM,gBAAiBA,OAAyB,IAAP7vO,EAAgB,KAAOA,EAC7PgJ,EAAK7pB,EAAAA,UAAe,GAAQs2P,EAAUzsO,EAAG,GAAI+uO,EAAa/uO,EAAG,GAC7DC,EAAK9pB,EAAAA,UAAe,GAAQ64P,EAAY/uO,EAAG,GAAIgvO,EAAehvO,EAAG,GACjE4wG,GAAOq+H,EAAAA,EAAAA,GAAkBzH,EAAAA,IAAa,GACtCtnO,GAAK+uO,EAAAA,EAAAA,GAAkB1H,EAAAA,IAAcqD,EAAO1qO,EAAG,GAAIgvO,EAAUhvO,EAAG,GAChEwtO,EAAQx3P,EAAAA,WAAiBwxP,EAAAA,IAAc,GACvCrnO,EAAKnqB,EAAAA,WAAiBuxP,EAAAA,IAAe0H,EAAQ9uO,EAAG,GAAI+uO,EAAe/uO,EAAG,GAAIgvO,EAAiBhvO,EAAG,GAC9F8sO,EAAWj3P,EAAAA,OAAa,CAAE42E,EAAG,EAAGkmB,EAAG,IACnCs8J,EAAiBp5P,EAAAA,SACjBg2P,EAAch2P,EAAAA,QAAa,GAC3Bq5P,EAAsBr5P,EAAAA,SACtBs5P,EAAat5P,EAAAA,OAAa,MAC1Bu5P,EAAUv5P,EAAAA,QAAa,GACvBk1B,EAASl1B,EAAAA,OAAa,CAAE42E,EAAG,EAAGkmB,EAAG,IACjC44J,EAAa11P,EAAAA,OAAa,CAAE42E,EAAG,EAAGkmB,EAAG,IACrC64J,EAAe31P,EAAAA,OAAa,CAAE42E,EAAG,EAAGkmB,EAAG,IACvC08J,EAAsBx5P,EAAAA,OAAa,CAAE42E,EAAG,EAAGkmB,EAAG,IAC9Cq4J,GAAen1P,EAAAA,OAAa,CAAE42E,EAAG,EAAGkmB,EAAG,IACvCy5J,GAAsBv2P,EAAAA,OAAa,CAAE42E,EAAG,EAAGkmB,EAAG,IAC9C28J,GAAsBpiO,QAA2B,qBAAX7xB,QAA2BA,OAAOk0P,cACxEC,IAAYnJ,GAAaiJ,GACzB7J,GAAa5vP,EAAAA,aAAkB,WAAc,OAAOQ,EAAIM,SAAWN,EAAIM,QAAQg0B,QAC7Et0B,EAAIM,QAAQg0B,QACZt0B,EAAIM,OAAS,GAAG,CAACN,IACnBo5P,GAAiB55P,EAAAA,aAAkB,WAAc,OAAOmmB,GAAQA,EAAKrlB,SAAWqlB,EAAKrlB,QAAQg0B,QAC3F3O,EAAKrlB,QAAQg0B,QACb3O,EACIA,EAAKrlB,QACL,IAAM,GAAG,CAACqlB,IAChB0zO,GAAqB75P,EAAAA,aAAkB,WAAc,OAAO0wP,GAAmBA,EAAgB5vP,SAAW4vP,EAAgB5vP,QAAQg0B,QAChI47N,EAAgB5vP,QAAQg0B,QACxB47N,EACIA,EAAgB5vP,QAChB,IAAM,GAAG,CAAC4vP,IAChBoJ,GAAyB95P,EAAAA,aAAkB,WAAc,MAA6B,kBAAfywP,GAA2BA,EAAWsJ,oBAC1GtJ,EAAWsJ,mBAAmBj5P,SAAW2vP,EAAWsJ,mBAAmBj5P,QAAQg0B,QAChF27N,EAAWsJ,mBAAmBj5P,QAAQg0B,QAChB,kBAAf27N,GAA2BA,EAAWsJ,oBAAsBtJ,EAAWsJ,mBAAmBj5P,QAC7F2vP,EAAWsJ,mBAAmBj5P,QAC9B,IAAM,GAAG,CAAC2vP,IAChB5pO,GAAS7mB,EAAAA,OAAa,MAC1BA,EAAAA,oBAA0B6mB,IAAQ,WAAc,MAAQ,CACpDiO,QAAS86N,KACTzpO,KAAMyzO,KACN9J,QAASD,GACTK,YAAaD,GACbG,OAAQD,GACRG,UAAWD,GACXL,UAAWD,GACX/qP,KAAMxE,EAAIM,QACV,IACJ,IAAI6vP,GAAc3wP,EAAAA,aAAkB,WAChC,IAAI80B,EAAU86N,KACd,OAAO96N,GAAUA,EAAQgO,eAA4B7nB,QACzD,GAAG,CAAC20O,KACA0H,GAAYt3P,EAAAA,aAAkB,WAC9B,IAAIib,EAAW01O,KACf,OAAO11O,GACDA,EAASi0K,aACT1pL,MACV,GAAG,CAACmrP,KACAv1K,GAAWp7E,EAAAA,aAAkB,WAAc,MAAQ,CACnD00P,KAAMA,EAAOA,EAAK5zP,QAAU,KAC5B45H,KAAMA,EAAOA,EAAK55H,QAAU,KAC5Bm4P,MAAOA,EAAMvsP,KAAI,SAAUkmB,GAAK,OAAOA,EAAE9xB,OAAS,IAClD02P,MAAOA,EAAM9qP,KAAI,SAAUkmB,GAAK,OAAOA,EAAE9xB,OAAS,IAClDw1P,QAASA,EACTN,YAAaA,EAAYl1P,QACzBq0P,aAAcA,GAAar0P,QAC3Bo0B,OAAQA,EAAOp0B,QACf40P,WAAYA,EAAW50P,QACvBy1P,oBAAqBA,GAAoBz1P,QACzC60P,aAAcA,EAAa70P,QAC3B04P,oBAAqBA,EAAoB14P,QACzCm2P,SAAUA,EAASn2P,QACnB2vP,WAAYp5N,QAA8B,kBAAfo5N,GAAiD,IAAvBA,EAAW1hP,QAAoB0hP,GACpFoE,iBAAkBiF,KAClBnF,oBAA2C,kBAAflE,EAA0BA,EAAW3yN,UAAY,CAAE4H,YAAY,EAAMC,UAAU,GAC3Gq0N,YAAanB,EACb,GAAG,CAACnE,EAAMh6H,EAAMu+H,EAAOzB,EAAOlB,EAAS7F,EAAYqJ,GAAwBjB,IAC3EoB,GAAsBj6P,EAAAA,aAAkB,SAAUkS,GAClD0mP,EAAW1mP,EACf,GAAG,IACCgoP,GAAwBl6P,EAAAA,aAAkB,SAAUkS,GACpD4mP,EAAa5mP,EACjB,GAAG,IACCioP,GAAuBn6P,EAAAA,aAAkB,SAAUkS,GACnD+kP,EAASn2P,QAAUoR,CACvB,GAAG,IACCkoP,GAAqBp6P,EAAAA,aAAkB,SAAUkS,GACjDgjB,EAAOp0B,QAAUoR,CACrB,GAAG,IACCmoP,GAA2Br6P,EAAAA,aAAkB,SAAUkS,GACvDyjP,EAAa70P,QAAUoR,CAC3B,GAAG,IACCooP,GAAyBt6P,EAAAA,aAAkB,SAAUkS,GACrDwjP,EAAW50P,QAAUoR,CACzB,GAAG,IACCqoP,GAAkCv6P,EAAAA,aAAkB,SAAUkS,GAC9DsnP,EAAoB14P,QAAUoR,CAClC,GAAG,IACCsoP,GAA2Bx6P,EAAAA,aAAkB,SAAUkS,GACvDijP,GAAar0P,QAAUoR,CAC3B,GAAG,IACCuoP,GAAkCz6P,EAAAA,aAAkB,SAAUkS,GAC9DqkP,GAAoBz1P,QAAUoR,CAClC,GAAG,IAEC29O,GAAc7vP,EAAAA,aAAkB,SAAUW,GAC1CmvP,EAAQnvP,EACZ,GAAG,CAACmvP,IACAC,GAAgB/vP,EAAAA,aAAkB,SAAUW,GAC5CqvP,EAAUrvP,EACd,GAAG,CAACqvP,IACAC,GAAkBjwP,EAAAA,aAAkB,SAAUW,GAC9Cq4P,EAAQnyO,GAAQ,CAAEA,OAAQrmB,EAAIM,QAASH,MAAOA,IAC9CuvP,EAAYvvP,EAChB,GAAG,CAACq4P,EAASx4P,EAAK0vP,IACdC,GAAanwP,EAAAA,aAAkB,SAAUW,GACzCyvP,EAAOzvP,EACX,GAAG,CAACyvP,IACAC,GAAgBrwP,EAAAA,aAAkB,SAAUW,GACxC44P,EAAQz4P,UAGZk4P,EAAQ,KAAM,CAAEnyO,OAAQrmB,EAAIM,QAASH,MAAOA,IAC5C2vP,EAAU3vP,GACd,GAAG,CAAC2vP,EAAW0I,EAASx4P,IACpBk6P,GAAoB16P,EAAAA,aAAkB,SAAUW,GAChDqzP,EAAoB54K,KAAY,CAAEz6E,MAAOA,EAAOQ,QAAS0lB,GAAO/lB,SAAW,CACvEszP,iBAAkB+F,GAClB9F,eAAgB+F,GAChB7F,qBAAsB8F,GACtB/F,mBAAoBgG,GACpBK,4BAA6BJ,GAC7B/F,qBAAsBgG,GACtB/F,4BAA6BgG,GAC7BvG,kBAAmB+F,GACnB9F,oBAAqB+F,IAE7B,GAAG,CACC9+K,GACA++K,GACAC,GACAE,GACAD,GACAE,GACAE,GACAR,GACAO,GACAN,KAGAU,GAAoB56P,EAAAA,aAAkB,SAAUW,GAChD+5P,GAAkB/5P,EACtB,GAAG,CAAC+5P,KACAG,GAAoB76P,EAAAA,aAAkB,SAAUW,GAChD+5P,GAAkB/5P,EACtB,GAAG,CAAC+5P,KACAI,GAAsB96P,EAAAA,aAAkB,SAAUW,GAClD+5P,GAAkB/5P,EACtB,GAAG,CAAC+5P,KACAK,GAAkB/6P,EAAAA,aAAkB,SAAUW,GAC9C+5P,GAAkB/5P,EACtB,GAAG,CAAC+5P,KAEAptN,GAAkBttC,EAAAA,aAAkB,SAAUW,GAC9C+5P,GAAkB/5P,EACtB,GAAG,CAAC+5P,KACAn6C,GAAkBvgN,EAAAA,aAAkB,SAAUW,GAC9C+5P,GAAkB/5P,EACtB,GAAG,CAAC+5P,KACAhsC,GAAgB1uN,EAAAA,aAAkB,SAAUW,GAC5C+5P,GAAkB/5P,EACtB,GAAG,CAAC+5P,KACAM,GAAoBh7P,EAAAA,aAAkB,SAAUW,GAChDA,EAAM+gB,iBACNg5O,GAAkB/5P,EACtB,GAAG,CAAC+5P,KAEAO,GAAmBj7P,EAAAA,aAAkB,SAAUW,GAC/CA,EAAM+gB,iBACNg5O,GAAkB/5P,EACtB,GAAG,CAAC+5P,KACAQ,GAAkBl7P,EAAAA,aAAkB,SAAUW,GAC9CA,EAAM+gB,iBACNg5O,GAAkB/5P,EACtB,GAAG,CAAC+5P,KACAS,GAAiBn7P,EAAAA,aAAkB,SAAUW,GAC7C,GAA6B,IAAzBA,EAAM+qK,QAAQp9J,QAAgD,IAAhC3N,EAAMq0P,eAAe1mP,OAAc,CACjE,IAAI8sP,EAAgB9D,KACpBtB,EAAYl1P,SAAU,EACtBu4P,EAAoBv4P,QAAUs6P,EAAc3+N,YAAW,WAAcu5N,EAAYl1P,SAAU,CAAO,GAAG63P,EACzG,CACA+B,GAAkB/5P,EACtB,GAAG,CAAC+5P,GAAmBpD,KACnB+D,GAAer7P,EAAAA,aAAkB,SAAUW,GAC3C+5P,GAAkB/5P,EACtB,GAAG,CAAC+5P,KAEAY,GAAgBt7P,EAAAA,aAAkB,WAClC,IAAI80B,EAAU86N,KACd,GAAI96N,EAAS,CACT,IAAIymO,EAAuBzmO,EAAQ30B,MAAMq7P,YAEzC,OADA1mO,EAAQ30B,MAAMq7P,YAAc,OACrB,WACH1mO,EAAQ30B,MAAMq7P,YAAcD,CAChC,CACJ,CACJ,GAAG,CAAC3L,KACA6L,GAAWz7P,EAAAA,aAAkB,WAE7B,OADAk5P,EAAaryO,IACN,WACHsyO,EAAetyO,GACnB,CACJ,GAAG,CAACsyO,EAAgBD,IA2DpBl5P,EAAAA,WAAgB,WACZ,IAAIwF,EAAS8xP,KACb,GAAIuB,EAAW,CACX,IAAI1C,EAAqB0D,MAClB/F,EAAoB74O,SAASu1K,iBAAiBmlE,EAAa70P,QAAQ81E,EAAG++K,EAAa70P,QAAQg8F,IAClGt3F,EAAOy4C,cAAcm7M,EAAet4P,SACpCs4P,EAAet4P,QAAU0E,EAAOu4C,aAAY,WACxC29M,EAAkBvF,EAAoB,CAAEv/K,EAAGqgL,EAASn2P,QAAQ81E,EAAGkmB,EAAGm6J,EAASn2P,QAAQg8F,GACvF,GAAG,GACP,CACA,OAAO,WACHt3F,EAAOy4C,cAAcm7M,EAAet4P,QACxC,CACJ,GAAG,CAAC8uP,GAAYiK,GAAoBvC,GAAWuB,IAC/C74P,EAAAA,UAAgBs7P,GAAe,CAACA,KAChCt7P,EAAAA,WAzEW,WACP,IAAIwF,EAAS8xP,KACTxiO,EAAU86N,KACV30O,EAAW01O,KAkCf,OAjCIgJ,IACI7kO,IACAwkO,EAAWx4P,QAAUgzP,EAAoBh/N,GACrCwkO,EAAWx4P,SACXw4P,EAAWx4P,QAAQ6E,iBAAiB,SAAU01P,GAAc,CAAE1qD,SAAS,IAE3E77K,EAAQnvB,iBAAiB,cAAei1P,GAAmB,CAAEjqD,SAAS,KAEtE2lD,IACAr7O,EAAStV,iBAAiB,cAAek1P,IACzC5/O,EAAStV,iBAAiB,YAAao1P,IAAiB,GACxD9/O,EAAStV,iBAAiB,cAAeq1P,IACzC//O,EAAStV,iBAAiB,gBAAiBm1P,GAAqB,CAAEnqD,SAAS,OAK/EnrM,EAAOG,iBAAiB,YAAaoxB,EAAAA,EAAM,CAAE4kO,SAAS,EAAOhrD,SAAS,IAClE77K,IACAA,EAAQnvB,iBAAiB,YAAa2nC,GAAiB,CAAEqjK,SAAS,IAC7D6/C,IACD17N,EAAQnvB,iBAAiB,aAAcs1P,GAAkB,CAAEtqD,SAAS,IAChE2lD,IACAxhO,EAAQnvB,iBAAiB,YAAau1P,GAAiB,CAAEvqD,SAAS,IAClE77K,EAAQnvB,iBAAiB,WAAYw1P,GAAgB,CAAExqD,SAAS,OAIxE2lD,IACAr7O,EAAStV,iBAAiB,YAAa46M,GAAiB,CAAE5P,SAAS,IACnE11L,EAAStV,iBAAiB,UAAW+oN,GAAe,CAAE/d,SAAS,MAGhE,WACC2oD,EAAWx4P,SACXw4P,EAAWx4P,QAAQ+9C,oBAAoB,SAAUw8M,IAEjDvmO,IACAA,EAAQ+pB,oBAAoB,cAAe+7M,IAC3C9lO,EAAQ+pB,oBAAoB,YAAavR,IACzCxY,EAAQ+pB,oBAAoB,aAAco8M,IAC1CnmO,EAAQ+pB,oBAAoB,YAAaq8M,IACzCpmO,EAAQ+pB,oBAAoB,WAAYs8M,KAE5ClgP,EAAS4jC,oBAAoB,cAAeg8M,IAC5C5/O,EAAS4jC,oBAAoB,YAAak8M,IAAiB,GAC3D9/O,EAAS4jC,oBAAoB,cAAem8M,IAC5C//O,EAAS4jC,oBAAoB,gBAAiBi8M,IAC9C7/O,EAAS4jC,oBAAoB,YAAa0hK,IAC1CtlM,EAAS4jC,oBAAoB,UAAW6vK,IACxClpN,EAAOq5C,oBAAoB,YAAa9nB,EAAAA,GACxCvxB,EAAO01B,aAAam+N,EAAoBv4P,QAC5C,CACJ,GAgBsB,CAClBw1P,EACAgB,GACA1H,GACAe,GACAH,EACAmJ,GACAqB,GACA1tN,GACAizK,GACAmO,GACAosC,GACAF,GACAC,GACAE,GACAI,GACAD,GACAD,GACAI,KAEJr7P,EAAAA,WAAgB,WAEZ,OADAu5P,EAAQz4P,SAAU,EACX,WACHy4P,EAAQz4P,SAAU,CACtB,CACJ,GAAG,IACHd,EAAAA,gBAAsBy7P,GAAU,CAACA,IACrC,8DC3UW1C,EAAoB,SAAU/0M,EAAShhD,GAC9C,IAAIkB,EAAKlE,EAAAA,WAAiBgkD,GAAUsgM,EAAepgP,EAAG,GAAI03P,EAAgB13P,EAAG,GACzEI,EAAKtE,EAAAA,SAAegD,GAAe64P,EAAav3P,EAAG,GAAIw3P,EAAcx3P,EAAG,GAU5E,MAAO,MATsB3E,IAAjB2kP,EAA6BA,EAAeuX,EAChC,WAEpB,IADA,IAAIlnO,EAAO,GACFwR,EAAK,EAAGA,EAAKhN,UAAU7qB,OAAQ63B,IACpCxR,EAAKwR,GAAMhN,UAAUgN,QAERxmC,IAAjB2kP,EACMsX,EAAchvO,WAAM,EAAQ+H,GAAQmnO,EAAYnnO,EAAK,GAC/D,EAKJ,8DChBW4yN,EAAW,SAAU58O,EAAOkc,EAAQq/B,QAC5B,IAAXA,IAAqBA,EAAS,CAAC,GACnC,IAAI5Y,EAAkBttC,EAAAA,aAAkB,SAAUW,GAC1CulD,EAAO5pB,aACP4pB,EAAO5pB,YAAYpJ,UAAKvzB,EAAWgB,GAEnCgK,EAAM2xB,aACN3xB,EAAM2xB,YAAYpJ,UAAKvzB,EAAW,CAC9BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACulD,EAAO5pB,YAAa3xB,EAAM2xB,YAAazV,IACvC6nM,EAAgB1uN,EAAAA,aAAkB,SAAUW,GACxCulD,EAAO61M,WACP71M,EAAO61M,UAAU7oO,UAAKvzB,EAAWgB,GAEjCgK,EAAMoxP,WACNpxP,EAAMoxP,UAAU7oO,UAAKvzB,EAAW,CAC5BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACulD,EAAO61M,UAAWpxP,EAAMoxP,UAAWl1O,IA8EvC,MAAO,CACH/kB,QA9Ec9B,EAAAA,aAAkB,SAAUW,GACtCulD,EAAOpkD,SACPokD,EAAOpkD,QAAQoxB,UAAKvzB,EAAWgB,GAE/BgK,EAAM7I,SACN6I,EAAM7I,QAAQoxB,UAAKvzB,EAAW,CAC1BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACulD,EAAOpkD,QAAS6I,EAAM7I,QAAS+kB,IAqE/Bk1O,UAAWrtC,EACXpyL,YAAagR,EACb0uN,cAtEoBh8P,EAAAA,aAAkB,SAAUW,GAC5CulD,EAAO81M,eACP91M,EAAO81M,cAAc9oO,UAAKvzB,EAAWgB,GAErCgK,EAAMqxP,eACNrxP,EAAMqxP,cAAc9oO,UAAKvzB,EAAW,CAChCknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACulD,EAAO81M,cAAerxP,EAAMqxP,cAAen1O,IA6D3Co1O,aA5DmBj8P,EAAAA,aAAkB,SAAUW,GAC3CulD,EAAO+1M,cACP/1M,EAAO+1M,aAAa/oO,UAAKvzB,EAAWgB,GAEpCgK,EAAMsxP,cACNtxP,EAAMsxP,aAAa/oO,UAAKvzB,EAAW,CAC/BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACulD,EAAO+1M,aAActxP,EAAMsxP,aAAcp1O,IAmDzCq1O,aAlDmBl8P,EAAAA,aAAkB,SAAUW,GAC3CulD,EAAOg2M,cACPh2M,EAAOg2M,aAAahpO,UAAKvzB,EAAWgB,GAEpCgK,EAAMuxP,cACNvxP,EAAMuxP,aAAahpO,UAAKvzB,EAAW,CAC/BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACulD,EAAOg2M,aAAcvxP,EAAMuxP,aAAcr1O,IAyCzCs1O,YAxCkBn8P,EAAAA,aAAkB,SAAUW,GAC1CulD,EAAOi2M,aACPj2M,EAAOi2M,YAAYjpO,UAAKvzB,EAAWgB,GAEnCgK,EAAMwxP,aACNxxP,EAAMwxP,YAAYjpO,UAAKvzB,EAAW,CAC9BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACulD,EAAOi2M,YAAaxxP,EAAMwxP,YAAat1O,IA+BvCu1O,WA9BiBp8P,EAAAA,aAAkB,SAAUW,GACzCulD,EAAOk2M,YACPl2M,EAAOk2M,WAAWlpO,UAAKvzB,EAAWgB,GAElCgK,EAAMyxP,YACNzxP,EAAMyxP,WAAWlpO,UAAKvzB,EAAW,CAC7BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACulD,EAAOk2M,WAAYzxP,EAAMyxP,WAAYv1O,IAqBrCsR,YApBkBn4B,EAAAA,aAAkB,SAAUW,GAC1CulD,EAAO/tB,aACP+tB,EAAO/tB,YAAYjF,UAAKvzB,EAAWgB,GAEnCgK,EAAMwtB,aACNxtB,EAAMwtB,YAAYjF,UAAKvzB,EAAW,CAC9BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACulD,EAAO/tB,YAAaxtB,EAAMwtB,YAAatR,IAY/C,8DClHW4rO,EAAkB,SAAUzuM,EAASr5C,GAG5C,OAF2B3K,EAAAA,WAAiBgkD,EACzBq4M,CAAqB1xP,EAE5C,8DCCO,SAAS2xP,EAAOhb,EAAYuR,EAAYl+N,GAE3C,IAAIzwB,EAAKlE,EAAAA,SAAe6yP,GAAazqO,EAAMlkB,EAAG,GAAI4uP,EAAS5uP,EAAG,GAW9D,OAVAlE,EAAAA,WAAgB,WACZ,IAAKooB,GAAO5iB,QAAU87O,EAAWxgP,QAAS,CAEtC,IAAIiyP,EAAevtP,OAAO46C,iBAAiBkhM,EAAWxgP,SAASg9B,UAC3Di1N,GAEAD,EAAOC,EAEf,CACJ,GAAGp+N,GACIvM,CACX,gHCrBI9G,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAmBWkzP,EAAOv8P,EAAAA,YAAiB,SAAU2K,EAAOnK,GAChD,IAAIF,EAAYqK,EAAMrK,UAAWiC,EAAOoI,EAAMpI,KAAMiE,EAAamE,EAAMnE,WAAYR,EAAO2E,EAAM3E,KAAMw2P,EAAO7xP,EAAM6xP,KAAMr8P,EAAQwK,EAAMxK,MAAON,EAAK8K,EAAM9K,GAAIm4B,EAAWrtB,EAAMqtB,SAAUkhB,EAASjyB,EAAOtc,EAAO,CAAC,YAAa,OAAQ,aAAc,OAAQ,OAAQ,QAAS,KAAM,aAC9Qkc,EAAS7mB,EAAAA,OAAa,MACtBshP,EAAathP,EAAAA,OAAa,MAC9BA,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASwsN,EAAWxgP,QACpB,IACJd,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAAI27P,EAAWz8P,EAAAA,SAAc,WAAc,OAAOgG,GAAQ8vB,EAAa9vB,IAAM,GAAG,CAACA,IAC7E02P,EAAW18P,EAAAA,SAAc,WAAc,OAAOw8P,GAAQ1mO,EAAa0mO,IAAM,GAAG,CAACA,IAC7EG,EAAiB38P,EAAAA,SAAc,WAC/B,IAAIkE,EACJ,OAAO23B,EAAAA,EAAAA,GAAW,SAAU,cAAet5B,IAAQq6P,EAAAA,EAAAA,IAAYr6P,KAAQ2B,EAAK,CAAC,GACtE,WAAWyM,OAAOnK,IAAeA,EACpCtC,EAAG,YAA2B,eAAbw4P,GAA0C,SAAbA,EAC9Cx4P,EAAG,YAA2B,aAAbw4P,GAAwC,SAAbA,EAC5Cx4P,GAAK24P,EAAAA,EAAaJ,GAAWn8P,EACrC,GAAG,CAACiC,EAAMiE,EAAYi2P,EAAUC,EAAUp8P,IACtCgnP,GAAaC,EAAAA,EAAAA,GAAS58O,EAAOkc,GACjC,OAAQ7mB,EAAAA,cAAoB,OAAQshB,EAAS,CAAE9gB,IAAK8gP,GAAcpoM,EAAQouM,EAAY,CAAEhnP,UAAWq8P,EAAgB98P,GAAIA,EAAIm4B,SAAUA,EAAU73B,MAAOA,EAAOqE,KAAM,iBACvK,IACA+3P,EAAK9jO,UAAY,CACbt4B,MAAOu4B,EAAAA,OACPmD,WAAYnD,EAAAA,OACZn2B,KAAMm2B,EAAAA,OACNlyB,WAAYkyB,EAAAA,MAAgB,CACxB,UAAW,UAAW,YAAa,WACnC,OAAQ,UAAW,QAAS,UAC5B,OAAQ,QAAS,YAErB1yB,KAAM0yB,EAAAA,MAAgB,CAAC,UAAW,SAAU,QAAS,SAAU,QAAS,SAAU,UAAW,aAC7F8jO,KAAM9jO,EAAAA,MAAgB,CAAC,UAAW,aAAc,WAAY,UAEhE,IAAI5C,EAAe,CACf9vB,KAAM,UACNw2P,KAAM,WAEVD,EAAKh2N,YAAc,sGC7EfjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAQWiqC,EAAWtzC,EAAAA,YAAiB,SAAU2K,EAAOnK,GACpD,IAAI0D,EAAII,EACJK,EAAK3E,EAAAA,WAAiB88P,EAAAA,GAAe72P,EAAOtB,EAAGsB,KAAM82P,EAAQp4P,EAAGo4P,MAChEl7P,EAAO8I,EAAM9I,KAAMm7P,EAAgB/1O,EAAOtc,EAAO,CAAC,SAClDpI,EAAgB,QAAT0D,GAAyC,QAArB/B,EAAKyG,EAAM9I,YAAyB,IAAPqC,OAAgB,EAASA,EAAG3B,OAASoI,EAAMpI,KAASoI,EAAMpI,OAA+B,QAArB+B,EAAKqG,EAAM9I,YAAyB,IAAPyC,OAAgB,EAASA,EAAG/B,MAErLu9G,GADJv9G,EAAQA,GAAQw6P,GAASA,EAAMx6P,IAAgC,kBAAhBw6P,EAAMx6P,GAAsBw6P,EAAMx6P,GAAQA,IACtEw6P,GAASA,EAAMx6P,IAAgC,kBAAhBw6P,EAAMx6P,GAAsBw6P,EAAMx6P,GAAQV,EAC5F,MAAiB,QAAToE,GAAkB65G,EACtB9/G,EAAAA,cAAoBi9P,EAAAA,EAAS37O,EAAS,CAAC,EAAG3W,EAAO,CAAE9I,KAAMi+G,EAAKt/G,IAAKA,KACnER,EAAAA,cAAoBu8P,EAAAA,EAAMj7O,EAAS,CAAC,EAAG07O,EAAe,CAAEz6P,KAAMA,EAAM/B,IAAKA,IACjF,IACA8yC,EAAS/M,YAAc,kECnCZu2N,UAAe98P,cAAoB,CAAEiG,KAAM,QACtD62P,EAAav2N,YAAc,mHCNvBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAoBW4zP,EAAUj9P,EAAAA,YAAiB,SAAU2K,EAAOnK,GACnD,IAAIN,EAAWyK,EAAMzK,SAAUI,EAAYqK,EAAMrK,UAAW48P,EAAevyP,EAAMuyP,aAAcr7P,EAAO8I,EAAM9I,KAAM26P,EAAO7xP,EAAM6xP,KAAM38P,EAAK8K,EAAM9K,GAAIm4B,EAAWrtB,EAAMqtB,SAAUhyB,EAAO2E,EAAM3E,KAAM7F,EAAQwK,EAAMxK,MAAOg9P,EAAWxyP,EAAMwyP,SAAU32P,EAAamE,EAAMnE,WAAY42P,EAAUzyP,EAAMyyP,QAA4Bt7P,GAAZ6I,EAAMpI,KAAgBoI,EAAM7I,SAASo3C,EAASjyB,EAAOtc,EAAO,CAAC,WAAY,YAAa,eAAgB,OAAQ,OAAQ,KAAM,WAAY,OAAQ,QAAS,WAAY,aAAc,UAAW,OAAQ,YACnf22O,EAAathP,EAAAA,OAAa,MAC9BA,EAAAA,oBAA0BQ,GAAK,WAAc,MAAQ,CACjDs0B,QAASwsN,EAAWxgP,QACpB,IACJ,IAAIu8P,EAAer9P,EAAAA,SAAc,WAAc,OAAO6B,EAAOA,EAAKU,KAAOuzB,EAAaj0B,IAAM,GAAG,CAACA,IAC5F46P,EAAWz8P,EAAAA,SAAc,WAAc,OAAOgG,GAAQ8vB,EAAa9vB,IAAM,GAAG,CAACA,IAC7E02P,EAAW18P,EAAAA,SAAc,WAAc,OAAOw8P,GAAQ1mO,EAAa0mO,IAAM,GAAG,CAACA,IAC7Ec,EAAct9P,EAAAA,SAAc,WAAc,OAAOo9P,GAAWtnO,EAAasnO,OAAS,GAAG,CAACA,IACtFG,EAAoBv9P,EAAAA,SAAc,WAClC,IAAIkE,EACJ,OAAO23B,EAAAA,EAAAA,GAAW,SAAU,aAAc,WAAawhO,IAAen5P,EAAK,CAAC,GACrE,WAAWyM,OAAOnK,IAAeA,EACpCtC,EAAG,YAA2B,eAAbw4P,GAA0C,SAAbA,EAC9Cx4P,EAAG,YAA2B,aAAbw4P,GAAwC,SAAbA,EAC5Cx4P,GAAK24P,EAAAA,EAAaJ,GAAWn8P,EACrC,GAAG,CAAC+8P,EAAc72P,EAAYi2P,EAAUC,EAAUp8P,IAC9C++K,EAAer/K,EAAAA,SAAc,WAC7B,OAAI2K,EAAM7D,OAAS6D,EAAM7C,OACdwZ,EAAS,CAAExa,MAAO6D,EAAM7D,MAAOgB,OAAQ6C,EAAM7C,QAAU3H,GAEzDwK,EAAM7D,MACJwa,EAAS,CAAExa,MAAO6D,EAAM7D,MAAOgB,OAAQ6C,EAAM7D,OAAS3G,GAExDwK,EAAM7C,OACJwZ,EAAS,CAAExa,MAAO6D,EAAM7C,OAAQA,OAAQ6C,EAAM7C,QAAU3H,GAGxDmhB,EAAS,CAAC,EAAGnhB,EAE5B,GAAG,CAACwK,EAAM7D,MAAO6D,EAAM7C,OAAQ3H,IAC/B,OAAQH,EAAAA,cAAoB,OAAQ,CAAEM,UAAWi9P,EAAmBp9P,MAAOk/K,EAAc7+K,IAAK8gP,EAAYx/O,QAASA,GAC/G9B,EAAAA,cAAoB,MAAOshB,EAAS,CAAEzhB,GAAIA,EAAIS,UAAW48P,EAAc/8P,MAAOg9P,EAAU,eAAe,EAAMnlO,SAAUA,EAAUwlO,WAAW,EAAOC,MAAO,6BAA8BL,QAASv7P,EAAOA,EAAKu7P,QAAUE,EAAapyP,wBAAyBrJ,EAAO,CAAEsJ,OAAQtJ,EAAKwkD,cAAY1mD,GAAau5C,GAASr3C,OAAOlC,EAAYO,GAChV,IACA+8P,EAAQxkO,UAAY,CAChBt4B,MAAOu4B,EAAAA,OACPmD,WAAYnD,EAAAA,OACZx4B,SAAUw4B,EAAAA,IACV72B,KAAM62B,EAAAA,OACNlyB,WAAYkyB,EAAAA,MAAgB,CACxB,UAAW,UAAW,YAAa,WACnC,OAAQ,UAAW,QAAS,UAC5B,OAAQ,QAAS,YAErB1yB,KAAM0yB,EAAAA,MAAgB,CAAC,UAAW,SAAU,QAAS,SAAU,QAAS,SAAU,UAAW,aAC7F8jO,KAAM9jO,EAAAA,MAAgB,CAAC,UAAW,aAAc,WAAY,UAEhE,IAAI5C,EAAe,CACf9vB,KAAM,UACNw2P,KAAM,UACN36P,KAAM,GACNu7P,QAAS,aAEbH,EAAQ12N,YAAc,6DC5Ff,IAAIs2N,EAAe,CACtB,QAAW,GACX,OAAU,YACV,MAAS,YACT,OAAU,YACV,MAAS,YACT,OAAU,YACV,QAAW,aACX,SAAY,8FCPLnV,EAAa,SAAU/B,GAAa,OAAOA,EAAUhsO,QAAQ,QAAS,GAAK,EAI3EijP,EAAc,SAAUr6P,GAAQ,MAAO,OAASA,CAAM,EAItD2jP,EAAkBxtN,EAAAA,MAAgB,CACzCn2B,KAAMm2B,EAAAA,OAAiBoY,WACvBuV,QAAS3tB,EAAAA,OAAiBoY,WAC1BssN,QAAS1kO,EAAAA,OAAiBoY,2DCZvB,IAAItd,EAAO,CACd+1J,UAAW,EACX5rJ,IAAK,EACL2B,MAAO,GACPw8D,MAAO,GACPr5D,IAAK,GACLwe,MAAO,GACPy8M,OAAQ,GACRC,SAAU,GACVlqO,IAAK,GACLC,KAAM,GACNvX,KAAM,GACNwX,GAAI,GACJrtB,MAAO,GACPstB,KAAM,GACNstB,OAAQ,uwDChBD08M,gCCSAC,EAAY,SAAUpZ,GAAa,MAA0B,kBAAZqZ,UARrC,SAAUrZ,GAAa,OAAOptN,QAA6B,oBAAdotN,KAA8BA,EAAU93N,UAAUoxO,iBAAmB,CAQpDC,CAAiBvZ,IAJnF,SAAUA,GAAa,OAAOptN,QAAQotN,EAAUwZ,UAAwC,oBAArBxZ,EAAUjjP,OAAwB,CAIJ08P,CAAazZ,GAAa,gCCR1I0Z,EACA,WACA,oNFFJ,SAAWP,GACPA,EAAkBA,EAAuB,IAAI,GAAK,MAClDA,EAAkBA,EAA0B,OAAI,GAAK,QACxD,CAHD,CAGGA,IAAsBA,EAAoB,CAAC,IAEvC,IAAIQ,EAAgB,SAAUr0K,QACjB,IAAZA,IAAsBA,EAAU,IACpC,IAAIs0K,EAAar+P,EAAAA,OAAa+pF,GAC1Bu0K,EAAyBt+P,EAAAA,aAAkB,SAAU8e,GACrD,OAAQA,EAAO7Y,MACX,KAAK23P,EAAkB1zN,IACnBm0N,EAAWv9P,QAAQ2sB,KAAK3O,EAAO7O,MAC/B,MACJ,KAAK2tP,EAAkB3zN,OACnB,IAAI5oB,EAAQg9O,EAAWv9P,QAAQ4mC,QAAQ5oB,EAAO7O,MAC9CouP,EAAWv9P,QAAQyvB,OAAOlP,EAAO,GAK7C,GAAG,IACH,MAAO,CAACg9O,EAAWv9P,QAASw9P,EAChC,YGpBWC,EAAY,SAAU/9P,GAC7B,IAAImwP,GAAcqC,EAAAA,EAAAA,GAAYxyP,GAO9B,OANgBR,EAAAA,aAAkB,WAC9B,IAAIib,EAAW01O,IACf,OAAO11O,GACDA,EAASi0K,aACT1pL,MACV,GAAG,CAACmrP,GAER,8DCXW6N,EAAoB,CAC3B,OAAU,UACV,MAAS,UACT,OAAU,UACV,MAAS,UACT,OAAU,WAKHC,EAAsB,CAC7B,MAAS,sBACT,OAAU,uBACV,KAAQ,sBAKDC,EAAsB,CAC7B,OAAU,SACV,MAAS,SACT,OAAU,SACV,MAAS,SACT,OAAU,SACV,KAAQ,WACR,KAAQ,YAKDC,EAAqB,CAC5B,OAAU,KACV,MAAS,KACT,OAAU,KACV,MAAS,KACT,OAAU,KACV,KAAQ,OACR,KAAQ,QAKDC,EAAuB,CAC9B,IAAO,QACP,MAAS,QACT,OAAU,QACV,KAAQ,SAKDC,EAAqB,CAC5B,KAAQ,cACR,MAAS,eACT,OAAU,gBACV,QAAW,kBAKJC,EAAyB,CAChC,UAAa,mBACb,UAAa,mBACb,WAAc,qBAKPC,EAAsB,CAC7B,QAAW,kBACX,QAAW,kBACX,UAAa,oBACb,SAAY,mBACZ,KAAQ,eACR,QAAW,kBACX,QAAW,kBACX,MAAS,gBACT,KAAQ,eACR,MAAS,gBACT,QAAW,mBClFXz9O,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAOI21P,EAAqB,SAAUlqO,GAC/B,IAAItyB,EAAYxC,EAAAA,YAAiB,SAAU2K,EAAOnK,GAC9C,IAAIX,EAAK8K,EAAM9K,GAAIM,EAAQwK,EAAMxK,MAAOG,EAAYqK,EAAMrK,UAAW8e,EAAWzU,EAAMyU,SAAUjS,EAAaxC,EAAMwC,WAAYqJ,EAAY7L,EAAM6L,UAAWsqG,EAAgBn2G,EAAMm2G,cAAet6G,EAAamE,EAAMnE,WAAYuB,EAAS4C,EAAM5C,OAAQmxC,EAASjyB,EAAOtc,EAAO,CAAC,KAAM,QAAS,YAAa,WAAY,aAAc,YAAa,gBAAiB,aAAc,WAC7Wkc,EAAS7mB,EAAAA,OAAa,MACtBshP,EAAathP,EAAAA,OAAa,MAC9BA,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASwsN,EAAWxgP,QACpB6J,MAAOA,EACP,IACJ3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAII2jP,EAAY3vN,EAKZmqO,EAAmB,WACnB,QAAet/P,IAAXoI,EAAJ,CAGA,GAAsB,kBAAXA,EACP,MAAO,CAAC22P,EAAoB32P,IAGhC,GAAsB,kBAAXA,GAAuBA,GAAU,GAAKA,GAAU,GACvD,MAAO,CAAC,OAAO4I,OAAO5I,IAE1B,GAAsB,kBAAXA,EAAqB,CAC5B,IAAIm3P,EAAsB,GAO1B,OANA9vP,OAAOC,KAAKtH,GAAQqT,SAAQ,SAAU2c,GACd,OAAhBhwB,EAAOgwB,SAAiCp4B,IAAhBoI,EAAOgwB,IAC/BmnO,EAAoBzxO,KAnBR,SAAU0xO,EAAYjtP,GAC9C,IAAIywC,EAAuB,kBAAVzwC,EAAqBysP,EAAmBzsP,GAASA,EAClE,MAAO,GAAGvB,OAAOiuP,EAAqBO,IAAaxuP,OAAOgyC,EAC9D,CAgByCy8M,CAAsBrnO,EAAKhwB,EAAOgwB,IAEnE,IACcmnO,EAAoB70M,KAAK,IAE3C,CAjBA,CAkBJ,EAeA,OAAQrqD,EAAAA,cAAoBykP,EAAWnjO,EAAS,CAAEzhB,GAAIA,EAAIW,IAAK8gP,EAAYhhP,UAbjD,CA9Bf,KAAKqQ,OADe,MAAZmkB,EAAkB,YAAcA,GAiC3C0pO,EAAkBp/O,GAClBq/O,EAAoBtxP,GACpB0xP,EAAmBroP,GACnBsoP,EAAuBh+I,GACvBi+I,EAAoBv4P,GACpBy4P,IACA3+P,GAEoCiP,QAAO,SAAUrC,GAAK,YAAavN,IAANuN,CAAiB,IAAGm9C,KAAK,KAGYlqD,MAAOA,GAAS+4C,GAASvuC,EAAMzK,SACjJ,IAoBA,OAnBAsC,EAAUi2B,UAAY,CAClBt4B,MAAOu4B,EAAAA,OACPp4B,UAAWo4B,EAAAA,OACXtZ,SAAUsZ,EAAAA,MAAgB,CAAC,SAAU,QAAS,SAAU,QAAS,WACjEvrB,WAAYurB,EAAAA,MAAgB,CAAC,QAAS,SAAU,SAChD3wB,OAAQ2wB,EAAAA,UAAoB,CACxBA,EAAAA,OACAA,EAAAA,OACAA,EAAAA,MAAgB,CAAC,SAAU,QAAS,SAAU,QAAS,SAAU,OAAQ,WAE7EliB,UAAWkiB,EAAAA,MAAgB,CAAC,OAAQ,QAAS,SAAU,YACvDooF,cAAepoF,EAAAA,MAAgB,CAAC,YAAa,YAAa,eAC1DlyB,WAAYkyB,EAAAA,MAAgB,CACxB,UAAW,UAAW,YAAa,WACnC,OAAQ,UAAW,QAAS,UAC5B,OAAQ,QAAS,aAGzBl2B,EAAU+jC,YAAc,uBAAuB51B,OAAOmkB,EAAQowB,eACvD1iD,CACX,EAsJW68P,EAAa,CACpB57F,GAzIKu7F,EAAmB,MA0IxBt7F,GA5HKs7F,EAAmB,MA6HxBr7F,GA/GKq7F,EAAmB,MAgHxBp7F,GAlGKo7F,EAAmB,MAmGxBn7F,GArFKm7F,EAAmB,MAsFxBl7F,GAxEKk7F,EAAmB,MAyExBhsO,EA3DIgsO,EAAmB,KA4DvB91M,KA7CO81M,EAAmB,QA8C1B96F,IAvBM86F,EAAmB,QCjPzB19O,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAGWmmO,GAAqB,SAAUC,EAAa1mO,EAAMypC,GACzD,IAAIp+D,EAAKlE,EAAAA,SAAe64B,GAAQ0mO,GAAc//P,EAAQ0E,EAAG,GAAI82B,EAAW92B,EAAG,GAO3E,MAAO,MAAUvE,IAATk5B,EAAqBA,EAAOr5B,EANhBQ,EAAAA,aAAkB,SAAUkS,EAAOyiB,GACnDqG,EAAS9oB,GACLowD,GACAA,EAASpvC,UAAKvzB,EAAW2hB,GAASA,GAAS,CAAC,EAAGqT,GAAO,CAAEziB,MAAOA,IAEvE,GAAG,CAACowD,EAAUtnC,IAElB,aCbWwkO,GAAc,SAAU70P,GAC/B,IAAIzG,EAAKo7P,GAAmB,UAAM3/P,GAAY+0P,EAAOxwP,EAAG,GAAI80P,EAAU90P,EAAG,GACrEI,EAAKg7P,GAAmB,UAAM3/P,GAAY+6H,EAAOp2H,EAAG,GAAIm7P,EAAUn7P,EAAG,GACrEK,EAAKy5P,EAAc,IAAKnF,EAAQt0P,EAAG,GAAI+6P,EAAgB/6P,EAAG,GAC1DG,EAAKs5P,EAAc,IAAK5G,EAAQ1yP,EAAG,GAAI66P,EAAgB76P,EAAG,GAyB9D,OAAQ9E,EAAAA,cAAoBqxP,GAAAA,GAAYpR,SAAU,CAAE/tO,MAAO,CAACwiP,EAAMsE,IAC9Dh5P,EAAAA,cAAoBsxP,GAAAA,GAAYrR,SAAU,CAAE/tO,MAAO,CAACwoH,EAAM+kI,IACtDz/P,EAAAA,cAAoBuxP,GAAAA,GAAatR,SAAU,CAAE/tO,MAAO,CAAC+mP,EA1B1C,SAAUhpP,GACzByvP,EAAc,CACVz5P,KAAM23P,EAAkB1zN,IACxBj6B,KAAMA,GAEd,EACqB,SAAUA,GAC3ByvP,EAAc,CACVz5P,KAAM23P,EAAkB3zN,OACxBh6B,KAAMA,GAEd,IAgBYjQ,EAAAA,cAAoBwxP,GAAAA,GAAavR,SAAU,CAAE/tO,MAAO,CAACslP,EAf9C,SAAUvnP,GACzB0vP,EAAc,CACV15P,KAAM23P,EAAkB1zN,IACxBj6B,KAAMA,GAEd,EACqB,SAAUA,GAC3B0vP,EAAc,CACV15P,KAAM23P,EAAkB3zN,OACxBh6B,KAAMA,GAEd,IAIyGtF,EAAMzK,YACnH,EACAs/P,GAAYj5N,YAAc,kDC9BnB,SAASq5N,GAAap/P,EAAKyzP,QACZ,IAAdA,IAAwBA,EAAY,CACpC/0M,YAAanoB,EAAAA,EACbooB,WAAYpoB,EAAAA,EACZ2gO,YAAa3gO,EAAAA,EACbwnB,OAAQxnB,EAAAA,IAEZ,IAAI7yB,EAAK+vP,EAAU/0M,YAAaA,OAAqB,IAAPh7C,EAAgB6yB,EAAAA,EAAO7yB,EAAII,EAAK2vP,EAAU90M,WAAYA,OAAoB,IAAP76C,EAAgByyB,EAAAA,EAAOzyB,EAAIK,EAAKsvP,EAAUyD,YAAaA,OAAqB,IAAP/yP,EAAgBoyB,EAAAA,EAAOpyB,EAAIG,EAAKmvP,EAAU11M,OAAQA,OAAgB,IAAPz5C,EAAgBiyB,EAAAA,EAAOjyB,EAC/N26P,GAAhC1G,EAAAA,GAAAA,GAAkBzH,GAAAA,IAA2B,GAClDlsP,EAAKpF,EAAAA,WAAiBwxP,GAAAA,IAAeqO,EAAez6P,EAAG,GAAI06P,EAAiB16P,EAAG,GAC/EwqP,EAAa5vP,EAAAA,aAAkB,WAAc,OAAOQ,EAAIM,SAAWN,EAAIM,QAAQg0B,QAC7Et0B,EAAIM,QAAQg0B,QACZt0B,EAAIM,OAAS,GAAG,CAACN,IACnBqmB,EAAS7mB,EAAAA,OAAa,MAC1BA,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAAS86N,IACT1wM,YAAa6gN,EACb5gN,WAAY6gN,EACZtI,YAAauI,EACb1hN,OAAQ2hN,EACRl7P,KAAMxE,EAAIM,QACV,IACJ,IAAIi/P,EAAkB//P,EAAAA,aAAkB,SAAUW,GAC9C8+P,EAAQ54O,EAAQ,CAAEA,OAAQrmB,EAAIM,QAASH,MAAOA,IAC9Cu+C,EAAYv+C,EAChB,GAAG,CAAC8+P,EAASj/P,EAAK0+C,IACd8gN,EAAiBhgQ,EAAAA,aAAkB,SAAUW,GAC7Cw+C,EAAWx+C,EACf,GAAG,CAACw+C,IACA8gN,EAAkBjgQ,EAAAA,aAAkB,SAAUW,GAC9C8+P,EAAQ,KAAM,CAAE54O,OAAQrmB,EAAIM,QAASH,MAAOA,IAC5C+2P,EAAY/2P,EAChB,GAAG,CAAC8+P,EAASj/P,EAAKk3P,IACdwI,EAAalgQ,EAAAA,aAAkB,SAAUW,GACzC8+P,EAAQ,KAAM,CAAE54O,OAAQrmB,EAAIM,QAASH,MAAOA,IAC5C49C,EAAO59C,EACX,GAAG,CAAC8+P,EAASj/P,EAAK+9C,IACdk9M,EAAWz7P,EAAAA,aAAkB,WAE7B,OADA6/P,EAAah5O,GACN,WACHi5O,EAAej5O,EACnB,CACJ,GAAG,CAACi5O,EAAgBD,IACpB7/P,EAAAA,gBAAsBy7P,EAAU,CAACA,GACrC,CCjDO,IAAI0E,GAAYngQ,EAAAA,YAAiB,SAAU2K,EAAOnK,GACrD,IAAImvP,EAAW3vP,EAAAA,OAAa,MACxB6mB,EAAS7mB,EAAAA,OAAa,MACtB4vP,EAAa5vP,EAAAA,aAAkB,WAAc,OAAO2vP,EAAS7uP,SAAW6uP,EAAS7uP,QAAQg0B,QACvF66N,EAAS7uP,QAAQg0B,QACjB66N,EAAS7uP,OAAS,GAAG,CAAC6uP,IAC5B3vP,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CAAEiO,QAAS86N,UAAgBjwP,EAAc,IACjGK,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpEd,EAAAA,oBAA0B2K,EAAMglP,UAAU,WAAc,OAAOA,EAAS7uP,OAAS,IACjF,IAAIi/P,EAAkB//P,EAAAA,aAAkB,SAAUW,GACzCgK,EAAMu0C,aAGXv0C,EAAMu0C,YAAY,CACdpqB,QAAS86N,IACT/oO,OAAQA,EAAO/lB,QACfH,MAAOA,GAEf,GAAG,CAACgK,EAAMu0C,YAAa0wM,IACnBoQ,EAAiBhgQ,EAAAA,aAAkB,SAAUW,GACxCgK,EAAMw0C,YAGXx0C,EAAMw0C,WAAW,CACbrqB,QAAS86N,IACT/oO,OAAQA,EAAO/lB,QACfH,MAAOA,GAEf,GAAG,CAACivP,EAAYjlP,EAAMw0C,aAClB8gN,EAAkBjgQ,EAAAA,aAAkB,SAAUW,GACzCgK,EAAM+sP,aAGX/sP,EAAM+sP,YAAY,CACd5iO,QAAS86N,IACT/oO,OAAQA,EAAO/lB,QACfH,MAAOA,GAEf,GAAG,CAACgK,EAAM+sP,YAAa9H,IACnBsQ,EAAalgQ,EAAAA,aAAkB,SAAUW,GACpCgK,EAAM4zC,QAGX5zC,EAAM4zC,OAAO,CACTzpB,QAAS86N,IACT/oO,OAAQA,EAAO/lB,QACfH,MAAOA,GAEf,GAAG,CAACgK,EAAM4zC,OAAQqxM,IAOlB,OANAgQ,GAAajQ,EAAU,CACnBzwM,YAAa6gN,EACb5gN,WAAY6gN,EACZtI,YAAauI,EACb1hN,OAAQ2hN,IAELv1P,EAAMzK,SACNF,EAAAA,aAAmBA,EAAAA,SAAe6mL,KAAKl8K,EAAMzK,UAAW,CAAEM,IAAKmvP,IAChE,IACV,IACAwQ,GAAU55N,YAAc,qKChExB,SAAS65N,EAAeC,EAAWC,GAC/B,GAAID,EAAU/xP,SAAWgyP,EAAWhyP,OAChC,OAAO,EAEX,IAAK,IAAI3B,EAAI,EAAGA,EAAI0zP,EAAU/xP,OAAQ3B,IAClC,GARS2lD,EAQI+tM,EAAU1zP,GARPonB,EAQWusO,EAAW3zP,KAPlC2lD,IAAUv+B,GAAYs0B,OAAOi4B,MAAMhuB,IAAUjK,OAAOi4B,MAAMvsD,IAQ1D,OAAO,EATnB,IAAiBu+B,EAAOv+B,EAYpB,OAAO,CACX,CAIO,SAASwsO,EAAWC,EAAUC,QACf,IAAdA,IAAwBA,EAAYL,GACxC,IAAIt+M,EAAQ,KACZ,SAAS4+M,IAEL,IADA,IAAIC,EAAU,GACLx6N,EAAK,EAAGA,EAAKhN,UAAU7qB,OAAQ63B,IACpCw6N,EAAQx6N,GAAMhN,UAAUgN,GAE5B,GAAI2b,GAASA,EAAM8+M,WAAan0O,MAAQg0O,EAAUE,EAAS7+M,EAAM++M,UAC7D,OAAO/+M,EAAMi5B,WAEjB,IAAIA,EAAaylL,EAAS5zO,MAAMH,KAAMk0O,GAMtC,OALA7+M,EAAQ,CACJi5B,WAAYA,EACZ8lL,SAAUF,EACVC,SAAUn0O,MAEPsuD,CACX,CAIA,OAHA2lL,EAAS1zM,MAAQ,WACblL,EAAQ,IACZ,EACO4+M,CACX,wECrCO,IAAII,EAAqB,CAC5B,2CACA,yBACA,2BACA,yBACA,UACA,aACA,UACA,SACA,SACA,QACA,kBACA,kBACA,qBAMAC,EAA4B,WAC5B,SAASA,EAAWv2M,GAChB,IAAIr7B,EAAQ1C,KAIZA,KAAKu0O,gBAAiB,EAItBv0O,KAAKinI,OAAS,WAAc,EAC5BjnI,KAAKw0O,eAAiB,SAAUp6O,EAAQq6O,GACpC,IAAIlnO,EAAM7K,EAAMmmF,SACZj0F,EAAQ2Y,EAAI0N,QAAQ7gB,GAAUq6O,EAE9B5mO,EAAON,GADX3Y,EAAQA,EAAQ,EAAI2Y,EAAI1rB,OAAS,EAAI+S,GACd2Y,EAAI1rB,QAE3B,OADA6gB,EAAMi9N,aAAa9xN,EAAMzT,GAClByT,CACX,EACA7N,KAAKuL,SAAWwyB,EAAQxyB,UAAY,EACpCvL,KAAKguG,KAAOjwE,EAAQiwE,KACpBhuG,KAAKsiO,UAAYvkM,EAAQukM,UACzBtiO,KAAK00O,aAAe32M,EAAQ22M,cAAgB,CAAEvqO,eAAe,GAC7DnK,KAAKu0O,oBAA4CrhQ,IAA3B6qD,EAAQw2M,gBAA+Bx2M,EAAQw2M,eACrEv0O,KAAK20O,YAAc52M,EAAQ42M,aAAe,CAAC,EAC3C30O,KAAK40O,eAAiB72M,EAAQ62M,gBAAkB,CAAC,CACrD,CA4FA,OA3FAjyP,OAAO6nB,eAAe8pO,EAAWp0O,UAAW,WAAY,CAIpDuK,IAAK,WACD,OAAOzK,KAAKguG,KAAK35H,QAAU2jB,MAAMklC,KAAKl9B,KAAKguG,KAAK35H,QAAQsqG,iBAAiB3+E,KAAKsiO,UAAU1kM,KAAK,OAAS,EAC1G,EACAlzB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe8pO,EAAWp0O,UAAW,QAAS,CAIjDuK,IAAK,WACD,OAAQzK,KAAKguG,KAAK35H,SAAW2rB,KAAKguG,KAAK35H,QAAQuxB,cAAc5F,KAAKsiO,UAAU1kM,KAAK,OAAU,IAC/F,EACAlzB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe8pO,EAAWp0O,UAAW,OAAQ,CAIhDuK,IAAK,WACD,IAAI8C,EAAMvN,KAAK6oF,SACf,OAAOt7E,EAAIA,EAAI1rB,OAAS,IAAM,IAClC,EACA6oB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe8pO,EAAWp0O,UAAW,UAAW,CAInDuK,IAAK,WACD,OAAOzK,KAAK6oF,SAAS36F,MAAK,SAAUsd,GAAM,OAAOA,EAAG+c,QAAQ,SAAW,KAAM,IACjF,EACA7d,YAAY,EACZC,cAAc,IAKlB2pO,EAAWp0O,UAAU20O,UAAY,SAAUz6O,GACvC,OAAO4F,KAAKw0O,eAAep6O,EAAQ,EACvC,EAIAk6O,EAAWp0O,UAAU40O,cAAgB,SAAU16O,GAC3C,OAAO4F,KAAKw0O,eAAep6O,GAAS,EACxC,EAIAk6O,EAAWp0O,UAAU60O,qBAAuB,SAAUvwC,EAAIzmK,GACtD,IAAI3jC,EAASoqM,EAAGpqM,kBAAkBgjF,SAAWonH,EAAGpqM,OAAOwkF,QAAQ5+E,KAAKsiO,UAAU1kM,KAAK,MAC/EtyB,EAAiB,MAAXk5L,EAAGl5L,IAAc,QAAUk5L,EAAGl5L,IACpC0pO,EAAYxwC,EAAGryL,YAAY34B,KAC3B4gB,GAAU4F,KAAK40O,eAAeI,GAAW1pO,IACzCtL,KAAK40O,eAAeI,GAAW1pO,GAAK7E,UAAKvzB,EAAWknB,EAAQ4F,KAAMwkM,EAAIzmK,EAE9E,EAIAu2M,EAAWp0O,UAAU+0O,kBAAoB,SAAUzwC,GAC/C,IAAIpqM,EAASoqM,EAAGpqM,kBAAkBgjF,SAAWonH,EAAGpqM,OAAOwkF,QAAQ5+E,KAAKsiO,UAAU1kM,KAAK,MAC/Eo3M,EAAYxwC,EAAGryL,YAAY34B,KAC3B4gB,GACA4F,KAAK20O,YAAYK,GAAWvuO,UAAKvzB,EAAWknB,EAAQ4F,KAAMwkM,EAElE,EAIA8vC,EAAWp0O,UAAUy/N,aAAe,SAAUt3N,EAASk7H,GAC/Cl7H,IACIk7H,IACIvjI,KAAKu0O,gBACLhxG,EAAS/jD,gBAAgB,YAE7B+jD,EAAShmH,UAAUC,OAAO,YAE1Bxd,KAAKu0O,gBACLlsO,EAAQ6/B,aAAa,WAAYvhC,OAAO3G,KAAKuL,WAEjDlD,EAAQJ,MAAMjI,KAAK00O,cAE3B,EACOJ,CACX,CAvHgC,iDCnBzB,IAAIhqO,EAAO,WAAc,gFCErB4qO,EAAoB,WAC3B,SAAK9vO,EAAAA,IAAc5W,SAASa,QAGP,IAAI80O,EAAAA,GAAwBgR,cAErD,EAIWC,EAAoB,WAC3B,IAAKhwO,EAAAA,IAAc5W,SAASa,KACxB,OAAO,EAEX,IAAI8lP,GAAiB,IAAIhR,EAAAA,GAAwBgR,eACjD3mP,SAASa,KAAK3b,MAAMs2G,YAAY,0BAA2B,GAAG9lG,OAAOixP,EAAgB,MACzF,8DCpBIE,EAAc,CAClBA,UAAwB,SAAU1+M,GAAO,OAAOA,CAAK,GACjDpgD,EAAe,SAAU++P,EAAWv3M,GACpC,OAAOA,GAAWA,EAAQw3M,SAAW1hL,MAAMj4B,OAAO05M,IAAc,GAAK,CAAC,CAC1E,EAgBO,SAAShqD,EAAO3uM,GACnB,GAAI04P,EAAY14P,GACZ,OAAO04P,EAAY14P,GAEvB,IAAIN,GAAS6oP,EAAAA,EAAAA,GAAUvoP,GASvB,OARA04P,EAAY14P,GAAS,SAAUg6C,EAAKlxC,EAAOs4C,GAGvC,IAFA,IAAIiwE,EAAOr3E,EACPigF,EAAQv6H,EAAOwF,OAAS,EACnBiC,EAAM,EAAGA,EAAM8yH,GAAS5I,EAAMlqH,IACnCkqH,EAAOA,EAAK3xH,EAAOyH,IAAQkqH,EAAK3xH,EAAOyH,KAASvN,EAAa8F,EAAOyH,EAAM,GAAIi6C,GAElFiwE,EAAK3xH,EAAOu6H,IAAUnxH,CAC1B,EACO4vP,EAAY14P,EACvB,gDClCO,IAAIy7B,EAAiB,CACxBC,QAAS,CACLm9N,MAAO,KACPniC,OAAQ,KACRoiC,MAAO,MAEXn9N,WAAY,CACRk9N,MAAO,KACPniC,OAAQ,KACRoiC,MAAO,MAEXC,eAAgB,CACZx8N,SAAU,SACVD,WAAY,uECVhB08N,EAAmC,WACnC,SAASA,EAAkBC,GACvB51O,KAAKoiD,YAAcwzL,EAAcxzL,YACjCpiD,KAAK61O,YAAcD,EAAcC,YACjC71O,KAAK81O,iBAAmBF,EAAcE,iBACtC91O,KAAKs3F,cAAgBs+I,EAAct+I,cACnCt3F,KAAKna,UAAY+vP,EAAc/vP,UAC/Bma,KAAK+1O,aAAeH,EAAcG,aAClC/1O,KAAKg2O,WAAaJ,EAAcI,WAChCh2O,KAAKi2O,wBAA0BL,EAAcK,wBAC7Cj2O,KAAKk2O,aAAeN,EAAcM,YACtC,CAgCA,OA/BAP,EAAkBz1O,UAAUqiD,SAAW,SAAU/+D,GAC7C,OAAO2yP,EAAAA,EAAAA,GAAen2O,KAAKoiD,YAAa5+D,EAC5C,EACAmyP,EAAkBz1O,UAAUzgB,SAAW,SAAU+D,GAC7C,OAAO2yP,EAAAA,EAAAA,GAAen2O,KAAK61O,YAAaryP,EAC5C,EACAmyP,EAAkBz1O,UAAUniB,KAAO,SAAUyF,GACzC,OAAO2yP,EAAAA,EAAAA,GAAen2O,KAAKna,UAAWrC,EAC1C,EACAmyP,EAAkBz1O,UAAUhmB,SAAW,SAAUsJ,GAC7C,OAAO2yP,EAAAA,EAAAA,GAAen2O,KAAK+1O,aAAcvyP,EAC7C,EACAmyP,EAAkBz1O,UAAUo5N,YAAc,SAAU91O,GAChD,OAAO2yP,EAAAA,EAAAA,GAAen2O,KAAK81O,iBAAkBtyP,EACjD,EACAmyP,EAAkBz1O,UAAUzsB,SAAW,SAAU+P,GAC7C,IAAI/P,GAAW0iQ,EAAAA,EAAAA,GAAen2O,KAAKs3F,cAAe9zG,GAClD,OAAO/P,GAAsB,EACjC,EACAkiQ,EAAkBz1O,UAAUu/E,QAAU,SAAUj8F,GAC5C,OAAO2yP,EAAAA,EAAAA,GAAen2O,KAAKg2O,WAAYxyP,EAC3C,EACAmyP,EAAkBz1O,UAAUk2O,mBAAqB,SAAU5yP,GACvD,OAAO2yP,EAAAA,EAAAA,GAAen2O,KAAKi2O,wBAAyBzyP,EACxD,EACAmyP,EAAkBz1O,UAAUm2O,QAAU,SAAU7yP,GAC5C,OAAOwc,KAAKk2O,eAAgBC,EAAAA,EAAAA,GAAen2O,KAAKk2O,aAAc1yP,EAClE,EACAmyP,EAAkBz1O,UAAUo2O,iBAAmB,WAC3C,OAAOt2O,KAAKs3F,aAChB,EACOq+I,CACX,CA5CuC,iDCJvC,IAMIY,EAAqC,WACrC,SAASA,IACLv2O,KAAKqlH,QAAU,EACnB,CAcA,OAbAkxH,EAAoBr2O,UAAUqrD,KAAO,SAAUirL,GAE3C,IADA,IAAIC,EACKv2P,EAAI,EAAGA,EAAIs2P,EAAc30P,OAAQ3B,IAClCA,EAbQ,MAakB,IAC1Bu2P,EAAa,CAAC,EACdz2O,KAAKqlH,QAAQrkH,KAAKy1O,IAEtBA,EAAWD,EAAct2P,KAAM,CAEvC,EACAq2P,EAAoBr2O,UAAUw2O,MAAQ,SAAUC,GAC5C,OAAO32O,KAAKqlH,QAAQzmF,MAAK,SAAUjI,GAAO,OAAOA,EAAIggN,EAAe,GACxE,EACOJ,CACX,CAlByC,2YCHlC,IAAIK,EAAW,GAIXC,EAA0B,IAI1BC,EAAY,IAIhB,SAASC,EAAYC,EAAQvkP,EAAO6kG,GACvC,GAAI2/I,EAAcD,GACd,OAAOvkP,EAAMmpC,OAAOo7M,IAGpB,IAAIE,EAAiBzkP,EAAMmpC,OAAOu7M,EAAgBH,KAC9CI,EAAYF,GAAkBA,EAAe5/I,IAAmB,GACpE,OAAO8/I,EAASv1P,OACZk1P,EAAYM,EAAyBL,GAASI,EAAU9/I,QAAiBpkH,CAErF,CAIO,SAASikQ,EAAgBH,GAC5B,OAAOM,EAAqBN,GAAUA,EAASA,EAAOhuP,MAAM8tP,GAAW,EAC3E,CAIO,SAASO,EAAyBL,GACrC,GAAIM,EAAqBN,GACrB,OAAOA,EAGP,IAAIO,EAAsBP,EAAO/7N,QAAQ67N,GACzC,OAAOE,EAAOjwP,UAAUwwP,EAAsB,EAEtD,CAIO,SAASC,EAAgBR,GAC5B,OAAOS,EAAS,IAAKT,EACzB,CAIO,SAASS,EAASC,EAASC,GAE9B,OADAD,EAAUA,EAAQxiN,WACXyiN,EAAWA,EAAWb,EAAYY,EAAUA,CACvD,CAIO,SAASE,EAAkBZ,GAC9B,IAAIa,EAAqBb,EAAO53K,YAAY03K,GAC5C,OAAOe,EAAqB,EAAIjB,EAAWI,EAAOjwP,UAAU,EAAG8wP,EACnE,CAIO,SAASP,EAAqBN,GACjC,OAAOA,IAAWJ,GAAYI,EAAO/7N,QAAQ67N,GAAa,CAC9D,CAIO,SAASG,EAAcD,GAC1B,OAAOA,IAAWJ,GAAYI,EAAO/7N,QAAQ67N,GAAa,CAC9D,CAIO,SAASgB,EAAed,GAC3B,OAAOA,EAAOhuP,MAAM8tP,EACxB,CAIO,SAASiB,EAAWf,GACvB,IAAIa,EAAqBb,EAAO53K,YAAY03K,GAC5C,OAAOe,EAAqB,EAAIb,EAASA,EAAOjwP,UAAU8wP,EAAqB,EACnF,CAIO,SAASG,EAAwBhB,GACpC,OAAOe,EAAWf,KAAYH,CAClC,CAIO,SAASoB,EAAiCC,EAAelB,GAC5D,IAAImB,EAAkBnB,EAEtBA,EAAS,IAAMF,EAAYE,EAC3B,IAAIoB,EAAiBR,EAFrBM,EAAgB,IAAMpB,EAAYoB,GAEsBpB,EACxD,GAAIE,EAAO1qP,WAAW8rP,GAAiB,CACnC,IAAIC,EAAoBrB,EAAOjwP,UAAUqxP,EAAev2P,QACxD,GAAIw2P,EAAmB,CACnB,IAAIC,EAAiBnB,EAAgBkB,GACrC,GAAIz8M,OAAOm8M,EAAWG,IAAkBt8M,OAAO08M,GAI3C,OAAOjB,EAHae,GACfx8M,OAAO08M,GAAkB,GAAGpjN,WAC7BmjN,EAAkBtxP,UAAUuxP,EAAez2P,QAGvD,CACJ,CACA,OAAOs2P,CACX,6KCpHItjP,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAOO,SAAS4sN,EAAY91O,EAAM8zG,GAC9B,IAAI7jH,GAAW0iQ,EAAAA,EAAAA,GAAe7+I,EAAe9zG,GAC7C,OAAOonB,QAAQn3B,GAAYA,EAASoO,OACxC,CAIO,SAAS02P,EAA8B/0P,EAAMg1P,GAChD,OAAOA,EAAUj2L,SAAS/+D,IAAS81O,EAAY91O,EAAMg1P,EAAUlC,mBACnE,CAIO,SAASmC,EAAcC,EAAUC,EAASlmP,EAAO6kG,GACpD,IAAIshJ,EAAcC,EAAgB,CAACH,GAAWC,EAASlmP,EAAO6kG,GAC9D,OAAOshJ,EAAY/2P,OAAS+2P,EAAY,QAAK1lQ,CACjD,CAIO,SAAS2lQ,EAAgBC,EAAWH,EAASlmP,EAAO6kG,GACvD,IAAI56G,EAAS,GACTq8P,EAAY,IAAIxC,EAAAA,EAGpB,OAFAwC,EAAUxtL,KAAKutL,GACfE,EAAsBD,EAAWJ,EAASlmP,EAAOmkP,EAAAA,SAAUl6P,EAAQ46G,GAC5D56G,CACX,CAIO,SAASu8P,EAAWxmP,EAAOukP,EAAQ/vG,EAAQiyG,EAAY5hJ,GAC1D,IAAI7/G,EACAgyB,EAAYmyB,QAAOu7M,EAAAA,EAAAA,iBAAgBH,IACvC,GAAIvtO,GAAahX,EAAM5Q,OACnB,OAAO4Q,EAEX,IAAI/V,EAAS+V,EACTjP,EAAOiP,EAAMgX,GAajB,OAXKjmB,EAAK01P,KAEN11P,GADA9G,EAAS+V,EAAM7D,SACD6a,GAAa9mB,OAAO2mB,OAAO,CAAC,EAAG9lB,IAAO/L,EAAK,CAAC,GAAMyhQ,IAAc,EAAMzhQ,MAGpFw/P,EAAAA,EAAAA,eAAcD,GACd/vG,EAAOzjJ,GAEFA,EAAK8zG,KACV9zG,EAAK8zG,GAAiB2hJ,EAAWz1P,EAAK8zG,IAAgB+/I,EAAAA,EAAAA,0BAAyBL,GAAS/vG,EAAQiyG,EAAY5hJ,IAEzG56G,CACX,CAIO,SAASy8P,EAA8BnC,EAAQvkP,EAAO+lP,GAGzD,IAFA,IAAIx6I,GAAM85I,EAAAA,EAAAA,gBAAed,GACrBoC,EAAe3mP,EACVvS,EAAI,EAAGA,EAAI89G,EAAIn8G,OAAQ3B,IAAK,CACjC,IAAIm5P,EAAcD,EAAax9M,OAAOoiE,EAAI99G,KAC1C,GAAIs4P,EAAUt+P,SAASm/P,GACnB,OAAO,EAGPD,EAAeC,EAAYb,EAAUlC,mBAE7C,CACA,OAAO,CACX,CAIO,SAASgD,EAAgC91P,EAAMwzP,EAAQ1/I,EAAeqhJ,GACzE,OAAOA,EAWP,SAASY,EAAqBC,GAG1B,IAFA,IAAI98P,EAAS,GACTjJ,EAAW+lQ,EAAUliJ,IAAkB,GAClCp3G,EAAI,EAAGA,EAAIzM,EAASoO,OAAQ3B,IACjCxD,EAAOskB,MAAKm1O,EAAAA,EAAAA,GAAewC,EAASllQ,EAASyM,KAC7CxD,EAASA,EAAOwH,OAAOq1P,EAAqB9lQ,EAASyM,KAEzD,OAAOxD,CACX,CAnBiB68P,CAAqB/1P,GACtC,SAASi2P,EAA+BD,EAAWE,GAG/C,IAFA,IAAIh9P,EAAS,GACTjJ,EAAW+lQ,EAAUliJ,IAAkB,GAClCp3G,EAAI,EAAGA,EAAIzM,EAASoO,OAAQ3B,IAAK,CACtC,IAAI9M,GAAKqkQ,EAAAA,EAAAA,UAASv3P,EAAGw5P,GACrBh9P,EAAOskB,KAAK5tB,GACZsJ,EAASA,EAAOwH,OAAOu1P,EAA+BhmQ,EAASyM,GAAI9M,GACvE,CACA,OAAOsJ,CACX,CAV8C+8P,CAA+Bj2P,EAAMwzP,EAoBvF,CAIO,SAAS2C,EAA4Bn2P,EAAMwzP,EAAQ2B,EAASrhJ,EAAe8X,GAE9E,OADe5rH,EAAK8zG,IAAkB,IACtBs8D,OAAM,SAAUp8D,EAAO5iG,GACnC,OAAOw6G,EAAMn0F,QAAQ09N,GAAUxC,EAAAA,EAAAA,GAAewC,EAASnhJ,IAASigJ,EAAAA,EAAAA,UAAS7iP,EAAOoiP,KAAY,CAChG,GACJ,CAIO,SAAS4C,EAAc5C,EAAQ1/I,EAAe7kG,GAIjD,IAHA,IAAI/V,EAAS,GACTshH,GAAM85I,EAAAA,EAAAA,gBAAed,GACrBoC,EAAe3mP,EACVvS,EAAI,EAAGA,EAAI89G,EAAIn8G,OAAS,GACxBu3P,EAD2Bl5P,IAAK,CAIrC,IAAIm5P,EAAcD,EAAax9M,OAAOoiE,EAAI99G,KAC1CxD,EAAOskB,KAAKq4O,GACZD,EAAeC,EAAY/hJ,EAC/B,CACA,OAAO56G,CACX,CAIO,SAASorE,EAAWkvL,EAAQ1/I,EAAe7kG,GAC9C,IAAI/V,EAAS+V,EAAM7D,QACnB,IAAIqoP,EAAAA,EAAAA,eAAcD,GACdt6P,EAAOonB,OAAO83B,OAAOo7M,GAAS,OAE7B,CACD,IAAI6C,EAAkBj+M,QAAOu7M,EAAAA,EAAAA,iBAAgBH,IACzC8C,EAAap9P,EAAOm9P,GAAmBhlP,EAAS,CAAC,EAAGnY,EAAOm9P,IAC/DC,EAAWxiJ,GAAiBxvC,GAAWuvL,EAAAA,EAAAA,0BAAyBL,GAAS1/I,EAAewiJ,EAAWxiJ,GACvG,CACA,OAAO56G,CACX,CAIO,SAASq9P,EAAQv2P,EAAMw2P,EAAW1iJ,EAAe2iJ,EAAcxnP,GAClE,IAAI/V,EAAS+V,EAAM7D,QACnB,IAAIqoP,EAAAA,EAAAA,eAAcgD,GACd,GAAkB,UAAdD,EAAuB,CACvB,IAAIE,EAAax9P,EAAOk/C,OAAOq+M,IAAiBplP,EAAS,CAAC,EAAGnY,EAAOk/C,OAAOq+M,KACvEC,EAAW5iJ,IACX4iJ,EAAW5iJ,GAAiB4iJ,EAAW5iJ,GAAe1oG,QACtDsrP,EAAW5iJ,GAAet2F,KAAKxd,IAG/B02P,EAAW5iJ,GAAiB,CAAC9zG,EAErC,MAEI9G,EAAOonB,OAAO83B,OAAOq+M,IAA+B,UAAdD,EAAwB,EAAI,GAAI,EAAGx2P,OAG5E,CACD,IAAIq2P,EAAkBj+M,QAAOu7M,EAAAA,EAAAA,iBAAgB8C,IACzCH,EAAap9P,EAAOm9P,GAAmBhlP,EAAS,CAAC,EAAGnY,EAAOm9P,IAC/DC,EAAWxiJ,GAAiByiJ,EAAQv2P,EAAMw2P,EAAW1iJ,GAAe+/I,EAAAA,EAAAA,0BAAyB4C,GAAeH,EAAWxiJ,GAC3H,CACA,OAAO56G,CACX,CACA,SAASs8P,EAAsBxC,EAAemC,EAASlmP,EAAO0nP,EAAcvB,EAAathJ,GACrF,IAAK,IAAIp3G,EAAI,EAAGA,EAAIuS,EAAM5Q,OAAQ3B,IAAK,CACnC,IAAIsD,EAAOiP,EAAMvS,GACb9M,GAAKqkQ,EAAAA,EAAAA,UAASv3P,EAAGi6P,GACjB3D,EAAcE,OAAMP,EAAAA,EAAAA,GAAewC,EAASn1P,KAC5Co1P,EAAY53O,KAAK5tB,GAEjBkmP,EAAY91O,EAAM8zG,IAClB0hJ,EAAsBxC,EAAemC,GAASxC,EAAAA,EAAAA,GAAe7+I,EAAe9zG,GAAOpQ,EAAIwlQ,EAAathJ,EAE5G,CACJ,+BC3LO,SAAS6+I,EAAen6K,EAAW39E,GACtC,IAAIo/C,GAAQu+B,GAAa,IAAIhzE,MAAM,KAC/BzQ,EAAO8F,EAIX,OAHAo/C,EAAK9uC,SAAQ,SAAU4X,GACnBhuB,EAAOA,EAAOA,EAAKguB,QAAKrzB,CAC5B,IACOqF,CACX,CAIO,SAAS0f,EAAQ+hP,GACpB,YAA4B9mQ,IAArB8mQ,EAAUn4P,MACrB,oGChBA,IAAIgT,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAEA,SAASzpD,EAAS+P,EAAM42P,EAAehD,GACnC,IAAI3/P,EACJ,OAAI2/P,EACOviP,EAASA,EAAS,CAAC,EAAGrR,KAAQ/L,EAAK,CAAC,GAAM2iQ,GAAiBhD,EAASv1P,OAAS4gE,EAAc,GAAI20L,GAAU,QAAQlkQ,EAAWuE,IAG5H+L,GAAQA,EAAK42P,GAAiB33L,EAAc,GAAIj/D,EAAK42P,IAAgB,GAAQ,EAE5F,CACA,SAASC,EAAQh8P,EAAU+7P,EAAeE,GACtC,GAAIj8P,EAAS+7P,GAAgB,CACzB,IAAIhD,EAAW3jQ,EAAS4K,EAAU+7P,GAAen6P,KAAI,SAAUu3G,GAAS,OAAO6iJ,EAAQ7iJ,EAAO4iJ,EAAeE,EAAa,IAC1H,OAAOA,EAAW7mQ,EAAS4K,EAAU+7P,EAAehD,GACxD,CACA,OAAOkD,EAAWj8P,EACtB,CAUO,IAAIk8P,EAAU,SAAU1kI,EAAMukI,EAAevkM,GAChD,OAAO4M,EAAc,GAAIozD,EAAK51H,KAAI,SAAUuD,GAAQ,OAAO62P,EAAQ72P,EAAM42P,EAAevkM,EAAW,KAAI,EAC3G,EAWW2kM,EAAc,SAAU3kI,EAAMuD,EAAOghI,EAAevkM,GAG3D,IAFA,IAAI4kM,EAAU5kI,EACV6kI,EAAc,GACTx6P,EAAI,EAAGA,EAAIk5H,EAAMv3H,OAAQ3B,IAC9Bu6P,EAAUA,EAAQrhI,EAAMl5H,IACxBu6P,EAAUziP,MAAMC,QAAQwiP,GAAWA,EAAUA,EAAQL,GACrDM,EAAY15O,KAAKy5O,GAErB,IAAIlgH,EAASmgH,EAAY74P,OAAS,EAAI64P,EAAYA,EAAY74P,OAAS,GAAKg0H,EACxE8kI,EAAevhI,EAAMA,EAAMv3H,OAAS,GACpC8pN,EAAU91J,EAAS0kF,EAAOogH,IAC9BpgH,EAAOz2H,OAAO62O,EAAc,EAAGhvC,EACnC,EASWivC,EAAiB,SAAUp3P,EAAM42P,EAAeS,GACvD,IAAIpjQ,EACJ,OAAOkL,OAAO2mB,OAAO,CAAC,EAAG9lB,EAAMA,EAAK42P,KAAkB3iQ,EAAK,CAAC,GAAM2iQ,GAAiB52P,EAAK42P,GAAexrP,QAASnX,GAAM,CAAC,EAAGojQ,GAAiB,CAAC,EAChJ,EASWC,EAAc,SAAUjlI,EAAMuD,EAAOghI,GAC5C,IAAInwG,EAAQ,GACR8wG,EAAYt4L,EAAc,GAAI22D,GAAO,GACzC,GAAI2hI,EAAUl5P,OAAQ,CAClB,IAAIwmB,EAAUwtG,EAAKklI,EAAU1rK,SAAW,GAExC,IADA46D,EAAMjpI,KAAKqH,GACJ0yO,EAAUl5P,QAAUu4P,GACvB/xO,EAAUA,EAAQ+xO,GAAeW,EAAU1rK,SAAW,GACtD46D,EAAMjpI,KAAKqH,EAEnB,CACA,OAAO4hI,CACX,qECvGIoe,EAAU,CAAC,cAAe,eAAgB,gBAAiB,WAIxD,SAASnyI,EAAgBC,GAC5B,GAAyB,qBAAd6kO,EACPA,EAAAA,gBAA0B7kO,OAEzB,CACD,IAAIwY,EAAU,iCAAiCzqC,OAAOiyB,EAAgBrgC,KAAM,MAC5E64C,GAAW,wDACXA,GAAW,OAAOzqC,OAAOiyB,EAAgB8hC,iBAAkB,4BAC3DpjE,QAAQw6D,KAAK1gB,EACjB,CACJ,CAIO,SAASssN,EAAuB9kO,GAEnC,OADWkyI,EAAQzpH,MAAK,SAAU0J,GAAY,IAAI7wD,EAAI,OAAsC,QAA9BA,EAAK0/C,WAAW3oC,gBAA6B,IAAP/W,OAAgB,EAASA,EAAG8M,SAAS+jD,SAASjO,SAASiO,EAAW,OACtI,OAAd0yM,QAAoC,IAAdA,OAAuB,EAASA,EAAAA,gBAA0B7kO,GACtG,wEClBI+kO,GAAY,EAKLC,EAAmB,WAC1B,IAAI1jQ,EAAKlE,EAAAA,UAAe,GAAOolK,EAASlhK,EAAG,GAAI2jQ,EAAY3jQ,EAAG,GAC1DI,EAAKtE,EAAAA,UAAe,GAAQ8nQ,EAAgBxjQ,EAAG,GAAIyjQ,EAAmBzjQ,EAAG,GAC7EtE,EAAAA,WAAgB,WACP2nQ,IACDI,GAAiB,GACjBJ,GAAY,EAEpB,GAAG,IACH,IAGIK,EAAiBhoQ,EAAAA,cAAoBA,EAAAA,SAAgB,KAAMolK,GAAWplK,EAAAA,cAAoB,MAAO,CAAEG,MAAO,CACtGkwG,QAAS,OACT43J,eAAgB,SAChBC,WAAY,SACZ9hQ,SAAU,QACVC,IAAK,OACLC,MAAO,OACP6J,QAAS,OACTC,aAAc,MACdy+O,UAAW,2EACXzvO,SAAU,OACVjS,WAAY,IACZwzG,WAAY,OACZ9zG,gBAAiB,UACjB9B,MAAO,UACPxE,OAAQ,MAEZvG,EAAAA,cAAoB,OAAQ,CAAEG,MAAO,CAAEkwG,QAAS,OAAQruG,UAAW,SAAUE,YAAa,QACtFlC,EAAAA,cAAoB,MAAO,CAAE8G,MAAO,KAAMgB,OAAQ,KAAMs1P,QAAS,YAAaj0J,KAAM,QAChFnpG,EAAAA,cAAoB,OAAQ,CAAEmoQ,SAAU,UAAWC,SAAU,UAAWx1O,EAAG,kDAAmDu2E,KAAM,cAC5InpG,EAAAA,cAAoB,OAAQ,KAAM,8EAClCA,EAAAA,cAAoB,MAAO,CAAEG,MAAO,CAAEkwG,QAAS,OAAQ63J,WAAY,SAAU7nQ,WAAY,SACrFL,EAAAA,cAAoB,IAAK,CAAE0Y,KAxCnB,kKAwCwCvY,MAAO,CAAE+B,YAAa,MAAOmuG,QAAS,SAClFrwG,EAAAA,cAAoB,SAAU,CAAEyM,MAAO,aAActM,MAAO,CACpDkwG,QAAS,cACTjqG,SAAU,WACV8J,OAAQ,OACRE,aAAc,MACdD,QAAS,MACTtD,gBAAiB,cACjBw7P,WAAY,yBACZC,QAAS,OACTC,OAAQ,YAEZvoQ,EAAAA,cAAoB,MAAO,CAAE8G,MAAO,KAAMgB,OAAQ,KAAMs1P,QAAS,YAAaj0J,KAAM,QAChFnpG,EAAAA,cAAoB,OAAQ,CAAE4yB,EAAG,odAAqdu2E,KAAM,eACxgBnpG,EAAAA,cAAoB,SAAU,CAAEyM,MAAO,QAAStM,MAAO,CAC/CkwG,QAAS,cACTjqG,SAAU,WACV8J,OAAQ,OACRE,aAAc,MACdD,QAAS,MACTtD,gBAAiB,cACjBw7P,WAAY,yBACZC,QAAS,OACTC,OAAQ,WACTzmQ,QAjDU,WACrB+lQ,GAAU,EACd,GAgDY7nQ,EAAAA,cAAoB,MAAO,CAAE8G,MAAO,KAAMgB,OAAQ,KAAMs1P,QAAS,YAAaj0J,KAAM,QAChFnpG,EAAAA,cAAoB,OAAQ,CAAE4yB,EAAG,2IAA4Iu2E,KAAM,iBACnM,OAAQnpG,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB,MAAO,CAAEG,MAAO,CAC5BiG,SAAU,WACVU,MAAO,OACPgB,OAAQ,OACRzB,IAAK,EACL8V,KAAM,EACN7V,MAAO,EACPsgG,OAAQ,EACR/kF,QAAS,GACTtb,OAAQ,IACRiiQ,cAAe,OACf9tJ,gBAAiB,20OAEzBotJ,GAAiBnpB,EAAAA,aAAsBqpB,EAAe/sP,SAASa,MACvE,+BChFO,SAAS2sP,EAAWh/L,EAAS3oE,GAGhC,IAFA,IAAI4nQ,EAAej/L,EAAQ3oE,GAASuiI,MAChC/oG,EAAO,KACFjZ,EAAQvgB,EAAU,EAAGugB,EAAQooD,EAAQn7D,OAAQ+S,IAClD,GAAIooD,EAAQpoD,GAAOgiH,QAAUqlI,EAAc,CACvCpuO,EAAOmvC,EAAQpoD,GACf,KACJ,CAEJ,OAAOiZ,CACX,uDACA,IAAIquO,EAAiB,SAAUp3C,GAC3B,IAAIzqN,EAAQyqN,EAAOzqN,MAAQy5E,WAAWgxI,EAAOzqN,MAAM66C,YAAc,EAIjE,OAHK76C,GAASyqN,EAAOrxN,UAAYqxN,EAAOrxN,SAASoO,SAC7CxH,EAAQyqN,EAAOrxN,SAASgJ,QAAO,SAAU0/P,EAAY3kJ,GAAS,OAAO0kJ,EAAe1kJ,GAAS2kJ,CAAY,GAAG,IAEzG9hQ,CACX,EAIO,SAAS+hQ,EAAWp/L,GAIvB,IAHA,IAAIq/L,EAAa,CAAC,IACd7+E,EAAW,EAENh9K,EAAIw8D,EAAQn7D,OAAS,EAAGrB,GAAK,EAAGA,IACrCg9K,EAAW1oK,KAAKI,IAAIsoK,EAAUxgH,EAAQx8D,GAAGo2H,OACzC55D,EAAQx8D,GAAGya,QAAU+hD,EAAQx8D,GAAGya,SAAW,GACX,IAA5B+hD,EAAQx8D,GAAGmrL,cACX3uH,EAAQA,EAAQx8D,GAAGmrL,aAAa1wK,SAC3B+hD,EAAQA,EAAQx8D,GAAGmrL,aAAa1wK,SAAW,GAAK+hD,EAAQx8D,GAAGya,SAGxE,IAAIqhP,EAAkB,GAClBv4C,EAAU,EAyBd,OAvBA/mJ,EAAQruD,SAAQ,SAAUm2M,EAAQ5kN,GAC9Bm8P,EAAWv3C,EAAOluF,OAASylI,EAAWv3C,EAAOluF,QAAU,GACvD,IAAI2lI,GAAa,EACuB,IAApCF,EAAWv3C,EAAOluF,OAAO/0H,SACrBkiN,GAAW,EACXA,EAAU,GAAKe,EAAOrxN,SAASoO,OAAS,EAAI,EAAI27K,EAAWsnC,EAAOluF,QAGlEmtF,IACAw4C,GAAa,IAGrBz3C,EAAOf,QAAU,GAAKe,EAAOrxN,SAASoO,OAAS,EAAI,EAAI27K,EAAWsnC,EAAOluF,OACzEkuF,EAAO03C,OAASD,EAChBz3C,EAAOlwM,MAAQynP,EAAWv3C,EAAOluF,OAAO/0H,OACxCw6P,EAAWv3C,EAAOluF,OAAO51G,KAAK9gB,GAC9B4kN,EAAO23C,gBAAkBH,EAAgBx3C,EAAOluF,OAAS0lI,EAAgBx3C,EAAOluF,OAAS,EAAI,EAC7F,IAAK,IAAI8lI,EAAK53C,EAAOluF,MAAO8lI,EAAK53C,EAAOluF,MAAQkuF,EAAOf,QAAS24C,IAC5DJ,EAAgBI,IAAOJ,EAAgBI,IAAO,GAAK53C,EAAO7pM,OAElE,IACA0hP,EAAWN,EAAYr/L,GACvB4/L,EAAYP,EAAYr/L,GACjBq/L,CACX,CAIO,SAASM,EAAWN,EAAYr/L,EAAS6/L,GAC5C,IAAIC,EAAkB,IAAI9kP,MAAMqkP,EAAWx6P,QAAQ66F,KAAK,GACpDriG,EAAQ,EAEZ2iE,EAAQruD,SAAQ,SAAUm2M,GACtB,GAAIA,EAAOp1B,UAAYo1B,EAAOp1M,MAAQmtP,GAGlC,GAFA/3C,EAAOp1M,KAAOotP,EAAgBh4C,EAAOluF,OACrCv8H,EAAQ6hQ,EAAep3C,GACQ,IAA3BA,EAAOrxN,SAASoO,OAChB,IAAK,IAAI3B,EAAI4kN,EAAOluF,MAAO12H,EAAI48P,EAAgBj7P,OAAQ3B,IACnD48P,EAAgB58P,IAAM7F,OAI1ByiQ,EAAgBh4C,EAAOluF,QAAUv8H,CAG7C,GACJ,CAIO,SAASuiQ,EAAYP,EAAYr/L,EAAS+/L,GAI7C,IAHA,IAAI1iQ,EAAQ,EACR2iQ,EAAmB,IAAIhlP,MAAMqkP,EAAWx6P,QAAQ66F,KAAK,GAEhDx8F,EAAI88D,EAAQn7D,OAAS,EAAG3B,GAAK,EAAGA,IAAK,CAC1C,IAAI4kN,EAAS9nJ,EAAQ98D,GACrB,GAAI4kN,EAAOp1B,UAAYo1B,EAAOjrN,OAASkjQ,GAAgB,CAGnD,GAFAj4C,EAAOjrN,MAAQmjQ,EAAiBl4C,EAAOluF,OACvCv8H,EAAQ6hQ,EAAep3C,GACQ,IAA3BA,EAAOrxN,SAASoO,OAChB,IAAK,IAAIsyE,EAAI2wI,EAAOluF,MAAOziD,EAAI6oL,EAAiBn7P,OAAQsyE,IACpD6oL,EAAiB7oL,IAAM95E,OAI3B2iQ,EAAiBl4C,EAAOluF,QAAUv8H,EAEtC,IAAIwzB,EAAOmuO,EAAWh/L,EAAS98D,GAC/B4kN,EAAOm4C,cAAgBpvO,GAAQA,EAAK6hK,OACxC,CACJ,CACJ,CA2CO,SAAS5rJ,EAAMzb,GAClB,OAAOuC,QAAQvC,GAAmD,QAAxCsrB,iBAAiBtrB,GAASgJ,UACxD,CAIO,SAAS6rO,EAAShpQ,EAAOqmJ,GAC5B,IAAKA,IAAWrmJ,IAAUA,EAAM40P,cAC5B,OAAQ,EAIZ,IAFA,IAAIqU,EAAQ,CAAEhzL,EAAGj2E,EAAMujM,QAASpnG,EAAGn8F,EAAM40P,cAAcpxD,SACnDt9K,EAASmgI,EAAOlkH,cAAgBkkH,EAAOlkH,cAAc0tJ,iBAAiBo5E,EAAMhzL,EAAGgzL,EAAM9sK,GAAK,KACvFj2E,GAAUA,EAAO6rL,gBAAkB1rD,GACtCngI,EAASA,EAAO6rL,cAEpB,IAAK7rL,GAAUmgI,EAAOhyG,QAAQ,MAAO,CAMjCnuB,EAASpC,MAAMklC,KAAKq9F,EAAO9mJ,UAAUya,MAJrB,SAAUnB,GACtB,IAAI+vF,EAAM/vF,EAAE40F,wBACZ,OAAOw7J,EAAMhzL,EAAI2yB,EAAIptF,MAAQytP,EAAMhzL,EAAI2yB,EAAIptF,KAAOotF,EAAIziG,OAAS8iQ,EAAM9sK,EAAIyM,EAAIljG,KAAOujQ,EAAM9sK,EAAIyM,EAAIljG,IAAMkjG,EAAIzhG,MAChH,KACwD,IAC5D,CAEA,IADA,IAAI5H,EAAW8mJ,EAAO9mJ,SACbyM,EAAI,EAAGA,EAAIzM,EAASoO,OAAQ3B,IACjC,GAAIzM,EAASyM,KAAOka,EAChB,OAAOla,EAGf,OAAQ,CACZ,oDCrLWk9P,UAAiC7pQ,mBAAoBL,GAChEkqQ,EAA+BtjO,YAAc,oLCL7C,IASIriC,EAAII,EAAIK,EATRuqE,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAKWmgN,EAA0B,wBAI1BC,EAA0B,wBAI1BC,EAA2B,yBAI3BC,EAAyB,uBAIzBC,EAAuB,qBAQvBC,EAAiC,UACxCC,EAA0B,CAC1B,2CACA,yBACA,2BACA,yBACA,UACA,aACA,UACA,SACA,SACA,QACA,kBACA,kBACA,qBAKOtJ,EAAqB5xL,EAAcA,EAAc,GAAIk7L,GAAyB,GAAO,CAAC,eAAe,GAIrGC,EAAoBn7L,EAAcA,EAAc,GAAIk7L,GAAyB,GAAO,CAAC,eAAe,GAAO19P,KAAI,SAAUs+F,GAAY,OAAOA,EAAW,uBAAyB,IAIhLs/J,IAA0CpmQ,EAAK,CAAC,GACpD6lQ,IAA2B,EAC9B7lQ,GAIOqmQ,IAA2CjmQ,EAAK,CAAC,GACrD0lQ,IAA4B,EAC/B1lQ,GAIOkmQ,IAAyC7lQ,EAAK,CAAC,GACnDslQ,IAA0B,EAC7BtlQ,mFCxEO8lQ,EAA6B,SAAUC,EAAWC,GACzD,IAAIzmQ,EACA0mQ,EAAoB5qQ,EAAAA,WAAiB6pQ,EAAAA,GACzC,OAAKe,GAAsBF,IAA6B,IAAhBC,IAGjCzmQ,EAAK,CACJ8zB,SAAU4yO,GAAqBA,EAAkBC,UAAYD,EAAkBC,WAAaH,EAAY,GAAK,IAE9GZ,EAAAA,IAA2Bc,EAAkB/kI,MAChD3hI,EAAGgmQ,EAAAA,IAAwBQ,EAC3BxmQ,GAPO,CAAC,CAQhB,oHCEW4mQ,EAAmB,SAAUh2O,GACpC,GAAKA,EAAL,CAGA,IAAIi2O,EAASj2O,EAAQm8E,aAAai5J,EAAAA,IAClC,OAAOa,QAAkBprQ,CAFzB,CAGJ,EAIWqrQ,EAAgB,SAAUl2O,GACjC,IAAKA,EACD,OAAO,EAEX,IAAIi2O,EAASj2O,EAAQm8E,aAAai5J,EAAAA,IAClC,OAAO7yO,QAAQ0zO,EACnB,EA+BWE,EAAmB,SAAUC,GACpC,OAAOA,EAAM74O,cAAc,IAAI1hB,OAAOq5P,EAAAA,GAA0B,KACpE,EAIWmB,EAAiB,SAAUD,GAClC,OAAOA,EAAM74O,cAAc,IAAI1hB,OAAOs5P,EAAAA,GAAwB,KAClE,EAsDWmB,EAAuB,SAAUC,EAAiBx6C,EAAW65C,EAAW/qK,EAAQ2rK,GACvF,IAAKZ,EACD,MAAO,GAGX,IADA,IAAIa,EAAkBF,GAAmBC,GAAa,EAAI,GACnDC,GAAmB,GAAKA,EAAkB5rK,EAAOrxF,QAAQ,CAC5D,IAAIk9P,EAAY7rK,EAAO4rK,GAAiB16C,GACxC,GAAI26C,IAAcd,EACd,MAAO,CAACc,EAAW,CAACD,EAAiB16C,IAEzC06C,GAAqCD,GAAa,EAAI,CAC1D,CACA,MAAO,EACX,EAIWG,EAAwB,SAAU76C,EAAU86C,EAAkBhB,EAAW/qK,EAAQ2rK,GACxF,IAAKZ,EACD,MAAO,GAGX,IADA,IAAIiB,EAAmBD,GAAoBJ,GAAa,EAAI,GACrDK,GAAoB,GAAKA,EAAmBhsK,EAAOixH,GAAUtiN,QAAQ,CACxE,IAAIk9P,EAAY7rK,EAAOixH,GAAU+6C,GACjC,GAAIH,IAAcd,EACd,MAAO,CAACc,EAAW,CAAC56C,EAAU+6C,IAElCA,GAAuCL,GAAa,EAAI,CAC5D,CACA,MAAO,EACX,EAIWM,EAAS,SAAUC,EAAkBC,GAC5C,GAAKA,EAGL,IAAK,IAAIl7C,EAAW,EAAGA,EAAWi7C,EAAiBv9P,OAAQsiN,IACvD,IAAK,IAAIC,EAAY,EAAGA,EAAYg7C,EAAiBj7C,GAAUtiN,OAAQuiN,IACnE,GAAIg7C,EAAiBj7C,GAAUC,KAAei7C,EAC1C,MAAO,CAACl7C,EAAUC,EAIlC,EAgBWk7C,EAA+B,CACtCC,sBA3L+B,SAAUC,EAAcC,EAAUjmQ,GAEjE,YADa,IAATA,IAAmBA,EAAO,QACvB,GAAG0K,OAAOu7P,EAAU,KAAKv7P,OAAOs7P,EAAc,KAAKt7P,OAAO1K,EACrE,EAyLI6kQ,iBAAkBA,EAClBqB,oBAtL6B,SAAUr3O,GACvC,GAAKA,EAGL,OAAOslE,SAAStlE,EAAQm8E,aAAa64J,EAAAA,KAA4B,GAAI,GACzE,EAkLIsC,sBA1J+B,SAAUlB,EAAO1gN,GAEhD,YADgB,IAAZA,IAAsBA,EAAU,CAAEq7E,MAAO,IACtCqlI,EAAM74O,cAAc,IAAI1hB,OAAOm5P,EAAAA,GAAyB,MAAMn5P,OAAO65C,EAAQq7E,MAAO,MAC/F,EAwJIwmI,6BApJsC,SAAUxlP,GAChD,OAAQA,EAAO6rL,eACX7rL,EAAO6rL,cAAcrnG,QAAQ,IAAI16F,OAAOm5P,EAAAA,GAAyB,KACzE,EAkJIpzO,iBA9I0B,SAAUw0O,EAAOL,GAC3C,OAAOK,EAAM74O,cAAc,IAAI1hB,OAAOu5P,EAAAA,GAAsB,MAAMv5P,OAAOk6P,EAAU,MACvF,EA6IIyB,gBAzIyB,SAAUzlP,GACnC,OAAQA,EAAO6rL,eACX7rL,EAAO6rL,cAAcrnG,QAAQ,IAAI16F,OAAOo5P,EAAAA,GAAyB,KACzE,EAuIIkB,iBAAkBA,EAClBE,eAAgBA,EAChBoB,qBAzH8B,SAAUrB,EAAO1gN,QAC/B,IAAZA,IAAsBA,EAAU,CAAEgzM,WAAW,IACjD,IAAIzO,EAAYvkM,EAAQgzM,UAAYsD,EAAAA,GAAqBuJ,EAAAA,GACzD,OAAO5lP,MAAMklC,KAAKuhN,EAAM9/J,iBAAiB2jJ,EAAU1kM,KAAK,MAC5D,EAsHImiN,uBAlHgC,SAAUtB,EAAO1gN,GAEjD,QADgB,IAAZA,IAAsBA,EAAU,CAAEq7E,MAAO,KACxCqlI,EACD,MAAO,GAEX,IAAIlgK,EAAW81J,EAAAA,GAAmBp0P,KAAI,SAAUurB,GAAM,OAAOA,EAAK,IAAItnB,OAAOm5P,EAAAA,GAAyB,MAAMn5P,OAAO65C,EAAQq7E,MAAO,KAAO,IAAGx7E,KAAK,KACjJ,OAAO5lC,MAAMklC,KAAKuhN,EAAM9/J,iBAAiBJ,GAC7C,EA4GIyhK,0BAxGmC,SAAUjiN,QAC7B,IAAZA,IAAsBA,EAAU,CAAEq7E,MAAO,IAC7C,IAAI76B,EAAW81J,EAAAA,GAAmBp0P,KAAI,SAAUkqK,GAAO,OAAOA,EAAM,IAAIjmK,OAAOm5P,EAAAA,GAAyB,MAAMn5P,OAAO65C,EAAQq7E,MAAO,KAAO,IAAGx7E,KAAK,KACnJ,OAAO,SAAUv1B,GAAW,OAAOA,EAAQkgB,QAAQg2D,EAAW,CAClE,EAqGIohJ,aAjGsB,SAAU5hM,GAChC,IAAIkiN,EAAkBliN,EAAQkiN,gBAAiB/rQ,EAAQ6pD,EAAQ7pD,MAAOgsQ,EAAkBniN,EAAQmiN,gBAAiBC,EAAcpiN,EAAQoiN,YACnID,EAAgB7rQ,SAAW4rQ,GAAmBA,EAAgBh4O,QAC9D/zB,EAAM+gB,iBACNgrP,EAAgBh4O,QACZs2O,EAAc0B,KACdA,EAAgB/3M,aAAa,WAAY,KACzCg4M,EAAgB7rQ,QAAQ+pQ,SAAWC,EAAiB4B,IAEpDE,GAAe5B,EAAc4B,IAC7BA,EAAYj4M,aAAa,WAAY,MAGjD,EAqFIk4M,YAjFqB,SAAUC,GAC/B,OAAOA,EAAmBhsQ,QAAUgsQ,EAAmBhsQ,QAAQorQ,SAAW,EAC9E,EAgFIlB,cAAeA,EACfI,qBAAsBA,EACtBK,sBAAuBA,EACvBG,OAAQA,EACRmB,uBA/BgC,SAAUD,GAC1C,OAAOA,EAAmBhsQ,QAAUgsQ,EAAmBhsQ,QAAQ+qQ,iBAAiBv9P,OAAS,CAC7F,EA8BI0+P,kBA1B2B,SAAUC,GACrC,OAAOA,EAAW,GAAGt8P,OAAOs8P,GAAUt8P,OAAOw5P,EAAAA,IAAkC,EACnF,oECzLO,IAAI+C,EAA4B,sBAE5BC,EAA4B,sBAE5BC,EAAkC,sMCLzC9rP,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAII0jN,EAAuB,CAAC,EAgBjBC,EAAiB,SAAUzmP,EAAQilF,GAE1C,IADA,IAAIyhK,EAAgB1mP,EACb0mP,GAAe,CAClB,GAAIA,EAAczhK,UAAYA,EAC1B,OAAOyhK,EAEN,GAA8B,UAA1BA,EAAczhK,QACnB,OAAO,KAEXyhK,EAAgBA,EAAc76D,aAClC,CACA,OAAO,IACX,EAEW86D,EAAc,SAAU14O,GAC/B,GAAKA,EAAL,CAGA,IAAI87L,EAAW97L,EAAQm8E,aAAai8J,EAAAA,IACpC,OAAOt8C,EAAWx2H,SAASw2H,EAAU,SAAMjxN,CAF3C,CAGJ,EAEW8tQ,EAAiB,SAAU34O,GAClC,GAAKA,EAAL,CAGA,IAAImnM,EAAWnnM,EAAQm8E,aAAak8J,EAAAA,IACpC,OAAOlxC,EAAW7hI,SAAS6hI,EAAU,SAAMt8N,CAF3C,CAGJ,EASWwO,EAAmB,SAAUq8C,GACpC,IAAIq8M,EAAgBr8M,EAAQq8M,eAvDA,QAwDxBj+O,GAAWC,EAAAA,EAAAA,GAAO2hC,EAAQ57C,aAC9B,OAAOo4P,EAAAA,EAAAA,IAAQx8M,EAAQxlD,KAAM6hQ,GAAe,SAAU52P,GAClD,IAAI/L,EACJ,OAAOmjQ,EAAAA,EAAAA,IAAep3P,EAAM42P,IAAgB3iQ,EAAK,CAAC,GAC3CsmD,EAAQ37C,eAAiB27C,EAAQt8C,cAAc0a,EAAS3Y,IAC3D/L,GACR,GACJ,EAOWwpQ,EAA8B,SAAUljN,GAC/C,IAAI7pD,EAAQ6pD,EAAQ7pD,MAAOiO,EAAc47C,EAAQ57C,YAAaV,EAAgBs8C,EAAQt8C,cAClF2wB,EAAiBl+B,EAAMk+B,eAAgBD,EAAcj+B,EAAMi+B,YAAanT,EAAY9qB,EAAM8qB,UAAWkiP,EAAchtQ,EAAMgtQ,YAAa3+P,EAAOrO,EAAMqO,KAAMvB,EAAO9M,EAAM8M,KAAMoB,EAAgBlO,EAAMkO,cAClMgY,EAAS+X,EAAY/X,OAAQq5K,EAAUthK,EAAYshK,QAASC,EAAUvhK,EAAYuhK,QAAS9gK,EAAST,EAAYS,OAAQ+gK,EAAWxhK,EAAYwhK,SACnJ,GAAIvhK,EAAe+uO,sBAAwBhvO,EAAY9H,UAAYtD,EAAAA,EAAK8L,MACpE,OAAOpxB,EAEX,IAAI2/P,EAAYP,EAAezmP,EAAQ,MACnCinP,EAAYR,EAAezmP,EAAQ,MACnCo1M,EAAWwxC,EAAeI,GAC1Bj9C,EAAW48C,EAAYM,GACvBC,EAAiB,CAAC,EAwBtB,OAvBIF,GAAaC,QAA0BnuQ,IAAbixN,QAAuCjxN,IAAbs8N,IACpD8xC,EAAiB5+P,EAAiB,CAC9BjB,cAAeA,EACfU,YAAaA,EACbjO,MAAO,CACHu/L,QAASA,EACTC,QAASA,EACT9gK,OAAQA,EACR+gK,SAAUA,EACV30K,UAAWA,EACXhe,KAAMA,EACNuB,KAAMA,EACNH,cAAeA,EACf8+P,YAAaA,EACbK,cAAe/xC,EAAUgyC,YAAahyC,EAAUiyC,cAAet9C,EAAUu9C,YAAav9C,EACtFw9C,QAAQ,EACRvvO,eAAgBA,EAChBD,YAAaA,EACb/X,OAAQlmB,EAAMkmB,OACd/b,SAAU,SAIfijQ,CACX,EAOW5+P,EAAmB,SAAUq7C,GACpC,IAhH6B+yI,EAAkB8wE,EAgH3C1tQ,EAAQ6pD,EAAQ7pD,MAAOiO,EAAc47C,EAAQ57C,YAAa0/P,EAAoB9jN,EAAQt8C,cACtFud,EAAY9qB,EAAM8qB,UAAWyiP,EAAgBvtQ,EAAMutQ,cAAeC,EAAcxtQ,EAAMwtQ,YAAaH,EAAgBrtQ,EAAMqtQ,cAAeC,EAActtQ,EAAMstQ,YAAaxgQ,EAAO9M,EAAM8M,KAAM2gQ,EAASztQ,EAAMytQ,OAAQluE,EAAUv/L,EAAMu/L,QAASE,EAAWz/L,EAAMy/L,SAAUD,EAAUx/L,EAAMw/L,QAASwtE,EAAchtQ,EAAMgtQ,YAAa3+P,EAAOrO,EAAMqO,KAAMlE,EAAWnK,EAAMmK,SACrW8d,GAAWC,EAAAA,EAAAA,GAAOja,GAClBm/P,EAAiB,CAAC,EAClBQ,EAA4B,OAAbzjQ,EACnB,GAAa,WAATkE,EAAmB,CACnB,IAAIw/P,EAAkB/iP,EAAUpQ,MAAM6yP,EAAeA,EAAgB,GAAG,GACpEzK,EAAS76O,EAAS4lP,GACtBnB,EAAqBM,GAAe,CAChC/8C,SAAUs9C,EACVjyC,SAAU+xC,GAEdD,EAAetK,IAAUh2P,GAAO,CAACugQ,EACrC,MACK,IAAII,IAAYhuE,GAAaF,GAAYC,GAAYouE,IAkBtD,GAAIruE,GAAWC,GAAWouE,EAAc,CACpClB,EAAqBM,GAAe,CAChC/8C,SAAUs9C,EACVjyC,SAAU+xC,GAGVQ,EADoB/iP,EAAUpQ,MAAM6yP,EAAeC,EAAc,GAC7B,GACpC1K,EAAS76O,EAAS4lP,IACtBT,EAAiBzsP,EAAS,CAAC,EAAGgtP,IACf7K,GAAUh2P,IAAS8gQ,GAzJbhxE,EAyJ6CwwE,EAAetK,GAzJ1C4K,EAyJmDL,GAxJ7FzwE,GAAqB94K,MAAMC,QAAQ64K,IAAiD,IAA5BA,EAAiBjvL,OACnE,CAAC+/P,GAGS9wE,EAAiBxwG,WAAU,SAAUgvI,GAAe,OAAOA,IAAgBsyC,CAAgB,KAC1F,EACP9wE,EAAiBhuL,QAAO,SAAUwsN,GAAe,OAAOA,IAAgBsyC,CAAgB,IAGxFn/L,EAAcA,EAAc,GAAIquH,GAAkB,GAAO,CAAC8wE,IAAiB,KA+I0BN,EAAetK,EAC/H,MACK,GAAIrjE,EAAU,CACf,IAAIquE,EAAgBpB,EAAqBM,IAAgBN,EAAqBM,GAAa/8C,UAAa,EACpG89C,EAAgBrB,EAAqBM,IAAgBN,EAAqBM,GAAa1xC,UAAa,EACpG0yC,EAAuBptP,KAAKC,IAAIitP,EAAcP,EAAeC,GAC7DS,EAAqBrtP,KAAKI,IAAI8sP,EAAcP,EAAeC,GAC3DU,EAAsBttP,KAAKC,IAAIktP,EAAcV,EAAeC,GAC5Da,EAAqBvtP,KAAKI,IAAI+sP,EAAcV,EAAeC,GAC3Dc,EAAoB,GACxB,IAASpiQ,EAAIkiQ,EAAqBliQ,GAAKmiQ,EAAoBniQ,IACvDoiQ,EAAkBthP,KAAK9gB,GAEH8e,EAAUpQ,MAAMszP,EAAsBC,EAAqB,GACjExzP,SAAQ,SAAU0qP,GAChC,IAAIrC,EAAS76O,EAASk9O,GACtBiI,EAAetK,IAAUh2P,GAAOyhE,EAAc,GAAI6/L,GAAmB,EACzE,GACJ,MA7CqE,CAChEX,IACDf,EAAqBM,GAAe,CAChC/8C,SAAUs9C,EACVjyC,SAAU+xC,IAIlB,IADA,IAAIgB,EAAoB,GACfriQ,EAAIqhQ,EAAerhQ,GAAKshQ,EAAathQ,IAC1CqiQ,EAAkBvhP,KAAK9gB,GAEH8e,EAAUpQ,MAAM6yP,EAAeC,EAAc,GACnD/yP,SAAQ,SAAU0qP,GAChC,IAAIrC,EAAS76O,EAASk9O,GACtBiI,EAAetK,IAAUh2P,GAAOyhE,EAAc,GAAI8/L,GAAmB,EACzE,GACJ,CA+BA,OAAOjB,CACX,EAEIkB,GAAgC9c,EAAAA,EAAAA,KAEzB+c,EAAyB,SAAUp6O,GAC1C,IAAKA,IAAYm6O,EACb,OAAO,KAGX,IADA,IAAI3iK,EAAOx3E,EAAQ49K,cACZpmG,GAAM,CACT,GAAgD,SAA5C9mG,OAAO46C,iBAAiBksD,GAAM10E,UAC9B,OAAO00E,EAEXA,EAAOA,EAAKomG,aAChB,CACJ,EAEWy8D,EAAY,SAAU96C,GAC7B,GAAIA,GAAgBA,EAAavxL,eACzBuxL,IAAiBA,EAAavxL,cAAchnB,KAAM,CAClD,IAAIwtF,EAAO+qH,EAAajmH,wBACxB,MAAO,CACHjyF,KAAMmtF,EAAKntF,KAAOk4M,EAAa50G,WAC/Bp5G,IAAKijG,EAAKjjG,IAAMguN,EAAahoN,UAErC,CAEJ,MAAO,CAAE8P,KAAM,EAAG9V,IAAK,EAC3B,EAEW+oQ,EAAsB,SAAUtgQ,GAOvC,MAAO,CAAEC,UANKD,IACqB,mBAAvBA,EAAWC,SAAwBD,EAAWC,SAK/B2lP,OAHhB5lP,GAAauoB,QAAQvoB,EAAW4lP,MAGJ1lP,KAF5BF,GAAcA,EAAWE,KAAOF,EAAWE,KAAO,WAEVvB,KADxC4pB,QAAQvoB,GAAcA,EAAWrB,MAEhD,+OC5OIilB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA8BzCuhP,EAA0B,SAAUp7O,GAEpC,SAASo7O,EAAS1kQ,GACd,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA4GxC,OA3GA0C,EAAMgF,eAAiB,KACvBhF,EAAMmgP,aAAe,KACrBngP,EAAMyiF,MAAQ,KACdziF,EAAM3C,KAAO,KACb2C,EAAMkF,aAAe,EACrBlF,EAAMogP,WAAa,EACnBpgP,EAAMqgP,WAAa,EACnBrgP,EAAM/iB,SAAW,KACjB+iB,EAAMya,UAAW,EACjBza,EAAMsF,gBAAiB,EACvBtF,EAAMsgP,cAAe,EACrBtgP,EAAM0a,gBAAkB,WACpB,GAAK1a,EAAM/iB,SAAX,CAGA,IAAI09B,EAAc3a,EAAM/iB,SAASimB,cAAc,cAC3C0X,EAAiB5a,EAAM/iB,SAASimB,cAAc,0BAC9CyX,GAAeA,EAAY,IAC3BA,EAAY,GAAGE,UAAUC,OAAO,WAEhCF,GACAA,EAAeC,UAAUE,IAAI,WAEjC/a,EAAMya,UAAW,CATjB,CAUJ,EACAza,EAAMgb,eAAiB,WACnB,GAAKhb,EAAM/iB,SAAX,CAGA,IAAI09B,EAAc3a,EAAM/iB,SAASimB,cAAc,cAC3CyX,GACAA,EAAYE,UAAUC,OAAO,WAEjC9a,EAAMya,UAAW,CALjB,CAMJ,EACAza,EAAMugP,0BAA4B,SAAUv7O,GAExC,GADAhF,EAAMgF,eAAiBA,EACnBhF,EAAMgF,gBAAkBhF,EAAMyiF,MAAO,CACrCziF,EAAMyiF,MAAMzxG,MAAMy3B,UAAY,cAAcjnB,OAAOwe,EAAMogP,WAAY,OACrE,IAAIlkO,GAAW8B,EAAAA,EAAAA,IAAYhe,EAAMxkB,MAAM80B,YAAatQ,EAAMxkB,MAAM6W,IAAK2N,EAAMxkB,MAAMgX,KAC7EguP,EAAgBxgP,EAAMxkB,MAAMupB,QAAQqE,KAAK8S,EAAUlc,EAAMxkB,MAAM6W,KACnE2N,EAAMgF,eAAey7O,cAAcD,EACvC,CACJ,EACAxgP,EAAM0gP,eAAiB,SAAUvoP,EAAMwoP,GACnC,OAAQ9vQ,EAAAA,cAAoB,QAAS,CAAE+3B,IAAK,8BAA+Bz3B,UAAW,uCAAwCkE,KAAM,OAAQwzB,SAAU7I,EAAMxkB,MAAMqtB,UAC9Jh4B,EAAAA,cAAoB,WAAY,KAAMsnB,EAAK5a,KAAI,SAAU2gB,EAAG9c,GAAO,OAAQvQ,EAAAA,cAAoB,MAAO,CAAE+3B,IAAKxnB,GAAS,KACtHvQ,EAAAA,cAAoB,QAAS,CAAEM,UAAW,oBACtCN,EAAAA,cAAoB,KAAM,CAAEM,UAAW,iBAAmBwvQ,EAAUpjQ,KAAI,SAAUnK,EAAMgO,GAAO,OAAQvQ,EAAAA,cAAoB,KAAM,CAAE+3B,IAAKxnB,EAAKjQ,UAAW,iBAAmBiC,EAAQ,MAC/L,EACA4sB,EAAM4gP,WAAa,SAAUzoP,EAAM2jB,GAC/B,IAAIG,EAAUjc,EAAMxkB,MAAMygC,QAC1B,OAAQprC,EAAAA,cAAoB,QAAS,CAAEM,UAAW,mBAAoBE,IAAK,SAAUoxG,GAAS,OAAOziF,EAAMyiF,MAAQA,CAAO,EAAGptG,KAAM,OAAQwzB,SAAU7I,EAAMxkB,MAAMqtB,SAAU,wBAAyBoT,EAAUjc,EAAMxkB,MAAM80B,YAAY/gB,WAClO1e,EAAAA,cAAoB,WAAY,KAAMsnB,EAAK5a,KAAI,SAAU2gB,EAAG9c,GAAO,OAAQvQ,EAAAA,cAAoB,MAAO,CAAE+3B,IAAKxnB,GAAS,KACtH06B,EAAMv+B,KAAI,SAAUsf,GAAQ,OAAQhsB,EAAAA,cAAoBkrC,EAAAA,EAAM,CAAE1qC,IAAK,SAAUy3B,GAAW9I,EAAMmgP,eACxFngP,EAAMmgP,aAAer3O,EACvB,EAAGF,IAAK/L,EAAKtN,UAAWgsB,WAAYvb,EAAMxkB,MAAM+/B,WAAYW,SAAUrf,EAAMxK,IAAK2N,EAAMxkB,MAAM6W,IAAKG,IAAKwN,EAAMxkB,MAAMgX,IAAKypB,QAASA,EAAS3L,YAAatQ,EAAMxkB,MAAM80B,YAAahyB,KAAM0hB,EAAMxkB,MAAM8C,KAAM69B,aAAcnc,EAAMxkB,MAAMuH,MAAOu4B,gBAAiBtb,EAAMqQ,WAAYvtB,SAAUkd,EAAMob,iBAAkBY,IAAKhc,EAAMxkB,MAAMwgC,IAAKjX,QAAS/E,EAAMxkB,MAAMupB,QAASsX,SAAUrc,EAAMxkB,MAAM6gC,UAAc,IACpZ,EACArc,EAAMwC,iBAAmB,WACrB,GAAKxC,EAAMxkB,MAAM2qB,IAAjB,CAGA,IAAI06O,EAAmB7gP,EAAMxkB,MAAM+/B,aAAeC,EAAAA,EAAiBx3B,MAC/Dgc,EAAMxkB,MAAM2qB,IAAI26O,wBAChB9gP,EAAMxkB,MAAM2qB,IAAI46O,4BACpB/gP,EAAMkF,aAAe27O,EAAmB7gP,EAAMxkB,MAAM2qB,IAAIk6O,WAAWrgP,EAAMxkB,MAAM+/B,YAC/Evb,EAAMogP,YAAc,EAAIpgP,EAAMxkB,MAAM2qB,IAAI66O,aACxChhP,EAAMqgP,WAAargP,EAAMxkB,MAAM2qB,IAAIk6O,WAAWrgP,EAAMxkB,MAAM+/B,aAAe,CANzE,CAOJ,EACAvb,EAAMihP,QAAU,SAAU73O,EAAMvK,GAC5B,OAAOzM,KAAKC,IAAIwM,EAAQuK,EAAMpJ,EAAMqJ,KACxC,EACArJ,EAAM6G,mBAAqB,SAAU9xB,GACjC,IAAImd,EAAQnd,EAAGmd,MAAOgvP,EAAensQ,EAAGmsQ,aAAcC,EAAapsQ,EAAGosQ,WAClE/3O,EAAO+3O,EAAaA,EAAW/3O,KAAOpJ,EAAM3vB,MAAM+4B,KAItD,GAHIpJ,EAAM3vB,MAAM6hB,QAAUA,GAAS8N,EAAM3vB,MAAM+4B,OAASA,GACpDpJ,EAAM6L,SAAS,CAAE3Z,MAAOA,EAAOkX,KAAMA,IAErCpJ,EAAMyiF,OAASy+J,EAAc,CAC7B,IAAIxsK,EAAY,cAAclzF,OAAO0/P,EAAan7O,OAAQ,OAC1D/F,EAAMyiF,MAAMzxG,MAAMy3B,UAAYisE,CAClC,CACJ,EACA10E,EAAMqe,iBAAmB,SAAU7sC,GAC/BwuB,EAAMsgP,cAAe,EACrBtgP,EAAMob,iBAAiBrX,UAAKvzB,EAAWgB,GAAO,EAClD,EACAwuB,EAAMob,iBAAmB,SAAU5pC,EAAO6pC,QACjB,IAAjBA,IAA2BA,GAAe,GAC9C,IAAIv4B,EAAWkd,EAAMxkB,MAAMsH,SAC3B,GAAIA,EAAU,CACV,IAAI0iB,EAAO,CACPkK,eAAgBl+B,EAAMk+B,eACtBD,YAAaj+B,EAAMi+B,YACnB1sB,OAAOia,EAAAA,EAAAA,GAAUxrB,EAAMuR,OACvB2U,OAAQsI,EACRqb,aAAcA,GAElBv4B,EAASihB,UAAKvzB,EAAWg1B,EAC7B,CACJ,EACAxF,EAAM6f,SAAW7f,EAAMxkB,MAAM+/B,WAC7Bvb,EAAM8zK,UAAY9zK,EAAMxkB,MAAM80B,YAC9BtQ,EAAM3vB,MAAQ,CACV+4B,KAAMpJ,EAAMxkB,MAAMupB,QAAQqE,KAAKpJ,EAAMxkB,MAAM80B,YAAatQ,EAAMxkB,MAAM6W,KACpEH,MAAO8N,EAAMxkB,MAAMupB,QAAQqE,KAAKpJ,EAAMxkB,MAAM80B,YAAatQ,EAAMxkB,MAAM6W,MAElE2N,CACX,CAgHA,OA/NAuD,EAAU28O,EAAUp7O,GAgHpB7kB,OAAO6nB,eAAeo4O,EAAS1iP,UAAW,UAAW,CACjDuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo4O,EAAS1iP,UAAW,YAAa,CACnDuK,IAAK,WACDzK,KAAKD,MAAOmL,EAAAA,EAAAA,IAAmBlL,MAC/B,IAAIqjP,GAAYS,EAAAA,EAAAA,IAAe9jP,KAAKD,KAAKgB,gBAAgB,CAAEg8M,SAAU,QAASvjO,KAAM,SAAWwmB,KAAKD,KAAK83M,YACzG,OAAO73M,KAAK+S,WAAa,CAAC,IAAI7uB,OAAOm/P,GAAaA,CACtD,EACA34O,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo4O,EAAS1iP,UAAW,aAAc,CACpDuK,IAAK,WACD,OAAOG,QAAQ5K,KAAK9hB,MAAM8/B,iBAAmBhe,KAAK9hB,MAAM+/B,aAAeC,EAAAA,EAAiBx3B,MAC5F,EACAgkB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo4O,EAAS1iP,UAAW,OAAQ,CAC9CuK,IAAK,WACD,YAA2Bv3B,IAApB8sB,KAAK9hB,MAAM6tB,KAAqB/L,KAAK9hB,MAAM6tB,KAAO62O,EAASv5O,aAAa0C,IACnF,EACArB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo4O,EAAS1iP,UAAW,UAAW,CACjDuK,IAAK,WACD,OAAOG,QAAQ5K,KAAK9hB,MAAM2sB,cAAgB7K,KAAKgI,eACnD,EACA0C,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo4O,EAAS1iP,UAAW,iBAAkB,CACxDuK,IAAK,WACD,OAAO6R,EAAAA,EAAAA,KAAUxI,EAAAA,EAAAA,OAAY5R,EAAAA,EAAAA,GAAQlC,KAAK9hB,MAAM6W,MAAMmN,EAAAA,EAAAA,GAAQlC,KAAK9hB,MAAMgX,KAC7E,EACAwV,YAAY,EACZC,cAAc,IAElBi4O,EAAS1iP,UAAU8K,mBAAqB,SAAU+4O,EAAYC,GAC1DhkP,KAAKgjP,cAAe,OACO9vQ,IAAvB8sB,KAAKkjP,eAA+BljP,KAAK0H,gBACzC1H,KAAK0H,eAAe1H,KAAKiL,QAAU,iBAAmB,iBAAiBjL,KAAKkjP,eAE5EljP,KAAKmd,UACLnd,KAAKod,kBAETpd,KAAKuiB,SAAWviB,KAAK9hB,MAAM+/B,WAE3Bje,KAAKkjP,mBAAgBhwQ,CACzB,EACA0vQ,EAAS1iP,UAAUnrB,OAAS,WACxB,IAAI2tB,EAAQ1C,KACZA,KAAKkF,mBACL,IAAIke,EAAgBpjB,KAAKuiB,WAAaviB,KAAK9hB,MAAM+/B,WAC7CjL,GAAc0N,EAAAA,EAAAA,IAAY1gB,KAAK9hB,MAAM80B,YAAahT,KAAK9hB,MAAM6W,IAAKiL,KAAK9hB,MAAMgX,KAC7E4W,EAAQsX,EAAkCpjB,KAAK9hB,MAAMupB,QAAQqE,KAAKkH,EAAahT,KAAK9hB,MAAM6W,KAAlEiL,KAAKjtB,MAAM+4B,KACnCvK,EAAQvB,KAAK9hB,MAAMupB,QAAQlG,MAAMvB,KAAK9hB,MAAM6W,IAAKiL,KAAK9hB,MAAMgX,KAC5D6W,EAAO/L,KAAK2jP,QAAQ73O,EAAMvK,GAC1Bqd,EAAW5e,KAAK9hB,MAAMupB,QAAQw8O,UAAUjkP,KAAK9hB,MAAM6W,IAAK+W,GACxD0X,EAAaxjB,KAAK9hB,MAAMupB,QAAQw8O,UAAUjkP,KAAK9hB,MAAM6W,IAAKiL,KAAKjtB,MAAM6hB,OACrEiG,EAAO,IAAI7C,MAAMgI,KAAK9hB,MAAMupB,QAAQy8O,UAAUlkP,KAAK+S,aAAa2pE,KAAK,IACrEynK,EAAiBnkP,KAAK9hB,MAAM+/B,aAAeje,KAAKuiB,SACpDviB,KAAKgI,gBAAkBm8O,GACnBA,KACItwO,EAAAA,EAAAA,GAAY7T,KAAKw2K,UAAWxjK,IAC7BhT,KAAKgjP,eACHhjP,KAAK9hB,MAAM8kQ,cAAgBhjP,KAAK9hB,MAAM8kQ,kBAC3ChjP,KAAKkjP,cAAgBljP,KAAK9hB,MAAMupB,QAAQqE,KAAKkH,EAAahT,KAAK9hB,MAAM6W,MAEzEiL,KAAKw2K,UAAYxjK,EACjB,IAAIoL,GAAiBhP,EAAAA,EAAAA,GAAW,2BAA4B,CACxD,uBAAwBpP,KAAK9hB,MAAM+/B,aAAeC,EAAAA,EAAiBx3B,MACnE,sBAAuBsZ,KAAK9hB,MAAM+/B,aAAeC,EAAAA,EAAiBz3B,KAClE,wBAAyBuZ,KAAK9hB,MAAM+/B,aAAeC,EAAAA,EAAiBI,OACpE,yBAA0Bte,KAAK9hB,MAAM+/B,aAAeC,EAAAA,EAAiBK,UAErEC,EAAQxe,KAAKsjP,WAAWzoP,EAAMmF,KAAK9hB,MAAMupB,QAAQ8b,UAAU3E,EAAU7S,IACrEq4O,EAAgB7wQ,EAAAA,cAAoBA,EAAAA,SAAgB,KACpDA,EAAAA,cAAoBkwC,EAAAA,EAAQ,CAAEnY,IAAK,4BAA6BoY,YAAaF,EAAYzuB,IAAKiL,KAAK9hB,MAAM6W,IAAKG,IAAK8K,KAAK9hB,MAAMgX,IAAK+oB,WAAYje,KAAK9hB,MAAM+/B,WAAYS,IAAK1e,KAAK9hB,MAAMwgC,IAAKjX,QAASzH,KAAK9hB,MAAMupB,QAASmc,YAAa5jB,KAAK9hB,MAAM0lC,YAAaC,SAAWtwC,EAAAA,cAAoBA,EAAAA,SAAgB,KACpSA,EAAAA,cAAoB0wC,EAAAA,EAAc,CAAElvB,IAAKiL,KAAK9hB,MAAM6W,IAAKG,IAAK8K,KAAK9hB,MAAMgX,IAAK7f,QAAS2qB,KAAK+gB,iBAAkB7mC,UAAW8lB,KAAKghB,eAAgBzV,SAAUvL,KAAK9hB,MAAMqtB,cAC3KvL,KAAK9hB,MAAM+/B,aAAeC,EAAAA,EAAiBx3B,OAASsZ,KAAKojP,eAAevoP,EAAMmF,KAAKqjP,WACnF9vQ,EAAAA,cAAoBo4B,EAAAA,EAAgB,CAAEL,IAAK,6BAA8BQ,KAAMA,EAAMC,KAAM/L,KAAK+L,KAAMxK,MAAOA,EAAOuD,WAAY9E,KAAK+iP,WAAYp7O,UAAW3H,KAAK8iP,WAAYl7O,aAAc5H,KAAK4H,aAAcy8O,iBAAkBrkP,KAAK8iP,WAAYl3O,oBAAqB5L,KAAK+iP,WAAYuB,SAAUtkP,KAAK9hB,MAAMomQ,SAAUz4O,eAAgB7L,KAAKuJ,mBAAoByF,QAAShP,KAAKijP,0BAA2BxvQ,SAAU+qC,EAAOjT,SAAUvL,KAAK9hB,MAAMqtB,YAClb,OAAQh4B,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAUy3B,GAAM9I,EAAM/iB,SAAW6rB,CAAI,EAAG33B,UAAWuqC,GAAkBpe,KAAK9hB,MAAM2qB,IAAI7D,aAAeo/O,EAAe,KAChK,EACAxB,EAAS52O,UAAY,CACjBiS,WAAYhS,EAAAA,OAAiBoY,WAC7Bzc,aAAcqE,EAAAA,OACd0S,QAAS1S,EAAAA,OAAiBoY,WAC1BrR,YAAa/G,EAAAA,WAAqBhvB,MAAMonC,WACxCnvB,IAAK+W,EAAAA,WAAqBhvB,MAAMonC,WAChCtvB,IAAKkX,EAAAA,WAAqBhvB,MAAMonC,WAChC7+B,SAAUymB,EAAAA,KACV+R,gBAAiB/R,EAAAA,KACjBpB,aAAcoB,EAAAA,KACdF,KAAME,EAAAA,OACNxmB,MAAOwmB,EAAAA,WAAqBhvB,MAC5B8lQ,WAAY92O,EAAAA,OACZ62O,WAAY72O,EAAAA,OACZV,SAAUU,EAAAA,QAEd22O,EAASv5O,aAAe,CACpB0C,KAhOU,EAiOViS,iBAAiB,EACjBnT,cAAc,GAEX+3O,CACX,CAjO8B,CAiO5BrvQ,EAAAA,YAEFg5B,EAAAA,EAAAA,IAAgBq2O,iBCjQZ38O,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAMI2nQ,EAAwC,SAAU/8O,GAElD,SAAS+8O,IACL,IAAI7hP,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAOhE,OANA0C,EAAMoe,YAAc,SAAU5sC,GAC1B,IAAIuD,EAAKirB,EAAMxkB,MAAO7I,EAAUoC,EAAGpC,QAASoQ,EAAQhO,EAAGgO,MACnDpQ,GACAA,EAAQoxB,UAAKvzB,EAAWuS,EAAOvR,EAEvC,EACOwuB,CACX,CAUA,OApBAuD,EAAUs+O,EAAwB/8O,GAelC+8O,EAAuBrkP,UAAUnrB,OAAS,WACtC,IAAI0C,EAAKuoB,KAAK9hB,MAAOsmQ,EAAe/sQ,EAAG+sQ,aAAgD/3K,GAA1Bh1F,EAAGgO,MAAchO,EAAGsG,KAAcyc,EAAO/iB,EAAI,CAAC,eAAgB,QAAS,UACpI,OAAQlE,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG43E,EAAO,CAAEp3F,QAAS2qB,KAAK8gB,cAClEvtC,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,CAAE,+BAAgCo1O,KAAmBxkP,KAAK9hB,MAAMzK,UAC5H,EACO8wQ,CACX,CAtB4C,CAsB1ChxQ,EAAAA,WChEE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAWI4nO,EAA4B,SAAU9sO,GAEtC,SAAS8sO,EAAWp2P,GAChB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KACxC0C,EAAMgF,eAAiB,KACvBhF,EAAM0I,KAAO,KACb1I,EAAMoC,WAAa,EACnBpC,EAAMiF,UAAY,EAClBjF,EAAM+hP,cAAgB,EACtB/hP,EAAMkF,aAAe,EACrBlF,EAAMugP,0BAA4B,SAAUv7O,GAExC,GADAhF,EAAMgF,eAAiBA,EACnBhF,EAAMgF,gBAAkBhF,EAAM0I,KAAM,CACpC1I,EAAM0I,KAAK13B,MAAMy3B,UAAY,cAAcjnB,OAAOwe,EAAMiF,UAAW,OACnE,IAAIiX,GAAW8B,EAAAA,EAAAA,IAAYhe,EAAMxkB,MAAM80B,YAAatQ,EAAMxkB,MAAM6W,IAAK2N,EAAMxkB,MAAMgX,KAC7EguP,EAAgBxgP,EAAMxkB,MAAMupB,QAAQqE,KAAK8S,EAAUlc,EAAMxkB,MAAM6W,KACnE2N,EAAMgF,eAAey7O,cAAcD,EACvC,CACJ,EACAxgP,EAAMgiP,oBAAsB,SAAUnlP,GAClC,IAAIxhB,EAAO2kB,EAAMxkB,MAAMupB,QAAQk9O,gBAAgBplP,GAC3CilP,EAAe9hP,EAAMxkB,MAAMupB,QAAQ+8O,aAAajlP,GAChDqlP,EAAW,iCAAiC1gQ,OAAOqb,EAAKtN,WACxD4yP,EAAsB,CACtB9mQ,KAAMA,EACN0H,MAAO8Z,EACPilP,aAAcA,EACd9iO,KAAMhf,EAAMxkB,MAAM+/B,WAClB5oC,QAASqtB,EAAMob,kBAEnB,OAAOpb,EAAMxkB,MAAM4mQ,eACZvxQ,EAAAA,cAAoBmvB,EAAMxkB,MAAM4mQ,eAAgBjwP,EAAS,CAAC,EAAGgwP,EAAqB,CAAEv5O,IAAKs5O,IAAa7mQ,GACtGxK,EAAAA,cAAoBgxQ,EAAwB1vP,EAAS,CAAC,EAAGgwP,EAAqB,CAAEv5O,IAAKs5O,IAAa7mQ,EAC7G,EACA2kB,EAAMwC,iBAAmB,WACrB,IAAI6/O,EAAiBriP,EAAMxkB,MAAM2qB,IAAIk8O,eACrCriP,EAAMoC,WAAapC,EAAMxkB,MAAM2qB,IAAIm8O,sBAAwB,EAC3DtiP,EAAM+hP,cAAgB/hP,EAAMxkB,MAAM2qB,IAAIo8O,gBACtCviP,EAAMiF,WAAao9O,EAAiBriP,EAAMoC,YAAc,EACxDpC,EAAMkF,aAAem9O,EAAiBriP,EAAMoC,UAChD,EACApC,EAAMob,iBAAmB,SAAUr4B,EAAOvR,GACtC,IAAIsR,EAAWkd,EAAMxkB,MAAMsH,SAC3B,GAAIA,GAAYtR,EAAO,CACnB,IAAIg0B,EAAO,CACPziB,OAAOia,EAAAA,EAAAA,GAAUja,GACjB2U,OAAQsI,EACRyP,YAAaj+B,GAASA,EAAMi+B,YAC5BC,eAAgBl+B,GAEpBsR,EAASihB,UAAKvzB,EAAWg1B,EAC7B,CACJ,EACAxF,EAAM6G,mBAAqB,SAAU9xB,GACjC,IAAImsQ,EAAensQ,EAAGmsQ,aAAcC,EAAapsQ,EAAGosQ,WAChD/3O,EAAO+3O,EAAaA,EAAW/3O,KAAOpJ,EAAM3vB,MAAM+4B,KAItD,GAHIpJ,EAAM3vB,MAAM+4B,OAASA,GACrBpJ,EAAM6L,SAAS,CAAEzC,KAAMA,IAEvBpJ,EAAM0I,MAAQw4O,EAAc,CAC5B,IAAIxsK,EAAY,cAAclzF,OAAO0/P,EAAan7O,OAAQ,OAC1D/F,EAAM0I,KAAK13B,MAAMy3B,UAAYisE,CACjC,CACJ,EACA10E,EAAM6f,SAAW7f,EAAMxkB,MAAM+/B,WAC7Bvb,EAAM8zK,UAAY9zK,EAAMxkB,MAAM80B,YAC9B,IAAIlH,EAAOpJ,EAAMxkB,MAAMupB,QAAQqE,KAAKpJ,EAAMxkB,MAAM80B,YAAatQ,EAAMxkB,MAAM6W,KACrEwM,EAAQmB,EAAMxkB,MAAMupB,QAAQlG,MAAMmB,EAAMxkB,MAAM6W,IAAK2N,EAAMxkB,MAAMgX,KAInE,OAHAwN,EAAM3vB,MAAQ,CACV+4B,KAAOA,EAAOpJ,EAAMihP,QAAQ73O,EAAMvK,GAAS,EAAKuK,EAAO,GAEpDpJ,CACX,CAwDA,OA/HAuD,EAAUquO,EAAY9sO,GAwEtB7kB,OAAO6nB,eAAe8pO,EAAWp0O,UAAW,OAAQ,CAChDuK,IAAK,WACD,YAA2Bv3B,IAApB8sB,KAAK9hB,MAAM6tB,KACZ/L,KAAK9hB,MAAM6tB,KACXuoO,EAAWjrO,aAAa0C,IAClC,EACArB,YAAY,EACZC,cAAc,IAKlB2pO,EAAWp0O,UAAU8K,mBAAqB,SAAU+4O,EAAYC,QACjC9wQ,IAAvB8sB,KAAKkjP,eAA+BljP,KAAK0H,gBACzC1H,KAAK0H,eAAey7O,cAAcnjP,KAAKkjP,eAE3CljP,KAAKuiB,SAAWviB,KAAK9hB,MAAM+/B,WAC3Bje,KAAKw2K,UAAYx2K,KAAK9hB,MAAM80B,YAC5BhT,KAAKkjP,mBAAgBhwQ,CACzB,EACAohQ,EAAWp0O,UAAUnrB,OAAS,WAC1B,IAAI2tB,EAAQ1C,KACZA,KAAKkF,mBACL,IAAIke,EAAgBpjB,KAAKuiB,WAAaviB,KAAK9hB,MAAM+/B,WAC7CjL,GAAc0N,EAAAA,EAAAA,IAAY1gB,KAAK9hB,MAAM80B,YAAahT,KAAK9hB,MAAM6W,IAAKiL,KAAK9hB,MAAMgX,KAC7E4W,EAAQsX,EAAkCpjB,KAAK9hB,MAAMupB,QAAQqE,KAAKkH,EAAahT,KAAK9hB,MAAM6W,KAAlEiL,KAAKjtB,MAAM+4B,KACnCvK,EAAQvB,KAAK9hB,MAAMupB,QAAQlG,MAAMvB,KAAK9hB,MAAM6W,IAAKiL,KAAK9hB,MAAMgX,KAC5D6W,EAAO/L,KAAK2jP,QAAQ73O,EAAMvK,GAC1Bqd,EAAW5e,KAAK9hB,MAAMupB,QAAQw8O,UAAUjkP,KAAK9hB,MAAM6W,IAAK+W,GACxD0S,EAAQxe,KAAK9hB,MAAMupB,QAAQ8b,UAAU3E,EAAU7S,GAC/C/L,KAAK9hB,MAAM+/B,aAAeje,KAAKuiB,WAC3Blf,EAAAA,EAAAA,GAAQ2P,EAAahT,KAAKw2K,aAC9Bx2K,KAAKkjP,cAAgBljP,KAAK9hB,MAAMupB,QAAQqE,KAAKkH,EAAahT,KAAK9hB,MAAM6W,MAEzE,IAAImwP,EAAkB3xQ,EAAAA,cAAoBo4B,EAAAA,EAAgB,CAAEG,KAAMA,EAAMC,KAAM/L,KAAK+L,KAAMxK,MAAOA,EAAOuD,WAAY9E,KAAK8E,WAAY6C,UAAW3H,KAAK2H,UAAWC,aAAc5H,KAAK4H,aAAc08O,SAAUtkP,KAAK9hB,MAAMomQ,SAAU14O,oBAAqB5L,KAAKykP,cAAe54O,eAAgB7L,KAAKuJ,mBAAoByF,QAAShP,KAAKijP,0BAA2B13O,SAAUvL,KAAK9hB,MAAMqtB,UAC3Wh4B,EAAAA,cAAoB,KAAM,CAAEQ,IAAK,SAAUy3B,GAAM9I,EAAM0I,KAAOI,CAAI,EAAG33B,UAAW,WAAa2qC,EAAMv+B,KAAI,SAAUsf,GAAQ,OAAQmD,EAAMgiP,oBAAoBnlP,EAAQ,MACvK,OAAQhsB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,yBAC5CN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,oCACzCmsB,KAAK9hB,MAAM2qB,IAAI7D,aAAekgP,EAAiB,KACvD,EACA5Q,EAAWp0O,UAAUyjP,QAAU,SAAU73O,EAAMvK,GAC3C,OAAOzM,KAAKC,IAAIwM,EAAQuK,EAAM9L,KAAK+L,KACvC,EACAuoO,EAAWtoO,UAAY,CACnBiS,WAAYhS,EAAAA,OAAiBoY,WAC7BrR,YAAa/G,EAAAA,WAAqBhvB,MAAMonC,WACxCnvB,IAAK+W,EAAAA,WAAqBhvB,MAAMonC,WAChCtvB,IAAKkX,EAAAA,WAAqBhvB,MAAMonC,WAChC7+B,SAAUymB,EAAAA,KACVF,KAAME,EAAAA,OACNV,SAAUU,EAAAA,QAEdqoO,EAAWjrO,aAAe,CACtB0C,KAlIU,IAoIPuoO,CACX,CAjIgC,CAiI9B/gQ,EAAAA,qBC/JEsxB,EAA4B,WAC5B,SAASA,IAEL7E,KAAK+kP,eAAiB,EACtB/kP,KAAK0jP,aAAe,EACpB1jP,KAAKilP,gBAAkB,EACvBjlP,KAAKmlP,eAAiB,EACtBnlP,KAAKolP,iBAAmB,EACxBplP,KAAKqlP,kBAAoB,EACzBrlP,KAAKglP,qBAAuB,EAC5BhlP,KAAKwjP,wBAA0B,EAC/BxjP,KAAKyjP,4BAA8B,EAEnCzjP,KAAKslP,cAAgB,EACrBtlP,KAAKulP,eAAiB,EACtBvlP,KAAKwlP,cAAgB,EACrBxlP,KAAKylP,gBAAkB,EACvBzlP,KAAK0lP,iBAAmB,EACxB1lP,KAAK2lP,uBAAyB,EAC9B3lP,KAAKgF,cAAe,EACpBhF,KAAK2F,cAAgB,IACzB,CA0JA,OAzJAd,EAAW3E,UAAU+E,cAAgB,gBACL/xB,IAAxB8sB,KAAK+kP,gBAGT/kP,KAAKkF,kBACT,EACAL,EAAW3E,UAAUgF,iBAAmB,SAAUC,GAC9C,IAAIzC,EAAQ1C,KACZ,GAAKoF,EAAAA,EAAL,CAGA,IAAIC,GAAMC,EAAAA,EAAAA,IAAiB,OACvBE,GAAKF,EAAAA,EAAAA,IAAiB,MACtBG,GAAKH,EAAAA,EAAAA,IAAiB,MACtBiwK,GAAKjwK,EAAAA,EAAAA,IAAiB,MACtBkwK,GAAKlwK,EAAAA,EAAAA,IAAiB,MACtBo0E,GAAKp0E,EAAAA,EAAAA,IAAiB,MACtBgwK,GAAQhwK,EAAAA,EAAAA,IAAiB,SACzB+/E,GAAQ//E,EAAAA,EAAAA,IAAiB,SACzB6/E,GAAQ7/E,EAAAA,EAAAA,IAAiB,SACzBsgP,EAAc,WAAc,OAAQvgP,EAAI,qYAAgZ,6BAAgC,EAMxdgiN,EAAS,SAAUhpJ,EAAOhC,GAAU,OAAO,IAAIrkE,MAAMqmE,GAAOqe,KAAK,KAAKz8F,IAAIo8E,EAAS,EAOnFwwK,EAAa,SAAUp5P,GAAY,OAAO4xB,EAAI5xB,EAAU,yBAA2B,EAWnFoyQ,EAAkB,WAClB,IAAIC,EACJ,OAAO,WACH,OAAK1gP,EAAAA,GAGA0gP,IACDA,EAAazgP,EAAI,CAACwnO,EAAW,CAACrnO,EAAG,CAACC,EAAG,yBAA0B,wBAAyB,CAAE/V,KAAM,MAAO/V,SAAU,cAE9GmsQ,GALI,IAMf,CACJ,CAXsB,GAYlBC,EAAc,SAAUtuQ,EAAI5D,EAAWmyQ,GACvC,IACIC,EADAz3J,EAAQ/2G,EAAG+2G,MAAO5zF,EAAOnjB,EAAGmjB,KAEhC,OAAO,WACH,OAAKwK,EAAAA,GAGA6gP,IACDA,EA9BD,SAAU9qG,EAAgBtnK,EAAWmyQ,GAAoB,OAAQ3gP,EAAI2gP,EAC1E,CACEJ,IAfoCzgK,EAAM,CAC9CE,EAAM,CACF3L,EAAG,CAAC87F,EAAG,KAAM,kBAAmB,kBACjC,qBACJ,wCAaKq3D,EAAW,CAAC1xF,EAAgBA,KAE9B,CACEyqG,IACA/Y,EAAW,CAAC1xF,EAAgBA,KAC7BtnK,EAAW,CAAE6b,KAAM,WAAY/V,SAAU,YAAgB,CAqBtC+nC,CArCZ,SAAU9mB,EAAM4zF,GAE1B,YADc,IAAVA,IAAoBA,EAAQ,GACxBrJ,EAAM,CACVmwF,EAAM,CAAC57F,EAAG,CAAC67F,EAAG,IAAK,0BAA0BrxL,OAAOmjO,EAAOzsN,GAAM,WAAc,OAAO8+E,EAAG2tI,EAAO74H,GAAO,SAAUzhG,GAAK,OAAOwoL,EAAG,wBAA0BrxL,OAAO6I,EAAG,WAAY,gBAAkB,IAAI,gBAAkB,KAAK,qBAC9N,mBACP,CAgC+B6sC,CAAQh/B,EAAM4zF,GAAQ36G,EAAWmyQ,IAEjDC,GALI,IAMf,CACJ,EACIC,EAAgB,SAAU79O,GAAW,OAAOA,EAAQzC,cAAc,gBAAkB,EACpFqT,EAAa,SAAU5Q,GACvB,IAAI89O,EAAoBD,EAAc79O,GAEtC,OADA89O,EAAkBtyQ,UAAY,GAAGqQ,OAAOiiQ,EAAkBtyQ,UAAW,4BAC9Dw0B,CACX,EACI+9O,EAAYL,EAAY,CAAEv3J,MAAO,EAAG5zF,KAAM,GAAK,iDAAiD,GAChGyrP,EAAWN,EAAY,CAAEv3J,MAAO,EAAG5zF,KAAM,GAAK,uCAAuC,GACrF0rP,EAAaP,EAAY,CAAEv3J,MAAO,EAAG5zF,KAAM,GAAK,yCAAyC,GAIzFvf,EAAS,SAAUgtB,GAAW,OAAQyrD,WAAW/6E,OAAO46C,iBAAiBtrB,GAAShtB,SAAWgtB,EAAQtC,YAAe,EACpH1rB,EAAQ,SAAUguB,GAClB,IAAIi2E,EAASvlG,OAAO46C,iBAAiBtrB,GAIrC,OAHeyrD,WAAWwqB,EAAOjkG,OAC3By5E,WAAWwqB,EAAO1rF,aAClBkhE,WAAWwqB,EAAOh7F,eACL+kB,EAAQm9H,WAC/B,EACI+gH,EAAU,SAAUl+O,GAAW,OAAOA,EAAQzC,cAAc,QAAU,EAC1E5F,KAAKgF,cAAe,EAChBG,IACAnF,KAAK2F,cAAgBR,GAEzBnF,KAAKgzB,MAAMozN,KAAa,SAAUjrG,GAC9B,IAAI8qG,EAAcM,EAAQprG,GAC1Bz4I,EAAMqiP,eAAiB1pQ,EAAO8/J,GAC9Bz4I,EAAMuiP,gBAAkB5pQ,EAAO4qQ,GAC/BvjP,EAAMghP,aAAeroQ,EAAO4qQ,EAAYxyQ,SAAS,IACjDivB,EAAM8gP,wBAA0BnoQ,EAAO6qQ,EAAc/qG,GACzD,IACAn7I,KAAKgzB,MAvBoC/Z,EAAWmtO,MAuBxB,SAAUjrG,GAClC,IAAI8qG,EAAcM,EAAQprG,GAC1Bz4I,EAAM4iP,cAAgBjrQ,EAAM8gK,GAC5Bz4I,EAAM6iP,eAAiBlrQ,EAAM4rQ,GAC7BvjP,EAAMijP,uBAAyBtrQ,EAAM6rQ,EAAc/qG,GACvD,IACAn7I,KAAKgzB,MAAMqzN,KAAY,SAAUlrG,GAC7Bz4I,EAAMyiP,eAAiB9pQ,EAAOkrQ,EAAQprG,IACtCz4I,EAAM+gP,4BAA8BpoQ,EAAO6qQ,EAAc/qG,GAC7D,IACAn7I,KAAKgzB,MAhCmC/Z,EAAWotO,MAgCxB,SAAUlrG,GACjCz4I,EAAM8iP,cAAgBnrQ,EAAMksQ,EAAQprG,GACxC,IACAn7I,KAAKgzB,MAAMszN,KAAc,SAAUnrG,GAC/Bz4I,EAAM0iP,iBAAmB/pQ,EAAOkrQ,EAAQprG,IACxCz4I,EAAM2iP,kBAAoB3iP,EAAM0iP,gBACpC,IACAplP,KAAKgzB,MAtCqC/Z,EAAWqtO,MAsCxB,SAAUnrG,GACnCz4I,EAAM+iP,gBAAkBprQ,EAAMksQ,EAAQprG,IACtCz4I,EAAMgjP,iBAAmBhjP,EAAM+iP,eACnC,IACAzlP,KAAKgzB,MAAM6yN,KAAkB,SAAU1qG,GACnCz4I,EAAMsiP,qBAAuB3pQ,EAAO8/J,EAAev1I,cAAc,MACrE,GAlHA,CAmHJ,EACAf,EAAW3E,UAAU6iP,WAAa,SAAUyD,GACxC,OAAOxmP,KAAKymP,cAAcD,EAAU,SACxC,EACA3hP,EAAW3E,UAAUwmP,UAAY,SAAUF,GACvC,OAAOxmP,KAAKymP,cAAcD,EAAU,QACxC,EACA3hP,EAAW3E,UAAUumP,cAAgB,SAAUD,EAAUG,GACrD,IAAIC,EAAyB,WAAdD,EAAyB,aAAe,YACvD,OAAQH,GACJ,KAAKtoO,EAAAA,EAAiBx3B,MAClB,OAAOsZ,KAAK,QAAQ9b,OAAO0iQ,IAC/B,KAAK1oO,EAAAA,EAAiBz3B,KAClB,OAAOuZ,KAAK,OAAO9b,OAAO0iQ,IAC9B,KAAK1oO,EAAAA,EAAiBI,OAClB,OAAOte,KAAK,SAAS9b,OAAO0iQ,IAChC,KAAK1oO,EAAAA,EAAiBK,QAClB,OAAOve,KAAK,UAAU9b,OAAO0iQ,IACjC,QACI,OAAO,EAEnB,EACA/hP,EAAW3E,UAAU8yB,MAAQ,SAAUmoH,EAAgB9oJ,GACnD,IAAIsT,EAAgB3F,KAAK2F,eAAiBnX,SAASa,KAC/Cw3P,EAAkBlhP,EAAcG,YAAYq1I,GAChD9oJ,EAAOw0P,GACPlhP,EAAcK,YAAY6gP,EAC9B,EACOhiP,CACX,CAhLgC,uBCD5BiiP,EAAmC,WACnC,SAASA,EAAkBj+O,GACvB7I,KAAK6I,IAAMA,EACX7I,KAAK+mP,kBAAoB,KACzB/mP,KAAKgnP,iBAAmB,KACxBhnP,KAAKsuB,UAAY,KACjBtuB,KAAK0hB,KAAO,KACZ1hB,KAAKinP,eAAgB,EACrBjnP,KAAKknP,aAAc,CACvB,CAyCA,OAxCAJ,EAAkB5mP,UAAUQ,UAAY,SAAUud,GAC9C,IAAIkpO,EAAYryP,KAAKI,IAAI8K,KAAK6I,IAAIk6O,WAAW9kO,GAAcje,KAAK6I,IAAIm8O,qBAAsB,GAC1FhlP,KAAK+mP,kBAjBW,SAAUI,GAAa,OAAO,SAAUh9L,GAAK,OAAOr1D,KAAK4M,MAAMyoD,EAAIg9L,EAAY,CAAG,CAiBzEJ,CAAkBI,GAC3CnnP,KAAKgnP,iBAjBU,SAAUG,GAAa,OAAO,SAAUh9L,GAAK,OAAOA,EAAIg9L,CAAW,CAAG,CAiB7DH,CAAiBG,EAC7C,EACAL,EAAkB5mP,UAAUs6I,KAAO,SAAUlsH,EAAW5M,EAAMhoC,GAC1D,GAAK40C,GAAc5M,EAAnB,CAKA,GAFA1hB,KAAKsuB,UAAYA,EACjBtuB,KAAK0hB,KAAOA,EACRhoC,EAAE0gB,SAAW4F,KAAKsuB,UAAUjmB,QAAS,CACrC,GAAIrI,KAAKinP,cAEL,YADAjnP,KAAKinP,eAAgB,GAGzBjnP,KAAKknP,aAAc,EACnBlnP,KAAKonP,gBAAgBpnP,KAAKsuB,UAAUjmB,QACxC,CACA,GAAI3uB,EAAE0gB,SAAW4F,KAAK0hB,KAAKrZ,QAAS,CAChC,GAAIrI,KAAKknP,YAEL,YADAlnP,KAAKknP,aAAc,GAGvBlnP,KAAKinP,eAAgB,EACrBjnP,KAAKonP,gBAAgBpnP,KAAK0hB,KAAKrZ,QACnC,CAlBA,CAmBJ,EACAy+O,EAAkB5mP,UAAUknP,gBAAkB,SAAUC,GACpD,IAAItxQ,EAAYiqB,KAAKsnP,iBAAiBD,GAClCznQ,EAAYogB,KAAKunP,gBAAgBxxQ,EAAWsxQ,EAAgBznQ,WAChE7J,EAAUyxQ,SAAS5nQ,EACvB,EACAknQ,EAAkB5mP,UAAUonP,iBAAmB,SAAUnB,GACrD,OAAOnmP,KAAKsuB,UAAUjmB,UAAY89O,EAAoBnmP,KAAK0hB,KAAO1hB,KAAKsuB,SAC3E,EACAw4N,EAAkB5mP,UAAUqnP,gBAAkB,SAAUxxQ,EAAW6J,GAC/D,IAAI6nQ,EAAW1xQ,IAAciqB,KAAKsuB,UAAYtuB,KAAK+mP,kBAAoB/mP,KAAKgnP,iBAC5E,OAAOS,EAAWA,EAAS7nQ,GAAa,CAC5C,EACOknQ,CACX,CAnDuC,GCLnC7gP,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA0BzCqmP,EAAqB,SAAUv9L,GAAK,OAAOA,EAAIA,EAAEziD,eAAiB,IAAM,EACxEud,EAAiB,SAAUlwB,EAAKG,EAAKutB,EAAYklO,GAGjD,YAFY,IAAR5yP,IAAkBA,EAAM6yP,EAAuBv+O,aAAatU,UACpD,IAARG,IAAkBA,EAAM0yP,EAAuBv+O,aAAanU,UAC3ChiB,IAAdy0Q,EACa,OAAdA,IAAsBrrO,EAAAA,EAAAA,KAAUpa,EAAAA,EAAAA,GAAQylP,GAAY5yP,EAAKG,GACrDyyP,EACA,KACW,OAAfllO,IAAuBnG,EAAAA,EAAAA,KAAUpa,EAAAA,EAAAA,GAAQugB,GAAa1tB,EAAKG,GACvDutB,EACA,IACd,EAEImlO,EAAwC,SAAUpgP,GAElD,SAASogP,EAAuB1pQ,GAC5B,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KACxC0C,EAAMmlP,kBAAoB,KAC1BnlP,EAAMsQ,YAAc,KACpBtQ,EAAMic,SAAUxK,EAAAA,EAAAA,KAChBzR,EAAMtvB,IAAK+gC,EAAAA,EAAAA,KACXzR,EAAM4xO,WAAa,KACnB5xO,EAAMod,iBAAmB,KACzBpd,EAAM/iB,SAAW,KACjB+iB,EAAM3C,KAAO,KACb2C,EAAM+E,QAAU,KAChB/E,EAAMya,UAAW,EACjBza,EAAMolP,qBAAsB,EAI5BplP,EAAMuF,MAAQ,WACNvF,EAAM/iB,UACN+iB,EAAM/iB,SAASsoB,OAEvB,EACAvF,EAAMsgP,aAAe,WAAc,OAAOtgP,EAAMolP,mBAAqB,EACrEplP,EAAMksO,aAAe,SAAU16P,GACtBwuB,EAAMmlP,mBAGXnlP,EAAMmlP,kBAAkBrtG,KAAKktG,EAAmBhlP,EAAM4xO,YAAaoT,EAAmBhlP,EAAMod,kBAAmB5rC,EACnH,EACAwuB,EAAMqlP,uBAAyB,SAAU7zQ,GACrC,IAAIwuB,EAAMxkB,MAAMhE,SAAhB,CAGAwoB,EAAMolP,qBAAsB,EAC5B,IAAI90O,GAActT,EAAAA,EAAAA,GAAUxrB,EAAMuR,OAClCid,EAAM6L,SAAS,CAAEyE,YAAaA,GAH9B,CAIJ,EACAtQ,EAAM+e,iBAAmB,SAAUhqC,GAC/B,IAAIiqC,EAAOjqC,EAAGiqC,KACVhf,EAAMmlP,mBACNnlP,EAAMmlP,kBAAkBnnP,UAAUghB,GAEtChf,EAAM6L,SAAS,CAAE0P,WAAYyD,GACjC,EACAhf,EAAMob,iBAAmB,SAAU5pC,GAC/B,IAAIuR,GAAQia,EAAAA,EAAAA,GAAUxrB,EAAMuR,OACxButB,GAActT,EAAAA,EAAAA,GAAUxrB,EAAMuR,OAC9Bk8B,EAAkBjf,EAAMgc,IAAIkD,YAAYlf,EAAM3vB,MAAMkrC,YACxD,IAAIvb,EAAMxkB,MAAMhE,SAAhB,CAGA,GAAIynC,EAAiB,CACjB,IAAIztC,EAAM6pC,aAMN,OAFArb,EAAMgc,IAAImD,SAASnf,EAAM3vB,MAAMkrC,WAAY/pC,EAAMk+B,qBACjD1P,EAAM6L,SAAS,CAAEyE,YAAaA,IAJ9BtQ,EAAMgc,IAAIoD,aAAapf,EAAM3vB,MAAMkrC,WAO3C,CACAvb,EAAM6L,SAAS,CAAE9oB,MAAOA,EAAOutB,YAAaA,IAC5CtQ,EAAMiT,oBAAsBlwB,EAC5B,IAAID,EAAWkd,EAAMxkB,MAAMsH,SAC3B,GAAIA,EAAU,CACV,IAAI0iB,EAAO,CACPkK,eAAgBl+B,EAAMk+B,eACtBD,YAAaj+B,EAAMi+B,YACnB1sB,MAAOA,EACP2U,OAAQsI,GAEZld,EAASihB,UAAKvzB,EAAWg1B,EAC7B,CACAxF,EAAMiT,yBAAsBziC,CAvB5B,CAwBJ,EACAwvB,EAAMiH,YAAc,SAAUz1B,GAE1B,GADAwuB,EAAMya,UAAW,EACZza,EAAMod,iBAAX,CAGApd,EAAMod,iBAAiB1C,kBACvB,IAAIxT,EAAUlH,EAAMxkB,MAAM0rB,QACtBA,GACAA,EAAQnD,UAAKvzB,EAAWgB,EAJ5B,CAMJ,EACAwuB,EAAMmH,WAAa,SAAU31B,GAEzB,GADAwuB,EAAMya,UAAW,EACZza,EAAMod,iBAAX,CAGApd,EAAMod,iBAAiBpC,iBACvB,IAAI5T,EAASpH,EAAMxkB,MAAM4rB,OACrBA,GACAA,EAAOrD,UAAKvzB,EAAWgB,EAJ3B,CAMJ,EACAwuB,EAAM0H,cAAgB,SAAUl2B,GAC5B,IAAIm2B,EAAUn2B,EAAMm2B,QACpB,GAAK3H,EAAMsQ,aAAgBtQ,EAAM+E,QAAjC,CAGA,GAAI4C,IAAYtD,EAAAA,EAAK8L,MAAO,CACxB,GAAoB,OAAhBnQ,EAAMjd,QACHouB,EAAAA,EAAAA,GAAYnR,EAAMsQ,YAAatQ,EAAMjd,OAAQ,CAChD,IAAIm5B,GAAW8B,EAAAA,EAAAA,IAAYhe,EAAMsQ,YAAatQ,EAAM3N,IAAK2N,EAAMxN,KAC/DwyP,EAAmBhlP,EAAMod,kBAAkBqjO,cAAczgP,EAAM+E,QAAQqE,KAAK8S,EAAUlc,EAAM3N,KAChG,CACA,IAAImT,EAAO,CACPkK,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB1sB,MAAOid,EAAMsQ,YACb5Y,OAAQsI,GAEZA,EAAMob,iBAAiB5V,EAC3B,KACK,CACD,IAAI9H,GAAYsgB,EAAAA,EAAAA,IAAYhe,EAAM2Q,WAAWjC,KAAK1O,EAAMsQ,YAAatQ,EAAM2Q,WAAWhhB,OAAOne,GAAQwuB,EAAM3vB,MAAMkrC,WAAYvb,EAAM+E,QAASvzB,GAAQwuB,EAAM3N,IAAK2N,EAAMxN,KACrK,IAAI2e,EAAAA,EAAAA,GAAYnR,EAAMsQ,YAAa5S,GAC/B,OAEJsC,EAAM6L,SAAS,CAAEyE,YAAa5S,GAClC,CACAlsB,EAAM+gB,gBAtBN,CAuBJ,EACAyN,EAAMme,gBAAkB,SAAU3sC,GAC9BA,EAAM+gB,gBACV,EACAyN,EAAMoe,YAAc,SAAUlgB,GACtB8B,EAAM/iB,UACN+iB,EAAM/iB,SAASsoB,MAAM,CAAEkC,eAAe,GAE9C,GACA+L,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAI1wB,EAAQw/B,EAAeviB,EAAM3N,IAAK2N,EAAMxN,IAAKwN,EAAMxkB,MAAM3H,cAAgBqxQ,EAAuBv+O,aAAa9yB,aAAcmsB,EAAMxkB,MAAMuH,OAY3I,OAXAid,EAAM3vB,MAAQ,CACV0S,MAAOA,EACPw4B,YAAYgE,EAAAA,EAAAA,IAAY/D,EAAAA,EAAiBhgC,EAAMgkC,mBAAoBxf,EAAMyf,WAAYzf,EAAM0f,SAC3FpP,aAAa0N,EAAAA,EAAAA,IAAYxiC,EAAM80B,aACxBvtB,IACAquB,EAAAA,EAAAA,MAAYpR,EAAM3N,IAAK2N,EAAMxN,MAExCwN,EAAMmG,IAAM,IAAIhE,EAChBnC,EAAMgc,IAAM,IAAI2D,EAAAA,EAAe3f,EAAM+e,kBACrC/e,EAAM2Q,WAAa,IAAIiP,EAAAA,EAAkB5f,EAAMgc,KAC/Chc,EAAMsnK,SAAWvkL,EACVid,CACX,CAqLA,OAxUAuD,EAAU2hP,EAAwBpgP,GAoJlC7kB,OAAO6nB,eAAeo9O,EAAuB1nP,UAAW,UAAW,CAI/DuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo9O,EAAuB1nP,UAAW,QAAS,CAI7DuK,IAAK,WACD,YAAoCv3B,IAA7B8sB,KAAK2V,oBACN3V,KAAK2V,yBACgBziC,IAArB8sB,KAAK9hB,MAAMuH,MACPua,KAAK9hB,MAAMuH,MACXua,KAAKjtB,MAAM0S,KACzB,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo9O,EAAuB1nP,UAAW,MAAO,CAC3DuK,IAAK,WACD,OAAOvI,EAAAA,EAAAA,QAA2BhvB,IAAnB8sB,KAAK9hB,MAAM6W,IACpBiL,KAAK9hB,MAAM6W,IACX6yP,EAAuBv+O,aAAatU,IAC9C,EACA2V,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo9O,EAAuB1nP,UAAW,MAAO,CAC3DuK,IAAK,WACD,OAAOvI,EAAAA,EAAAA,QAA2BhvB,IAAnB8sB,KAAK9hB,MAAMgX,IACpB8K,KAAK9hB,MAAMgX,IACX0yP,EAAuBv+O,aAAanU,IAC9C,EACAwV,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo9O,EAAuB1nP,UAAW,aAAc,CAClEuK,IAAK,WACD,OAAOyT,EAAAA,OAA2ChrC,IAA1B8sB,KAAK9hB,MAAMikC,WAC7BniB,KAAK9hB,MAAMikC,WACXylO,EAAuBv+O,aAAa8Y,WAC9C,EACAzX,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo9O,EAAuB1nP,UAAW,UAAW,CAC/DuK,IAAK,WACD,OAAOyT,EAAAA,OAAwChrC,IAAvB8sB,KAAK9hB,MAAMkkC,QAC7BpiB,KAAK9hB,MAAMkkC,QACXwlO,EAAuBv+O,aAAa+Y,QAC9C,EACA1X,YAAY,EACZC,cAAc,IAKlBi9O,EAAuB1nP,UAAU4K,kBAAoB,WACjD,IAAIpI,EAAQ1C,KAEZmI,QAAQC,UAAU3zB,MAAK,YACnB2gQ,EAAAA,EAAAA,KACK1yO,EAAM/iB,WAGX+iB,EAAMmG,IAAI3D,iBAAiBxC,EAAM/iB,UACjC+iB,EAAMmlP,kBAAoB,IAAIf,EAAkBpkP,EAAMmG,KACtDnG,EAAMmlP,kBAAkBnnP,UAAUgC,EAAM3vB,MAAMkrC,YAC9Cvb,EAAMqI,cACV,GACJ,EAIA68O,EAAuB1nP,UAAU8K,mBAAqB,SAAUpK,EAAGmlL,IAC/DqvD,EAAAA,EAAAA,KACIrvD,EAAU9nK,aAAeje,KAAKjtB,MAAMkrC,YAAcje,KAAK6nP,mBACvD7nP,KAAK6nP,kBAAkBnnP,UAAUV,KAAKjtB,MAAMkrC,YAE5Cje,KAAK8f,mBACJ9f,KAAKmd,SAAWnd,KAAK8f,iBAAiB1C,gBAAkBpd,KAAK8f,iBAAiBpC,kBAEnF1d,KAAK8nP,qBAAsB,EAC3B9nP,KAAKgqK,SAAWhqK,KAAKva,KACzB,EAIAmiQ,EAAuB1nP,UAAUnrB,OAAS,WACtC,IAAI2tB,EAAQ1C,KACRA,KAAK9hB,MAAMxL,MACXstB,KAAK9hB,MAAMxL,KAAKstB,MAEpB,IAAIgoP,EAAgC,OAAfhoP,KAAKva,OAAoC,OAAlBua,KAAKgqK,WAC1Cn2J,EAAAA,EAAAA,GAAY7T,KAAKva,MAAOua,KAAKgqK,UAC9BhqK,KAAKva,QAAUua,KAAKgqK,SACtB/rJ,GAAagE,EAAAA,EAAAA,IAAYjiB,KAAKjtB,MAAMkrC,WAAYC,EAAAA,OAA2ChrC,IAA1B8sB,KAAK9hB,MAAMikC,WAC1EniB,KAAK9hB,MAAMikC,WACXylO,EAAuBv+O,aAAa8Y,YAAajE,EAAAA,OAAwChrC,IAAvB8sB,KAAK9hB,MAAMkkC,QAC7EpiB,KAAK9hB,MAAMkkC,QACXwlO,EAAuBv+O,aAAa+Y,UACtC38B,EAAQw/B,EAAejlB,KAAKjL,IAAKiL,KAAK9K,IAAK8K,KAAKva,MAAOua,KAAKva,OAC5DwiQ,EAAiBxiQ,GAAQyc,EAAAA,EAAAA,GAAQzc,GAAS,KAC9Cua,KAAKgT,aAAc9Q,EAAAA,EAAAA,IAAQwe,EAAAA,EAAAA,IAAYsnO,GAA4B,OAAVviQ,EACnDA,EACAua,KAAKjtB,MAAMigC,YAAahT,KAAKjL,IAAKiL,KAAK9K,MAC7C8K,KAAKD,MAAOmL,EAAAA,EAAAA,IAAmBlL,MAC/BA,KAAK0e,IAAIhe,UAAUV,KAAKmiB,WAAYniB,KAAKoiB,SACzCpiB,KAAKyH,QAAUzH,KAAK0e,IAAIjX,QAAQwW,EAAYje,KAAKD,MACjD,IAAItoB,EAAKuoB,KAAK9hB,MAAM2sB,aAAcA,OAAsB,IAAPpzB,EAAgBmkD,OAAOk4B,WAAWvgF,EAAAA,SAAiB,GAAKkE,EACrG2mC,GAAiBhP,EAAAA,EAAAA,GAAW,0CAA2C,CACvE,aAAcpP,KAAK9hB,MAAMhE,SACzB,gBAAiB8lB,KAAK9hB,MAAM60B,WAC5B,gBAAiB/S,KAAK9hB,MAAM4qB,YAC7B9I,KAAK9hB,MAAMrK,WACVq0Q,EAAe,CAACloP,KAAK9hB,MAAMm1B,YAAe9/B,EAAAA,cAAoB+gQ,EAAY,CAAEhpO,IAAK,EAAGv3B,IAAK,SAAUy3B,GAAM9I,EAAM4xO,WAAa9oO,CAAI,EAAGyS,WAAYje,KAAKjtB,MAAMkrC,WAAYjL,YAAahT,KAAKgT,YAAaje,IAAKiL,KAAKjL,IAAKG,IAAK8K,KAAK9K,IAAKovP,SAAUtkP,KAAK4uO,aAAcppP,SAAUwa,KAAK+nP,uBAAwBtgP,QAASzH,KAAKyH,QAASoB,IAAK7I,KAAK6I,IAAKi8O,eAAgB9kP,KAAK9hB,MAAM4mQ,eAAgBv5O,SAAUvL,KAAK9hB,MAAMqtB,WAAeh4B,EAAAA,cAAoBqvQ,EAAU,CAAEt3O,IAAK,EAAGv3B,IAAK,SAAUy3B,GAAM9I,EAAMod,iBAAmBtU,CAAI,EAAGyS,WAAYje,KAAKjtB,MAAMkrC,WAAYjL,YAAahT,KAAKgT,YAAaje,IAAKiL,KAAKjL,IAAKG,IAAK8K,KAAK9K,IAAKwpB,IAAK1e,KAAK0e,IAAKskO,aAAchjP,KAAKgjP,aAAcsB,SAAUtkP,KAAK4uO,aAAcnnO,QAASzH,KAAKyH,QAASzmB,KAAMgf,KAAK9hB,MAAM8C,KAAM+9B,SAAU/e,KAAK9hB,MAAM6gC,SAAUlW,IAAK7I,KAAK6I,IAAKgC,aAAcA,EAAcmT,gBAAiBhe,KAAK9hB,MAAM60B,WAAYvtB,SAAUwa,KAAK8d,iBAAkBr4B,MAAOwiQ,EAAgBtpO,QAAS3e,KAAK2e,QAASiF,YAAa5jB,KAAK9hB,MAAM0lC,YAAarY,SAAUvL,KAAK9hB,MAAMqtB,YACn9B,OAAQh4B,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAUy3B,GAAM9I,EAAM/iB,SAAW6rB,CAAI,EAAG33B,UAAWuqC,EAAgBhrC,GAAI4sB,KAAK9hB,MAAM9K,IAAM4sB,KAAK5sB,GAAI,kBAAmB4sB,KAAK9hB,MAAMs5B,eAAgB,mBAAoBxX,KAAK9hB,MAAMu5B,gBAAiB,gBAAiBzX,KAAK9hB,MAAMhE,SAAUqxB,SAAWvL,KAAK9hB,MAAMhE,cAAsChH,EAA3B8sB,KAAK9hB,MAAMqtB,UAAY,EAAe3B,QAAS5J,KAAK2J,YAAaG,OAAQ9J,KAAK6J,WAAY4B,UAAWzL,KAAKoK,cAAeyF,YAAa7P,KAAK6gB,gBAAiBxrC,QAAS2qB,KAAK8gB,aAAeonO,EAC7e,EAIAN,EAAuB9tO,YAAc,WAIrC8tO,EAAuB57O,UAAY,CAC/Bn4B,UAAWo4B,EAAAA,OACXiW,kBAAmBjW,EAAAA,MAAgB,CAAC,QAAS,OAAQ,SAAU,YAC/D11B,aAAc01B,EAAAA,WAAqBhvB,MACnC/C,SAAU+xB,EAAAA,KACV+G,YAAa/G,EAAAA,WAAqBhvB,MAClC7J,GAAI64B,EAAAA,OACJuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjB/W,IAAK+W,EAAAA,WAAqBhvB,MAC1B8X,IAAKkX,EAAAA,WAAqBhvB,MAC1Bo2B,WAAYpH,EAAAA,KACZpB,aAAcoB,EAAAA,KACdnC,OAAQmC,EAAAA,KACRzmB,SAAUymB,EAAAA,KACVrC,QAASqC,EAAAA,KACTV,SAAUU,EAAAA,OACVxmB,MAAOwmB,EAAAA,WAAqBhvB,MAC5B81B,WAAY9G,EAAAA,KACZmW,QAAS,SAAUlkC,EAAOguB,EAAUC,GAChC,IAAIC,EAAOluB,EAAMguB,GACbiW,EAAajkC,EAAMikC,WACvB,OAAI/V,GAAQ+V,GAAcjE,EAAAA,EAAiB9R,GAAQ8R,EAAAA,EAAiBiE,GACzD,IAAI9V,MAAM,kBAAkBnoB,OAAOgoB,EAAU,gBAAgBhoB,OAAOioB,EAAe,2BAA2BjoB,OAAOgoB,EAAU,+DAEnI,IACX,EACAiW,WAAY,SAAUjkC,EAAOguB,EAAUC,GACnC,IAAIC,EAAOluB,EAAMguB,GACbkW,EAAUlkC,EAAMkkC,QACpB,OAAIhW,GAAQgW,GAAWlE,EAAAA,EAAiB9R,GAAQ8R,EAAAA,EAAiBkE,GACtD,IAAI/V,MAAM,kBAAkBnoB,OAAOgoB,EAAU,gBAAgBhoB,OAAOioB,EAAe,2BAA2BjoB,OAAOgoB,EAAU,2DAEnI,IACX,GAKJ07O,EAAuBv+O,aAAe,CAClCnvB,UAAU,EACV6a,IAAKolB,EAAAA,GACLjlB,IAAKglB,EAAAA,GACL7G,YAAY,EACZ6O,kBAAmB,QACnB3rC,aAAc,KACd6rC,QAAS,UACTD,WAAY,SAETylO,CACX,CA1U4C,CA0U1Cr0Q,EAAAA,WAQS40Q,GAAuB7tO,EAAAA,EAAAA,KAQvB9G,GAAWgH,EAAAA,EAAAA,GAAiB2tO,EAAsBP,GAC7Dp0O,EAASsG,YAAc,sBACvBvN,EAAAA,EAAAA,IAAgBq7O,uGCnYZ3hP,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EASIwrQ,EAAqC,SAAU5gP,GAE/C,SAAS4gP,IACL,OAAkB,OAAX5gP,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CASA,OAZAiG,EAAUmiP,EAAqB5gP,GAQ/B4gP,EAAoBloP,UAAUnrB,OAAS,WACnC,IAAI0C,EAAKuoB,KAAK9hB,MAAuBA,GAATzG,EAAGiqC,KAAclnB,EAAO/iB,EAAI,CAAC,UACzD,OAAQlE,EAAAA,cAAoB4B,EAAAA,EAAQ0f,EAAS,CAAErb,KAAM,SAAU2K,SAAU,QAAUjG,GAAQ8hB,KAAK9hB,MAAMzK,SAC1G,EACO20Q,CACX,CAdyC,CAcvC70Q,EAAAA,yBC3DE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAUI+W,EAAwB,SAAUjc,GAElC,SAASic,IACL,IAAI/gB,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAmBhE,OAlBA0C,EAAM2lP,SAAW,WACb,IAAK3lP,EAAMxkB,MAAMwlC,YACb,MAAO,GAEX,IAAI3X,EAAOrJ,EAAMihB,YAAc,EAC3B3jC,EAAQ0iB,EAAMxkB,MAAMupB,QAAQznB,MAAM0iB,EAAMxkB,MAAMwlC,aAC9C4kO,EAAW5lP,EAAMxkB,MAAMupB,QAAQw8O,UAAUvhP,EAAMxkB,MAAMwlC,YAAa3X,GACtE,OAAIA,EAAO,IAAMrJ,EAAMxkB,MAAMupB,QAAQ6U,UAAUgsO,EAAU5lP,EAAM3N,IAAK2N,EAAMxN,KAC/DlV,EAEJ,GAAGkE,OAAOlE,EAAO,OAAOkE,OAAOwe,EAAMxkB,MAAMupB,QAAQznB,MAAMsoQ,GACpE,EACA5lP,EAAM6lP,iBAAmB,SAAUr0Q,GAC1BwuB,EAAM8lP,WAGX9lP,EAAMxkB,MAAMwgC,IAAI+pO,OAAO/lP,EAAMxkB,MAAM+/B,WAAY/pC,EACnD,EACOwuB,CACX,CAmEA,OAzFAuD,EAAUwd,EAAQjc,GAuBlB7kB,OAAO6nB,eAAeiZ,EAAOvjB,UAAW,MAAO,CAC3CuK,IAAK,WACD,YAA0Bv3B,IAAnB8sB,KAAK9hB,MAAM6W,IACZiL,KAAK9hB,MAAM6W,IACX0uB,EAAOpa,aAAatU,GAC9B,EACA2V,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeiZ,EAAOvjB,UAAW,MAAO,CAC3CuK,IAAK,WACD,YAA0Bv3B,IAAnB8sB,KAAK9hB,MAAMgX,IACZ8K,KAAK9hB,MAAMgX,IACXuuB,EAAOpa,aAAanU,GAC9B,EACAwV,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeiZ,EAAOvjB,UAAW,cAAe,CACnDuK,IAAK,WACD,YAAkCv3B,IAA3B8sB,KAAK9hB,MAAMylC,YAA4B3jB,KAAK9hB,MAAMylC,YAAcF,EAAOpa,aAAasa,WAC/F,EACAjZ,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeiZ,EAAOvjB,UAAW,YAAa,CACjDuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMwgC,IAAI8pO,UAAUxoP,KAAK9hB,MAAM+/B,WAC/C,EACAvT,YAAY,EACZC,cAAc,IAElB8Y,EAAOvjB,UAAUnrB,OAAS,WACtB,IAAIiL,EAAQggB,KAAKqoP,WACbK,GAAkBt5O,EAAAA,EAAAA,GAAW,oBAC7Bu5O,EAAmB,CACnBl1Q,SAAUuM,EACVyF,MAAOzF,EACP0hC,KAAM1hB,KAAK9hB,MAAM+/B,WACjBpqC,UAAW60Q,EACXrzQ,QAAS2qB,KAAKuoP,iBACdruQ,UAAW8lB,KAAKwoP,WAEhB5kO,EAAc5jB,KAAK9hB,MAAM0lC,YACvBrwC,EAAAA,cAAoBysB,KAAK9hB,MAAM0lC,YAAa/uB,EAAS,CAAC,EAAG8zP,GAAmB3oQ,GAC5EzM,EAAAA,cAAoB60Q,EAAqBvzP,EAAS,CAAC,EAAG8zP,GAAmB3oQ,GAC/E,OAAQzM,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,oBAAqB,CACxE,WAAYpP,KAAK9hB,MAAMmgC,aACvB,YAAare,KAAK9hB,MAAMmgC,gBAE5BuF,EACArwC,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,aACzCN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,2BAA6BmsB,KAAK9hB,MAAM2lC,UACzF,EACAJ,EAAOzX,UAAY,CACfiS,WAAYhS,EAAAA,OAAiBoY,WAC7BX,YAAazX,EAAAA,WAAqBhvB,MAAMonC,WACxCnvB,IAAK+W,EAAAA,WAAqBhvB,MAAMonC,WAChCtvB,IAAKkX,EAAAA,WAAqBhvB,MAAMonC,WAChCV,YAAa1X,EAAAA,QAEjBwX,EAAOpa,aAAe,CAClBsa,YAAa,EACb5uB,IAAKolB,EAAAA,GACLjlB,IAAKglB,EAAAA,IAEFuJ,CACX,CA3F4B,CA2F1BlwC,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwB+S,oIChIpBxd,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAwBzC4iB,EAA8B,SAAUzc,GAExC,SAASyc,IACL,IAAIvhB,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAiBhE,OAhBA0C,EAAMkd,aAAe,KACrBld,EAAMoe,YAAc,SAAU1O,GAC1B,GAAK1P,EAAMse,gBAGPte,EAAMxkB,MAAM7I,QAAS,CACrB,IAAIuzQ,EAAU,CACVx2O,eAAgBA,EAChBD,YAAaC,EAAeD,YAC5B1sB,OAAOi7B,EAAAA,EAAAA,KAAY5M,EAAAA,EAAAA,MAAYpR,EAAM3N,IAAK2N,EAAMxN,KAChDkF,OAAQsI,EACRqb,cAAc,GAElBrb,EAAMxkB,MAAM7I,QAAQoxB,UAAKvzB,EAAW01Q,EACxC,CACJ,EACOlmP,CACX,CA4CA,OAhEAuD,EAAUge,EAAczc,GAqBxB7kB,OAAO6nB,eAAeyZ,EAAa/jB,UAAW,MAAO,CACjDuK,IAAK,WACD,YAA0Bv3B,IAAnB8sB,KAAK9hB,MAAM6W,IACZiL,KAAK9hB,MAAM6W,IACXkvB,EAAa5a,aAAatU,GACpC,EACA2V,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeyZ,EAAa/jB,UAAW,MAAO,CACjDuK,IAAK,WACD,YAA0Bv3B,IAAnB8sB,KAAK9hB,MAAMgX,IACZ8K,KAAK9hB,MAAMgX,IACX+uB,EAAa5a,aAAanU,GACpC,EACAwV,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeyZ,EAAa/jB,UAAW,iBAAkB,CAC5DuK,IAAK,WACD,OAAO6R,EAAAA,EAAAA,KAAUxI,EAAAA,EAAAA,OAAY5R,EAAAA,EAAAA,GAAQlC,KAAKjL,MAAMmN,EAAAA,EAAAA,GAAQlC,KAAK9K,KACjE,EACAwV,YAAY,EACZC,cAAc,IAElBsZ,EAAa/jB,UAAUnrB,OAAS,WAC5BirB,KAAK4f,cAAetQ,EAAAA,EAAAA,IAA2BtP,MAC/C,IAAI6oP,EAAe7oP,KAAK4f,aAAapQ,iBAAiBs5O,EAAAA,GAAOp5O,EAAAA,GAASo5O,EAAAA,KAClEC,GAAkB35O,EAAAA,EAAAA,GAAW,uBAAwB,CACrD,aAAcpP,KAAK9hB,MAAMhE,WAE7B,OAAQ3G,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEtB,UAAWk1Q,EAAiB1zQ,QAAS2qB,KAAK8gB,YAAavV,SAAUvL,KAAK9hB,MAAMqtB,SAAUpnB,SAAU,QAAU0kQ,EACpJ,EACA5kO,EAAajY,UAAY,CACrB9W,IAAK+W,EAAAA,WAAqBhvB,MAAMonC,WAChCtvB,IAAKkX,EAAAA,WAAqBhvB,MAAMonC,WAChChvC,QAAS42B,EAAAA,KACT/xB,SAAU+xB,EAAAA,MAEdgY,EAAa5a,aAAe,CACxBtU,IAAKolB,EAAAA,GACLjlB,IAAKglB,EAAAA,IAEF+J,CACX,CAlEkC,CAkEhC1wC,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBuT,qDCzFb+kO,gCACX,SAAWA,GAIPA,EAAIA,EAAY,OAAI,GAAK,SAIzBA,EAAIA,EAAY,OAAI,GAAK,SAIzBA,EAAIA,EAAa,QAAI,GAAK,UAI1BA,EAAIA,EAAe,UAAI,GAAK,YAI5BA,EAAIA,EAAc,SAAI,GAAK,WAI3BA,EAAIA,EAAY,OAAI,GAAK,SAIzBA,EAAIA,EAAc,SAAI,GAAK,UAC9B,CA7BD,CA6BGA,IAAQA,EAAM,CAAC,yDC3BdC,EAAsB,SAAU1pP,EAAM2pP,GACtC,OAAIA,IAAiBF,EAAIG,QACdloL,EAAAA,EAAAA,GCMY,SAAU1hE,EAAMuiE,GACvC,OAAOD,EAAAA,EAAAA,GAAUtiE,EAAMuiE,EAASt1D,EAAAA,EAAU48O,SAC9C,CDRuBC,CAAc9pP,EAAM2pP,GAAe,IAE/CjoL,EAAAA,EAAAA,GAAQ1hE,EAAO,GAAKA,EAAK0iE,UAAY,GAChD,EACIqnL,EAAiB,SAAU/pP,EAAM2pP,GACjC,IAAIK,GAAkB/nL,EAAAA,EAAAA,GAAWjiE,EAAK4hB,cAAe,EAAG,GAAI,GAExDqoO,EADUP,EAAoB1pP,EAAM2pP,GACjBj3P,UAAYs3P,EAAgBt3P,UAC/CkkN,EAAOrhN,KAAK4M,MAAM8nP,EELF,OFMpB,OAAO,EAAI10P,KAAK4M,MAAMy0M,EAAO,EACjC,sBGlBIlwM,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EA0BI6sQ,EAA8B,SAAUjiP,GAExC,SAASiiP,IACL,IAAI/mP,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAoBhE,OAlBA0C,EAAMoe,YAAc,SAAU5sC,GAC1B,IAAIuD,EAAKirB,EAAMxkB,MAAO7I,EAAUoC,EAAGpC,QAASoQ,EAAQhO,EAAGgO,MACnDpQ,GACAA,EAAQoxB,UAAKvzB,EAAWuS,EAAOvR,EAEvC,EACAwuB,EAAMgnP,iBAAmB,WACrB,IAAIjyQ,EAAKirB,EAAMxkB,MAAOsxP,EAAe/3P,EAAG+3P,aAAc/pP,EAAQhO,EAAGgO,MAC7D+pP,GACAA,EAAa/oO,UAAKvzB,EAAWuS,EAErC,EACAid,EAAMsxL,iBAAmB,WACrB,IAAIv8M,EAAKirB,EAAMxkB,MAAOuxP,EAAeh4P,EAAGg4P,aAAchqP,EAAQhO,EAAGgO,MAC7DgqP,GACAA,EAAahpO,UAAKvzB,EAAWuS,EAErC,EACOid,CACX,CAuCA,OA9DAuD,EAAUwjP,EAAcjiP,GA+BxBiiP,EAAavpP,UAAUypP,sBAAwB,SAAU3tO,GACrD,IAAIvkC,EAAKuoB,KAAK9hB,MAAOuH,EAAQhO,EAAGgO,MAAOvH,EAAQsc,EAAO/iB,EAAI,CAAC,UACvD62K,EAAWtyI,EAAUv2B,MAAOmkQ,EAAWpvP,EAAOwhB,EAAW,CAAC,UAE9D,WADmBv2B,GAAS6oK,IAAa7oK,EAAMwM,YAAcq8J,EAASr8J,YAvD3D,SAAUk4D,EAAGkmB,GAC5B,IAAIw5K,EAASlnQ,OAAOm0C,oBAAoBqzB,GACpC2/L,EAASnnQ,OAAOm0C,oBAAoBu5C,GACxC,GAAIw5K,EAAOhoQ,SAAWioQ,EAAOjoQ,OACzB,OAAO,EAEX,IAAK,IAAI3B,EAAI,EAAGA,EAAI2pQ,EAAOhoQ,OAAQ3B,IAAK,CACpC,IAAIgsB,EAAW29O,EAAO3pQ,GACtB,GAAIiqE,EAAEj+C,KAAcmkE,EAAEnkE,GAClB,OAAO,CAEf,CACA,OAAO,CACX,CA2C+B69O,CAAa7rQ,EAAO0rQ,GAC/C,EAMAH,EAAavpP,UAAUnrB,OAAS,WAC5B,IAAI0C,EAAKuoB,KAAK9hB,MAAOrK,EAAY4D,EAAG5D,UAA+Cm2Q,GAAnBvyQ,EAAG2pO,eAA4B3pO,EAAGuyQ,WAAWC,EAAYxyQ,EAAGwyQ,UAAqCC,GAAdzyQ,EAAG6kC,UAAwB7kC,EAAGyyQ,YAAY1F,EAAe/sQ,EAAG+sQ,aAAc2F,EAAa1yQ,EAAG0yQ,WAAYC,EAAa3yQ,EAAG2yQ,WAAYC,EAAoB5yQ,EAAG4yQ,kBAAmBC,EAAkB7yQ,EAAG6yQ,gBAAiBC,EAAU9yQ,EAAG8yQ,QAASC,EAAa/yQ,EAAG+yQ,WAA8C/9K,GAA3Bh1F,EAAGiqC,KAAcjqC,EAAGgO,MAAe+U,EAAO/iB,EAAI,CAAC,YAAa,iBAAkB,YAAa,YAAa,YAAa,aAAc,eAAgB,aAAc,aAAc,oBAAqB,kBAAmB,UAAW,aAAc,OAAQ,WAClpBgzQ,EAA4C,QAA9BzqP,KAAK9hB,MAAMyhC,gBAA4ByqO,EACrDM,EAA8C,UAA9B1qP,KAAK9hB,MAAMyhC,gBAA8B6kO,EACzDr1O,GAAgBC,EAAAA,EAAAA,GAAW,gBAAiB,CAC5C,cAAeg7O,EACf,cAAeD,EACf,oBAAqBG,EACrB,sBAAuBD,EACvB,gBAAiB7F,EACjB,WAAYkG,GAAiBD,EAC7B,wBAAyBR,EACzB,aAAcC,GAAc1F,GAAgB4F,EAC5C,UAAWG,EACX,YAAaP,EACb,aAAcQ,GACf32Q,GACH,OAAQN,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG43E,EAAO,CAAE54F,UAAWs7B,EAAe95B,QAAS2qB,KAAK8gB,YAAa0uN,aAAcxvO,KAAK0pP,iBAAkBja,aAAczvO,KAAKg0L,mBACjKzgN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,UAAYmsB,KAAK9hB,MAAMzK,UACxE,EACOg2Q,CACX,CAhEkC,CAgEhCl2Q,EAAAA,WC9HE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EASI+tQ,EAAkC,SAAUnjP,GAE5C,SAASmjP,IACL,OAAkB,OAAXnjP,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CASA,OAZAiG,EAAU0kP,EAAkBnjP,GAQ5BmjP,EAAiBzqP,UAAUnrB,OAAS,WAChC,IAAI0C,EAAKuoB,KAAK9hB,MAAOrK,EAAY4D,EAAG5D,UAAqC44F,GAAdh1F,EAAGmzQ,UAAmBpwP,EAAO/iB,EAAI,CAAC,YAAa,eAC1G,OAAQlE,EAAAA,cAAoB,KAAMshB,EAAS,CAAEhhB,WAAWu7B,EAAAA,EAAAA,GAAW,gBAAiBv7B,IAAc44F,GAAQzsE,KAAK9hB,MAAMzK,SACzH,EACOk3Q,CACX,CAdsC,CAcpCp3Q,EAAAA,+BCvDEs3Q,EAAkC,WAClC,SAASA,EAAiB9qP,GACtBC,KAAKD,KAAOA,CAChB,CAMA,OALA8qP,EAAiB3qP,UAAU4qP,aAAe,SAAUC,QACtB,IAAtBA,IAAgCA,GAAoB,GACxD,IAAI1H,GAAYS,EAAAA,EAAAA,IAAe9jP,KAAKD,KAAKgB,gBAAgB,CAAEg8M,SAAU,QAASvjO,KAAM,SAAWwmB,KAAKD,KAAK83M,YACzG,OAAOkzC,EAAoB,CAAC,IAAI7mQ,OAAOm/P,GAAaA,CACxD,EACOwH,CACX,CAVsC,GCJlC5kP,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAaIs+O,EAAY,SAAUlnQ,GAAO,OAAQvQ,EAAAA,cAAoB,KAAM,CAAE+3B,IAAKxnB,EAAKjQ,UAAW,iBAAmB,OAAY,EAIrH4qC,EAAsB,SAAUjX,GAEhC,SAASiX,IACL,IAAI/b,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAwEhE,OAvEA0C,EAAM3C,KAAO,KACb2C,EAAMuoP,YAAc,KACpBvoP,EAAMwoP,gBAAkB,SAAUnwP,EAAKjX,GAEnC,IADqB4e,EAAMkoP,UAAU7vP,GAEjC,OAAOiwP,EAAU,aAAa9mQ,OAAOJ,IAEzC,IAAI8mQ,EAAYloP,EAAMkoP,UAAU7vP,GAC5BowP,EAAgBzoP,EAAM0oP,cAAcR,GACpChG,EAAW,kCAAkC1gQ,OAAOinQ,GACpDE,EAAY,CACZx3Q,UAAW,QACX4R,MAAO0lQ,EACPP,UAAWA,GAEf,OAAOloP,EAAMxkB,MAAM6gC,SACbxrC,EAAAA,cAAoBmvB,EAAMxkB,MAAM6gC,SAAUlqB,EAAS,CAAC,EAAGw2P,EAAW,CAAE//O,IAAKs5O,IAAauG,GACtF53Q,EAAAA,cAAoBo3Q,EAAkB91P,EAAS,CAAC,EAAGw2P,EAAW,CAAE//O,IAAKs5O,IAAauG,EAC5F,EACAzoP,EAAM4oP,SAAW,SAAUvwP,GACvB,OAAOA,EAAI9a,KAAI,SAAUe,EAAM8C,GAC3B,IAAK9C,EACD,OAAOgqQ,EAAUlnQ,GAErB,IAAIynQ,EAAO,CAAE,gBAAiBvqQ,EAAKkpQ,YAC/BtF,EAAW,6BAA6B1gQ,OAAOlD,EAAKyE,MAAMwM,WAC1Do5P,EAAYx2P,EAASA,EAASA,EAAS,CAAC,EAAG02P,GAAOvqQ,GAAO,CAAEwpQ,YAAaxpQ,EAAKs7B,UAAWoF,KAAMhf,EAAMxkB,MAAM+/B,WAAY5oC,QAASqtB,EAAMoe,YAAa0uN,aAAc9sO,EAAMgnP,iBAAkBja,aAAc/sO,EAAMsxL,mBAChN,OAAOtxL,EAAMxkB,MAAM8C,KACZzN,EAAAA,cAAoBmvB,EAAMxkB,MAAM8C,KAAM6T,EAAS,CAAC,EAAGw2P,EAAW,CAAE//O,IAAKs5O,IAAa5jQ,EAAKogO,gBACvF7tO,EAAAA,cAAoBk2Q,EAAc50P,EAAS,CAAC,EAAGw2P,EAAW,CAAE//O,IAAKs5O,IAAa5jQ,EAAKogO,eAC9F,GACJ,EACA1+M,EAAMkoP,UAAY,SAAU7vP,GACxB,IAAI/Z,EAAO0hB,EAAM8oP,qBAAqBzwP,GACtC,OAAO/Z,EAAOA,EAAKyE,MAAQ,IAC/B,EACAid,EAAM8oP,qBAAuB,SAAUC,GACnC,IAAK/oP,EAAMqQ,WACP,OAAO,KAIX,IAFA,IAAIjvB,EAAM,EACN2gI,EAAMgnI,EAAO3nQ,IACT2gI,GAAO3gI,EAAM2nQ,EAAO5pQ,QACxB4iI,EAAMgnI,IAAS3nQ,GAEnB,OAAO2gI,CACX,EACA/hH,EAAMoe,YAAc,SAAUr7B,EAAOvR,GACjC,IAAIsR,EAAWkd,EAAMxkB,MAAMsH,SAC3B,GAAIA,GAAYtR,EAAO,CACnB,IAAIg0B,EAAO,CACPziB,OAAOia,EAAAA,EAAAA,GAAUja,GACjB2U,OAAQsI,EACRyP,YAAaj+B,GAASA,EAAMi+B,YAC5BC,eAAgBl+B,GAEpBsR,EAASihB,UAAKvzB,EAAWg1B,EAC7B,CACJ,EACAxF,EAAMgnP,iBAAmB,SAAUjkQ,GAC/B,IAAIq5B,EAAcpc,EAAMxkB,MAAM4gC,YAC1BA,GACAA,EAAYrY,UAAKvzB,GAAWwsB,EAAAA,EAAAA,GAAUja,GAE9C,EACAid,EAAMsxL,iBAAmB,SAAUvuM,GAC/B,IAAIimQ,EAAchpP,EAAMxkB,MAAMwtQ,YAC1BA,GACAA,EAAYjlP,UAAKvzB,GAAWwsB,EAAAA,EAAAA,GAAUja,GAE9C,EACOid,CACX,CAkGA,OA7KAuD,EAAUwY,EAAMjX,GA4EhB7kB,OAAO6nB,eAAeiU,EAAKve,UAAW,MAAO,CACzCuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAM6W,GACtB,EACA2V,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeiU,EAAKve,UAAW,MAAO,CACzCuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMgX,GACtB,EACAwV,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeiU,EAAKve,UAAW,eAAgB,CAClDuK,IAAK,WACD,MAAgC,eAAzBzK,KAAK9hB,MAAMmzB,SACtB,EACA3G,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeiU,EAAKve,UAAW,cAAe,CACjDuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAM+/B,aAAeC,EAAAA,EAAiBx3B,KACtD,EACAgkB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeiU,EAAKve,UAAW,aAAc,CAChDuK,IAAK,WACD,OAAOG,QAAQ5K,KAAK9hB,MAAM8/B,iBAAmBhe,KAAK9hB,MAAM+/B,aAAeC,EAAAA,EAAiBx3B,MAC5F,EACAgkB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeiU,EAAKve,UAAW,eAAgB,CAClDuK,IAAK,WACD,YAAmCv3B,IAA5B8sB,KAAK9hB,MAAM2gC,aAA6B7e,KAAK9hB,MAAM2gC,aAAeJ,EAAKpV,aAAawV,YAC/F,EACAnU,YAAY,EACZC,cAAc,IAElB8T,EAAKve,UAAUnrB,OAAS,WACpB,IAAI2tB,EAAQ1C,KACZA,KAAKD,MAAOmL,EAAAA,EAAAA,IAAmBlL,MAC/BA,KAAKirP,YAAc,IAAIJ,EAAiB7qP,KAAKD,MAC7C,IAAIsjP,EAAYrjP,KAAKirP,YAAYH,aAAa9qP,KAAK+S,YAC/C9X,EAAU+E,KAAK9hB,MAAMupB,QAAQy8O,UAAUlkP,KAAK+S,YAC5C/yB,EAAQggB,KAAK9hB,MAAMupB,QAAQznB,MAAMggB,KAAK9hB,MAAM0gC,UAC5CxO,GAAO0D,EAAAA,EAAAA,MACP8K,GAAW5K,EAAAA,EAAAA,IAAQhU,KAAK9hB,MAAM0gC,SAAUxO,GACxC73B,EAAOynB,KAAK9hB,MAAMupB,QAAQlvB,KAAK,CAC/BomC,QAAS3e,KAAK9hB,MAAMygC,QACpB5pB,IAAKiL,KAAKjL,IACVG,IAAK8K,KAAK9K,IACV8d,YAAahT,KAAK9hB,MAAM80B,YACxB24O,cAAe3rP,KAAK9hB,MAAMwgC,IAAIkD,YAAY5hB,KAAK9hB,MAAM+/B,YACrDY,aAAc7e,KAAK6e,aACnBjB,eAAgB5d,KAAK9hB,MAAM0/B,eAC3BgB,SAAUA,IAEd,OAAQrrC,EAAAA,cAAoBA,EAAAA,SAAgB,KACvCysB,KAAK4rP,aAAe5rP,KAAK6rP,cAAkBt4Q,EAAAA,cAAoB,QAAS,CAAEwE,KAAM,WAAYlE,UAAW,oBACpGN,EAAAA,cAAoB,KAAM,CAAEwE,KAAM,MAAOlE,UAAW,iBAAmBwvQ,EAAUpjQ,KAAI,SAAUnK,EAAMgO,GAAO,OAAQvQ,EAAAA,cAAoB,KAAM,CAAE+3B,IAAKxnB,EAAKjQ,UAAW,iBAAmBiC,EAAQ,MACpMvC,EAAAA,cAAoB,QAAS,CAAEwE,KAAM,WAAYlE,UAAW,qBACvDmsB,KAAK6rP,cAAiBt4Q,EAAAA,cAAoB,KAAM,CAAEwE,KAAM,eAAgBlE,UAAW,iBAChFN,EAAAA,cAAoB,KAAM,CAAEkrQ,MAAO,MAAOxjP,QAASA,EAASpnB,UAAW,sBAAwBmM,IACnGzH,EAAK0H,KAAI,SAAU8a,EAAKjX,GACpB,OAAQvQ,EAAAA,cAAoB,KAAM,CAAEwE,KAAM,MAAOlE,UAAW,gBAAiBy3B,IAAKxnB,GAC9E4e,EAAMqQ,YAAcrQ,EAAMwoP,gBAAgBnwP,EAAKjX,GAC/C4e,EAAM4oP,SAASvwP,GACvB,KACZ,EACA0jB,EAAKve,UAAUkrP,cAAgB,SAAU7rP,GACrC,OAAKS,KAAK+S,YAAe/S,KAAKD,KN7Jd,SAAUR,EAAM2pP,QACf,IAAjBA,IAA2BA,EAAeF,EAAIG,QAClD5pP,GAAO2C,EAAAA,EAAAA,GAAQ3C,GACf,IAAIusP,GAAe7qL,EAAAA,EAAAA,GAAQ1hE,GAAO,GAC9BwsP,GAAe9qL,EAAAA,EAAAA,GAAQ1hE,EAAM,GAC7BwT,EAAau2O,EAAe/pP,EAAM2pP,GACtC,OAAmB,IAAfn2O,EACOu2O,EAAewC,EAAc5C,GAAgB,EAErC,KAAfn2O,GAAqBu2O,EAAeyC,EAAc7C,GAAgB,EAC3D,EAEJn2O,CACX,CMmJei5O,CAAWzsP,EAAMS,KAAKD,KAAK83M,YAFvB,IAGf,EACAp5L,EAAKzS,UAAY,CACb2T,eAAgB1T,EAAAA,MAAgB,CAAC,QAAS,MAAO,OACjDgS,WAAYhS,EAAAA,OAAiBoY,WAC7B1F,QAAS1S,EAAAA,OAAiBoY,WAC1BhT,UAAWpF,EAAAA,MAAgB,CAAC,aAAc,aAC1C+G,YAAa/G,EAAAA,WAAqBhvB,MAAMonC,WACxCnvB,IAAK+W,EAAAA,WAAqBhvB,MAAMonC,WAChCtvB,IAAKkX,EAAAA,WAAqBhvB,MAAMonC,WAChC7+B,SAAUymB,EAAAA,KACV4S,aAAc5S,EAAAA,UAAoB,CAACA,EAAAA,WAAqBhvB,MAAOgvB,EAAAA,QAAkBA,EAAAA,WAAqBhvB,SACtG+gC,gBAAiB/R,EAAAA,KACjB2S,SAAU3S,EAAAA,WAAqBhvB,MAAMonC,YAEzC5F,EAAKpV,aAAe,CAChBgI,UAAW,WACXwN,cAAc/K,EAAAA,EAAAA,MACdkK,iBAAiB,GAEdS,CACX,CA/K0B,CA+KxBlrC,EAAAA,YAEFg5B,EAAAA,EAAAA,IAAgBkS,gCCxNT,IAAIP,mBACX,SAAWA,GACPA,EAAiBA,EAAwB,MAAI,GAAK,QAClDA,EAAiBA,EAAuB,KAAI,GAAK,OACjDA,EAAiBA,EAAyB,OAAI,GAAK,SACnDA,EAAiBA,EAA0B,QAAI,GAAK,SACvD,CALD,CAKGA,IAAqBA,EAAmB,CAAC,iCCNrC,IAAIt0B,mBACX,SAAWA,GACPA,EAAOA,EAAa,KAAI,GAAK,OAC7BA,EAAOA,EAAc,MAAI,GAAK,QAC9BA,EAAOA,EAAW,GAAI,GAAK,KAC3BA,EAAOA,EAAa,KAAI,GAAK,OAC7BA,EAAOA,EAAiB,SAAI,GAAK,WACjCA,EAAOA,EAAiB,SAAI,GAAK,WACjCA,EAAOA,EAAoB,YAAI,GAAK,cACpCA,EAAOA,EAAmB,WAAI,GAAK,aACnCA,EAAOA,EAAkB,UAAI,GAAK,YAClCA,EAAOA,EAAkB,UAAI,GAAK,WACrC,CAXD,CAWGA,IAAWA,EAAS,CAAC,kDCZjB,IAAIy1B,EAAuB,CAAEtc,MAAO,KAAMiE,IAAK,wDCHlDvvB,ECAAA,ECAAA,ECAAA,ECAAA,0CCMOw0Q,EAAU,SAAUxmQ,EAAOgB,GAClC,IAAIC,EAAQjB,EAAM0vE,WACd/0D,GAAYohE,EAAAA,EAAAA,GAAW/6E,EAAMC,EAAOjB,EAAMyc,UAAWzc,EAAM6a,WAAY7a,EAAM0e,aAAc1e,EAAMif,aAAcjf,EAAM2vE,mBACzH,OAAOh1D,EAAU+0D,aAAezuE,EAAQ0Z,GAAY+jB,EAAAA,EAAAA,IAAek9C,EAAAA,EAAAA,GAAUjhE,GAAY,GAC7F,ECKW8rP,EAAW,SAAUzmQ,EAAOgjB,GACnC,OAAO24D,EAAAA,EAAAA,GAAU6qL,EAAQxmQ,EAAOA,EAAM07B,cAAgB1Y,GAAShjB,EAAM6a,WACzE,ECHW6rP,EAAa,SAAU1mQ,EAAOgjB,GACrC,OAAOyjP,EAASzmQ,EAAO,GAAKgjB,EAChC,ECFW2jP,EAAe,SAAU3mQ,EAAOgjB,GACvC,OAAOyjP,EAASzmQ,EAAO,IAAMgjB,EACjC,ECZW4jP,EAAgB,SAAU5mQ,EAAOgB,GAAQ,OAAQwlQ,EAAQxmQ,EAAOgB,EAAKhB,EAAM07B,eAAkB,ECU7FmrO,EAAuB,SAAU7mQ,GAAS,OAAQ4mQ,EAAc5mQ,GAAO,SAAU4qF,GAAK,OAAOA,EAAKA,EAAI,GAAM,GAAK,ECAjHk8K,EAAsB,SAAU9mQ,GAAS,OAAQ4mQ,EAAc5mQ,GAAO,SAAU4qF,GAAK,OAAOA,EAAKA,EAAI,IAAO,EAAI,GAAK,ECArHm8K,EAAoB,SAAU/mQ,GAAS,OAAQ4mQ,EAAc5mQ,GAAO,SAAU4qF,GAAK,OAAOA,EAAKA,EAAI,EAAK,GAAK,ECC7Go8K,EAAsB,SAAU1pP,EAAOiE,GAAO,OAASslP,EAAqBtlP,GAAKma,cAAgBmrO,EAAqBvpP,GAAOoe,eAAiB,GAAM,yCbV3JurO,EAAa,CAAC,IAGdC,IAAWl1Q,EAAK,CAAC,GACdmS,EAAAA,EAAOwkB,MAAQ,SAAU7O,GAAQ,OAAO4sP,EAAW5sP,GAAO,EAAI,EACjE9nB,EAAGmS,EAAAA,EAAOgjQ,IAAM,SAAUrtP,GAAQ,OAAO4sP,EAAW5sP,GAAO,EAAI,EAC/D9nB,EAAGmS,EAAAA,EAAOgkB,OAAS,SAAUrO,GAAQ,OAAO4sP,EAAW5sP,EAAM,EAAI,EACjE9nB,EAAGmS,EAAAA,EAAOijQ,MAAQ,SAAUttP,GAAQ,OAAO4sP,EAAW5sP,EAAM,EAAI,EAChE9nB,EAAGmS,EAAAA,EAAOs3B,UAAY,SAAU3hB,GAAQ,OAAO6sP,EAAa7sP,GAAO,EAAI,EACvE9nB,EAAGmS,EAAAA,EAAO23B,UAAY,SAAUhiB,GAAQ,OAAO6sP,EAAa7sP,EAAM,EAAI,EACtE9nB,EAAGmS,EAAAA,EAAOkjQ,aAAe,SAAUvtP,GAAQ,OAAO+sP,EAAqB/sP,EAAO,EAC9E9nB,EAAGmS,EAAAA,EAAOmjQ,YAAc,SAAUxtP,GAAQ,OAAOgtP,EAAoBhtP,EAAO,EAC5E9nB,GAIAu1Q,EAAoC,WACpC,SAASA,IACT,CAgIA,OA/HAA,EAAmB9sP,UAAU+jP,UAAY,SAAUlvP,EAAK+W,GACpD,OAAOsgP,EAAar3P,EAAK+W,EAC7B,EACAkhP,EAAmB9sP,UAAUqjB,UAAY,SAAUxgB,EAAOs7D,GACtD,OAAOr7D,EAAAA,EAAAA,IAAM,EAAGq7D,GAAOp+E,KAAI,SAAUC,GAAK,OAAOksQ,EAAarpP,EAAO7iB,EAAI,GAC7E,EACA8sQ,EAAmB9sP,UAAU3nB,KAAO,SAAUwlD,GAC1C,IAAIr7B,EAAQ1C,KACR2e,EAAUof,EAAQpf,QAAS3L,EAAc+qB,EAAQ/qB,YAAa24O,EAAe5tN,EAAQ4tN,aAAcz2P,EAAM6oC,EAAQ7oC,IAAKH,EAAMgpC,EAAQhpC,IAAK8pB,EAAekf,EAAQlf,aAAcpnC,EAAKsmD,EAAQngB,eAAgBA,OAAwB,IAAPnmC,EAAgB4nC,EAAAA,EAAuB5nC,EAAImnC,EAAWmf,EAAQnf,SAC9R,IAAKA,EACD,OAAO8tO,EAEX,IAAIl+J,GAAQxrF,EAAAA,EAAAA,IAAM,EA9BP,GA+BP4nP,EAAY0B,EAAqB1tO,GACjCquO,EAAWV,EAAoB3tO,GAC/BkqO,GAAQh1O,EAAAA,EAAAA,MACZ,OAAO9Q,EAAAA,EAAAA,IAAM,EAjCH,GAiCmB/iB,KAAI,SAAUitQ,GACvC,IAAIC,EAAWhB,EAAWvB,EAnCnB,EAmC8BsC,GACrC,OAAO1+J,EAAMvuG,KAAI,SAAUmtQ,GACvB,IAAIC,EAAW3qP,EAAM2iC,UAAU8mN,EAAWgB,EAAUC,GAAar4P,EAAKG,GAClEsvP,EAAe9hP,EAAMW,QAAQgqP,EAAUzvO,EAAe7a,OACtDqnP,EAAa1nP,EAAMW,QAAQgqP,EAAUzvO,EAAe5W,KAEpDmjP,GADc3F,IAAiB4F,IACJkD,EAAAA,EAAAA,IAAmBD,EAAUzvO,GACxDssO,EAAayB,IAAkB3zP,MAAMC,QAAQ4mB,GAE3Cnc,EAAM6qP,oBAAoBF,EAAUxuO,EAAc9pB,EAAKG,IADvDonB,EAAAA,EAAAA,IAAUuC,EAAc9pB,EAAKG,IAAQwN,EAAMW,QAAQgqP,EAAUxuO,IAEnE,OAAO++G,EAAAA,EAAAA,IAAWyvH,EAAUzC,EAAWqC,GAAa,CAChD7rC,eAAgB1+M,EAAMjd,MAAM4nQ,GAC5Bj6Q,GAAI,GAAG8Q,OAAOy6B,GAASz6B,OAAOmpQ,EAASp7P,WACvCg4P,UAAWvnP,EAAMW,QAAQgqP,EAAUr6O,GACnCk3O,WAAYA,EACZF,WAAW,EACX1tO,WAAWA,EAAAA,EAAAA,IAAU+wO,EAAUt4P,EAAKG,GACpCsvP,aAAcA,EACd2F,WAAYA,EACZC,WAAYA,EACZE,gBAAiBH,GAAcznP,EAAMW,QAAQgqP,EAAUJ,GACvD5C,kBAAmBF,GAAcznP,EAAMW,QAAQgqP,EAAUzC,GACzDL,QAAS7nP,EAAMW,QAAQgqP,EAAUvE,GACjC9oQ,MAAO0iB,EAAM8qP,UAAUH,GACvB5nQ,MAAO4nQ,GACN,IACT,GACJ,GACJ,EACAL,EAAmB9sP,UAAUqtP,oBAAsB,SAAUntP,EAAWoe,EAAOzpB,EAAKG,GAChF,IAAIwN,EAAQ1C,KACRtjB,GAAS,EAMb,OALA8hC,EAAM7vB,SAAQ,SAAU4Q,IAChB+c,EAAAA,EAAAA,IAAUlc,EAAWrL,EAAKG,IAAQwN,EAAMW,QAAQjD,EAAWb,KAC3D7iB,GAAS,EAEjB,IACOA,CACX,EACAswQ,EAAmB9sP,UAAUmD,QAAU,SAAUjD,EAAW8hE,GACxD,SAAK9hE,IAAc8hE,IAIZsqL,EAAkBpsP,GAAW+gB,gBAAkBqrO,EAAkBtqL,GAAU/gD,aACtF,EACA6rO,EAAmB9sP,UAAUshB,UAAY,SAAUjiB,EAAMif,GACrD,IAAKA,EAAM38B,OACP,OAAO,EAEX,IAAI4E,EAAO8Y,EAAK4hB,cAChB,OAAO3C,EAAM,GAAG2C,eAAiB16B,GAAQA,GAAS+3B,EAAMA,EAAM38B,OAAS,GAAGs/B,cAAgB,EAC9F,EACA6rO,EAAmB9sP,UAAUoc,UAAY,SAAUlc,EAAWrL,EAAKG,GAC/D,IAAIzO,EAAO+lQ,EAAkBpsP,GAAW+gB,cACpCssO,GAAY14P,GAAOy3P,EAAkBz3P,GAAKosB,eAAiB16B,EAC3DinQ,GAAYx4P,GAAOzO,GAAQ+lQ,EAAkBt3P,GAAKisB,cACtD,OAAOssO,GAAYC,CACvB,EACAV,EAAmB9sP,UAAUogB,aAAe,SAAUlgB,EAAW3a,GAC7D,OAAiD,IAA1CgnQ,EAAoBrsP,EAAW3a,EAC1C,EACAunQ,EAAmB9sP,UAAUskP,aAAe,SAAU/+P,GAClD,OAAOA,EAAM07B,cAAgB,MAAS,CAC1C,EACA6rO,EAAmB9sP,UAAUkR,KAAO,SAAU3rB,EAAO4M,GACjD,IAAIo1P,EAAWkF,EAAQt6P,GACvB,OAAKo1P,EAGEA,EAAShiQ,GAFLA,CAGf,EACAunQ,EAAmB9sP,UAAUstP,UAAY,SAAU/nQ,GAC/C,OAAO+mQ,EAAkB/mQ,GAAO07B,cAAc+T,UAClD,EACA83N,EAAmB9sP,UAAUykP,gBAAkB,SAAUl/P,GACrD,OAAOA,EAAQ6mQ,EAAqB7mQ,GAAO07B,cAAc+T,WAAa,EAC1E,EACA83N,EAAmB9sP,UAAUlgB,MAAQ,SAAUyF,GAC3C,OAAKA,EAGE,GAAGvB,OAAOooQ,EAAqB7mQ,GAAO07B,cAAe,OAAOj9B,OAAOqoQ,EAAoB9mQ,GAAO07B,eAF1F,EAGf,EACA6rO,EAAmB9sP,UAAUgkP,UAAY,SAAUtjP,GAC/C,OAxHW,CAyHf,EACAosP,EAAmB9sP,UAAU4L,KAAO,SAAUrmB,EAAOsP,GACjD,OAAO03P,EAAoB13P,EAAKtP,EACpC,EACAunQ,EAAmB9sP,UAAUqB,MAAQ,SAAUxM,EAAKG,GAChD,OAAOu3P,EAAoB13P,EAAKG,GAAO,CAC3C,EACA83P,EAAmB9sP,UAAUza,MAAQ,SAAUpR,GAC3C,OAAOA,EAAUm4Q,EAAkBn4Q,GAAS8sC,cAAc+T,WAAa,EAC3E,EACA83N,EAAmB9sP,UAAU0e,SAAW,SAAUrf,EAAMrK,EAAKzR,GAGzD,YAFe,IAAXA,IAAqBA,EAAS,GACbgpQ,EAAoBltP,EAAMrK,GAAOzR,EAC9B2oQ,EAAa7sP,GAAO,GAAKA,CACrD,EACAytP,EAAmB9sP,UAAUmlC,UAAY,SAAUgoN,EAAUt4P,EAAKG,GAC9D,OAAIm4P,EAAWt4P,GAAOiL,KAAKqD,QAAQgqP,EAAUt4P,IAClC2K,EAAAA,EAAAA,GAAU3K,GAEjBs4P,EAAWn4P,GAAO8K,KAAKqD,QAAQgqP,EAAUn4P,IAClCwK,EAAAA,EAAAA,GAAUxK,GAEdm4P,CACX,EACOL,CACX,CAnIwC,GcP7BW,EAAmB,SAAUloQ,GAAS,OAAQ4mQ,EAAc5mQ,GAAO,SAAU4qF,GAAK,OAAOA,EAAKA,EAAI,GAAM,CAAG,GAAK,ECAhHu9K,EAAoB,SAAU7qP,EAAOiE,GAAO,OAASwlP,EAAkBxlP,GAAKma,cAAgBqrO,EAAkBzpP,GAAOoe,eAAiB,EAAK,EdTlJurO,EAAa,CAAC,IAGdC,IAAWl1Q,EAAK,CAAC,GACdmS,EAAAA,EAAOwkB,MAAQ,SAAU7O,GAAQ,OAAO2sP,EAAS3sP,GAAO,EAAI,EAC/D9nB,EAAGmS,EAAAA,EAAOgjQ,IAAM,SAAUrtP,GAAQ,OAAO2sP,EAAS3sP,GAAO,EAAI,EAC7D9nB,EAAGmS,EAAAA,EAAOgkB,OAAS,SAAUrO,GAAQ,OAAO2sP,EAAS3sP,EAAM,EAAI,EAC/D9nB,EAAGmS,EAAAA,EAAOijQ,MAAQ,SAAUttP,GAAQ,OAAO2sP,EAAS3sP,EAAM,EAAI,EAC9D9nB,EAAGmS,EAAAA,EAAOs3B,UAAY,SAAU3hB,GAAQ,OAAO4sP,EAAW5sP,GAAO,EAAI,EACrE9nB,EAAGmS,EAAAA,EAAO23B,UAAY,SAAUhiB,GAAQ,OAAO4sP,EAAW5sP,EAAM,EAAI,EACpE9nB,EAAGmS,EAAAA,EAAOkjQ,aAAe,SAAUvtP,GAAQ,OAAOitP,EAAkBjtP,EAAO,EAC3E9nB,EAAGmS,EAAAA,EAAOmjQ,YAAc,SAAUxtP,GAAQ,OAAOouP,EAAiBpuP,EAAO,EACzE9nB,GAIAo2Q,EAAmC,WACnC,SAASA,IACT,CA+HA,OA9HAA,EAAkB3tP,UAAU+jP,UAAY,SAAUlvP,EAAK+W,GACnD,OAAOqgP,EAAWp3P,EAAK+W,EAC3B,EACA+hP,EAAkB3tP,UAAUqjB,UAAY,SAAUxgB,EAAOs7D,GACrD,OAAOr7D,EAAAA,EAAAA,IAAM,EAAGq7D,GAAOp+E,KAAI,SAAUC,GAAK,OAAOisQ,EAAWppP,EAAO7iB,EAAI,GAC3E,EACA2tQ,EAAkB3tP,UAAU3nB,KAAO,SAAUwlD,GACzC,IAAIr7B,EAAQ1C,KACR2e,EAAUof,EAAQpf,QAAS3L,EAAc+qB,EAAQ/qB,YAAa24O,EAAe5tN,EAAQ4tN,aAAcz2P,EAAM6oC,EAAQ7oC,IAAKH,EAAMgpC,EAAQhpC,IAAK8pB,EAAekf,EAAQlf,aAAcpnC,EAAKsmD,EAAQngB,eAAgBA,OAAwB,IAAPnmC,EAAgB4nC,EAAAA,EAAuB5nC,EAAImnC,EAAWmf,EAAQnf,SAC9R,IAAKA,EACD,OAAO8tO,EAEX,IAAIl+J,GAAQxrF,EAAAA,EAAAA,IAAM,EA9BP,GA+BP4nP,EAAY4B,EAAkB5tO,GAC9BquO,EAAWU,EAAiB/uO,GAC5BkqO,GAAQh1O,EAAAA,EAAAA,MACZ,OAAO9Q,EAAAA,EAAAA,IAAM,EAjCH,GAiCmB/iB,KAAI,SAAUitQ,GACvC,IAAIC,EAAWjB,EAAStB,EAnCjB,EAmC4BsC,GACnC,OAAO1+J,EAAMvuG,KAAI,SAAUmtQ,GACvB,IAAIC,EAAW3qP,EAAM2iC,UAAU6mN,EAASiB,EAAUC,GAAar4P,EAAKG,GAChEsvP,EAAe9hP,EAAMW,QAAQgqP,EAAUzvO,EAAe7a,OACtDqnP,EAAa1nP,EAAMW,QAAQgqP,EAAUzvO,EAAe5W,KAEpDmjP,GADc3F,IAAiB4F,IACJkD,EAAAA,EAAAA,IAAmBD,EAAUzvO,GACxDssO,EAAayB,IAAkB3zP,MAAMC,QAAQ4mB,GAE3Cnc,EAAM6qP,oBAAoBF,EAAUxuO,EAAc9pB,EAAKG,IADvDonB,EAAAA,EAAAA,IAAUuC,EAAc9pB,EAAKG,IAAQwN,EAAMW,QAAQgqP,EAAUxuO,IAEnE,OAAO++G,EAAAA,EAAAA,IAAWyvH,EAAUzC,EAAWqC,GAAa,CAChD7rC,eAAgB1+M,EAAMjd,MAAM4nQ,GAC5Bj6Q,GAAI,GAAG8Q,OAAOy6B,GAASz6B,OAAOmpQ,EAASp7P,WACvCg4P,UAAWvnP,EAAMW,QAAQgqP,EAAUr6O,GACnCk3O,WAAYA,EACZF,WAAW,EACX1tO,WAAWA,EAAAA,EAAAA,IAAU+wO,EAAUt4P,EAAKG,GACpCsvP,aAAcA,EACd2F,WAAYA,EACZC,WAAYA,EACZE,gBAAiBH,GAAcznP,EAAMW,QAAQgqP,EAAUJ,GACvD5C,kBAAmBF,GAAcznP,EAAMW,QAAQgqP,EAAUzC,GACzDL,QAAS7nP,EAAMW,QAAQgqP,EAAUvE,GACjC9oQ,MAAO0iB,EAAM8qP,UAAUH,GACvB5nQ,MAAO4nQ,GACN,IACT,GACJ,GACJ,EACAQ,EAAkB3tP,UAAUqtP,oBAAsB,SAAUntP,EAAWoe,EAAOzpB,EAAKG,GAC/E,IAAIwN,EAAQ1C,KACRtjB,GAAS,EAMb,OALA8hC,EAAM7vB,SAAQ,SAAU4Q,IAChB+c,EAAAA,EAAAA,IAAUlc,EAAWrL,EAAKG,IAAQwN,EAAMW,QAAQjD,EAAWb,KAC3D7iB,GAAS,EAEjB,IACOA,CACX,EACAmxQ,EAAkB3tP,UAAUmD,QAAU,SAAUjD,EAAW8hE,GACvD,SAAK9hE,IAAc8hE,IAGZ9hE,EAAU+gB,gBAAkB+gD,EAAS/gD,aAChD,EACA0sO,EAAkB3tP,UAAUshB,UAAY,SAAUjiB,EAAMif,GACpD,IAAKA,EAAM38B,OACP,OAAO,EAEX,IAAI4E,EAAO8Y,EAAK4hB,cAChB,OAAO3C,EAAM,GAAG2C,eAAiB16B,GAAQA,GAAS+3B,EAAMA,EAAM38B,OAAS,GAAGs/B,cAAgB,CAC9F,EACA0sO,EAAkB3tP,UAAUoc,UAAY,SAAUlc,EAAWrL,EAAKG,GAC9D,IAAIzO,EAAO2Z,EAAU+gB,cACjBssO,GAAY14P,GAAOA,EAAIosB,eAAiB16B,EACxCinQ,GAAYx4P,GAAOzO,GAAQyO,EAAIisB,cACnC,OAAOssO,GAAYC,CACvB,EACAG,EAAkB3tP,UAAUskP,aAAe,SAAU/+P,GACjD,OAAOA,EAAM07B,cAAgB,MAAQ,CACzC,EACA0sO,EAAkB3tP,UAAUogB,aAAe,SAAUlgB,EAAW3a,GAC5D,OAA+C,IAAxCmoQ,EAAkBxtP,EAAW3a,EACxC,EACAooQ,EAAkB3tP,UAAUkR,KAAO,SAAU3rB,EAAO4M,GAChD,IAAIo1P,EAAWkF,EAAQt6P,GACvB,OAAKo1P,EAGEA,EAAShiQ,GAFLA,CAGf,EACAooQ,EAAkB3tP,UAAUstP,UAAY,SAAU/nQ,GAC9C,OAAOA,EAAM07B,cAAc+T,UAC/B,EACA24N,EAAkB3tP,UAAUykP,gBAAkB,SAAUl/P,GACpD,OAAOA,EAAQ+mQ,EAAkB/mQ,GAAO07B,cAAc+T,WAAa,EACvE,EACA24N,EAAkB3tP,UAAUlgB,MAAQ,SAAUyF,GAC1C,OAAKA,EAGE,GAAGvB,OAAOsoQ,EAAkB/mQ,GAAO07B,cAAe,OAAOj9B,OAAOypQ,EAAiBloQ,GAAO07B,eAFpF,EAGf,EACA0sO,EAAkB3tP,UAAUgkP,UAAY,SAAUtjP,GAC9C,OAvHW,CAwHf,EACAitP,EAAkB3tP,UAAU4L,KAAO,SAAUrmB,EAAOsP,GAChD,OAAO64P,EAAkB74P,EAAKtP,EAClC,EACAooQ,EAAkB3tP,UAAUqB,MAAQ,SAAUxM,EAAKG,GAC/C,OAAO04P,EAAkB74P,EAAKG,GAAO,CACzC,EACA24P,EAAkB3tP,UAAUza,MAAQ,SAAUpR,GAC1C,OAAOA,EAAUA,EAAQ8sC,cAAc+T,WAAa,EACxD,EACA24N,EAAkB3tP,UAAU0e,SAAW,SAAUrf,EAAMrK,EAAKzR,GAGxD,YAFe,IAAXA,IAAqBA,EAAS,GACbmqQ,EAAkBruP,EAAMrK,GAAOzR,EAC5B0oQ,EAAW5sP,GAAO,GAAKA,CACnD,EACAsuP,EAAkB3tP,UAAUmlC,UAAY,SAAUgoN,EAAUt4P,EAAKG,GAC7D,OAAIm4P,EAAWt4P,GAAOiL,KAAKqD,QAAQgqP,EAAUt4P,IAClC2K,EAAAA,EAAAA,GAAU3K,GAEjBs4P,EAAWn4P,GAAO8K,KAAKqD,QAAQgqP,EAAUn4P,IAClCwK,EAAAA,EAAAA,GAAUxK,GAEdm4P,CACX,EACOQ,CACX,CAlIuC,aeP5BC,EAAW,SAAUvuP,EAAMkJ,GAClC,OAAOw4D,EAAAA,EAAAA,GAAQ1hE,EAAe,EAATkJ,EACzB,8BCFWslP,EAAmB,SAAUhrP,EAAOiE,GAAO,OAAsD,IAA5CA,EAAIma,cAAgBpe,EAAMoe,gBAAwBna,EAAImuD,WAAapyD,EAAMoyD,WAAc,EfTnJu3L,EAAa,CAAC,IAKdC,IAAWl1Q,EAAK,CAAC,GACdmS,EAAAA,EAAOwkB,MAAQ,SAAU7O,GAAQ,OAAO0hE,EAAAA,EAAAA,GAAQ1hE,GAAO,EAAI,EAC9D9nB,EAAGmS,EAAAA,EAAOgjQ,IAAM,SAAUrtP,GAAQ,OAAOuuP,EAASvuP,GAAO,EAAI,EAC7D9nB,EAAGmS,EAAAA,EAAOgkB,OAAS,SAAUrO,GAAQ,OAAO0hE,EAAAA,EAAAA,GAAQ1hE,EAAM,EAAI,EAC9D9nB,EAAGmS,EAAAA,EAAOijQ,MAAQ,SAAUttP,GAAQ,OAAOuuP,EAASvuP,EAAM,EAAI,EAC9D9nB,EAAGmS,EAAAA,EAAOs3B,UAAY,SAAU3hB,GAAQ,OAAO8hE,EAAAA,EAAAA,GAAU9hE,GAAO,EAAI,EACpE9nB,EAAGmS,EAAAA,EAAO23B,UAAY,SAAUhiB,GAAQ,OAAO8hE,EAAAA,EAAAA,GAAU9hE,EAAM,EAAI,EACnE9nB,EAAGmS,EAAAA,EAAOkjQ,aAAe,SAAUvtP,GAAQ,OAAO2kB,EAAAA,EAAAA,GAAgB3kB,EAAO,EACzE9nB,EAAGmS,EAAAA,EAAOmjQ,YAAc,SAAUxtP,GAAQ,OAAO4kB,EAAAA,EAAAA,GAAe5kB,EAAO,EACvE9nB,GAIAu2Q,EAAkC,WAClC,SAASA,EAAiBjuP,GACtBC,KAAKD,KAAOA,CAChB,CA4IA,OA3IAiuP,EAAiB9tP,UAAU+jP,UAAY,SAAUlvP,EAAK+W,GAClD,OAAOu1D,EAAAA,EAAAA,GAAUtsE,EAAK+W,EAC1B,EACAkiP,EAAiB9tP,UAAUqjB,UAAY,SAAUxgB,EAAOs7D,GACpD,OAAOr7D,EAAAA,EAAAA,IAAM,EAAGq7D,GAAOp+E,KAAI,SAAUC,GAAK,OAAOmhF,EAAAA,EAAAA,GAAUt+D,EAAO7iB,EAAI,GAC1E,EACA8tQ,EAAiB9tP,UAAU3nB,KAAO,SAAUwlD,GACxC,IAAIr7B,EAAQ1C,KACR2e,EAAUof,EAAQpf,QAAS3L,EAAc+qB,EAAQ/qB,YAAa24O,EAAe5tN,EAAQ4tN,aAAcz2P,EAAM6oC,EAAQ7oC,IAAKH,EAAMgpC,EAAQhpC,IAAK8pB,EAAekf,EAAQlf,aAAcpnC,EAAKsmD,EAAQngB,eAAgBA,OAAwB,IAAPnmC,EAAgB4nC,EAAAA,EAAuB5nC,EAAImnC,EAAWmf,EAAQnf,SAC9R,IAAKA,EACD,OAAO8tO,EAEX,IAAIuB,GAAiB/pO,EAAAA,EAAAA,GAAgBtF,GACjCsvO,GAAgB/pO,EAAAA,EAAAA,GAAevF,GAE/Brf,GAAOsiE,EAAAA,EAAAA,GAAUosL,EAAgBjuP,KAAKD,KAAK83M,YAD/B,GAEZrpH,GAAQxrF,EAAAA,EAAAA,IAAM,EArCP,GAsCP8lP,GAAQh1O,EAAAA,EAAAA,MACZ,OAAO9Q,EAAAA,EAAAA,IAAM,EAtCH,GAsCmB/iB,KAAI,SAAUitQ,GACvC,IAAIC,GAAWlsL,EAAAA,EAAAA,GAAQ1hE,EAxChB,EAwCsB2tP,GAC7B,OAAO1+J,EAAMvuG,KAAI,SAAUmtQ,GACvB,IAAIC,EAAW3qP,EAAM2iC,WAAU47B,EAAAA,EAAAA,GAAQksL,EAAUC,GAAar4P,EAAKG,GAEnE,GADiBm4P,EAAWY,GAAkBZ,EAAWa,EAErD,OAAO,KAEX,IAAI1J,EAAe9hP,EAAMW,QAAQgqP,EAAUzvO,EAAe7a,OACtDqnP,EAAa1nP,EAAMW,QAAQgqP,EAAUzvO,EAAe5W,KAEpDmjP,GADc3F,IAAiB4F,IACJkD,EAAAA,EAAAA,IAAmBD,EAAUzvO,GACxDssO,EAAayB,IAAkB3zP,MAAMC,QAAQ4mB,GAE3Cnc,EAAM6qP,oBAAoBF,EAAUxuO,EAAc9pB,EAAKG,IADvDonB,EAAAA,EAAAA,IAAUuC,EAAc9pB,EAAKG,IAAQwN,EAAMW,QAAQgqP,EAAUxuO,IAkBnE,MAhBW,CACPuiM,eAAgB1+M,EAAMjd,MAAM4nQ,GAC5Bj6Q,GAAI,GAAG8Q,OAAOy6B,GAASz6B,OAAOmpQ,EAASp7P,WACvCg4P,UAAWvnP,EAAMW,QAAQgqP,EAAUr6O,GACnCk3O,WAAYA,EACZ5tO,WAAWA,EAAAA,EAAAA,IAAU+wO,EAAUt4P,EAAKG,GACpC80P,UAAWtnP,EAAMsnP,UAAUqD,GAC3B7I,aAAcA,EACd2F,WAAYA,EACZC,WAAYA,EACZC,kBAAmBF,GAAcznP,EAAMW,QAAQgqP,EAAUY,GACzD3D,gBAAiBH,GAAcznP,EAAMW,QAAQgqP,EAAUa,GACvD3D,QAAS7nP,EAAMW,QAAQgqP,EAAUvE,GACjC9oQ,MAAO0iB,EAAM8qP,UAAUH,GACvB5nQ,MAAO4nQ,EAGf,GACJ,GACJ,EACAW,EAAiB9tP,UAAUmD,QAAU,SAAUjD,EAAW8hE,GACtD,SAAK9hE,IAAc8hE,KAGZhgE,EAAAA,EAAAA,GAAQ9B,GAAWnO,aAAciQ,EAAAA,EAAAA,GAAQggE,GAAUjwE,SAC9D,EACA+7P,EAAiB9tP,UAAUqtP,oBAAsB,SAAUntP,EAAWoe,EAAOzpB,EAAKG,GAC9E,IAAIwN,EAAQ1C,KACRtjB,GAAS,EAMb,OALA8hC,EAAM7vB,SAAQ,SAAU4Q,IAChB+c,EAAAA,EAAAA,IAAUlc,EAAWrL,EAAKG,IAAQwN,EAAMW,QAAQjD,EAAWb,KAC3D7iB,GAAS,EAEjB,IACOA,CACX,EACAsxQ,EAAiB9tP,UAAUshB,UAAY,SAAUjiB,EAAMif,GACnD,QAASA,EAAM38B,SAAUqiC,EAAAA,EAAAA,GAAgB1F,EAAM,KAAOjf,GAAQA,IAAQ4kB,EAAAA,EAAAA,GAAe3F,EAAMA,EAAM38B,OAAS,GAC9G,EACAmsQ,EAAiB9tP,UAAUoc,UAAY,SAAUlc,EAAWrL,EAAKG,GAC7D,IAAIzP,GAAQyc,EAAAA,EAAAA,GAAQ9B,GAChBqtP,GAAY14P,IAAOmN,EAAAA,EAAAA,GAAQnN,IAAQtP,EACnCioQ,GAAYx4P,GAAOzP,IAASyc,EAAAA,EAAAA,GAAQhN,GACxC,OAAOu4P,GAAYC,CACvB,EACAM,EAAiB9tP,UAAUogB,aAAe,SAAUlgB,EAAW3a,GAC3D,OAA8C,IAAvCsoQ,EAAiB3tP,EAAW3a,EACvC,EACAuoQ,EAAiB9tP,UAAUskP,aAAe,SAAU/+P,GAChD,OAAQA,EAAM0vE,UAClB,EACA64L,EAAiB9tP,UAAUkR,KAAO,SAAU3rB,EAAO4M,GAC/C,IAAIo1P,EAAWkF,EAAQt6P,GACvB,OAAKo1P,EAGEA,EAAShiQ,GAFLA,CAGf,EACAuoQ,EAAiB9tP,UAAUstP,UAAY,SAAU/nQ,GAC7C,OAAOua,KAAKD,KAAK6C,WAAWnd,EAAO,IACvC,EACAuoQ,EAAiB9tP,UAAUykP,gBAAkB,SAAUl/P,GACnD,OAAKA,EAGEua,KAAKwkP,aAAa/+P,GAASA,EAAM07B,cAAc+T,WAAal1B,KAAKmuP,iBAAiB1oQ,EAAM0vE,YAFpF,EAGf,EACA64L,EAAiB9tP,UAAUlgB,MAAQ,SAAU3L,GACzC,MAAO,GAAG6P,OAAO8b,KAAKouP,iBAAiB/5Q,EAAQ8gF,YAAa,KAAKjxE,OAAO7P,EAAQ8sC,cACpF,EACA6sO,EAAiB9tP,UAAUgkP,UAAY,SAAUmK,GAC7C,OA7HW,GA6HYA,EAAc,EAAI,EAC7C,EACAL,EAAiB9tP,UAAU4L,KAAO,SAAUrmB,EAAOsP,GAC/C,OAAOg5P,EAAiBh5P,EAAKtP,EACjC,EACAuoQ,EAAiB9tP,UAAUqB,MAAQ,SAAUxM,EAAKG,GAC9C,OAAO64P,EAAiBh5P,EAAKG,GAAO,CACxC,EACA84P,EAAiB9tP,UAAUza,MAAQ,SAAUpR,GACzC,OAAOA,EAAUA,EAAQ6tB,UAAUgzB,WAAa,EACpD,EACA84N,EAAiB9tP,UAAU0e,SAAW,SAAUrf,EAAMrK,EAAKzR,GAGvD,YAFe,IAAXA,IAAqBA,EAAS,GACbsqQ,EAAiBxuP,EAAMrK,GAAOzR,GAC3B49E,EAAAA,EAAAA,GAAU9hE,GAAO,GAAKA,CAClD,EACAyuP,EAAiB9tP,UAAU8pP,UAAY,SAAUzqP,GAC7C,IAAI5Y,EAAM4Y,EAAK0iE,SACf,OA7IO,IA6IAt7E,GA5IF,IA4IsBA,CAC/B,EACAqnQ,EAAiB9tP,UAAUiuP,eAAiB,WACxC,OAAOnuP,KAAKD,KAAKgB,gBAAgB,CAAEg8M,SAAU,cAAevjO,KAAM,UACtE,EACAw0Q,EAAiB9tP,UAAUmlC,UAAY,SAAUgoN,EAAUt4P,EAAKG,GAC5D,OAAIm4P,EAAWt4P,GAAOiL,KAAKqD,QAAQgqP,EAAUt4P,IAClCmN,EAAAA,EAAAA,GAAQnN,GAEfs4P,EAAWn4P,GAAO8K,KAAKqD,QAAQgqP,EAAUn4P,IAClCgN,EAAAA,EAAAA,GAAQhN,GAEZm4P,CACX,EACAW,EAAiB9tP,UAAUkuP,eAAiB,WACxC,OAAOpuP,KAAKD,KAAKgB,gBAAgB,CAAEg8M,SAAU,OAAQvjO,KAAM,SAAUwjO,YAAY,GACrF,EACOgxC,CACX,CAhJsC,GgBjB3BzsL,EAAW,SAAU97E,EAAOiB,GACnC,IAAIC,EAAMlB,EAAMyc,UACZ9B,GAAYohE,EAAAA,EAAAA,GAAW/7E,EAAM07B,cAAez6B,EAAOC,EAAKlB,EAAM6a,WAAY7a,EAAM0e,aAAc1e,EAAMif,aAAcjf,EAAM2vE,mBAC5H,OAAOh1D,EAAU8B,YAAcvb,EAAMyZ,GAAY+jB,EAAAA,EAAAA,IAAek9C,EAAAA,EAAAA,GAAUjhE,GAAY,GAC1F,ECGWkuP,EAAmB,SAAU7oQ,GAAS,OAAO87E,EAAS97E,EAAO,EAAI,ECAjE8oQ,EAAkB,SAAU9oQ,GAAS,OAAO87E,EAAS97E,EAAO,GAAK,ECCjE+oQ,EAAkB,SAAUzrP,EAAOiE,GAAO,OAAQA,EAAIma,cAAgBpe,EAAMoe,aAAgB,ElBRnGurO,EAAa,CAAC,IAqBdC,IAAWl1Q,EAAK,CAAC,GACdmS,EAAAA,EAAOwkB,MAAQ,SAAU7O,GAAQ,OAAO8hE,EAAAA,EAAAA,GAAU9hE,GAAO,EAAI,EAChE9nB,EAAGmS,EAAAA,EAAOgjQ,IAAM,SAAUrtP,GAAQ,OAAO8hE,EAAAA,EAAAA,GAAU9hE,GApBhC7Y,EAoB6C6Y,EAAK41D,YAnBzD,GACA,EAERzuE,EAAQ,GACA,GAEJ,GAPC,IAAUA,CAoBgE,EACnFjP,EAAGmS,EAAAA,EAAOgkB,OAAS,SAAUrO,GAAQ,OAAO8hE,EAAAA,EAAAA,GAAU9hE,EAAM,EAAI,EAChE9nB,EAAGmS,EAAAA,EAAOijQ,MAAQ,SAAUttP,GAAQ,OAAO8hE,EAAAA,EAAAA,GAAU9hE,GAbhC7Y,EAa+C6Y,EAAK41D,YAZ7D,EACD,EAEPzuE,EAAQ,GACD,EAEJ,GAPI,IAAUA,CAakE,EACvFjP,EAAGmS,EAAAA,EAAOs3B,UAAY,SAAU3hB,GAAQ,OAAO2sP,EAAS3sP,GAAO,EAAI,EACnE9nB,EAAGmS,EAAAA,EAAO23B,UAAY,SAAUhiB,GAAQ,OAAO2sP,EAAS3sP,EAAM,EAAI,EAClE9nB,EAAGmS,EAAAA,EAAOkjQ,aAAe,SAAUvtP,GAAQ,OAAO+uP,EAAiB/uP,EAAO,EAC1E9nB,EAAGmS,EAAAA,EAAOmjQ,YAAc,SAAUxtP,GAAQ,OAAOgvP,EAAgBhvP,EAAO,EACxE9nB,GAIAg3Q,EAAiC,WACjC,SAASA,EAAgB1uP,GACrBC,KAAK0uP,MAAQ3uP,CACjB,CAsIA,OArIA0uP,EAAgBvuP,UAAU+jP,UAAY,SAAUlvP,EAAK+W,GACjD,OAAOogP,EAASn3P,EAAK+W,EACzB,EACA2iP,EAAgBvuP,UAAUqjB,UAAY,SAAUxgB,EAAOs7D,GACnD,OAAOr7D,EAAAA,EAAAA,IAAM,EAAGq7D,GAAOp+E,KAAI,SAAUC,GAAK,OAAOgsQ,EAASnpP,EAAO7iB,EAAI,GACzE,EACAuuQ,EAAgBvuP,UAAU3nB,KAAO,SAAUwlD,GACvC,IAAIr7B,EAAQ1C,KACR2e,EAAUof,EAAQpf,QAAS3L,EAAc+qB,EAAQ/qB,YAAa24O,EAAe5tN,EAAQ4tN,aAAcz2P,EAAM6oC,EAAQ7oC,IAAKH,EAAMgpC,EAAQhpC,IAAK8pB,EAAekf,EAAQlf,aAAcpnC,EAAKsmD,EAAQngB,eAAgBA,OAAwB,IAAPnmC,EAAgB4nC,EAAAA,EAAuB5nC,EAAImnC,EAAWmf,EAAQnf,SAC9R,IAAKA,EACD,OAAO8tO,EAEX,IAAIn2C,EAASv2M,KAAKmuP,iBACdvD,EAAY0D,EAAiB1vO,GAC7BquO,EAAWsB,EAAgB3vO,GAC3BmtM,EAAc6+B,EAAUzpO,cACxBqtE,GAAQxrF,EAAAA,EAAAA,IAAM,EArDP,GAsDP8lP,GAAQh1O,EAAAA,EAAAA,MACZ,OAAO9Q,EAAAA,EAAAA,IAAM,EAtDH,GAsDmB/iB,KAAI,SAAUitQ,GACvC,IAAIC,GAAW9rL,EAAAA,EAAAA,GAAUupL,EAxDlB,EAwD6BsC,GACpC,OAAO1+J,EAAMvuG,KAAI,SAAUmtQ,GACvB,IAAIC,EAAW3qP,EAAM2iC,WAAUg8B,EAAAA,EAAAA,GAAU8rL,EAAUC,GAAar4P,EAAKG,GAErE,GADkB62N,EAAcshC,EAASlsO,cAErC,OAAO,KAEX,IAAIqjO,EAAe9hP,EAAMW,QAAQgqP,EAAUzvO,EAAe7a,OACtDqnP,EAAa1nP,EAAMW,QAAQgqP,EAAUzvO,EAAe5W,KAEpDmjP,GADc3F,IAAiB4F,IACJkD,EAAAA,EAAAA,IAAmBD,EAAUzvO,GACxDssO,EAAayB,IAAkB3zP,MAAMC,QAAQ4mB,GAE3Cnc,EAAM6qP,oBAAoBF,EAAUxuO,EAAc9pB,EAAKG,IADvDonB,EAAAA,EAAAA,IAAUuC,EAAc9pB,EAAKG,IAAQwN,EAAMW,QAAQgqP,EAAUxuO,IAEnE,MAAO,CACHuiM,eAAgB7K,EAAO82C,EAASl4L,YAChC/hF,GAAI,GAAG8Q,OAAOy6B,GAASz6B,OAAOmpQ,EAASp7P,WACvCg4P,UAAWvnP,EAAMW,QAAQgqP,EAAUr6O,GACnCk3O,WAAYA,EACZ5tO,WAAWA,EAAAA,EAAAA,IAAU+wO,EAAUt4P,EAAKG,GACpC80P,WAAW,EACXxF,aAAcA,EACd2F,WAAYA,EACZC,WAAYA,EACZE,gBAAiBH,GAAcznP,EAAMW,QAAQgqP,EAAUJ,GACvD5C,kBAAmBF,GAAcznP,EAAMW,QAAQgqP,EAAUzC,GACzDL,QAAS7nP,EAAMW,QAAQgqP,EAAUvE,GACjC9oQ,MAAO0iB,EAAM8qP,UAAUH,GACvB5nQ,MAAO4nQ,EAEf,GACJ,GACJ,EACAoB,EAAgBvuP,UAAUqtP,oBAAsB,SAAUntP,EAAWoe,EAAOzpB,EAAKG,GAC7E,IAAIwN,EAAQ1C,KACRtjB,GAAS,EAMb,OALA8hC,EAAM7vB,SAAQ,SAAU4Q,IAChB+c,EAAAA,EAAAA,IAAUlc,EAAWrL,EAAKG,IAAQwN,EAAMW,QAAQjD,EAAWb,KAC3D7iB,GAAS,EAEjB,IACOA,CACX,EACA+xQ,EAAgBvuP,UAAUmD,QAAU,SAAUjD,EAAW8hE,GACrD,SAAK9hE,IAAc8hE,KAGZ9hE,EAAU+gB,gBAAkB+gD,EAAS/gD,eACxC/gB,EAAU+0D,aAAe+M,EAAS/M,WAC1C,EACAs5L,EAAgBvuP,UAAUshB,UAAY,SAAUjiB,EAAMif,GAClD,IAAKA,EAAM38B,OACP,OAAO,EAEX,IAAI4E,EAAO8Y,EAAK4hB,cAChB,OAAO3C,EAAM,GAAG2C,eAAiB16B,GAAQA,GAAQ+3B,EAAMA,EAAM38B,OAAS,GAAGs/B,aAC7E,EACAstO,EAAgBvuP,UAAUoc,UAAY,SAAUlc,EAAWrL,EAAKG,GAC5D,IAAIy5P,GAAiBntL,EAAAA,EAAAA,GAAWphE,EAAU+gB,cAAe/gB,EAAU+0D,WAAY,GAC3Es4L,GAAY14P,IAAOysE,EAAAA,EAAAA,GAAWzsE,EAAIosB,cAAepsB,EAAIogE,WAAY,IAAMw5L,EACvEjB,GAAYx4P,GAAOy5P,IAAkBntL,EAAAA,EAAAA,GAAWtsE,EAAIisB,cAAejsB,EAAIigE,WAAY,GACvF,OAAOs4L,GAAYC,CACvB,EACAe,EAAgBvuP,UAAUogB,aAAe,SAAUlgB,EAAW3a,GAC1D,OAA6C,IAAtC+oQ,EAAgBpuP,EAAW3a,EACtC,EACAgpQ,EAAgBvuP,UAAUskP,aAAe,SAAU/+P,GAC/C,OAAOA,EAAM07B,cAAgB,KAAO,CACxC,EACAstO,EAAgBvuP,UAAUkR,KAAO,SAAU3rB,EAAO4M,GAC9C,IAAIo1P,EAAWkF,EAAQt6P,GACvB,OAAKo1P,EAGEA,EAAShiQ,GAFLA,CAGf,EACAgpQ,EAAgBvuP,UAAUstP,UAAY,SAAU/nQ,GAC5C,MAAO,GAAGvB,OAAOuB,EAAM07B,cAAe,KAAKj9B,OAAO8b,KAAKva,MAAMA,GACjE,EACAgpQ,EAAgBvuP,UAAUykP,gBAAkB,SAAUl/P,GAClD,OAAOua,KAAKhgB,MAAMyF,EACtB,EACAgpQ,EAAgBvuP,UAAUlgB,MAAQ,SAAU3L,GACxC,OAAOA,EAAUA,EAAQ8sC,cAAc+T,WAAa,EACxD,EACAu5N,EAAgBvuP,UAAUgkP,UAAY,SAAUtjP,GAC5C,OA9IW,CA+If,EACA6tP,EAAgBvuP,UAAU4L,KAAO,SAAUrmB,EAAOsP,GAC9C,OAAOy5P,EAAgBz5P,EAAKtP,EAChC,EACAgpQ,EAAgBvuP,UAAUqB,MAAQ,SAAUxM,EAAKG,GAC7C,OAAOs5P,EAAgBz5P,EAAKG,GAAO,CACvC,EACAu5P,EAAgBvuP,UAAUza,MAAQ,SAAUpR,GACxC,OAAOA,EAAU2rB,KAAKmuP,iBAAiB95Q,EAAQ8gF,YAAc,EACjE,EACAs5L,EAAgBvuP,UAAU0e,SAAW,SAAUrf,EAAMrK,EAAKzR,GAGtD,YAFe,IAAXA,IAAqBA,EAAS,GACb+qQ,EAAgBjvP,EAAMrK,GAAOzR,EAC1ByoQ,EAAS3sP,GAAO,GAAKA,CACjD,EACAkvP,EAAgBvuP,UAAUiuP,eAAiB,WACvC,OAAOnuP,KAAK0uP,MAAM3tP,gBAAgB,CAAEg8M,SAAU,cAAevjO,KAAM,UACvE,EACAi1Q,EAAgBvuP,UAAUmlC,UAAY,SAAUgoN,EAAUt4P,EAAKG,GAC3D,OAAIm4P,EAAWt4P,GAAOiL,KAAKqD,QAAQgqP,EAAUt4P,IAClC2K,EAAAA,EAAAA,GAAU3K,GAEjBs4P,EAAWn4P,GAAO8K,KAAKqD,QAAQgqP,EAAUn4P,IAClCwK,EAAAA,EAAAA,GAAUxK,GAEdm4P,CACX,EACOoB,CACX,CA1IqC,aClCjC5gQ,IAAYpW,EAAK,CAAC,GACfymC,EAAAA,EAAiBx3B,OAASsnQ,EAC7Bv2Q,EAAGymC,EAAAA,EAAiBz3B,MAAQgoQ,EAC5Bh3Q,EAAGymC,EAAAA,EAAiBI,QAAUuvO,EAC9Bp2Q,EAAGymC,EAAAA,EAAiBK,SAAWyuO,EAC/Bv1Q,GAQA4qC,EAAgC,WAChC,SAASA,EAAeusO,GACpB5uP,KAAKm6E,OAASj8D,EAAAA,EAAiBx3B,MAC/BsZ,KAAKpmB,IAAMskC,EAAAA,EAAiBK,QAC5Bve,KAAK4uP,cAAgBA,CACzB,CA0CA,OAzCAvsO,EAAeniB,UAAUQ,UAAY,SAAUy5E,EAAQvgG,GACnDomB,KAAKm6E,OAASA,EACdn6E,KAAKpmB,IAAMA,CACf,EACAyoC,EAAeniB,UAAUuH,QAAU,SAAUia,EAAM3hB,GAC/C,OAAO,IAAIlS,EAAS,GAAG3J,OAAOw9B,KAAO3hB,EACzC,EACAsiB,EAAeniB,UAAU2hB,SAAW,SAAUH,EAAMxtC,GAChD8rB,KAAKoR,KAAKsQ,GAAO,EAAGxtC,EACxB,EACAmuC,EAAeniB,UAAUuoP,OAAS,SAAU/mO,EAAMxtC,GAC9C8rB,KAAKoR,KAAKsQ,EAAM,EAAGxtC,EACvB,EACAmuC,EAAeniB,UAAU4hB,aAAe,SAAU7D,GAC1CA,IAAeje,KAAKm6E,QAGxBn6E,KAAK4uP,cAAc,CAAEltO,KAAM1hB,KAAKm6E,QACpC,EACA93D,EAAeniB,UAAU0hB,YAAc,SAAUF,GAC7C,OAAO1hB,KAAKm6E,OAASz4D,CACzB,EACAW,EAAeniB,UAAUsoP,UAAY,SAAU9mO,GAC3C,OAAOA,EAAO1hB,KAAKpmB,GACvB,EACAyoC,EAAeniB,UAAU2B,MAAQ,SAAU6f,GACvC,OAAIA,EAAO1hB,KAAKm6E,OACLn6E,KAAKm6E,OAEZz4D,EAAO1hB,KAAKpmB,IACLomB,KAAKpmB,IAET8nC,CACX,EACAW,EAAeniB,UAAUkR,KAAO,SAAUsQ,EAAMjZ,EAAQv0B,GACpD,IAAIksB,EAAYJ,KAAK6B,MAhDZ,SAAU6f,EAAMjZ,GAC7B,IAAIrI,EAAY8d,EAAAA,EAAiBA,EAAAA,EAAiBwD,EAAOjZ,IACzD,YAAqBv1B,IAAdktB,EAA0BA,EAAYshB,CACjD,CA6CmCohO,CAAWphO,EAAMjZ,IACxCrI,IAAcshB,GAGlB1hB,KAAK4uP,cAAc,CAAEltO,KAAMthB,GAAalsB,EAC5C,EACOmuC,CACX,CAhDoC,+DkBlBhCwsO,EAAgB,CAChB,GAAMjlQ,EAAAA,EAAOs3B,SACb,GAAMt3B,EAAAA,EAAO23B,SACb,GAAM33B,EAAAA,EAAOmjQ,WACb,GAAMnjQ,EAAAA,EAAOkjQ,YACb,GAAMljQ,EAAAA,EAAOwkB,KACb,GAAMxkB,EAAAA,EAAOgjQ,GACb,GAAMhjQ,EAAAA,EAAOgkB,MACb,GAAMhkB,EAAAA,EAAOijQ,KACb,UAAWjjQ,EAAAA,EAAOklQ,UAClB,UAAWllQ,EAAAA,EAAOmlQ,WAKlBzsO,EAAmC,WACnC,SAASA,EAAkB5D,GACvB1e,KAAK0e,IAAMA,CACf,CAmBA,OAlBA4D,EAAkBpiB,UAAU7N,OAAS,SAAUne,GAC3C,IAAIme,EAAS,GAAGnO,OAAOhQ,EAAMu/L,SAAWv/L,EAAMw/L,QAAU,QAAU,IAAIxvL,OAAOhQ,EAAMm2B,SACnF,OAAOwkP,EAAcx8P,EACzB,EACAiwB,EAAkBpiB,UAAUkR,KAAO,SAAU3rB,EAAO4M,EAAQ4rB,EAAYxW,EAASvzB,GAC7E,OAAKuzB,EAGDpV,IAAWzI,EAAAA,EAAOklQ,WAAa9uP,KAAK0e,IAAI8pO,UAAUvqO,IAClDje,KAAK0e,IAAI+pO,OAAOxqO,EAAY/pC,GACrBuR,GAEP4M,IAAWzI,EAAAA,EAAOmlQ,WAAa/uP,KAAK0e,IAAIkD,YAAY3D,IACpDje,KAAK0e,IAAImD,SAAS5D,EAAY/pC,GACvBuR,GAEJgiB,EAAQ2J,KAAK3rB,EAAO4M,GAVhB5M,CAWf,EACO68B,CACX,CAvBuC,+GChBnCztB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAQW8I,EAAe,SAAUt3B,GAChC,IAAIm3B,EAASn3B,EAAMm3B,OAAQ5hC,EAAWyK,EAAMzK,SAAUgE,EAAKyG,EAAM22B,YAAaA,OAAqB,IAAPp9B,EAAgB,EAAIA,EAAIymQ,EAAchgQ,EAAMggQ,YAAa8Q,EAAsB9wQ,EAAM8wQ,oBAAqB75O,EAASj3B,EAAMi3B,OAAQr1B,EAAY5B,EAAM4B,UAAWgK,EAAU5L,EAAM4L,QAASsrB,EAAgBl3B,EAAMk3B,cAAe65O,EAAe/wQ,EAAM+wQ,aACzU5lP,EAAe,CACf60O,YAAaA,IAAe,EAC5B8Q,oBAAqBA,GAAuB,GAC5C75O,OAAQA,EACRr1B,WAAyB,IAAdA,EACXgK,QAASA,EACTolQ,gBAAiBr6O,GAVC,IAUoC,CAAEj7B,IAAK,EAAGS,MAAO,OAAQgB,OAAQ,aAAWnI,EAClGW,UAAWghC,GAXO,IAYZ,kDACA,+CAEV,OAAQthC,EAAAA,cAAoB47Q,EAAAA,EAAat6P,EAAS,CAAC,EAAGwU,GAClD91B,EAAAA,cAAoB67Q,EAAAA,EAAmB,CAAEv7Q,UAAW,iBAChDN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,uCACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,uBACpCN,EAAAA,cAAoB,MAAO,KAAM6hC,IACrC7hC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,yBACpCN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,SAAU,EAAG,aAAc,SAAU,gBAAiB,QAAS/xB,KAAM,SAAU2K,SAAU,OAAQ/O,KAAM,IAAKujC,QAAS0S,EAAAA,IAAOh2C,QAASyU,MAC3KmlQ,GACI17Q,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qDAAuDo7Q,IACvGx7Q,EACA4hC,GAAU9hC,EAAAA,cAAoB87Q,EAAAA,EAAmB,CAAEx7Q,UAAW,iCAC1DN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEoE,KAAM,QAASgyB,SAAU,EAAG,aAAc8J,EAAOP,WAAY,gBAAiB,QAASt7B,KAAM,SAAUnE,QAASggC,EAAOC,UAAYD,EAAOP,YACxKvhC,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,SAAU,EAAGxxB,WAAY,UAAWR,KAAM,QAAS,aAAc87B,EAAOL,UAAW,gBAAiB,QAASx7B,KAAM,SAAUnE,QAASggC,EAAOE,SAAWF,EAAOL,YACzM,gDC3CO,IAEIsB,EAAuB,2KCA9Bg5O,EACA,WACItvP,KAAKqxM,QAAU,GACfrxM,KAAKuvP,QAAU,EACnB,ECiEOC,EAAgB,SAAUvvQ,EAAKggB,GAA0C,OAAlChgB,EAAIggB,EAAK4C,QAAQ,IAAM5C,EAAKzmB,KAAayG,CAAK,EAUrFowC,EAAiB,CAAC,WAAY,eC5ErCo/N,EAA2B,WAC3B,SAASA,EAAUC,EAAcn4O,EAAmB10B,GAChDmd,KAAKvZ,MAAO,EACZuZ,KAAKtZ,OAAQ,EACbsZ,KAAKT,MAAO,EACZS,KAAKR,OAAQ,EACbQ,KAAKyhE,SAAU,EACfzhE,KAAK0hE,SAAU,EACf1hE,KAAK2hE,cAAe,EACpB3hE,KAAK2vP,YAAc,KACnB3vP,KAAK4vP,eAAiB,GACtB5vP,KAAK6vP,WAAa,YAClB7vP,KAAKqxM,QAAU,CACX,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KAETrxM,KAAKqkC,QAASniC,EAAAA,EAAAA,GAAQ,IAAIjlB,MAC1B+iB,KAAK0vP,aAAeA,EACpB1vP,KAAKuX,kBAAoBA,EACzBvX,KAAKnd,OAASA,EACdmd,KAAK8vP,WAAa9vP,KAAK+vP,mBAC3B,CA6SA,OA5SAptQ,OAAO6nB,eAAeilP,EAAUvvP,UAAW,OAAQ,CAC/CuK,IAAK,WACD,OAAOzK,KAAK0vP,cAChB,EACAhlP,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeilP,EAAUvvP,UAAW,QAAS,CAChDuK,IAAK,WACD,OAAOzK,KAAKqkC,MAChB,EACA35B,YAAY,EACZC,cAAc,IAElB8kP,EAAUvvP,UAAU8vP,SAAW,SAAUvqQ,GAChCA,GAIK4d,EAAAA,EAAAA,GAAQ5d,EAAOua,KAAKqkC,UAC1BrkC,KAAKqkC,QAAS3kC,EAAAA,EAAAA,GAAUja,GACxBua,KAAKiwP,gBAAe,KALpBjwP,KAAKqkC,QAASniC,EAAAA,EAAAA,GAAQ,IAAIjlB,MAC1B+iB,KAAKiwP,gBAAe,GAM5B,EACAR,EAAUvvP,UAAUgwP,SAAW,WAC3B,IAAIxtP,EAAQ1C,KAEZ,OAAOA,KAAKD,KAAKmP,gBAAgBlP,KAAKnd,QAAQpG,QADnC,SAAUM,EAAGwpB,GAAK,OAAOxpB,GAAgB,YAAXwpB,EAAE/sB,MAAiC,cAAX+sB,EAAE/sB,MAAwBkpB,EAAMytP,YAAY5pP,EAAE1D,QAAQ,GAAK,IACjE,EAC/D,EACA4sP,EAAUvvP,UAAUkwP,cAAgB,WAChC,IAAK,IAAIlwQ,EAAI,EAAGA,EAAI8f,KAAK6vP,WAAWhuQ,OAAQ3B,IACxC,IAAK8f,KAAKmwP,YAAYnwP,KAAK6vP,WAAW3vQ,IAClC,OAAO,KAGf,OAAOwf,EAAAA,EAAAA,GAAUM,KAAKva,MAC1B,EACAgqQ,EAAUvvP,UAAUmwP,iBAAmB,WACnC,OAAOrwP,KAAKq5B,MAAMr5B,KAAKD,KAAK6C,WAAW5C,KAAKva,MAAOua,KAAKnd,QAASmd,KAAKswP,iBAAiBtwP,KAAKva,MAAOua,KAAKnd,QAC5G,EACA4sQ,EAAUvvP,UAAU+vP,eAAiB,SAAUxqQ,GAE3C,IADA,IAAI8qQ,EAAevwP,KAAKswP,iBAAiBtwP,KAAKva,MAAOua,KAAKnd,QAAQwuN,QACzDnxN,EAAI,EAAGA,EAAIqwQ,EAAa1uQ,OAAQ3B,IACrC8f,KAAKwwP,YAAYD,EAAarwQ,GAAIuF,EAE1C,EACAgqQ,EAAUvvP,UAAUiwP,YAAc,SAAU50D,GACxC,OAAQA,GACJ,IAAK,IAAK,OAAOv7L,KAAKvZ,KACtB,IAAK,IACL,IAAK,IAAK,OAAOuZ,KAAKtZ,MACtB,IAAK,IAAK,OAAOsZ,KAAKT,KACtB,IAAK,IAAK,OAAOS,KAAKT,MAAQS,KAAKtZ,OAASsZ,KAAKvZ,KACjD,IAAK,IACL,IAAK,IAAK,OAAOuZ,KAAKR,MACtB,IAAK,IAAK,OAAOQ,KAAKyhE,QACtB,IAAK,IAAK,OAAOzhE,KAAK0hE,QACtB,QAAS,OAAO,EAExB,EACA+tL,EAAUvvP,UAAUswP,YAAc,SAAUj1D,EAAQ91M,GAChD,OAAQ81M,GACJ,IAAK,IAEDv7L,KAAKvZ,KAAOhB,GACE,IAAVA,GACAua,KAAKqkC,OAAOu9B,YAAY,KAE5B,MACJ,IAAK,IAED5hE,KAAKtZ,MAAQjB,GACC,IAAVA,GACAua,KAAKqkC,OAAOk9B,SAAS,GAEzB,MACJ,IAAK,IACDvhE,KAAKT,KAAO9Z,EACZ,MACJ,IAAK,IACL,IAAK,IACDua,KAAKR,MAAQ/Z,EACb,MACJ,IAAK,IACDua,KAAKyhE,QAAUh8E,EACf,MACJ,IAAK,IACDua,KAAK0hE,QAAUj8E,EACf,MACJ,QAAS,OAEjB,EACAgqQ,EAAUvvP,UAAUuwP,WAAa,SAAUl1D,EAAQ9yL,GAC/C,IAAI6lJ,GAAW5uJ,EAAAA,EAAAA,GAAUM,KAAKva,OAC9B,OAAQ81M,GACJ,IAAK,IACDjtC,EAAS1sF,YAAY0sF,EAASntI,cAAgB1Y,GAC9C,MACJ,IAAK,IACD6lJ,GAAWjtF,EAAAA,EAAAA,GAAUrhE,KAAKva,MAAOgjB,GACjC,MACJ,IAAK,IACL,IAAK,IACD6lJ,EAASntF,QAAQmtF,EAASpsJ,UAAYuG,GACtC,MACJ,IAAK,IACL,IAAK,IACD6lJ,EAAShvJ,SAASgvJ,EAAShuJ,WAAamI,GACxC,MACJ,IAAK,IACD6lJ,EAAStqJ,WAAWsqJ,EAASnqJ,aAAesE,GAC5C,MACJ,IAAK,IACD6lJ,EAAS/pJ,WAAW+pJ,EAAS5pJ,aAAe+D,GAC5C,MACJ,IAAK,IACD6lJ,EAAShvJ,SAASgvJ,EAAShuJ,WAAc,GAAKmI,GAItDzI,KAAKwwP,YAAYj1D,GAAQ,GACzBv7L,KAAKqkC,OAASiqH,CAClB,EACAmhG,EAAUvvP,UAAUwwP,UAAY,SAAUn1D,EAAQo1D,GAC9C,IAAIl5Q,EAEJ,GADAuoB,KAAK4wP,oBACAD,EAED,OADA3wP,KAAKwwP,YAAYj1D,GAAQ,GAClB,CAAE91M,MAAO,MASpB,IAPA,IAAI0nQ,EAAWntP,KAAKD,KAAK6C,WAAW5C,KAAKva,MAAOua,KAAKnd,QACjDguQ,EAAY7wP,KAAKswP,iBAAiBtwP,KAAKva,MAAOua,KAAKnd,QACnDiuQ,EAAaD,EAAUx/C,QACvB0/C,GAAW,EACX7hL,EAAS,GACT76F,EAAU,GACV28Q,EAAS,GACJ9wQ,EAAI,EAAGA,EAAIitQ,EAAStrQ,OAAQ3B,IAC7B4wQ,EAAW5wQ,KAAOq7M,GAClBlnN,GAAW2rB,KAAKmwP,YAAY50D,GAAU4xD,EAASjtQ,GAAK,IACpD6wQ,GAAW,GAELA,EAINC,GAAU7D,EAASjtQ,GAHnBgvF,GAAUi+K,EAASjtQ,GAQ3B,IAFA,IAAI+wQ,EAAa,KACbvqQ,EAAQsZ,KAAKkxP,WAAWP,GACrBt8Q,EAAQwN,OAAS,GAA2B,MAAtBxN,EAAQo0D,OAAO,IACxCp0D,EAAUA,EAAQua,MAAM,GAExBva,EAAQwN,QAAU,IAClBxN,EAAU,IAEd,IAAS6L,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAImgP,EAAShsP,EAAUs8Q,EACnBQ,EAAexjL,SAAS0yJ,EAAQ,IAEpC,KADA4wB,EAAajxP,KAAKD,KAAK6xD,UAAUsd,EAASmxJ,EAAS2wB,EAAQhxP,KAAKnd,WAC5CgxE,MAAMs9L,KAAkBt9L,MAAM8Z,SAASgjL,EAAa,KAAM,CAC1E,GAAe,MAAXp1D,IAAmB70M,EAAO,CAC1B,IAAI0qQ,EAAcD,EAAe,EAC7BC,GAAe,GAAKA,EAAc,MAClCH,GAAavxP,EAAAA,EAAAA,GAAUM,KAAKva,QACjB87E,SAAS6vL,GAChBH,EAAW97L,aAAei8L,IAC1BH,GAAa9sO,EAAAA,EAAAA,IAAek9C,EAAAA,EAAAA,GAAU4vL,GAAa,KAG/D,CACe,MAAX11D,IACA01D,GAAazvL,EAAAA,EAAAA,GAAWmM,SAAS0yJ,EAAQ,IAAKrgO,KAAKtZ,MAAQsZ,KAAKva,MAAM0vE,WAAa,EAAGn1D,KAAKT,KAAOS,KAAKva,MAAMyc,UAAY,EAAGlC,KAAKR,MAAQQ,KAAKva,MAAM6a,WAAa,EAAGN,KAAKyhE,QAAUzhE,KAAKva,MAAM0e,aAAe,EAAGnE,KAAK0hE,QAAU1hE,KAAKva,MAAMif,aAAe,EAAG1E,KAAK2hE,aAAe3hE,KAAKva,MAAM2vE,kBAAoB,GAC3Sp1D,KAAKT,MAAQ0xP,EAAW/uP,YAAclC,KAAKva,MAAMyc,YACjD+uP,GAAa9sO,EAAAA,EAAAA,IAAek9C,EAAAA,EAAAA,GAAU4vL,GAAa,KAG/D,CACA,GAAIA,EAGA,OAFAjxP,KAAKqkC,OAAS4sN,EACdjxP,KAAKwwP,YAAYj1D,GAAQ,GAClB,CAAE91M,MAAOua,KAAKva,OAEzBpR,EAAU,EACd,CACA,OAAIqS,IACAuqQ,EAAajxP,KAAKD,KAAK6xD,UAAUsd,EAASxoF,EAAQsqQ,EAAQhxP,KAAKnd,UAE3Dmd,KAAKqkC,OAAS4sN,EACdjxP,KAAKwwP,YAAYj1D,GAAQ,GAClB,CAAE91M,MAAOua,KAAKva,SAGT,MAAhBkrQ,IACA3wP,KAAK2vP,YAAe3vP,KAAKqxP,YAAYR,EAAUtB,QAASh0D,GAA6C,OAAlC9jN,EAAK,CAAC,GAAM8jN,IAAU,EAAM9jN,GAC/FuoB,KAAKwwP,YAAYj1D,GAAQ,IAEtB,CAAE91M,MAAO,MACpB,EACAgqQ,EAAUvvP,UAAUoxP,UAAY,SAAU/1D,GACtC,OAAOv7L,KAAKD,KAAKmP,gBAAgBlP,KAAKnd,QAAQpG,OAAO+yQ,EAAe,CAAC,GAAGj0D,EAC5E,EACAk0D,EAAUvvP,UAAU0wP,iBAAmB,WACnC,IAAIW,EAAsC,OAArBvxP,KAAK2vP,YAE1B,OADA3vP,KAAK2vP,YAAc,KACZ4B,CACX,EACA9B,EAAUvvP,UAAUmxP,YAAc,SAAUjiL,EAAOmsH,GAC/C,IAAI14L,EAAU7C,KAAKwxP,YAAYpiL,EAAOmsH,GACtC,MAAwB,UAAjB14L,EAAQrpB,MAAoBqpB,EAAQhC,KAC/C,EACA4uP,EAAUvvP,UAAUsxP,YAAc,SAAUpiL,EAAOmsH,GAC/C,OAAOnsH,EAAMtsF,QAAO,SAAUmd,GAAQ,OAAyC,IAAlCA,EAAK4C,QAAQoY,QAAQsgL,EAAgB,IAAG,EACzF,EACAk0D,EAAUvvP,UAAUgxP,WAAa,SAAUO,GAEvC,GADAzxP,KAAK4vP,gBAAkB6B,EAAUj8N,cACF,IAA3Bx1B,KAAK8vP,WAAWjuQ,OAChB,MAAO,GAEX,KAAOme,KAAK4vP,eAAe/tQ,OAAS,GAAG,CACnC,IAAK,IAAI3B,EAAI,EAAGA,EAAI8f,KAAK8vP,WAAWjuQ,OAAQ3B,IACxC,GAAsE,IAAlE8f,KAAK8vP,WAAW5vQ,GAAGs1C,cAAcva,QAAQjb,KAAK4vP,gBAC9C,OAAO5vP,KAAK8vP,WAAW5vQ,GAG/B,IAAIwxQ,EAAa/jL,SAAS3tE,KAAK4vP,eAAgB,IAE/C,GAAI8B,GAAc,GAAKA,GAAc,IAAMA,EAAWx8N,aAAel1B,KAAK4vP,eACtE,OAAO5vP,KAAK8vP,WAAW4B,EAAa,GAExC1xP,KAAK4vP,eAAiB5vP,KAAK4vP,eAAe7oQ,UAAU,EAAGiZ,KAAK4vP,eAAe/tQ,OAC/E,CACA,MAAO,EACX,EACA4tQ,EAAUvvP,UAAU6vP,kBAAoB,WAEpC,IADA,IAAIhjP,EAAkB/M,KAAKD,KAAKmP,gBAAgBlP,KAAKnd,QAC5C3C,EAAI,EAAGA,EAAI6sB,EAAgBlrB,OAAQ3B,IACxC,GAAgC,UAA5B6sB,EAAgB7sB,GAAG1G,MAAoBuzB,EAAgB7sB,GAAG2gB,MAC1D,OAAOb,KAAKD,KAAKgB,gBAAgBgM,EAAgB7sB,GAAG2gB,OAG5D,MAAO,EACX,EACA4uP,EAAUvvP,UAAUowP,iBAAmB,SAAU/wP,EAAM1c,GAInD,IAHA,IAAIkqB,EAAkB/M,KAAKD,KAAKmP,gBAAgBrsB,GAC5CusF,EAAQ,GACRmgL,EAAU,GACLrvQ,EAAI,EAAGA,EAAI6sB,EAAgBlrB,OAAQ3B,IAExC,IADA,IAAIyxQ,EAAa3xP,KAAKD,KAAK6C,WAAWrD,EAAM,CAAEsD,QAASkK,EAAgB7sB,GAAG2iB,UAAWhhB,OAC9E8vQ,EAAa,GAChBviL,EAAMpuE,KAAKhB,KAAKqxM,QAAQtkM,EAAgB7sB,GAAG2iB,QAAQ,KAAO,KAC1D0sP,EAAQvuP,KAAK+L,EAAgB7sB,IAC7ByxQ,IAGR,IAAIC,EAAc,IAAItC,EAGtB,OAFAsC,EAAYvgD,QAAUjiI,EAAMxxC,KAAK,IACjCg0N,EAAYrC,QAAUA,EACfqC,CACX,EACAnC,EAAUvvP,UAAUm5B,MAAQ,SAAUt7C,EAAM4vH,GAKxC,IAHA,IAAIkkJ,EAAa,GACbC,EAAe,GACfjvQ,EAAS8qH,EAAK0jG,QACTn9I,EAAIrxE,EAAOhB,OAAS,EAAGqyE,GAAK,EAAGA,IACpC,IAA4C,IAAxCl0D,KAAK6vP,WAAW50O,QAAQp4B,EAAOqxE,KAAcl0D,KAAKmwP,YAAYttQ,EAAOqxE,IACrE29L,EAAa9zQ,EAAKm2E,GAAK29L,EACvBC,EAAejvQ,EAAOqxE,GAAK49L,MAE1B,CAED,IADA,IAAIC,EAAgBlvQ,EAAOqxE,GACpBA,GAAK,GAAK69L,IAAkBlvQ,EAAOqxE,IACtCA,IASJ,IAPAA,IAEI29L,EADA7xP,KAAK2vP,aAAe3vP,KAAK2vP,YAAYoC,GACxB,IAAMF,EAGN7xP,KAAK8P,cAAc69F,EAAK4hJ,QAAQr7L,IAAM29L,EAEhDC,EAAajwQ,OAASgwQ,EAAWhwQ,QACpCiwQ,EAAejvQ,EAAOqxE,GAAK49L,CAEnC,CAEJ,MAAO,CAAE/zQ,KAAM8zQ,EAAYhvQ,OAAQivQ,EACvC,EACArC,EAAUvvP,UAAU4P,cAAgB,SAAU7P,GAC1C,IAAIsX,EAAqBvX,KAAKuX,mBAAqB,OACnD,OAAIA,EAAkBtX,EAAKzmB,MAChB+9B,EAAkBtX,EAAKzmB,MAER,kBAAtB+9B,EACOtX,EAAK4C,QAET7C,KAAKD,KAAK+P,cAAcntB,OAAO2mB,OAAOrJ,EAAM,CAAE88M,SAAUxlM,IACnE,EACOk4O,CACX,CA1U+B,mICN3BxpP,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAoBIlW,EAAyC,SAAUxf,GAEnD,SAASwf,EAAwB9oC,GAC7B,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAiKxC,OAhKA0C,EAAMsvP,UAAY,KAClBtvP,EAAM+jN,cAAgB,GACtB/jN,EAAMw4K,OAAQ,EACdx4K,EAAM/iB,SAAW,KACjB+iB,EAAMuvP,SAAW,KACjBvvP,EAAMwvP,UAAW/9O,EAAAA,EAAAA,KACjBzR,EAAMyvP,oBAAsB,GAI5BzvP,EAAMuF,MAAQ,WACNvF,EAAM/iB,UACN+iB,EAAM/iB,SAASsoB,OAEvB,EAIAvF,EAAM0vP,YAAc,WACZ1vP,EAAM2F,SAAW3F,EAAM2F,QAAQgqP,mBAC/B3vP,EAAM2F,QAAQgqP,kBAAkB3vP,EAAMmV,SAASjB,MACzC,GACAlU,EAAMxkB,MAAMw4B,mBAAqBsQ,EAAwB3d,aAAaqN,kBAEpF,EACAhU,EAAM4vP,cAAgB,SAAUp+Q,GAC5B,GAAKwuB,EAAM2F,SAAY3F,EAAMsvP,UAA7B,CAGA,IAAIvsQ,GAAQylB,EAAAA,EAAAA,IAAmBxI,GAAOkvD,UAAUlvD,EAAM2F,QAAQ5iB,MAAOid,EAAMxkB,MAAM2E,SAAW6f,EAAMjd,MAC9FukL,EAAWtnK,EAAMjd,MACrBid,EAAMsvP,UAAUhC,SAASvqQ,GACzBid,EAAM6vP,cAAcr+Q,EAAO81L,EAJ3B,CAKJ,EAEAtnK,EAAM8vP,kBAAoB,SAAUt+Q,GAEhCA,EAAM+gB,iBACN,IAAI+U,GAAgBC,EAAAA,EAAAA,GAAiBzb,UAEjCkU,EAAM2F,SAAW2B,IAAkBtH,EAAM2F,SACzC3F,EAAM2F,QAAQJ,MAAM,CAAEkC,eAAe,GAE7C,EACAzH,EAAM2uL,YAAc,WAChB3uL,EAAMw4K,OAAQ,CAClB,EACAx4K,EAAM+vP,cAAgB,SAAUv+Q,GAC5B,GAAKwuB,EAAM2F,SAAY3F,EAAMsvP,UAA7B,CAGA,GAAItvP,EAAMw4K,MAGN,OAFAx4K,EAAM4vP,cAAcp+Q,QACpBwuB,EAAMw4K,OAAQ,GAGlB,IAAIzjM,EAAKirB,EAAMsvP,UAAU3B,mBAAoBtyQ,EAAOtG,EAAGsG,KAAM0oO,EAAgBhvO,EAAGoL,OAChF6f,EAAM+jN,cAAgBA,EACtB,IAAIisC,EAAmBhwP,EAAMjd,MACzB+mF,EFtGuB,SAAUmmL,EAAeC,EAAWC,EAAeC,GAKtF,IAAIC,EAAmBJ,EAAcG,EAAiBH,EAAc9wQ,OAASgxQ,EAAchxQ,QACvFmxQ,EAAUL,EAAc5rQ,UAAU,EAAG+rQ,EAAiBH,EAAc9wQ,OAASgxQ,EAAchxQ,QAC3FoxQ,EAAUJ,EAAc9rQ,UAAU,EAAG+rQ,GACrCtmL,EAAO,GAEX,GAAIwmL,IAAYC,GAAWH,EAAiB,EAExC,OADAtmL,EAAKxrE,KAAK,CAAC4xP,EAAUE,EAAiB,GAAIG,EAAQH,EAAiB,KAC5DtmL,EAEX,GAAiC,IAA7BwmL,EAAQ/3O,QAAQg4O,KACI,IAAnBA,EAAQpxQ,QAAgB+wQ,EAAUK,EAAQpxQ,OAAS,KAAO+wQ,EAAUK,EAAQpxQ,SAAU,CAEvF,IAAIqxQ,EAAgB,GAKG,IAAnBD,EAAQpxQ,QACR2qF,EAAKxrE,KAAK,CAAC4xP,EAAU,GAAIK,EAAQ,KAErC,IAAK,IAAI/yQ,EAAI+yQ,EAAQpxQ,OAAQ3B,EAAI8yQ,EAAQnxQ,OAAQ3B,IACzC0yQ,EAAU1yQ,KAAOgzQ,GAAkC,MAAjBN,EAAU1yQ,KAC5CgzQ,EAAgBN,EAAU1yQ,GAC1BssF,EAAKxrE,KAAK,CAACkyP,EAAe,MAGlC,OAAO1mL,CACX,CAKA,GAAiC,IAA7BymL,EAAQh4O,QAAQ+3O,IAAoD,MAAlCJ,EAAUE,EAAiB,GAAY,CACzE,IAAIv3D,EAASq3D,EAAU,GACvB,IAAS1yQ,EAAI4U,KAAKI,IAAI,EAAG89P,EAAQnxQ,OAAS,GAAI3B,EAAI0yQ,EAAU/wQ,OAAQ3B,IAChE,GAAqB,MAAjB0yQ,EAAU1yQ,GAAY,CACtBq7M,EAASq3D,EAAU1yQ,GACnB,KACJ,CAEJ,MAAO,CAAC,CAACq7M,EAAQ03D,EAAQH,EAAiB,IAC9C,CAEA,MAAoC,MAAhCG,EAAQA,EAAQpxQ,OAAS,IAAcoxQ,EAAQA,EAAQpxQ,OAAS,KAAOkxQ,EAChE,CAAC,CAACH,EAAUE,EAAiB,GAAI,MAGrC,CAAC,CAACF,EAAUE,EAAiB,GAAIG,EAAQH,EAAiB,IACrE,CEiDuBK,CAA0Bp1Q,EAAM2kB,EAAM+jN,cAAe/jN,EAAM2F,QAAQ5iB,MAAOid,EAAMoiG,UAAU/hG,OACjGqwP,EAAkC,IAAhB5mL,EAAK3qF,QAA+B,MAAf2qF,EAAK,GAAG,GACnD,IAAK4mL,EACD,IAAK,IAAIlzQ,EAAI,EAAGA,EAAIssF,EAAK3qF,OAAQ3B,IAC7BwiB,EAAMsvP,UAAUtB,UAAUlkL,EAAKtsF,GAAG,GAAIssF,EAAKtsF,GAAG,IAGlDssF,EAAK3qF,QAAyB,MAAf2qF,EAAK,GAAG,IACvB9pE,EAAM0nJ,aAAa1nJ,EAAM2wP,kBAAkB7mL,EAAK,GAAG,KAEnD4mL,GACA1wP,EAAM4wP,kBAAkB,GAE5B5wP,EAAM6vP,cAAcr+Q,EAAOw+Q,EAtB3B,CAuBJ,EACAhwP,EAAM6wP,aAAe,SAAU3yP,GAC3B8B,EAAM0nJ,aAAa1nJ,EAAM8wP,iBAAiB9wP,EAAMoiG,UAAU/hG,OAC9D,EACAL,EAAM+wP,YAAc,SAAUv/Q,IACN+1B,EAAAA,EAAAA,GAAiBzb,YACfkU,EAAM2F,SACxBn0B,EAAM+gB,gBAEd,EACAyN,EAAMgxP,MAAQ,SAAUx/Q,IACA+1B,EAAAA,EAAAA,GAAiBzb,YACfkU,EAAM2F,UAGxBn0B,EAAMi+B,YAAYwhP,OAAS,GAC3BjxP,EAAMkxP,aAAa1/Q,GAEnBA,EAAMi+B,YAAYwhP,OAAS,GAC3BjxP,EAAMmxP,aAAa3/Q,GAE3B,EACAwuB,EAAMkxP,aAAe,SAAU1/Q,GAC3BwuB,EAAMoxP,uBAAuB,EAAG5/Q,EACpC,EACAwuB,EAAMmxP,aAAe,SAAU3/Q,GAC3BwuB,EAAMoxP,wBAAwB,EAAG5/Q,EACrC,EACAwuB,EAAMqxP,eAAiB,SAAU7/Q,GAC7B,IAAIA,EAAM0+B,OAAV,CAGA,OAAQ1+B,EAAMm2B,SACV,KAAK,GAMD3H,EAAM4wP,mBAAmB,GACzB,MACJ,KAAM,GAKF5wP,EAAMoxP,uBAAuB,EAAG5/Q,GAChC,MACJ,KAAK,GAKDwuB,EAAM4wP,kBAAkB,GACxB,MACJ,KAAK,GAKD5wP,EAAMoxP,wBAAwB,EAAG5/Q,GACjC,MACJ,QAKI,OAERA,EAAM+gB,gBAtCN,CAuCJ,EACAyN,EAAMsxP,eAAiB,SAAUpzP,GACzB8B,EAAMmD,SACNnD,EAAMmD,QAAQ0X,UAAUE,IAAI,WAEhC/a,EAAM6L,SAAS,CAAEsH,SAAS,GAC9B,EACAnT,EAAMuxP,cAAgB,SAAUrzP,GACxB8B,EAAMmD,SACNnD,EAAMmD,QAAQ0X,UAAUC,OAAO,WAEnC9a,EAAM6L,SAAS,CAAEsH,SAAS,GAC9B,GACAK,EAAAA,EAAAA,GAAgBC,EAAAA,GAChBzT,EAAM3vB,MAAQ,CACV8iC,SAAS,GAENnT,CACX,CA+cA,OAnnBAuD,EAAU+gB,EAAyBxf,GAwKnCwf,EAAwB9mB,UAAU4K,kBAAoB,WAClD9K,KAAKoyP,cACDpyP,KAAK6F,SACL7F,KAAK6F,QAAQ3sB,iBAAiB,QAAS8mB,KAAKyzP,YAAa,CAAEvvE,SAAS,GAE5E,EAIAl9J,EAAwB9mB,UAAU8K,mBAAqB,SAAUpK,EAAGmlL,GAC5D/lL,KAAKmyP,qBAAuBpsE,EAAUlwK,UAAY7V,KAAKjtB,MAAM8iC,QAC7D7V,KAAKoqJ,aAAapqJ,KAAKqzP,kBAAkBrzP,KAAKmyP,2BAEdj/Q,IAA3B8sB,KAAK9hB,MAAMX,aAA6ByiB,KAAK8kG,UAAU/hG,QAAU/C,KAAK8kG,UAAU99F,KACrFhH,KAAKoqJ,aAAa,CAAErnJ,MAAO,EAAGiE,IAAKhH,KAAKymN,cAAc5kO,SAE1Dme,KAAKoyP,aACT,EAIAprO,EAAwB9mB,UAAU6O,qBAAuB,WACjD/O,KAAK6F,SACL7F,KAAK6F,QAAQusB,oBAAoB,QAASpyB,KAAKyzP,YAEvD,EAIAzsO,EAAwB9mB,UAAUnrB,OAAS,WACvC,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAG8B,KAAMA,OAAc,IAAP1B,EAAgBmvC,EAAwB3d,aAAa9vB,KAAO1B,EAAIK,EAAKT,EAAG0M,SAAUA,OAAkB,IAAPjM,EAAgB8uC,EAAwB3d,aAAallB,SAAWjM,EAAIG,EAAKZ,EAAG6/B,QAASA,OAAiB,IAAPj/B,EAAgB2uC,EAAwB3d,aAAaiO,QAAUj/B,EACjS2nB,KAAK9hB,MAAMxL,OACXstB,KAAK9hB,MAAMxL,KAAK2B,QAAU2rB,MAE9B,IAAIqP,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjD9hB,EAAQ2W,EAASA,EAAS,CAAC,EAAGmyB,EAAwB3d,cAAerJ,KAAK9hB,OAC1EpI,EAAOoI,EAAMpI,KAAMD,EAAQqI,EAAMrI,MAAOzC,EAAK8K,EAAM9K,GACnD8gR,EAAcl0P,KAAKjiB,KACnBA,EAAOm2Q,IAAgBl0P,KAAK9hB,MAAMX,YAAc,GAAK22Q,EACrD32Q,EAAc22Q,IAAgBl0P,KAAK9hB,MAAMX,YAAc22Q,OAAchhR,EACrEihR,EAAU/gR,GAAM4sB,KAAKkyP,SACrB/9Q,GAAW6rB,KAAKgX,gBAAkBhX,KAAK6X,SAASjB,MAChDw9O,EAAyB3xM,EAAc,GAAIpyB,GAAgB,GAC3DrwB,KAAK9hB,MAAMrK,WACXugR,EAAuBpzP,KAAKhB,KAAK9hB,MAAMrK,WAE3C,IAAIwgR,EAAa9gR,EAAAA,cAAoB0kC,EAAAA,EAAgB,CAAErO,QAAS5J,KAAKg0P,eAAgBlqP,OAAQ9J,KAAKi0P,gBAAiB,SAAUx8Q,GACzH,IAAII,EACA+xB,EAAUnyB,EAAGmyB,QAASE,EAASryB,EAAGqyB,OACtC,OAAQv2B,EAAAA,cAAoB,OAAQ,CAAEQ,IAAK,SAAUwxB,GAAQ7C,EAAMuvP,SAAW1sP,CAAM,EAAG7xB,MAAQmC,OAErF3C,EADA,CAAEmH,MAAOqoB,EAAMxkB,MAAM7D,OACVshB,IAAK+G,EAAMxkB,MAAMyd,IAAK9nB,WAAWu7B,EAAAA,EAAAA,GAAW,cAAe,WAAYv3B,EAAK,CAAC,EAC1FA,EAAG,WAAWqM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EAC9D1B,EAAG,WAAWqM,OAAOC,IAAaA,EAClCtM,EAAG,aAAaqM,OAAOk0B,EAAAA,EAAeE,WAAWhB,IAAYA,IAAYA,EACzEz/B,EAAG,cAAgB1D,EACnB0D,EAAG,cAAgB6qB,EAAMiU,SACzB9+B,EAAG,cAAgB6qB,EAAMxkB,MAAMhE,SAC/BrC,GAAK6qB,EAAMxkB,MAAMrK,WAAY+1B,QAASA,EAASE,OAAQA,GAC3Dv2B,EAAAA,cAAoB,QAAS,CAAEwE,KAAM2qB,EAAMxkB,MAAMs6B,UAAY,UAAW73B,SAAU+hB,EAAMxkB,MAAMw6B,SAAUnN,SAAU7I,EAAMxkB,MAAMqtB,SAAUrxB,SAAUwoB,EAAMxkB,MAAMhE,SAAU8F,WAA6B9M,IAAtBwvB,EAAMxkB,MAAM8B,MAAsB0iB,EAAMxkB,MAAM8B,MAAQk0Q,EAAa16Q,KAAM,OAAQ86Q,YAAY,EAAOxlO,aAAc,MAAOylO,YAAa,MAAO1gR,UAAW,gBAAiBT,GAAI+gR,EAAS,aAAczxP,EAAMxkB,MAAMi9O,UAAW,kBAAmBz4N,EAAMxkB,MAAMs5B,eAAgB,mBAAoB9U,EAAMxkB,MAAMu5B,gBAAiB,gBAAiB/U,EAAMxkB,MAAMw+B,aAAc,gBAAiBha,EAAMxkB,MAAMhE,SAAU,gBAAiBwoB,EAAMxkB,MAAM65B,aAAc,gBAAiBrV,EAAMxkB,MAAMu6B,aAAc+7O,QAAS9xP,EAAMgxP,MAAOr+Q,QAASqtB,EAAM6wP,aAAckB,QAAS/xP,EAAM+vP,cAAeiC,QAAShyP,EAAM2uL,YAAa5lL,UAAW/I,EAAMqxP,eAAgBvuQ,SAAU8kB,EAAAA,EAAM7kB,MAAO1H,EAAMR,YAAaA,EAAazH,KAAMA,EAAM/B,IAAK,SAAUy6C,GAAS,OAAO9rB,EAAM/iB,SAAW6uC,CAAO,IAC15B9rB,EAAMxkB,MAAMzK,SACZivB,EAAMxkB,MAAMy2Q,UAAaphR,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,gCAAiCg8B,YAAanN,EAAM8vP,mBAClHj/Q,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,UAAW,EAAG/xB,KAAM,SAAU89B,QAAS,KAAMzjC,UAAW,qBAAsBuB,KAAM,eAAgBujC,QAASi8O,EAAAA,IAAgB,aAAcvlP,EAAoBG,iBAAiBqlP,EAAAA,GAAenlP,EAAAA,GAASmlP,EAAAA,KAAiB70Q,MAAOqvB,EAAoBG,iBAAiBqlP,EAAAA,GAAenlP,EAAAA,GAASmlP,EAAAA,KAAiBx/Q,QAASqtB,EAAMkxP,eAC3VrgR,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,UAAW,EAAG/xB,KAAM,SAAU89B,QAAS,KAAMzjC,UAAW,qBAAsBuB,KAAM,iBAAkBujC,QAASymN,EAAAA,IAAkB,aAAc/vN,EAAoBG,iBAAiBslP,EAAAA,GAAeplP,EAAAA,GAASolP,EAAAA,KAAiB90Q,MAAOqvB,EAAoBG,iBAAiBslP,EAAAA,GAAeplP,EAAAA,GAASolP,EAAAA,KAAiBz/Q,QAASqtB,EAAMmxP,gBAC3W,IACA,OAAOh+Q,EACAtC,EAAAA,cAAoBkqE,EAAAA,EAAe,CAAE5nE,MAAOA,EAAOwjC,SAAU86O,EAASz2M,YAAaw2M,EAAa56O,YAAanlC,EAASolC,eAAgBvZ,KAAK9hB,MAAMhE,SAAUzG,SAAU4gR,EAAW3gR,MAAO,CAAE2G,MAAO2lB,KAAK9hB,MAAM7D,SAC5Mg6Q,CACV,EACA1xQ,OAAO6nB,eAAewc,EAAwB9mB,UAAW,QAAS,CAK9DuK,IAAK,WACD,YAAiCv3B,IAA7B8sB,KAAK2V,oBACE3V,KAAK2V,oBAET3V,KAAKgyP,WAAahyP,KAAKgyP,UAAU5B,eAC5C,EACA1lP,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAewc,EAAwB9mB,UAAW,OAAQ,CAI7DuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMpI,IACtB,EACA40B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAewc,EAAwB9mB,UAAW,MAAO,CAC5DuK,IAAK,WACD,YAA0Bv3B,IAAnB8sB,KAAK9hB,MAAM6W,IACZiL,KAAK9hB,MAAM6W,IACXiyB,EAAwB3d,aAAatU,GAC/C,EACA2V,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAewc,EAAwB9mB,UAAW,MAAO,CAC5DuK,IAAK,WACD,YAA0Bv3B,IAAnB8sB,KAAK9hB,MAAMgX,IACZ8K,KAAK9hB,MAAMgX,IACX8xB,EAAwB3d,aAAanU,GAC/C,EACAwV,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAewc,EAAwB9mB,UAAW,OAAQ,CAI7DuK,IAAK,WACD,IAAIvsB,EAAQ2W,EAASA,EAAS,CAAC,EAAGulB,EAAU/Q,cAAerJ,KAAK9hB,OAC5DzG,EAAKyG,EAAMq5B,kBAAmBA,OAA2B,IAAP9/B,EAAgBuvC,EAAwB3d,aAAakO,kBAAoB9/B,EAAII,EAAKqG,EAAM2E,OAAQA,OAAgB,IAAPhL,EAAgBmvC,EAAwB3d,aAAaxmB,OAAShL,EAAI4N,EAAQvH,EAAMuH,MAAOlP,EAAe2H,EAAM3H,aACpP,OAAnBypB,KAAKgyP,WACLhyP,KAAKgyP,UAAY,IAAIvC,EAAUzvP,KAAKD,KAAK8O,KAAK7O,MAAOuX,EAAmB10B,GACxEmd,KAAKgyP,UAAUhC,SAASvqQ,GAASlP,GAAgB,QAGjDypB,KAAKgyP,UAAUnvQ,OAASA,EACxBmd,KAAKgyP,UAAUz6O,kBAAoBA,QAEzBrkC,IAAVuS,GAAuBua,KAAKva,QAAUA,GACtCua,KAAKgyP,UAAUhC,SAASvqQ,GAE5B,IAAIvN,EAAK8nB,KAAKgyP,UAAU3B,mBAAoB6D,EAAch8Q,EAAG6F,KAAM0oO,EAAgBvuO,EAAG2K,OAEtF,OADAmd,KAAKymN,cAAgBA,EACQ,OAAtBvoO,EAAMX,kBAA8CrK,IAAtBgL,EAAMX,aACnCyiB,KAAKjtB,MAAM8iC,SACX7V,KAAKgyP,UAAU9B,WAEjBgE,EADAh2Q,EAAMX,WAEhB,EACAmtB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAewc,EAAwB9mB,UAAW,WAAY,CAIjEuK,IAAK,WACD,IFrSqBrK,EAAWrL,EAAKG,EEqSjC0K,GFrSiBQ,EEqSGJ,KAAKva,MFrSGsP,EEqSIiL,KAAKjL,IFrSJG,EEqSS8K,KAAK9K,KFrSe,OAAdkL,KAAyBrL,GAAOA,EAAMqL,GAAelL,GAAOA,EAAMkL,MEsS/G8N,EAAAA,EAAAA,IAAclO,KAAKva,MAAOua,KAAK9hB,MAAMw1B,QAAS1T,KAAK9hB,MAAMy1B,UAC5D8C,OAA+CvjC,IAAjC8sB,KAAK9hB,MAAMw4B,kBACzBviC,IAAY6rB,KAAK2W,UAA2B,OAAf3W,KAAKva,QAAmBma,EACrDgX,OAA6B1jC,IAArB8sB,KAAK9hB,MAAM04B,MAAsB5W,KAAK9hB,MAAM04B,MAAQziC,EAChE,MAAO,CACHsiC,YAAaA,EACbI,cAAgB7W,KAAKva,OAASua,KAAK9K,IAAIjD,UAAY+N,KAAKva,MAAMwM,YAAc,EAC5E6kB,eAAiB9W,KAAKva,OAASua,KAAKva,MAAMwM,UAAY+N,KAAKjL,IAAI9C,YAAc,EAC7E2kB,MAAOA,EACPG,aAA6B,OAAf/W,KAAKva,MAE3B,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAewc,EAAwB9mB,UAAW,UAAW,CAgChEuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAewc,EAAwB9mB,UAAW,iBAAkB,CAIvEuK,IAAK,WACD,YAAqCv3B,IAA9B8sB,KAAK9hB,MAAM84B,eACZhX,KAAK9hB,MAAM84B,eACXgQ,EAAwB3d,aAAa2N,cAC/C,EACAtM,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAewc,EAAwB9mB,UAAW,WAAY,CAIjEuK,IAAK,WACD,YAA+Bv3B,IAAxB8sB,KAAK9hB,MAAMy4B,SACZ3W,KAAK9hB,MAAMy4B,SACXqQ,EAAwB3d,aAAasN,QAC/C,EACAjM,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAewc,EAAwB9mB,UAAW,UAAW,CAIhEuK,IAAK,WACD,OAAOzK,KAAKiyP,QAChB,EACAvnP,YAAY,EACZC,cAAc,IAKlBqc,EAAwB9mB,UAAUH,KAAO,WACrC,OAAOmL,EAAAA,EAAAA,IAAmBlL,KAC9B,EACArd,OAAO6nB,eAAewc,EAAwB9mB,UAAW,YAAa,CAElEuK,IAAK,WACD,IAAImnP,EAAc,CAAE7uP,MAAO,EAAGiE,IAAK,GAInC,OAHqB,OAAjBhH,KAAKqI,cAAoDn1B,IAAhC8sB,KAAKqI,QAAQyqP,iBACtClB,EAAc,CAAE7uP,MAAO/C,KAAKqI,QAAQyqP,eAAgB9rP,IAAKhH,KAAKqI,QAAQ0sP,eAEnEnD,CACX,EACAlnP,YAAY,EACZC,cAAc,IAElBqc,EAAwB9mB,UAAUkqJ,aAAe,SAAUtlD,GACvD,IAAIpiG,EAAQ1C,KACZA,KAAKmyP,oBAAsBnyP,KAAKymN,cAAc3hH,EAAU/hG,OACxDhqB,OAAOi8Q,uBAAsB,WACzB,IAAIhrP,GAAgBC,EAAAA,EAAAA,GAAiBzb,UACjCkU,EAAM2F,SAAW2B,IAAkBtH,EAAM2F,UAAY3F,EAAMxkB,MAAMuoC,kBACjE/jB,EAAM2F,QAAQ4sP,kBAAkBnwJ,EAAU/hG,MAAO+hG,EAAU99F,IAEnE,GACJ,EACAggB,EAAwB9mB,UAAUqyP,cAAgB,SAAUr+Q,EAAO81L,GAC/DhqK,KAAK2V,oBAAsB3V,KAAKva,MAChCua,KAAK+K,cACD/K,KAAK9hB,MAAMsH,YACP6d,EAAAA,EAAAA,GAAQ2mK,EAAUhqK,KAAKva,QAE3Bua,KAAK9hB,MAAMsH,SAASihB,UAAKvzB,EAAW,CAChCk/B,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB1sB,MAAOua,KAAKva,MACZ2U,OAAQ4F,OAIhBA,KAAK2V,yBAAsBziC,CAC/B,EACA8zC,EAAwB9mB,UAAUmzP,kBAAoB,SAAU93D,GAG5D,IAFA,IAAIx4L,GAAS,EACTiE,EAAM,EACD9mB,EAAI,EAAGA,EAAI8f,KAAKymN,cAAc5kO,OAAQ3B,IACvC8f,KAAKymN,cAAcvmO,KAAOq7M,IAC1Bv0L,EAAM9mB,EAAI,GACK,IAAX6iB,IACAA,EAAQ7iB,IAOpB,OAHI6iB,EAAQ,IACRA,EAAQ,GAEL,CAAEA,MAAOA,EAAOiE,IAAKA,EAChC,EACAggB,EAAwB9mB,UAAUszP,iBAAmB,SAAU5+P,GAG3D,IADA,IAAIkwG,EAAY,CAAE/hG,MAAOnO,EAAOoS,IAAKpS,GAC5B1U,EAAI0U,EAAOu/D,EAAIv/D,EAAQ,EAAG1U,EAAI8f,KAAKymN,cAAc5kO,QAAUsyE,GAAK,EAAGj0E,IAAKi0E,IAAK,CAClF,GAAIj0E,EAAI8f,KAAKymN,cAAc5kO,QAAoC,MAA1Bme,KAAKymN,cAAcvmO,GAAY,CAChE4kH,EAAY9kG,KAAKqzP,kBAAkBrzP,KAAKymN,cAAcvmO,IACtD,KACJ,CACA,GAAIi0E,GAAK,GAA+B,MAA1Bn0D,KAAKymN,cAActyJ,GAAY,CACzC2wC,EAAY9kG,KAAKqzP,kBAAkBrzP,KAAKymN,cAActyJ,IACtD,KACJ,CACJ,CACA,OAAO2wC,CACX,EACA99E,EAAwB9mB,UAAUozP,kBAAoB,SAAU7qP,GAC5D,IAAIhxB,EAAKuoB,KAAK8kG,UAAWguJ,EAAiBr7Q,EAAGsrB,MAAOgyP,EAAet9Q,EAAGuvB,IACtE,GAAI8rP,EAAiBiC,GACjB/0P,KAAKymN,cAAcqsC,KAAoB9yP,KAAKymN,cAAcsuC,EAAe,GACzE/0P,KAAKoqJ,aAAapqJ,KAAKwzP,iBAAiB/qP,EAAS,EAAIqqP,EAAiBiC,EAAe,QAFzF,CAOA,IAFA,IAAIG,EAAuBl1P,KAAKymN,cAAcqsC,GAC1C/1Q,EAAI+1Q,EAAiBrqP,EAClB1rB,EAAI,GAAKA,EAAIijB,KAAKymN,cAAc5kO,SAC/Bme,KAAKymN,cAAc1pO,KAAOm4Q,GACA,MAA1Bl1P,KAAKymN,cAAc1pO,KAGvBA,GAAK0rB,EAET,GAA8B,MAA1BzI,KAAKymN,cAAc1pO,GAAvB,CAKA,IADA,IAAIqpB,EAAIrpB,EACDqpB,GAAK,GAAKA,EAAIpG,KAAKymN,cAAc5kO,QAChCme,KAAKymN,cAAcrgN,KAAOpG,KAAKymN,cAAc1pO,IAGjDqpB,GAAKqC,EAEL1rB,EAAIqpB,IAAMA,EAAI,IAAM0sP,GAAkB/1Q,EAAI,IAAMg4Q,GAChD/0P,KAAKoqJ,aAAa,CAAErnJ,MAAOqD,EAAI,EAAGY,IAAKjqB,EAAI,IAEtCA,EAAIqpB,IAAMrpB,IAAM+1Q,GAAkB1sP,IAAM2uP,IAC7C/0P,KAAKoqJ,aAAa,CAAErnJ,MAAOhmB,EAAGiqB,IAAKZ,GAZvC,CAbA,CA2BJ,EACA4gB,EAAwB9mB,UAAU4zP,uBAAyB,SAAUrrP,EAAQv0B,GACzE,GAAK8rB,KAAKgyP,UAAV,CAGA,IAAIhoF,EAAWhqK,KAAKva,MAChB81M,EAASv7L,KAAKymN,cAAczmN,KAAK8kG,UAAU/hG,OAC3CoyP,EAAoBn1P,KAAKgyP,UAAUV,UAAU/1D,GAC7C1nM,IAASmM,KAAK9hB,MAAMgW,OAAS,CAAC,GAAGihQ,IAAsB,GAAK1sP,EAChEzI,KAAKgyP,UAAUvB,WAAWl1D,EAAQ1nM,GAClCmM,KAAKuyP,cAAcr+Q,EAAO81L,EAN1B,CAOJ,EAIAhjJ,EAAwBlN,YAAc,YAItCkN,EAAwBhb,UAAY,CAChCvmB,MAAOwmB,EAAAA,WAAqBhvB,MAC5B4F,OAAQopB,EAAAA,UAAoB,CACxBA,EAAAA,OACAA,EAAAA,MAAgB,CACZkE,SAAUlE,EAAAA,OACVpJ,QAASoJ,EAAAA,OACT1M,KAAM0M,EAAAA,MAAgB,CAAC,QAAS,SAAU,OAAQ,SAClDmE,KAAMnE,EAAAA,MAAgB,CAAC,QAAS,SAAU,OAAQ,SAClDoE,SAAUpE,EAAAA,MAAgB,CAAC,QAAS,SAAU,OAAQ,SACtDqE,IAAKrE,EAAAA,MAAgB,CAAC,SAAU,QAAS,SACzCxlB,KAAMwlB,EAAAA,MAAgB,CAAC,UAAW,YAClCvlB,MAAOulB,EAAAA,MAAgB,CAAC,UAAW,UAAW,SAAU,QAAS,SACjEtlB,IAAKslB,EAAAA,MAAgB,CAAC,UAAW,YACjCzlB,QAASylB,EAAAA,MAAgB,CAAC,SAAU,QAAS,SAC7C5L,KAAM4L,EAAAA,MAAgB,CAAC,UAAW,YAClCsE,OAAQtE,EAAAA,KACR7H,OAAQ6H,EAAAA,MAAgB,CAAC,UAAW,YACpC3E,OAAQ2E,EAAAA,MAAgB,CAAC,UAAW,YACpCuE,aAAcvE,EAAAA,MAAgB,CAAC,QAAS,aAGhDsL,kBAAmBtL,EAAAA,UAAoB,CACnCA,EAAAA,MAAgB,CAAC,OAAQ,SAAU,QAAS,kBAC5CA,EAAAA,MAAgB,CACZxlB,KAAMwlB,EAAAA,OACNvlB,MAAOulB,EAAAA,OACPtlB,IAAKslB,EAAAA,OACL5L,KAAM4L,EAAAA,OACN7H,OAAQ6H,EAAAA,OACR3E,OAAQ2E,EAAAA,WAGhB5xB,MAAO4xB,EAAAA,UAAoB,CACvBA,EAAAA,OACAA,EAAAA,SAEJV,SAAUU,EAAAA,OACVjsB,MAAOisB,EAAAA,OACP/X,MAAO+X,EAAAA,MAAgB,CACnBxlB,KAAMwlB,EAAAA,OACNvlB,MAAOulB,EAAAA,OACPtlB,IAAKslB,EAAAA,OACL5L,KAAM4L,EAAAA,OACN7H,OAAQ6H,EAAAA,OACR3E,OAAQ2E,EAAAA,SAEZlX,IAAKkX,EAAAA,WAAqBhvB,MAC1BiY,IAAK+W,EAAAA,WAAqBhvB,MAC1B/C,SAAU+xB,EAAAA,KACV0oP,SAAU1oP,EAAAA,KACVn2B,KAAMm2B,EAAAA,OACNtQ,IAAKsQ,EAAAA,OACLp2B,MAAOo2B,EAAAA,OACP74B,GAAI64B,EAAAA,OACJuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjBkvN,UAAWlvN,EAAAA,OACXuM,SAAUvM,EAAAA,OACVyQ,aAAczQ,EAAAA,UAAoB,CAC9BA,EAAAA,KACAA,EAAAA,SAEJ8L,aAAc9L,EAAAA,UAAoB,CAC9BA,EAAAA,OAEJzmB,SAAUymB,EAAAA,KACVyK,kBAAmBzK,EAAAA,OACnB0K,SAAU1K,EAAAA,KACVgO,SAAUhO,EAAAA,KACV2K,MAAO3K,EAAAA,KACP1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5D9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,OAAQ,aAKtD+a,EAAwB3d,aAAe,CACnCxmB,OFppBmB,IEqpBnBtJ,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,QACVozB,kBFppB8B,OEspB9Bo9O,UAAU,EACVz6Q,UAAU,EACVgb,KAAKwK,EAAAA,EAAAA,GAAUwa,EAAAA,IACfnlB,KAAK2K,EAAAA,EAAAA,GAAUya,EAAAA,IACfzG,SAAShU,EAAAA,EAAAA,GAAU+Q,EAAAA,IACnBkD,SAASjU,EAAAA,EAAAA,GAAU4M,EAAAA,IACnBqK,UAAU,EACVK,gBAAgB,EAChBN,kBAlnBiB,8BAmnBjBn5B,YAAa,KAEbm/B,aAAc,QAEXsK,CACX,CArnB6C,CAqnB3CzzC,EAAAA,WAQS6hR,GAAwB96O,EAAAA,EAAAA,KASxBF,GAAYI,EAAAA,EAAAA,GAAiB46O,EAAuBpuO,GAC/D5M,EAAUN,YAAc,uBACxBvN,EAAAA,EAAAA,IAAgBya,IAChBtW,EAAAA,EAAAA,IAAwBsW,0PC3rBbquO,UAAelgR,ECEfmgR,EAAa/hR,EAAAA,YAAiB,SAAU2K,EAAOnK,GACtD,IAAIrB,EAAOwL,EAAMxL,KACb21B,EAAU90B,EAAAA,OAAa,MAC3BA,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOs0B,EAAQh0B,OAAS,IACrEd,EAAAA,oBAA0Bb,GAAM,WAAc,OAAO21B,EAAQh0B,OAAS,IACtE,IAAIR,EAAYN,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAWlxB,EAAMrK,UAAW,gBAAkB,GAAG,CAACqK,EAAMrK,YAC3G,OAAQN,EAAAA,cAAoB,OAAQ,CAAEQ,IAAKs0B,EAASj1B,GAAI8K,EAAM9K,GAAIM,MAAOwK,EAAMxK,MAAOG,UAAWA,EAAW03B,SAAUrtB,EAAMqtB,UAAYrtB,EAAMzK,SAClJ,4CCbIwyB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAqBI24Q,EAA0C,SAAU/tP,GAEpD,SAAS+tP,EAAyBr3Q,GAC9B,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAyIxC,OAxIA0C,EAAMwR,UAAWC,EAAAA,EAAAA,KACjBzR,EAAM/iB,SAAW,KACjB+iB,EAAM0R,WAAa7gC,EAAAA,YACnBmvB,EAAMkO,UAAY,KAClBlO,EAAM4R,sBAAuB,EAC7B5R,EAAM6R,UAAW,EAIjB7R,EAAMuF,MAAQ,WACNvF,EAAMuT,WACNvT,EAAMuT,UAAUhO,OAExB,EACAvF,EAAMqiB,eAAiB,SAAUxR,GAC7B7Q,EAAMkO,UAAY2C,CACtB,EACA7Q,EAAMqZ,UAAY,SAAUC,EAAWC,GACnC,YAA2B/oC,IAApB8oC,EAAUv2B,MACXu2B,EAAUv2B,MACVw2B,EAAUx2B,KACpB,EACAid,EAAMwZ,SAAW,SAAUF,EAAWC,GAClC,YAA0B/oC,IAAnB8oC,EAAU9R,KACX8R,EAAU9R,KACV+R,EAAU/R,IACpB,EACAxH,EAAM+Y,YAAc,WAChB,IAAIhkC,EAAKirB,EAAMxkB,MAAOhE,EAAWzC,EAAGyC,SAAU6a,EAAMtd,EAAGsd,IAAKG,EAAMzd,EAAGyd,IAAK6d,EAAat7B,EAAGs7B,WAAYC,EAAcv7B,EAAGu7B,YACnHn7B,EAAK6qB,EAAMxkB,MAAM67B,cAAehB,EAAalhC,EAAGkhC,WAAY2C,EAAqBlhB,EAAO3iB,EAAI,CAAC,eAC7FqyB,EAAOxH,EAAMwH,KACbzkB,EAAQid,EAAMjd,MACdwiQ,EAAiBxiQ,IAASyc,EAAAA,EAAAA,GAAQzc,GAClCk2B,GAAkBvM,EAAAA,EAAAA,GAAW,uCAAwC2J,GACrE6C,EAAa/mB,EAAS,CAAEkkB,WAAY,qBAAsB7O,KAAMA,EAAM4O,OAAQpW,EAAM/iB,SAAU9L,UAAW8nC,EAAiBvoC,GAAIsvB,EAAMwR,SAAU8E,YAAa,CACvJC,WAAY,OACZC,SAAU,UACXC,WAAY,CACXF,WAAY,OACZC,SAAU,QACTwC,GACLtI,EAAgB,CAChBl5B,SAAUA,EACVuL,MAAOwiQ,EACPlzP,IAAKA,EACLG,IAAKA,EACL6d,WAAYA,EACZC,YAAaA,EACbn/B,UAAW6uB,EAAMoG,WAAa,gBAAkB,GAChDuK,YAAY3Q,EAAMoG,WAClBtjB,SAAUkd,EAAM6P,2BAEpB,OAAI7P,EAAMoG,WACCv1B,EAAAA,cAAoBmvB,EAAM8yP,aAAc3gQ,EAAS,CAAEniB,KAAMgwB,EAAMqiB,gBAAkB3R,IAEpF7/B,EAAAA,cAAoBmvB,EAAM+yP,UAAW5gQ,EAAS,CAAC,EAAG+mB,GACtDroC,EAAAA,cAAoBmvB,EAAM8yP,aAAc3gQ,EAAS,CAAEniB,KAAMgwB,EAAMqiB,gBAAkB3R,IACzF,EACA1Q,EAAMkS,oBAAsB,WACxB,IAAIn9B,EAAKirB,EAAM3vB,MAAM8hC,YAAaA,OAAqB,IAAPp9B,EAAgB,EAAIA,EAChEy9B,EAAmB,CACnBC,OAAQzS,EAAMwH,KACdpgB,QAAS4Y,EAAMmH,WACfuL,cAAe1S,EAAMxkB,MAAMk3B,cAC3BP,YAAaA,GAEjB,OAAQthC,EAAAA,cAAoBiiC,EAAAA,EAAc3gB,EAAS,CAAC,EAAGqgB,GACnD3hC,EAAAA,cAAoBkiC,EAAAA,EAAoB,CAAE5hC,UAAW,sBAAwB6uB,EAAM+Y,eAC3F,EACA/Y,EAAMyZ,uBAAyB,SAAUjoC,GACrCwuB,EAAMiS,kBAAkBzgC,EAAMuR,MAAOvR,EACzC,EACAwuB,EAAM6P,0BAA4B,SAAUr+B,GACxC,IAAIuR,EAAQid,EAAMqR,UAAU7/B,EAAMuR,OAClCid,EAAMiS,kBAAkBlvB,EAAOvR,EACnC,EACAwuB,EAAMiS,kBAAoB,SAAUlvB,EAAOvR,GACvCwuB,EAAM6L,SAAS,CACX9oB,OAAOia,EAAAA,EAAAA,GAAUja,QAASvS,KAE9BwvB,EAAMiT,oBAAsBlwB,EAC5Bid,EAAMkT,oBAAqB,EACtBlT,EAAMoG,aACPpG,EAAM4R,sBAAuB,GAEjC,IAAI9uB,EAAWkd,EAAMxkB,MAAMsH,SACvBA,GACAA,EAASihB,UAAKvzB,EAAW,CACrBk/B,eAAgBl+B,EAAMk+B,eACtBD,YAAaj+B,EAAMi+B,YACnB1sB,MAAOid,EAAMjd,MACbykB,KAAMxH,EAAMwH,KACZ9P,OAAQsI,IAGhBA,EAAMiT,yBAAsBziC,EAC5BwvB,EAAMkT,wBAAqB1iC,EAC3BwvB,EAAMgT,SAAQ,EAClB,EACAhT,EAAMiH,YAAc,WAChBjH,EAAM6L,SAAS,CAAEsH,SAAS,GAC9B,EACAnT,EAAMmH,WAAa,WACfnH,EAAM6L,SAAS,CAAEsH,SAAS,IAC1BnT,EAAMgT,SAAQ,EAClB,EACAhT,EAAM0Z,gBAAkB,WAChB1Z,EAAMxkB,MAAMhE,WAGhBwoB,EAAM4R,sBAAuB,EAC7B5R,EAAMgT,SAAShT,EAAMwH,MACzB,EACAxH,EAAMqT,oBAAsB,SAAU7hC,GAClCA,EAAM+gB,gBACV,EACAyN,EAAM0H,cAAgB,SAAUl2B,GAC5B,IAAI0+B,EAAS1+B,EAAM0+B,OAAQvI,EAAUn2B,EAAMm2B,QAC3C,GAAIA,IAAYtD,EAAAA,EAAKiP,IAGjB,OAFAtT,EAAM4R,sBAAuB,OAC7B5R,EAAMgT,SAAQ,IAGd9C,GAAWvI,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKI,OACnDjzB,EAAM+gB,iBACN/gB,EAAMs+B,kBACN9P,EAAM4R,qBAAuBjK,IAAYtD,EAAAA,EAAKG,GAC9CxE,EAAMgT,QAAQrL,IAAYtD,EAAAA,EAAKI,MAEvC,GACA+O,EAAAA,EAAAA,GAAgBC,EAAAA,GAChBzT,EAAM3vB,MAAQ,CACV0S,MAAOid,EAAMxkB,MAAM3H,cAAgBg/Q,EAAyBlsP,aAAa9yB,aACzE2zB,KAAMxH,EAAMxkB,MAAMk4B,aAAem/O,EAAyBlsP,aAAa+M,YACvEP,SAAS,GAENnT,CACX,CAkaA,OA9iBAuD,EAAUsvP,EAA0B/tP,GA6IpC7kB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,WAAY,CAClEuK,IAAK,WACD,GAAKrF,EAAAA,EAIL,OAAQpF,KAAKqI,SAAWrI,KAAKqI,QAAQgO,eAAkB7nB,QAC3D,EACAkc,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,UAAW,CAIjEuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,aAAc,CAIpEuK,IAAK,WAED,SADiBzK,KAAKjtB,MAAM8hC,aAAe7U,KAAKjtB,MAAM8hC,aAAeyB,EAAAA,GAAwBtW,KAAK9hB,MAAMq4B,SAE5G,EACA7L,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,YAAa,CAInEuK,IAAK,WACD,OAAOzK,KAAKoU,WAAW//B,OAC3B,EACAq2B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,WAAY,CAIlEuK,IAAK,WACD,OAAOzK,KAAK4Q,SAChB,EACAlG,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,QAAS,CAI/DuK,IAAK,WACD,IAAIhlB,OAAqCvS,IAA7B8sB,KAAK2V,oBACX3V,KAAK2V,yBACgBziC,IAArB8sB,KAAK9hB,MAAMuH,MACPua,KAAK9hB,MAAMuH,MACXua,KAAKjtB,MAAM0S,MACrB,OAAkB,OAAVA,GAAkBia,EAAAA,EAAAA,GAAUja,GAAS,IACjD,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,OAAQ,CAI9DuK,IAAK,WACD,YAAmCv3B,IAA5B8sB,KAAK4V,mBACN5V,KAAK4V,wBACe1iC,IAApB8sB,KAAK9hB,MAAMgsB,KACPlK,KAAK9hB,MAAMgsB,KACXlK,KAAKjtB,MAAMm3B,IACzB,EACAQ,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,OAAQ,CAI9DuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMpI,IACtB,EACA40B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,MAAO,CAC7DuK,IAAK,WACD,YAA0Bv3B,IAAnB8sB,KAAK9hB,MAAM6W,IACZiL,KAAK9hB,MAAM6W,IACXwgQ,EAAyBlsP,aAAatU,GAChD,EACA2V,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,MAAO,CAC7DuK,IAAK,WACD,YAA0Bv3B,IAAnB8sB,KAAK9hB,MAAMgX,IACZ8K,KAAK9hB,MAAMgX,IACXqgQ,EAAyBlsP,aAAanU,GAChD,EACAwV,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,gBAAiB,CACvEuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAM+3B,WAAas/O,EAAyBlsP,aAAa4M,SACzE,EACAvL,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,mBAAoB,CAC1EuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMw3Q,cAAgBH,EAAyBlsP,aAAaqsP,YAC5E,EACAhrP,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,eAAgB,CACtEuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMq1B,UAAYgiP,EAAyBlsP,aAAakK,QACxE,EACA7I,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,YAAa,CACnEuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMw5B,OAAS69O,EAAyBlsP,aAAaqO,KACrE,EACAhN,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,iBAAkB,CACxEuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMy3Q,YAAcJ,EAAyBlsP,aAAassP,UAC1E,EACAjrP,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,WAAY,CAIlEuK,IAAK,WACD,IAAI7K,GAAU4W,EAAAA,EAAAA,IAAcxW,KAAKva,MAAOua,KAAKjL,IAAKiL,KAAK9K,KACnDuhB,OAA+CvjC,IAAjC8sB,KAAK9hB,MAAMw4B,kBACzBviC,IAAY6rB,KAAK2W,UAA2B,OAAf3W,KAAKva,QAAmBma,EACrDgX,OAA6B1jC,IAArB8sB,KAAK9hB,MAAM04B,MAAsB5W,KAAK9hB,MAAM04B,MAAQziC,EAChE,MAAO,CACHsiC,YAAaA,EACbI,cAAgB7W,KAAKva,OAASua,KAAK9K,IAAIjD,UAAY+N,KAAKva,MAAMwM,YAAc,EAC5E6kB,eAAiB9W,KAAKva,OAASua,KAAKva,MAAMwM,UAAY+N,KAAKjL,IAAI9C,YAAc,EAC7E2kB,MAAOA,EACPG,aAA6B,OAAf/W,KAAKva,MAE3B,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,iBAAkB,CAIxEuK,IAAK,WACD,YAAqCv3B,IAA9B8sB,KAAK9hB,MAAM84B,eACZhX,KAAK9hB,MAAM84B,eACXu+O,EAAyBlsP,aAAa2N,cAChD,EACAtM,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qP,EAAyBr1P,UAAW,WAAY,CAIlEuK,IAAK,WACD,YAA+Bv3B,IAAxB8sB,KAAK9hB,MAAMy4B,SACZ3W,KAAK9hB,MAAMy4B,SACX4+O,EAAyBlsP,aAAasN,QAChD,EACAjM,YAAY,EACZC,cAAc,IAKlB4qP,EAAyBr1P,UAAU4K,kBAAoB,WACnD,IAAIrzB,EACJuoB,KAAKiX,eAAiB7R,EAAAA,GAAarsB,OAAOm+B,gBAAkB,IAAIn+B,OAAOm+B,eAAelX,KAAKmX,eAAetI,KAAK7O,OAC3GA,KAAKkK,MAELlK,KAAK+K,eAEqB,QAAxBtzB,EAAKuoB,KAAKxR,gBAA6B,IAAP/W,OAAgB,EAASA,EAAG4X,OAAS2Q,KAAKiX,gBAC5EjX,KAAKiX,eAAeG,QAAQpX,KAAKxR,SAASa,KAElD,EAIAkmQ,EAAyBr1P,UAAU8K,mBAAqB,WAChDhL,KAAK4Q,WAAa5Q,KAAK4Q,UAAUvI,SAAWrI,KAAKkK,OAASlK,KAAKuU,UAC/DvU,KAAK4Q,UAAUvI,QAAQJ,MAAM,CAAEkC,eAAe,IAE9CnK,KAAKiW,WACFjW,KAAKiW,UAAU5N,UACdrI,KAAKkK,MACNlK,KAAKsU,sBACRtU,KAAKiW,UAAU5N,QAAQJ,MAAM,CAAEkC,eAAe,IAElDnK,KAAKuU,SAAWvU,KAAKkK,KACrBlK,KAAKsU,sBAAuB,CAChC,EAIAihP,EAAyBr1P,UAAU6O,qBAAuB,WACtD,IAAIt3B,EACJg3B,aAAazO,KAAK0O,aACY,QAAxBj3B,EAAKuoB,KAAKxR,gBAA6B,IAAP/W,OAAgB,EAASA,EAAG4X,OAAS2Q,KAAKiX,gBAC5EjX,KAAKiX,eAAeI,YAE5B,EAIAk+O,EAAyBr1P,UAAUnrB,OAAS,WACxC,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAG8B,KAAMA,OAAc,IAAP1B,EAAgB09Q,EAAyBlsP,aAAa9vB,KAAO1B,EAAIK,EAAKT,EAAG6/B,QAASA,OAAiB,IAAPp/B,EAAgBq9Q,EAAyBlsP,aAAaiO,QAAUp/B,EAAIG,EAAKZ,EAAG0M,SAAUA,OAAkB,IAAP9L,EAAgBk9Q,EAAyBlsP,aAAallB,SAAW9L,EAAI6B,EAAWzC,EAAGyC,SAAUqxB,EAAW9zB,EAAG8zB,SAAUvrB,EAAQvI,EAAGuI,MAAO5M,EAAKqE,EAAGrE,GAAIyP,EAASpL,EAAGoL,OAAQ00B,EAAoB9/B,EAAG8/B,kBAAmBxiB,EAAMtd,EAAGsd,IAAKG,EAAMzd,EAAGyd,IAAKrhB,EAAY4D,EAAG5D,UAAWwG,EAAQ5C,EAAG4C,MAAOvE,EAAO2B,EAAG3B,KAAM4gC,EAAoBj/B,EAAGi/B,kBAAmBC,EAAWl/B,EAAGk/B,SAAUK,EAAiBv/B,EAAGu/B,eAAgBQ,EAAiB//B,EAAG+/B,eAAgBC,EAAkBhgC,EAAGggC,gBAAiB0jN,EAAY1jP,EAAG0jP,UAC3sBjxN,EAAOlK,KAAKkK,KACZzkB,EAAQua,KAAKva,MACbtR,GAAW6rB,KAAKgX,gBAAkBhX,KAAK6X,SAASjB,MAChD6F,EAAiB,CACjBviC,SAAUA,EACV2I,OAAQA,EACR00B,kBAAmBA,EACnBnkC,GAAIA,EACJokC,eAAgBA,EAChBC,gBAAiBA,EACjB0jN,UAAWA,EACXjmO,IAAKA,EACLH,IAAKA,EACLjf,KAAMA,EACN0P,SAAUwa,KAAKmc,uBACfxF,SAAUA,EACVpL,SAAWrB,GAAmB,EAAZqB,EAClBvrB,MAAOA,EACP42B,MAAO5W,KAAK6X,SAASjB,MACrBF,kBAAmBA,EACnBM,eAAgBA,EAChBvxB,MAAOA,EACP5P,WAAO3C,EACPqK,YAAcyiB,KAAKjtB,MAAM8iC,QAAmC,KAAzB7V,KAAK9hB,MAAMX,YAC9Cw6B,aAAc/X,KAAKkK,KACnB3wB,KAAM,KACN4K,SAAU,KACVmzB,QAAS,MAETs+O,GAAoBtmP,EAAAA,EAAAA,IAA2BtP,MAC9CwP,iBAAiBqmP,EAAAA,GAAgBnmP,EAAAA,GAASmmP,EAAAA,KAC3CC,EAAcviR,EAAAA,cAAoB0kC,EAAAA,EAAgB,CAAErO,QAAS5J,KAAK2J,YAAaG,OAAQ9J,KAAK8I,gBAAa51B,EAAY8sB,KAAK6J,WAAYsO,WAAYnY,KAAK9hB,MAAM4rB,OAAQoO,YAAalY,KAAK9hB,MAAM0rB,UAAW,SAAUnyB,GAClN,IAAII,EACA+xB,EAAUnyB,EAAGmyB,QAASE,EAASryB,EAAGqyB,OACtC,OAAQv2B,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB,OAAQ,CAAEQ,IAAK,SAAUwxB,GAAQ7C,EAAM/iB,SAAW4lB,CAAM,EAAG1xB,WAAWu7B,EAAAA,EAAAA,GAAW,UAAW,gBAAiBv3B,EAAK,CAAC,EAC/HA,EAAG,WAAWqM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EAC9D1B,EAAG,aAAaqM,OAAOk0B,EAAAA,EAAeE,WAAWhB,IAAYA,IAAYA,EACzEz/B,EAAG,WAAWqM,OAAOC,IAAaA,EAClCtM,EAAG,cAAgB1D,EACnB0D,EAAG,cAAgB6qB,EAAMiU,SACzB9+B,EAAG,cAAgB6qB,EAAMxkB,MAAMhE,SAC/BrC,GAAKhE,GAAY43B,UAAW/I,EAAM0H,cAAe12B,MAAO,CAAE2G,MAAOA,GAASuvB,QAASA,EAASE,OAAQA,EAAQz0B,QAASqtB,EAAMoG,WAAapG,EAAM0Z,qBAAkBlpC,GACpKK,EAAAA,cAAoBmvB,EAAM6V,cAAe1jB,EAAS,CAAEniB,KAAMgwB,EAAM0R,WAAYoE,SAAU,WAAYE,SAAUhW,EAAMoG,WAAYiP,aAAcrV,EAAMwH,KAAMuO,aAAc/V,EAAMwR,UAAYuI,IACxLlpC,EAAAA,cAAoBmvB,EAAMqzP,iBAAkB,CAAEv8Q,KAAM,SAAUpE,KAAM,WAAYujC,QAASC,EAAAA,IAAc54B,MAAO41Q,EAAmB/hR,UAAW,iBAAkByjC,QAAS,KAAMjiC,QAASqtB,EAAMoG,gBAAa51B,EAAYwvB,EAAM0Z,gBAAiB,aAAcw5O,EAAmB/lP,YAAanN,EAAMqT,uBAC/RrT,EAAMoG,YAAcpG,EAAM+Y,eAC/B/Y,EAAMoG,YAAcpG,EAAMkS,sBAClC,IACA,OAAO5U,KAAK9hB,MAAMrI,MACXtC,EAAAA,cAAoB6lC,EAAAA,EAAqB,CAAEnD,UAAWjW,KAAKoU,WAAYv+B,MAAOmqB,KAAK9hB,MAAMrI,MAAOwjC,SAAUjmC,EAAIkmC,YAAanlC,EAASolC,eAAgBvZ,KAAK9hB,MAAMhE,SAAUzG,SAAUqiR,EAAYpiR,MAAO,CAAE2G,MAAO2lB,KAAK9hB,MAAM7D,SAC3Ny7Q,CACV,EACAP,EAAyBr1P,UAAUwV,QAAU,SAAUxL,GACnD,IAAIzyB,EAAKuoB,KAAK9hB,MAAOs7B,EAAS/hC,EAAG+hC,OAAQ1vB,EAAUrS,EAAGqS,QAClDkW,KAAKkK,OAASA,IAGlBlK,KAAKuO,SAAS,CAAErE,KAAMA,IAClBA,GAAQsP,GACRA,EAAO/S,UAAKvzB,EAAW,CACnBknB,OAAQ4F,QAGXkK,GAAQpgB,GACTA,EAAQ2c,UAAKvzB,EAAW,CACpBknB,OAAQ4F,OAGpB,EACAu1P,EAAyBr1P,UAAU6T,UAAY,SAAUtuB,GACrD,OAAOua,KAAKva,OAASA,GAAQuuB,EAAAA,EAAAA,IAAQvuB,EAAOua,KAAKva,OAASA,CAC9D,EACA8vQ,EAAyBr1P,UAAUoO,SAAW,SAAUyB,GAIpDtB,aAAazO,KAAK0O,YAClB1O,KAAK0O,WAAa31B,OAAOi3B,YAAW,WAAc,OAAOD,GAAK,GAClE,EACAwlP,EAAyBr1P,UAAUiX,eAAiB,SAAUsC,GAC1D,IAAK,IAAIC,EAAK,EAAGC,EAAYF,EAASC,EAAKC,EAAU93B,OAAQ63B,IAAM,CAC/D,IAAIE,EAAQD,EAAUD,GACtB1Z,KAAKuO,SAAS,CAAEsG,YAAa+E,EAAMxf,OAAOyf,aAC9C,CAEJ,EAKA07O,EAAyBz7O,YAAc,aAIvCy7O,EAAyBvpP,UAAY,CACjCn4B,UAAWo4B,EAAAA,OACXmK,YAAanK,EAAAA,KACb11B,aAAc01B,EAAAA,WAAqBhvB,MACnC/C,SAAU+xB,EAAAA,KACV+G,YAAa/G,EAAAA,WAAqBhvB,MAClC4F,OAAQopB,EAAAA,UAAoB,CACxBA,EAAAA,OACAA,EAAAA,MAAgB,CACZkE,SAAUlE,EAAAA,OACVpJ,QAASoJ,EAAAA,OACT1M,KAAM0M,EAAAA,MAAgB,CAAC,QAAS,SAAU,OAAQ,SAClDmE,KAAMnE,EAAAA,MAAgB,CAAC,QAAS,SAAU,OAAQ,SAClDoE,SAAUpE,EAAAA,MAAgB,CAAC,QAAS,SAAU,OAAQ,SACtDqE,IAAKrE,EAAAA,MAAgB,CAAC,SAAU,QAAS,SACzCxlB,KAAMwlB,EAAAA,MAAgB,CAAC,UAAW,YAClCvlB,MAAOulB,EAAAA,MAAgB,CAAC,UAAW,UAAW,SAAU,QAAS,SACjEtlB,IAAKslB,EAAAA,MAAgB,CAAC,UAAW,YACjCzlB,QAASylB,EAAAA,MAAgB,CAAC,SAAU,QAAS,SAC7C5L,KAAM4L,EAAAA,MAAgB,CAAC,UAAW,YAClCsE,OAAQtE,EAAAA,KACR7H,OAAQ6H,EAAAA,MAAgB,CAAC,UAAW,YACpC3E,OAAQ2E,EAAAA,MAAgB,CAAC,UAAW,YACpCuE,aAAcvE,EAAAA,MAAgB,CAAC,QAAS,aAGhDsL,kBAAmBtL,EAAAA,UAAoB,CACnCA,EAAAA,MAAgB,CAAC,OAAQ,SAAU,QAAS,kBAC5CA,EAAAA,MAAgB,CACZxlB,KAAMwlB,EAAAA,OACNvlB,MAAOulB,EAAAA,OACPtlB,IAAKslB,EAAAA,OACL5L,KAAM4L,EAAAA,OACN7H,OAAQ6H,EAAAA,OACR3E,OAAQ2E,EAAAA,WAGhB74B,GAAI64B,EAAAA,OACJuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjBkvN,UAAWlvN,EAAAA,OACXlX,IAAKkX,EAAAA,WAAqBhvB,MAC1BiY,IAAK+W,EAAAA,WAAqBhvB,MAC1BnH,KAAMm2B,EAAAA,OACN8N,cAAe9N,EAAAA,MAAgB,CAC3BhB,QAASgB,EAAAA,KACT+N,SAAU/N,EAAAA,IACV8M,WAAY9M,EAAAA,SAEhB/B,KAAM+B,EAAAA,KACNV,SAAUU,EAAAA,OACVjsB,MAAOisB,EAAAA,OACPxmB,MAAOwmB,EAAAA,WAAqBhvB,MAC5B81B,WAAY9G,EAAAA,KACZ5xB,MAAO4xB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC9CyK,kBAAmBzK,EAAAA,OACnB0K,SAAU1K,EAAAA,KACVgO,SAAUhO,EAAAA,KACV2K,MAAO3K,EAAAA,KACP1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5D9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,OAAQ,YAClDsK,SAAUtK,EAAAA,KACVmJ,cAAenJ,EAAAA,QAKnBspP,EAAyBlsP,aAAe,CACpC+M,aAAa,EACb7/B,aAAc,KACd0/B,UAAWmE,EAAAA,GACX7G,SAAUC,EAAAA,EACVkiP,aAAcL,EACd39O,MAAOE,EAAAA,EACP+9O,WAAYL,EACZp7Q,UAAU,EACV2I,OAAQ,IACRqS,IAAKglB,EAAAA,GACLnlB,IAAKolB,EAAAA,GACLJ,cAAe,CAAC,EAChBxO,SAAU,EACVwH,YAAY,EACZ4D,UAAU,EACVK,gBAAgB,EAChBz9B,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,SAEPoxQ,CACX,CAhjB8C,CAgjB5ChiR,EAAAA,WAQSyiR,GAAyB17O,EAAAA,EAAAA,KAQzB8iC,GAAa5iC,EAAAA,EAAAA,GAAiBw7O,EAAwBT,GACjEn4M,EAAWtjC,YAAc,wBACzBpJ,EAAAA,EAAAA,IAAwB6kP,wEC3nBpB1gQ,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAqBW0M,EAAsB,SAAUl7B,GACvC,IAAI+3Q,EAhB4B,SAAUhgP,GAC1C,IAAIx+B,EAAKlE,EAAAA,UAAe,GAAQ22B,EAAOzyB,EAAG,GAAIi+B,EAAUj+B,EAAG,GAO3D,OADAlE,EAAAA,WALe,WACP0iC,EAAU5hC,SACVqhC,EAAQ9K,QAAQqL,EAAU5hC,QAAQ0J,MAE1C,IAEO,CACH2/D,YAAaxzC,EAErB,CAK6BgsP,CAAuBh4Q,EAAM+3B,WACtD,OAAQ1iC,EAAAA,cAAoBkqE,EAAAA,EAAe5oD,EAAS,CAAC,EAAG3W,EAAO+3Q,GACnE,+BClCA,IAAIx+Q,mOAIG,IAAIorC,EAAW,6BAIXE,EAAW,6BAIX8xO,EAAgB,sBAIhBC,EAAgB,sBAIhBhM,EAAQ,iBAIR+M,EAAiB,4BAIjBjvO,EAAe,+BAIf7jB,EAAQ,wBAIRiE,EAAM,sBAINuf,EAAY,4BAIZ1N,EAAyB,wCAIzBjJ,EAAM,iBAINH,EAAY,uBAIZsL,EAAmB,oBAInBC,EAAgB,iBAIhB6B,EAAqB,gCAIrBhB,EAAc,yBAIdtc,EAAO,sBAIP6Q,EAAO,sBAIP2E,EAAuB,wBAIvBE,EAAoB,qBAIpBsQ,EAAwB,yBAIxBC,EAAqB,sBAIrB9V,IAAYj4B,EAAK,CAAC,GACtBqxQ,GAAS,QACZrxQ,EAAGm4B,GAAO,MACVn4B,EAAGujC,GAAiB,MACpBvjC,EAAGsjC,GAAoB,SACvBtjC,EAAG8nB,GAAQ,OACX9nB,EAAG24B,GAAQ,OACX34B,EAAGs9B,GAAwB,SAC3Bt9B,EAAGw9B,GAAqB,MACxBx9B,EAAG8tC,GAAyB,SAC5B9tC,EAAG+tC,GAAsB,MACzB/tC,EAAGsrB,GAAS,QACZtrB,EAAGuvB,GAAO,MACVvvB,EAAG8uC,GAAa,IAChB9uC,EAAGg4B,GAAa,aAChBh4B,EAAGolC,GAAsB,sBACzBplC,EAAGokC,GAAe,eAClBpkC,EAAGo9Q,GAAiB,iBACpBp9Q,EAAGq9Q,GAAiB,iBACpBr9Q,EAAGo+Q,GAAkB,kBACrBp+Q,EAAGorC,GAAY,4BACfprC,EAAGsrC,GAAY,wBACftrC,EAAGmvC,GAAgB,4BACnBnvC,EAAGohC,GAA0B,4BAC7BphC,iDCrHG,IAAI0+B,EAAkB,CACzBrgC,KAAM,mCACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,uMCNf,IAAI7wC,EAAY,CACnBC,UAAW,YACXhH,KAAM,OACNk3M,YAAa,cACbnzM,OAAQ,SACRkD,OAAQ,kLCUmBR,yCAf3BwkL,EAAS,SAAU5nJ,GAAU,OAAO,SAAUnkC,EAAM9Z,GACpD,IAAIga,GAAQC,EAAAA,EAAAA,GAAUH,GAEtB,OADAE,EAAMikC,GAAQj+C,GACPga,CACX,CAAG,EACC02P,EAAiB,CACjB,CAAE38Q,KAAM4tB,EAAAA,EAAU/G,KAAMjE,OAAQ,SAAU3W,GAAS,OAAOA,EAAM6a,UAAY,GAC5E,CAAE9mB,KAAM4tB,EAAAA,EAAUhD,OAAQhI,OAAQ,SAAU3W,GAAS,OAAOA,EAAM0e,YAAc,GAChF,CAAE3qB,KAAM4tB,EAAAA,EAAUE,OAAQlL,OAAQ,SAAU3W,GAAS,OAAOA,EAAMif,YAAc,GAChF,CAAElrB,KAAM4tB,EAAAA,EAAUmwM,YAAan7M,OAAQ,SAAU3W,GAAS,OAAOA,EAAM2vE,iBAAmB,IA2BnFt6C,GArBoBhU,EAqBaqvP,EArBK,SAAU/mL,GAAS,OAAQtoE,EAAQ7mB,IADjE,SAAUmvF,GAAS,OAAO,SAAU/C,GAAK,OAAO+C,EAAM/C,EAAE7yF,OAFrD4iB,EAEmEiwE,EAAEjwE,OAFpD,SAAUwE,EAAGR,GAAa,OAAOhE,EAAOgE,EAAY,GADhF,SAAUhE,GAAU,OAAO,SAAUu7E,EAAQ/2E,GAAK,OAAOxE,EAAOu7E,EAAS,CAAG,CAGcjoF,CAAK28E,EAAEjwE,QAFhG,IAAUA,CAE+F,CAAG,CAChCg6P,CAFlE,SAAUhnL,GAAS,OAAOA,EAAM3yF,QAAO,SAAUk6C,EAAKpwB,GAA2B,OAAtBowB,EAAIpwB,EAAE/sB,MAAQ+sB,EAAE/sB,KAAam9C,CAAK,GAAG,CAAC,EAAI,CAEtB0/N,CAAgBjnL,IAAW,GAyBrHxgE,EAXW,SAAU9H,GAAW,OAAO,SAAU5S,EAAOa,GAAO,OAAQ+R,EAAQ7mB,KAAI,SAAUosF,GACpG,IAAIx4E,EAAOiB,KAAK4M,MAAMxN,EAAMm4E,EAAE7yF,OAC9B,OAAOqa,EAfK,SAAUuI,EAAQvI,EAAMkB,EAAKvb,GAAQ,OAAO,SAAU+lB,GAClE,IAAI9Z,EAAQ2W,EAAOmD,GACf+2P,EAAWl6P,EAAOrH,GACtB,MAAa,SAATvb,EACOiM,GAAUA,EAAQ6wQ,GAAYziQ,EAErC0L,EAAKtN,WAAa8C,EAAI9C,WACT,IAAVxM,GACAA,GAAS6wQ,EACJxhQ,KAAK4O,KAAKje,EAAQoO,GAASA,EAEhCpO,EAASA,EAAQoO,CAC5B,CAAG,CAGe0iQ,CAAUlqL,EAAEjwE,OAAQvI,EAAMkB,EAAKs3E,EAAE7yF,MAAQ6yF,EAAEjwE,MAC7D,GAAK,CAAG,CAQsBo6P,CAAgBL,GAInCt7O,EAAc,SAAU/T,GAAW,OAAO,SAAU6wE,EAAQv3E,GAEnE,OADAu3E,EAAOr4E,SAASa,MAAMw3E,EAAQ7wE,EAAQ7mB,KAAI,SAAUosF,GAAK,OAAOA,EAAEsL,EAAQv3E,EAAY,KAC/Eu3E,CACX,CAAG,EAIQhpE,EAAW,SAAU8nP,GAAY,OAAO,SAAUr2P,GACzD,IAAIb,GAAOG,EAAAA,EAAAA,GAAUU,GAErB,OADAb,EAAKD,SAASa,MAAMZ,EAAMk3P,EAASx2Q,KAAI,SAAUwsB,GAAK,OAAOA,EAAElN,EAAO,KAC/DA,CACX,CAAG,EAIQD,EAAWgsL,EAAO,YAIlBtnL,EAAasnL,EAAO,cAIpB/mL,EAAa+mL,EAAO,cAIpBn9K,EAAS,WAAc,OAAO,IAAIlxB,IAAQ,EAI1C+lB,EAAQ,SAAUD,EAAOiE,EAAKnT,QACxB,IAATA,IAAmBA,EAAO,GAE9B,IADA,IAAInX,EAAS,GACJwD,EAAI6iB,EAAO7iB,EAAI8mB,EAAK9mB,GAAQ2T,EACjCnX,EAAOskB,KAAK9gB,GAEhB,OAAOxD,CACX,EACIg6Q,EAAiB,SAAUt2P,EAAWrL,EAAKG,GAAO,MAAQ,CAC1Dy5P,gBAAgB36O,EAAAA,EAAAA,IAAQrR,EAAAA,GAAevC,GACvCu2P,UAAU11L,EAAAA,EAAAA,IAAQjtD,EAAAA,EAAAA,IAAQrR,EAAAA,GAAezN,GAAMH,EAAIuL,WAAapL,EAAIoL,WAAa,EAAI,GACrFg2P,UAAUtiP,EAAAA,EAAAA,IAAQrR,EAAAA,GAAe5N,GACjC,EAIO+Z,EAAc,SAAU1O,EAAWrL,EAAKG,GAC/C,IAAKkL,IAAcrL,IAAQG,EACvB,OAAOkL,EAEX,IAAI3oB,EAAKi/Q,EAAet2P,EAAWrL,EAAKG,GAAMy5P,EAAiBl3Q,EAAGk3Q,eAAgB2H,EAAW7+Q,EAAG6+Q,SAAUK,EAAWl/Q,EAAGk/Q,SACxH,OAAIhI,EAAiB2H,GACVtiP,EAAAA,EAAAA,IAAQ5T,EAAWrL,GAE1B45P,EAAiBgI,GACV3iP,EAAAA,EAAAA,IAAQ5T,EAAWlL,GAEvBkL,CACX,EAIW8N,EAAgB,SAAU9N,EAAWrL,EAAKG,GACjD,IAAKkL,IAAcrL,IAAQG,EACvB,OAAO,EAEX,IAAIzd,EAAKi/Q,EAAet2P,EAAWrL,EAAKG,GAAMy5P,EAAiBl3Q,EAAGk3Q,eAAgB2H,EAAW7+Q,EAAG6+Q,SAAUK,EAAWl/Q,EAAGk/Q,SACxH,OAAOL,GAAY3H,GAAkBA,GAAkBgI,CAC3D,EAIWr6O,EAAY,SAAUlc,EAAWrL,EAAKG,GAC7C,GAAkB,OAAdkL,EACA,OAAO,EAEX,IAAI3oB,EAAKi/Q,EAAet2P,EAAWrL,EAAKG,GAAMy5P,EAAiBl3Q,EAAGk3Q,eAAgB2H,EAAW7+Q,EAAG6+Q,SAAUK,EAAWl/Q,EAAGk/Q,SACxH,OAAOL,GAAY3H,GAAkBA,GAAkBgI,CAC3D,EAIWn6O,EAAmB,SAAU0Z,EAAKnhC,GACzC,GAAY,OAARmhC,GAAwB,OAARnhC,EAChB,OAAO,EAEX,IAAI6hQ,GAAkB5iP,EAAAA,EAAAA,IAAQrR,EAAAA,GAAeuzB,GACzC2gO,GAAgB7iP,EAAAA,EAAAA,IAAQrR,EAAAA,GAAe5N,GAC3C,OAAO6hQ,EAAgB3kQ,UAAY4kQ,EAAcv2P,UACrD,EAIWic,EAAkB,SAAU2Z,EAAKhhC,GACxC,GAAY,OAARghC,GAAwB,OAARhhC,EAChB,OAAO,EAEX,IAAI0hQ,GAAkB5iP,EAAAA,EAAAA,IAAQrR,EAAAA,GAAeuzB,GAE7C,OADoBliB,EAAAA,EAAAA,IAAQrR,EAAAA,GAAezN,GACtBjD,UAAY2kQ,EAAgBt2P,UACrD,0OCpJImiD,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAmBO,SAAS9Y,EAAS0yO,GACrB,IAAI1nJ,EAAQ,SAAUz4F,EAAUz4B,EAAOotB,GAEnC,IADA,IAAI+2I,EAAO,GACF3oI,EAAK,EAAGA,EAAKhN,UAAU7qB,OAAQ63B,IACpC2oI,EAAK3oI,EAAK,GAAKhN,UAAUgN,GAE7B,OAAmB,OAAfx7B,EAAMotB,GACC,MAEDqL,EAAWmgP,EAAezyO,WAAayyO,GACtC32P,WAAM,EAAQsiD,EAAc,CAACvkE,EAAOotB,GAAM+2I,GAAM,GAC/D,EACIrtH,EAAKo6E,EAAMvgG,KAAK,MAAM,GAE1B,OADAmmB,EAAG3Q,WAAa+qF,EAAMvgG,KAAK,MAAM,GAC1BmmB,CACX,CAIO,IAAI/S,EAAc,SAAU7hB,EAAWrL,EAAKG,GAC/C,YAAYhiB,IAAR6hB,QAA6B7hB,IAARgiB,GAGlBH,GAAOqL,GAAaA,GAAalL,EAF7BkL,EAILA,EAAYrL,EACRA,EACAG,CACd,EAIWyN,EAAgB,IAAI1lB,KAAK,KAAM,EAAG,GAIlCk9B,EAAW,IAAIl9B,KAAK,KAAM,EAAG,GAI7Bi9B,EAAW,IAAIj9B,KAAK,KAAM,GAAI,IAI9BwzB,EAAW,IAAIxzB,KAAK,KAAM,EAAG,GAI7BqvB,EAAW,IAAIrvB,KAAK,KAAM,EAAG,EAAG,GAAI,GAAI,IASxC+2B,EAAU,SAAU2jE,EAAQv3E,GACnC,IAAIb,GAAOG,EAAAA,EAAAA,GAAUi4E,GAErB,OADAp4E,EAAKD,SAASc,EAAUE,WAAYF,EAAU+D,aAAc/D,EAAUsE,aAActE,EAAUg1D,mBACvF71D,CACX,EAIWuU,EAAW,WAAc,OAAO5R,EAAAA,EAAAA,GAAQ,IAAIjlB,KAAS,EAIrDq/B,EAAY,SAAUlc,EAAWrL,EAAKG,GAAO,OAASkL,KAAgBrL,GAAOA,EAAMqL,GAAelL,GAAOA,EAAMkL,EAAc,EAI7HoW,EAAgB,SAAUpW,EAAWrL,EAAKG,GAAO,OAAsB,OAAdkL,KAC1DrL,IAAOmN,EAAAA,EAAAA,GAAQnN,IAAOmN,EAAAA,EAAAA,GAAQ9B,IAC5BlL,IAAOgN,EAAAA,EAAAA,GAAQhN,IAAOgN,EAAAA,EAAAA,GAAQ9B,GAAe,EAI9CktP,EAAqB,SAAU7nQ,EAAOm4B,GAC7C,IAAInmC,EAAKmmC,GAAkByB,EAAAA,EAAsBtc,EAAQtrB,EAAGsrB,MAAOiE,EAAMvvB,EAAGuvB,IAC5E,SAAKjE,IAAUiE,KAGRjE,EAAQtd,GAASA,EAAQuhB,EACpC,EAIWhE,EAAQ,SAAUD,EAAOiE,EAAKnT,QACxB,IAATA,IAAmBA,EAAO,GAE9B,IADA,IAAInX,EAAS,GACJwD,EAAI6iB,EAAO7iB,EAAI8mB,EAAK9mB,GAAQ2T,EACjCnX,EAAOskB,KAAK9gB,GAEhB,OAAOxD,CACX,EAIWkhJ,EAAa,SAAUr+H,EAAMxK,EAAKG,GACzC,OAAOH,EAAI9C,WAAasN,EAAKtN,WAAasN,EAAKtN,WAAaiD,EAAIjD,SACpE,EAIW6xP,EAAiB,SAAUjjP,EAAO4H,GAAU,OAAQ5H,EAAMjS,MAAM6Z,GAAQvkB,OAAO2c,EAAMjS,MAAM,EAAG6Z,GAAW,EAIzGiY,EAAc,SAAUtgB,EAAWrL,EAAKG,GAC/C,OAAKkL,EAGDrL,GAAOqL,EAAYrL,GACZ2K,EAAAA,EAAAA,GAAU3K,GAEjBG,GAAOkL,EAAYlL,GACZwK,EAAAA,EAAAA,GAAUxK,GAEdkL,EARIA,CASf,EAIW22P,EAAsB,SAAUv9Q,GAAQ,OAAO,SAAU/F,EAAUmtD,EAAS09C,QACnE,IAAZ19C,IAAsBA,EAAU,SACrB,IAAX09C,IAAqBA,EAAS,CAAC,GACnC,IAAIn5E,EAAY3W,SAASrV,cAAcK,GASvC,OARA2rB,EAAUtxB,UAAY+sD,EACtBj+C,OAAOC,KAAK07F,GAAQr+F,KAAI,SAAUqrB,GAAO,OAAOnG,EAAUzxB,MAAM43B,GAAOgzE,EAAOhzE,EAAM,IAC5D,kBAAb73B,EACP0xB,EAAUg+E,UAAY1vG,GAAY,IAGjCA,GAAY,IAAIkb,SAAQ,SAAU6oG,GAAS,OAAOA,GAASryF,EAAUW,YAAY0xF,EAAQ,IAEvFryF,CACX,CAAG,EAII,SAASoF,EAAS6/E,EAAM4sK,EAAMj5N,GAEjC,IAAIq2M,EACAD,OAFY,IAAZp2M,IAAsBA,EAAU,CAAC,GAGrC,IACIrhD,EACAu6Q,EACAC,EAHAC,EAAUp5N,EAAQo5N,QAIlBnpJ,EAAOj1H,OACPq+Q,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEXC,GAAWR,GAAiB,IAATA,GAAoD,oBAA/BhpJ,EAAKgnJ,sBACjD,GAAoB,oBAAT5qK,EACP,MAAM,IAAI1jF,UAAU,uBAGxB,SAAS+wP,EAAWrnP,GAChB,IAAIlI,EAAOksO,EACPn/M,EAAUk/M,EAId,OAHAC,EAAWD,OAAWjhQ,EACtBkkR,EAAiBhnP,EACjB1zB,EAAS0tG,EAAKjqF,MAAM80B,EAAS/sB,EAEjC,CACA,SAASwvP,EAAWC,EAAaC,GAC7B,OAAIJ,GACAxpJ,EAAK6pJ,qBAAqBZ,GACnBjpJ,EAAKgnJ,sBAAsB2C,IAE/B3nP,WAAW2nP,EAAaC,EACnC,CAuBA,SAASE,EAAa1nP,GAClB,IAAI2nP,EAAoB3nP,EAAO8mP,EAK/B,YAAyBhkR,IAAjBgkR,GAA+Ba,GAAqBf,GACvDe,EAAoB,GAAOT,GALNlnP,EAAOgnP,GAKgCD,CACrE,CACA,SAASa,IACL,IAAI5nP,EAAOnzB,KAAK2yB,MAChB,GAAIkoP,EAAa1nP,GACb,OAAO6nP,EAAa7nP,GAGxB6mP,EAAUS,EAAWM,EAvBzB,SAAuB5nP,GACnB,IACI8nP,EAAsB9nP,EAAOgnP,EAC7Be,EAAcnB,GAFM5mP,EAAO8mP,GAG/B,OAAOI,EACDxiQ,KAAKC,IAAIojQ,EAAahB,EAAUe,GAChCC,CACV,CAgBuCC,CAAchoP,GACrD,CACA,SAAS6nP,EAAa7nP,GAIlB,OAHA6mP,OAAU/jR,EAGNqkR,GAAYnjB,EACLqjB,EAAWrnP,IAEtBgkO,EAAWD,OAAWjhQ,EACfwJ,EACX,CAcA,SAAS27Q,IAEL,IADA,IAAInwP,EAAO,GACFwR,EAAK,EAAGA,EAAKhN,UAAU7qB,OAAQ63B,IACpCxR,EAAKwR,GAAMhN,UAAUgN,GAEzB,IAAItJ,EAAOnzB,KAAK2yB,MACZ0oP,EAAaR,EAAa1nP,GAK9B,GAJAgkO,EAAWlsO,EAEXisO,EAAWn0O,KACXk3P,EAAe9mP,EACXkoP,EAAY,CACZ,QAAgBplR,IAAZ+jR,EACA,OArEZ,SAAqB7mP,GAMjB,OAJAgnP,EAAiBhnP,EAEjB6mP,EAAUS,EAAWM,EAAchB,GAE5BK,EAAUI,EAAWrnP,GAAQ1zB,CACxC,CA8DmB67Q,CAAYrB,GAEvB,GAAII,EAGA,OADAL,EAAUS,EAAWM,EAAchB,GAC5BS,EAAWP,EAE1B,CAIA,YAHgBhkR,IAAZ+jR,IACAA,EAAUS,EAAWM,EAAchB,IAEhCt6Q,CACX,CAIA,OA3GAs6Q,GAAQA,GAAQ,EAwGhBqB,EAAU5mP,OAvCV,gBACoBv+B,IAAZ+jR,GAlDR,SAAqB7jR,GACjB,GAAIokR,EACA,OAAOxpJ,EAAK6pJ,qBAAqBzkR,GAErCq7B,aAAar7B,EACjB,CA8CQolR,CAAYvB,GAEhBG,EAAiB,EACjBhjB,EAAW8iB,EAAe/iB,EAAW8iB,OAAU/jR,CACnD,EAkCAmlR,EAAU1nJ,MAjCV,WACI,YAAmBz9H,IAAZ+jR,EAAwBv6Q,EAASu7Q,EAAah7Q,KAAK2yB,MAC9D,EAgCAyoP,EAAU3tM,QA/BV,WACI,YAAmBx3E,IAAZ+jR,CACX,EA8BOoB,CACX,oDCxRI5gR,EAAII,EAAIK,EAQDugR,gCCvBPh2M,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAQIw7N,EAAkC,WAClC,SAASA,EAAiBn3P,EAAOikM,EAAWmzD,QAC1B,IAAVp3P,IAAoBA,EAAQ,GAChCvB,KAAKuB,MAAQA,EACbvB,KAAKwlM,UAAYA,EACjBxlM,KAAK24P,gBAAkBA,EACvB34P,KAAK+8F,QAAU,GACf/8F,KAAK44P,QAAU,GAEf,IADA,IAAIn7L,EAAM,EACD35E,EAAM,EAAGA,EAAMyd,EAAOzd,IAC3Bkc,KAAK+8F,QAAQ/7F,KAAKy8D,GAClBA,GAAO+nI,EACPxlM,KAAK44P,QAAQ53P,KAAKwkM,EAE1B,CAmCA,OAlCAkzD,EAAiBx4P,UAAU7kB,OAAS,SAAU8oN,GAC1C,OAAOnkM,KAAK44P,QAAQz0D,EACxB,EACAu0D,EAAiBx4P,UAAU24P,aAAe,SAAU10D,GAC5CnkM,KAAK3kB,OAAO8oN,KAAcnkM,KAAKwlM,WAC/BxlM,KAAK0mM,gBAAgBvC,EAAUnkM,KAAK24P,gBAE5C,EACAD,EAAiBx4P,UAAU44P,eAAiB,SAAU30D,GAC9CnkM,KAAK3kB,OAAO8oN,GAAYnkM,KAAKwlM,WAC7BxlM,KAAK0mM,gBAAgBvC,GAAkC,EAAxBnkM,KAAK24P,gBAE5C,EACAD,EAAiBx4P,UAAUtL,MAAQ,SAAUjb,GACzC,IAAK,IAAIuG,EAAI,EAAGA,EAAI8f,KAAK+8F,QAAQl7G,OAAQ3B,IAAK,CAC1C,GAAIvG,IAAaqmB,KAAK+8F,QAAQ78G,GAC1B,OAAOA,EAEX,GAAIvG,EAAWqmB,KAAK+8F,QAAQ78G,GACxB,OAAOA,EAAI,CAEnB,CACA,OAAO8f,KAAKuB,MAAQ,CACxB,EACAm3P,EAAiBx4P,UAAUuI,OAAS,SAAU07L,GAC1C,OAAOnkM,KAAK+8F,QAAQonG,EACxB,EACAu0D,EAAiBx4P,UAAU64P,YAAc,WACrC,OAAO/4P,KAAK44P,QAAQn8Q,QAAO,SAAUqxB,EAAMgnD,GAAQ,OAAOhnD,EAAOgnD,CAAM,GAAG,EAC9E,EACA4jM,EAAiBx4P,UAAUwmM,gBAAkB,SAAUvC,EAAU1+M,GAC7Dua,KAAK44P,QAAQz0D,IAAa1+M,EAC1Bua,KAAK+8F,QAnDA,SAAUtiE,EAAK32C,EAAK2B,GAAS,OAAQg9D,EAAcA,EAAc,GAAIhoB,EAAI7rC,MAAM,EAAG9K,EAAM,IAAI,GAAQ22C,EAAI7rC,MAAM9K,EAAM,GAAG7D,KAAI,SAAUkqE,GAAK,OAAOA,EAAI1kE,CAAO,KAAK,EAAQ,CAmD/JwhJ,CAAOjnI,KAAK+8F,QAASonG,EAAU1+M,EAClD,EACOizQ,CACX,CAlDsC,GChBlCrzN,EAAY,SAAU8kB,GAAK,OAAOr1D,KAAKI,IAAIi1D,EAAG,EAAI,EAIlD6uM,EACA,SAAsBvwP,GAClBzI,KAAKyI,OAASA,CAClB,EAOAwwP,EACA,SAAoBntP,GAChB9L,KAAK8L,KAAOA,CAChB,EAOAotP,EAAiC,WACjC,SAASA,EAAgBrtP,EAAgBstP,GACrCn5P,KAAK6L,eAAiBA,EACtB7L,KAAKm5P,aAAeA,EACpBn5P,KAAKqR,UAAY,WACjBrR,KAAKo5P,YAAc,EACnBp5P,KAAKq5P,WAAa,EAClBr5P,KAAKs5P,cAAgB,EACrBt5P,KAAK+L,KAAO,EACZ/L,KAAKuB,MAAQ,EACbvB,KAAKu5P,iBAAmB,KACxBv5P,KAAK4H,aAAe,EACpB5H,KAAK2H,UAAY,CACrB,CAkDA,OAjDAuxP,EAAgBh5P,UAAU2G,OAAS,SAAU0yP,EAAkBztP,EAAMC,EAAMxK,EAAOoG,EAAWC,EAAcyJ,QACrF,IAAd1J,IAAwBA,EAAY,QACnB,IAAjBC,IAA2BA,EAAe,QAC5B,IAAdyJ,IAAwBA,EAAY,YACxCrR,KAAKu5P,iBAAmBA,EACxBv5P,KAAKo5P,YAActtP,EACnB9L,KAAKq5P,WAAavtP,EAAOC,EACzB/L,KAAK+L,KAAOA,EACZ/L,KAAKuB,MAAQA,EACbvB,KAAKs5P,cAAgB,EACrBt5P,KAAK2H,UAAYA,EACjB3H,KAAK4H,aAAeA,EACpB5H,KAAKqR,UAAYA,EACjB,IAAImoP,EAAmBx5P,KAAKy5P,cAAc9xP,GACtC+xP,EAAiBr0N,EAAUv5B,EAAO0tP,GACtCx5P,KAAK6L,eAAe,IAAImtP,EAAah5P,KAAKktP,UAAUwM,KACpD15P,KAAKm5P,aAAa,IAAIF,EAAWS,GACrC,EACAR,EAAgBh5P,UAAUokP,SAAW,SAAU7sQ,GAC3C,IAAIu7G,EAAav7G,EAAGu7G,WAAYpzG,EAAYnI,EAAGmI,UAAWmmB,EAAetuB,EAAGsuB,aAAcy/H,EAAc/tJ,EAAG+tJ,YACvGm0H,EAAoC,aAAnB35P,KAAKqR,UAA2BzxB,EAAYozG,EAC7D4mK,EAAgC,aAAnB55P,KAAKqR,UAA2BtL,EAAey/H,EAChE,GAAIxlI,KAAKs5P,gBAAkBK,GAAmB35P,KAAKu5P,iBAAnD,CAGA,IAAIryP,EAAKlH,KAAKs5P,eAAiBK,EAC/B35P,KAAKs5P,cAAgBK,EACrB,IAAIE,EAAiB75P,KAAKu5P,iBAAiB3kQ,MAAMywC,EAAUs0N,EAAiB35P,KAAK2H,YAC7EmyP,EAAgB95P,KAAKu5P,iBAAiB3kQ,MAAMywC,EAAUs0N,EAAiBC,EAAa55P,KAAK4H,eAO7F,IANKV,GAAM4yP,GAAiB95P,KAAKq5P,YAAcr5P,KAAKq5P,WAAar5P,KAAKuB,QAClEvB,KAAKo5P,YAAcS,EACnB75P,KAAK6L,eAAe,IAAImtP,EAAah5P,KAAKktP,UAAU2M,KACpD75P,KAAKq5P,WAAavkQ,KAAKC,IAAIiL,KAAKo5P,YAAcp5P,KAAK+L,KAAM/L,KAAKuB,OAC9DvB,KAAKm5P,aAAa,IAAIF,EAAWj5P,KAAKo5P,eAEtClyP,GAAM2yP,GAAkB75P,KAAKo5P,YAAa,CAC1C,IAAIW,EAAmBjlQ,KAAK4M,MAAkB,GAAZ1B,KAAK+L,MACvC/L,KAAKo5P,YAAc/zN,EAAUw0N,EAAiBE,GAC9C/5P,KAAK6L,eAAe,IAAImtP,EAAah5P,KAAKktP,UAAUltP,KAAKo5P,eACzDp5P,KAAKq5P,WAAavkQ,KAAKC,IAAIiL,KAAKo5P,YAAcp5P,KAAK+L,KAAM/L,KAAKuB,OAC9DvB,KAAKm5P,aAAa,IAAIF,EAAWj5P,KAAKo5P,aAC1C,CAjBA,CAkBJ,EACAF,EAAgBh5P,UAAUgtP,UAAY,SAAUt4P,GAC5C,OAAOoL,KAAKu5P,iBAAmBv5P,KAAKu5P,iBAAiB9wP,OAAO7T,GAASoL,KAAK2H,UAAY,CAC1F,EACAuxP,EAAgBh5P,UAAUu5P,cAAgB,SAAUp+Q,GAChD,OAAO2kB,KAAKu5P,iBAAmBzkQ,KAAK4O,KAAKroB,EAAS2kB,KAAKu5P,iBAAiBl+Q,OAAO,IAAM,CACzF,EACO69Q,CACX,CAhEqC,GFxBjCjzP,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,IAwB7C,SAAWo3P,GACPA,EAAgBA,EAA0B,SAAI,GAAK,WACnDA,EAAgBA,EAAyB,QAAI,GAAK,SACrD,CAHD,CAGGA,IAAoBA,EAAkB,CAAC,IAC1C,IAIIuB,IAAmBviR,EAAK,CAAC,GACtBghR,EAAgB12L,SAAW,SAAUluE,GAAQ,OAAO,SAAUpO,GAAS,OAAOA,EAAQoO,CAAM,CAAG,EAClGpc,EAAGghR,EAAgBrP,UAAY,SAAUv1P,GAAQ,OAAO,SAAUpO,GAAS,OAAOA,EAAQoO,CAAM,CAAG,EACnGpc,GACAwiR,IAAqBpiR,EAAK,CAAC,GACxB4gR,EAAgB12L,SAAW,SAAU/6D,GAAO,OAAO,SAAUvhB,GAAS,OAAOqP,KAAKC,IAAItP,EAAOuhB,EAAM,CAAG,EACzGnvB,EAAG4gR,EAAgBrP,UAAY,SAAUpiP,GAAO,OAAO,SAAUvhB,GAAS,OAAOqP,KAAKI,IAAIzP,EAAOuhB,EAAM,CAAG,EAC1GnvB,GACAqiR,IAAoBhiR,EAAK,CAAC,GACvBugR,EAAgB12L,SAAW,SAAU/6D,GAAO,OAAO,SAAUjE,GAAS,OAAOA,EAAQiE,CAAK,CAAG,EAChG9uB,EAAGugR,EAAgBrP,UAAY,SAAUpiP,GAAO,OAAO,SAAUjE,GAAS,OAAOA,EAAQiE,CAAK,CAAG,EACjG9uB,GAIAyzB,EAAgC,SAAUnE,GAE1C,SAASmE,EAAeztB,GACpB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA4HxC,OA3HA0C,EAAM62P,iBAAmB,KACzB72P,EAAMuhO,gBAAkB,KACxBvhO,EAAMy3P,cAAgB,KACtBz3P,EAAM03P,UAAY,EAClB13P,EAAM23P,SAAW,EACjB33P,EAAM8G,qBAAsB,EAC5B9G,EAAM8kP,SAAW,SAAU/hQ,GACvB,IAAI60Q,EAAqC,aAApB53P,EAAM2O,UAA2B,YAAc,aAC/D3O,EAAMuhO,kBAGXvhO,EAAMuhO,gBAAgBq2B,GAAkB70Q,EAC5C,EACAid,EAAMygP,cAAgB,SAAUvuP,GAC5B8N,EAAM8G,qBAAsB,EACxB9G,EAAM62P,kBACN72P,EAAM8kP,SAAS9kP,EAAM62P,iBAAiB9wP,OAAO7T,GAErD,EACA8N,EAAMsF,eAAiB,SAAUpT,GAC7B,GAAK8N,EAAM62P,kBAAqBxgR,OAAhC,CAGAA,OAAO8+Q,qBAAqBn1P,EAAM63P,iBAClC,IAAIC,EAAc93P,EAAM62P,iBAAiB9wP,OAAO7T,GAC5Cyc,EAAY3O,EAAM+3P,4BAA4BD,GAC9C/iR,EAAKirB,EAAMg4P,YAAYF,EAAanpP,GAAYtO,EAAQtrB,EAAGsrB,MAAOiE,EAAMvvB,EAAGuvB,IAC/E,GAAIjE,IAAUiE,EAAd,CAGA,IAAInT,EAAO6O,EAAMi4P,WAAW53P,EAAOiE,GAC/B4zP,EAAeZ,EAAgB3oP,GAAWxd,GAC1CgnQ,EAAkBZ,EAAkB5oP,GAAWrK,GAC/C8zP,EAAgBZ,EAAiB7oP,GAAWupP,EAAa5zP,IACzDiE,EAAU,SAAU4d,GACpBnmB,EAAM8G,qBAAsB,EAC5B,IAAIqE,EAAO+sP,EAAa/xO,GACxBnmB,EAAM8kP,SAASqT,EAAgBhtP,IAC/BitP,EAAcjtP,GACRnL,EAAM63P,gBAAkBxhR,OAAOi8Q,uBAAsB,WAAc/pP,EAAQ4C,EAAO,IAClFnL,EAAM8G,qBAAsB,CACtC,EACA9G,EAAM63P,gBAAkBxhR,OAAOi8Q,uBAAsB,WAAc/pP,EAAQlI,EAAQ,GAbnF,CAPA,CAqBJ,EACAL,EAAMq4P,eAAiB,WACdr4P,EAAM62P,kBAGX72P,EAAM8kP,SAAS9kP,EAAM62P,iBAAiBR,cAAgBr2P,EAAMxkB,MAAM0pB,aACtE,EACAlF,EAAMi4P,WAAa,SAAU53P,EAAOiE,GAChC,IAAIg0P,EAAWt4P,EAAMxkB,MAAM+8Q,gBAAkBtvP,EAAetC,aAAa4xP,eACzE,OAAOnmQ,KAAK6T,IAAI3B,EAAMjE,IAAUi4P,EAxEvB,GAyEb,EACAt4P,EAAMg4P,YAAc,SAAUF,EAAanpP,GACvC,IAAI6pP,EAAkBx4P,EAAMy4P,wBAC5B,GAAIxtL,SAAS,GAAGzpF,OAAOs2Q,GAAc,MAAQ7sL,SAAS,GAAGzpF,OAAOg3Q,GAAkB,IAC9E,MAAO,CAAEn4P,MAAOy3P,EAAaxzP,IAAKwzP,GAEtC,IAlFuB56Q,EAAWw7Q,EAAcxvP,EAkF5CyvP,EAAY34P,EAAM44P,qBAClBxlL,EAAOzkE,IAAconP,EAAgBrP,SAAW,GAAK,EACrDmS,GApFmB37Q,EAoFas7Q,EApFFE,EAoFmBZ,EApFL5uP,EAoFkBlJ,EAAMxkB,MAAM0tB,qBAAuB,EAnFtG9W,KAAKC,IAAID,KAAK6T,IAAIyyP,EAAex7Q,GAAYgsB,IAoFxC5E,EAAMlS,KAAKC,IAAIylQ,EAAaa,GAEhC,MAAO,CAAEt4P,MADGjO,KAAKC,IAAID,KAAKI,IAAI8R,EAAO8uE,EAAOylL,EAAa,GAAIF,GACtCr0P,IAAKA,EAChC,EACAtE,EAAM44P,mBAAqB,WACvB,OAAO54P,EAAM84P,oBAAsB94P,EAAM+4P,mBAC7C,EACA/4P,EAAM+3P,4BAA8B,SAAUD,GAC1C,OAAOA,EAAc93P,EAAMy4P,wBAA0B1C,EAAgBrP,SAAWqP,EAAgB12L,OACpG,EACAr/D,EAAMg5P,aAAe,SAAUx9Q,QACb,IAAVA,IAAoBA,EAAQwkB,EAAMxkB,OACtC,IAAIyoQ,EAAgC,aAApBjkP,EAAM2O,UAA2BnzB,EAAM4mB,WAAa5mB,EAAMy9Q,eACxDzoR,IAAdyzQ,IAGJjkP,EAAM62P,iBAAmB,IAAIb,EAAiBx6Q,EAAMqjB,MAAOolP,EAAW,GACtEjkP,EAAMk5P,gBAAgB/0P,OAAOnE,EAAM62P,iBAAkBr7Q,EAAM4tB,KAAM5tB,EAAM6tB,KAAM7tB,EAAMqjB,MAAOrjB,EAAMypB,UAAWjF,EAAM2hP,iBAAkB3hP,EAAM2O,WAC7I,EACA3O,EAAMm5P,qBAAuB,SAAUC,GACnC,OAAKp5P,EAAMuhO,gBAGJvhO,EAAMuhO,gBAAgB63B,GAFlB,CAGf,EACAp5P,EAAMksO,aAAe,SAAU16P,GAC3B,GAAKwuB,EAAMuhO,iBAAoBvhO,EAAM62P,iBAArC,CAGA,IAAIn/P,EAASlmB,EAAMkmB,OACnBsI,EAAMk5P,gBAAgBtX,SAAS,CAC3BtxJ,WAAY54F,EAAO44F,WACnBpzG,UAAWwa,EAAOxa,UAClBmmB,aAAc3L,EAAO2L,aACrBy/H,YAAaprI,EAAOorI,cAExB,IAAI5wI,EAAQ8N,EAAM62P,iBAAiB3kQ,MAAM8N,EAAMy4P,wBAA0Bz4P,EAAMxkB,MAAMypB,WACjFkE,EAAiBnJ,EAAMxkB,MAAM2tB,eAC7B3D,EAAO,CACPtT,MAAOA,EACPwF,OAAQA,EACRwpP,aAAclhP,EAAMkhP,aACpBC,WAAYnhP,EAAMmhP,WAClBr6O,oBAAqB9G,EAAM8G,qBAE3B9G,EAAMxkB,MAAMomQ,UACZ5hP,EAAMxkB,MAAMomQ,SAAS79O,UAAKvzB,EAAWgB,GAErC23B,GACAA,EAAepF,UAAKvzB,EAAWg1B,GAEnCxF,EAAMkhP,kBAAe1wQ,EACrBwvB,EAAMmhP,gBAAa3wQ,CAxBnB,CAyBJ,EACAwvB,EAAM6G,mBAAqB,SAAUlX,GACjCqQ,EAAMkhP,aAAevxP,CACzB,EACAqQ,EAAMq5P,iBAAmB,SAAU1pQ,GAC/BqQ,EAAMmhP,WAAaxxP,CACvB,EACAqQ,EAAMk5P,gBAAkB,IAAI1C,EAAgBx2P,EAAM6G,mBAAoB7G,EAAMq5P,kBACrEr5P,CACX,CAmIA,OAlQAuD,EAAU0F,EAAgBnE,GAgI1B7kB,OAAO6nB,eAAemB,EAAezL,UAAW,UAAW,CACvDuK,IAAK,WACD,OAAOzK,KAAKikO,eAChB,EACAv5N,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemB,EAAezL,UAAW,sBAAuB,CACnEuK,IAAK,WACD,OAAOzK,KAAK67P,qBAAwC,aAAnB77P,KAAKqR,UAA2B,eAAiB,cACtF,EACA3G,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemB,EAAezL,UAAW,sBAAuB,CACnEuK,IAAK,WACD,OAAOzK,KAAK67P,qBAAwC,aAAnB77P,KAAKqR,UAA2B,eAAiB,cACtF,EACA3G,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemB,EAAezL,UAAW,0BAA2B,CACvEuK,IAAK,WACD,OAAOzK,KAAK67P,qBAAwC,aAAnB77P,KAAKqR,UAA2B,YAAc,aACnF,EACA3G,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemB,EAAezL,UAAW,YAAa,CACzDuK,IAAK,WACD,YAAgCv3B,IAAzB8sB,KAAK9hB,MAAMmzB,UAA0BrR,KAAK9hB,MAAMmzB,UAAY1F,EAAetC,aAAagI,SACnG,EACA3G,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemB,EAAezL,UAAW,mBAAoB,CAChEuK,IAAK,WACD,YAAuCv3B,IAAhC8sB,KAAK9hB,MAAMmmQ,iBACZrkP,KAAK9hB,MAAMmmQ,iBAAmB14O,EAAetC,aAAag7O,gBACpE,EACA35O,YAAY,EACZC,cAAc,IAElBgB,EAAezL,UAAUsI,YAAc,WACnC,OAAOxI,KAAKyJ,UAAU3U,KAAK4O,KAAK1D,KAAKm7P,yBACzC,EACAxvP,EAAezL,UAAUuJ,UAAY,SAAUhB,GAC3C,OAAKzI,KAAKu5P,iBAGHv5P,KAAKu5P,iBAAiB3kQ,MAAM6T,GAFxB,CAGf,EACAkD,EAAezL,UAAUoI,WAAa,SAAU1T,GAC5C,OAAKoL,KAAKu5P,iBAGHv5P,KAAKu5P,iBAAiB9wP,OAAO7T,GAFzB,CAGf,EACA+W,EAAezL,UAAU87P,eAAiB,SAAUpnQ,GAChD,IAAKoL,KAAKu5P,iBACN,OAAO,EAEX,IAAI0C,EAAej8P,KAAKm7P,wBACpBe,EAAkBD,EAAej8P,KAAKy7P,oBACtC7hR,EAAMomB,KAAKu5P,iBAAiB9wP,OAAO7T,GACnCulF,EAASvgG,EAAMomB,KAAKu5P,iBAAiBl+Q,OAAOuZ,GAChD,OAAOhb,GAAOqiR,GAAgB9hL,GAAU+hL,CAC5C,EACAvwP,EAAezL,UAAUi8P,eAAiB,SAAUvnQ,GAChD,QAAKoL,KAAKu5P,kBAGHv5P,KAAKm7P,0BAA4Bn7P,KAAKu5P,iBAAiB9wP,OAAO7T,EACzE,EACA+W,EAAezL,UAAU4K,kBAAoB,WACzC,IAAIkE,EAAUhP,KAAK9hB,MAAM8wB,QACrBA,GACAA,EAAQvI,UAAKvzB,EAAW8sB,KAEhC,EACA2L,EAAezL,UAAUnrB,OAAS,WAC9B,IAAI2tB,EAAQ1C,KACRA,KAAKo6P,YAAcp6P,KAAK9hB,MAAMqjB,OAC3BvB,KAAKm6P,gBAAkBn6P,KAAKqR,WAC5BrR,KAAKq6P,WAAar6P,KAAK9hB,MAAM6tB,OAChC/L,KAAK07P,eACL17P,KAAKo6P,UAAYp6P,KAAK9hB,MAAMqjB,MAC5BvB,KAAKm6P,cAAgBn6P,KAAKqR,UAC1BrR,KAAKq6P,SAAWr6P,KAAK9hB,MAAM6tB,MAE/B,IAAIqwP,EAAe,GAAGl4Q,QAAQ8b,KAAKu5P,iBAAmBv5P,KAAKu5P,iBAAiBR,cAAgB,GAAK/4P,KAAK9hB,MAAM0pB,cACxGy0P,EAAsC,aAAnBr8P,KAAKqR,UACtB,CAAEh2B,OAAQ,GAAG6I,OAAOk4Q,EAAc,OAClC,CAAE/hR,MAAO,GAAG6J,OAAOk4Q,EAAc,OACnCh+O,GAAiBhP,EAAAA,EAAAA,GAAW,yBAA0B,CACtD,0BAA8C,eAAnBpP,KAAKqR,WACjCrR,KAAK9hB,MAAMrK,WACVyoR,GAAuBltP,EAAAA,EAAAA,GAAW,2BAA4B,CAC9D,sCAA0D,eAAnBpP,KAAKqR,YAEhD,OAAQ99B,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAUy3B,GAAM9I,EAAMuhO,gBAAkBz4N,CAAI,EAAG84O,SAAUtkP,KAAK4uO,aAAc/6P,UAAWuqC,EAAgB7S,SAAUvL,KAAK9hB,MAAMqtB,SAAUxzB,KAAMioB,KAAK9hB,MAAMnG,MAC7LioB,KAAK9hB,MAAMzK,SACXF,EAAAA,cAAoB,MAAO,CAAEG,MAAO2oR,EAAkBxoR,UAAWyoR,IACzE,EACA3wP,EAAeK,UAAY,CACvBpE,aAAcqE,EAAAA,OAAiBoY,WAC/BxwC,UAAWo4B,EAAAA,OACXoF,UAAWpF,EAAAA,MAAgB,CAAC,aAAc,aAC1CswP,YAAatwP,EAAAA,KACbnH,WAAYmH,EAAAA,OACZ0vP,UAAW1vP,EAAAA,OACXL,oBAAqBK,EAAAA,OACrBq4O,SAAUr4O,EAAAA,KACVJ,eAAgBI,EAAAA,KAChBgvP,eAAgBhvP,EAAAA,OAChBo4O,iBAAkBp4O,EAAAA,OAClBH,KAAMG,EAAAA,OAAiBoY,WACvB9Y,SAAUU,EAAAA,OACVF,KAAME,EAAAA,OAAiBoY,WACvB1c,UAAWsE,EAAAA,OAAiBoY,WAC5B9iB,MAAO0K,EAAAA,OAAiBoY,WACxBtsC,KAAMk0B,EAAAA,QAEVN,EAAetC,aAAe,CAC1BgI,UAAW,WACXkrP,aAAa,EACblY,iBAAkB,EAClBz4O,oBAAqB,IACrBqvP,eAAgB,KAEbtvP,CACX,CApQoC,CAoQlCp4B,EAAAA,sHG7SSipR,EAAiB,SAAU/kR,GAClC,IAAIhE,EAAWgE,EAAGhE,SAAUgpR,EAAqBhlR,EAAGglR,mBAAoBrpR,EAAKqE,EAAGrE,GAAIwqE,EAAYnmE,EAAGmmE,UACnG,OAAQrqE,EAAAA,cAAoB,MAAO,CAAEM,UAAW,sCAAuCT,GAAIA,GACvFG,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,iCAAmCJ,GAC5EF,EAAAA,cAAoB,MAAO,CAAEM,UAAW,uDAAyD+pE,GAC7FrqE,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAE4C,KAAM,SAAU,aAAc,QAAS1C,QAASonR,EAAoBrnR,KAAM,IAAKujC,QAAS0S,EAAAA,IAAOlnC,SAAU,OAAQtQ,UAAW,uDACtK,4ICZIoyB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAaIgwP,EAAsC,SAAUl1P,GAEhD,SAASk1P,EAAqBx+Q,GAC1B,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA6DxC,OAzDA0C,EAAM60B,QAAU,EAChB70B,EAAMi6P,KAAMxoP,EAAAA,EAAAA,KACZzR,EAAMk6P,QAAUl6P,EAAMm6P,kBACtBn6P,EAAMo6P,UAAYp6P,EAAMq6P,oBACxBr6P,EAAMs6P,sBAAuB,EAI7Bt6P,EAAMu6P,cAAgB,SAAU/oR,GAC5BA,EAAM+gB,kBACN2xL,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAM4L,QAAS5V,EAAOwuB,OAAOxvB,EACrD,EAIAwvB,EAAM+I,UAAY,SAAUv3B,GACpBA,EAAMm2B,UAAYtD,EAAAA,EAAKiP,KAAOtT,EAAMxkB,MAAM4L,UAC1C5V,EAAM+gB,iBACNyN,EAAMu6P,cAAc/oR,IAExB,IAAIgpR,EAAUx6P,EAAM2F,QACpB,GAAI60P,GAAYhpR,EAAMm2B,UAAYtD,EAAAA,EAAKmK,IAAM,CACzC,IACIisP,EAAmBD,EAAQv+K,iBADP,4EAEpBy+K,EAAwBD,EAAiB,GACzCE,EAAuBF,EAAiBA,EAAiBt7Q,OAAS,GAClE+jP,EAAkBljO,EAAMwhO,cACxBl6N,GAAgBC,EAAAA,EAAAA,GAAiB27N,GACjC1xP,EAAMy/L,UACDiyD,GAAmB57N,IAAkBozP,GACtCx3B,GAAmB57N,IAAkBtH,EAAM2F,WAC3Cg1P,EAAqBp1P,QACrB/zB,EAAM+gB,kBAIN2wO,GAAmB57N,IAAkBqzP,IACrCD,EAAsBn1P,QACtB/zB,EAAM+gB,iBAGlB,CACJ,EACAyN,EAAM46P,iBAAmB,WACrB,OAAK56P,EAAM3vB,YAA2BG,IAAlBwvB,EAAM60B,QAGnB70B,EAAM3vB,MAAM+G,QAAU4oB,EAAM60B,QAAU70B,EAAM60B,QAAUgmO,EAAAA,GAAsB,GAAK76P,EAAM3vB,MAAM+G,OAAS4oB,EAAM60B,QAAUgmO,EAAAA,GAFlH76P,EAAM60B,QAAU70B,EAAM60B,QAAUimO,EAAAA,EAG/C,EACA96P,EAAMwhO,YAAc,WAChB,OAAOxhO,EAAMxkB,MAAM87B,SAAWtX,EAAMxkB,MAAM87B,SAAS3D,cAAgB7nB,QACvE,GACA0nB,EAAAA,EAAAA,GAAgBC,EAAAA,GAChBzT,EAAMs6P,sBAAuB/hB,EAAAA,EAAAA,GAAuB9kO,EAAAA,GACpDzT,EAAM3vB,MAAQ,CACV+G,QAAQ2jR,EAAAA,EAAAA,GAAa/6P,EAAM46P,mBAAoB56P,EAAMwhO,cAAexhO,EAAMi6P,MAEvEj6P,CACX,CAoFA,OApJAuD,EAAUy2P,EAAsBl1P,GAoEhCk1P,EAAqBx8P,UAAU4K,kBAAoB,WAC3C9K,KAAKqI,SACDrI,KAAK9hB,MAAMw/Q,WACX19P,KAAKqI,QAAQJ,OAGzB,EAIAy0P,EAAqBx8P,UAAUnrB,OAAS,WACpC,IAAI0C,EAAII,EACJ6qB,EAAQ1C,KACR5sB,OAAuBF,IAAlB8sB,KAAK9hB,MAAM9K,GAAmB4sB,KAAK9hB,MAAM9K,GAAK4sB,KAAK48P,QACxD1kR,EAAK8nB,KAAK9hB,MAAO8B,EAAQ9H,EAAG8H,MAAO3F,EAAQnC,EAAGmC,MAAOgB,EAASnD,EAAGmD,OAAQ5H,EAAWyE,EAAGzE,SAAUw/M,EAAW/6M,EAAG+6M,SAAUt3L,EAAMzjB,EAAGyjB,IAAKjoB,EAAQwE,EAAGxE,MAAO0G,EAAelC,EAAGkC,aAC3KujR,EAAgBpqR,EAAAA,SAAeinD,QAAQ/mD,GACvCmmD,EAAU55B,KAAKi7I,WAAW0iH,GAC1B11M,EAAUjoD,KAAK49P,aAAaD,GAC5BpS,EAAOvrQ,EAAQ,CACf,kBAAmB5M,GACnB,KACAwqE,OAAqC1qE,IAAzB8sB,KAAK9hB,MAAM0/D,WAA0B59C,KAAK9hB,MAAM0/D,UAC5DijL,EAAgB7gO,KAAKs9P,mBACrBO,EAAiBtqR,EAAAA,cAAoB4uP,EAAAA,EAAc3O,SAAU,CAAE/tO,MAAOo7O,GACtEttP,EAAAA,cAAoB,MAAOshB,EAAS,CAAC,IAAIpd,EAAK,CAAC,GAAMqmR,EAAAA,IAAmB99P,KAAK28P,IAAKllR,GAAK,CAAE5D,UAAW,oBAAsBmsB,KAAK9hB,MAAMrK,UAAY,IAAMmsB,KAAK9hB,MAAMrK,UAAY,IAAK43B,UAAWzL,KAAKyL,UAAWF,SAAU,EAAG5P,IAAKA,EAAKjoB,MAAOmhB,EAAS,CAAE/a,OAAQ+mP,GAAiBntP,GAAQK,IAAM,SAAUy3B,GAAM,OAAO9I,EAAM2F,QAAUmD,CAAI,IACrUj4B,EAAAA,cAAoB,MAAO,CAAEM,UAAW,cACxCN,EAAAA,cAAoB,MAAOshB,EAAS,CAAC,EAAG02P,EAAM,CAAE13Q,WAAWu7B,EAAAA,EAAAA,GAAW,qBAAsBv3B,EAAK,CAAC,EAC1FA,EAAG,YAAYqM,OAAO8b,KAAK9hB,MAAMnE,aAAeimB,KAAK9hB,MAAMnE,WAC3DlC,IAAME,KAAM,SAAU,kBAAmB3E,EAAI,cAAc,EAAM,mBAAoB4sB,KAAK88P,UAAWppR,MAAO,CAAE2G,MAAOA,EAAOgB,OAAQA,EAAQ43M,SAAUA,KAC1JjzL,KAAK9hB,MAAM8B,OACPzM,EAAAA,cAAoBipR,EAAgB,CAAE5+M,UAAWA,EAAW6+M,mBAAoBz8P,KAAKi9P,cAAe7pR,GAAIA,GAAM4M,GAClHzM,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oCAAqCH,MAAO0G,EAAchH,GAAI4sB,KAAK88P,WAAaljO,GACxHquB,EACAjoD,KAAKg9P,sBAAwBzpR,EAAAA,cAAoB4nQ,EAAAA,EAAkB,SAC/E,OAAI/1O,EAAAA,EAC+B,OAAxBpF,KAAK9hB,MAAM87B,SACdk4M,EAAAA,aAAsB2rC,EAAe79P,KAAK9hB,MAAM87B,UAAYxrB,SAASa,MACrEwuQ,EAED,IACX,EACAnB,EAAqBx8P,UAAU09P,aAAe,SAAUnqR,GACpD,OAAOA,EAASqP,QAAO,SAAU00G,GAAS,OAAOA,GAASA,EAAMh+G,OAAS+Y,EAAAA,CAAkB,GAC/F,EACAmqQ,EAAqBx8P,UAAU+6I,WAAa,SAAUxnK,GAClD,OAAOA,EAASqP,QAAO,SAAU00G,GAC7B,OAAOA,GAASA,EAAMh+G,OAAS+Y,EAAAA,CACnC,GACJ,EACAmqQ,EAAqBx8P,UAAU28P,gBAAkB,WAC7C,MAAO,eAAiB78P,KAAK28P,GACjC,EACAD,EAAqBx8P,UAAU68P,kBAAoB,WAC/C,MAAO,iBAAmB/8P,KAAK28P,GACnC,EACAD,EAAqB5iP,YAAc,SAInC4iP,EAAqB1wP,UAAY,CAC7BhsB,MAAOisB,EAAAA,IACP74B,GAAI64B,EAAAA,OACJtQ,IAAKsQ,EAAAA,OACLv4B,MAAOu4B,EAAAA,OACP2xC,UAAW3xC,EAAAA,KACX5xB,MAAO4xB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC9C5wB,OAAQ4wB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC/CgnL,SAAUhnL,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SACjDyxP,UAAWzxP,EAAAA,MAKfywP,EAAqBrzP,aAAe,CAChCq0P,WAAW,GAKfhB,EAAqBjpC,YAAc0O,EAAAA,EAC5Bu6B,CACX,CAtJ0C,CAsJxCnpR,EAAAA,WAKSwqR,GAAqBzjP,EAAAA,EAAAA,KAQrBngC,GAASqgC,EAAAA,EAAAA,GAAiBujP,EAAoBrB,GACzDviR,EAAO2/B,YAAc,kGC1MjBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EASWna,EAAmB,SAAUrU,GACpC,IAAIzG,EACAumR,EAAgBnpQ,EAAS,CAAEopQ,OAAQ,aAAe//Q,GAClD+/Q,EAASD,EAAcC,OAAQxqR,EAAWuqR,EAAcvqR,SACxD48C,GAAiBjhB,EAAAA,EAAAA,GAAW,YAAa,uBAAwB,sCAAsC33B,EAAK,CAAC,GAC1G,aAAayM,OAAO+5Q,IAAWA,EAClCxmR,IACJ,OAAQlE,EAAAA,cAAoB,MAAO,CAAEM,UAAWw8C,GAAkB58C,EACtE,EACA8e,EAAiByZ,UAAY,CACzBv4B,SAAUw4B,EAAAA,IACVgyP,OAAQhyP,EAAAA,MAAgB,CAAC,QAAS,SAAU,MAAO,yEC9B5CiyP,iCACX,SAAWA,GACPA,EAAqB,QAAI,UACzBA,EAAwB,WAAI,aAC5BA,EAAuB,UAAI,WAC9B,CAJD,CAIGA,IAAgBA,EAAc,CAAC,QCL9BzmR,+BAIO0mR,EAA8B,+BAI9BC,EAA8B,+BAI9BC,EAA6B,8BAI7BC,EAA2B,4BAI3B5uP,IAAYj4B,EAAK,CAAC,GACtB0mR,GAA+B,WAClC1mR,EAAG2mR,GAA+B,WAClC3mR,EAAG4mR,GAA8B,UACjC5mR,EAAG6mR,GAA4B,QAC/B7mR,GCzBAod,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAUI6xP,EAA0B,SAAUrgR,GACpC,IAAIzK,EAAWyK,EAAMzK,SAAUgpR,EAAqBv+Q,EAAMu+Q,mBAAoB+B,EAAwBtgR,EAAMsgR,sBAAuBC,EAA0BvgR,EAAMugR,wBAAyBC,EAAuBxgR,EAAMwgR,qBAAsBnvB,EAAgBrxP,EAAMqxP,cAAeovB,EAAQzgR,EAAMygR,MAAOC,EAAe1gR,EAAM0gR,aAAcxrR,EAAK8K,EAAM9K,GACnVwsC,GAAei/O,EAAAA,EAAAA,KACfC,EAAuB5gR,EAAM6gR,eAC7BxrR,EAAAA,cAAoB2K,EAAM6gR,eAAgB,CAAE1pR,QAASmpR,EAAuBG,MAAOA,IAClFprR,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEgP,SAAU,OAAQ/O,KAAM,kBAAmBujC,QAASqmP,EAAAA,IAAoBnrR,UAAW,2BAA4BwB,QAASmpR,EAAuB,aAAc5+O,EAAapQ,iBAAiB4uP,EAA6B1uP,EAAS0uP,MAChQa,EAAuB/gR,EAAMghR,eAC7B3rR,EAAAA,cAAoB2K,EAAMghR,eAAgB,CAAE7pR,QAASopR,EAAyBE,MAAOA,IACpFprR,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEgP,SAAU,OAAQ/O,KAAM,kBAAmBujC,QAASwmP,EAAAA,IAAYtrR,UAAW,2BAA4BwB,QAASopR,EAAyB,aAAc7+O,EAAapQ,iBAAiB2uP,EAA6BzuP,EAASyuP,MAC1PiB,EAAsBlhR,EAAMmhR,cAC5B9rR,EAAAA,cAAoB2K,EAAMmhR,cAAe,CAAEhqR,QAASqpR,EAAsBC,MAAOA,IAChFprR,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEgP,SAAU,OAAQ/O,KAAM,iBAAkBujC,QAAS2mP,EAAAA,IAAmBzrR,UAAW,2BAA4BwB,QAASqpR,EAAsB,aAAc9+O,EAAapQ,iBAAiB6uP,EAA4B3uP,EAAS2uP,MAC5PkB,EAAoBrhR,EAAMshR,YAC1BjsR,EAAAA,cAAoB2K,EAAMshR,YAAa,CAAEnqR,QAASonR,EAAoBkC,MAAOA,IAC5EprR,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEgP,SAAU,OAAQ/O,KAAM,IAAKujC,QAAS0S,EAAAA,IAAOx3C,UAAW,2BAA4BwB,QAASonR,EAAoB,aAAc78O,EAAapQ,iBAAiB8uP,EAA0B5uP,EAAS4uP,MACnO,OAAQ/qR,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBAAqBH,MAAO,CAAEq7P,YAAa,QAAUh7P,IAAK6qR,EAAcrvB,cAAeA,GACnIh8P,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,iBAAkBT,GAAIA,GAAMK,GAAsB,IAC3FF,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACnC8qR,IAAUT,EAAYuB,SAAYX,EAClCH,IAAUT,EAAYuB,SAAYR,EAClCN,IAAUT,EAAYuB,SAAYL,EACnCG,GACZ,EAIWG,EAAiBnsR,EAAAA,YAAiB,SAAU2K,EAAOnK,GAAO,OAAQR,EAAAA,cAAoBgrR,EAAyB1pQ,EAAS,CAAC,EAAG3W,EAAO,CAAE0gR,aAAc7qR,IAAU,oFC9CpKkyB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAoBzCze,EAAO,CAAC,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,MAI9C+8Q,EAAgC,SAAUn4P,GAE1C,SAASm4P,IACL,OAAkB,OAAXn4P,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAkBA,OArBAiG,EAAU05P,EAAgBn4P,GAI1Bm4P,EAAez/P,UAAUnrB,OAAS,WAC9B,IAAI2tB,EAAQ1C,KACZ,OAAQzsB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,4BAC5C,IACA+O,EAAK3C,KAAI,SAAUqrB,EAAK1W,GACpB,OAAQrhB,EAAAA,cAAoB0vP,EAAAA,EAAW,CAAE33N,IAAK1W,EAAO+uO,OAAQ,SAAUprP,GAC/D,IAAIrE,EAAQqE,EAAKrE,MACjBA,EAAM40P,cAAc7zO,iBACpByN,EAAMxkB,MAAMykP,SAASzuP,EAAO,CAAE8yB,KAAK,EAAOqK,UAAW/F,GACzD,EAAGi4N,UAAW,SAAUhrP,GACpB,IAAIrE,EAAQqE,EAAKrE,MACjBA,EAAM40P,cAAc7zO,iBACpByN,EAAMxkB,MAAMykP,SAASzuP,EAAO,CAAE8yB,KAAK,EAAMqK,UAAW/F,GACxD,GACA/3B,EAAAA,cAAoB,MAAO,CAAEM,UAAW,4BAA8By3B,EAAK53B,MAAO,CAAEkwG,QAAS,QAASmrJ,YAAa,UAC3H,IACR,EACO4wB,CACX,CAvBoC,CAuBlCpsR,EAAAA,WC/CE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAmBzCu+P,EAAyC,SAAUp4P,GAEnD,SAASo4P,IACL,OAAkB,OAAXp4P,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAOA,OAVAiG,EAAU25P,EAAyBp4P,GAInCo4P,EAAwB1/P,UAAUypP,sBAAwB,SAAU3tO,GAChE,OAAOA,EAAU6jP,qBAAuB7jP,EAAU8jP,UACtD,EACAF,EAAwB1/P,UAAUnrB,OAAS,WACvC,OAAOirB,KAAK9hB,MAAMzK,QACtB,EACOmsR,CACX,CAZ6C,CAY3CrsR,EAAAA,sEC/BE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAqBIqzP,EAAsC,SAAUv4P,GAEhD,SAASu4P,EAAqB7hR,GAC1B,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA6XxC,OAzXA0C,EAAM60B,QAAU,EAChB70B,EAAM8hK,UAAY,KAClB9hK,EAAMs9P,kBAAoB,CAAE71M,EAAG,EAAGkmB,EAAG,GACrC3tE,EAAMi6P,KAAMxoP,EAAAA,EAAAA,KACZzR,EAAMk6P,QAAUl6P,EAAMm6P,kBACtBn6P,EAAM6gL,SAAU,EAChB7gL,EAAMs6P,sBAAuB,EAI7Bt6P,EAAM+I,UAAY,SAAUv3B,GACxB,GAAIA,EAAMkmB,SAAWlmB,EAAM4sQ,cAA3B,CAGA,IAAI7tD,EAAWvwL,EAAMxkB,MAAM+0M,UAzBf,IA0BRgtE,EAAYv9P,EAAMxkB,MAAM+hR,WAzBf,IA0Bb,GAAI/rR,EAAMu/L,SAAW/wK,EAAMxkB,MAAM+D,UAAjC,CACI,OAAQ/N,EAAMm2B,SACV,KAAKtD,EAAAA,EAAKG,GACNhzB,EAAM+gB,iBACFgrQ,GAAcv9P,EAAMrnB,OA7B7B,GA8BSqnB,EAAM6L,SAAS,CAAElzB,OAAQqnB,EAAMrnB,OA9BxC,IAgCK,MACJ,KAAK0rB,EAAAA,EAAKI,KACNjzB,EAAM+gB,iBACNyN,EAAM6L,SAAS,CAAElzB,OAAQqnB,EAAMrnB,OAnCpC,IAoCK,MACJ,KAAK0rB,EAAAA,EAAKrX,KACFujM,GAAavwL,EAAMroB,MAtC5B,GAuCSqoB,EAAM6L,SAAS,CAAEl0B,MAAOqoB,EAAMroB,MAvCvC,IAyCK,MACJ,KAAK0sB,EAAAA,EAAKltB,MACN6oB,EAAM6L,SAAS,CAAEl0B,MAAOqoB,EAAMroB,MA3CnC,IA4CK,MACJ,QAAS,OAEbqoB,EAAMw9P,kBAAkBx9P,EAAMxkB,MAAMykP,SAAUzuP,GAAO,OAAOhB,EAEhE,MACA,GAAIgB,EAAM0+B,OACN,OAAQ1+B,EAAMm2B,SACV,KAAKtD,EAAAA,EAAKG,GACFxE,EAAMw7P,cAAgBA,EAAYiC,WAClCz9P,EAAM09P,cAAclsR,IACpB0yM,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAMmiR,cAAensR,EAAOwuB,EAAO,CAAE3vB,MAAOmrR,EAAYuB,WAEvE/8P,EAAMw7P,cAAgBA,EAAYuB,UACvC/8P,EAAM49P,iBAAiBpsR,IACvB0yM,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAMmiR,cAAensR,EAAOwuB,EAAO,CAAE3vB,MAAOmrR,EAAYqC,cAEhF,MACJ,KAAKx5P,EAAAA,EAAKI,KACFzE,EAAMw7P,cAAgBA,EAAYqC,YAClC79P,EAAM09P,cAAclsR,IACpB0yM,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAMmiR,cAAensR,EAAOwuB,EAAO,CAAE3vB,MAAOmrR,EAAYuB,WAEvE/8P,EAAMw7P,cAAgBA,EAAYuB,UACvC/8P,EAAM89P,eAAetsR,IACrB0yM,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAMmiR,cAAensR,EAAOwuB,EAAO,CAAE3vB,MAAOmrR,EAAYiC,iBAnB5F,CA0BA,IAAKjsR,EAAMu/L,QACP,OAAQv/L,EAAMm2B,SACV,KAAKtD,EAAAA,EAAKiP,IAIN,YAHItT,EAAMxkB,MAAM4L,SACZ4Y,EAAM+9P,kBAAkBvsR,IAGhC,KAAK6yB,EAAAA,EAAKG,GACNxE,EAAM6L,SAAS,CAAE30B,IAAK8oB,EAAM3vB,MAAM6G,IApFvC,IAqFK,MACJ,KAAKmtB,EAAAA,EAAKI,KACNzE,EAAM6L,SAAS,CAAE30B,IAAK8oB,EAAM3vB,MAAM6G,IAvFvC,IAwFK,MACJ,KAAKmtB,EAAAA,EAAKrX,KACNgT,EAAM6L,SAAS,CAAE7e,KAAMgT,EAAM3vB,MAAM2c,KA1FxC,IA2FK,MACJ,KAAKqX,EAAAA,EAAKltB,MACN6oB,EAAM6L,SAAS,CAAE7e,KAAMgT,EAAM3vB,MAAM2c,KA7FxC,IA8FK,MACJ,QAAS,OAGjBgT,EAAMw9P,kBAAkBx9P,EAAMxkB,MAAMwiR,OAAQxsR,GAAO,OAAOhB,EAvB1D,CArDA,CA6EJ,EAIAwvB,EAAM2gO,QAAU,SAAU9qP,GACtB,IAAImB,EAAInB,EAAKrE,MACbwuB,EAAMi+P,uBAAuBC,eAAiBlnR,EAAE4uP,MAAQ5lO,EAAMhT,KAC9DgT,EAAMi+P,uBAAuBE,cAAgBnnR,EAAE8uP,MAAQ9lO,EAAM9oB,GACjE,EAIA8oB,EAAMihO,OAAS,SAAUprP,GACrB,IAAImB,EAAInB,EAAKrE,MACbwF,EAAEovP,cAAc7zO,iBACZyN,EAAMw7P,cAAgBA,EAAYqC,YAAc79P,EAAMxkB,MAAMsmL,YAC5D9hK,EAAM6L,SAAS,CACX30B,IAAKkb,KAAKI,IAAIxb,EAAE8uP,MAAQ9lO,EAAMi+P,uBAAuBE,cAAe,GACpEnxQ,KAAMhW,EAAE4uP,MAAQ5lO,EAAMi+P,uBAAuBC,eAC7Cd,YAAY,IAEZp9P,EAAMxkB,MAAMwiR,QAEZh+P,EAAMw9P,kBAAkBx9P,EAAMxkB,MAAMwiR,OAAQhnR,GAAG,GAAM,GAGjE,EAIAgpB,EAAM6gO,UAAY,SAAUhrP,GACxB,IAAImB,EAAInB,EAAKrE,MACTwuB,EAAMw7P,cAAgBA,EAAYqC,YAAc79P,EAAMxkB,MAAMsmL,WACxD9hK,EAAMxkB,MAAMwiR,QACZh+P,EAAMw9P,kBAAkBx9P,EAAMxkB,MAAMwiR,OAAQhnR,GAAG,GAAM,GAG7DgpB,EAAM6L,SAAS,CACXuxP,YAAY,GAEpB,EAIAp9P,EAAMkH,QAAU,WACRlH,EAAMgyB,cACNjmB,aAAa/L,EAAMgyB,cACnBhyB,EAAMgyB,kBAAexhD,GAGrBwvB,EAAM6L,SAAS,CACXsH,SAAS,EACT/7B,QAAQ2jR,EAAAA,EAAAA,GAAa/6P,EAAM46P,mBAAoB56P,EAAMwhO,cAAexhO,EAAMi6P,MAGtF,EAIAj6P,EAAMoH,OAAS,WACX2E,aAAa/L,EAAMgyB,cACnB,IAAIi6M,EAAgBjsO,EAAMmoO,YACtB8D,IACAjsO,EAAMgyB,aAAei6M,EAAc3+N,YAAW,WACtCtN,EAAM6gL,SACN7gL,EAAM6L,SAAS,CAAEsH,SAAS,IAE9BnT,EAAMgyB,kBAAexhD,CACzB,IAER,EAEAwvB,EAAMo+P,cAAgB,WAClB,QAAwB5tR,IAApBwvB,EAAMxkB,MAAMtE,IACZ,OAAO8oB,EAAMxkB,MAAMtE,IAEvB,QAA+B1G,IAA3BwvB,EAAMxkB,MAAM6iR,WACZ,OAAOr+P,EAAMxkB,MAAM6iR,WAEvB,IAAI1lR,EArLK,IA4LT,QAN2BnI,IAAvBwvB,EAAMxkB,MAAM7C,OACZA,EAASqnB,EAAMxkB,MAAM7C,YAEcnI,IAA9BwvB,EAAMxkB,MAAM8iR,gBACjB3lR,EAASqnB,EAAMxkB,MAAM8iR,eAErBt+P,EAAMxkB,MAAM87B,SACZ,OAAQtX,EAAMxkB,MAAM87B,SAASjU,aAAe,EAAM1qB,EAAS,EAE/D,IAAIszP,EAAgBjsO,EAAMmoO,YAC1B,OAAO8D,EAAiBA,EAAc31P,YAAc,EAAMqC,EAAS,EAAK,CAC5E,EACAqnB,EAAMu+P,eAAiB,WACnB,QAAyB/tR,IAArBwvB,EAAMxkB,MAAMwR,KACZ,OAAOgT,EAAMxkB,MAAMwR,KAEvB,QAAgCxc,IAA5BwvB,EAAMxkB,MAAMgjR,YACZ,OAAOx+P,EAAMxkB,MAAMgjR,YAEvB,IAAI7mR,EA1MI,IAiNR,QAN0BnH,IAAtBwvB,EAAMxkB,MAAM7D,MACZA,EAAQqoB,EAAMxkB,MAAM7D,WAEcnH,IAA7BwvB,EAAMxkB,MAAMijR,eACjB9mR,EAAQqoB,EAAMxkB,MAAMijR,cAEpBz+P,EAAMxkB,MAAM87B,SACZ,OAAQtX,EAAMxkB,MAAM87B,SAASwrH,YAAc,EAAMnrJ,EAAQ,EAE7D,IAAIs0P,EAAgBjsO,EAAMmoO,YAC1B,OAAO8D,EAAiBA,EAAchE,WAAa,EAAMtwP,EAAQ,EAAK,CAC1E,EACAqoB,EAAM0+P,gBAAkB,WACpB,IAAI/mR,EAxNI,IA+NR,YAN0BnH,IAAtBwvB,EAAMxkB,MAAM7D,MACZA,EAAQqoB,EAAMxkB,MAAM7D,WAEcnH,IAA7BwvB,EAAMxkB,MAAMijR,eACjB9mR,EAAQqoB,EAAMxkB,MAAMijR,cAEjB9mR,CACX,EACAqoB,EAAM2+P,iBAAmB,WACrB,IAAIhmR,EAjOK,IAwOT,YAN2BnI,IAAvBwvB,EAAMxkB,MAAM7C,OACZA,EAASqnB,EAAMxkB,MAAM7C,YAEcnI,IAA9BwvB,EAAMxkB,MAAM8iR,gBACjB3lR,EAASqnB,EAAMxkB,MAAM8iR,eAElB3lR,CACX,EAEAqnB,EAAM89P,eAAiB,SAAUtsR,GAC7BA,EAAM+gB,iBACNyN,EAAMi+P,uBAAuBW,iBAAmB5+P,EAAMhT,KACtDgT,EAAMi+P,uBAAuBY,gBAAkB7+P,EAAM9oB,IACrD8oB,EAAMi+P,uBAAuBa,kBAAoB9+P,EAAMroB,MACvDqoB,EAAMi+P,uBAAuBc,mBAAqB/+P,EAAMrnB,OACxDqnB,EAAM6L,SAAS,CACXowP,MAAOT,EAAYiC,UACnB9kR,OAAQ,KAEZurM,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAMmiR,cAAensR,EAAOwuB,EAAO,CAAE3vB,MAAOmrR,EAAYiC,WAChF,EACAz9P,EAAM49P,iBAAmB,SAAUpsR,GAC/BA,EAAM+gB,iBACNyN,EAAMi+P,uBAAuBW,iBAAmB5+P,EAAMhT,KACtDgT,EAAMi+P,uBAAuBY,gBAAkB7+P,EAAM9oB,IACrD8oB,EAAMi+P,uBAAuBa,kBAAoB9+P,EAAMroB,MACvDqoB,EAAMi+P,uBAAuBc,mBAAqB/+P,EAAMrnB,OACxD,IAAIszP,EAAgBjsO,EAAMmoO,YACtBF,EAAagE,EAAgBA,EAAchE,WAAa,EACxD3xP,EAAc21P,EAAgBA,EAAc31P,YAAc,EAC9D0pB,EAAM6L,SAAS,CACX7e,KAAM,EACN9V,IAAK,EACLS,MAAOqoB,EAAMxkB,MAAM87B,SAAWtX,EAAMxkB,MAAM87B,SAASwrH,YAAcmlG,EACjEtvP,OAAQqnB,EAAMxkB,MAAM87B,SAAWtX,EAAMxkB,MAAM87B,SAASjU,aAAe/sB,EACnE2lR,MAAOT,EAAYqC,cAEvB35E,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAMmiR,cAAensR,EAAOwuB,EAAO,CAAE3vB,MAAOmrR,EAAYqC,YAChF,EACA79P,EAAM09P,cAAgB,SAAUlsR,GAC5BA,EAAM+gB,iBACFyN,EAAMw7P,cAAgBA,EAAYqC,WAClC79P,EAAM6L,SAAS,CACXowP,MAAOT,EAAYuB,QACnB/vQ,KAAMgT,EAAMi+P,uBAAuBW,iBACnC1nR,IAAK8oB,EAAMi+P,uBAAuBY,gBAClClnR,MAAOqoB,EAAMi+P,uBAAuBa,kBACpCnmR,OAAQqnB,EAAMi+P,uBAAuBc,qBAGpC/+P,EAAMw7P,cAAgBA,EAAYiC,WACvCz9P,EAAM6L,SAAS,CACXowP,MAAOT,EAAYuB,QACnBpkR,OAAQqnB,EAAMi+P,uBAAuBc,sBAG7C76E,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAMmiR,cAAensR,EAAOwuB,EAAO,CAAE3vB,MAAOmrR,EAAYuB,SAChF,EACA/8P,EAAM+9P,kBAAoB,SAAUvsR,GAChCA,EAAM+gB,kBACN2xL,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAM4L,QAAS5V,EAAOwuB,EAAO,CAAE3vB,WAAOG,GAC9D,EACAwvB,EAAMw1K,kBAAoB,SAAUx+L,GAC5BgpB,EAAMw7P,cAAgBA,EAAYqC,YAAc79P,EAAMw7P,cAAgBA,EAAYiC,UAClFz9P,EAAM09P,cAAc1mR,GAGpBgpB,EAAM49P,iBAAiB5mR,EAE/B,EAEAgpB,EAAM5pB,aAAe,SAAU5E,EAAOgK,GAClC,IAAIisE,EAAIznD,EAAMxkB,MAAM87B,SAAW9lC,EAAMo0P,MAAQ5lO,EAAMs9P,kBAAkB71M,EAAIj2E,EAAMo0P,MAC3Ej4J,EAAI3tE,EAAMxkB,MAAM87B,SAAW9lC,EAAMs0P,MAAQ9lO,EAAMs9P,kBAAkB3vL,EAAIn8F,EAAMs0P,MAC3Ek5B,EAAeh/P,EAAMroB,MACrBsnR,EAAgBj/P,EAAMrnB,OACtB43M,EAAWvwL,EAAMxkB,MAAM+0M,UA7Sf,IA8SRgtE,EAAYv9P,EAAMxkB,MAAM+hR,WA7Sf,IA8ST2B,EAAmBl/P,EAAM9oB,IAAMy2F,EAC/BwxL,EAAkBn/P,EAAMhT,KAAOy6D,EAC/BqnI,EAAWrnI,EAAIznD,EAAMhT,KACrB+hM,EAAYphH,EAAI3tE,EAAM9oB,IACtB6I,EAAWE,OAAO2mB,OAAO,CAAC,EAAG5G,EAAM3vB,MAAO,CAAE+sR,YAAa5hR,EAAM8oB,MAC/D9oB,EAAMmzB,UAAU4J,QAAQ,MAAQ,GAAKglP,GAAa0B,EAAgBC,GAAoB,IAClFl/P,EAAM9oB,IAAM,IACZ6I,EAASpH,OAASsmR,EAAgBC,GAEtCn/Q,EAAS7I,IAAMy2F,GAEfnyF,EAAMmzB,UAAU4J,QAAQ,MAAQ,GAAMglP,EAAYxuE,EAAY,IAC9DhvM,EAASpH,OAASo2M,GAElBvzM,EAAMmzB,UAAU4J,QAAQ,MAAQ,GAAKg4K,GAAYyuE,EAAeG,GAAmB,IAC/En/P,EAAMhT,KAAO,IACbjN,EAASpI,MAAQqnR,EAAeG,GAEpCp/Q,EAASiN,KAAOy6D,GAEhBjsE,EAAMmzB,UAAU4J,QAAQ,MAAQ,GAAMg4K,EAAWzB,EAAW,IAC5D/uM,EAASpI,MAAQm3M,GAErB9uL,EAAM6L,SAAS9rB,GACfigB,EAAMw9P,kBAAkBx9P,EAAMxkB,MAAMykP,SAAUzuP,GAAO,EAAMgK,EAAM8oB,IACrE,EAEAtE,EAAMw9P,kBAAoB,SAAUrqN,EAAU3hE,EAAO+zP,EAAMjhO,GAClD6uC,GAGLA,EAASpvC,UAAKvzB,EAAW,CACrBi/B,YAAaj+B,EAAMi+B,YAAcj+B,EAAMi+B,YAAcj+B,EAAM40P,cAC3Db,KAAMA,EACNjhO,IAAKA,EACL5M,OAAQsI,EACRhT,KAAMgT,EAAM3vB,MAAM2c,KAClB9V,IAAK8oB,EAAM3vB,MAAM6G,IACjBS,MAAOqoB,EAAM3vB,MAAMsH,MACnBynR,MAAOp/P,EAAM3vB,MAAMsI,OACnBA,OAAQqnB,EAAM3vB,MAAMsI,QAE5B,EACAqnB,EAAMq/P,0BAA4B,WAC9B,GAAIr/P,EAAMw7P,cAAgBA,EAAYqC,WAAY,CAC9C,IAAI5xB,EAAgBjsO,EAAMmoO,YACtBm3B,EAAerzB,EAAgBA,EAAchE,WAAa,EAC1Ds3B,EAAgBtzB,EAAgBA,EAAc31P,YAAc,EAChE0pB,EAAM6L,SAAS,CACXl0B,MAAOqoB,EAAMxkB,MAAM87B,SAAWtX,EAAMxkB,MAAM87B,SAASwrH,YAAcw8H,EACjE3mR,OAAQqnB,EAAMxkB,MAAM87B,SAAWtX,EAAMxkB,MAAM87B,SAASjU,aAAek8P,GAE3E,CACJ,EACAv/P,EAAM46P,iBAAmB,WACrB,OAAK56P,EAAM3vB,YAA2BG,IAAlBwvB,EAAM60B,QAGnB70B,EAAM3vB,MAAM+G,QAAU4oB,EAAM60B,QAAU70B,EAAM60B,QAAUgmO,EAAAA,GAAsB,GAAK76P,EAAM3vB,MAAM+G,OAAS4oB,EAAM60B,QAAUgmO,EAAAA,GAFlH76P,EAAM60B,QAAU70B,EAAM60B,QAAUimO,EAAAA,EAG/C,EACA96P,EAAMwhO,YAAc,WAChB,OAAOxhO,EAAMxkB,MAAM87B,SAAWtX,EAAMxkB,MAAM87B,SAAS3D,cAAgB7nB,QACvE,EACAkU,EAAMmoO,UAAY,WACd,IAAIjF,EAAkBljO,EAAMwhO,cAC5B,OAAO0B,GAAmBA,EAAgBnjE,WAC9C,GACAvsJ,EAAAA,EAAAA,GAAgBC,EAAAA,GAChBzT,EAAMs6P,sBAAuB/hB,EAAAA,EAAAA,GAAuB9kO,EAAAA,GACpDzT,EAAM3vB,MAAQ,CACV4rR,MAAOj8P,EAAMxkB,MAAMygR,OAAST,EAAYuB,QACxCK,YAAY,EACZlmR,IAAK8oB,EAAMo+P,gBACXpxQ,KAAMgT,EAAMu+P,iBACZ5mR,MAAOqoB,EAAM0+P,kBACb/lR,OAAQqnB,EAAM2+P,mBACdxrP,SAAS,EACT/7B,QAAQ2jR,EAAAA,EAAAA,GAAa/6P,EAAM46P,mBAAoB56P,EAAMwhO,cAAexhO,EAAMi6P,MAE9Ej6P,EAAMi+P,uBAAyB,CAC3BW,iBAAkB5+P,EAAMu+P,iBACxBM,gBAAiB7+P,EAAMo+P,gBACvBU,kBAAmB9+P,EAAM0+P,kBACzBK,mBAAoB/+P,EAAM2+P,oBAEvB3+P,CACX,CAoMA,OApkBAuD,EAAU85P,EAAsBv4P,GAoYhCu4P,EAAqB7/P,UAAU4K,kBAAoB,WAC/C,IAAI6jO,EAAgB3uO,KAAK6qO,YACrB8D,GACAA,EAAcz1P,iBAAiB,SAAU8mB,KAAK+hQ,2BAElD,IAAIn8B,EAAkB5lO,KAAKkkO,cAC3B,GAAIlkO,KAAK9hB,MAAM87B,UAAY4rN,EAAiB,CACxC,IAAIs8B,EAAuBliQ,KAAK9hB,MAAM87B,SAAS2nE,wBAC3CwgL,EAAWv8B,EAAgBv2O,KAAKsyF,wBACpC3hF,KAAKggQ,kBAAkB71M,EAAI+3M,EAAqBxyQ,KAAOyyQ,EAASzyQ,KAChEsQ,KAAKggQ,kBAAkB3vL,EAAI6xL,EAAqBtoR,IAAMuoR,EAASvoR,GACnE,CACAomB,KAAKujL,SAAU,CACnB,EAIAw8E,EAAqB7/P,UAAU6O,qBAAuB,WAClD,IAAI4/N,EAAgB3uO,KAAK6qO,YACrB8D,GACAA,EAAcv8M,oBAAoB,SAAUpyB,KAAK+hQ,2BAErD/hQ,KAAKujL,SAAU,CACnB,EAIAw8E,EAAqB7/P,UAAU8K,mBAAqB,WAChD,IAAI46N,EAAkB5lO,KAAKkkO,cAC3B,GAAIlkO,KAAK9hB,MAAM87B,UAAY4rN,EAAiB,CACxC,IAAIs8B,EAAuBliQ,KAAK9hB,MAAM87B,SAAS2nE,wBAC3CwgL,EAAWv8B,EAAgBv2O,KAAKsyF,wBACpC3hF,KAAKggQ,kBAAkB71M,EAAI+3M,EAAqBxyQ,KAAOyyQ,EAASzyQ,KAChEsQ,KAAKggQ,kBAAkB3vL,EAAI6xL,EAAqBtoR,IAAMuoR,EAASvoR,GACnE,CACAomB,KAAKujL,SAAU,CACnB,EAIAw8E,EAAqB7/P,UAAUnrB,OAAS,WACpC,IAAI0C,EAAII,EACJ6qB,EAAQ1C,KACR29P,EAAgBpqR,EAAAA,SAAeinD,QAAQx6B,KAAK9hB,MAAMzK,UAClDmmD,EAAU55B,KAAKi7I,WAAW0iH,GAC1B11M,EAAUjoD,KAAK49P,aAAaD,GAC5B98B,EAAgB7gO,KAAKs9P,mBACrB8E,GAAmBhzP,EAAAA,EAAAA,GAAW,WAAYpP,KAAK9hB,MAAMrK,YAAY4D,EAAK,CAAC,GACpE,YAAYyM,OAAO8b,KAAK9hB,MAAMnE,aAAeimB,KAAK9hB,MAAMnE,WAC3DtC,EAAG,sBAA6C,cAArBuoB,KAAKjtB,MAAM4rR,MACtClnR,EAAG,oBAAsBuoB,KAAKjtB,MAAM8iC,QACpCp+B,IACA4qR,EAAiB9uR,EAAAA,cAAoB4uP,EAAAA,EAAc3O,SAAU,CAAE/tO,MAAOo7O,GACtEttP,EAAAA,cAAoBA,EAAAA,SAAgB,KAChCysB,KAAK9hB,MAAMwiP,OAAUntP,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YAAaH,MAAOmhB,EAAS,CAAE/a,OAAQ+mP,GAAiB7gO,KAAK9hB,MAAMuiP,gBAChIltP,EAAAA,cAAoB,MAAOshB,EAAS,CAAC,IAAIhd,EAAK,CAAC,GAAMimR,EAAAA,IAAmB99P,KAAK28P,IAAK9kR,GAAK,CAAE0zB,SAAU,EAAGxzB,KAAM,SAAU,kBAAmBioB,KAAK48P,QAAShzP,QAAS5J,KAAK4J,QAASE,OAAQ9J,KAAK8J,OAAQ2B,UAAWzL,KAAKyL,UAAW13B,IAAK,SAAUy3B,GACrO9I,EAAM2/P,cAAgB72P,EACtB9I,EAAM2F,QAAUmD,CACpB,EAAG33B,UAAWuuR,EAAkB1uR,MAAOmhB,EAAS,CAAEjb,IAAKomB,KAAKpmB,IAAK8V,KAAMsQ,KAAKtQ,KAAMrV,MAAO2lB,KAAK3lB,MAAOgB,OAAQ2kB,KAAK3kB,QAAU,GAAIvB,OAAQ+mP,GAAiB7gO,KAAK9hB,MAAMxK,SACpKH,EAAAA,cAAoBqsR,EAAyB,CAAEC,mBAAoB7/P,KAAK9hB,MAAM2hR,qBAAsB,EAAOC,WAAY9/P,KAAKjtB,MAAM+sR,YAC9HvsR,EAAAA,cAAoB0vP,EAAAA,EAAW,CAAEI,QAASrjO,KAAKqjO,QAASM,OAAQ3jO,KAAK2jO,OAAQJ,UAAWvjO,KAAKujO,UAAWxvP,IAAK,SAAUgC,GAAa,OAAO2sB,EAAM8hK,UAAYzuL,CAAW,GACpKxC,EAAAA,cAAoBmsR,EAAgB,CAAEf,MAAO3+P,KAAKk+P,YAAa3uB,cAAevvO,KAAK9hB,MAAMokR,uBAAyBtiQ,KAAKk4K,uBAAoBhlM,EAAWsrR,sBAAuBx+P,KAAKwgQ,eAAgB/B,wBAAyBz+P,KAAKsgQ,iBAAkB5B,qBAAsB1+P,KAAKogQ,cAAe3D,mBAAoBz8P,KAAKygQ,kBAAmBjB,YAAax/P,KAAK9hB,MAAMshR,YAAaT,eAAgB/+P,KAAK9hB,MAAM6gR,eAAgBG,eAAgBl/P,KAAK9hB,MAAMghR,eAAgBG,cAAer/P,KAAK9hB,MAAMmhR,cAAejsR,GAAI4sB,KAAK48P,SAAW58P,KAAK9hB,MAAM8B,QAC/gBggB,KAAKk+P,cAAgBA,EAAYiC,UAC1B5sR,EAAAA,cAAoBA,EAAAA,SAAgB,KACnCA,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBAAsB+lD,GAC9DquB,GACF,KACNjoD,KAAKk+P,cAAgBA,EAAYuB,SAC7Bz/P,KAAK9hB,MAAM+D,UACT1O,EAAAA,cAAoBosR,EAAgB,CAAEh9B,SAAU3iO,KAAKlnB,eACrD,MACVknB,KAAKg9P,sBAAwBzpR,EAAAA,cAAoB4nQ,EAAAA,EAAkB,SAC/E,OAAI/1O,EAAAA,EAC+B,OAAxBpF,KAAK9hB,MAAM87B,SACdk4M,EAAAA,aAAsBmwC,EAAeriQ,KAAK9hB,MAAM87B,UAAYxrB,SAASa,MACrEgzQ,EAED,IACX,EACA1/Q,OAAO6nB,eAAeu1P,EAAqB7/P,UAAW,MAAO,CAEzDuK,IAAK,WACD,OAAIzK,KAAKk+P,cAAgBA,EAAYqC,WAC1BzrQ,KAAKI,IAAI8K,KAAK9hB,MAAMtE,KAAOomB,KAAKjtB,MAAM6G,IAAK,GAE/C,CACX,EACA8wB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeu1P,EAAqB7/P,UAAW,OAAQ,CAC1DuK,IAAK,WACD,OAAIzK,KAAKk+P,cAAgBA,EAAYqC,WAC1BzrQ,KAAKI,IAAI8K,KAAK9hB,MAAMwR,MAAQsQ,KAAKjtB,MAAM2c,KAAM,GAEjD,CACX,EACAgb,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeu1P,EAAqB7/P,UAAW,QAAS,CAC3DuK,IAAK,WACD,IAAIpwB,EAAQ2lB,KAAK9hB,MAAM7D,OAAS2lB,KAAKjtB,MAAMsH,MAC3C,GAAI2lB,KAAKk+P,cAAgBA,EAAYqC,WAAY,CAC7C,GAAIvgQ,KAAK9hB,MAAM87B,SAEX,OADA3/B,EAAQ2lB,KAAK9hB,MAAM87B,SAASwrH,YAGhC,IAAImpG,EAAgB3uO,KAAK6qO,YACzBxwP,EAAQs0P,EAAgBA,EAAchE,WAAa,CACvD,CACA,OAAOtwP,CACX,EACAqwB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeu1P,EAAqB7/P,UAAW,SAAU,CAC5DuK,IAAK,WACD,IAAIpvB,EAAS2kB,KAAK9hB,MAAM7C,QAAU2kB,KAAKjtB,MAAMsI,OAC7C,GAAI2kB,KAAKk+P,cAAgBA,EAAYqC,WAAY,CAC7C,GAAIvgQ,KAAK9hB,MAAM87B,SAEX,OADA3+B,EAAS2kB,KAAK9hB,MAAM87B,SAASjU,aAGjC,IAAI4oO,EAAgB3uO,KAAK6qO,YACzBxvP,EAASszP,EAAgBA,EAAc31P,YAAc,CACzD,MACSgnB,KAAKk+P,cAAgBA,EAAYiC,YACtC9kR,EAAS,GAEb,OAAOA,CACX,EACAqvB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeu1P,EAAqB7/P,UAAW,cAAe,CACjEuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMygR,OAAS3+P,KAAKjtB,MAAM4rR,KAC1C,EACAj0P,YAAY,EACZC,cAAc,IAElBo1P,EAAqB7/P,UAAU09P,aAAe,SAAUnqR,GACpD,OAAOA,EAASqP,QAAO,SAAU00G,GAAS,OAAOA,GAASA,EAAMh+G,OAAS+oR,EAAAA,CAAkB,GAC/F,EACAxC,EAAqB7/P,UAAU+6I,WAAa,SAAUxnK,GAClD,OAAOA,EAASqP,QAAO,SAAU00G,GAC7B,OAAOA,GAASA,EAAMh+G,OAAS+oR,EAAAA,CACnC,GACJ,EACAxC,EAAqB7/P,UAAU28P,gBAAkB,WAC7C,MAAO,gBAAkB78P,KAAK28P,GAClC,EACAoD,EAAqBjmP,YAAc,SAInCimP,EAAqB/zP,UAAY,CAC7B3xB,MAAO4xB,EAAAA,OACP5wB,OAAQ4wB,EAAAA,OACRvc,KAAMuc,EAAAA,OACNryB,IAAKqyB,EAAAA,OACLk1P,aAAcl1P,EAAAA,OACd+0P,cAAe/0P,EAAAA,OACfi1P,YAAaj1P,EAAAA,OACb80P,WAAY90P,EAAAA,OACZgnL,SAAUhnL,EAAAA,OACVg0P,UAAWh0P,EAAAA,OACXhqB,UAAWgqB,EAAAA,KACXu4J,UAAWv4J,EAAAA,KACXjsB,MAAOisB,EAAAA,IACP4zP,mBAAoB5zP,EAAAA,KACpB0yP,MAAO1yP,EAAAA,MAAgB,CAAC,UAAW,YAAa,eAChDp4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPw0N,aAAcx0N,EAAAA,QAKlB8zP,EAAqB12P,aAAe,CAChC4pL,SA9jBgB,IA+jBhBgtE,UA9jBiB,IA+jBjBh+Q,WAAW,EACXuiL,WAAW,EACXk8D,OAAO,EACP4hC,wBAAwB,GAK5BvC,EAAqBtsC,YAAc0O,EAAAA,EAC5B49B,CACX,CAtkB0C,CAskBxCxsR,EAAAA,WAKSivR,GAAqBloP,EAAAA,EAAAA,KAQrBqvN,GAASnvN,EAAAA,EAAAA,GAAiBgoP,EAAoBzC,GACzDp2B,EAAO7vN,YAAc,mGCloBjBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EASW61P,EAAmB,SAAUrkR,GACpC,IAAI8/Q,EAAgBnpQ,EAAS,CAAEopQ,OAAQ,OAAS//Q,GAC5C+/Q,EAASD,EAAcC,OAAQxqR,EAAWuqR,EAAcvqR,SACxD48C,GAAiBjhB,EAAAA,EAAAA,GAAW,YAAa,mBAAoB,uBAAwB,WAAY,CACjG,0BAAsC,UAAX6uP,EAC3B,2BAAuC,WAAXA,EAC5B,wBAAoC,QAAXA,EACzB,4BAAwC,cAAXA,IAEjC,OAAQ1qR,EAAAA,cAAoB,MAAO,CAAEM,UAAWw8C,GAAkB58C,EACtE,EACA8uR,EAAiBv2P,UAAY,CACzBv4B,SAAUw4B,EAAAA,IACVgyP,OAAQhyP,EAAAA,MAAgB,CAAC,QAAS,SAAU,MAAO,yFC/BhD,IAAI6xP,EAAkB,gBAElBN,EAAyB,MAEzBD,EAAsB,EAEtBkF,EAAmB,0TCJvB,IAAItsP,EAAkB,CACzBrgC,KAAM,gCACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,qNCPXwlN,EAAe,SAAU58B,EAAe+E,EAAiB88B,GAChE,IAAIC,EAAY9hC,EAChB,GAAI+E,GAAmBA,EAAgBnjE,YAAa,CAChD,IAAImgG,EAAah9B,EAAgBjnJ,iBAAiB8jL,EAAAA,IAC9CI,GAAkB,EAYtB,OAXAD,EAAWj0Q,SAAQ,SAAUm0Q,GACzB,IAAIC,EAAgBn9B,EAAgBnjE,YAAY9uI,iBAAiBmvO,EAAU,MAE3E,GADaA,EAASt+K,aAAas5K,EAAAA,MACpB4E,GAA4C,OAAzBK,EAAcjpR,OAAiB,CAC7D,IAAIkpR,EAAcr1L,SAASo1L,EAAcjpR,OAAQ,IAC7CkpR,GAAeL,IACfA,EAAYK,EACZH,GAAkB,EAE1B,CACJ,IACOA,EAAmBF,EAAYpF,EAAAA,GAAuBoF,CACjE,CACA,OAAOA,CACX,yPCrBI18P,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAeI2L,EAAUD,EAAAA,EAAeC,QAASC,EAAaF,EAAAA,EAAeE,WAE9D2qP,EAA4C,SAAUz7P,GAEtD,SAASy7P,EAA2B/kR,GAChC,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAyQxC,OArQA0C,EAAM3vB,MAAQ,CAAC,EACf2vB,EAAM0rG,KAAO,IAAI80J,EAAAA,EAAaxgQ,GAC9BA,EAAM/iB,SAAW,KACjB+iB,EAAMwvP,UAAW/9O,EAAAA,EAAAA,KACjBzR,EAAMygQ,WAAa,GACnBzgQ,EAAM0rB,OAAS,KACf1rB,EAAM0gQ,cAAe,EACrB1gQ,EAAMoC,WAAa,EAInBpC,EAAMuF,MAAQ,WACNvF,EAAM0rB,QACN1rB,EAAM0rB,OAAOnmB,OAErB,EAIAvF,EAAM2gQ,iBAAmB,SAAUzuQ,EAAO7hB,GACtC,IAAI0E,EAAKirB,EAAMxkB,MAAM3F,KAAMA,OAAc,IAAPd,EAAgB,GAAKA,EACnDw7Q,GAAUqQ,EAAAA,EAAAA,IAAa/qR,EAAKqc,GAAQ8N,EAAMxkB,MAAM2H,WACpD6c,EAAM6gQ,gBAAgBtQ,EAASlgR,EACnC,EAIA2vB,EAAM8gQ,UAAY,SAAU5uQ,EAAO7hB,GAC/B,IAAI0E,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgO,EAAYpO,EAAGoO,UAC/E49Q,EAAclrR,EAAKqc,IAClB8uQ,EAAAA,EAAAA,IAAQhhQ,EAAM3vB,MAAM0wR,YAAaA,EAAa59Q,KAC/C9S,EAAMwF,KAAKkrR,YAAcA,EAEjC,EAIA/gQ,EAAMihQ,YAAc,SAAU5wR,GAC1B2vB,EAAM0rG,KAAKu1J,YAAY5wR,EAC3B,EACA2vB,EAAM0vP,YAAc,WACZ1vP,EAAM0rB,QAAU1rB,EAAM0rB,OAAOikO,mBAC7B3vP,EAAM0rB,OAAOikO,kBAAkB3vP,EAAMmV,SAASjB,MACxC,GACAlU,EAAMxkB,MAAMw4B,mBAtDT,8BAwDjB,EACAhU,EAAM4hP,SAAW,SAAUpwQ,GACvBwuB,EAAM0gQ,cAAe,EACrB,IAAIh4P,EAAO1I,EAAM0rG,KAAKhjG,KAClBw4P,EAAalhQ,EAAMxkB,MAAM0lR,WACzBnsR,EAAKirB,EAAMxkB,MAAM3F,KAAMA,OAAc,IAAPd,EAAgB,GAAKA,EACvD,GAAKmsR,GAAerrR,EAAKsJ,OAAzB,CAGA,IAAIijB,EAAapC,EAAMoC,aAAesG,EAAOA,EAAK33B,SAAS,GAAGsyB,aAAe,GAEzEnmB,EADS1L,EAAMkmB,OACIxa,UACnBgkR,IACArrR,EAAOmqB,EAAM0rG,KAAKy1J,yBAAyBtrR,EAAMqrR,IAIrD,IADA,IAAIriN,EAAQhpE,EAAK,GAAGqrR,GACX1jR,EAAI,EAAGA,EAAI3H,EAAKsJ,UACjBijB,EAAa5kB,EAAIN,GADQM,IAIzB3H,EAAK2H,IAAM3H,EAAK2H,GAAG0jR,KACnBriN,EAAQhpE,EAAK2H,GAAG0jR,IAGpBriN,IAAU7+C,EAAM3vB,MAAMwuE,OACtB7+C,EAAM6L,SAAS,CACXgzC,MAAOA,GAnBf,CAsBJ,EACA7+C,EAAM++N,gBAAkB,SAAU7sO,EAAO1gB,GACrCwuB,EAAM0rG,KAAKqzH,gBAAgB7sO,EAAO1gB,GAClCwuB,EAAMohQ,0BAAuB5wR,CACjC,EACAwvB,EAAMqhQ,gBAAkB,SAAU7vR,GAC9B,IACInB,EADO2vB,EAAM0rG,KACA41J,YACbx1O,EAAQt6C,EAAM4sQ,cACdr7P,EAAQ+oC,EAAM/oC,MACdw+Q,EAAiBz1O,EAAMumO,eAAiBtvQ,EAAM5D,OAClD9O,EAAMq/B,eAAiBl+B,EACvB,IAAIgwR,EAAiBxhQ,EAAMygQ,WACvB3iF,EAAY99K,EAAMjd,MAClB0+Q,EAAgB3jF,GAChBA,EAAUz5L,UAAU,EAAGy5L,EAAU3+L,OAASqiR,EAAeriR,QACzDuiR,EAAoBD,GAAiBA,IAAkB1+Q,EACvD4+Q,EAAWF,GAAiBA,EAActiR,OAAS4D,EAAM5D,OACzDyiR,EAAU5hQ,EAAMxkB,MAAMomR,QACtBz9Q,OAAgC3T,IAAvBwvB,EAAMxkB,MAAM2I,OACrB6b,EAAMxkB,MAAM2I,OAAS6b,EAAM3vB,MAAM8T,OACrC,QAAgB3T,IAAZoxR,IAAqC,IAAZA,EAAmB,CACxCF,GAAqBC,IAAaJ,EAClCvhQ,EAAMygQ,WAAa,GAGnBzgQ,EAAM6hQ,aAAa9+Q,GAEvB,IAAI6oK,EAAW7oK,EAAQid,EAAMygQ,WACzBqB,EAAa,CAAEC,UAAWh/Q,EAAOA,MAAOid,EAAMygQ,YAClDzgQ,EAAM6gQ,gBAAgBj1G,EAAUv7K,EAAO,CAAEyxR,WAAYA,GACzD,MAEI9hQ,EAAMygQ,WAAa,GACnBzgQ,EAAM6gQ,gBAAgB99Q,EAAO1S,KAE3B8T,GAAUpB,GAAWoB,IAAWpB,IAClCid,EAAMihQ,YAAY5wR,GAEtBA,EAAMwF,KAAKkrR,iBAAcvwR,EACzBwvB,EAAMgiQ,WAAW3xR,GACjB2vB,EAAM6L,SAAS,CAAEgzC,WAAOruE,GAC5B,EACAwvB,EAAMiiQ,iBAAmB,SAAUzwR,GAC/B,IACInB,EADO2vB,EAAM0rG,KACA41J,YACbn9Q,OAAgC3T,IAAvBwvB,EAAMxkB,MAAM2I,OAAuB6b,EAAMxkB,MAAM2I,OAAS6b,EAAM3vB,MAAM8T,OACjF9T,EAAMq/B,eAAiBl+B,EAEvBwuB,EAAMygQ,WAAa,GACnBzgQ,EAAM6gQ,gBAFS,GAEiBxwR,QACAG,IAA5BwvB,EAAM3vB,MAAM0wR,cACZ1wR,EAAMwF,KAAKkrR,iBAAcvwR,GAEzB2T,GACA6b,EAAMihQ,YAAY5wR,GAEtB2vB,EAAMgiQ,WAAW3xR,EACrB,EACA2vB,EAAMkiQ,eAAiB,SAAU1wR,GAC7B,IAAIuD,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgtR,EAAoBptR,EAAGotR,kBAAmBjB,EAAansR,EAAGmsR,WAAY/9Q,EAAYpO,EAAGoO,UACrJ6c,EAAM0gQ,eACN1gQ,EAAM0gQ,cAAe,GAEzB,IAAIhmC,EAAe16N,EAAM06N,eACrBqmC,EAAclrR,EAAK6kP,GACnB/yN,EAAUn2B,EAAMm2B,QAChBy6P,EAAyB5wR,EAAM0+B,OAC/B/rB,OAAgC3T,IAAvBwvB,EAAMxkB,MAAM2I,OAAuB6b,EAAMxkB,MAAM2I,OAAS6b,EAAM3vB,MAAM8T,OAC7E9T,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EACvB,IAAI+gB,EAAiB,WACbpO,GACA3S,EAAM+gB,gBAEd,EACA,GAAI6vQ,GAA0Bz6P,IAAYtD,EAAAA,EAAKI,KAC3CzE,EAAM6L,SAAS,CACX1nB,QAAQ,SAGX,GAAIi+Q,GAA0Bz6P,IAAYtD,EAAAA,EAAKG,GAChDxE,EAAM6L,SAAS,CACX1nB,QAAQ,SAGX,GAAIA,GAAUwjB,IAAYtD,EAAAA,EAAKkqO,OAChCvuO,EAAM0rG,KAAK22J,uBAAuB,QAEjC,GAAIl+Q,GAAUwjB,IAAYtD,EAAAA,EAAKmqO,SAChCxuO,EAAM0rG,KAAK22J,sBAAsB,QAEhC,IAAIl+Q,GAAWwjB,IAAYtD,EAAAA,EAAK8L,OAASxI,IAAYtD,EAAAA,EAAKiP,IAY1D,GAAKnvB,GAAUwjB,IAAYtD,EAAAA,EAAKiP,KAShC,GAAI3L,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKI,KAAM,CACnD,GAAmB,KAAfy8P,GAAqB/9Q,EACrB,IAAK6c,EAAMxkB,MAAM2mR,mBAAqBh+Q,EAClC6b,EAAMsiQ,WAAWjyR,EAAOs3B,OAEvB,CACD,IAAIw0I,EAAW,EACf,GAAIx0I,IAAYtD,EAAAA,EAAKI,MAAQkD,IAAYtD,EAAAA,EAAKltB,MAAO,CACjD,IAAIorR,EAAiB1sR,EAAKqW,MAAMwuO,EAAe,GAAGlvO,MAAK,SAAUhO,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,IAC1Gg5J,EAAWomH,GAAkB1sR,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAeo/Q,EAAep/Q,EAAY,GACpH,MACK,GAAIwkB,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKrX,KAAM,CACnD,IAAIw1Q,OAAe,EACnB,IAAsB,IAAlB9nC,EACA8nC,EAAe3sR,EACfsmK,EAAWtmK,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,QAE5E,CAGD,IADA,IAAIs/Q,GADJD,EAAe3sR,EAAKqW,MAAM,EAAGwuO,IACKp+L,MAC3BmmO,GAAkBA,EAAejrR,UACpCirR,EAAiBD,EAAalmO,MAElC6/G,EAAWsmH,GAAkB5sR,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAes/Q,EAAet/Q,EAAY,GACpH,CACJ,CACA,QAAiB3S,IAAb2rK,EAAwB,CACxB,IAAIumH,EAAYvmH,EAAWu+E,EAC3B16N,EAAMsiQ,WAAWjyR,EAAOs3B,EAAS+6P,EACrC,WACsBlyR,IAAb2rK,GAA0BtmK,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,EAAY,MAAOtN,EAAKsJ,OAAS,GACzG6gB,EAAMsiQ,WAAWjyR,EAAOs3B,EAEhC,MAEC,IAAK3H,EAAMxkB,MAAM2mR,mBAAqBh+Q,EACvC6b,EAAMsiQ,WAAWjyR,EAAOs3B,OAEvB,CACGw0I,EAAW,KACf,GAAIx0I,IAAYtD,EAAAA,EAAKI,MAAQkD,IAAYtD,EAAAA,EAAKltB,MAC1CglK,EAAWtmK,EAAKqW,MAAMwuO,EAAe,GAAGlvO,MAAK,SAAUhO,GAAK,OAAQA,EAAEhG,QAAU,SAE/E,GAAImwB,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKrX,KAAM,CACnD,IAAI21Q,EAAW9sR,EAAKqW,MAAM,EAAGwuO,GAE7B,IADAv+E,EAAWwmH,EAASrmO,MACb6/G,GAAYA,EAAS3kK,UACxB2kK,EAAWwmH,EAASrmO,KAE5B,CACA,GAAI6/G,EAAU,CACNumH,EAAYvmH,EAASzrK,GAAKgqP,EAAe,EAC7C16N,EAAMsiQ,WAAWjyR,EAAOs3B,EAAS+6P,EACrC,MAEI1iQ,EAAMsiQ,WAAWjyR,EAAOs3B,EAEhC,CACA3H,EAAMgiQ,WAAW3xR,GACjBkiB,GACJ,MArE0C,CAEtCyN,EAAMygQ,WAAa,GACnBzgQ,EAAM6gQ,gBAFS,GAEiBxwR,QACAG,IAA5BwvB,EAAM3vB,MAAM0wR,cACZ1wR,EAAMwF,KAAKkrR,iBAAcvwR,GAE7BwvB,EAAMgiQ,WAAW3xR,EACrB,MAnBIkiB,KAC0B,IAAtB4vQ,GAA+BpB,GAAeA,EAAYvpR,UACtD2M,GACA6b,EAAMihQ,YAAY5wR,GAEtB2vB,EAAMgiQ,WAAW3xR,IAGjB2vB,EAAM4iQ,gBAAgBpxR,EAAM4sQ,cAAcr7P,MAAO1S,EAAOmB,EAAMm2B,QAyE1E,EACA3H,EAAMmH,WAAa,SAAU31B,GACzB,GAAIwuB,EAAM3vB,MAAM8iC,QAAS,CACrB,IAAI9iC,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMwF,KAAKs9B,SAAU,EACrB9iC,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,WAC1BzG,EAAMq/B,eAAiBl+B,EACvBwuB,EAAM4iQ,gBAAgBpxR,EAAM4sQ,cAAcr7P,MAAO1S,EACrD,CACJ,GACAmjC,EAAAA,EAAAA,GAAgBC,EAAAA,GACTzT,CACX,CA+SA,OA3jBAuD,EAAUg9P,EAA4Bz7P,GA6QtC7kB,OAAO6nB,eAAey4P,EAA2B/iQ,UAAW,UAAW,CAInEuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAey4P,EAA2B/iQ,UAAW,QAAS,CAIjEuK,IAAK,WACD,YAAkCv3B,IAA9B8sB,KAAK8jQ,qBACE9jQ,KAAK8jQ,0BAEc5wR,IAArB8sB,KAAK9hB,MAAMuH,MACTua,KAAK9hB,MAAMuH,WAEQvS,IAArB8sB,KAAKjtB,MAAM0S,MACTua,KAAKjtB,MAAM0S,WAEevS,IAA5B8sB,KAAK9hB,MAAM3H,aACTypB,KAAK9hB,MAAM3H,aAEf,EACX,EACAm0B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAey4P,EAA2B/iQ,UAAW,OAAQ,CAIhEuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMpI,IACtB,EACA40B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAey4P,EAA2B/iQ,UAAW,WAAY,CAIpEuK,IAAK,WAGD,IAAIgM,OAA+CvjC,IAAjC8sB,KAAK9hB,MAAMw4B,kBACzBviC,GAAY6rB,KAAK2W,UAA2B,KAAf3W,KAAKva,MAEtC,MAAO,CACHgxB,YAAaA,EACbG,WAH6B1jC,IAArB8sB,KAAK9hB,MAAM04B,MAAsB5W,KAAK9hB,MAAM04B,MAAQziC,EAI5D4iC,aAA6B,OAAf/W,KAAKva,MAE3B,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAey4P,EAA2B/iQ,UAAW,iBAAkB,CAI1EuK,IAAK,WACD,YAAqCv3B,IAA9B8sB,KAAK9hB,MAAM84B,eACZhX,KAAK9hB,MAAM84B,eACXisP,EAA2B55P,aAAa2N,cAClD,EACAtM,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAey4P,EAA2B/iQ,UAAW,WAAY,CAIpEuK,IAAK,WACD,YAA+Bv3B,IAAxB8sB,KAAK9hB,MAAMy4B,SACZ3W,KAAK9hB,MAAMy4B,SACXssP,EAA2B55P,aAAasN,QAClD,EACAjM,YAAY,EACZC,cAAc,IAKlBs4P,EAA2B/iQ,UAAU8K,mBAAqB,SAAUukB,EAAWw2J,GAC3E,IAAItuM,EACAI,EAAKmoB,KAAK9hB,MAAOhG,EAAKL,EAAG+rR,WAAYA,OAAoB,IAAP1rR,EAAgB,GAAKA,EAAIG,EAAKR,EAAGU,KAAMA,OAAc,IAAPF,EAAgB,GAAKA,EACrHI,EAAK82C,EAAUh3C,KAAMgtR,OAAkB,IAAP9sR,EAAgB,GAAKA,EACrD2kP,EAAep9N,KAAKo9N,eACpBqmC,EAAclrR,EAAK6kP,GACnBooC,EAAcD,IAAahtR,EAC3BktR,OAAqCvyR,IAAhBuwR,GAA6B19E,EAAU09E,cAAgBA,EAC5E58Q,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1E6+Q,OAAkCxyR,IAArBq8C,EAAU1oC,OAAuB0oC,EAAU1oC,OAASk/L,EAAUl/L,OAC3E8+Q,GAAWD,GAAc7+Q,EAC7B,GAAmB,KAAf+8Q,GACK/8Q,IAAW4+Q,GAAsBD,IAAiBG,IACnD3lQ,KAAKouG,KAAKw3J,aAAaxoC,QAG1B,IAAKp9N,KAAKojQ,aAAc,CACzB,IAAIyC,EAAmF,QAA/DpuR,EAAKuoB,KAAKouG,KAAKy1J,yBAAyBtrR,EAAMqrR,UAAgC,IAAPnsR,OAAgB,EAASA,EAAGwjC,QAAQwoP,GAC/HkC,IAEIptR,GAAwB,IAAhBA,EAAKsJ,QACbme,KAAKouG,KAAK03J,uBAAuBvtR,EAAK,GAAGqrR,GAAa5jQ,MAE1DA,KAAKouG,KAAKw3J,aAAaC,IAGvBh/Q,GAAU6+Q,GAAcD,GACxBzlQ,KAAKouG,KAAKw3J,aAAaC,EAE/B,CACA7lQ,KAAKoyP,aACT,EAIA6Q,EAA2B/iQ,UAAU4K,kBAAoB,WACrD9K,KAAKouG,KAAK23J,WACV/lQ,KAAKoyP,aACT,EAIA6Q,EAA2B/iQ,UAAUnrB,OAAS,WAC1C,IAAI0C,EACAirB,EAAQ1C,KACRnoB,EAAKmoB,KAAK9hB,MAAOyd,EAAM9jB,EAAG8jB,IAAKzhB,EAAWrC,EAAGqC,SAAUrE,EAAQgC,EAAGhC,MAAOhC,EAAYgE,EAAGhE,UAAWH,EAAQmE,EAAGnE,MAAOkrB,EAAU/mB,EAAG+mB,QAAS0lQ,EAAUzsR,EAAGysR,QAAS/qR,EAAO1B,EAAG0B,KAAM+9B,EAAUz/B,EAAGy/B,QAASnzB,EAAWtM,EAAGsM,SACrNhQ,GAAW6rB,KAAKgX,gBAAkBhX,KAAK6X,SAASjB,MAChDw3F,EAAOpuG,KAAKouG,KACZ3oH,EAAQua,KAAKva,MACbugR,GAA+C,IAA3BhmQ,KAAK9hB,MAAM+nR,cAA0BrnQ,KAAanZ,EACtErS,EAAK4sB,KAAK9hB,MAAM9K,IAAM4sB,KAAKkyP,SACR,kBAAZoS,IACPtkQ,KAAKmjQ,WAAamB,GAEtB,IAAIx1O,EAAgBv7C,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,yBAA0Bv7B,GAAY4D,EAAK,CAAC,EAC5GA,EAAG,WAAWyM,OAAOm0B,EAAQ9+B,IAASA,IAASA,EAC/C9B,EAAG,aAAayM,OAAOo0B,EAAWhB,IAAYA,IAAYA,EAC1D7/B,EAAG,WAAWyM,OAAOC,IAAaA,EAClC1M,EAAG,cAAgBtD,EACnBsD,EAAG,aAAemnB,EAClBnnB,EAAG,cAAgBuoB,KAAK2W,SACxBl/B,EAAG,cAAgByC,EACnBzC,IAAM1D,IAAK,SAAUs0B,GACrB3F,EAAM/iB,SAAW0oB,EACjB+lG,EAAKvoG,QAAUwC,CACnB,EAAG30B,MAAQmC,EAELgf,EAASA,EAAS,CAAC,EAAGnhB,GAAQ,CAAE2G,WAAOnH,IADvCQ,EACqDioB,IAAKA,GAChEqE,KAAKkmQ,gBAAgBzgR,GAAS,GAAIrS,GAClCwrB,GAAWrrB,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,uBAAwBiC,KAAM,YACpFkwR,IAAsBpnQ,GAAWrrB,EAAAA,cAAoB4yR,EAAAA,EAAa,CAAE9wR,QAAS2qB,KAAK2kQ,iBAAkBr5P,IAAK,gBACzGtL,KAAKomQ,uBACT,OAAOvwR,EACAtC,EAAAA,cAAoBkqE,EAAAA,EAAe,CAAE5nE,MAAOA,EAAOwjC,SAAUjmC,EAAIsqE,YAAaj4D,EAAO6zB,YAAanlC,EAASolC,eAAgBr/B,EAAUxG,MAAO,CAAE2G,MAAO3G,EAAQA,EAAM2G,WAAQnH,GAAaO,SAAUq7C,IACnMA,CACV,EAIAm0O,EAA2B/iQ,UAAU8kQ,WAAa,SAAUjyR,EAAOs3B,EAAS+6P,GACxE,IAAI1iQ,EAAQ1C,KACRqmQ,EAAYrmQ,KAAKva,MACjBhO,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgO,EAAYpO,EAAGoO,UAAWggR,EAAmBpuR,EAAGouR,iBAC/GzoC,OAA0ClqP,IAA3B8sB,KAAKjtB,MAAM0wR,YAC1BlrR,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGwiB,EAAM3vB,MAAM0wR,YAAa59Q,EAAY,IACpFggR,EAAmBA,EAAiBttR,EAAM8tR,EAAWxgR,GAClDtN,EAAK0iC,SAAQqrP,EAAAA,EAAAA,IAAe/tR,EAAM8tR,EAAWxgR,IACjD+3O,EAAa59N,KAAKouG,KAAK/6F,WAAWkN,SAAS,CAC3ClW,QAASA,EACTh2B,QAAS+oP,EACTloO,IAAK3c,EAAKsJ,OAAS,EACnBkT,IAAK,EACLqwQ,UAAWA,QAAwBlyR,SAEpBA,IAAf0qP,GACA59N,KAAKwjQ,UAAU5lC,EAAY7qP,GAE/BitB,KAAK0kQ,WAAW3xR,EACpB,EAIAkwR,EAA2B/iQ,UAAUolQ,gBAAkB,SAAU7/Q,EAAO1S,EAAOwzR,GAC3E,IAAI1/Q,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1EpP,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgO,EAAYpO,EAAGoO,UAE9E49Q,EAAclrR,EADCynB,KAAKo9N,gBAGxB,GADAp9N,KAAKmjQ,WAAa,GACdt8Q,GAAU0/Q,IAAax/P,EAAAA,EAAK8L,OACxB4wP,IAAgBA,EAAYvpR,SAAU,CACtC,IAAIo0K,GAAWg1G,EAAAA,EAAAA,IAAa/qR,EAAKynB,KAAKo9N,aAAa33O,IAASI,GAC5Dma,KAAKujQ,gBAAgBj1G,EAAUv7K,EACnC,CAEA8T,GACAmZ,KAAK2jQ,YAAY5wR,GAErBitB,KAAK0kQ,WAAW3xR,EACpB,EACAkwR,EAA2B/iQ,UAAUgmQ,gBAAkB,SAAUzgR,EAAOrS,GACpE,IAAIsvB,EAAQ1C,KACRouG,EAAOpuG,KAAKouG,KACZ32H,EAAKuoB,KAAK9hB,MAAOX,EAAc9F,EAAG8F,YAAaguB,EAAW9zB,EAAG8zB,SAAUrxB,EAAWzC,EAAGyC,SAAUw+B,EAAWjhC,EAAGihC,SAC7G7C,EAAU7V,KAAKjtB,MAAM8iC,QACrBhvB,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC9E,OAAQtT,EAAAA,cAAoBizR,EAAAA,EAAW,CAAEpzR,GAAIA,EAAImK,YAAaA,EAAaguB,SAAUA,EAAUkzN,UAAWz+N,KAAK9hB,MAAMugP,UAAWh5O,MAAOA,EAAOghR,cAAezmQ,KAAKmjQ,WAAYttP,QAASA,EAAS//B,KAAMkqB,KAAK9hB,MAAMpI,KAAM/B,IAAK,SAAU2yR,GAAa,OAAOhkQ,EAAM0rB,OAASs4O,GAAaA,EAAUl4O,KAAO,EAAG/iB,UAAWzL,KAAK4kQ,eAAgBp/Q,SAAUwa,KAAK+jQ,gBAAiBn6P,QAASwkG,EAAKzkG,YAAaG,OAAQ9J,KAAK6J,WAAY3vB,SAAUA,EAAUyG,SAAU+3B,EAAU6pC,SAAU17D,EAAQ8/Q,KAAMv4J,EAAKw4J,UAAWC,iBAAkB,UAAYz4J,EAAKj6F,KAAO,IAAMnU,KAAKo9N,eAAgBrlP,KAAM,WAAYy/B,eAAgBxX,KAAK9hB,MAAMs5B,eAAgBC,gBAAiBzX,KAAK9hB,MAAMu5B,gBAAiBqvP,aAAc9mQ,KAAK2W,SAAU5hC,OAAQirB,KAAK9hB,MAAM6oR,aACjtB,EACA9D,EAA2B/iQ,UAAUkmQ,oBAAsB,WACvD,IAAI3uR,EACA22H,EAAOpuG,KAAKouG,KACZv2H,EAAKmoB,KAAK9hB,MAAOyd,EAAM9jB,EAAG8jB,IAAKvY,EAASvL,EAAGuL,OAAQiyB,EAASx9B,EAAGw9B,OAAQn9B,EAAKL,EAAGU,KAAMA,OAAc,IAAPL,EAAgB,GAAKA,EAAIqB,EAAO1B,EAAG0B,KAAMqqR,EAAa/rR,EAAG+rR,WAAYx4P,EAAOvzB,EAAGuzB,KAAM47P,EAA8BnvR,EAAGmvR,4BAClNjtP,EAAgBq0F,EAAK64J,mBACrBpgR,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1EqgR,OAAqCh0R,IAAxB6mC,EAAc1/B,MAAsB0/B,EAAc1/B,MAAQ+zH,EAAK84J,WAC5E3lN,EAAQvhD,KAAKjtB,MAAMwuE,MAIvB,YAHcruE,IAAVquE,QAAsCruE,IAAf0wR,IACvBriN,GAAQ+hN,EAAAA,EAAAA,IAAa/qR,EAAK,GAAIqrR,IAE1BrwR,EAAAA,cAAoB4zR,EAAAA,EAAe,CAAE9sR,MAAO6sR,EAAYntP,cAAe,CACvE9O,QAAS8O,EAAc9O,QACvB6N,OAAQ9Y,KAAKqI,QACb6B,KAAMrjB,EACNkyB,YAAY3J,EAAAA,EAAAA,GAAW2K,EAAchB,WAAY,mBAAoB,wBACrEllC,UAAWkmC,EAAclmC,UACzBmmC,SAAUD,EAAcC,UACzBre,SAAazoB,IAARyoB,EAAoBA,EAAMqE,KAAKouG,KAAKg5J,cAAeC,WAAY,CAAC9uR,EAAKsJ,SAC7EuB,GAAU7P,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iBAAmBuP,GACrE7P,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,UAAW33B,EAAK,CAAC,EAC5DA,EAAG,UAAUyM,OAAOm0B,EAAQ9+B,IAASA,IAASA,EAC9C9B,MACH2zB,GAAQm2C,GAAyB,IAAhBhpE,EAAKsJ,QAAgBtO,EAAAA,cAAoB+zR,EAAAA,EAAmB,CAAE/lN,MAAOA,EAAOgmN,UAAW,SAAUxyR,OAAQiyR,IAC3HhnQ,KAAKwnQ,cACTnyP,GAAU9hC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iBAAmBwhC,GAC7E,EACA4tP,EAA2B/iQ,UAAUsnQ,WAAa,WAC9C,IAAIp5J,EAAOpuG,KAAKouG,KACZr0F,EAAgBq0F,EAAK64J,mBACrBxvR,EAAKuoB,KAAK9hB,MAAO2H,EAAYpO,EAAGoO,UAAWhO,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAI4vR,EAAmBhwR,EAAGgwR,iBAAkB1oC,EAAatnP,EAAGsnP,WAAY2oC,EAAwBjwR,EAAGiwR,sBACxLjiR,EAAQua,KAAKva,MACboB,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC9E,OAAQtT,EAAAA,cAAoBo0R,EAAAA,EAAM,CAAEv0R,GAAIg7H,EAAKw4J,UAAW18P,KAAMrjB,EAAQtO,KAAMA,EAAKqW,QAASwuO,aAAcp9N,KAAKo9N,eAAgB33O,MAAOA,EAAOI,UAAWA,EAAWg2O,WAAYh2O,EAAW+hR,mBAAmB,EAAOC,YAAaz5J,EAAKj6F,KAAMyvP,WAAY5jQ,KAAK9hB,MAAM0lR,WAAY2D,UAAW,SAAUnpC,QAAS,SAAUhzN,GAAQ,OAAOgjG,EAAKhjG,KAAOA,CAAM,EAAG8wC,aAAc,CAAExgE,UAAWq+B,EAAc1+B,QAAUysR,gBAAiB,iBAAkBzyR,QAAS2qB,KAAKyhO,gBAAiB1C,WAAYA,EAAY2oC,sBAAuBA,EAAuBK,aAAcN,EAAkB53P,YAAa,SAAUn2B,GAAK,OAAOA,EAAEub,gBAAkB,EAAGqvP,SAAUtkP,KAAKskP,UACjoB,EACA2e,EAA2B/iQ,UAAUqjQ,gBAAkB,SAAUj1G,EAAUv7K,EAAOi1R,IAC1EhoQ,KAAKva,QAAU6oK,GAAa05G,KAGhCj1R,EAAMwF,KAAKkN,MAAQ6oK,EACnBtuJ,KAAK8jQ,qBAAuBx1G,EAC5Bv7K,EAAM24N,OAAO1qM,KAAKnM,EAAS,CAAErb,KAAM,YAAewuR,GAAa,CAAC,IACpE,EACA/E,EAA2B/iQ,UAAUwkQ,WAAa,SAAU3xR,GACxDitB,KAAKouG,KAAKs2J,WAAW3xR,GACrBitB,KAAK8jQ,0BAAuB5wR,CAChC,EACA+vR,EAA2B/iQ,UAAUqkQ,aAAe,SAAU9+Q,GAE1D,GADAua,KAAKmjQ,WAAa,GACd19Q,EAAO,CACP,IAAIhO,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgO,EAAYpO,EAAGoO,UAC9EoiR,EAAgB1vR,GAAK2vR,EAAAA,EAAAA,IAAoB3vR,EAAMkN,EAAOI,IAC1D,GAAIoiR,EAAe,CACf,IAAIxB,GAAgBnD,EAAAA,EAAAA,IAAa2E,EAAepiR,GAC5CJ,EAAM+vC,gBAAkBixO,EAAcjxO,gBACtCx1B,KAAKmjQ,WAAasD,EAAc1/Q,UAAUtB,EAAM5D,QAExD,CACJ,CACJ,EACAohR,EAA2B/iQ,UAAUk9N,aAAe,SAAU33O,GAC1D,IAAIid,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgO,EAAYpO,EAAGoO,UAAWggR,EAAmBpuR,EAAGouR,iBAAkBhB,EAAoBptR,EAAGotR,kBACxJsD,OAAuBj1R,IAAVuS,EAAsBA,EAAQua,KAAKva,MACpD,QAA+BvS,IAA3B8sB,KAAKjtB,MAAM0wR,YACX,OAAOlrR,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGwiB,EAAM3vB,MAAM0wR,YAAa59Q,EAAY,IAE3F,GAAIggR,EACL,OAAOA,EAAiBttR,EAAM4vR,EAAYtiR,GAG1C,IAAIuiR,EAAqB7vR,EAAK0iC,SAAQqrP,EAAAA,EAAAA,IAAe/tR,EAAM4vR,EAAYtiR,IACvE,OAAIg/Q,GAAqBh/Q,IAAqC,IAAxBuiR,EAC3B7vR,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,IAEtEiP,KAAKI,IAAI,EAAGkzQ,EAE3B,EACAnF,EAA2BnpP,YAAc,eAIzCmpP,EAA2Bj3P,UAAYnX,EAASA,EAAS,CAAC,EAAGquQ,EAAAA,EAAamF,gBAAiB,CAAE9uR,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAAWqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAAU9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,OAAQ,YAAa23P,WAAY33P,EAAAA,OAAkBq4P,QAASr4P,EAAAA,UAAoB,CAACA,EAAAA,KAAgBA,EAAAA,SAAoB1uB,YAAa0uB,EAAAA,OAAkBxmB,MAAOwmB,EAAAA,OAAkB11B,aAAc01B,EAAAA,OAAkByK,kBAAmBzK,EAAAA,OAAkB0K,SAAU1K,EAAAA,KAAgByM,SAAUzM,EAAAA,KAAgBg6P,YAAah6P,EAAAA,KAAgB86P,YAAa96P,EAAAA,KAAgB74B,GAAI64B,EAAAA,OAAkBuL,eAAgBvL,EAAAA,OAAkBwL,gBAAiBxL,EAAAA,OAAkBb,KAAMa,EAAAA,IAAe44P,kBAAmB54P,EAAAA,OAI3uBg3P,EAA2B55P,aAAexU,EAASA,EAAS,CAAC,EAAGquQ,EAAAA,EAAa75P,cAAe,CAAE9vB,KAAM,SAAU+9B,QAAS,SAAUnzB,SAAU,QAAS0gR,mBAAmB,IAChK5B,CACX,CA7jBgD,CA6jB9C1vR,EAAAA,WAQS+0R,GAA2BhuP,EAAAA,EAAAA,KA2B3BsiC,GAAepiC,EAAAA,EAAAA,GAAiB8tP,EAA0BrF,GACrErmN,EAAa9iC,YAAc,4XC3oBvB7T,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAsBI2L,EAAUD,EAAAA,EAAeC,QAASC,EAAaF,EAAAA,EAAeE,WAE9DiwP,EAAwC,SAAU/gQ,GAElD,SAAS+gQ,EAAuBrqR,GAC5B,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAgUxC,OA9TA0C,EAAM3vB,MAAQ,CAAC,EACf2vB,EAAM0rG,KAAO,IAAI80J,EAAAA,EAAaxgQ,GAC9BA,EAAM/iB,SAAW,KACjB+iB,EAAMwvP,UAAW/9O,EAAAA,EAAAA,KACjBzR,EAAMygQ,WAAa,GACnBzgQ,EAAM8lQ,WAAY,EAClB9lQ,EAAM0rB,OAAS,KACf1rB,EAAM+lQ,qBAAuB,KAC7B/lQ,EAAMoC,WAAa,EAEnBpC,EAAMuF,MAAQ,WACNvF,EAAM0rB,QACN1rB,EAAM0rB,OAAOnmB,OAErB,EAEAvF,EAAM2gQ,iBAAmB,SAAUzuQ,EAAO7hB,GACtC,IAAI0E,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAI6wR,EAAUjxR,EAAGixR,QAASvmR,EAAc1K,EAAG0K,YAEvGqB,EAAOjL,EAAKqc,GADL8zQ,EAAUA,EAAQ58P,KAAO,IAEhC68P,IAAejF,EAAAA,EAAAA,IAAQlgR,EAAMkf,EAAMjd,MAAOtD,GAC9CugB,EAAM6gQ,gBAAgB//Q,EAAMzQ,QACHG,IAArBwvB,EAAM3vB,MAAMgL,OACZhL,EAAMwF,KAAKwF,UAAO7K,GAElBy1R,GACAjmQ,EAAM0rG,KAAKw6J,6BAA6BplR,EAAMzQ,EAEtD,EACA2vB,EAAMmmQ,cAAgB,WAClB74P,YAAW,WACHtN,EAAMoG,YAAcpG,EAAM+lQ,uBAC1B/lQ,EAAM8lQ,WAAY,EAClB9lQ,EAAM+lQ,qBAAqBxgQ,QAC3BvF,EAAM8lQ,WAAY,EAE1B,GAAG,IACP,EACA9lQ,EAAMomQ,aAAe,SAAUzgQ,GAC3B3F,EAAM/iB,SAAW0oB,EACjB3F,EAAM0rG,KAAKvoG,QAAUwC,CACzB,EACA3F,EAAMqmQ,eAAiB,SAAU70R,GAC7B,IAAIuD,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgtR,EAAoBptR,EAAGotR,kBAAmBh/Q,EAAYpO,EAAGoO,UACzHu3O,EAAe16N,EAAMsmQ,kBACrBC,EAAyBvmQ,EAAMwmQ,8BAA8BrjR,EAAWtN,EAAM6kP,GAC9Ev2O,OAAgC3T,IAAvBwvB,EAAMxkB,MAAM2I,OAAuB6b,EAAMxkB,MAAM2I,OAAS6b,EAAM3vB,MAAM8T,OAC7E9T,EAAQ2vB,EAAM0rG,KAAK41J,YAMvB,GALAjxR,EAAMq/B,eAAiBl+B,GAClB2wR,GAAqBh/Q,GAAaojR,GACnCvmQ,EAAMymQ,2BAA2Bj1R,GAErCwuB,EAAM0rG,KAAKu1J,YAAY5wR,IAClB8T,GAAU6b,EAAMoG,WAAY,CAC7B,IAAIsgQ,OAA4Cl2R,IAA/BwvB,EAAMxkB,MAAMmrR,eAA+B3mQ,EAAMxkB,MAAMmrR,eAAiB3mQ,EAAM3vB,MAAMgL,MAAQ,KAC7G2kB,EAAM0rG,KAAKk7J,cAAcF,EAAYr2R,EACzC,CACA2vB,EAAMgiQ,WAAW3xR,EACrB,EACA2vB,EAAM6mQ,uBAAyB,WAC3B,IAAIH,OAA4Cl2R,IAA/BwvB,EAAMxkB,MAAMmrR,eAA+B3mQ,EAAMxkB,MAAMmrR,eAAiB3mQ,EAAM3vB,MAAMgL,KACjGyrR,GAAmBlG,EAAAA,EAAAA,IAAa5gQ,EAAMjd,MAAOid,EAAMxkB,MAAM2H,WACzD4jR,GAAkBj2M,EAAAA,EAAAA,IAAU41M,GAAcA,EAAaI,EAC3D,OAAQj2R,EAAAA,cAAoBm2R,EAAAA,EAAY,CAAEjkR,MAAOgkR,EAAiB11R,IAAK,SAAU+O,GAAU,OAAO4f,EAAM+lQ,qBAAuB3lR,GAAUA,EAAOulB,OAAS,EAAG7iB,SAAUkd,EAAMinQ,yBAA0Bl+P,UAAW/I,EAAMkiQ,eAAgBrrR,KAAMmpB,EAAMxkB,MAAM3E,KAAM+9B,QAAS5U,EAAMxkB,MAAMo5B,QAASnzB,SAAUue,EAAMxkB,MAAMiG,UACvT,EACAue,EAAMinQ,yBAA2B,SAAUz1R,GACvC,IAAInB,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EAAMk+B,eAC7Br/B,EAAMwF,KAAKwF,KAAO7J,EAAMkmB,OAAO3U,MAC/Bid,EAAM0rG,KAAKk7J,cAAcp1R,EAAMkmB,OAAO3U,MAAO1S,GAC7C2vB,EAAMgiQ,WAAW3xR,EACrB,EACA2vB,EAAM4hP,SAAW,SAAUpwQ,GACvB,IAAIuD,EAAKirB,EAAM0rG,KAAMw7J,EAAKnyR,EAAGmyR,GAAIx+P,EAAO3zB,EAAG2zB,KAC3Cw+P,EAAGC,cAAc31R,GACjB,IAAI0vR,EAAalhQ,EAAMxkB,MAAM0lR,WACzB/rR,EAAK6qB,EAAMxkB,MAAM3F,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EACvD,GAAK+rR,GAAerrR,EAAKsJ,OAAzB,CAGA,IAAIijB,EAAapC,EAAMoC,WACnBpC,EAAMoC,aAAe8kQ,EAAGtnR,QAAUsnR,EAAG9kQ,WAAcsG,EAAOA,EAAK33B,SAAS,GAAGsyB,aAAe,GAE1FnmB,EADS1L,EAAMkmB,OACIxa,UAAagqR,EAAG99P,KAAOhH,EAChB,WAA1BpC,EAAMxkB,MAAMqpR,YACZhvR,EAAOmqB,EAAM0rG,KAAKy1J,yBAAyBtrR,EAAMqrR,IAGrD,IADA,IAAIriN,EAAQhpE,EAAK,GAAGqrR,GACX1jR,EAAI,EAAGA,EAAI3H,EAAKsJ,UACjBijB,EAAa5kB,EAAIN,GADQM,IAIzB3H,EAAK2H,IAAM3H,EAAK2H,GAAG0jR,KACnBriN,EAAQhpE,EAAK2H,GAAG0jR,IAGpBriN,IAAU7+C,EAAM3vB,MAAMwuE,QACtB7+C,EAAM6L,SAAS,CACXgzC,MAAOA,IAEP7+C,EAAMxkB,MAAM4rR,eACZpnQ,EAAMxkB,MAAM4rR,cAAcrjQ,UAAKvzB,EAAW,CAAEquE,MAAOA,IAtB3D,CAyBJ,EACA7+C,EAAM++N,gBAAkB,SAAU7sO,EAAO1gB,GACrCwuB,EAAM0rG,KAAKqzH,gBAAgB7sO,EAAO1gB,GAClCwuB,EAAMohQ,0BAAuB5wR,CACjC,EACAwvB,EAAMmH,WAAa,SAAU31B,GACzB,GAAIwuB,EAAM3vB,MAAM8iC,UAAYnT,EAAM8lQ,UAAW,CACzC,IAAIz1R,EAAQ2vB,EAAM0rG,KAAK41J,YACnBvsR,EAAKirB,EAAMxkB,MAAO2H,EAAYpO,EAAGoO,UAAWhO,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EACtFulP,EAAe16N,EAAMsmQ,kBAErBC,KADkC,IAAlB7rC,IAC2B16N,EAAMwmQ,8BAA8BrjR,EAAWtN,EAAM6kP,GACpGrqP,EAAMwF,KAAKs9B,SAAU,EACrB9iC,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,WAC1BzG,EAAMq/B,eAAiBl+B,EACnB2R,GAAaojR,GACbvmQ,EAAMqnQ,iBAAiB71R,GAE3BwuB,EAAMsnQ,8BAA8B91R,EAAM4sQ,cAAcr7P,MAAO1S,EACnE,CACJ,EACA2vB,EAAMunQ,aAAe,SAAU/1R,GAC3B,IAAI2S,OAAgC3T,IAAvBwvB,EAAMxkB,MAAM2I,OAAuB6b,EAAMxkB,MAAM2I,OAAS6b,EAAM3vB,MAAM8T,OAC7EuiR,OAA4Cl2R,IAA/BwvB,EAAMxkB,MAAMmrR,eAA+B3mQ,EAAMxkB,MAAMmrR,eAAiB3mQ,EAAM3vB,MAAMgL,MAAQ,KAC7G,IAAK8I,GAAU6b,EAAMoG,WAAY,CAC7B,IAAI/1B,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EACvBwuB,EAAM0rG,KAAKu1J,YAAY5wR,GACvB2vB,EAAM0rG,KAAKk7J,cAAcF,EAAYr2R,GACrC2vB,EAAMgiQ,WAAW3xR,EACrB,CACJ,EACA2vB,EAAMkiQ,eAAiB,SAAU1wR,GAC7B,IAAIuD,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgtR,EAAoBptR,EAAGotR,kBAAmBh/Q,EAAYpO,EAAGoO,UAAW1D,EAAc1K,EAAG0K,YAAayhR,EAAansR,EAAGmsR,WAClLn+Q,EAAQid,EAAMjd,MACd+b,EAAgB1M,KAAKI,IAAI,EAAG3c,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGuF,EAAOtD,EAAc,KACjGkoB,EAAUn2B,EAAMm2B,QAChBxjB,OAAgC3T,IAAvBwvB,EAAMxkB,MAAM2I,OAAuB6b,EAAMxkB,MAAM2I,OAAS6b,EAAM3vB,MAAM8T,OAC7E9T,EAAQ2vB,EAAM0rG,KAAK41J,YAEvB,GADAjxR,EAAMq/B,eAAiBl+B,GAClBA,EAAM0+B,SAAWvI,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKI,MAAO,CAEjE,GADAjzB,EAAM+gB,iBACa,KAAf2uQ,GAAqB/9Q,EACrB,IAAK6c,EAAMxkB,MAAM2mR,mBAAqBh+Q,EAClC6b,EAAMsiQ,WAAWjyR,EAAOs3B,OAEvB,CACD,IAAIw0I,EAAW,EACf,GAAIx0I,IAAYtD,EAAAA,EAAKI,MAAQkD,IAAYtD,EAAAA,EAAKltB,MAAO,CACjD,IAAIorR,EAAiB1sR,EAAKqW,MAAM4S,EAAgB,GAAGtT,MAAK,SAAUhO,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,IAC3Gg5J,EAAWomH,GAAkB1sR,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAeo/Q,EAAep/Q,EAAY,GACpH,MACK,GAAIwkB,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKrX,KAAM,CACnD,IAAIw1Q,OAAe,EACnB,GAAsB,IAAlB1jQ,EACA0jQ,EAAe3sR,EACfsmK,EAAWtmK,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,QAE5E,CAGD,IADA,IAAIs/Q,GADJD,EAAe3sR,EAAKqW,MAAM,EAAG4S,IACKw9B,MAC3BmmO,GAAkBA,EAAejrR,UACpCirR,EAAiBD,EAAalmO,MAElC6/G,EAAWsmH,GAAkB5sR,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAes/Q,EAAet/Q,EAAY,GACpH,CACJ,CACA,QAAiB3S,IAAb2rK,EAAwB,CACxB,IAAIumH,EAAYvmH,EAAWr9I,EAC3BkB,EAAMsiQ,WAAWjyR,EAAOs3B,EAAS+6P,EACrC,WACsBlyR,IAAb2rK,GAA0BtmK,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAeJ,EAAMI,EAAY,MAAOtN,EAAKsJ,OAAS,GAC9H6gB,EAAMsiQ,WAAWjyR,EAAOs3B,EAEhC,MAEC,IAAK3H,EAAMxkB,MAAM2mR,mBAAqBh+Q,EACvC6b,EAAMsiQ,WAAWjyR,EAAOs3B,OAEvB,CACGw0I,EAAW,KACf,GAAIx0I,IAAYtD,EAAAA,EAAKI,MAAQkD,IAAYtD,EAAAA,EAAKltB,MAC1CglK,EAAWtmK,EAAKqW,MAAM4S,EAAgB,GAAGtT,MAAK,SAAUhO,GAAK,OAAQA,EAAEhG,QAAU,SAEhF,GAAImwB,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKrX,KAAM,CACnD,IAAI21Q,EAAW9sR,EAAKqW,MAAM,EAAG4S,GAE7B,IADAq9I,EAAWwmH,EAASrmO,MACb6/G,GAAYA,EAAS3kK,UACxB2kK,EAAWwmH,EAASrmO,KAE5B,CACA,GAAI6/G,EAAU,CACNumH,EAAYvmH,EAASzrK,GAAKouB,EAAgB,EAC9CkB,EAAMsiQ,WAAWjyR,EAAOs3B,EAAS+6P,EACrC,MAEI1iQ,EAAMsiQ,WAAWjyR,EAAOs3B,EAEhC,CACA3H,EAAMgiQ,WAAW3xR,EACrB,CACA,IAAI4wR,EAAc,WACdzvR,EAAM+gB,iBACNyN,EAAM0rG,KAAKu1J,YAAY5wR,GACvB2vB,EAAMgiQ,WAAW3xR,EACrB,EACIqqP,EAAe16N,EAAMsmQ,kBACrBkB,GAAkC,IAAlB9sC,EAChB6rC,GAA0BiB,GAAiBxnQ,EAAMwmQ,8BAA8BrjR,EAAWtN,EAAM6kP,GACpG,GAAIv2O,EACA,GAAIwjB,IAAYtD,EAAAA,EAAKkqO,OACjBvuO,EAAM0rG,KAAK22J,uBAAuB,QAEjC,GAAI16P,IAAYtD,EAAAA,EAAKmqO,SACtBxuO,EAAM0rG,KAAK22J,sBAAsB,QAEhC,GAAI7wR,EAAM0+B,QAAUvI,IAAYtD,EAAAA,EAAKG,GACtCy8P,SAEC,GAAIt5P,IAAYtD,EAAAA,EAAK8L,MAAO,CAC7B3+B,EAAM+gB,kBACiBpP,IAAcqkR,GAAiBh2R,EAAM4sQ,cAAcr7P,MAAQlN,EAAK6kP,GAAcv3O,QAAa3S,IAEzG2xR,GAAqBh/Q,GAAaojR,EACnCvmQ,EAAMynQ,uBAAuBj2R,GAEvB+0R,GACNvmQ,EAAM0nQ,kBAAkBl2R,EAAM4sQ,cAAcr7P,MAAO1S,GAIvD2vB,EAAM0nQ,kBAAkBl2R,EAAM4sQ,cAAcr7P,MAAO1S,EAE3D,MACSs3B,IAAYtD,EAAAA,EAAKiP,OACjB6uP,GAAqBh/Q,GAAaojR,GACnCvmQ,EAAMynQ,uBAAuBj2R,GAEjCwuB,EAAMsnQ,8BAA8B91R,EAAM4sQ,cAAcr7P,MAAO1S,SAG7D8T,GAAUwjB,IAAYtD,EAAAA,EAAKiP,IAG5B9hC,EAAM0+B,QAAUvI,IAAYtD,EAAAA,EAAKI,MACtCw8P,IAHAjhQ,EAAMynQ,uBAAuBj2R,EAKrC,EACAwuB,EAAM2nQ,cAAgB,SAAUn2R,GAC5B,IAAInB,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EACvB,IAAI2S,OAAgC3T,IAAvBwvB,EAAMxkB,MAAM2I,OAAuB6b,EAAMxkB,MAAM2I,OAAS6b,EAAM3vB,MAAM8T,OAC7E2nC,EAAQt6C,EAAM4sQ,cACdr7P,EAAQ+oC,EAAM/oC,MAClB,GAAIid,EAAMxkB,MAAMomR,QAAS,CACrB,IAAIL,EAAiBz1O,EAAMumO,eAAiBtvQ,EAAM5D,OAC9CyoR,OAAkCp3R,IAAvBwvB,EAAMxkB,MAAM4E,OAAuB4f,EAAMxkB,MAAM4E,OAAS4f,EAAM3vB,MAAMgL,MAC9Ey1E,EAAAA,EAAAA,IAAU82M,KACXA,GAAWhH,EAAAA,EAAAA,IAAa5gQ,EAAMjd,MAAOid,EAAMxkB,MAAM2H,YAAc,IAEnE,IAAIu+Q,EAAoBkG,GAAYA,IAAa7kR,EAC7C4+Q,EAAWiG,GAAYA,EAASzoR,OAAS4D,EAAM5D,OAC/CuiR,GAAqBC,IAAaJ,EAClCvhQ,EAAMygQ,WAAa,GAGnBzgQ,EAAM6hQ,aAAa9+Q,EAE3B,MAC2BvS,IAAvBwvB,EAAMxkB,MAAM4E,SACZ/P,EAAMwF,KAAKwF,KAAO0H,QAEUvS,IAA5BwvB,EAAM3vB,MAAM0wR,cACZ1wR,EAAMwF,KAAKkrR,iBAAcvwR,GAExB2T,GACD6b,EAAM0rG,KAAKu1J,YAAY5wR,GAE3B2vB,EAAM0rG,KAAKk7J,cAAc7jR,EAAO1S,GAChC2vB,EAAMgiQ,WAAW3xR,GACjB2vB,EAAM6L,SAAS,CAAEgzC,WAAOruE,GAC5B,EACAwvB,EAAMiiQ,iBAAmB,SAAUzwR,GACnBwuB,EAAM0rG,KAAK41J,YACjB5xP,eAAiBl+B,EACvBA,EAAMs+B,kBACN9P,EAAM6nQ,YACV,EACA7nQ,EAAMynQ,uBAAyB,SAAUj2R,GACzBwuB,EAAM0rG,KAAK41J,YACjB5xP,eAAiBl+B,EACvBA,EAAMs+B,kBACN9P,EAAM6nQ,YACV,EACA7nQ,EAAMqnQ,iBAAmB,SAAU71R,GACnBwuB,EAAM0rG,KAAK41J,YACjB5xP,eAAiBl+B,EACvBA,EAAMs+B,kBACN9P,EAAM6nQ,YACV,EACA7nQ,EAAMymQ,2BAA6B,SAAUj1R,GAC7BwuB,EAAM0rG,KAAK41J,YACjB5xP,eAAiBl+B,EACvBA,EAAMs+B,kBACN9P,EAAM6nQ,YACV,EACA7nQ,EAAM0vP,YAAc,WACZ1vP,EAAM0rB,QAAU1rB,EAAM0rB,OAAOikO,mBAC7B3vP,EAAM0rB,OAAOikO,kBAAkB3vP,EAAMmV,SAASjB,MACxC,GACAlU,EAAMxkB,MAAMw4B,mBAlUT,8BAoUjB,GACAR,EAAAA,EAAAA,GAAgBC,EAAAA,GACTzT,CACX,CAwfA,OA3zBAuD,EAAUsiQ,EAAwB/gQ,GAoUlC7kB,OAAO6nB,eAAe+9P,EAAuBroQ,UAAW,WAAY,CAChEuK,IAAK,WACD,GAAKrF,EAAAA,EAIL,OAAQpF,KAAKqI,SAAWrI,KAAKqI,QAAQgO,eAAkB7nB,QAC3D,EACAkc,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+9P,EAAuBroQ,UAAW,UAAW,CAE/DuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+9P,EAAuBroQ,UAAW,aAAc,CAIlEuK,IAAK,WAED,SADiBzK,KAAKjtB,MAAM8hC,aAAe7U,KAAKjtB,MAAM8hC,aAAeyB,EAAAA,GAAwBtW,KAAK9hB,MAAMq4B,SAE5G,EACA7L,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+9P,EAAuBroQ,UAAW,QAAS,CAI7DuK,IAAK,WACD,YAAkCv3B,IAA9B8sB,KAAK8jQ,qBACE9jQ,KAAK8jQ,0BAEc5wR,IAArB8sB,KAAK9hB,MAAMuH,MACTua,KAAK9hB,MAAMuH,WAEQvS,IAArB8sB,KAAKjtB,MAAM0S,MACTua,KAAKjtB,MAAM0S,WAEevS,IAA5B8sB,KAAK9hB,MAAM3H,aACTypB,KAAK9hB,MAAM3H,kBADjB,CAIT,EACAm0B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+9P,EAAuBroQ,UAAW,QAAS,CAI7DuK,IAAK,WACD,IAAIhzB,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIsK,EAAc1K,EAAG0K,YAChFsD,EAAQua,KAAKva,MAEjB,OAAOlN,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGuF,EAAOtD,EAAc,GAChF,EACAuoB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+9P,EAAuBroQ,UAAW,OAAQ,CAI5DuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMpI,IACtB,EACA40B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+9P,EAAuBroQ,UAAW,WAAY,CAIhEuK,IAAK,WAGD,IAAIgM,OAA+CvjC,IAAjC8sB,KAAK9hB,MAAMw4B,kBACzBviC,GAAY6rB,KAAK2W,UACE,OAAf3W,KAAKva,OAAiC,KAAfua,KAAKva,YAA+BvS,IAAf8sB,KAAKva,MAEzD,MAAO,CACHgxB,YAAaA,EACbG,WAH6B1jC,IAArB8sB,KAAK9hB,MAAM04B,MAAsB5W,KAAK9hB,MAAM04B,MAAQziC,EAI5D4iC,aAA6B,OAAf/W,KAAKva,MAE3B,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+9P,EAAuBroQ,UAAW,iBAAkB,CACtEuK,IAAK,WACD,YAAqCv3B,IAA9B8sB,KAAK9hB,MAAM84B,eACZhX,KAAK9hB,MAAM84B,eACXuxP,EAAuBl/P,aAAa2N,cAC9C,EACAtM,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+9P,EAAuBroQ,UAAW,WAAY,CAEhEuK,IAAK,WACD,YAA+Bv3B,IAAxB8sB,KAAK9hB,MAAMy4B,SACZ3W,KAAK9hB,MAAMy4B,SACX4xP,EAAuBl/P,aAAasN,QAC9C,EACAjM,YAAY,EACZC,cAAc,IAGlB49P,EAAuBroQ,UAAU8K,mBAAqB,SAAUukB,EAAWw2J,GACvE,IAAItuM,EACAI,EAAKmoB,KAAK9hB,MAAOiE,EAActK,EAAGsK,YAAaumR,EAAU7wR,EAAG6wR,QAASxwR,EAAKL,EAAG+rR,WAAYA,OAAoB,IAAP1rR,EAAgB,GAAKA,EAAIG,EAAKR,EAAGU,KAAMA,OAAc,IAAPF,EAAgB,GAAKA,EAAIwN,EAAYhO,EAAGgO,UAC5L2kR,EAAYj7O,EAAUm5O,QAAUn5O,EAAUm5O,QAAQnnQ,MAAQ,EAC1D1a,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1E6+Q,OAAkCxyR,IAArBq8C,EAAU1oC,OAAuB0oC,EAAU1oC,OAASk/L,EAAUl/L,OAC3E8+Q,GAAWD,GAAc7+Q,EACzB4jR,EAAezqQ,KAAKva,MAExB,GADAua,KAAK0qQ,kBAAoBD,EACrB/B,GAAWA,EAAQnnQ,QAAUipQ,EAC7BxqQ,KAAKouG,KAAKw7J,GAAGe,0BACb3qQ,KAAKouG,KAAKw7J,GAAGt6M,YAEZ,CACD,IAAIs7M,OAAuC13R,IAApBq8C,EAAU9pC,MAAsB8pC,EAAU9pC,MAAQsgM,EAAUtgM,MAC/EolR,EAAoBtyR,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGuqR,EAActoR,EAAc,IAEvE,WAAzB6d,KAAK9hB,MAAMqpR,WAA0B1hR,GAAa4kR,IAClDI,EAAoF,QAA/DpzR,EAAKuoB,KAAKouG,KAAKy1J,yBAAyBtrR,EAAMqrR,UAAgC,IAAPnsR,OAAgB,EAASA,EAAGwI,KAAI,SAAUurB,GAAM,OAAOA,EAAG3lB,EAAY,IAAGo1B,QAAQwvP,EAAa5kR,KAE9L,IAAIilR,IAAuBpH,EAAAA,EAAAA,IAAQkH,EAAkBH,EAActoR,GAC/DwjR,GAAW+C,EACX1oQ,KAAKouG,KAAK28J,oBAAoBrC,EAASmC,GAElClF,IAAY+C,GACjB1oQ,KAAK6oQ,gBAEDtwR,GAAwB,IAAhBA,EAAKsJ,QACbme,KAAKouG,KAAK03J,uBAAuBvtR,EAAK,GAAGqrR,GAAa5jQ,MAE1DA,KAAKouG,KAAKw3J,aAAaiF,IAElBhkR,GAAU6+Q,GAAc+E,GAAgBK,GAC7C9qQ,KAAKouG,KAAKw3J,aAAaiF,EAE/B,CACIlF,GAAW3lQ,KAAKouB,QAChBpuB,KAAKouB,OAAOnmB,QAEhBjI,KAAKoyP,aACT,EAEAmW,EAAuBroQ,UAAU4K,kBAAoB,WACjD,IAAIrzB,EACJuoB,KAAKiX,eAAiB7R,EAAAA,GAAarsB,OAAOm+B,gBAAkB,IAAIn+B,OAAOm+B,eAAelX,KAAKmX,eAAetI,KAAK7O,OAC/GA,KAAKouG,KAAK23J,WACV/lQ,KAAKoyP,eACyB,QAAxB36Q,EAAKuoB,KAAKxR,gBAA6B,IAAP/W,OAAgB,EAASA,EAAG4X,OAAS2Q,KAAKiX,gBAC5EjX,KAAKiX,eAAeG,QAAQpX,KAAKxR,SAASa,KAElD,EAEAk5Q,EAAuBroQ,UAAU6O,qBAAuB,WACpD,IAAIt3B,GAC0B,QAAxBA,EAAKuoB,KAAKxR,gBAA6B,IAAP/W,OAAgB,EAASA,EAAG4X,OAAS2Q,KAAKiX,gBAC5EjX,KAAKiX,eAAeI,YAE5B,EAEAkxP,EAAuBroQ,UAAUnrB,OAAS,WACtC,IAAI0C,EACAuzR,GAAqB17P,EAAAA,EAAAA,IAA2BtP,MAAMwP,iBAAiBy7P,EAAAA,GAA8Bv7P,EAAAA,GAASu7P,EAAAA,KAC9GC,GAAuB57P,EAAAA,EAAAA,IAA2BtP,MAAMwP,iBAAiB27P,EAAAA,GAAgCz7P,EAAAA,GAASy7P,EAAAA,KAClHtzR,EAAKmoB,KAAK9hB,MAAOyd,EAAM9jB,EAAG8jB,IAAKzhB,EAAWrC,EAAGqC,SAAUhC,EAAKL,EAAGouR,YAAaA,OAAqB,IAAP/tR,EAAgBqwR,EAAuBl/P,aAAa48P,YAAc/tR,EAAIrC,EAAQgC,EAAGhC,MAAOgQ,EAAYhO,EAAGgO,UAAW0wB,EAAW1+B,EAAG0+B,SAAU1iC,EAAYgE,EAAGhE,UAAWH,EAAQmE,EAAGnE,MAAOkrB,EAAU/mB,EAAG+mB,QAASwsQ,EAAgBvzR,EAAGuzR,cAAe1C,EAAU7wR,EAAG6wR,QAASnvR,EAAO1B,EAAG0B,KAAM+9B,EAAUz/B,EAAGy/B,QAASnzB,EAAWtM,EAAGsM,SAAU9L,EAAKR,EAAGgP,OAAQA,OAAgB,IAAPxO,EAAgB2nB,KAAKjtB,MAAM8T,OAASxO,EAAIkF,EAAc1F,EAAG0F,YAC9e9E,EAAKunB,KAAKjtB,MAAM8hC,YAAaA,OAAqB,IAAPp8B,EAAgB,EAAIA,EAC/DtE,GAAW6rB,KAAKgX,gBAAkBhX,KAAK6X,SAASjB,MAChD74B,OAA6B7K,IAAtB8sB,KAAK9hB,MAAM4E,OAAuBkd,KAAK9hB,MAAM4E,OAASkd,KAAKjtB,MAAMgL,KACxEyrR,GAAmBlG,EAAAA,EAAAA,IAAatjQ,KAAKva,MAAOI,GAC5CwlR,GAAY73M,EAAAA,EAAAA,IAAUz1E,GAAQA,EAAOyrR,EACrCxD,EAAoBC,MAAmBoF,IAAc73M,EAAAA,EAAAA,IAAUxzD,KAAKva,QAEpEmkR,EADO5pQ,KAAKouG,KACFw7J,GACVx2R,EAAK4sB,KAAK9hB,MAAM9K,IAAM4sB,KAAKkyP,SAC3BoZ,EAAiBz2P,GAAeyB,EAAAA,GAAwBC,EAC5DqzP,EAAGtnR,aAAsBpP,IAAZw1R,OACGx1R,IAAZw1R,IACAkB,EAAG99P,KAAO48P,EAAQ58P,KAClB89P,EAAGroQ,MAAQmnQ,EAAQnnQ,MACnBqoQ,EAAG2B,SAAW7C,EAAQ6C,UAE1B,IAAIC,EAAYj4R,EAAAA,cAAoBA,EAAAA,SAAgB,KAChDA,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,sBAAuB33B,EAAK,CAAC,EACzEA,EAAG,WAAWyM,OAAOm0B,EAAQ9+B,IAASA,IAASA,EAC/C9B,EAAG,aAAayM,OAAOo0B,EAAWhB,IAAYA,IAAYA,EAC1D7/B,EAAG,WAAWyM,OAAOC,IAAaA,EAClC1M,EAAG,cAAgBtD,EACnBsD,EAAG,aAAemnB,EAClBnnB,EAAG,cAAgBuoB,KAAK2W,SACxBl/B,EAAG,cAAgByC,EACnBzC,GAAK5D,GAAYE,IAAKisB,KAAK8oQ,aAAcp1R,MAAQmC,EAAgBgf,EAASA,EAAS,CAAC,EAAGnhB,GAAQ,CAAE2G,WAAOnH,IAA/CQ,EAA6DioB,IAAKA,GAC/HqE,KAAKkmQ,gBAAgBmF,GAAa,GAAIj4R,EAAImK,GAC1CyoR,IAAsBpnQ,GAAWrrB,EAAAA,cAAoB4yR,EAAAA,EAAa,CAAE9wR,QAAS2qB,KAAK2kQ,iBAAkBr5P,IAAK,gBACzG1M,GAAWrrB,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,uBAAwBiC,KAAM,UAAWw1B,IAAK,YACpG/3B,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,UAAW,EAAG/xB,KAAM,SAAU,aAAcqN,EAASqkR,EAAuBF,EAAoB51R,KAAOg2R,OAAmCl4R,EAAnB,iBAA8BylC,QAAUyyP,EAAmCprQ,KAAK9hB,MAAMy6B,QAA9BymN,EAAAA,IAAuClG,UAAWkyC,EAAe7xR,KAAMA,EAAM4K,SAAUA,EAAUmzB,QAAS,KAAMv9B,WAAY,OAAQlG,UAAW,iBAAkBwB,QAAS2qB,KAAK+oQ,eAAgBl5P,YAAa,SAAUn2B,GAAK,OAAOA,EAAEub,gBAAkB,KAClcq2Q,GAAkBtrQ,KAAKomQ,uBAC5BkF,GAAkBtrQ,KAAKyrQ,+BAC3B,OAAO51R,EACAtC,EAAAA,cAAoBkqE,EAAAA,EAAe,CAAE5nE,MAAOA,EAAOwjC,SAAUjmC,EAAIsqE,YAAa2tN,EAAW/xP,YAAanlC,EAASolC,eAAgBr/B,EAAUxG,MAAO,CAAE2G,MAAO3G,EAAQA,EAAM2G,WAAQnH,GAAaO,SAAU+3R,IACvMA,CACV,EAEAjD,EAAuBroQ,UAAU8kQ,WAAa,SAAUjyR,EAAOs3B,EAAS+6P,GACpE,IAAI3tR,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIK,EAAKT,EAAGixR,QAASA,OAAiB,IAAPxwR,EAAgB,CAAE4zB,KAAM,GAAM5zB,EACxH6F,EAAOiiB,KAAK9hB,MAAM4E,OAASkd,KAAK9hB,MAAM4E,OAASkd,KAAKjtB,MAAMgL,KAC1Dq/O,EAAep9N,KAAKgpQ,kBACpBY,EAAK5pQ,KAAKouG,KAAKw7J,GACfnkR,EAAQua,KAAKva,MAEjB,GADAua,KAAKmjQ,WAAa,IACI,IAAlB/lC,IAAwB5pK,EAAAA,EAAAA,IAAU/tE,GAGjC,GAAa,KAAT1H,EACLiiB,KAAKqjQ,iBAAiB,EAAGtwR,OAExB,CACD,IAAI+pP,EAAe4rC,EAAQ58P,KAAOsxN,EAC9Bv+E,EAAW7+I,KAAKouG,KAAK/6F,WAAWkN,SAAS,CACzClW,QAASA,EACTh2B,QAASyoP,EACT5nO,KAAM00Q,EAAGtnR,QAAUsnR,EAAGroQ,MAAQhpB,EAAKsJ,QAAU,EAC7CkT,IAAK,EACLqwQ,UAAWA,QAAwBlyR,SAEtBA,IAAb2rK,GACA7+I,KAAKqjQ,iBAAiBxkH,EAAU9rK,EAExC,MAjBIitB,KAAKqjQ,iBAAiBjmC,EAAcrqP,EAkB5C,EAEAw1R,EAAuBroQ,UAAUgpQ,8BAAgC,SAAUrjR,EAAWtN,EAAM6kP,GACxF,OAAOv3O,GAAatN,GAAQA,EAAK6kP,IAAiB7kP,EAAK6kP,GAAcljP,QACzE,EACAquR,EAAuBroQ,UAAUkqQ,kBAAoB,SAAU3kR,EAAO1S,GAClE,IAAI0E,EACAI,EAAKmoB,KAAK9hB,MAAOhG,EAAKL,EAAGU,KAAMA,OAAc,IAAPL,EAAgB,GAAKA,EAAI2N,EAAYhO,EAAGgO,UAAW6lR,EAAc7zR,EAAG6zR,YAC1G7kR,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAE1E0hB,GADmB+6P,EAAAA,EAAAA,IAAatjQ,KAAKva,MAAOI,KACVJ,EAClCua,KAAKpL,OAAQ+2Q,EAAAA,EAAAA,IAAmBpzR,EAAMkN,EAAOI,GAC7C+lR,GAA+B,IAAhBrjQ,EACfogQ,OAAcz1R,EAElB,GADA8sB,KAAKmjQ,WAAa,GACdyI,EACAjD,EAAcpwR,EAAKgwB,OAElB,CACD,IAAImjQ,EAIA,OAAO1rQ,KAAK6rQ,kBAAkBpmR,EAAO1S,GAHrC41R,OAA4Bz1R,IAAd2S,IAA2BpO,EAAK,CAAC,GAAMoO,GAAaJ,EAAOhO,GAAMgO,CAKvF,CACAua,KAAKujQ,gBAAgBoF,EAAa51R,GAC9B8T,GACAmZ,KAAKouG,KAAKu1J,YAAY5wR,QAEAG,IAAtB8sB,KAAK9hB,MAAM4E,aAA4C5P,IAApB8sB,KAAKjtB,MAAMgL,OAC9ChL,EAAMwF,KAAKwF,UAAO7K,GAEtB8sB,KAAK0kQ,WAAW3xR,EACpB,EACAw1R,EAAuBroQ,UAAU8pQ,8BAAgC,SAAUjsR,EAAMhL,GAC7E,IAAI0E,EACAI,EAAKmoB,KAAK9hB,MAAOhG,EAAKL,EAAGU,KAAMA,OAAc,IAAPL,EAAgB,GAAKA,EAAI2N,EAAYhO,EAAGgO,UAAW6lR,EAAc7zR,EAAG6zR,YAC1G7kR,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1EilR,GAAgBxI,EAAAA,EAAAA,IAAatjQ,KAAKva,MAAOI,GACzCkmR,EAAiB/rQ,KAAKjtB,MAAM8hC,aAAe7U,KAAKjtB,MAAM8hC,aAAeyB,EAAAA,EAEzE,GADAtW,KAAKmjQ,WAAa,GACdplR,IAAS+tR,GAA2B,KAAT/tR,KAAgBy1E,EAAAA,EAAAA,IAAUs4M,GAIrD,OAHIjlR,IAAWklR,GACX/rQ,KAAKouG,KAAKu1J,YAAY5wR,GAEnBitB,KAAK0kQ,WAAW3xR,GAE3B,IAAIw1B,GAAaojQ,EAAAA,EAAAA,IAAmBpzR,EAAMwF,EAAM8H,GAAW,GAEvD8iR,EAAc,MADiB,IAAhBpgQ,EAGfogQ,EAAcpwR,EAAKgwB,GAEdmjQ,IACL/C,EAAc5qR,EAAQ8H,IAAapO,EAAK,CAAC,GAAMoO,GAAa9H,EAAMtG,GAAMsG,EAAQ,MAEpFiiB,KAAKujQ,gBAAgBoF,EAAa51R,QACVG,IAApB8sB,KAAKjtB,MAAMgL,OACXhL,EAAMwF,KAAKwF,UAAO7K,EAClB8sB,KAAKouG,KAAKk7J,cAAc,GAAIv2R,IAE5B8T,IAAWklR,GACX/rQ,KAAKouG,KAAKu1J,YAAY5wR,GAE1BitB,KAAK0kQ,WAAW3xR,EACpB,EACAw1R,EAAuBroQ,UAAU2rQ,kBAAoB,SAAU9tR,EAAMhL,GACjE,IAAI8T,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1EpP,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgO,EAAYpO,EAAGoO,UAAW3N,EAAKT,EAAGixR,QAASA,OAAiB,IAAPxwR,EAAgB,CAAE4zB,KAAM,GAAM5zB,EAAIG,EAAKZ,EAAGouR,iBAAkBA,OAA0B,IAAPxtR,EAAgB6vR,EAAAA,GAAsB7vR,EACzOyzB,EAAO48P,EAAQ58P,KACfsxN,EAAyB,KAATr/O,GAAwB,IAAT+tB,EAAc,EAC7C+5P,EAAiBttR,EAAMwF,EAAM8H,GAajC,OAZsB,IAAlBu3O,EACAp9N,KAAKqjQ,iBAAiBjmC,EAAetxN,EAAM/4B,IAG3CitB,KAAKujQ,gBAAgB,KAAMxwR,QACHG,IAApB8sB,KAAKjtB,MAAMgL,OACXhL,EAAMwF,KAAKwF,UAAO7K,IAGtB2T,GACAmZ,KAAKouG,KAAKu1J,YAAY5wR,GAEnBitB,KAAK0kQ,WAAW3xR,EAC3B,EACAw1R,EAAuBroQ,UAAUurQ,4BAA8B,WAC3D,IAAIh0R,EACAirB,EAAQ1C,KACRnoB,EAAKmoB,KAAKjtB,MAAM8hC,YAAaA,OAAqB,IAAPh9B,EAAgB,EAAIA,EAC/DK,EAAK8nB,KAAK9hB,MAAOkF,EAASlL,EAAGkL,OAAQiyB,EAASn9B,EAAGm9B,OAAQ97B,EAAOrB,EAAGqB,KAAMlB,EAAKH,EAAGK,KAAMA,OAAc,IAAPF,EAAgB,GAAKA,EAAIurR,EAAa1rR,EAAG0rR,WAAY2D,EAAYrvR,EAAGqvR,UAAWn8P,EAAOlzB,EAAGkzB,KAAMs9P,EAAUxwR,EAAGwwR,QAAStzP,EAAgBl9B,EAAGk9B,cAAe4xP,EAA8B9uR,EAAG8uR,4BACtRngR,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1E06D,EAAQvhD,KAAKjtB,MAAMwuE,WACTruE,IAAVquE,QAAsCruE,IAAf0wR,IACvBriN,GAAQ+hN,EAAAA,EAAAA,IAAa/qR,EAAK,GAAIqrR,IAElC,IAAI1uP,EAAmB,CACnBgpO,aAAa,EACb8Q,oBAAqB,GACrB75O,OAAQtuB,EACR/G,WAAW,EACXgK,QAAS,SAAU5V,GAAS,OAAOwuB,EAAMqmQ,eAAe70R,EAAQ,EAChEg7Q,gBAAiBr6O,GAAem3P,EAAAA,EAAsB,CAAEpyR,IAAK,EAAGS,MAAO,OAAQgB,OAAQ,aAAWnI,EAClGW,UAAWghC,GAAem3P,EAAAA,EACpB,kDACA,+CAEV,OAAQz4R,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB47Q,EAAAA,EAAat6P,EAAS,CAAC,EAAGqgB,GAC1C3hC,EAAAA,cAAoB67Q,EAAAA,EAAmB,CAAEv7Q,UAAW,iBAChDN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,uCACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,uBACpCN,EAAAA,cAAoB,MAAO,KAAM6hC,IACrC7hC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,yBACpCN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,SAAU,EAAG,aAAc,SAAU,gBAAiB,QAAS/xB,KAAM,SAAU2K,SAAU,OAAQ9O,QAAS2qB,KAAK+oQ,eAAgB3zR,KAAM,IAAKujC,QAAS0S,EAAAA,QACzL93C,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qDAAuDmsB,KAAKupQ,2BACxGh2R,EAAAA,cAAoBkiC,EAAAA,EAAoB,CAAE5hC,UAAW,sBACjDN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBACpCN,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,IAAY33B,EAAK,CAAC,EAClDA,EAAG,WAAa2zB,EAChB3zB,EAAG,cAAe,EAClBA,EAAG,kBAAoBixR,EACvBjxR,EAAG,gBAAkB2zB,EACrB3zB,EAAG,WAAWyM,OAAOm0B,EAAQ9+B,IAASA,IAAS6xB,GAAQ7xB,EACvD9B,KACJ2L,GAAU7P,EAAAA,cAAoB,MAAO,CAAEM,UAAW,kBAAoBuP,IACrEgoB,GAAQm2C,GAAyB,IAAhBhpE,EAAKsJ,QAAgBtO,EAAAA,cAAoB+zR,EAAAA,EAAmB,CAAE/lN,MAAOA,EAAOgmN,UAAWA,EAAWxyR,OAAQiyR,IAC5HhnQ,KAAKwnQ,aACLnyP,GAAU9hC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iBAAmBwhC,OAC7F,EACAkzP,EAAuBroQ,UAAUkmQ,oBAAsB,WACnD,IAAI3uR,EAAII,EACJu2H,EAAOpuG,KAAKouG,KACZl2H,EAAK8nB,KAAK9hB,MAAOyd,EAAMzjB,EAAGyjB,IAAKvY,EAASlL,EAAGkL,OAAQiyB,EAASn9B,EAAGm9B,OAAQh9B,EAAKH,EAAGK,KAAMA,OAAc,IAAPF,EAAgB,GAAKA,EAAIurR,EAAa1rR,EAAG0rR,WAAY2D,EAAYrvR,EAAGqvR,UAAWhuR,EAAOrB,EAAGqB,KAAM6xB,EAAOlzB,EAAGkzB,KAAMs9P,EAAUxwR,EAAGwwR,QAAS1B,EAA8B9uR,EAAG8uR,4BAClQngR,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1EkzB,EAAgBq0F,EAAK64J,mBACrBC,OAAqCh0R,IAAxB6mC,EAAc1/B,MAAsB0/B,EAAc1/B,MAAQ+zH,EAAK84J,WAC5E3lN,EAAQvhD,KAAKjtB,MAAMwuE,MAIvB,YAHcruE,IAAVquE,QAAsCruE,IAAf0wR,IACvBriN,GAAQ+hN,EAAAA,EAAAA,IAAa/qR,EAAK,GAAIqrR,IAE1BrwR,EAAAA,cAAoB4zR,EAAAA,EAAe,CAAE9sR,MAAO6sR,EAAYntP,cAAe,CACvE9O,QAAS8O,EAAc9O,QACvB6N,OAAQ9Y,KAAKqI,QACb6B,KAAMrjB,EACNkyB,YAAY3J,EAAAA,EAAAA,GAAW2K,EAAchB,WAAY,mBAAoB,oBACrEllC,UAAWkmC,EAAclmC,UACzBmmC,SAAUD,EAAcC,UACzBre,SAAazoB,IAARyoB,EAAoBA,EAAMqE,KAAKouG,KAAKg5J,cAAeC,WAAY,CAAC9uR,EAAKsJ,SAC7EtO,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,IAAY33B,EAAK,CAAC,EAClDA,EAAG,WAAa2zB,EAChB3zB,EAAG,UAAUyM,OAAOm0B,EAAQ9+B,IAASA,KAAU6xB,GAAQ7xB,EACvD9B,EAAG,kBAAoBixR,EACvBjxR,EAAG,gBAAkB2zB,EACrB3zB,EAAG,WAAWyM,OAAOm0B,EAAQ9+B,IAASA,IAAS6xB,GAAQ7xB,EACvD9B,KACJ2L,GAAU7P,EAAAA,cAAoB,MAAO,CAAEM,UAAW,kBAAoBuP,IACrEgoB,GAAQm2C,GAAyB,IAAhBhpE,EAAKsJ,QAAgBtO,EAAAA,cAAoB+zR,EAAAA,EAAmB,CAAE/lN,MAAOA,EAAOgmN,UAAWA,EAAWxyR,OAAQiyR,IAC5HhnQ,KAAKwnQ,aACLnyP,GACI9hC,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,IAAYv3B,EAAK,CAAC,EAClDA,EAAG,kBAAoBmoB,KAAK9hB,MAAM+tR,gBAClCp0R,GAAKmoB,KAAK9hB,MAAM+tR,kBAAoB52P,IAC5D,EACAkzP,EAAuBroQ,UAAUsnQ,WAAa,WAC1C,IAAI/vR,EACAirB,EAAQ1C,KACRouG,EAAOpuG,KAAKouG,KACZv2H,EAAKmoB,KAAK9hB,MAAO2H,EAAYhO,EAAGgO,UAAW1D,EAActK,EAAGsK,YAAaslR,EAAmB5vR,EAAG4vR,iBAAkB1oC,EAAalnP,EAAGknP,WAAY2oC,EAAwB7vR,EAAG6vR,sBAAuBxvR,EAAKL,EAAGU,KAAMA,OAAc,IAAPL,EAAgB,GAAKA,EAAIG,EAAKR,EAAG6wR,QAASA,OAAiB,IAAPrwR,EAAgB,CAAEyzB,KAAM,GAAMzzB,EACtS0hC,EAAgBq0F,EAAK64J,mBACrB2C,EAAKx7J,EAAKw7J,GACV99P,EAAO48P,EAAQ58P,KACfjlB,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1EuwF,EAAY,cAAclzF,OAAO0lR,EAAGxyL,UAAW,OAC/CgmJ,EAAev2O,EAASmZ,KAAKgpQ,uBAAoB91R,EACjD6K,OAA6B7K,IAAtB8sB,KAAK9hB,MAAM4E,OAAuBkd,KAAK9hB,MAAM4E,OAASkd,KAAKjtB,MAAMgL,KACxEyrR,GAAmBlG,EAAAA,EAAAA,IAAatjQ,KAAKva,MAAOI,GAC5CJ,GAAQ+tE,EAAAA,EAAAA,IAAUz1E,IAASA,IAASyrR,EAAmB,KAAOxpQ,KAAKva,MACnEymR,EAAgBlsQ,KAAK9hB,MAAMktB,MAAQu8P,EAAAA,EACvC,OAAQp0R,EAAAA,cAAoB24R,EAAe,CAAE94R,GAAIg7H,EAAKw4J,UAAW8B,QAAS99P,QAAQ89P,GAAUx+P,KAAMrjB,EAAQtO,KAAMA,EAAM6kP,aAAcA,EAAc33O,MAAOA,EAAOI,UAAWA,EAAWg2O,WAAY15O,EAAayhR,WAAY5jQ,KAAK9hB,MAAM0lR,WAAY2D,UAAWvnQ,KAAK9hB,MAAMqpR,UAAW4E,cAAensQ,KAAK9hB,MAAMiuR,cAAetE,YAAaz5J,EAAKj6F,KAAMiqN,QAAS,SAAUhzN,GAAQw+P,EAAGx+P,KAAO1I,EAAM0rG,KAAKhjG,KAAOA,EAAM1I,EAAMoC,WAAa,CAAG,EAAGo3C,aAAel8C,KAAKjtB,MAAM8hC,aAAe7U,KAAKjtB,MAAM8hC,YAAcyB,EAAAA,EACle,CAAE56B,UAAWq+B,EAAc1+B,QAC3B,CAAC,EAAGysR,iBAAiB14P,EAAAA,EAAAA,GAAW,kBAAmB33B,EAAK,CAAC,EAC3DA,EAAG,oBAAsBixR,EACzBjxR,IAAM0mL,UAAWyrG,EAAGtnR,QAAU,CAAE6oB,UAAWisE,QAAclkG,EAAWo4B,IAAK,UAAWQ,KAAMA,EAAMz2B,QAAS2qB,KAAKyhO,gBAAiB1C,WAAYA,EAAY2oC,sBAAuBA,EAAuBK,aAAcN,EAAkB53P,YAAa,SAAUn2B,GAAK,OAAOA,EAAEub,gBAAkB,EAAGqvP,SAAUtkP,KAAKskP,SAAU8nB,WAAYxC,EAAGyC,YAAaC,SAAUtsQ,KAAKouG,KAAKm+J,uBACpX,EACAhE,EAAuBroQ,UAAUgmQ,gBAAkB,SAAUnoR,EAAM3K,EAAImK,GACnE,IAAImlB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOqtB,EAAW9zB,EAAG8zB,SAAUrxB,EAAWzC,EAAGyC,SAAUrC,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIsK,EAAc1K,EAAG0K,YAAajK,EAAKT,EAAGixR,QAASA,OAAiB,IAAPxwR,EAAgB,CAAE4zB,KAAM,GAAM5zB,EACtM2O,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1EpB,EAAQua,KAAKva,MACb+b,EAAgB1M,KAAKI,IAAI,EAAG3c,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGuF,EAAOtD,EAAc,KAIrG,OAHI6d,KAAKmjQ,cAAeO,EAAAA,EAAAA,IAAQ1jQ,KAAK0qQ,kBAAmBjlR,EAAOtD,KAC3D6d,KAAKmjQ,WAAa,IAEd5vR,EAAAA,cAAoBizR,EAAAA,EAAW,CAAEpzR,GAAIA,EAAIuN,SAAWkG,GAAUmZ,KAAK8I,WAAavrB,YAAaA,EAAaguB,SAAUA,EAAUvrB,MAAOggB,KAAK9hB,MAAM8B,MAAOy+O,UAAWz+N,KAAK9hB,MAAMugP,UAAWh5O,MAAO1H,EAAOiiB,KAAKmjQ,WAAYsD,cAAezmQ,KAAKmjQ,WAAYpvR,IAAK,SAAUy3B,GAAM,OAAO9I,EAAM0rB,OAAS5iB,GAAMA,EAAGgjB,KAAO,EAAGn5C,QAAS2qB,KAAKiqQ,aAAcx+P,UAAWzL,KAAK4kQ,eAAgBp/Q,SAAUwa,KAAKqqQ,cAAezgQ,QAAS5J,KAAKouG,KAAKzkG,YAAaG,OAAQ9J,KAAK6J,WAAY3vB,SAAUA,EAAUqoE,SAAU17D,EAAQ8/Q,KAAM3mQ,KAAKouG,KAAKw4J,UAAWC,iBAAkB,UAAU3iR,OAAO8b,KAAKouG,KAAKj6F,KAAM,KAAKjwB,OAAOsd,EAAgBknQ,EAAQ58P,MAAO/zB,KAAM,WAAYy/B,eAAgBxX,KAAK9hB,MAAMs5B,eAAgBC,gBAAiBzX,KAAK9hB,MAAMu5B,gBAAiBqvP,aAAc9mQ,KAAK2W,SAAU5hC,OAAQirB,KAAK9hB,MAAM6oR,aAC7wB,EACAwB,EAAuBroQ,UAAUqqQ,WAAa,WAC1C,IAAIx3R,EAAQitB,KAAKouG,KAAK41J,YACtBhkQ,KAAKmjQ,WAAa,GAClBnjQ,KAAKouG,KAAKk7J,cAAc,GAAIv2R,QACFG,IAAtB8sB,KAAK9hB,MAAM4E,aAA4C5P,IAApB8sB,KAAKjtB,MAAMgL,OAC9ChL,EAAMwF,KAAKwF,UAAO7K,GAEtB8sB,KAAKujQ,gBAAgB,KAAMxwR,GAC3B,IAAI8T,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1E2lR,EAAaxsQ,KAAK8I,WAClBjiB,IAAW2lR,GACXxsQ,KAAKouG,KAAKu1J,YAAY5wR,GAE1BitB,KAAK0kQ,WAAW3xR,EACpB,EACAw1R,EAAuBroQ,UAAUqjQ,gBAAkB,SAAU//Q,EAAMzQ,GAC/D,IAAI0S,EAAQua,KAAKva,QACX+tE,EAAAA,EAAAA,IAAU/tE,MAAW+tE,EAAAA,EAAAA,IAAUhwE,KAAUkgR,EAAAA,EAAAA,IAAQj+Q,EAAOjC,EAAMwc,KAAK9hB,MAAMiE,oBAGtDjP,IAArB8sB,KAAK9hB,MAAMuH,QACX1S,EAAMwF,KAAKkN,MAAQjC,GAEvBwc,KAAK8jQ,qBAAuBtgR,EAC5BzQ,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,aAC9B,EACA+uR,EAAuBroQ,UAAU8oQ,gBAAkB,WAC/C,IAAIvjR,EAAQua,KAAKva,MACbhO,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgO,EAAYpO,EAAGoO,UAAW1D,EAAc1K,EAAG0K,YAAajK,EAAKT,EAAGixR,QAASA,OAAiB,IAAPxwR,EAAgB,CAAE4zB,KAAM,GAAM5zB,EAAIG,EAAKZ,EAAGouR,iBAAkBA,OAA0B,IAAPxtR,EAAgB6vR,EAAAA,GAAsB7vR,EAAIwsR,EAAoBptR,EAAGotR,kBAClS9mR,EAAOiiB,KAAK9hB,MAAM4E,OAASkd,KAAK9hB,MAAM4E,OAASkd,KAAKjtB,MAAMgL,KAC9D,OAAIy1E,EAAAA,EAAAA,IAAU/tE,SAAmBvS,IAAT6K,EACbxF,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGuF,EAAOtD,EAAc,IAEvEpE,EACE8nR,EAAiBttR,EAAMwF,EAAM8H,GAE/Bg/Q,GAAqBh/Q,IAAc9H,GAAyB,IAAjB2qR,EAAQ58P,KACjDvzB,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,IAGjD,IAAjB6iR,EAAQ58P,KAAa,GAAK,CAEzC,EACAy8P,EAAuBroQ,UAAUqkQ,aAAe,SAAU9+Q,GACtD,IAAIhO,EAAKuoB,KAAK9hB,MAAO3F,EAAOd,EAAGc,KAAMsN,EAAYpO,EAAGoO,UACpDma,KAAKmjQ,YAAaoB,EAAAA,EAAAA,IAAa9+Q,EAAOlN,EAAMsN,EAChD,EACA0iR,EAAuBroQ,UAAUwkQ,WAAa,SAAU3xR,GACpDitB,KAAKouG,KAAKs2J,WAAW3xR,GACrBitB,KAAK8jQ,0BAAuB5wR,CAChC,EACAq1R,EAAuBroQ,UAAUiX,eAAiB,SAAUsC,GACxD,IAAK,IAAIC,EAAK,EAAGC,EAAYF,EAASC,EAAKC,EAAU93B,OAAQ63B,IAAM,CAC/D,IAAIE,EAAQD,EAAUD,GACtB1Z,KAAKuO,SAAS,CAAEsG,YAAa+E,EAAMxf,OAAOyf,aAC9C,CAEJ,EAEA0uP,EAAuBzuP,YAAc,WAErCyuP,EAAuBv8P,UAAYnX,EAASA,EAAS,CAAC,EAAGquQ,EAAAA,EAAal3P,WAAY,CAAEzyB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAAWqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAAU9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,OAAQ,YAAa9pB,YAAa8pB,EAAAA,OAAkB23P,WAAY33P,EAAAA,OAAkBs7P,UAAWt7P,EAAAA,MAAgB,MAAC/4B,EAAW,UAAW,WAAYi5R,cAAelgQ,EAAAA,KAAgBq4P,QAASr4P,EAAAA,KAAgB1uB,YAAa0uB,EAAAA,OAAkBjsB,MAAOisB,EAAAA,OAAkBy/P,YAAaz/P,EAAAA,KAAgBg6P,YAAah6P,EAAAA,KAAgBm/P,cAAen/P,EAAAA,OAAkB0M,QAAS8gN,EAAAA,GAAiB/iN,kBAAmBzK,EAAAA,OAAkB0K,SAAU1K,EAAAA,KAAgB74B,GAAI64B,EAAAA,OAAkBuL,eAAgBvL,EAAAA,OAAkBwL,gBAAiBxL,EAAAA,OAAkBb,KAAMa,EAAAA,IAAe86P,YAAa96P,EAAAA,KAAgB44P,kBAAmB54P,EAAAA,OAEn1Bs8P,EAAuBl/P,aAAexU,EAASA,EAAS,CAAC,EAAGquQ,EAAAA,EAAa75P,cAAe,CAAE9vB,KAAM,SAAU+9B,QAAS,SAAUnzB,SAAU,QAASunR,aAAa,EAAOzF,aAAa,EAAMtvP,UAAU,EAAO4wP,UAAW,SAAU4E,eAAe,EAAOtH,mBAAmB,IAC/P0D,CACX,CA7zB4C,CA6zB1Ch1R,EAAAA,WAQSk5R,GAAuBnyP,EAAAA,EAAAA,KA2BvBwiC,GAAWtiC,EAAAA,EAAAA,GAAiBiyP,EAAsBlE,GAC7DzrN,EAAShjC,YAAc,sPCl5BnB7T,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAkBzCpM,EAAiB,SAAUvb,GAAK,OAAOA,EAAEub,gBAAkB,EAiB/D,QAbqC,SAAUuS,GAE3C,SAASklQ,IACL,OAAkB,OAAXllQ,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAOA,OAVAiG,EAAUymQ,EAAiBllQ,GAI3BklQ,EAAgBxsQ,UAAUnrB,OAAS,WAC/B,IAAI0C,EAAKuoB,KAAK9hB,MAAOuB,EAAWhI,EAAGgI,SAAUktR,EAAcl1R,EAAGk1R,YAAa9mR,EAAYpO,EAAGoO,UAC1F,OAAQtS,EAAAA,cAAoB,MAAO,CAAE8B,QAAS2qB,KAAK9hB,MAAM7I,QAASw6B,YAAa5a,EAAgBvhB,MAAO,CAAEiG,SAAU,SAAW9F,WAAWu7B,EAAAA,EAAAA,GAAW,qBAAsB,CACjK,aAAc3vB,MACZ6jR,EAAAA,EAAAA,IAAaqJ,EAAa9mR,IAAc,GACtD,EACO6mR,CACX,CAZqC,CAYnCn5R,EAAAA,qIClCE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAqBI2L,EAAUD,EAAAA,EAAeC,QAASC,EAAaF,EAAAA,EAAeE,WAI9Ds0P,EAA4C,SAAUplQ,GAEtD,SAASolQ,EAA2B1uR,GAChC,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAyaxC,OAraA0C,EAAM3vB,MAAQ,CAAC,EACf2vB,EAAM/iB,SAAW,KACjB+iB,EAAM0rG,KAAO,IAAI80J,EAAAA,EAAaxgQ,GAC9BA,EAAMmqQ,YAAc,CAAE1qL,KAAM,GAAI7+E,KAAM,IACtCZ,EAAMoqQ,QAAU,KAChBpqQ,EAAMqqQ,iBAAkB,EACxBrqQ,EAAMsqQ,aAAe,KACrBtqQ,EAAMuqQ,YAAa,EACnBvqQ,EAAMwqQ,uBAAwB,EAC9BxqQ,EAAMwvP,UAAW/9O,EAAAA,EAAAA,KACjBzR,EAAMoC,WAAa,EAInBpC,EAAMuF,MAAQ,WACNvF,EAAM0rG,KAAKvoG,SACXnD,EAAM0rG,KAAKvoG,QAAQoC,OAE3B,EAIAvF,EAAM2gQ,iBAAmB,SAAUzuQ,EAAO7hB,GACtC,IAAI0E,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAI6wR,EAAUjxR,EAAGixR,QAASvmR,EAAc1K,EAAG0K,YAAawqR,EAAcl1R,EAAGk1R,YACrI7gQ,EAAO48P,EAAUA,EAAQ58P,KAAO,EAChCtoB,GAAmB,IAAXoR,QAAgC1hB,IAAhBy5R,EACxBA,EAAcp0R,EAAKqc,EAAQkX,GAC3B68P,IAAejF,EAAAA,EAAAA,IAAQlgR,EAAMkf,EAAMjd,MAAOtD,GAC9CugB,EAAM6gQ,gBAAgB//Q,EAAMzQ,GACxB41R,GACAjmQ,EAAM0rG,KAAKw6J,6BAA6BplR,EAAMzQ,EAEtD,EACA2vB,EAAMomQ,aAAe,SAAUzgQ,GAC3B3F,EAAM/iB,SAAW0oB,EACjB3F,EAAM0rG,KAAKvoG,QAAUwC,CACzB,EACA3F,EAAMyqQ,YAAc,SAAU1nR,GAE1B,OAAQlS,EAAAA,cAAoB,SAAU,CAAEuC,KAAM4sB,EAAMxkB,MAAMpI,KAAM/B,IAAK,SAAUy3B,GAAM9I,EAAMoqQ,QAAUthQ,CAAI,EAAGD,UAAW,EAAG,eAAe,EAAMvrB,MAAO0iB,EAAMxkB,MAAMrI,MAAOnC,MAAO,CAAE0hB,QAAS,EAAG/a,MAAO,EAAGoJ,OAAQ,EAAG3J,QAAS,EAAGH,SAAU,WAAY+V,KAAM,QACvPnc,EAAAA,cAAoB,SAAU,CAAEkS,MAAOid,EAAMxkB,MAAMkvR,SAAW1qQ,EAAMxkB,MAAMkvR,SAAS3mQ,UAAKvzB,EAAWuS,GAASA,IACpH,EACAid,EAAM0jQ,oBAAsB,WACxB,IAAI3uR,EACAI,EAAK6qB,EAAMxkB,MAAOkF,EAASvL,EAAGuL,OAAQiyB,EAASx9B,EAAGw9B,OAAQ1Z,EAAM9jB,EAAG8jB,IAAKzjB,EAAKL,EAAGU,KAAMA,OAAc,IAAPL,EAAgB,GAAKA,EAAIqB,EAAO1B,EAAG0B,KAAMqqR,EAAa/rR,EAAG+rR,WAAYoD,EAA8BnvR,EAAGmvR,4BAA6B57P,EAAOvzB,EAAGuzB,KAC1OgjG,EAAO1rG,EAAM0rG,KACbr0F,EAAgBq0F,EAAK64J,mBACrBpgR,OAAgC3T,IAAvBwvB,EAAMxkB,MAAM2I,OAAuB6b,EAAMxkB,MAAM2I,OAAS6b,EAAM3vB,MAAM8T,OAC7EqgR,OAAqCh0R,IAAxB6mC,EAAc1/B,MAAsB0/B,EAAc1/B,MAAQ+zH,EAAK84J,WAC5EmG,EAAqB,CACrB1xQ,SAAazoB,IAARyoB,EAAoBA,EAAMyyG,EAAKg5J,cACpC/sR,MAAO6sR,EACPntP,cAAe,CACXhB,YAAY3J,EAAAA,EAAAA,GAAW2K,EAAchB,WAAY,mBAAoB,wBACrEllC,UAAWkmC,EAAclmC,UACzBo3B,QAAS8O,EAAc9O,QACvB6N,OAAQpW,EAAM2F,QACd6B,KAAMrjB,EACN2yB,OAAQ9W,EAAMmmQ,cACd/+Q,QAAS4Y,EAAM4qQ,cACftzP,SAAUD,EAAcC,UAE5BqtP,WAAY,CAAC9uR,EAAKsJ,SAElB0/D,EAAQ7+C,EAAM3vB,MAAMwuE,MAIxB,YAHcruE,IAAVquE,QAAsCruE,IAAf0wR,IACvBriN,GAAQ+hN,EAAAA,EAAAA,IAAa/qR,EAAK,GAAIqrR,IAE1BrwR,EAAAA,cAAoB4zR,EAAAA,EAAetyQ,EAAS,CAAC,EAAGw4Q,GACpD3qQ,EAAM6qQ,mBACNnqR,GAAU7P,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iBAAmBuP,GACrE7P,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,UAAW33B,EAAK,CAAC,EAAGA,EAAG,UAAUyM,OAAOm0B,EAAQ9+B,IAASA,IAASA,EAAM9B,EAAG,kBAAoBirB,EAAM0rG,KAAKw7J,GAAGtnR,QAAS7K,KACrKirB,EAAM8qQ,qBACLpiQ,GAAQm2C,GAAyB,IAAhBhpE,EAAKsJ,QAAgBtO,EAAAA,cAAoB+zR,EAAAA,EAAmB,CAAE/lN,MAAOA,EAAOgmN,UAAW,SAAUxyR,OAAQiyR,IAC3HtkQ,EAAM8kQ,cACVnyP,GAAU9hC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iBAAmBwhC,GAC7E,EACA3S,EAAM8kQ,WAAa,WACf,IAAI/vR,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgO,EAAYpO,EAAGoO,UAAW1D,EAAc1K,EAAG0K,YAAajK,EAAKT,EAAGixR,QAASA,OAAiB,IAAPxwR,EAAgB,CAAE4zB,KAAM,GAAM5zB,EAAIwvR,EAAwBjwR,EAAGiwR,sBAAuBD,EAAmBhwR,EAAGgwR,iBAAkB1oC,EAAatnP,EAAGsnP,WAC/R6qC,EAAKlnQ,EAAM0rG,KAAKw7J,GAChB99P,EAAO48P,EAAQ58P,KACfjlB,OAAgC3T,IAAvBwvB,EAAMxkB,MAAM2I,OAAuB6b,EAAMxkB,MAAM2I,OAAS6b,EAAM3vB,MAAM8T,OAC7EkzB,EAAgBrX,EAAM0rG,KAAK64J,mBAC3B7vL,EAAY,cAAclzF,OAAO0lR,EAAGxyL,UAAW,OACnD,OAAQ7jG,EAAAA,cAAoBo0R,EAAAA,EAAM,CAAEv0R,GAAIsvB,EAAM0rG,KAAKw4J,UAAW18P,KAAMrjB,EAAQtO,KAAMA,EAAKqW,QAASwuO,aAAc16N,EAAMsmQ,kBAAmBvjR,MAAOid,EAAMjd,MAAOI,UAAWA,EAAWg2O,WAAY15O,EAAa0lR,YAAanlQ,EAAM0rG,KAAKj6F,KAAMyvP,WAAYlhQ,EAAMxkB,MAAM0lR,WAAY2D,UAAW,SAAUnpC,QAAS,SAAUhzN,GAAQ,OAAOw+P,EAAGx+P,KAAO1I,EAAM0rG,KAAKhjG,KAAOA,CAAM,EAAG8wC,aAAc,CAAExgE,UAAWq+B,EAAc1+B,QAAUysR,gBAAiB,iBAAkB3pG,UAAWyrG,EAAGtnR,QAAU,CAAE6oB,UAAWisE,QAAclkG,EAAWo4B,IAAK,UAAWQ,KAAMA,EAAMz2B,QAASqtB,EAAM++N,gBAAiB1C,WAAYA,EAAY2oC,sBAAuBA,EAAuBK,aAAcN,EAAkBnjB,SAAU5hP,EAAM4hP,SAAU8nB,WAAYxC,EAAGyC,YAAaC,SAAU5pQ,EAAM0rG,KAAKm+J,uBAC7uB,EACA7pQ,EAAM4hP,SAAW,SAAUpwQ,GACvB,IAAIuD,EAAKirB,EAAM0rG,KAAMw7J,EAAKnyR,EAAGmyR,GAAIx+P,EAAO3zB,EAAG2zB,KAC3Cw+P,EAAGC,cAAc31R,GACjB,IAAI0vR,EAAalhQ,EAAMxkB,MAAM0lR,WACzB/rR,EAAK6qB,EAAMxkB,MAAM3F,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EACvD,GAAK+rR,GAAerrR,EAAKsJ,QAGrB+hR,EAAY,CAOZ,IANA,IAAI9+P,EAAapC,EAAMoC,WACnBpC,EAAMoC,aAAe8kQ,EAAGtnR,QAAUsnR,EAAG9kQ,WAAcsG,EAAOA,EAAK33B,SAAS,GAAGsyB,aAAe,GAE1FnmB,EADS1L,EAAMkmB,OACIxa,UAAagqR,EAAG99P,KAAOhH,EAE1Cy8C,GADJhpE,EAAOmqB,EAAM0rG,KAAKy1J,yBAAyBtrR,EAAMqrR,IAChC,GAAGA,GACX1jR,EAAI,EAAGA,EAAI3H,EAAKsJ,UACjBijB,EAAa5kB,EAAIN,GADQM,IAIzB3H,EAAK2H,IAAM3H,EAAK2H,GAAG0jR,KACnBriN,EAAQhpE,EAAK2H,GAAG0jR,IAGpBriN,IAAU7+C,EAAM3vB,MAAMwuE,OACtB7+C,EAAM6L,SAAS,CACXgzC,MAAOA,GAGnB,CACJ,EACA7+C,EAAM6qQ,iBAAmB,WACrB,IAAIE,OAAoCv6R,IAAvBwvB,EAAMxkB,MAAM4E,OAAuB4f,EAAMxkB,MAAM4E,OAAS4f,EAAM3vB,MAAMgL,KACrF,OAAO2kB,EAAMxkB,MAAM8D,YAAezO,EAAAA,cAAoBm2R,EAAAA,EAAY,CAAEjkR,MAAOgoR,EAAY15R,IAAK,SAAU+O,GAAU,OAAO4f,EAAMsqQ,aAAelqR,GAAUA,EAAOulB,OAAS,EAAG7iB,SAAUkd,EAAMgrQ,uBAAwBjiQ,UAAW/I,EAAM0H,cAAe7wB,KAAMmpB,EAAMxkB,MAAM3E,KAAM+9B,QAAS5U,EAAMxkB,MAAMo5B,QAASnzB,SAAUue,EAAMxkB,MAAMiG,UACjU,EACAue,EAAM8qQ,kBAAoB,WACtB,IAAI/1R,EAAKirB,EAAMxkB,MAAO2H,EAAYpO,EAAGoO,UAAW8mR,EAAcl1R,EAAGk1R,YAAaxqR,EAAc1K,EAAG0K,YAC/F,YAAuBjP,IAAhBy5R,GAA8Bp5R,EAAAA,cAAoBm5R,EAAiB,CAAEC,YAAaA,EAAa9mR,UAAWA,EAAWpG,UAAUikR,EAAAA,EAAAA,IAAQhhQ,EAAMjd,MAAOknR,EAAaxqR,GAAcmpB,IAAK,iBAAkBj2B,QAASqtB,EAAMirQ,wBAChO,EACAjrQ,EAAM0lC,OAAS,SAAUl0D,GACrBu6B,aAAa/L,EAAMkrQ,gBACdlrQ,EAAMxkB,MAAM8D,aACb0gB,EAAMkrQ,eAAiB70R,OAAOi3B,YAAW,WAAc,OAAOtN,EAAMmqQ,YAAY1qL,KAAO,EAAI,GAAGz/E,EAAMxkB,MAAM67L,OAC1Gr3K,EAAMmrQ,WAAW35R,GAEzB,EACAwuB,EAAMmrQ,WAAa,SAAU35R,GACzB,IASIy4R,EATAl1R,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIsK,EAAc1K,EAAG0K,YACjF2rR,EAAav1R,EAAK0H,KAAI,SAAUuD,EAAMM,GACtC,MAAO,CAAEN,KAAMA,EAAMimB,UAAW3lB,EACpC,IACIq+F,EAAOz/E,EAAMmqQ,YAAY1qL,KACzB7+E,EAAOZ,EAAMmqQ,YAAYvpQ,KACzByqQ,GAAWC,EAAAA,EAAAA,IAAc7rL,EAAM7+E,GAC/B2qQ,EAAaH,EAAWjsR,OACxBkrJ,EAAaj4I,KAAKI,IAAI,EAAG3c,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGwiB,EAAMjd,MAAOtD,EAAc,KAEpGugB,EAAMxkB,MAAMyuR,cACZA,EAAc,CAAEnpR,KAAMkf,EAAMxkB,MAAMyuR,YAAaljQ,WAAY,GAC3DwkQ,GAAc,EACdlhI,GAAc,GAElBA,GAAcghI,EAAW,EAAI,EAC7BD,GAAaI,EAAAA,EAAAA,IAAYJ,EAAY/gI,EAAY4/H,GAGjD,IAFA,IAAI5uR,EAAMowR,EAAWC,EAAWx5Q,EAAQ,EACpC1c,EAAKwqB,EAAMxkB,MAAO2H,EAAY3N,EAAG2N,UAAWyvE,EAAap9E,EAAGo9E,WACzD1gE,EAAQq5Q,EAAYr5Q,IAIvB,GAHA7W,GAAOulR,EAAAA,EAAAA,IAAawK,EAAWl5Q,GAAOpR,KAAMqC,GAC5CsoR,EAAYJ,IAAYM,EAAAA,EAAAA,IAAUtwR,EAAMulB,EAAMgyD,GAC9C84M,GAAYC,EAAAA,EAAAA,IAAUtwR,EAAMokG,EAAM7sB,GAC9B64M,GAAaC,EAAW,CACxBx5Q,EAAQk5Q,EAAWl5Q,GAAO6U,UAC1B,KACJ,CAEJ,GAAI7U,IAAUq5Q,EAAY,CACtB,IAAIl7R,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EACvBwuB,EAAM2gQ,iBAAiBzuQ,EAAO7hB,GAC9B2vB,EAAMgiQ,WAAW3xR,GACjB2vB,EAAMohQ,0BAAuB5wR,CACjC,CACJ,EACAwvB,EAAM0H,cAAgB,SAAUl2B,GAE5BA,GAASA,EAAMs+B,iBAAmBt+B,EAAMs+B,kBACxC,IAAI/6B,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAImK,EAAavK,EAAGuK,WAAY9H,EAAWzC,EAAGyC,SAAUyyR,EAAcl1R,EAAGk1R,YAAaz0R,EAAKT,EAAG62R,wBAAyBA,OAAiC,IAAPp2R,GAAuBA,EAAIG,EAAKZ,EAAGixR,QAASA,OAAiB,IAAPrwR,EAAgB,CAAEyzB,KAAM,EAAGvK,MAAO,EAAGgqQ,SAAU,GAAMlzR,EAAI8J,EAAc1K,EAAG0K,YAAa1J,EAAKhB,EAAGmsR,WAAYA,OAAoB,IAAPnrR,EAAgB,GAAKA,EAAIoN,EAAYpO,EAAGoO,UAAWlN,EAAKlB,EAAGotR,kBAAmBA,OAA2B,IAAPlsR,GAAuBA,EACpf8M,EAAQid,EAAMjd,MACd+b,EAAgBjpB,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGuF,EAAOtD,EAAc,IACrF0E,OAAgC3T,IAAvBwvB,EAAMxkB,MAAM2I,OAAuB6b,EAAMxkB,MAAM2I,OAAS6b,EAAM3vB,MAAM8T,OAC7EwjB,EAAUn2B,EAAMm2B,QAChBkkQ,EAAgBlkQ,IAAYtD,EAAAA,EAAKE,MAAQoD,IAAYtD,EAAAA,EAAKC,IAC1DwnQ,EAAenkQ,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKI,KACvDsnQ,GAAc5nR,IACZ3S,EAAM0+B,QAAUvI,IAAYtD,EAAAA,EAAKI,MAASkD,IAAYtD,EAAAA,EAAK8L,OAASxI,IAAYtD,EAAAA,EAAKytB,OACvFk6O,EAAc7nR,IAAY3S,EAAM0+B,QAAUvI,IAAYtD,EAAAA,EAAKG,IAAOmD,IAAYtD,EAAAA,EAAKiP,KACnF24P,EAAkBL,IAA4BjkQ,IAAYtD,EAAAA,EAAKrX,MAAQ2a,IAAYtD,EAAAA,EAAKltB,OACxF+0R,EAAiBJ,GAAiBG,IAAoB3sR,GAAeusR,EACrEx7R,EAAQ2vB,EAAM0rG,KAAK41J,YAEvB,GADAjxR,EAAMq/B,eAAiBl+B,GACnBgG,EAAJ,CAGK,GAAIq0R,GAAiB7rQ,EAAM0rG,KAAKw7J,GAAGtnR,QAChC+nB,IAAYtD,EAAAA,EAAKE,KACI,IAAjByhQ,EAAQ58P,MACRpJ,EAAM0rG,KAAKygK,oBAAoB97R,EAAO,EAAG21R,EAAQ6C,UACjD7oQ,EAAMuqQ,YAAa,GAGnBvqQ,EAAM6gQ,gBAAgBhrR,EAAK,GAAIxF,GAI/B21R,EAAQ58P,KAAO48P,EAAQnnQ,MAAQmnQ,EAAQ6C,UACvC7oQ,EAAM0rG,KAAKygK,oBAAoB97R,EAAO21R,EAAQnnQ,MAAQmnQ,EAAQ6C,SAAU7C,EAAQ6C,UAChF7oQ,EAAMuqQ,YAAa,GAGnBvqQ,EAAM6gQ,gBAAgBhrR,EAAKA,EAAKsJ,OAAS,GAAI9O,QAIpD,GAAI8T,GAAUwjB,IAAYtD,EAAAA,EAAKkqO,OAChCvuO,EAAM0rG,KAAK22J,uBAAuB,QAEjC,GAAIl+Q,GAAUwjB,IAAYtD,EAAAA,EAAKmqO,SAChCxuO,EAAM0rG,KAAK22J,sBAAsB,QAEhC,GAAIl+Q,GAAUwjB,IAAYtD,EAAAA,EAAK8L,MAAO,CACvC,IAAIuqN,EAAe16N,EAAMsmQ,kBACrBtmQ,EAAMosQ,+BAA+Bv2R,EAAM6kP,IAC3C16N,EAAM6gQ,gBAAgB,KAAMxwR,GAC5B2vB,EAAMgiQ,WAAW3xR,IAGjB2vB,EAAM2gQ,iBAAiBjmC,EAAcrqP,GAEzC2vB,EAAM0rG,KAAKu1J,YAAY5wR,GACvBmB,EAAM+gB,gBACV,MACK,GAAIw5Q,GAAcC,EACfA,GACAhsQ,EAAMqsQ,2BAEVrsQ,EAAM0rG,KAAKu1J,YAAY5wR,GACvBmB,EAAM+gB,sBAEL,GAAI25Q,EAAgB,CAErB,GADAlsQ,EAAMwqQ,uBAAwB,EACX,KAAftJ,GAAqB/9Q,EACrB,IAAKg/Q,GAAqBh+Q,EACtB6b,EAAMsiQ,WAAWjyR,EAAOs3B,OAEvB,CACD,IAAIw0I,OAAW3rK,EACf,GAAIm3B,IAAYtD,EAAAA,EAAKI,MAAQkD,IAAYtD,EAAAA,EAAKltB,MAAO,CACjD,IAAIorR,EAAiB1sR,EAAKqW,MAAM4S,EAAgB,GAAGtT,MAAK,SAAUhO,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,IAC3Gg5J,EAAWomH,GAAkB1sR,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAeo/Q,EAAep/Q,EAAY,GACpH,MACK,GAAIwkB,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKrX,KAAM,CACnD,IAAIw1Q,OAAe,EACnB,GAAsB,IAAlB1jQ,GAAuBmrQ,EACvB9tH,GAAY,OAEX,IAAuB,IAAnBr9I,EACL0jQ,EAAe3sR,EACfsmK,EAAWtmK,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,QAE5E,CAGD,IADA,IAAIs/Q,GADJD,EAAe3sR,EAAKqW,MAAM,EAAG4S,IACKw9B,MAC3BmmO,GAAkBA,EAAejrR,UACpCirR,EAAiBD,EAAalmO,MAElC6/G,EAAWsmH,GAAkB5sR,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAes/Q,EAAet/Q,EAAY,GACpH,CACJ,CACA,QAAiB3S,IAAb2rK,EAAwB,CACxB,IAAIumH,EAAYvmH,EAAWr9I,EAC3BkB,EAAMsiQ,WAAWjyR,EAAOs3B,EAAS+6P,EACrC,WACsBlyR,IAAb2rK,GAA0BtmK,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAeJ,EAAMI,EAAY,MAAOtN,EAAKsJ,OAAS,GAC9H6gB,EAAMsiQ,WAAWjyR,EAAOs3B,EAEhC,MAEC,IAAKw6P,GAAqBh+Q,GAAU0nR,EACrC7rQ,EAAMsiQ,WAAWjyR,EAAOs3B,QAEvB,GAAIxkB,EAAW,CACZg5J,OAAW3rK,EACf,GAAIm3B,IAAYtD,EAAAA,EAAKI,MAAQkD,IAAYtD,EAAAA,EAAKltB,MAAO,CACjD,IAAIm1R,EAAiBz2R,EAAKqW,MAAM4S,EAAgB,GAAGtT,MAAK,SAAUhO,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,IAC3Gg5J,EAAWmwH,GAAkBz2R,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAempR,EAAenpR,EAAY,GACpH,MACK,GAAIwkB,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKrX,KAAM,CACnD,IAAI21Q,OAAW,EACf,GAAsB,IAAlB7jQ,GAAuBmrQ,EACvB9tH,GAAY,OAEX,IAAuB,IAAnBr9I,EACL6jQ,EAAW9sR,EACXsmK,EAAWtmK,EAAK2V,MAAK,SAAUhO,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,QAEvE,CAGD,IADA,IAAIopR,GADJ5J,EAAW9sR,EAAKqW,MAAM,EAAG4S,IACKw9B,MACvBiwO,GAAkBA,EAAe/0R,UACpC+0R,EAAiB5J,EAASrmO,MAE9B6/G,EAAWowH,GAAkB12R,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAeopR,EAAeppR,EAAY,GACpH,CACJ,CACA,QAAiB3S,IAAb2rK,EAAwB,CACpBumH,EAAYvmH,EAAWr9I,EAC3BkB,EAAMsiQ,WAAWjyR,EAAOs3B,EAAS+6P,EACrC,WACsBlyR,IAAb2rK,GAA0BtmK,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAeJ,EAAMI,EAAY,MAAOtN,EAAKsJ,OAAS,GAC9H6gB,EAAMsiQ,WAAWjyR,EAAOs3B,EAEhC,MAEI3H,EAAMsiQ,WAAWjyR,EAAOs3B,GAE5Bn2B,EAAM+gB,gBACV,CACAyN,EAAMgiQ,WAAW3xR,EADjB,CAEJ,EACA2vB,EAAM++N,gBAAkB,SAAU7sO,EAAO1gB,GACrCwuB,EAAM0rG,KAAKqzH,gBAAgB7sO,EAAO1gB,GAClCwuB,EAAMohQ,0BAAuB5wR,CACjC,EACAwvB,EAAMiH,YAAc,SAAUz1B,GACtBwuB,EAAMqqQ,iBAGVrqQ,EAAM0rG,KAAKzkG,YAAYz1B,EAC3B,EACAwuB,EAAMmH,WAAa,SAAU31B,GACzB,IAAIwuB,EAAMqqQ,iBAAoBrqQ,EAAM3vB,MAAM8iC,QAA1C,CAGA,IAAIhvB,OAAgC3T,IAAvBwvB,EAAMxkB,MAAM2I,OAAuB6b,EAAMxkB,MAAM2I,OAAS6b,EAAM3vB,MAAM8T,OAC7E0vB,EAAW7T,EAAMxkB,MAAMq4B,SACvB9+B,EAAKirB,EAAM3vB,MAAM8hC,YACjBy2P,QADmD,IAAP7zR,EAAgB,EAAIA,IAChC6+B,EAAAA,GAAwBC,EACxDxjC,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EACvBnB,EAAMwF,KAAKs9B,SAAU,EACrB9iC,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,WACtBqN,GACA6b,EAAMqsQ,2BAENloR,IAAWykR,GACX5oQ,EAAM0rG,KAAKu1J,YAAY5wR,GAE3B2vB,EAAMgiQ,WAAW3xR,EAfjB,CAgBJ,EACA2vB,EAAMirQ,uBAAyB,SAAUz5R,GACrC,IAAInB,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EACvBwuB,EAAM0rG,KAAKu1J,YAAY5wR,GACvB2vB,EAAM6gQ,gBAAgB7gQ,EAAMxkB,MAAMyuR,YAAa55R,GAC/C2vB,EAAMgiQ,WAAW3xR,EACrB,EACA2vB,EAAMwsQ,mBAAqB,SAAUh7R,GACjC,IAAIA,EAAMi7R,uBAAV,CAGA,IAAIp8R,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EAClBwuB,EAAM3vB,MAAM8iC,UACb9iC,EAAMwF,KAAKs9B,SAAU,GAEzBnT,EAAMqsQ,2BACNrsQ,EAAM0rG,KAAKu1J,YAAY5wR,GACvB2vB,EAAMgiQ,WAAW3xR,EARjB,CASJ,EACA2vB,EAAM0sQ,eAAiB,SAAUl7R,GAC7B,IAAIwuB,EAAMxkB,MAAM8D,YAA8B,IAAhB9N,EAAMygN,OAAezgN,EAAMm2B,UAAYtD,EAAAA,EAAK8L,MAA1E,CAGA,IAAIszM,EAAYx/M,OAAO2iF,aAAap1G,EAAM4kM,UAAY5kM,EAAMm2B,SACxD3H,EAAMxkB,MAAMo3E,aACZ6wJ,EAAYA,EAAU3wL,eAER,MAAd2wL,GACAjyO,EAAM+gB,iBAEVyN,EAAMmqQ,YAAc,CAChB1qL,KAAMz/E,EAAMmqQ,YAAY1qL,KAAOgkI,EAC/B7iN,KAAMZ,EAAMmqQ,YAAYvpQ,KAAO6iN,GAEnCzjN,EAAM0lC,OAAOl0D,EAZb,CAaJ,EACAwuB,EAAMgrQ,uBAAyB,SAAUx5R,GACrC,IAAInB,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EAAMk+B,oBACFl/B,IAAvBwvB,EAAMxkB,MAAM4E,SACZ/P,EAAMwF,KAAKwF,KAAO7J,EAAMkmB,OAAO3U,OAEnCid,EAAM0rG,KAAKk7J,cAAcp1R,EAAMkmB,OAAO3U,MAAO1S,GAC7C2vB,EAAMwqQ,uBAAwB,EAC9BxqQ,EAAMgiQ,WAAW3xR,GACjB2vB,EAAM6L,SAAS,CAAEgzC,WAAOruE,GAC5B,EACAwvB,EAAMmmQ,cAAgB,WACdnmQ,EAAMsqQ,cACNtqQ,EAAMi9N,aAAaj9N,EAAMsqQ,cAEzBtqQ,EAAMxkB,MAAMq4B,UACZvG,YAAW,WACHtN,EAAMsqQ,cACNtqQ,EAAMi9N,aAAaj9N,EAAMsqQ,aAEjC,GAAG,IAEX,EACAtqQ,EAAM4qQ,cAAgB,WACd5qQ,EAAM3vB,MAAM8iC,SACZ98B,OAAOi3B,YAAW,WACVtN,EAAM3vB,MAAM8iC,SAAWnT,EAAM0rG,KAAKvoG,SAClCnD,EAAMi9N,aAAaj9N,EAAM0rG,KAAKvoG,QAEtC,GAER,EACAnD,EAAM0vP,YAAc,WACZ1vP,EAAMoqQ,SAAWpqQ,EAAMoqQ,QAAQza,mBAC/B3vP,EAAMoqQ,QAAQza,kBAAkB3vP,EAAMmV,SAASjB,MACzC,GACAlU,EAAMxkB,MAAMw4B,mBA7aT,uCA+ajB,GACAR,EAAAA,EAAAA,GAAgBC,EAAAA,GACTzT,CACX,CAiXA,OA7xBAuD,EAAU2mQ,EAA4BplQ,GA6atC7kB,OAAO6nB,eAAeoiQ,EAA2B1sQ,UAAW,WAAY,CACpEuK,IAAK,WACD,GAAKrF,EAAAA,EAIL,OAAQpF,KAAKqI,SAAWrI,KAAKqI,QAAQgO,eAAkB7nB,QAC3D,EACAkc,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeoiQ,EAA2B1sQ,UAAW,UAAW,CAInEuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeoiQ,EAA2B1sQ,UAAW,QAAS,CAIjEuK,IAAK,WACD,IAAIhlB,EAgBJ,YAfkCvS,IAA9B8sB,KAAK8jQ,qBACLr+Q,EAAQua,KAAK8jQ,0BAEa5wR,IAArB8sB,KAAK9hB,MAAMuH,MAChBA,EAAQua,KAAK9hB,MAAMuH,WAEOvS,IAArB8sB,KAAKjtB,MAAM0S,MAChBA,EAAQua,KAAKjtB,MAAM0S,WAEcvS,IAA5B8sB,KAAK9hB,MAAM3H,eAChBkP,EAAQua,KAAK9hB,MAAM3H,eAElBi9E,EAAAA,EAAAA,IAAU/tE,SAAqCvS,IAA3B8sB,KAAK9hB,MAAMyuR,cAChClnR,EAAQua,KAAK9hB,MAAMyuR,aAEhBlnR,CACX,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeoiQ,EAA2B1sQ,UAAW,QAAS,CAIjEuK,IAAK,WACD,IAAIhzB,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIsK,EAAc1K,EAAG0K,YAChFsD,EAAQua,KAAKva,MAEjB,OAAOlN,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGuF,EAAOtD,EAAc,GAChF,EACAuoB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeoiQ,EAA2B1sQ,UAAW,OAAQ,CAIhEuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMpI,IACtB,EACA40B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeoiQ,EAA2B1sQ,UAAW,WAAY,CAIpEuK,IAAK,WACD,IAAIgM,OAA+CvjC,IAAjC8sB,KAAK9hB,MAAMw4B,kBACzBviC,GAAY6rB,KAAK2W,UACE,OAAf3W,KAAKva,OAAiC,KAAfua,KAAKva,YAA+BvS,IAAf8sB,KAAKva,MAEzD,MAAO,CACHgxB,YAAaA,EACbG,WAH6B1jC,IAArB8sB,KAAK9hB,MAAM04B,MAAsB5W,KAAK9hB,MAAM04B,MAAQziC,EAI5D4iC,aAA6B,OAAf/W,KAAKva,MAE3B,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeoiQ,EAA2B1sQ,UAAW,iBAAkB,CAC1EuK,IAAK,WACD,YAAqCv3B,IAA9B8sB,KAAK9hB,MAAM84B,eACZhX,KAAK9hB,MAAM84B,eACX41P,EAA2BvjQ,aAAa2N,cAClD,EACAtM,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeoiQ,EAA2B1sQ,UAAW,WAAY,CAIpEuK,IAAK,WACD,YAA+Bv3B,IAAxB8sB,KAAK9hB,MAAMy4B,SACZ3W,KAAK9hB,MAAMy4B,SACXi2P,EAA2BvjQ,aAAasN,QAClD,EACAjM,YAAY,EACZC,cAAc,IAKlBiiQ,EAA2B1sQ,UAAU8K,mBAAqB,SAAUukB,EAAWw2J,GAC3E,IAAItuM,EACAI,EAAKmoB,KAAK9hB,MAAOiE,EAActK,EAAGsK,YAAaumR,EAAU7wR,EAAG6wR,QAASxwR,EAAKL,EAAG+rR,WAAYA,OAAoB,IAAP1rR,EAAgB,GAAKA,EAAI2N,EAAYhO,EAAGgO,UAC9IxN,EAAK2nB,KAAK9hB,MAAM3F,KAAMA,OAAc,IAAPF,EAAgB,GAAKA,EAClDmyR,EAAYj7O,EAAUm5O,QAAUn5O,EAAUm5O,QAAQnnQ,MAAQ,EAC1D1a,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1E6+Q,OAAkCxyR,IAArBq8C,EAAU1oC,OAAuB0oC,EAAU1oC,OAASk/L,EAAUl/L,OAC3E8+Q,GAAWD,GAAc7+Q,EAU7B,GARKmZ,KAAKouG,KAAK64J,mBAAmBh8P,SAC1B06P,GACA3lQ,KAAK6oQ,gBAMTH,GAAWA,EAAQnnQ,QAAUipQ,EAC7BxqQ,KAAKouG,KAAKw7J,GAAGe,0BACb3qQ,KAAKouG,KAAKw7J,GAAGt6M,YAEZ,CACD,IAAI+/M,EAAiBrvQ,KAAKva,MACtBmlR,OAAuC13R,IAApBq8C,EAAU9pC,MAAsB8pC,EAAU9pC,MAAQsgM,EAAUtgM,MAC/EolR,EAAoBtyR,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGmvR,EAAgBltR,EAAc,IACnF,KAAfyhR,GAAqByL,GAAkBxpR,IACvCglR,EAAoF,QAA/DpzR,EAAKuoB,KAAKouG,KAAKy1J,yBAAyBtrR,EAAMqrR,UAAgC,IAAPnsR,OAAgB,EAASA,EAAGwI,KAAI,SAAUurB,GAAM,OAAOA,EAAG3lB,EAAY,IAAGo1B,QAAQo0P,EAAexpR,KAEhM,IAAIilR,IAAuBpH,EAAAA,EAAAA,IAAQkH,EAAkByE,EAAgBltR,GACjEwjR,GAAW+C,EACX1oQ,KAAKouG,KAAK28J,oBAAoBrC,EAASmC,GAElClF,IAAY+C,GACjB1oQ,KAAK6oQ,gBAEDtwR,GAAwB,IAAhBA,EAAKsJ,QACbme,KAAKouG,KAAK03J,uBAAuBvtR,EAAK,GAAGqrR,GAAa5jQ,MAE1DA,KAAKouG,KAAKw3J,aAAaiF,IAElBhkR,GAAU6+Q,GAAc2J,GAAkBvE,IAAwB9qQ,KAAKitQ,WAC5EjtQ,KAAKouG,KAAKw3J,aAAaiF,GAElBhkR,GAAU6+Q,GAAc1lQ,KAAKitQ,aAC9BjtQ,KAAKitQ,YAAcvE,GAA4B,IAAjBA,EAAQ58P,KACtC9L,KAAKouG,KAAKw7J,GAAGt6M,QAERtvD,KAAKitQ,YAAcvE,GAAWA,EAAQ58P,OAAS48P,EAAQnnQ,MAAQmnQ,EAAQ6C,UAC5EvrQ,KAAKouG,KAAKw7J,GAAG0F,cAGzB,CACAtvQ,KAAKitQ,YAAa,EAClBjtQ,KAAKoyP,aACT,EAIAwa,EAA2B1sQ,UAAU4K,kBAAoB,WACrD,IAAIrzB,EACJuoB,KAAKiX,eAAiB7R,EAAAA,GAAarsB,OAAOm+B,gBAAkB,IAAIn+B,OAAOm+B,eAAelX,KAAKmX,eAAetI,KAAK7O,OAC/GA,KAAKouG,KAAK23J,WACV/lQ,KAAKoyP,eACyB,QAAxB36Q,EAAKuoB,KAAKxR,gBAA6B,IAAP/W,OAAgB,EAASA,EAAG4X,OAAS2Q,KAAKiX,gBAC5EjX,KAAKiX,eAAeG,QAAQpX,KAAKxR,SAASa,KAElD,EAEAu9Q,EAA2B1sQ,UAAU6O,qBAAuB,WACxD,IAAIt3B,GAC0B,QAAxBA,EAAKuoB,KAAKxR,gBAA6B,IAAP/W,OAAgB,EAASA,EAAG4X,OAAS2Q,KAAKiX,gBAC5EjX,KAAKiX,eAAeI,YAE5B,EAIAu1P,EAA2B1sQ,UAAUnrB,OAAS,WAC1C,IAAI0C,EACAirB,EAAQ1C,KACRuvQ,GAAejgQ,EAAAA,EAAAA,IAA2BtP,MAAMwP,iBAAiBggQ,EAAAA,GAA+B9/P,EAAAA,GAAS8/P,EAAAA,KACzG33R,EAAKmoB,KAAK9hB,MAAOxK,EAAQmE,EAAGnE,MAAOG,EAAYgE,EAAGhE,UAAWgC,EAAQgC,EAAGhC,MAAO8lB,EAAM9jB,EAAG8jB,IAAK+sQ,EAAU7wR,EAAG6wR,QAASnvR,EAAO1B,EAAG0B,KAAM+9B,EAAUz/B,EAAGy/B,QAASnzB,EAAWtM,EAAGsM,SAAUoyB,EAAW1+B,EAAG0+B,SAC/Lr+B,EAAK8nB,KAAKjtB,MAAM8hC,YAAaA,OAAqB,IAAP38B,EAAgB,EAAIA,EAC/D2O,OAA+B3T,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAC1EpB,EAAQua,KAAKva,MACb1H,GAAOulR,EAAAA,EAAAA,IAAa79Q,EAAOua,KAAK9hB,MAAM2H,WACtC1R,GAAW6rB,KAAKgX,gBAAkBhX,KAAK6X,SAASjB,MAChDw3F,EAAOpuG,KAAKouG,KACZw7J,EAAKx7J,EAAKw7J,GACV0B,EAAiBz2P,GAAeyB,EAAAA,GAAwBC,EAC5DqzP,EAAGtnR,aAAsBpP,IAAZw1R,OACGx1R,IAAZw1R,IACAt6J,EAAKw7J,GAAG99P,KAAO48P,EAAQ58P,KACvBsiG,EAAKw7J,GAAGroQ,MAAQmnQ,EAAQnnQ,MACxB6sG,EAAKw7J,GAAG2B,SAAW7C,EAAQ6C,UAE/B,IAAIlzR,EAAK2nB,KAAK9hB,MAAOiE,EAAc9J,EAAG8J,YAAa1J,EAAKJ,EAAGE,KAAMA,OAAc,IAAPE,EAAgB,GAAKA,EAAIyB,EAAW7B,EAAG6B,SAAUqxB,EAAWlzB,EAAGkzB,SAAU3M,EAAUvmB,EAAGumB,QAASwsQ,EAAgB/yR,EAAG+yR,cAAerE,EAAc1uR,EAAG0uR,YACtNlxP,EAAU7V,KAAKjtB,MAAM8iC,QACrBrU,EAAgBjpB,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGuF,EAAOtD,EAAc,IACrFstR,EAAyBl8R,EAAAA,cAAoB,OAAQ,CAAEH,GAAI4sB,KAAKkyP,SAAUr+Q,UAAW,iBACrFN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,sBAAwBkK,IACjE2xR,OAA+Bx8R,IAAhB6zR,EACfA,EAAYtgQ,UAAKvzB,EAAWu8R,EAAuBhqR,GAASgqR,EAC5DE,EAAgBp8R,EAAAA,cAAoBA,EAAAA,SAAgB,KACpDA,EAAAA,cAAoB,OAAQ,CAAEQ,IAAKisB,KAAK8oQ,aAAcj1R,WAAWu7B,EAAAA,EAAAA,GAAW,0BAA2Bv7B,GAAY4D,EAAK,CAAC,EACjHA,EAAG,YAAYyM,OAAOm0B,EAAQ9+B,IAASA,IAASA,EAChD9B,EAAG,aAAayM,OAAOo0B,EAAWhB,IAAYA,IAAYA,EAC1D7/B,EAAG,YAAYyM,OAAOC,IAAaA,EACnC1M,EAAG,WAAao+B,EAChBp+B,EAAG,cAAgByC,EACnBzC,EAAG,cAAgBtD,EACnBsD,EAAG,aAAemnB,EAClBnnB,EAAG,cAAgBuoB,KAAK2W,SACxBl/B,IAAM/D,MAAQmC,EAEZgf,EAASA,EAAS,CAAC,EAAGnhB,GAAQ,CAAE2G,WAAOnH,IADvCQ,EACqDioB,IAAKA,EAAKkU,YAAahpB,EAAS,SAAU3S,GACnE,UAA1BA,EAAMkmB,OAAOs+I,WACbh2I,EAAMi9N,aAAaj9N,EAAM0rG,KAAKvoG,SAC9B3xB,EAAM+gB,iBAEd,OAAI/hB,EAAW02B,QAAS5J,KAAK2J,YAAaG,OAAQ9J,KAAK6J,WAAY0B,UAAUkvC,EAAAA,EAAAA,GAAYlvC,EAAUrxB,GAAWukP,UAAWz+N,KAAK9hB,MAAMugP,UAAWhzN,UAAWzL,KAAKoK,cAAewlQ,WAAY5vQ,KAAKovQ,eAAgB/5R,QAAS6E,OAAWhH,EAAY8sB,KAAKkvQ,mBAAoBn3R,KAAM,WAAY,gBAAiBioB,KAAK2W,SAAU,gBAAiBz8B,QAAYhH,EAAW,gBAAiB,UAAW,gBAAiB2T,IAAU,EAAO,YAAamZ,KAAKouG,KAAKw4J,UAAW,wBAAyB//Q,EAAU,UAAYmZ,KAAKouG,KAAKj6F,KAAO,KAAO3S,GAAiBknQ,EAAUA,EAAQ58P,KAAO,SAAO54B,EAAW,aAAc8sB,KAAK9hB,MAAMi9O,WAAan7N,KAAK9hB,MAAMrI,MAAO,kBAAmBmqB,KAAK9hB,MAAMs5B,eAAgB,mBAAoBxX,KAAK9hB,MAAMu5B,iBAAmBzX,KAAKkyP,SAAU9+Q,GAAI4sB,KAAK9hB,MAAM9K,GAAI4M,MAAOggB,KAAK9hB,MAAM8B,OACjxB0vR,EACA9wQ,GAAWrrB,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,uBAAwBiC,KAAM,YACpFvC,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,UAAW,EAAG/xB,KAAM,SAAU,aAAc+1R,EAAc,eAAe,EAAMh2R,KAAMA,EAAM4K,SAAUA,EAAU+0O,UAAWkyC,EAAev3R,UAAW,iBAAkByjC,QAAS,KAAMv9B,WAAY,OAAQ3E,KAAOg2R,OAAmCl4R,EAAnB,iBAA8BylC,QAAUyyP,EAAmCprQ,KAAK9hB,MAAMy6B,QAA9BymN,EAAAA,IAAuCvvN,YAAa,SAAUn2B,GAAK,OAAOgpB,EAAM3vB,MAAM8iC,SAAWn8B,EAAEub,gBAAkB,IAC3a+K,KAAKmtQ,YAAY1nR,IAChB6lR,GAAkBtrQ,KAAKomQ,uBAC5BkF,GAAkBtrQ,KAAKyrQ,+BAC3B,OAAO51R,EAAStC,EAAAA,cAAoBkqE,EAAAA,EAAe,CAAE5nE,MAAOA,EAAO6nE,YAAa3/D,EAAMu7B,YAAanlC,EAASolC,eAAgBvZ,KAAK9hB,MAAMhE,SAAUxG,MAAO,CAAE2G,MAAO3G,EAAQA,EAAM2G,WAAQnH,GAAaO,SAAUk8R,IAAmBA,CACrO,EAIA/C,EAA2B1sQ,UAAU8kQ,WAAa,SAAUjyR,EAAOs3B,EAAS+6P,GACxE,IAAI3tR,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAI80R,EAAcl1R,EAAGk1R,YAAaxqR,EAAc1K,EAAG0K,YAAajK,EAAKT,EAAGixR,QAASA,OAAiB,IAAPxwR,EAAgB,CAAE4zB,KAAM,EAAGvK,MAAO,EAAGgqQ,SAAU,GAAMrzR,EAC3M0xR,EAAK5pQ,KAAKouG,KAAKw7J,GACfnkR,EAAQua,KAAKva,MACbmP,EAAQrc,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGuF,EAAOtD,EAAc,IAC7E08J,EAAW7+I,KAAKouG,KAAK/6F,WAAWkN,SAAS,CACzClsC,QAASq0R,EAAQ58P,KAAOlX,EACxBM,KAAM00Q,EAAGtnR,QAAUomR,EAAQnnQ,MAAQhpB,EAAKsJ,QAAU,EAClDkT,SAAqB7hB,IAAhBy5R,GAA6B,EAAI,EACtCtiQ,QAASA,EACT+6P,UAAWA,QAAwBlyR,SAEtBA,IAAb2rK,GACA7+I,KAAKqjQ,iBAAiBxkH,EAAU9rK,GAEpCitB,KAAK0kQ,WAAW3xR,EACpB,EACA65R,EAA2B1sQ,UAAUurQ,4BAA8B,WAC/D,IAAIh0R,EACAirB,EAAQ1C,KACRnoB,EAAKmoB,KAAKjtB,MAAM8hC,YAAaA,OAAqB,IAAPh9B,EAAgB,EAAIA,EAC/DK,EAAK8nB,KAAK9hB,MAAOkF,EAASlL,EAAGkL,OAAQiyB,EAASn9B,EAAGm9B,OAAQ97B,EAAOrB,EAAGqB,KAAM67B,EAAgBl9B,EAAGk9B,cAAewuP,EAAa1rR,EAAG0rR,WAAYoD,EAA8B9uR,EAAG8uR,4BAA6B57P,EAAOlzB,EAAGkzB,KAAM/yB,EAAKH,EAAGK,KAAMA,OAAc,IAAPF,EAAgB,GAAKA,EAE/P68B,EAAmB,CACnBgpO,aAAa,EACb8Q,oBAAqB,GACrB75O,YAJ+BjiC,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAK1E/G,WAAW,EACXgK,QAAS,SAAU5V,GAAS,OAAOwuB,EAAMwsQ,mBAAmBh7R,EAAQ,EACpEg7Q,gBAAiBr6O,GAAem3P,EAAAA,EAAsB,CAAEpyR,IAAK,EAAGS,MAAO,OAAQgB,OAAQ,aAAWnI,EAClGW,UAAWghC,GAAem3P,EAAAA,EACpB,kDACA,+CAENzqN,EAAQvhD,KAAKjtB,MAAMwuE,MAIvB,YAHcruE,IAAVquE,QAAsCruE,IAAf0wR,IACvBriN,GAAQ+hN,EAAAA,EAAAA,IAAa/qR,EAAK,GAAIqrR,IAE1BrwR,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB47Q,EAAAA,EAAat6P,EAAS,CAAC,EAAGqgB,GAC1C3hC,EAAAA,cAAoB67Q,EAAAA,EAAmB,CAAEv7Q,UAAW,iBAChDN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,uCACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,uBACpCN,EAAAA,cAAoB,MAAO,KAAM6hC,IACrC7hC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,yBACpCN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,SAAU,EAAG,aAAc,SAAU,gBAAiB,QAAS/xB,KAAM,SAAU2K,SAAU,OAAQ9O,QAAS2qB,KAAKkvQ,mBAAoB95R,KAAM,IAAKujC,QAAS0S,EAAAA,QAC7L93C,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qDAAuDmsB,KAAKutQ,qBACxGh6R,EAAAA,cAAoBkiC,EAAAA,EAAoB,CAAE5hC,UAAW,sBACjDuP,GAAU7P,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iBAAmBuP,GACrE7P,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,UAAW33B,EAAK,CAAC,EAAGA,EAAG,UAAUyM,OAAOm0B,EAAQ9+B,IAASA,IAASA,EAAM9B,EAAG,kBAAoBuoB,KAAKouG,KAAKw7J,GAAGtnR,QAAS7K,KACpKuoB,KAAKwtQ,qBACJpiQ,GAAQm2C,GAAyB,IAAhBhpE,EAAKsJ,QAAgBtO,EAAAA,cAAoB+zR,EAAAA,EAAmB,CAAE/lN,MAAOA,EAAOgmN,UAAW,SAAUxyR,OAAQiyR,IAC3HhnQ,KAAKwnQ,cACTnyP,GAAU9hC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iBAAmBwhC,KACrF,EACAu3P,EAA2B1sQ,UAAU8oQ,gBAAkB,WACnD,IAAIvjR,EAAQua,KAAKva,MACbhO,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgO,EAAYpO,EAAGoO,UAAW1D,EAAc1K,EAAG0K,YAAajK,EAAKT,EAAGixR,QAASA,OAAiB,IAAPxwR,EAAgB,CAAE4zB,KAAM,GAAM5zB,EAAIG,EAAKZ,EAAGouR,iBAAkBA,OAA0B,IAAPxtR,EAAgB6vR,EAAAA,GAAsB7vR,EAAI2J,EAAavK,EAAGuK,WAAYvJ,EAAKhB,EAAGotR,kBAAmBA,OAA2B,IAAPpsR,GAAuBA,EAC7WsF,EAAOiiB,KAAK9hB,MAAM4E,OAASkd,KAAK9hB,MAAM4E,OAASkd,KAAKjtB,MAAMgL,KAC9D,OAAI8mR,GAAqBh/Q,IAAc9H,IAAS0H,EACrClN,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,KAEpE2tE,EAAAA,EAAAA,IAAU/tE,SAAmBvS,IAAT6K,GAAsBiE,GAAuB,KAATjE,EACtDxF,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGuF,EAAOtD,EAAc,IAEvEpE,EACDiiB,KAAKktQ,sBACErH,EAAiBttR,EAAMwF,EAAM8H,GAEjCtN,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGuF,EAAOtD,EAAc,IAGpD,IAAjBumR,EAAQ58P,KAAa,GAAK,CAEzC,EACA8gQ,EAA2B1sQ,UAAUy/N,aAAe,SAAUt3N,GAC1D,IAAI3F,EAAQ1C,KACZA,KAAK+sQ,iBAAkB,EACvB1kQ,EAAQJ,QACRlvB,OAAOi3B,YAAW,WAAc,OAAOtN,EAAMqqQ,iBAAkB,CAAO,GAAG,GAC7E,EACAH,EAA2B1sQ,UAAUqjQ,gBAAkB,SAAU//Q,EAAMzQ,IAC/D2wR,EAAAA,EAAAA,IAAQ1jQ,KAAKva,MAAOjC,EAAMwc,KAAK9hB,MAAMiE,oBAGhBjP,IAArB8sB,KAAK9hB,MAAMuH,QACX1S,EAAMwF,KAAKkN,MAAQjC,GAEvBwc,KAAK8jQ,qBAAuBtgR,EAC5BzQ,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,aAC9B,EACAozR,EAA2B1sQ,UAAUwkQ,WAAa,SAAU3xR,GACxDitB,KAAKouG,KAAKs2J,WAAW3xR,GACrBitB,KAAK8jQ,0BAAuB5wR,CAChC,EACA05R,EAA2B1sQ,UAAUiX,eAAiB,SAAUsC,GAC5D,IAAK,IAAIC,EAAK,EAAGC,EAAYF,EAASC,EAAKC,EAAU93B,OAAQ63B,IAAM,CAC/D,IAAIE,EAAQD,EAAUD,GACtB1Z,KAAKuO,SAAS,CAAEsG,YAAa+E,EAAMxf,OAAOyf,aAC9C,CAEJ,EAEA+yP,EAA2B1sQ,UAAU6uQ,yBAA2B,WAC5D,IAAIt3R,EAAKuoB,KAAK9hB,MAAM3F,KAAMA,OAAc,IAAPd,EAAgB,GAAKA,EAClD1E,EAAQitB,KAAKouG,KAAK41J,YAClB5mC,EAAep9N,KAAKgpQ,kBACpBhpQ,KAAK8uQ,+BAA+Bv2R,EAAM6kP,KAC1Cp9N,KAAKujQ,gBAAgB,KAAMxwR,GAC3BitB,KAAK0kQ,WAAW3xR,GAExB,EACA65R,EAA2B1sQ,UAAU4uQ,+BAAiC,SAAUv2R,EAAM6kP,GAClF,YAAwBlqP,IAAjBkqP,IAAgD,IAAlBA,GAAuB7kP,GAAQA,EAAKsJ,OAAS,GAAKtJ,EAAK6kP,GAAcljP,QAC9G,EACA0yR,EAA2B9yP,YAAc,eAIzC8yP,EAA2B5gQ,UAAYnX,EAAS,CAAEklL,MAAO9tK,EAAAA,OAAkBqpD,WAAYrpD,EAAAA,KAAgBm/P,cAAen/P,EAAAA,OAAkB0M,QAAS8gN,EAAAA,GAAiBkzC,YAAa1gQ,EAAAA,IAAe86P,YAAa96P,EAAAA,KAAgBmhQ,SAAUnhQ,EAAAA,KAAgByK,kBAAmBzK,EAAAA,OAAkB0K,SAAU1K,EAAAA,KAAgB74B,GAAI64B,EAAAA,OAAkBuL,eAAgBvL,EAAAA,OAAkBwL,gBAAiBxL,EAAAA,OAAkBkvN,UAAWlvN,EAAAA,OAAkBqiQ,wBAAyBriQ,EAAAA,KAAgBjsB,MAAOisB,EAAAA,OAAkB23P,WAAY33P,EAAAA,OAAkBb,KAAMa,EAAAA,IAAe44P,kBAAmB54P,EAAAA,MAAkBi3P,EAAAA,EAAal3P,WAInlB4gQ,EAA2BvjQ,aAAexU,EAASA,EAAS,CAAEklL,MAAO,IAAKxuK,SAAU,EAAG+pD,YAAY,GAAQ4tM,EAAAA,EAAa75P,cAAe,CAAEsN,UAAU,EAAOp9B,KAAM,SAAU+9B,QAAS,SAAUnzB,SAAU,QAASojR,UAAW,WACpNqF,CACX,CA/xBgD,CA+xB9Cr5R,EAAAA,WAQSs8R,GAA2Bv1P,EAAAA,EAAAA,KA2B3B/f,GAAeigB,EAAAA,EAAAA,GAAiBq1P,EAA0BjD,GACrEryQ,EAAauf,YAAc,qICr3BvBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAOWojQ,EAAkB,SAAU5xR,GACnC,OAAQ3K,EAAAA,cAAoBo0R,EAAAA,EAAM9yQ,EAAS,CAAC,EAAG3W,EAAO,CAAE4pR,gBAAiB,gCAAiCiI,eAAe3gQ,EAAAA,EAAAA,GAAW,uBAAwB,CACpJ,uBAAqCl8B,IAAlBgL,EAAMwqR,UACzBvqG,UAAWtpK,EAAS,CAAC,EAAG3W,EAAMigL,aAC1C,8DCrBItpK,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAoBWozR,GAAkC11P,EAAAA,EAAAA,KA6ClC2iC,EAAsB1pE,EAAAA,YAAiB,SAAU08R,EAAal8R,GACrE,IAAImK,GAAQ8nP,EAAAA,EAAAA,GAAgBgqC,EAAiCC,GACzD71Q,EAAS7mB,EAAAA,OAAa,MACtB28R,EAAc38R,EAAAA,OAAa,MAC3B4hQ,GAAiBD,EAAAA,EAAAA,KACjBz9P,EAAKyG,EAAM8+D,QAASA,OAAiB,IAAPvlE,EAAgB4xB,EAAa2zC,QAAUvlE,EAAII,EAAKqG,EAAM67B,cAAeA,OAAuB,IAAPliC,EAAgBwxB,EAAa0Q,cAAgBliC,EAAIhE,EAAYqK,EAAMrK,UAA8B2lC,GAAZt7B,EAAM3E,KAAe2E,EAAMs7B,QAAQ1vB,EAAU5L,EAAM4L,QAAS8f,EAAU1rB,EAAM0rB,QAASE,EAAS5rB,EAAM4rB,OAAQtkB,EAAWtH,EAAMsH,SAAUyT,EAAiB/a,EAAM+a,eAAgBk3Q,EAAejyR,EAAMiyR,aAAc1jM,EAAQjyE,EAAOtc,EAAO,CAAC,UAAW,gBAAiB,YAAa,OAAQ,SAAU,UAAW,UAAW,SAAU,WAAY,iBAAkB,iBAC7iB3K,EAAAA,oBAA0B6mB,GAAQ,WAC9B,MAAQ,CACJiO,QAAS6nQ,EAAY77R,SAAW67R,EAAY77R,QAAQg0B,QACpDJ,MAAO,WACCioQ,EAAY77R,SACZ67R,EAAY77R,QAAQ4zB,OAE5B,EACA,SAAIxiB,GAAU,OAAOyqR,EAAY77R,SAAW67R,EAAY77R,QAAQoR,KAAO,EACvE,QAAI3P,GAAS,OAAOo6R,EAAY77R,SAAW67R,EAAY77R,QAAQyB,IAAM,EACrEoI,MAAOA,EAEf,IACA3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAAI+7R,EAAqB78R,EAAAA,SAAc,WACnC,QAAyBL,IAArBgL,EAAM0lR,YAA4B1lR,EAAM3F,KACxC,OAAO+qR,EAAAA,EAAAA,IAAaplR,EAAM3F,KAAK,GAAI2F,EAAM0lR,WAEjD,GAAG,CAAC1lR,EAAM3F,KAAM2F,EAAM0lR,aAClB1rR,EAAK3E,EAAAA,SAAe68R,GAAqBC,EAAcn4R,EAAG,GAAIo4R,EAAiBp4R,EAAG,GAClFG,EAAK9E,EAAAA,UAAe,GAAOg9R,EAAmBl4R,EAAG,GAAIm4R,EAAsBn4R,EAAG,GAC9E+K,EAAS7P,EAAAA,SAAc,WACvB,IAAIk9R,EAAYl9R,EAAAA,cAAoB,KAAM,CAAEM,UAAW,aAAconB,QAAS+hD,EAAQn7D,QAAUwuR,GAChG,OAAQ98R,EAAAA,cAAoBA,EAAAA,SAAgB,KACxC2K,EAAMkF,OACN7P,EAAAA,cAAoB,MAAO,CAAEM,UAAW,uBACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,UAAWkE,KAAM,gBACvDxE,EAAAA,cAAoB,WAAY,KAAMypE,EAAQ/8D,KAAI,SAAU6kN,EAAQ5kN,GAChE,OAAQ3M,EAAAA,cAAoB,MAAO,CAAE+3B,IAAKw5L,EAAO4rE,UAAY5rE,EAAO4rE,UAAYxwR,EAAGxM,MAAO,CAAE2G,MAAOyqN,EAAOzqN,MAAQyqN,EAAOzqN,MAAQgvB,EAAahvB,QAClJ,KACA9G,EAAAA,cAAoB,QAAS,CAAEM,UAAW,iBACtCN,EAAAA,cAAoB,KAAM,CAAEM,UAAW,eAAiBmpE,EAAQ/8D,KAAI,SAAU6kN,EAAQ5kN,GAClF,OAAQ3M,EAAAA,cAAoB,KAAM,CAAEM,UAAW,aAAcy3B,IAAKw5L,EAAO4rE,UAAY5rE,EAAO4rE,UAAYxwR,GAAK4kN,EAAO1hN,QAAU,OAClI,KACAitR,GAAeE,GAAoBh9R,EAAAA,cAAoB,KAAM,CAAEM,UAAW,qBAAuBqK,EAAM8oR,4BAA8B9oR,EAAM8oR,4BAA4BvgQ,UAAKvzB,EAAWu9R,EAAU,CAAC,GAAKA,MAC3N,GAAG,CAACvyR,EAAMkF,OAAQ45D,EAASqzN,EAAaE,IACpCrJ,EAAa3zR,EAAAA,SAAc,WAE3B,MAAO,QAAQ2Q,OAAO84D,EAAQ/8D,KAAI,SAAU6kN,GAAU,OArGlCzqN,EAqGqDyqN,EAAOzqN,MArGrDs2R,EAqG4DtnQ,EAAahvB,MApGpGA,EACwB,kBAAVA,EAAqBA,EAAQ,KAAOA,EAE/Cs2R,EAJO,IAAUt2R,EAAOs2R,CAqGiF,IAAG7tR,OAAO8nB,SAASgzB,KAAK,OAAQ,OAAO15C,OAAOixP,EAAgB,YAC9K,GAAG,CAACn4L,EAASm4L,IACTrpO,EAAO5tB,EAAMwqR,QAAUxqR,EAAMwqR,QAAQ58P,KAAO,EAC5CizN,EAAaxrP,EAAAA,aAAkB,SAAUkyB,EAAImrQ,GAC7C,IAEIC,EAAUC,EAAWC,EAFrBt9R,EAAWupE,EAAQ/8D,KAAI,SAAU6kN,EAAQ5kN,GAAK,OAAQ3M,EAAAA,cAAoB,OAAQ,CAAEM,UAAYqK,EAAM6gP,gBAA4B7rP,EAAf,aAA0BQ,MAAQwK,EAAM6gP,gBAA2E7rP,EAA9D,CAAEmH,MAAOyqN,EAAOzqN,MAAQyqN,EAAOzqN,MAAQgvB,EAAahvB,OAAqBixB,IAAKw5L,EAAO4rE,UAAY5rE,EAAO4rE,UAAYxwR,GAAK4kN,EAAOnoN,MAAQgqB,QAAOvK,EAAAA,EAAAA,GAAO0oM,EAAOnoN,MAAdyf,CAAqBw0Q,EAAQvyR,WAAa,GAAM,IACvWkjE,OAAQruE,EAC0BqF,EAAO2F,EAAM3F,MAAQ,GACvDqc,EAAQg8Q,EAAQh8Q,MAAQkX,OACH54B,IAArBgL,EAAM0lR,aAENiN,GADAE,GAAc30Q,EAAAA,EAAAA,GAAOle,EAAM0lR,aACJrrR,EAAKqc,IAC5Bk8Q,EAAYC,EAAYx4R,EAAKqc,EAAQ,IACjCi8Q,GAAYC,GAAaD,IAAaC,IACtCvvN,EAAQsvN,IAGZtvN,GAA6B,YAApBrjE,EAAMqpR,WACf9zR,EAASutB,KAAKztB,EAAAA,cAAoB,MAAO,CAAE+3B,IAAK,QAASz3B,UAAW,+BAChEN,EAAAA,cAAoB,OAAQ,KAAMguE,KAE1C,IAAIyvN,EAAYz9R,EAAAA,aAAmBkyB,EAAI5Q,EAASA,EAAS,CAAC,EAAG4Q,EAAGvnB,OAAQ,CAAErK,WAAWu7B,EAAAA,EAAAA,GAAW,cAAe,CACvG,kBAAmBwhQ,EAAQh8Q,MAAQ,IAAM,EACzC,UAAWg8Q,EAAQ/6P,QACnB,aAAc+6P,EAAQnxR,SACtB,UAAWmrB,QAAQ22C,GACnB,aAAcqvN,EAAQvyR,SAASnE,aAC5BzG,GACX,OAAOyK,EAAM6gP,WAAa7gP,EAAM6gP,WAAWt4N,UAAKvzB,EAAW89R,EAAWJ,GAAWI,CACrF,GAAG,CAACh0N,EAAS9+D,EAAM0lR,WAAY1lR,EAAM6gP,WAAY7gP,EAAM3F,KAAMuzB,IACzDmlQ,EAAc19R,EAAAA,aAAkB,SAAUslJ,EAAS3kJ,GAC/C2kJ,GACAA,EAAQpyH,UAAKvzB,EAAW2hB,EAASA,EAAS,CAAC,EAAG3gB,GAAQ,CAAEkmB,OAAQA,EAAO/lB,UAE/E,GAAG,IACC68R,EAAgB39R,EAAAA,aAAkB,SAAUW,GAM5C,OAJKgK,EAAMwqR,SACP4H,EAAeF,GAGZa,EAAYz3P,EAAQtlC,EAC/B,GAAG,CAAC+8R,EAAaz3P,EAAQt7B,EAAMwqR,QAAS0H,IACpCe,EAAiB59R,EAAAA,aAAkB,SAAUW,GAAS,OAAO+8R,EAAYnnR,EAAS5V,EAAQ,GAAG,CAAC4V,IAC9FsnR,EAAiB79R,EAAAA,aAAkB,SAAUW,GAAS,OAAO+8R,EAAYrnQ,EAAS11B,EAAQ,GAAG,CAAC01B,IAC9FynQ,EAAgB99R,EAAAA,aAAkB,SAAUW,GAAS,OAAO+8R,EAAYnnQ,EAAQ51B,EAAQ,GAAG,CAAC41B,IAC5Fi6P,EAAkBxwR,EAAAA,aAAkB,SAAUW,GAAS,OAAO+8R,EAAYzrR,EAAUtR,EAAQ,GAAG,CAACsR,IAChG8rR,EAAsB/9R,EAAAA,aAAkB,SAAUW,GAAS,OAAO+8R,EAAYd,EAAcj8R,EAAQ,GAAG,CAACi8R,IACxGoB,EAAwBh+R,EAAAA,aAAkB,SAAUW,GAEpD,OADAo8R,EAAeF,GACRa,EAAYh4Q,EAAgBpE,EAASA,EAAS,CAAC,EAAG3gB,GAAQ,CAAE40B,WAAY50B,EAAMkmB,OAAO0O,aAChG,GAAG,CAAC7P,IACA6wQ,EAAgBv2R,EAAAA,aAAkB,SAAUW,GAC5Co8R,EAAep8R,EAAMqtE,MACzB,GAAG,IACHhuE,EAAAA,WAAgB,YAAc6hQ,EAAAA,EAAAA,IAAqB,IACnD7hQ,EAAAA,WAAgB,WACZ,IAAIgF,EAAO2F,EAAM3F,KACjB+3R,EAAeF,GACX73R,GAAwB,IAAhBA,EAAKsJ,OACb2uR,GAAoB,GAGpBA,GAAoB,EAG5B,GAAG,CAACtyR,EAAM3F,OACV,IAAIovR,EAAOp0R,EAAAA,aAAkB,SAAUi+R,GAAa,OAAOj+R,EAAAA,cAAoBu8R,EAAiBj7Q,EAAS,CAAC,EAAG28Q,GAAa,GAAG,IAC7H,OAAQj+R,EAAAA,cAAoBk+R,EAAAA,EAAkBj+C,SAAU,CAAE/tO,MAAO,SAAUisR,GAAc,OAAQ78Q,EAASA,EAAS,CAAC,EAAG68Q,GAAa,CAAE34P,WAAY,wBAAwB70B,OAAO61B,EAAchB,aAAiB,GAC5MxlC,EAAAA,cAAoBupE,EAAAA,GAAUjoD,EAAS,CAAC,EAAG43E,EAAO,CAAErhE,KAAMu8P,EAAM5tP,cAAellB,EAASA,EAAS,CAAExa,MAAO6sR,GAAcntP,GAAgB,CAAElmC,UAAWkmC,EAAclmC,YAAcE,IAAKm8R,EAAa9sR,OAAQA,EAAQ27O,WAAYA,EAAY2oC,sBAAuBxpR,EAAMwpR,sBAAuBnuR,KAAM2E,EAAM3E,KAAM+9B,QAASp5B,EAAMo5B,QAASnzB,SAAUjG,EAAMiG,SAAUojR,UAAWrpR,EAAMqpR,UAAW3D,WAAY1lR,EAAM0lR,WAAYuI,eAAe,EAAM3yP,OAAQ03P,EAAepnR,QAASqnR,EAAgBvnQ,QAASwnQ,EAAgBtnQ,OAAQunQ,EAAe7rR,SAAUu+Q,EAAiB9qQ,eAAgBs4Q,EAAuBpB,aAAcmB,EAAqBxH,cAAeA,EAAej2R,WAAWu7B,EAAAA,EAAAA,GAAW,iBAAkBv7B,GAAY8iC,SAAUz4B,EAAMy4B,SAAUJ,SAAUr4B,EAAMq4B,SAAU8yP,eAAgBnrR,EAAMmrR,eAAgBj0P,cAAel3B,EAAMk3B,cAAeC,OAAQn3B,EAAMm3B,OAAQ42P,gBAAiB,oBACt3B,IACIjgQ,EAAYnX,EAASA,EAAS,CAAC,EAAG0zQ,EAAAA,GAAuBv8P,WAAY,CAAEgxC,QAAS/wC,EAAAA,IAAcoY,aAC9Fhb,EAAe,CACf2zC,QAAS,GACTjjC,cAAe,CAAC,EAChB1/B,MAAO,QACPd,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,SAEd84D,EAAoBnjC,YAAc,2BAElCmjC,EAAoBjxC,UAAYA,EAChCixC,EAAoB5zC,aAAeA,uECjNxBsoQ,yKACX,SAAWA,GACPA,EAAiBA,EAA4B,UAAI,GAAK,YACtDA,EAAiBA,EAA2B,SAAI,GAAK,UACxD,CAHD,CAGGA,IAAqBA,EAAmB,CAAC,QCsDxCC,qGA7DA3rQ,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAuBI7kB,EAAUD,EAAAA,EAAeC,QAASC,EAAaF,EAAAA,EAAeE,WAE9DrjB,EAAiB,SAAU/gB,GAAS,OAAOA,EAAM+gB,gBAAkB,EACnE48Q,EAAW,SAAUr4R,GAAQ,OAAOA,IAASo4R,EAAgBE,UAAY,GAE7E,SAAWF,GACPA,EAAgBA,EAAsB,KAAI,GAAK,OAC/CA,EAAgBA,EAA0B,SAAI,GAAK,WACnDA,EAAgBA,EAA4B,WAAI,GAAK,YACxD,CAJD,CAIGA,IAAoBA,EAAkB,CAAC,IAE1C,IAAIG,EAA2C,SAAUvqQ,GAErD,SAASuqQ,EAA0B7zR,GAC/B,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA+iBxC,OA7iBA0C,EAAM3vB,MAAQ,CACV8zR,iBAAkB8K,EAAiBK,UACnC33Q,aAAc,IAElBqI,EAAM/iB,SAAW,KACjB+iB,EAAMuvQ,0BAA4B,KAClCvvQ,EAAMwvP,UAAW/9O,EAAAA,EAAAA,KACjBzR,EAAM0rG,KAAO,IAAI80J,EAAAA,EAAaxgQ,GAC9BA,EAAMwvQ,MAAQ,GACdxvQ,EAAM0rB,OAAS,KACf1rB,EAAMyvQ,eAAiB,KACvBzvQ,EAAMqqQ,iBAAkB,EACxBrqQ,EAAM0vQ,kCAAoC,KAC1C1vQ,EAAMoC,WAAa,EACnBpC,EAAM2vQ,iBAAkB,EACxB3vQ,EAAMkd,aAAe,KAErBld,EAAMuF,MAAQ,WACNvF,EAAM0rB,QACN1rB,EAAM0rB,OAAOnmB,OAErB,EAEAvF,EAAM2gQ,iBAAmB,SAAUzuQ,EAAO7hB,GACtC,IAAI0E,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIsK,EAAc1K,EAAG0K,YAAaumR,EAAUjxR,EAAGixR,QAE3GrqR,EAAW9F,EAAKqc,GADT8zQ,EAAUA,EAAQ58P,KAAO,IAEhCwmQ,EAAe5vQ,EAAMjd,MAAM66E,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAG7B,EAAU8D,EAAc,IAClGugB,EAAM0vQ,kCAAoC75R,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAG7B,EAAU8D,EAAc,IAClH,IAAIqoN,EAAW,IACO,IAAlB8nE,GACA9nE,EAAW9nM,EAAMjd,OACRqe,OAAOwuQ,EAAc,GAG9B9nE,EAAW/nJ,EAAcA,EAAc,GAAI//C,EAAMjd,OAAO,GAAO,CAACpH,IAAW,SAE7CnL,IAAvBwvB,EAAMxkB,MAAM4E,OAAuB4f,EAAMxkB,MAAM4E,OAAS4f,EAAM3vB,MAAMgL,QAClE2kB,EAAMoG,aACXpG,EAAM3vB,MAAMgL,OACZhL,EAAMwF,KAAKwF,KAAO,IAEtB2kB,EAAM0rG,KAAKk7J,cAAc,GAAIv2R,IAE7B2vB,EAAMyvQ,gBACNzvQ,EAAMyvQ,eAAen3F,YAGQ9nM,IAA7BwvB,EAAM3vB,MAAMqqP,eACZrqP,EAAMwF,KAAK6kP,kBAAelqP,GAE9BwvB,EAAM6gQ,gBAAgB/4D,EAAUz3N,GAChC2vB,EAAM0rG,KAAKw6J,6BAA6BvqR,EAAUtL,EACtD,EAEA2vB,EAAM6vQ,YAAc,SAAUC,EAAet+R,GACzC,IAAInB,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EACnBwuB,EAAM7b,QACN6b,EAAM0rG,KAAKu1J,YAAY5wR,GAEtB2vB,EAAM3vB,MAAM8iC,SAAYnT,EAAMoG,aAC/B/1B,EAAMwF,KAAKs9B,SAAU,EACrBnT,EAAMuF,SAEV,IAAIxoB,EAAWijB,EAAMjd,OACrBgtR,EAAAA,EAAAA,IAAgBhzR,EAAU+yR,EAAe9vQ,EAAMxkB,MAAMiE,aACrDugB,EAAM6gQ,gBAAgB9jR,EAAU1M,GAChC2vB,EAAMgiQ,WAAW3xR,EACrB,EAEA2vB,EAAM8gQ,UAAY,SAAU5uQ,EAAO7hB,GAC/B,IAAI0E,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAI6zR,EAAcj0R,EAAGi0R,YAAahD,EAAUjxR,EAAGixR,QAC3G58P,EAAO48P,EAAUA,EAAQ58P,KAAO,EAChC/tB,OAA8B7K,IAAvBwvB,EAAMxkB,MAAM4E,OAAuB4f,EAAMxkB,MAAM4E,OAAS4f,EAAM3vB,MAAMgL,KAC3Eq/O,EAAe16N,EAAMgwQ,kBAAkBt1C,aACvCu1C,EAAajH,GAAe3tR,EAC5B60R,EAAkBr6R,EAAKqc,EAAQkX,GAC/B8mQ,GAAmBx1C,IAAiBxoO,EAChC8N,EAAM3vB,MAAMqqP,eAAiBxoO,IAC7B7hB,EAAMwF,KAAK6kP,aAAexoO,EAC1B7hB,EAAMwF,KAAKsuR,iBAAmB8K,EAAiBK,WAG9CW,IAAyB,IAAX/9Q,QACc1hB,IAA7BwvB,EAAM3vB,MAAMqqP,eACZrqP,EAAMwF,KAAK6kP,kBAAelqP,GAGlCwvB,EAAM0rG,KAAKw6J,6BAA6BgK,EAAiB7/R,EAC7D,EACA2vB,EAAMomQ,aAAe,SAAUzgQ,GAC3B3F,EAAM/iB,SAAW0oB,EACjB3F,EAAM0rG,KAAKvoG,QAAUwC,CACzB,EACA3F,EAAMmwQ,aAAe,SAAUnM,GAC3B,IAAIl4O,EAAQ9rB,EAAM0rB,OAASs4O,GAAaA,EAAUl4O,MAC9CA,GAAS9rB,EAAM3vB,MAAM8iC,SACrB98B,OAAOi3B,YAAW,WAAc,OAAOwe,EAAMvmB,OAAS,GAAG,EAEjE,EACAvF,EAAMqhQ,gBAAkB,SAAU7vR,GAC9B,IAAInB,EAAQ2vB,EAAM0rG,KAAK41J,YACnBv+Q,EAAQvR,EAAMkmB,OAAO3U,MACzB1S,EAAMq/B,eAAiBl+B,OACIhB,IAAvBwvB,EAAMxkB,MAAM4E,SACZ/P,EAAMwF,KAAKwF,KAAO0H,GAEtB1S,EAAMwF,KAAK6kP,kBAAelqP,EACrBwvB,EAAM7b,SACP6b,EAAM0rG,KAAKu1J,YAAY5wR,GACvB2vB,EAAM6L,SAAS,CAAElU,aAAcqI,EAAMjd,SAEzCid,EAAM0rG,KAAKk7J,cAAc7jR,EAAO1S,GAChC2vB,EAAMgiQ,WAAW3xR,GACjB2vB,EAAM6L,SAAS,CAAEgzC,WAAOruE,GAC5B,EACAwvB,EAAMiiQ,iBAAmB,SAAUzwR,GAC/B,IAAInB,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EACvBA,EAAMs+B,kBACF9P,EAAMjd,MAAM5D,OAAS,GACrB6gB,EAAM6gQ,gBAAgB,GAAIxwR,QAEGG,IAA7BwvB,EAAM3vB,MAAMqqP,eACZrqP,EAAMwF,KAAK6kP,kBAAelqP,GAE1BwvB,EAAM7b,QACN6b,EAAM0rG,KAAKu1J,YAAY5wR,GAE3B,IAAIgL,OAA8B7K,IAAvBwvB,EAAMxkB,MAAM4E,OAAuB4f,EAAMxkB,MAAM4E,OAAS4f,EAAM3vB,MAAMgL,MAC3Ey1E,EAAAA,EAAAA,IAAUz1E,IAAkB,KAATA,GACnB2kB,EAAM0rG,KAAKk7J,cAAc,GAAIv2R,GAE7B2vB,EAAM3vB,MAAMgL,OACZhL,EAAMwF,KAAKwF,KAAO,IAEtB2kB,EAAM0vQ,kCAAoC,KAC1C1vQ,EAAMgiQ,WAAW3xR,EACrB,EACA2vB,EAAMkiQ,eAAiB,SAAU1wR,GAC7B,IAAIuD,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgO,EAAYpO,EAAGoO,UAAW+9Q,EAAansR,EAAGmsR,WAC1Gv5P,EAAUn2B,EAAMm2B,QAChBtsB,OAA8B7K,IAAvBwvB,EAAMxkB,MAAM4E,OAAuB4f,EAAMxkB,MAAM4E,OAAS4f,EAAM3vB,MAAMgL,KAC3E8I,OAAgC3T,IAAvBwvB,EAAMxkB,MAAM2I,OAAuB6b,EAAMxkB,MAAM2I,OAAS6b,EAAM3vB,MAAM8T,OAC7E3O,EAAKwqB,EAAMgwQ,kBAAmBjP,EAAcvrR,EAAGurR,YAAarmC,EAAellP,EAAGklP,aAC9ErqP,EAAQ2vB,EAAM0rG,KAAK41J,YAEvB,GADAjxR,EAAMq/B,eAAiBl+B,GAClB6J,GAAQ2kB,EAAMjd,MAAM5D,OAAS,IAC7BwoB,IAAYtD,EAAAA,EAAKrX,MAAQ2a,IAAYtD,EAAAA,EAAKltB,OACvCwwB,IAAYtD,EAAAA,EAAKE,MAAQoD,IAAYtD,EAAAA,EAAKC,KAC1CqD,IAAYtD,EAAAA,EAAK0tB,QAAUpqB,IAAYtD,EAAAA,EAAK+1J,aAAe5oL,EAAMy/L,SACrE,OAAOjxK,EAAMowQ,eAAe5+R,EAAOnB,GAEvC,IAAI4wR,EAAc,WACdzvR,EAAM+gB,iBACNyN,EAAM0rG,KAAKu1J,YAAY5wR,GACvB2vB,EAAMgiQ,WAAW3xR,EACrB,EACA,GAAI2vB,EAAM7b,OACN,GAAIwjB,IAAYtD,EAAAA,EAAKkqO,OACjBvuO,EAAM0rG,KAAK22J,uBAAuB,QAEjC,GAAI16P,IAAYtD,EAAAA,EAAKmqO,SACtBxuO,EAAM0rG,KAAK22J,sBAAsB,QAEhC,IAAK7wR,EAAMu/L,SAAWv/L,EAAMw/L,UAA2B,SAAfx/L,EAAMuoD,KAAiB,CAEhE,IACIs2O,GADsBrwQ,EAAM3vB,MAAM0S,OAASid,EAAM3vB,MAAM0S,MAAM5D,UACzBtJ,EAAKsJ,OAAS,GAAKtJ,EAC3DmqB,EAAMswQ,gCAAgCD,EAAWhgS,EACrD,MACK,IAAKmB,EAAMu/L,SAAWv/L,EAAMw/L,UAAYx/L,EAAMy/L,UAAYz/L,EAAMm2B,UAAYtD,EAAAA,EAAKC,IAAK,CAEnF+rQ,EAAYx6R,EAAKqW,MAAM8T,EAAMgwQ,kBAAkBt1C,cACnD16N,EAAM8gQ,UAAUjrR,EAAKsJ,OAAS,EAAG9O,GACjC2vB,EAAMswQ,gCAAgCD,EAAWhgS,EACrD,MACK,IAAKmB,EAAMu/L,SAAWv/L,EAAMw/L,UAAYx/L,EAAMy/L,UAAYz/L,EAAMm2B,UAAYtD,EAAAA,EAAKE,KAAM,CAEpF8rQ,EAAYx6R,EAAKqW,MAAM,EAAG8T,EAAMgwQ,kBAAkBt1C,aAAe,GACrE16N,EAAM8gQ,UAAU,EAAGzwR,GACnB2vB,EAAMswQ,gCAAgCD,EAAWhgS,EACrD,MACK,GAAImB,EAAMy/L,UAAYz/L,EAAMm2B,UAAYtD,EAAAA,EAAKG,GAAI,CAE9C6rQ,OAAY,EAEsB,QADlCE,EAAgCvwQ,EAAMwwQ,iCAAiC,EAAG91C,IAE1E21C,EAA6B,IAAjB31C,EAAqB7kP,EAAKqW,MAAMwuO,EAAe,EAAGA,GAAgB,CAAC7kP,EAAK6kP,IAE/E61C,IAAkC71C,EACvC21C,EAAY,CAACx6R,EAAK06R,EAAgC,IAE7C71C,GAAgB,IACrB21C,EAAYE,EAAgC71C,EACtC7kP,EAAKqW,MAAMwuO,EAAe,EAAG61C,GAC7B16R,EAAKqW,MAAMqkR,EAAgC,EAAG71C,IAEpD21C,GAAaA,EAAUlxR,OAAS,IAC5Bu7O,GAAgB,GAChB16N,EAAM8gQ,UAAUpmC,EAAe,EAAGrqP,GAEtC2vB,EAAMswQ,gCAAgCD,EAAWhgS,GAEzD,MACK,GAAImB,EAAMy/L,UAAYz/L,EAAMm2B,UAAYtD,EAAAA,EAAKI,KAAM,CAEpD,IACI8rQ,EADAF,OAAY,EAEsB,QADlCE,EAAgCvwQ,EAAMwwQ,iCAAiC,EAAG91C,IAE1E21C,EAAY31C,IAAiB7kP,EAAKsJ,OAAS,EAAItJ,EAAKqW,MAAMwuO,EAAcA,EAAe,GAAK,CAAC7kP,EAAK6kP,IAE7F61C,IAAkC71C,EACvC21C,EAAYx6R,EAAKqW,MAAMwuO,EAAcA,EAAe,GAE/CA,GAAgB,IAErB21C,EAAYE,EAAgC71C,EACtC7kP,EAAKqW,MAAMwuO,EAAe,EAAG61C,EAAgC,GAC7D16R,EAAKqW,MAAMqkR,EAA+B71C,EAAe,IAE/D21C,GAAaA,EAAUlxR,QAAU,IACjC6gB,EAAM8gQ,UAAUpmC,EAAe,EAAGrqP,GAClC2vB,EAAMswQ,gCAAgCD,EAAWhgS,GAEzD,MACK,GAAImB,EAAM0+B,QAAUvI,IAAYtD,EAAAA,EAAKG,GACtCy8P,SAEC,GAAIt5P,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKI,KAAM,CACnD,GAAmB,KAAfy8P,GAAqB/9Q,EACrB,IAAK6c,EAAMxkB,MAAM2mR,mBAAqBh+Q,EAClC6b,EAAMsiQ,WAAWjyR,EAAOs3B,OAEvB,CACD,IAAIw0I,EAAW,EACf,GAAIx0I,IAAYtD,EAAAA,EAAKI,MAAQkD,IAAYtD,EAAAA,EAAKltB,MAAO,CACjD,IAAIorR,EAAiB1sR,EAAKqW,MAAMwuO,EAAe,GAAGlvO,MAAK,SAAUhO,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,IAC1Gg5J,EAAWomH,GAAkB1sR,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAeo/Q,EAAep/Q,EAAY,GACpH,MACK,GAAIwkB,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKrX,KAAM,CACnD,IAAIw1Q,OAAe,EACnB,IAAsB,IAAlB9nC,EACA8nC,EAAe3sR,EACfsmK,EAAWtmK,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,QAE5E,CAGD,IADA,IAAIs/Q,GADJD,EAAe3sR,EAAKqW,MAAM,EAAGwuO,IACKp+L,MAC3BmmO,GAAkBA,EAAejrR,UACpCirR,EAAiBD,EAAalmO,MAElC6/G,EAAWsmH,GAAkB5sR,EAAK+nF,WAAU,SAAU90D,GAAM,OAAOA,EAAG3lB,KAAes/Q,EAAet/Q,EAAY,GACpH,CACJ,CACA,GAAIg5J,EAAU,CACV,IAAIumH,EAAYvmH,EAAWu+E,EAC3B16N,EAAMsiQ,WAAWjyR,EAAOs3B,EAAS+6P,EACrC,WACsBlyR,IAAb2rK,GACLn8I,EAAMsiQ,WAAWjyR,EAAOs3B,EAEhC,MAEC,IAAK3H,EAAMxkB,MAAM2mR,mBAAqBh+Q,EACvC6b,EAAMsiQ,WAAWjyR,EAAOs3B,OAEvB,CACGw0I,EAAW,KACf,GAAIx0I,IAAYtD,EAAAA,EAAKI,MAAQkD,IAAYtD,EAAAA,EAAKltB,MAC1CglK,EAAWtmK,EAAKqW,MAAMwuO,EAAe,GAAGlvO,MAAK,SAAUhO,GAAK,OAAQA,EAAEhG,QAAU,SAE/E,GAAImwB,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKrX,KAAM,CACnD,IAAI21Q,EAAW9sR,EAAKqW,MAAM,EAAGwuO,GAE7B,IADAv+E,EAAWwmH,EAASrmO,MACb6/G,GAAYA,EAAS3kK,UACxB2kK,EAAWwmH,EAASrmO,KAE5B,CACA,GAAI6/G,EAAU,CACNumH,EAAYvmH,EAASzrK,GAAKgqP,EAAe,EAC7C16N,EAAMsiQ,WAAWjyR,EAAOs3B,EAAS+6P,EACrC,MAEI1iQ,EAAMsiQ,WAAWjyR,EAAOs3B,EAEhC,CACA3H,EAAMgiQ,WAAW3xR,GACjBmB,EAAM+gB,gBACV,MACSoV,IAAYtD,EAAAA,EAAK8L,OACtB3+B,EAAM+gB,iBACFyN,EAAMxkB,MAAMwtR,aAAe3tR,GAAwB,OAAhB0lR,EACnC/gQ,EAAMywQ,iBAAiBj/R,GAElBuvR,GAAeA,EAAYvpR,SAChCypR,IAGAjhQ,EAAMmpQ,kBAAkB33R,IAGvBm2B,IAAYtD,EAAAA,EAAKiP,KACtB2tP,SAGCzvR,EAAM0+B,QAAUvI,IAAYtD,EAAAA,EAAKI,MACtCw8P,GAER,EACAjhQ,EAAM0wQ,qBAAuB,WACzB,IAAI37R,EAAII,EACJK,EAAKwqB,EAAMxkB,MAAOkF,EAASlL,EAAGkL,OAAQiyB,EAASn9B,EAAGm9B,OAAQq2P,EAAcxzR,EAAGwzR,YAAanyR,EAAOrB,EAAGqB,KAAMlB,EAAKH,EAAGK,KAAMA,OAAc,IAAPF,EAAgB,GAAKA,EAAI2uR,EAA8B9uR,EAAG8uR,4BAA6BpD,EAAa1rR,EAAG0rR,WAAYx4P,EAAOlzB,EAAGkzB,KAC1PrtB,OAA8B7K,IAAvBwvB,EAAMxkB,MAAM4E,OAAuB4f,EAAMxkB,MAAM4E,OAAS4f,EAAM3vB,MAAMgL,KAC3Es1R,EAAc3wQ,EAAMgwQ,kBAAkBW,YACtCV,EAAajH,GAAe3tR,GAASxK,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,UAAW33B,EAAK,CAAC,EACrGA,EAAG,UAAUyM,OAAOm0B,EAAQ9+B,IAASA,IAASA,EAC9C9B,IAAM6zB,IAAK,aAAcj2B,QAASqtB,EAAMywQ,iBAAkBtjQ,YAAa5a,GAC3E1hB,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,4BAA6B,CAAE,UAAWyiQ,EAASwB,KAAiB3/R,MAAO,CAAE6P,UAAW,WACvIxF,EACAxK,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,OAAQV,KAAMk+R,EAAAA,IAAU5/R,MAAO,CAAEiG,SAAU,WAAYE,MAAO,aACxG0nE,EAAQ7+C,EAAM3vB,MAAMwuE,MAIxB,YAHcruE,IAAVquE,QAAsCruE,IAAf0wR,IACvBriN,GAAQ+hN,EAAAA,EAAAA,IAAa/qR,EAAK,GAAIqrR,IAE1BrwR,EAAAA,cAAoBA,EAAAA,SAAgB,KACxC6P,GAAU7P,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iBAAmBuP,GACrEuvR,EACAp/R,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,UAAWv3B,EAAK,CAAC,EAC5DA,EAAG,UAAUqM,OAAOwe,EAAMoG,WAAa,KAAOuP,EAAQ9+B,IAASA,IAASA,EACxE1B,EAAG,kBAAoB6qB,EAAM0rG,KAAKw7J,GAAGtnR,QACrCzK,MACHuzB,GAAQm2C,GAAyB,IAAhBhpE,EAAKsJ,QAAgBtO,EAAAA,cAAoB+zR,EAAAA,EAAmB,CAAE/lN,MAAOA,EAAOgmN,UAAW,SAAUxyR,OAAQiyR,IAC3HtkQ,EAAM8kQ,cACVnyP,GAAU9hC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iBAAmBwhC,GAC7E,EACA3S,EAAM0jQ,oBAAsB,WACxB,IAAIh4J,EAAO1rG,EAAM0rG,KACb32H,EAAKirB,EAAMxkB,MAAOyd,EAAMlkB,EAAGkkB,IAAK9jB,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAC1EkiC,EAAgBrX,EAAM0rG,KAAK64J,mBAC3BC,OAAqCh0R,IAAxB6mC,EAAc1/B,MAAsB0/B,EAAc1/B,MAAQ+zH,EAAK84J,WAC5EmG,EAAqB,CACrB1xQ,SAAazoB,IAARyoB,EAAoBA,EAAMyyG,EAAKg5J,cACpC/sR,MAAO6sR,EACPntP,cAAe,CACXhB,YAAY3J,EAAAA,EAAAA,GAAW2K,EAAchB,WAAY,mBAAoB,uBACrEllC,UAAWkmC,EAAclmC,UACzBo3B,QAAS8O,EAAc9O,QACvB6N,OAAQpW,EAAM2F,QACd6B,KAAMxH,EAAM7b,OACZ2yB,OAAQ9W,EAAMmmQ,cACd/+Q,QAAS4Y,EAAM4qQ,cACftzP,SAAUD,EAAcC,UAE5BqtP,WAAY,CAAC9uR,EAAKsJ,OAAQ6gB,EAAMjd,MAAM5D,SAE1C,OAAQtO,EAAAA,cAAoB4zR,EAAAA,EAAetyQ,EAAS,CAAC,EAAGw4Q,GAAqB3qQ,EAAM0wQ,uBACvF,EACA1wQ,EAAM+oQ,4BAA8B,WAChC,IAAIh0R,EAAKirB,EAAMxkB,MAAOk3B,EAAgB39B,EAAG29B,cAAepzB,EAAavK,EAAGuK,WAAYc,EAASrL,EAAGqL,OAC5FjL,EAAK6qB,EAAM3vB,MAAM8hC,YAAaA,OAAqB,IAAPh9B,EAAgB,EAAIA,EAChEuxR,OAAwBl2R,IAAX4P,EAAuBA,EAAS4f,EAAM3vB,MAAMgL,KAC7D2kB,EAAMkd,cAAetQ,EAAAA,EAAAA,IAA2B5M,GAChD,IAAIusP,EAAejtQ,EAAczO,EAAAA,cAAoBm2R,EAAAA,EAAY,CAAEjkR,MAAO2jR,EAAYr1R,IAAK,SAAUs1R,GAAkB,OAAO3mQ,EAAMyvQ,eAAiB9I,GAAkBA,EAAehhQ,OAAS,EAAG7iB,SAAUkd,EAAMqhQ,gBAAiBt4P,UAAW/I,EAAMkiQ,eAAgBrrR,KAAMmpB,EAAMxkB,MAAM3E,KAAM+9B,QAAS5U,EAAMxkB,MAAMo5B,QAASnzB,SAAUue,EAAMxkB,MAAMiG,WAAe,KAC3V+wB,EAAmB,CACnBE,cAAeA,EACfD,OAAQzS,EAAM7b,OACdiD,QAAS,SAAU5V,GAAS,OAAOwuB,EAAM4S,SAASphC,EAAQ,EAC1D2gC,YAAaA,EACbo6O,aAAcA,EACd55O,OAAQ,CACJP,WAAYpS,EAAMkd,aAAapQ,iBAAiB+jQ,EAAAA,GAA0B7jQ,EAAAA,GAAS6jQ,EAAAA,KACnFj+P,SAAU5S,EAAM4S,SAChBN,UAAWtS,EAAMkd,aAAapQ,iBAAiBgkQ,EAAAA,GAAyB9jQ,EAAAA,GAAS8jQ,EAAAA,KACjFj+P,QAAS7S,EAAM+wQ,aAGvB,OAAQlgS,EAAAA,cAAoBiiC,EAAAA,EAAc3gB,EAAS,CAAC,EAAGqgB,GACnD3hC,EAAAA,cAAoBkiC,EAAAA,EAAoB,CAAE5hC,UAAW,sBACjDN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBAAsB6uB,EAAM0wQ,yBAChF,EACA1wQ,EAAM+wQ,WAAa,SAAUv/R,GACzB,IAAInB,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EACvBA,EAAMs+B,uBAC2Bt/B,IAA7BwvB,EAAM3vB,MAAMqqP,eACZrqP,EAAMwF,KAAK6kP,kBAAelqP,GAE1BwvB,EAAM7b,QACN6b,EAAM0rG,KAAKu1J,YAAY5wR,GAE3BA,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,YAC1B,IAAIuE,OAA8B7K,IAAvBwvB,EAAMxkB,MAAM4E,OAAuB4f,EAAMxkB,MAAM4E,OAAS4f,EAAM3vB,MAAMgL,MAC3Ey1E,EAAAA,EAAAA,IAAUz1E,IAAkB,KAATA,GACnB2kB,EAAM0rG,KAAKk7J,cAAc,GAAIv2R,GAE7B2vB,EAAM3vB,MAAMgL,OACZhL,EAAMwF,KAAKwF,KAAO,IAEtB2kB,EAAMgiQ,WAAW3xR,EACrB,EACA2vB,EAAM4S,SAAW,SAAUphC,GACvB,IAAInB,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EACvBA,EAAMs+B,uBAC2Bt/B,IAA7BwvB,EAAM3vB,MAAMqqP,eACZrqP,EAAMwF,KAAK6kP,kBAAelqP,GAE1BwvB,EAAM7b,QACN6b,EAAM0rG,KAAKu1J,YAAY5wR,GAE3BA,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,aAC1B,IAAIuE,OAA8B7K,IAAvBwvB,EAAMxkB,MAAM4E,OAAuB4f,EAAMxkB,MAAM4E,OAAS4f,EAAM3vB,MAAMgL,MAC3Ey1E,EAAAA,EAAAA,IAAUz1E,IAAkB,KAATA,GACnB2kB,EAAM0rG,KAAKk7J,cAAc,GAAIv2R,GAE7B2vB,EAAM3vB,MAAMgL,OACZhL,EAAMwF,KAAKwF,KAAO,IAEtB2kB,EAAMgiQ,WAAW3xR,EACrB,EACA2vB,EAAM8kQ,WAAa,WACf,IAAI/vR,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIgO,EAAYpO,EAAGoO,UAAW4hR,EAAmBhwR,EAAGgwR,iBAAkB1oC,EAAatnP,EAAGsnP,WAAY2oC,EAAwBjwR,EAAGiwR,sBAAuBvlR,EAAc1K,EAAG0K,YAAaumR,EAAUjxR,EAAGixR,QAC3PkB,EAAKlnQ,EAAM0rG,KAAKw7J,GAChB99P,EAAO48P,EAAUA,EAAQ58P,KAAO,EAChCsxN,EAAe16N,EAAMgwQ,kBAAkBt1C,aACvCrjN,EAAgBrX,EAAM0rG,KAAK64J,mBAC3B7vL,EAAY,cAAclzF,OAAO0lR,EAAGxyL,UAAW,OACnD,OAAQ7jG,EAAAA,cAAoBo0R,EAAAA,EAAM,CAAEv0R,GAAIsvB,EAAM0rG,KAAKw4J,UAAW18P,KAAMxH,EAAM7b,OAAQtO,KAAMA,EAAKqW,QAASwuO,aAAcA,EAAetxN,EAAMrmB,MAAOid,EAAMjd,MAAOI,UAAWA,EAAWg2O,WAAY15O,EAAa0lR,YAAanlQ,EAAM0rG,KAAKj6F,KAAMyvP,WAAYlhQ,EAAMxkB,MAAM0lR,WAAY2D,UAAW,SAAUnpC,QAAS,SAAUhzN,GAAQw+P,EAAGx+P,KAAO1I,EAAM0rG,KAAKhjG,KAAOA,CAAM,EAAG8wC,aAAcx5C,EAAMoG,WAAa,CAAC,EAAI,CAAEptB,UAAWq+B,EAAc1+B,QAAUysR,gBAAiB,iBAAkB3pG,UAAWyrG,EAAGtnR,QAAU,CAAE6oB,UAAWisE,QAAclkG,EAAWo4B,IAAK,UAAWQ,KAAMA,EAAMz2B,QAASqtB,EAAM++N,gBAAiB1C,WAAYA,EAAY2oC,sBAAuBA,EAAuBK,aAAcN,EAAkB53P,YAAa5a,EAAgB6U,OAAQpH,EAAMmH,WAAYy6O,SAAU5hP,EAAM4hP,SAAU8nB,WAAYxC,EAAGyC,YAAaC,SAAU5pQ,EAAM0rG,KAAKm+J,uBACvzB,EACA7pQ,EAAM4hP,SAAW,SAAUpwQ,GACvB,IAAIuD,EAAKirB,EAAM0rG,KAAMw7J,EAAKnyR,EAAGmyR,GAAIx+P,EAAO3zB,EAAG2zB,KAC3Cw+P,EAAGC,cAAc31R,GACjB,IAAI0vR,EAAalhQ,EAAMxkB,MAAM0lR,WACzB/rR,EAAK6qB,EAAMxkB,MAAM3F,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EACvD,GAAK+rR,GAAerrR,EAAKsJ,QAGrB+hR,EAAY,CAOZ,IANA,IAAI9+P,EAAapC,EAAMoC,WACnBpC,EAAMoC,aAAe8kQ,EAAGtnR,QAAUsnR,EAAG9kQ,WAAcsG,EAAOA,EAAK33B,SAAS,GAAGsyB,aAAe,GAE1FnmB,EADS1L,EAAMkmB,OACIxa,UAAagqR,EAAG99P,KAAOhH,EAE1Cy8C,GADJhpE,EAAOmqB,EAAM0rG,KAAKy1J,yBAAyBtrR,EAAMqrR,IAChC,GAAGA,GACX1jR,EAAI,EAAGA,EAAI3H,EAAKsJ,UACjBijB,EAAa5kB,EAAIN,GADQM,IAIzB3H,EAAK2H,IAAM3H,EAAK2H,GAAG0jR,KACnBriN,EAAQhpE,EAAK2H,GAAG0jR,IAGpBriN,IAAU7+C,EAAM3vB,MAAMwuE,OACtB7+C,EAAM6L,SAAS,CACXgzC,MAAOA,GAGnB,CACJ,EACA7+C,EAAMywQ,iBAAmB,SAAUj/R,GAC/B,IAAIuD,EACAi8R,OAAkCxgS,IAAvBwvB,EAAMxkB,MAAM4E,OAAuB4f,EAAMxkB,MAAM4E,OAAS4f,EAAM3vB,MAAMgL,KAC/E8H,EAAY6c,EAAMxkB,MAAM2H,UAC5B,GAAK6tR,EAAL,CAGA,IAAI3gS,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EACvB,IAAIsP,EAAOqC,IAAapO,EAAK,CAAC,GAAMoO,GAAa6tR,EAAUj8R,GAAMi8R,OACxCxgS,IAArBwvB,EAAM3vB,MAAMgL,OACZhL,EAAMwF,KAAKwF,KAAO,IAEtBhL,EAAMwF,KAAK6kP,kBAAelqP,EAC1BwvB,EAAM0rG,KAAKk7J,cAAc,GAAIv2R,GAC7B,IAAIy3N,EAAW/nJ,EAAcA,EAAc,GAAI//C,EAAMjd,OAAO,GAAO,CAACjC,IAAO,GAC3Ekf,EAAM6gQ,gBAAgB/4D,EAAUz3N,GAChC2vB,EAAM0rG,KAAKu1J,YAAY5wR,GACvB2vB,EAAMgiQ,WAAW3xR,EAZjB,CAaJ,EACA2vB,EAAMwsQ,mBAAqB,SAAUh7R,GACjC,IAAIs6C,EAAQ9rB,EAAM0rB,QACb1rB,EAAM7b,QAAU2nC,GACjB9rB,EAAMi9N,aAAanxM,GAEvB,IAAIz7C,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EAClBwuB,EAAM3vB,MAAM8iC,SAAYnT,EAAMoG,aAC/B/1B,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,YAC1BzG,EAAMwF,KAAKs9B,SAAU,GAErBnT,EAAMoG,aACNpG,EAAM6L,SAAS,CAAElU,aAAcqI,EAAMixQ,eACjCjxQ,EAAMoG,YACN/vB,OAAOi3B,YAAW,WAAc,OAAOtN,EAAMyvQ,gBAAkBzvQ,EAAMyvQ,eAAelqQ,OAAS,GAAG,MAGxGvF,EAAM0rG,KAAKu1J,YAAY5wR,GACvB2vB,EAAMgiQ,WAAW3xR,EACrB,EACA2vB,EAAM++N,gBAAkB,SAAU7sO,EAAO1gB,GACrC,IAAInB,EAAQ2vB,EAAM0rG,KAAK41J,YACvBjxR,EAAMq/B,eAAiBl+B,EACvBwuB,EAAM2gQ,iBAAiBzuQ,EAAO7hB,GAC1B2vB,EAAMxkB,MAAMiF,YAAcuf,EAAMoG,YAChCpG,EAAM0rG,KAAKu1J,YAAY5wR,GAE3BmB,EAAMs+B,kBACN9P,EAAMgiQ,WAAW3xR,EACrB,EACA2vB,EAAMmH,WAAa,SAAU31B,GACzB,GAAKwuB,EAAM3vB,MAAM8iC,UAAWnT,EAAMqqQ,gBAAlC,CAGA,IAAIh6R,EAAQ2vB,EAAM0rG,KAAK41J,YACnBvsR,EAAKirB,EAAMxkB,MAAOwtR,EAAcj0R,EAAGi0R,YAAa1pR,EAAavK,EAAGuK,WACpEjP,EAAMq/B,eAAiBl+B,EACvBnB,EAAMwF,KAAKs9B,SAAU,EACrB9iC,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,WACtBkpB,EAAM7b,SAAW6b,EAAMoG,aACnBpG,EAAM3vB,MAAM8T,SACZ9T,EAAMwF,KAAKsO,QAAS,GAExB9T,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,aAEzBkyR,GAAgB1pR,IAAc0gB,EAAM3vB,MAAMgL,OAC3ChL,EAAMwF,KAAKwF,KAAO,IAEtB2kB,EAAMgiQ,WAAW3xR,EAfjB,CAgBJ,EACA2vB,EAAMiH,YAAc,SAAUz1B,GACtBwuB,EAAMqqQ,iBAGVrqQ,EAAM0rG,KAAKzkG,YAAYz1B,EAC3B,EACAwuB,EAAMmmQ,cAAgB,WACdnmQ,EAAM0rB,QAAU1rB,EAAM3vB,MAAM8iC,UAAYnT,EAAMoG,YAC9CpG,EAAMi9N,aAAaj9N,EAAM0rB,OAEjC,EACA1rB,EAAM4qQ,cAAgB,WACd5qQ,EAAM3vB,MAAM8iC,SACZ98B,OAAOi3B,YAAW,WAAkBtN,EAAM3vB,MAAM8iC,SAC5CnT,EAAMi9N,aAAaj9N,EAAM0rB,OAC3B,GAAG,EAEb,EACA1rB,EAAM0vP,YAAc,WACZ1vP,EAAM0rB,QAAU1rB,EAAM0rB,OAAOikO,mBAC7B3vP,EAAM0rB,OAAOikO,kBAAkB3vP,EAAMmV,SAASjB,MACxC,GACAlU,EAAMxkB,MAAMw4B,mBAxjBT,8BA0jBjB,GACAR,EAAAA,EAAAA,GAAgBC,EAAAA,GACTzT,CACX,CAybA,OA3+BAuD,EAAU8rQ,EAA2BvqQ,GAmjBrC7kB,OAAO6nB,eAAeunQ,EAA0B7xQ,UAAW,WAAY,CACnEuK,IAAK,WACD,GAAKrF,EAAAA,EAIL,OAAQpF,KAAKqI,SAAWrI,KAAKqI,QAAQgO,eAAkB7nB,QAC3D,EACAkc,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeunQ,EAA0B7xQ,UAAW,UAAW,CAElEuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeunQ,EAA0B7xQ,UAAW,SAAU,CAEjEuK,IAAK,WAED,cADmCv3B,IAAtB8sB,KAAK9hB,MAAM2I,OAAuBmZ,KAAK9hB,MAAM2I,OAASmZ,KAAKjtB,MAAM8T,OAElF,EACA6jB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeunQ,EAA0B7xQ,UAAW,eAAgB,CAEvEuK,IAAK,WACD,IAAIhzB,EAAKuoB,KAAK9hB,MAAOi3J,EAAO19J,EAAG09J,KAAMtvJ,EAAYpO,EAAGoO,UAChD8tR,EAAe,GASnB,YARazgS,IAATiiK,EACAn1I,KAAKva,MAAMkJ,SAAQ,SAAUnL,GACzBmwR,EAAa3yQ,KAAK,CAAEjjB,MAAMulR,EAAAA,EAAAA,IAAa9/Q,EAAMqC,GAAYtN,KAAM,CAACiL,IACpE,IAGAmwR,EAAa3yQ,KAAKb,MAAMwzQ,EAAcx+H,GAEnCw+H,CACX,EACAjpQ,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeunQ,EAA0B7xQ,UAAW,aAAc,CAIrEuK,IAAK,WAED,SADiBzK,KAAKjtB,MAAM8hC,aAAe7U,KAAKjtB,MAAM8hC,aAAeyB,EAAAA,GAAwBtW,KAAK9hB,MAAMq4B,SAE5G,EACA7L,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeunQ,EAA0B7xQ,UAAW,QAAS,CAIhEuK,IAAK,WACD,IAAI/tB,EAAS,GAab,OAZIsjB,KAAKiyQ,0BACLv1R,EAAOskB,KAAKb,MAAMzjB,EAAQsjB,KAAKiyQ,2BAE1BjyQ,KAAK9hB,MAAMuH,MAChB/I,EAAOskB,KAAKb,MAAMzjB,EAAQsjB,KAAK9hB,MAAMuH,OAEhCua,KAAKjtB,MAAM0S,MAChB/I,EAAOskB,KAAKb,MAAMzjB,EAAQsjB,KAAKjtB,MAAM0S,OAEhCua,KAAK9hB,MAAM3H,cAChBmG,EAAOskB,KAAKb,MAAMzjB,EAAQsjB,KAAK9hB,MAAM3H,cAElCmG,CACX,EACAguB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeunQ,EAA0B7xQ,UAAW,OAAQ,CAI/DuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMpI,IACtB,EACA40B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeunQ,EAA0B7xQ,UAAW,WAAY,CAInEuK,IAAK,WACD,IAAIgM,OAA+CvjC,IAAjC8sB,KAAK9hB,MAAMw4B,kBACzBviC,GAAY6rB,KAAK2W,UACE,OAAf3W,KAAKva,OAAkBua,KAAKva,MAAM5D,OAAS,QAAoB3O,IAAf8sB,KAAKva,MAE7D,MAAO,CACHgxB,YAAaA,EACbG,WAH6B1jC,IAArB8sB,KAAK9hB,MAAM04B,MAAsB5W,KAAK9hB,MAAM04B,MAAQziC,EAI5D4iC,aAA6B,OAAf/W,KAAKva,MAE3B,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeunQ,EAA0B7xQ,UAAW,WAAY,CAEnEuK,IAAK,WACD,YAA+Bv3B,IAAxB8sB,KAAK9hB,MAAMy4B,SACZ3W,KAAK9hB,MAAMy4B,SACXo7P,EAA0B1oQ,aAAasN,QACjD,EACAjM,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeunQ,EAA0B7xQ,UAAW,iBAAkB,CACzEuK,IAAK,WACD,YAAqCv3B,IAA9B8sB,KAAK9hB,MAAM84B,eACZhX,KAAK9hB,MAAM84B,eACX+6P,EAA0B1oQ,aAAa2N,cACjD,EACAtM,YAAY,EACZC,cAAc,IAGlBonQ,EAA0B7xQ,UAAU8K,mBAAqB,SAAUukB,EAAWw2J,GAC1E,IAAItuM,EACAI,EAAKmoB,KAAK9hB,MAAOwqR,EAAU7wR,EAAG6wR,QAASxwR,EAAKL,EAAG+rR,WAAYA,OAAoB,IAAP1rR,EAAgB,GAAKA,EAAIG,EAAKR,EAAGU,KAAMA,OAAc,IAAPF,EAAgB,GAAKA,EAC3IyzB,EAAO48P,EAAUA,EAAQ58P,KAAO,EAChC0+P,EAAYj7O,EAAUm5O,QAAUn5O,EAAUm5O,QAAQnnQ,MAAQ,EAC1DmkQ,OAAkCxyR,IAArBq8C,EAAU1oC,OAAuB0oC,EAAU1oC,OAASk/L,EAAUl/L,OAC3E8+Q,GAAWD,GAAc1lQ,KAAKnZ,OAC9B+sR,EAAUlO,IAAe1lQ,KAAKnZ,OAKlC,IAJoBmZ,KAAKouG,KAAK64J,mBACXh8P,SAAW2oQ,GAC1B5zQ,KAAKstQ,gBAEL5E,GAAWA,EAAQnnQ,QAAUipQ,EAC7BxqQ,KAAKouG,KAAKw7J,GAAGe,0BACb3qQ,KAAKouG,KAAKw7J,GAAGt6M,YAEZ,CACD,IAAI72E,EAAKunB,KAAK0yQ,kBAAmBjP,EAAchrR,EAAGgrR,YAAarmC,EAAe3kP,EAAG2kP,aAC9D,KAAfwmC,IACAxmC,EAA+E,QAA/D3lP,EAAKuoB,KAAKouG,KAAKy1J,yBAAyBtrR,EAAMqrR,UAAgC,IAAPnsR,OAAgB,EAASA,EAAGwjC,QAAQwoP,IAE3HkC,GAAW+C,EACX1oQ,KAAKouG,KAAK28J,oBAAoBrC,EAAStrC,EAAetxN,GAEjD65P,IAAY+C,GAEbnwR,GAAwB,IAAhBA,EAAKsJ,QACbme,KAAKouG,KAAK03J,uBAAuBvtR,EAAK,GAAGqrR,GAAa5jQ,MAE1DA,KAAKouG,KAAKw3J,aAAaxoC,IAElBp9N,KAAKnZ,QAAU6+Q,GAAcjC,GAAezjQ,KAAKqyQ,iBACtDryQ,KAAKouG,KAAKw3J,aAAaxoC,EAAetxN,EAE9C,CACA9L,KAAKqyQ,iBAAkB,EACvBryQ,KAAKoyP,aACT,EAEA2f,EAA0B7xQ,UAAU4K,kBAAoB,WACpD,IAAIrzB,EACJuoB,KAAKiX,eAAiB7R,EAAAA,GAAarsB,OAAOm+B,gBAAkB,IAAIn+B,OAAOm+B,eAAelX,KAAKmX,eAAetI,KAAK7O,OAC/GA,KAAKouG,KAAK23J,WACV/lQ,KAAKoyP,eACyB,QAAxB36Q,EAAKuoB,KAAKxR,gBAA6B,IAAP/W,OAAgB,EAASA,EAAG4X,OAAS2Q,KAAKiX,gBAC5EjX,KAAKiX,eAAeG,QAAQpX,KAAKxR,SAASa,KAElD,EAEA0iR,EAA0B7xQ,UAAU6O,qBAAuB,WACvD,IAAIt3B,GAC0B,QAAxBA,EAAKuoB,KAAKxR,gBAA6B,IAAP/W,OAAgB,EAASA,EAAG4X,OAAS2Q,KAAKiX,gBAC5EjX,KAAKiX,eAAeI,YAE5B,EAEA06P,EAA0B7xQ,UAAU8kQ,WAAa,SAAUjyR,EAAOs3B,EAAS+6P,GACvE,IAAI3tR,EAAKuoB,KAAK9hB,MAAOwtR,EAAcj0R,EAAGi0R,YAAa7zR,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EACzFkG,OAA6B7K,IAAtB8sB,KAAK9hB,MAAM4E,OAAuBkd,KAAK9hB,MAAM4E,OAASkd,KAAKjtB,MAAMgL,KACxE7F,EAAK8nB,KAAK0yQ,kBAAmBW,EAAcn7R,EAAGm7R,YAAaj2C,EAAellP,EAAGklP,aAC7Eu1C,EAAajH,GAAe3tR,EAC5B81R,EAAoBhC,EAASwB,GAC7BjlK,EAAOpuG,KAAKouG,KACZw7J,EAAKx7J,EAAKw7J,GACd,GAAI5pQ,KAAKnZ,QAAUwjB,IAAYtD,EAAAA,EAAKG,IAAM2sQ,OACN3gS,IAA5B8sB,KAAKjtB,MAAMqqP,eACXrqP,EAAMwF,KAAK6kP,kBAAelqP,OAG7B,CACD,IAAI0qP,EAAaxvH,EAAK/6F,WAAWkN,SAAS,CACtClW,QAASA,EACTh2B,QAAS+oP,EACTloO,KAAM00Q,EAAGtnR,QAAUsnR,EAAGroQ,MAAQhpB,EAAKsJ,QAAU,EAC7CkT,IAAK49Q,GAAc,EAAI,EACvBvN,UAAWA,QAAwBlyR,SAEpBA,IAAf0qP,IACA59N,KAAKwjQ,UAAU5lC,EAAY7qP,GAC3BitB,KAAKqyQ,iBAAkB,EAE/B,CACAryQ,KAAK0kQ,WAAW3xR,EACpB,EAEAg/R,EAA0B7xQ,UAAUnrB,OAAS,WACzC,IAAI0C,EAAII,EACJK,EAAK8nB,KAAK9hB,MAAOxK,EAAQwE,EAAGxE,MAAOG,EAAYqE,EAAGrE,UAAWgC,EAAQqC,EAAGrC,MAAO8lB,EAAMzjB,EAAGyjB,IAAKzhB,EAAWhC,EAAGgC,SAAU2L,EAAY3N,EAAG2N,UAAW1D,EAAcjK,EAAGiK,YAAaumR,EAAUxwR,EAAGwwR,QAASnvR,EAAOrB,EAAGqB,KAAM+9B,EAAUp/B,EAAGo/B,QAASnzB,EAAWjM,EAAGiM,SAAUya,EAAU1mB,EAAG0mB,QAAS9b,EAAS5K,EAAG4K,OACnSzK,EAAK2nB,KAAKjtB,MAAOgL,EAAO1F,EAAG0F,KAAM83B,EAAUx9B,EAAGw9B,QAASi+P,EAAaz7R,EAAGy7R,WAAYz5Q,EAAehiB,EAAGgiB,aACrGuvQ,EAAK5pQ,KAAKouG,KAAKw7J,GACfx2R,EAAK4sB,KAAK9hB,MAAM9K,IAAM4sB,KAAKkyP,SAC/B0X,EAAGtnR,aAAsBpP,IAAZw1R,OACGx1R,IAAZw1R,IACAkB,EAAG99P,KAAO48P,EAAQ58P,KAClB89P,EAAGroQ,MAAQmnQ,EAAQnnQ,MACnBqoQ,EAAG2B,SAAW7C,EAAQ6C,UAE1B,IAAIwI,EAAuB/zQ,KAAK8I,YAAc9I,KAAKnZ,OAAUwT,EAAe2F,KAAK2zQ,aACjF3zQ,KAAKg0Q,SAASh0Q,KAAK2zQ,aAAc3zQ,KAAKkyQ,OACtC,IAAI/9R,GAAW6rB,KAAKgX,gBAAkBhX,KAAK6X,SAASjB,MAChDqvP,EAAcr7P,aAAmB13B,IAAX4P,EAAuBA,EAAS/E,IAClDg2R,GAAuBA,EAAoBlyR,OAAS,EACxD9L,EAAaxC,EAAAA,cAAoBA,EAAAA,SAAgB,KACjDA,EAAAA,cAAoB,MAAO,CAAEQ,IAAKisB,KAAK8oQ,aAAcj1R,WAAWu7B,EAAAA,EAAAA,GAAW,wBAAyBv7B,GAAY4D,EAAK,CAAC,EAC9GA,EAAG,WAAWyM,OAAOm0B,EAAQ9+B,IAASA,IAASA,EAC/C9B,EAAG,aAAayM,OAAOo0B,EAAWhB,IAAYA,IAAYA,EAC1D7/B,EAAG,WAAWyM,OAAOC,IAAaA,EAClC1M,EAAG,WAAao+B,IAAY37B,EAC5BzC,EAAG,cAAgBtD,EACnBsD,EAAG,cAAgByC,EACnBzC,EAAG,aAAemnB,EAClBnnB,EAAG,cAAgBuoB,KAAK2W,SACxBl/B,IAAM/D,MAAQmC,EAEZgf,EAASA,EAAS,CAAC,EAAGnhB,GAAQ,CAAE2G,WAAOnH,IADvCQ,EACqDioB,IAAKA,EAAKiO,QAAS5J,KAAK2J,YAAaG,OAAQ9J,KAAK6J,WAAYx0B,QAAS2qB,KAAKkvQ,mBAAoBr/P,YAAaokQ,EAAAA,IACxK1gS,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,mBAC/C77B,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,eAAgBv3B,EAAK,CAAC,EAAGA,EAAG,eAAeqM,OAAOm0B,EAAQ9+B,IAASA,IAASA,EAAM1B,IAAME,KAAM,UAAW3E,GAAI,YAAc4sB,KAAKouG,KAAKj6F,MAAQ4/P,GAAuBA,EAAoBlyR,OAAS,GAAKtO,EAAAA,cAAoB2gS,EAAAA,EAAS,CAAEC,UAAWn0Q,KAAK9hB,MAAMi2R,UAAW5B,YAAavyQ,KAAKuyQ,YAAah6R,KAAMw7R,EAAqB5/P,KAAMnU,KAAKouG,KAAKj6F,KAAM0B,QAASi+P,EAAaC,EAAoB7lR,MAAK,SAAUtR,GAAK,OAAOw3R,EAAAA,EAAAA,IAAUx3R,EAAGk3R,EAAY3xR,EAAc,SAAKjP,EAAWqG,KAAMA,KAC3gBymB,KAAKkmQ,gBAAgB9yR,IACzBwrB,GAAWrrB,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,uBAAwBiC,KAAM,YACpFmwR,GAAe1yR,EAAAA,cAAoB4yR,EAAAA,EAAa,CAAE9wR,QAAS2qB,KAAK2kQ,oBAC/D3kQ,KAAK8I,YAAc9I,KAAKomQ,uBAC7BpmQ,KAAK8I,YAAc9I,KAAKyrQ,+BAC5B,OAAO51R,EAAStC,EAAAA,cAAoBkqE,EAAAA,EAAe,CAAE5nE,MAAOA,EAAOwjC,SAAUjmC,EAAIsqE,YAAa3/D,IAAQulR,EAAAA,EAAAA,IAAatjQ,KAAKva,MAAM,GAAII,GAAYyzB,YAAanlC,EAASolC,eAAgBr/B,EAAUxG,MAAO,CAAE2G,MAAO3G,EAAQA,EAAM2G,WAAQnH,GAAaO,SAAUsC,IAAgBA,CAC/Q,EACAg8R,EAA0B7xQ,UAAUgmQ,gBAAkB,SAAU9yR,GAC5D,IAAIqE,EAAKuoB,KAAKjtB,MAAO8zR,EAAmBpvR,EAAGovR,iBAAkBiN,EAAar8R,EAAGq8R,WAAYz5Q,EAAe5iB,EAAG4iB,aACvGxiB,EAAKmoB,KAAK9hB,MAAOhE,EAAWrC,EAAGqC,SAAUqD,EAAc1F,EAAG0F,YAAak6B,EAAkB5/B,EAAG4/B,gBAC5F15B,GAAQiiB,KAAK8I,kBAAqC51B,IAAtB8sB,KAAK9hB,MAAM4E,OAAuBkd,KAAK9hB,MAAM4E,OAASkd,KAAKjtB,MAAMgL,OAAS,GACtGq/O,EAAep9N,KAAK0yQ,kBAAkBt1C,aACtCi3C,EAA0C,IAAtBr0Q,KAAKva,MAAM5D,QAAiB9D,OAAqB7K,EAAdqK,EACvD+2R,EAAuBj6Q,GAAgBA,EAAaxY,OAAS,OAAK3O,EAAYqK,EAC9Eg3R,EAAuB1N,IAAqB8K,EAAiB6C,eAA2BthS,IAAf4gS,EACzE,OAAO5vR,OAAO8b,KAAKouG,KAAKj6F,KAAM,KAAKjwB,OAAO4vR,EAAW/1R,KAAKmP,QAAQ,OAAQ,MAC1E,UAAUhJ,OAAO8b,KAAKouG,KAAKj6F,KAAM,KAAKjwB,OAAOk5O,GACjD,OAAQ7pP,EAAAA,cAAoBizR,EAAAA,EAAW,CAAEpzR,GAAIA,EAAImG,KAAMub,KAAKI,KAAKm/Q,GAAqB,IAAIxyR,OAAQ9D,EAAK8D,OAAQ,GAAI0pB,SAAUvL,KAAK9hB,MAAMqtB,SAAUkzN,UAAWz+N,KAAK9hB,MAAMugP,UAAWlhP,YAAayiB,KAAK8I,YAAc9I,KAAKnZ,OAASytR,EAAsBD,EAAmB5uR,MAAO1H,EAAMyH,SAAUwa,KAAK+jQ,gBAAiBt4P,UAAWzL,KAAK4kQ,eAAgB7wR,IAAKisB,KAAK6yQ,aAAc34R,SAAUA,EAAUqoE,SAAUviD,KAAKnZ,OAAQ8/Q,KAAM3mQ,KAAKouG,KAAKw4J,UAAW7uR,KAAM,WAAY8uR,iBAAkB0N,EAAsB98P,gBAAiB,YAAYvzB,OAAO8b,KAAKouG,KAAKj6F,MAAMjwB,OAAOuzB,EAAmB,IAAMA,EAAmB,IAAKD,eAAgBxX,KAAK9hB,MAAMs5B,eAAgBsvP,aAAc9mQ,KAAK2W,UAC7pB,EACAo7P,EAA0B7xQ,UAAU4yQ,eAAiB,SAAU5+R,EAAOnB,GAClE,IAAIs3B,EAAUn2B,EAAMm2B,QAChBypQ,EAAa9zQ,KAAKjtB,MAAM+gS,WACxB3+H,EAAOn1I,KAAKkyQ,MACZuC,EAAWz0Q,KAAK9hB,MAAMiE,YACtBi7O,EAAe02C,EACf3+H,EAAK70E,WAAU,SAAU1jF,GAAK,OAAOw3R,EAAAA,EAAAA,IAAUx3R,EAAGk3R,EAAYW,EAAW,KAAM,EAC/EC,OAAgBxhS,EAChByhS,GAA+B,IAAlBv3C,EACjB,GAAI/yN,IAAYtD,EAAAA,EAAKrX,KAOjBglR,EAAgBv/H,EALZioF,EADAu3C,EACe7/Q,KAAKI,IAAI,EAAGkoO,EAAe,GAG3BjoF,EAAKtzJ,OAAS,QAIhC,GAAIwoB,IAAYtD,EAAAA,EAAKltB,MAClBujP,IAAiBjoF,EAAKtzJ,OAAS,EAC/B6yR,OAAgBxhS,EAEXyhS,IAELD,EAAgBv/H,EADhBioF,EAAetoO,KAAKC,IAAIogJ,EAAKtzJ,OAAS,EAAGu7O,EAAe,UAI3D,GAAI/yN,IAAYtD,EAAAA,EAAKE,MAAS/yB,EAAMy/L,SAGpC,GAAItpK,IAAYtD,EAAAA,EAAKC,KAAQ9yB,EAAMy/L,UAGnC,GAAItpK,IAAYtD,EAAAA,EAAK0tB,QACtB,GAAIkgP,EAAY,CACZ,IAAIliR,EAAQuN,KAAKva,OACjBgtR,EAAAA,EAAAA,IAAgBhgR,EAAO0iJ,EAAKioF,GAAc7kP,KAAMk8R,GAChDz0Q,KAAKujQ,gBAAgB9wQ,EAAO1f,EAChC,OAEC,GAAIs3B,IAAYtD,EAAAA,EAAK+1J,UAAW,CAC7BrqK,EAAQuN,KAAKva,MACjB,GAAIkvR,GACAlC,EAAAA,EAAAA,IAAgBhgR,EAAO0iJ,EAAKioF,GAAc7kP,KAAMk8R,GAChDz0Q,KAAKujQ,gBAAgB9wQ,EAAO1f,QAE3B,IAAK4hS,GAAcx/H,EAAKtzJ,OAAQ,CACjC,IAAIkmK,EAAU5S,EAAKn2G,OACnByzO,EAAAA,EAAAA,IAAgBhgR,EAAOs1J,EAAQxvK,KAAMk8R,GACrCz0Q,KAAKujQ,gBAAgB9wQ,EAAO1f,EAChC,CACJ,OApBI2hS,EAAgBv/H,EAAKA,EAAKtzJ,OAAS,QAHnC6yR,EAAgBv/H,EAAK,GAwBrBu/H,IAAkBZ,IAClB/gS,EAAMwF,KAAKu7R,WAAaY,EACxB3hS,EAAMwF,KAAKsuR,iBAAmB8K,EAAiB6C,UAEnDx0Q,KAAK0kQ,WAAW3xR,EACpB,EACAg/R,EAA0B7xQ,UAAUqjQ,gBAAkB,SAAU9wQ,EAAO1f,QAC1CG,IAArB8sB,KAAK9hB,MAAMuH,QACX1S,EAAMwF,KAAKkN,MAAQg9D,EAAc,GAAIhwD,GAAO,IAEhDuN,KAAKiyQ,0BAA4B,GACjCjyQ,KAAKg0Q,SAASvhR,EAAOuN,KAAKiyQ,2BAC1Bl/R,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,YAC9B,EACAu4R,EAA0B7xQ,UAAU2rQ,kBAAoB,SAAU33R,EAAO0gS,GACrE,IAAIn9R,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAI6wR,EAAUjxR,EAAGixR,QAC5EtrC,GAAgBw3C,GAAgB50Q,KAAK0yQ,mBAAmBt1C,kBAE1BlqP,IAA9BqF,EAAK6kP,GADEsrC,EAAUA,EAAQ58P,KAAO,KAEhC9L,KAAKyhO,gBAAgBrE,EAAclpP,EAE3C,EACA69R,EAA0B7xQ,UAAU8zQ,SAAW,SAAUa,EAAUC,GAC/DA,EAAUjzR,OAAS,EACnBizR,EAAU9zQ,KAAKb,MAAM20Q,EAAWD,EACpC,EACA9C,EAA0B7xQ,UAAUwyQ,gBAAkB,WAClD,IAIIqC,EAJA33C,EAAep9N,KAAKjtB,MAAMqqP,aAC1Br/O,OAA6B7K,IAAtB8sB,KAAK9hB,MAAM4E,OAAuBkd,KAAK9hB,MAAM4E,OAASkd,KAAKjtB,MAAMgL,KACxEtG,EAAKuoB,KAAK9hB,MAAOwtR,EAAcj0R,EAAGi0R,YAAa7zR,EAAKJ,EAAGc,KAAMA,OAAc,IAAPV,EAAgB,GAAKA,EAAIsK,EAAc1K,EAAG0K,YAAaumR,EAAUjxR,EAAGixR,QAAS7iR,EAAYpO,EAAGoO,UAAW3N,EAAKT,EAAGouR,iBAAkBA,OAA0B,IAAP3tR,EAAgBgwR,EAAAA,GAAsBhwR,EAAI2sR,EAAoBptR,EAAGotR,kBACzR/4P,EAAQ48P,GAAWA,EAAQ58P,MAAS,EAExC,QAAqB54B,IAAjBkqP,EACA,MAAO,CACHA,aAAcA,EACdqmC,YAAalrR,EAAK6kP,EAAetxN,GACjCunQ,YAAazB,EAAgBoD,UAGrC,IAAIv1R,EAAWugB,KAAKva,MACpB,GAAIimR,GAAe3tR,EACf,MAAO,CAAE0lR,YAAa,KAAMrmC,cAAe,EAAGi2C,YAAazB,EAAgBE,YAE1E,GAAI/zR,EAEL,MAAO,CACH0lR,YAAalrR,EAFjBw8R,EAAalP,EAAiBttR,EAAMwF,EAAM8H,IAGtCu3O,aAAc23C,EAAajpQ,EAC3BunQ,YAAazB,EAAgBoD,UAGhC,GAAIv1R,EAASoC,OAAQ,CACtB,IAAIozR,EAASx1R,EAASA,EAASoC,OAAS,GAExC,OADAkzR,EAAax8R,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAG+0R,EAAQ9yR,EAAc,SAC1DjP,IAArBqF,EAAKw8R,GACE,CACH33C,aAAc23C,EAAajpQ,EAC3B23P,YAAalrR,EAAKw8R,GAClB1B,YAAazB,EAAgBoD,UAG9B,CAAE3B,YAAazB,EAAgBsD,KAAM93C,cAAe,EAC/D,CACK,GAAIynC,GAAqBh/Q,IAAc9H,GAAiB,IAAT+tB,EAAY,CAC5D,IAAI+yI,EAAWtmK,EAAK+nF,WAAU,SAAUpgF,GAAK,OAAQA,EAAEhG,UAAYgG,EAAE2F,EAAY,IACjF,MAAO,CACHu3O,aAAcv+E,EACd4kH,YAAalrR,EAAKsmK,EAAW/yI,GAC7BunQ,YAAazB,EAAgBoD,SAErC,CACA,OAAgB,IAATlpQ,EACH,CAAE23P,YAAalrR,EAAK,GAAI6kP,aAAc,EAAGi2C,YAAazB,EAAgBoD,UACtE,CAAE3B,YAAazB,EAAgBsD,KAAM93C,cAAe,EAC5D,EACA20C,EAA0B7xQ,UAAUy/N,aAAe,SAAUt3N,GACzD,IAAI3F,EAAQ1C,KACZA,KAAK+sQ,iBAAkB,EACvB1kQ,EAAQJ,QACRlvB,OAAOi3B,YAAW,WAAc,OAAOtN,EAAMqqQ,iBAAkB,CAAO,GAAG,EAC7E,EACAgF,EAA0B7xQ,UAAUwkQ,WAAa,SAAU3xR,GACvDitB,KAAKouG,KAAKs2J,WAAW3xR,GACrBitB,KAAKiyQ,0BAA4B,IACrC,EACAF,EAA0B7xQ,UAAUiX,eAAiB,SAAUsC,GAC3D,IAAK,IAAIC,EAAK,EAAGC,EAAYF,EAASC,EAAKC,EAAU93B,OAAQ63B,IAAM,CAC/D,IAAIE,EAAQD,EAAUD,GACtB1Z,KAAKuO,SAAS,CAAEsG,YAAa+E,EAAMxf,OAAOyf,aAC9C,CAEJ,EASAk4P,EAA0B7xQ,UAAU8yQ,gCAAkC,SAAUD,EAAWhgS,GACvFitB,KAAKuO,SAAS,CAAE9oB,MAAOstR,IACvB/yQ,KAAKujQ,gBAAgBwP,EAAWhgS,GAChCitB,KAAK0kQ,WAAW3xR,EACpB,EAMAg/R,EAA0B7xQ,UAAUgzQ,iCAAmC,SAAUiC,EAAY/3C,GAIzF,OAH+C,OAA3Cp9N,KAAKoyQ,oCACLpyQ,KAAKoyQ,kCAAoCh1C,GAEK,OAA3Cp9N,KAAKoyQ,kCAA6CpyQ,KAAKoyQ,kCAAoC+C,EAAa,IACnH,EACApD,EAA0Bj4P,YAAc,cAExCi4P,EAA0B/lQ,UAAYnX,EAASA,EAAS,CAAC,EAAGquQ,EAAAA,EAAal3P,WAAY,CAAE7oB,UAAW8oB,EAAAA,KAAgBxmB,MAAOwmB,EAAAA,QAAkBA,EAAAA,KAAgB11B,aAAc01B,EAAAA,QAAkBA,EAAAA,KAAgB9pB,YAAa8pB,EAAAA,OAAkB1uB,YAAa0uB,EAAAA,OAAkBkpI,KAAMlpI,EAAAA,QAAkBA,EAAAA,MAAgB,CACzSluB,KAAMkuB,EAAAA,OACN1zB,KAAM0zB,EAAAA,QAAkBA,EAAAA,QACvBkoQ,UAAWloQ,EAAAA,KAAgB74B,GAAI64B,EAAAA,OAAkBuL,eAAgBvL,EAAAA,OAAkBwL,gBAAiBxL,EAAAA,OAAkB23P,WAAY33P,EAAAA,OAAkBb,KAAMa,EAAAA,IAAesK,SAAUtK,EAAAA,KAAgBmJ,cAAenJ,EAAAA,OAAkBqJ,SAAUrJ,EAAAA,KAAgB44P,kBAAmB54P,EAAAA,OAE1R8lQ,EAA0B1oQ,aAAexU,EAASA,EAAS,CAAC,EAAGquQ,EAAAA,EAAa75P,cAAe,CAAElmB,WAAW,EAAMwzB,UAAU,EAAOp9B,KAAM,SAAU+9B,QAAS,SAAUnzB,SAAU,QAASojR,UAAW,SAAU1C,mBAAmB,IACtNkN,CACX,CA7+B+C,CA6+B7Cx+R,EAAAA,WAQS6hS,GAA0B96P,EAAAA,EAAAA,KA2B1B4iC,GAAc1iC,EAAAA,EAAAA,GAAiB46P,EAAyBrD,GACnE70N,EAAYpjC,YAAc,4FCrlCtB7T,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAiBzCpM,EAAiB,SAAU/gB,GAAS,OAAOA,EAAMk+B,eAAend,gBAAkB,EAClFud,EAAkB,SAAUt+B,GAAS,OAAOA,EAAMk+B,eAAeI,iBAAmB,EAoBxF,QAhB6B,SAAUhL,GAEnC,SAAS0sQ,IACL,OAAkB,OAAX1sQ,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAUA,OAbAiG,EAAUiuQ,EAAS1sQ,GAInB0sQ,EAAQh0Q,UAAUnrB,OAAS,WACvB,IAAI0C,EAAKuoB,KAAK9hB,MAAO3F,EAAOd,EAAGc,KAAM47B,EAAO18B,EAAG08B,KAAM0B,EAAUp+B,EAAGo+B,QAASs+P,EAAY18R,EAAG08R,UAAWkB,EAAe59R,EAAG4M,IAAKkuR,EAAc96R,EAAG86R,YAAah5R,EAAO9B,EAAG8B,KACpK,OAAQhG,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCgF,EAAK0H,KAAI,SAAUq1R,EAAS1gR,GACxB,IAAIvQ,EAAMgxR,EAAgB9hS,EAAAA,cAAoB8hS,EAAc,CAAE/pQ,IAAKgqQ,EAAQv3R,KAAO6W,EAAO0gR,QAASA,EAASnhQ,KAAMA,EAAM2/P,WAAYj+P,EAAS08P,YAAaA,IAAmBh/R,EAAAA,cAAoB0Q,EAAAA,EAAM,CAAE7Q,GAAI,OAAO8Q,OAAOiwB,EAAM,KAAKjwB,OAAOoxR,EAAQv3R,KAAKmP,QAAQ,OAAQ,MAAO,iBAAiB,EAAMnV,KAAM,SAAU,eAAgBQ,EAAKsJ,OAAQypB,IAAKgqQ,EAAQv3R,KAAO6W,EAAO7W,KAAMu3R,EAAQv3R,KAAM28O,WAAW,EAAMnwM,SAAU,SAAU7wC,GAAK,OAAO64R,EAAY9rQ,UAAKvzB,EAAWoiS,EAAQ/8R,KAAMmB,EAAE04B,eAAiB,EAAGvC,YAAa5a,EAAgB5f,QAASm9B,EAAiB3+B,UAAWyhS,IAAYz/P,EAAU,eAAY3iC,EAAWqG,KAAMA,IACzmB,OAAO46R,EAAYA,EAAUmB,EAASjxR,GAAOA,CACjD,IACA2b,KAAK9hB,MAAMzK,SACnB,EACOygS,CACX,CAf6B,CAe3B3gS,EAAAA,uHCrCEshB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAQW8I,EAAe,SAAUt3B,GAChC,IAAIm3B,EAASn3B,EAAMm3B,OAAQ5hC,EAAWyK,EAAMzK,SAAUgE,EAAKyG,EAAM22B,YAAaA,OAAqB,IAAPp9B,EAAgB,EAAIA,EAAIymQ,EAAchgQ,EAAMggQ,YAAa8Q,EAAsB9wQ,EAAM8wQ,oBAAqB75O,EAASj3B,EAAMi3B,OAAQr1B,EAAY5B,EAAM4B,UAAWgK,EAAU5L,EAAM4L,QAASsrB,EAAgBl3B,EAAMk3B,cAAe65O,EAAe/wQ,EAAM+wQ,aACzU5lP,EAAe,CACf60O,YAAaA,IAAe,EAC5B8Q,oBAAqBA,GAAuB,GAC5C75O,OAAQA,EACRr1B,WAAyB,IAAdA,EACXgK,QAASA,EACTolQ,gBAAiBr6O,GAVC,IAUoC,CAAEj7B,IAAK,EAAGS,MAAO,OAAQgB,OAAQ,aAAWnI,EAClGW,UAAWghC,GAXO,IAYZ,kDACA,+CAEV,OAAQthC,EAAAA,cAAoB47Q,EAAAA,EAAat6P,EAAS,CAAC,EAAGwU,GAClD91B,EAAAA,cAAoB67Q,EAAAA,EAAmB,CAAEv7Q,UAAW,iBAChDN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,uCACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,uBACpCN,EAAAA,cAAoB,MAAO,KAAM6hC,IACrC7hC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,yBACpCN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,SAAU,EAAG,aAAc,SAAU,gBAAiB,QAAS/xB,KAAM,SAAU2K,SAAU,OAAQ/O,KAAM,IAAKujC,QAAS0S,EAAAA,IAAOh2C,QAASyU,MAC3KmlQ,GACI17Q,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qDAAuDo7Q,IACvGx7Q,EACA4hC,GAAU9hC,EAAAA,cAAoB87Q,EAAAA,EAAmB,CAAEx7Q,UAAW,iCAC1DN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEoE,KAAM,QAASgyB,SAAU,EAAG,aAAc8J,EAAOP,WAAY,gBAAiB,QAASt7B,KAAM,SAAUnE,QAASggC,EAAOC,UAAYD,EAAOP,YACxKvhC,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,SAAU,EAAGxxB,WAAY,UAAWR,KAAM,QAAS,aAAc87B,EAAOL,UAAW,gBAAiB,QAASx7B,KAAM,SAAUnE,QAASggC,EAAOE,SAAWF,EAAOL,YACzM,qGC5CI/O,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAuBzC8kQ,EAA6B,SAAU3+P,GAEvC,SAAS2+P,IACL,IAAIzjQ,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAEhE,OADA0C,EAAMmN,YAAc,SAAUn2B,GAAK,OAAOA,EAAEub,gBAAkB,EACvDyN,CACX,CAMA,OAXAuD,EAAUkgQ,EAAa3+P,GAMvB2+P,EAAYjmQ,UAAUnrB,OAAS,WAC3B,IAAIiL,GAAQsvB,EAAAA,EAAAA,IAA2BtP,MAAMwP,iBAAiB+wB,EAAAA,GAAO7wB,EAAAA,GAAS6wB,EAAAA,KAC9E,OAAQhtD,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,gBAAiBkE,KAAM,SAAU1C,QAAS2qB,KAAK9hB,MAAM7I,QAASw6B,YAAa7P,KAAK6P,YAAatE,UAAW,EAAGvrB,MAAOA,EAAOsrB,IAAK,eAC3K/3B,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,IAAKV,KAAMi2C,EAAAA,MACzD,EACO86O,CACX,CAbiC,CAa/B5yR,EAAAA,WACF,WACAm9B,EAAAA,EAAAA,IAAwBy1P,yEC0HxB,QA5JmC,WAC/B,SAASoP,IACL,IAAI7yQ,EAAQ1C,KACZA,KAAKmF,UAAY,KACjBnF,KAAKw1Q,cAAgB,KACrBx1Q,KAAKoL,KAAO,KACZpL,KAAKy1Q,gBAAkB,EACvBz1Q,KAAK8L,KAAO,EACZ9L,KAAKuB,MAAQ,EACbvB,KAAK1d,SAAU,EACf0d,KAAKurQ,SAAW,EAChBvrQ,KAAK8E,WAAa,EAClB9E,KAAK01Q,WAAa,KAClB11Q,KAAK21Q,cAAgB,EACrB31Q,KAAK41Q,cAAgB,EACrB51Q,KAAK61Q,eAAgB,EACrB71Q,KAAKqsQ,YAAc,SAAUhkQ,GACzB,IAAIuhQ,EAAKlnQ,EACTknQ,EAAGzkQ,UAAYkD,EACXA,IACAA,EAAQ6/B,aAAa,eAAgB,MACrCnvD,OAAOi3B,WAAW45P,EAAGe,wBAAwB97P,KAAK+6P,GAAK,GAE/D,EACA5pQ,KAAK2qQ,wBAA0B,WAC3BjoQ,EAAMmzQ,eAAgB,EACtB,IAAIC,GAAgB,EACpBpzQ,EAAMoC,WAAapC,EAAM0I,KAAO1I,EAAM0I,KAAK33B,SAAS,GAAGsyB,aAAerD,EAAMoC,WAC5EpC,EAAM+yQ,gBAAkB3gR,KAAKC,IAhCvB,QAgCwC2N,EAAMoC,WAAapC,EAAMnB,OACvE,IAAIkwL,EAAY/uL,EAAM+yQ,gBAQtB,OAPI/yQ,EAAM8yQ,gBACNM,EAAgBpzQ,EAAM8yQ,cAAc9hS,MAAM2H,SAAWo2M,EAAY,QAE7D/uL,EAAM8yQ,cAAc9hS,MAAM2H,OAASo2M,EAAY,MAGvD/uL,EAAMmzQ,eAAgB,EACfC,CACX,EACA91Q,KAAK6pQ,cAAgB7pQ,KAAK6pQ,cAAch7P,KAAK7O,KACjD,CAkHA,OAjHArd,OAAO6nB,eAAe+qQ,EAAcr1Q,UAAW,YAAa,CACxDuK,IAAK,WACD,OAAOzK,KAAK41Q,aAChB,EACAlrQ,YAAY,EACZC,cAAc,IAElB4qQ,EAAcr1Q,UAAU61Q,WAAa,SAAUjqQ,EAAMpyB,GACjD,IAAIs8R,EAAUlhR,KAAKC,IAAID,KAAKI,IAAI,EAAG4W,GAAO9L,KAAKuB,MAAQvB,KAAKurQ,UACxDyK,IAAYh2Q,KAAK8L,MAAQ9L,KAAK01Q,YAC9B11Q,KAAK01Q,WAAW,CAAE5pQ,KAAMkqQ,EAASjqQ,KAAM/L,KAAKurQ,UAAY7xR,EAEhE,EACA67R,EAAcr1Q,UAAU+1Q,YAAc,SAAUnzG,GAC5C9iK,KAAK41Q,cAAgB9yG,EACjB9iK,KAAKoL,OACLpL,KAAKoL,KAAK13B,MAAMy3B,UAAY,cAAgB23J,EAAK,MAEzD,EACAyyG,EAAcr1Q,UAAUovD,MAAQ,WACxBtvD,KAAKmF,YACLnF,KAAK2qQ,0BACL3qQ,KAAKmF,UAAUvlB,UAAY,EAC3BogB,KAAKi2Q,YAAY,GAEzB,EACAV,EAAcr1Q,UAAUovQ,YAAc,WAC9BtvQ,KAAKmF,WAAanF,KAAKoL,OACvBpL,KAAK2qQ,0BACL3qQ,KAAKmF,UAAUvlB,UAAYogB,KAAKmF,UAAU0mO,aAAe7rO,KAAKmF,UAAUY,aACxE/F,KAAKi2Q,YAAYj2Q,KAAKmF,UAAU0mO,cAExC,EACA0pC,EAAcr1Q,UAAUg2Q,cAAgB,SAAUx8R,GAC9C,IAGI+Y,EAHApX,EAAS2kB,KAAK8E,WACdllB,EAAYogB,KAAKmF,UAAUvlB,UAC3Bu2R,EAAkBn2Q,KAAK41Q,cAEvBQ,EAAkBx2R,EAAYu2R,EAClC,KAAIC,EAAkB/6R,GAAtB,CAGA,IAAKoX,EAAQ,EAAGA,EAAQuN,KAAK8L,QACrBqqQ,EAAkB96R,EAAS+6R,GAAmBx2R,GADnB6S,IAI/B0jR,GAAmB96R,EAGvB,GADA86R,EAAkBn2Q,KAAKq2Q,kBAAkBF,GACrCn2Q,KAAK8L,KAAOrZ,GAAS,GAAK0jR,GAAmBv2R,EAI7C,OAHAogB,KAAKi2Q,YAAY,GACjBj2Q,KAAK+1Q,WAAW,EAAGr8R,QACnBsmB,KAAKmF,UAAUvlB,UAAY,GAG3Bu2R,IAAoBn2Q,KAAK41Q,gBACzB51Q,KAAKi2Q,YAAYE,GACjBn2Q,KAAK+1Q,WAAW/1Q,KAAK8L,KAAOrZ,EAAO/Y,GAhBvC,CAkBJ,EACA67R,EAAcr1Q,UAAUo2Q,gBAAkB,SAAU58R,GAChD,IAII+Y,EAJApX,EAAS2kB,KAAK8E,WACdllB,EAAYogB,KAAKmF,UAAUvlB,UAC3Bu2R,EAAkBn2Q,KAAK41Q,cACvBW,EAAcv2Q,KAAKoL,KAAK33B,SAASoO,OAErC,IAAK4Q,EAAQ,EAAGA,EAAQ8jR,KAChBJ,EAAkB96R,GAAUuE,GADC6S,IAIjC0jR,GAAmB96R,EAEvB86R,EAAkBn2Q,KAAKq2Q,kBAAkBF,GACrC1jR,GAAS8jR,GAAev2Q,KAAK8L,KAAOrZ,GAASuN,KAAKuB,OAClDvB,KAAKi2Q,YAAYE,GACjBn2Q,KAAK+1Q,WAAW/1Q,KAAKuB,MAAQ,EAAG7nB,IAE3By8R,IAAoBn2Q,KAAK41Q,gBAC9B51Q,KAAKi2Q,YAAYE,GACjBn2Q,KAAK+1Q,WAAW/1Q,KAAK8L,KAAOrZ,EAAO/Y,GAE3C,EACA67R,EAAcr1Q,UAAUs2Q,gBAAkB,SAAU98R,GAChD,IAAI+8R,EAAiBz2Q,KAAKuB,MAAQvB,KAAK21Q,cAAiB31Q,KAAKy1Q,gBACzDhsQ,EAAY3U,KAAKC,IAAID,KAAK4M,MAAM+0Q,GAAiBz2Q,KAAKuB,MAAQ,GAC9D40Q,EAAkBn2Q,KAAKy1Q,gBAAkBgB,EAAiBz2Q,KAAKuB,MACnE40Q,EAAkBn2Q,KAAKq2Q,kBAAkBF,GACzCn2Q,KAAKi2Q,YAAYE,GACjBn2Q,KAAK+1Q,WAAWtsQ,EAAW/vB,EAC/B,EACA67R,EAAcr1Q,UAAU2pQ,cAAgB,SAAUnwR,GAC9C,IAAIkG,EAAYogB,KAAKmF,UAAYnF,KAAKmF,UAAUvlB,UAAY,EACxDkuB,EAAO9N,KAAK21Q,cAChB31Q,KAAK21Q,cAAgB/1R,EAChBogB,KAAK1d,SAAY0d,KAAKoL,MAASpL,KAAKmF,YAAanF,KAAK61Q,gBAGvDj2R,EAAYkuB,GAAQ,GAAKluB,EAAYogB,KAAK41Q,cAAgB51Q,KAAKoL,KAAKygO,aAAe,GACnF7rO,KAAKk2Q,cAAcx8R,GAEdkG,EAAYkuB,EAAO,GAAKluB,EAAYogB,KAAK41Q,cAAyC,EAAzB51Q,KAAKoL,KAAKygO,aAAmB,EAC3F7rO,KAAKs2Q,gBAAgB58R,GAGrBsmB,KAAKw2Q,gBAAgB98R,GAE7B,EACA67R,EAAcr1Q,UAAUm2Q,kBAAoB,SAAUj/L,GAIlD,OAHAA,EAAYtiF,KAAKI,IAAI,EAAGkiF,GAExBA,EAAYtiF,KAAKC,IAAIiL,KAAKy1Q,gBAAiBr+L,EAE/C,EACOm+L,CACX,CA3JmC,2BCC/BjhC,EAA4B,WAC5B,SAASA,IACT,CAwBA,OAvBAA,EAAWp0O,UAAUqgB,SAAW,SAAUrY,GACtC,IAAImC,EAAUnC,EAAKmC,QACnB,OAAIA,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKrX,KACjCsQ,KAAK6N,KAAK,CAAEx5B,QAAS6zB,EAAK7zB,QAAS0gB,IAAKmT,EAAKnT,IAAKG,IAAKgT,EAAKhT,IAAKrB,KAAMqU,EAAKk9P,UAAYl9P,EAAKk9P,WAAa,IAE5G/6P,IAAYtD,EAAAA,EAAKI,MAAQkD,IAAYtD,EAAAA,EAAKltB,MACxCmmB,KAAK6N,KAAK,CAAEx5B,QAAS6zB,EAAK7zB,QAAS0gB,IAAKmT,EAAKnT,IAAKG,IAAKgT,EAAKhT,IAAKrB,KAAMqU,EAAKk9P,UAAYl9P,EAAKk9P,UAAY,IAE3G/6P,IAAYtD,EAAAA,EAAKE,KACf,EAEFoD,IAAYtD,EAAAA,EAAKC,IACfkB,EAAKhT,SADX,CAGT,EACAo/O,EAAWp0O,UAAU2N,KAAO,SAAU3F,GAClC,OAAKsrD,EAAAA,EAAAA,IAAUtrD,EAAK7zB,SAITygB,KAAKC,IAAImT,EAAKhT,IAAKJ,KAAKI,IAAIgT,EAAK7zB,QAAU6zB,EAAKrU,KAAMqU,EAAKnT,MAH3DmT,EAAKnT,GAKpB,EACOu/O,CACX,CA3BgC,aCL5Bz/O,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EA8RA,QApRkC,WAC9B,SAASw2P,EAAantR,GAClB,IAAI2sB,EAAQ1C,KACZA,KAAK6F,QAAU,KACf7F,KAAKoL,KAAO,KACZpL,KAAK4pQ,GAAK,IAAI2L,EACdv1Q,KAAKqT,WAAa,IAAIihO,EACtBt0O,KAAKyhO,gBAAkB,SAAU7sO,EAAO1gB,GACpC,IAAInB,EAAQ2vB,EAAMshQ,YAClBjxR,EAAMq/B,eAAiBl+B,EACvBA,EAAMs+B,kBACN9P,EAAM3sB,UAAUstR,iBAAiBzuQ,EAAO7hB,GACxC2vB,EAAMihQ,YAAY5wR,GAClB2vB,EAAMgiQ,WAAW3xR,EACrB,EACAitB,KAAK2J,YAAc,SAAUz1B,GACzB,IAAKwuB,EAAM3sB,UAAUhD,MAAM8iC,QAAS,CAChC,IAAI9iC,EAAQ2vB,EAAMshQ,YAClBjxR,EAAMwF,KAAKs9B,SAAU,EACrB9iC,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,YAC1BzG,EAAMq/B,eAAiBl+B,EACvBwuB,EAAMgiQ,WAAW3xR,EACrB,CACJ,EACAitB,KAAKspQ,cAAgB,SAAUvrR,EAAMhL,GACjC,IAAI0E,EAAKirB,EAAM3sB,UAAUmI,MAAO2H,EAAYpO,EAAGoO,UAAwBpO,EAAGuK,YAEtEjP,EAAM24N,OAAO1qM,KAAK,CACdxnB,KAAM,iBACNsJ,OAAQ,CACJnG,MAAOkJ,EACPyY,SAAU,WACVg3D,YAAY,EACZ7vE,MAAO1H,IAIvB,EACAiiB,KAAK2jQ,YAAc,SAAU5wR,GACzB,IAAImL,EAAQwkB,EAAM3sB,UAAUmI,MACxB2I,OAA0B3T,IAAjBgL,EAAM2I,OAAuB3I,EAAM2I,OAAS6b,EAAM3sB,UAAUhD,MAAM8T,YAC1D3T,IAAjBgL,EAAM2I,SACN9T,EAAMwF,KAAKsO,QAAUA,GAErBA,EACA9T,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,aAG1BzG,EAAM24N,OAAO1qM,KAAK,CAAExnB,KAAM,WAC1BkpB,EAAMg0Q,sBAEd,EACA12Q,KAAK22Q,WAAa,SAAUxyL,EAAM/xE,GAC9B,IAAIr/B,EAAQ2vB,EAAMshQ,YAClBjxR,EAAMq/B,eAAiBA,EACvB1P,EAAMmsQ,oBAAoB97R,EAAOoxG,EAAKr4E,KAAMq4E,EAAKp4E,MACjDrJ,EAAMgiQ,WAAW3xR,EACrB,EACAitB,KAAK+qQ,oBAAsB,SAAUrC,EAASmC,GAC1C,IAAIjB,EAAKlnQ,EAAMknQ,GAEf,GADAA,EAAGtnR,SAAU,EACQ,IAAjBomR,EAAQ58P,KACR89P,EAAGt6M,aAEF,GAAIo5M,EAAQ58P,KAAO48P,EAAQ6C,WAAa7C,EAAQnnQ,MACjDqoQ,EAAG0F,kBAEF,CACD,IAAI1vR,EAAYgqR,EAAGxyL,UACD,IAAdx3F,IACAgqR,EAAGe,0BACH/qR,EAAagqR,EAAG9kQ,WAAa4jQ,EAAQ58P,KACrC89P,EAAGqM,YAAYr2R,EAAYgqR,EAAG9kQ,aAE9B8kQ,EAAGzkQ,YACHykQ,EAAGzkQ,UAAUvlB,UAAYA,GAE7B8iB,EAAMkjQ,aAAaiF,GAAmB,EAC1C,CACA9xR,OAAOi3B,YAAW,WAAc,OAAO45P,EAAGtnR,SAAU,CAAM,GAAG,GACjE,EAUA0d,KAAK+kQ,sBAAwB,SAAU1zP,GACnC,IAAI55B,EAAII,EAAIK,EAAIG,EAAII,EAAIE,EACpBixR,EAAKlnQ,EAAMknQ,GACXnkI,EAA+F,QAAlF5tJ,EAA2B,QAArBJ,EAAKirB,EAAM0I,YAAyB,IAAP3zB,OAAgB,EAASA,EAAGwuM,qBAAkC,IAAPpuM,OAAgB,EAASA,EAAG+H,UACnIklB,EAAc8kQ,EAAGtnR,SAAWsnR,EAAG9kQ,WAAa8kQ,EAAG9kQ,WAAcpC,EAAM0I,KAAO1I,EAAM0I,KAAK33B,SAAS,GAAGsyB,aAAe,EAChH1qB,EAA4F,QAAlFhD,EAA2B,QAArBH,EAAKwqB,EAAM0I,YAAyB,IAAPlzB,OAAgB,EAASA,EAAG+tM,qBAAkC,IAAP5tM,OAAgB,EAASA,EAAG0tB,kBAClH7yB,IAAduyJ,QAAsCvyJ,IAAXmI,IACwD,QAAlF1C,EAA2B,QAArBF,EAAKiqB,EAAM0I,YAAyB,IAAP3yB,OAAgB,EAASA,EAAGwtM,qBAAkC,IAAPttM,GAAyBA,EAAGmsM,OAAO,CAAElrM,IAAK6rJ,EAAYp0H,EAAYvc,KAAK4M,MAAMrmB,EAASypB,GAAcA,IAEvM,EACA9E,KAAKusQ,oBAAsB,WACvB,IAAI3C,EAAKlnQ,EAAMknQ,GACf,OAAOA,EAAGtnR,SAAY/O,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAUs0B,GAAW,OAAOuhQ,EAAG4L,cAAgBntQ,CAAS,EAAGiD,IAAK,oBAC5H,EACAtL,KAAK8lQ,uBAAyB,SAAU8Q,EAAWC,GAC3CD,IAAcC,EAAK9jS,MAAMwuE,OACzBs1N,EAAKtoQ,SAAS1Z,EAASA,EAAS,CAAC,EAAGgiR,EAAK9jS,OAAQ,CAAEwuE,MAAOq1N,IAElE,EACA52Q,KAAK4mQ,WAAYzyP,EAAAA,EAAAA,KACjBnU,KAAKmU,MAAOA,EAAAA,EAAAA,KACZnU,KAAKjqB,UAAYA,EACjBiqB,KAAK4pQ,GAAG8L,WAAa11Q,KAAK22Q,UAC9B,CAiKA,OAhKAzT,EAAahjQ,UAAU6lQ,SAAW,WAC9B,IAAI7nR,EAAQ8hB,KAAKjqB,UAAUmI,MACvB67B,EAAgB77B,EAAM67B,eAAiB,CAAC,EACxCrmC,EAAQwK,EAAMxK,OAAS,CAAC,EACxBwzR,EAAantP,EAAc1/B,MAC3By8R,GAAgC,IAAjB54R,EAAM2I,YACN3T,IAAfg0R,GACAlnQ,KAAK02Q,2BAESxjS,IAAdgL,EAAMyd,UAAyCzoB,IAApBQ,EAAM29B,YACjCrR,KAAK+2Q,eACLD,GAAe,GAEfA,GACA92Q,KAAKjqB,UAAUg1B,aAEvB,EACAm4P,EAAahjQ,UAAU62Q,aAAe,WAClC,IAAI1uQ,EAAUrI,KAAKjqB,UAAUsyB,QACzBA,GAAWA,EAAQgO,eAAiBhO,EAAQgO,cAAcosJ,cAC1DziK,KAAKonQ,cAAgB/+P,EAAQgO,cAAcosJ,YAAY9uI,iBAAiBtrB,GAASgJ,gBAAan+B,EAEtG,EACAgwR,EAAahjQ,UAAUw2Q,oBAAsB,WACrC12Q,KAAK6F,UACL7F,KAAKknQ,WAAalnQ,KAAK6F,QAAQ2/H,YAAc,KAErD,EACA09H,EAAahjQ,UAAU0lQ,aAAe,SAAUn8P,EAAWutQ,EAAWC,GAClE,IAAIv0Q,EAAQ1C,KACRoL,EAAOpL,KAAKoL,MAAQpL,KAAK4pQ,GAAGx+P,KAMhC,GALKA,GAAS6rQ,GACVjnQ,YAAW,WACPtN,EAAMkjQ,aAAan8P,EAAWutQ,GAAW,EAC7C,GAAG,IAEH5rQ,GAAQ3B,GAAa,EAAG,CACxB,IAAImgQ,EAAK5pQ,KAAK4pQ,GACV4L,EAAiB5L,EAAGzkQ,WAAaiG,EAAKyzE,WACtCq4L,OAA8BhkS,IAAd8jS,EAA0BA,EAAYpN,EAAGtnR,SAC7DsjR,EAAAA,EAAAA,IAAa4P,EAAepqQ,EAAM3B,EAAWmgQ,EAAGxyL,UAAW8/L,EAC/D,CACJ,EACAhU,EAAahjQ,UAAU8jQ,UAAY,WAM/B,MALY,CACRzrR,KAAM,CAAC,EACPmzN,OAAQ,GACRt5L,oBAAgBl/B,EAGxB,EACAgwR,EAAahjQ,UAAUwkQ,WAAa,SAAU3xR,GAC1C,IAAI2vB,EAAQ1C,KACRrd,OAAOC,KAAK7P,EAAMwF,MAAMsJ,OAAS,GACjCme,KAAKjqB,UAAUw4B,SAASx7B,EAAMwF,MAElC,IAAIyvR,EAAY,CACZ51P,eAAgBr/B,EAAMq/B,eACtBD,YAAap/B,EAAMq/B,eAAiBr/B,EAAMq/B,eAAeD,iBAAcj/B,EACvEknB,OAAQ4F,KAAKjqB,UACb0P,MAAOua,KAAKjqB,UAAU0P,OAE1B1S,EAAM24N,OAAO/8M,SAAQ,SAAU8pD,GAC3B,IAAIj/D,EAAOi/D,EAAUj/D,YACdi/D,EAAUj/D,KACjB,IAAIq/I,EAAUr/I,GAAQkpB,EAAM3sB,UAAUmI,MAAM1E,GACxCq/I,GACAA,EAAQpyH,UAAKvzB,EAAW2hB,EAASA,EAAS,CAAC,EAAGmzQ,GAAYvvN,GAElE,GACJ,EACAyqN,EAAahjQ,UAAU2uQ,oBAAsB,SAAU97R,EAAO+4B,EAAMC,GAChE,IAAI28P,EAAU1oQ,KAAKjqB,UAAUmI,MAAMwqR,QACnC,GAAIA,EAAS,CACT,IAAIsN,EAAUlhR,KAAKC,IAAID,KAAKI,IAAI,EAAG4W,GAAOhX,KAAKI,IAAI,EAAGwzQ,EAAQnnQ,MAAQwK,IAClEiqQ,IAAYtN,EAAQ58P,MACpB/4B,EAAM24N,OAAO1qM,KAAK,CACdxnB,KAAM,eACN2qG,KAAM,CAAEr4E,KAAMkqQ,EAASjqQ,KAAMA,IAGzC,CACJ,EACAm3P,EAAahjQ,UAAU0oQ,6BAA+B,SAAUplR,EAAMzQ,GAClE,IAAImL,EAAQ8hB,KAAKjqB,UAAUmI,MACvBzG,EAAKyG,EAAM3F,KAAMA,OAAc,IAAPd,EAAgB,GAAKA,EAAI0K,EAAcjE,EAAMiE,YAAaumR,EAAUxqR,EAAMwqR,QAClG7hR,OAA0B3T,IAAjBgL,EAAM2I,OAAuB3I,EAAM2I,OAASmZ,KAAKjqB,UAAUhD,MAAM8T,OAC1ErD,GAAQklR,GAAW1oQ,KAAK4pQ,GAAGtnR,UACvBomR,EAAQ58P,KAAO,IAAK43P,EAAAA,EAAAA,IAAQlgR,EAAMjL,EAAK,GAAI4J,GAC3C6d,KAAK6uQ,oBAAoB97R,EAAO21R,EAAQ58P,KAAO,EAAG48P,EAAQ6C,WAEpD1kR,GAAU6hR,EAAQ58P,KAAO48P,EAAQ6C,SAAW7C,EAAQnnQ,QAC1DmiQ,EAAAA,EAAAA,IAAQlgR,EAAMjL,EAAKA,EAAKsJ,OAAS,GAAIM,IACrC6d,KAAK6uQ,oBAAoB97R,EAAO21R,EAAQ58P,KAAO,EAAG48P,EAAQ6C,UAGtE,EACArI,EAAahjQ,UAAU+mQ,iBAAmB,WACtC,OAAOtkR,OACF2mB,OAAO,CAAC,EAAG45P,EAAa75P,aAAa0Q,cAAe/Z,KAAKjqB,UAAUmI,MAAM67B,cAClF,EACAmpP,EAAahjQ,UAAU2jQ,yBAA2B,SAAUtrR,EAAMqrR,GAC9D,IAAIxnC,EAAU,GAWd,OAVA7jP,EAAKoW,SAAQ,SAAU6c,EAAI5W,GACvB,IAAInd,EACAc,EAAKqc,EAAQ,IAAM4W,EAAGo4P,KAAgBrrR,EAAKqc,EAAQ,GAAGgvQ,IACtDxnC,EAAQp7N,OAAMvpB,EAAK,CAAC,GAAMmsR,GAAcp4P,EAAGo4P,GAAansR,IACxD2kP,EAAQp7N,KAAKzoB,EAAKqc,KAGlBwnO,EAAQp7N,KAAKzoB,EAAKqc,GAE1B,IACOwnO,CACX,EACA8mC,EAAamF,eAAiB,CAC1BxhR,OAAQolB,EAAAA,KACR/xB,SAAU+xB,EAAAA,KACVtQ,IAAKsQ,EAAAA,OACLV,SAAUU,EAAAA,OACVwyN,UAAWxyN,EAAAA,OACX1zB,KAAM0zB,EAAAA,MACNpmB,UAAWomB,EAAAA,OACXp4B,UAAWo4B,EAAAA,OACXp2B,MAAOo2B,EAAAA,OACPrN,QAASqN,EAAAA,KACT8N,cAAe9N,EAAAA,MAAgB,CAC3BhB,QAASgB,EAAAA,UAAoB,CAACA,EAAAA,KAAgBA,EAAAA,MAAgB,CACtDkrQ,aAAclrQ,EAAAA,OACdmrQ,cAAenrQ,EAAAA,WAEvB8M,WAAY9M,EAAAA,OACZp4B,UAAWo4B,EAAAA,OACX+N,SAAU/N,EAAAA,IACV5xB,MAAO4xB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC9C5wB,OAAQ4wB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,WAEnDuN,OAAQvN,EAAAA,KACRniB,QAASmiB,EAAAA,KACTrC,QAASqC,EAAAA,KACTnC,OAAQmC,EAAAA,KACRzmB,SAAUymB,EAAAA,KACV8yN,WAAY9yN,EAAAA,KACZw7P,iBAAkBx7P,EAAAA,KAClB45P,iBAAkB55P,EAAAA,KAClB7oB,OAAQ6oB,EAAAA,KACRoJ,OAAQpJ,EAAAA,MAEZi3P,EAAal3P,UAAYnX,EAASA,EAAS,CAAC,EAAGquQ,EAAamF,gBAAiB,CAAE5iR,MAAOwmB,EAAAA,IAAe11B,aAAc01B,EAAAA,IAAejqB,WAAYiqB,EAAAA,KAAgBnpB,OAAQmpB,EAAAA,OAAkBy8P,QAASz8P,EAAAA,MAAgB,CACzMs/P,SAAUt/P,EAAAA,OAAiBoY,WAC3BvY,KAAMG,EAAAA,OAAiBoY,WACvB9iB,MAAO0K,EAAAA,OAAiBoY,aACxBprB,eAAgBgT,EAAAA,KAAgBkkQ,aAAclkQ,EAAAA,OACtDi3P,EAAa75P,aAAe,CACxB0Q,cAAe,CACX1+B,OAAQ,SAEZs7B,UAAU,EACVK,gBAAgB,GAEbksP,CACX,CAnRkC,+DCpB9Bj9P,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAiC7C,QAduC,SAAUmG,GAE7C,SAAS8/P,IACL,OAAkB,OAAX9/P,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAQA,OAXAiG,EAAUqhQ,EAAmB9/P,GAI7B8/P,EAAkBpnQ,UAAUnrB,OAAS,WACjC,IAAI0C,EAAKuoB,KAAK9hB,MAAOqjE,EAAQ9pE,EAAG8pE,MAAOgmN,EAAY9vR,EAAG8vR,UAAWkJ,EAAWh5R,EAAG1C,OAC3EyO,EAAQjQ,EAAAA,cAAoB,MAAO,CAAEM,UAAW,8BAA8C,YAAd0zR,EAC9EhmN,EACAhuE,EAAAA,cAAoB,MAAO,CAAEM,UAAW,sBAAwB0tE,IACtE,YAAoBruE,IAAbu9R,EAAyBA,EAAShqQ,UAAKvzB,EAAWsQ,EAAMwc,KAAK9hB,OAASsF,CACjF,EACO8jR,CACX,CAbuC,CAarC/zR,EAAAA,iFChCE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAgC7C,QAbmC,SAAUmG,GAEzC,SAAS6vQ,IACL,OAAkB,OAAX7vQ,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAOA,OAVAiG,EAAUoxQ,EAAe7vQ,GAIzB6vQ,EAAcn3Q,UAAUnrB,OAAS,WAC7B,IAAI0C,EAAKuoB,KAAK9hB,MAAOqjE,EAAQ9pE,EAAG8pE,MAAOmnN,EAAUjxR,EAAGixR,QAAS+H,EAAWh5R,EAAG1C,OAAQ8C,EAAKJ,EAAG00R,cAAeA,OAAuB,IAAPt0R,GAAwBA,EAC9I2L,EAAQjQ,EAAAA,cAAoB,KAAM,CAAEH,GAAI4sB,KAAK9hB,MAAM9K,GAAI2E,KAAM,QAASlE,UAAWs4R,EAAgB,oBAAsB,oBAAqBz4R,MAAOy4R,EAAgB,CAAE,UAAa,WAAc,CAAExyR,SAAU+uR,EAAU,WAAa,UACnOn1R,EAAAA,cAAoB,OAAQ,CAAEM,UAAY48R,OAA+Dv9R,EAApDi5R,EAAgB,aAAe,oBAAkC5qN,IAC1H,YAAoBruE,IAAbu9R,EAAyBA,EAAShqQ,UAAKvzB,EAAWsQ,EAAMwc,KAAK9hB,OAASsF,CACjF,EACO6zR,CACX,CAZmC,CAYjC9jS,EAAAA,6CC/BE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAwBzCsmQ,EAAsB,SAAUngQ,GAEhC,SAASmgQ,IACL,OAAkB,OAAXngQ,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CA2CA,OA9CAiG,EAAU0hQ,EAAMngQ,GAIhBmgQ,EAAKznQ,UAAUo3Q,YAAc,WACzB,IAAI50Q,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAO2H,EAAYpO,EAAGoO,UAAWg2O,EAAapkP,EAAGokP,WAAY+nC,EAAansR,EAAGmsR,WAAY2D,EAAY9vR,EAAG8vR,UAAW4E,EAAgB10R,EAAG00R,cAAetE,EAAcpwR,EAAGowR,YAAahwR,EAAKJ,EAAGq0B,KAAMA,OAAc,IAAPj0B,EAAgB,EAAIA,EAAI6wR,EAAUjxR,EAAGixR,QAAStrC,EAAe3lP,EAAG2lP,aAAcllP,EAAKT,EAAGmwR,kBAAmBA,OAA2B,IAAP1vR,GAAuBA,EAAIuN,EAAQhO,EAAGgO,MAAOlN,EAAOd,EAAGc,KAAMwmP,EAAatnP,EAAGsnP,WAAY2oC,EAAwBjwR,EAAGiwR,sBACnczvQ,EAAUD,MAAMC,QAAQxS,GACxB8xR,EAAe,EACnB,OAAOh/R,EAAK0H,KAAI,SAAUuD,EAAMoR,GAC5B,IAMIvgB,EAASkvJ,EANTi0I,EAAY1rQ,EAAOlX,EACnB6iR,EAAU3rQ,EAAOlX,EAAQ2iR,EACzB93R,GAAW+D,EAAKtJ,WAAmB0tR,KAChC3vQ,IAAWyrQ,EAAAA,EAAAA,IAAQlgR,EAAMiC,EAAOo2O,IAC9B5jO,IAAuF,IAA5ExS,EAAM66E,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAAA,EAAAA,IAAQxjR,EAAGsD,EAAMq4O,EAAa,MACpFt6K,OAAQruE,EAUZ,OARI0hB,EAAQ,QAAoB1hB,IAAf0wR,IACbvvR,GAAUivR,EAAAA,EAAAA,IAAa9/Q,EAAMogR,GAC7BrgI,GAAW+/H,EAAAA,EAAAA,IAAa/qR,EAAKqc,EAAQ,GAAIgvQ,GACrCvvR,GAAWkvJ,GAAYlvJ,IAAYkvJ,IACnChiF,EAAQltE,SAGNnB,IAAVquE,GAAqC,WAAdgmN,IAAyBgQ,GAAgB,GACzD,MACOrkS,IAAVquE,GAAqC,WAAdgmN,GAA0Bh0R,EAAAA,cAAoB8jS,EAAe,CAAEjkS,GAAI,UAAU8Q,OAAO2jR,EAAa,KAAK3jR,OAAOuzR,GAAU/O,QAASA,EAASp9P,IAAKksQ,EAAY,cAAej2N,MAAOA,EAAO4qN,cAAeA,EAAep3R,OAAQ2yR,IACpPn0R,EAAAA,cAAoByhS,EAAAA,EAAU,CAAE5hS,GAAI,UAAU8Q,OAAO2jR,EAAa,KAAK3jR,YAAiBhR,IAAVquE,GAAqC,WAAdgmN,EAAyBkQ,EAAU,EAAIA,GAAU/O,QAASA,EAASrqR,SAAUmF,EAAM+jR,UAAWA,EAAW9nR,SAAUA,EAAUo2B,QAASunN,IAAiBxoO,EAAOA,MAAO4iR,EAAWlsQ,IAAKksQ,EAAWniS,QAASqtB,EAAMxkB,MAAM7I,QAASwQ,UAAWA,EAAW07D,MAAOA,EAAOxsE,OAAQgqP,EAAY7kP,SAAUsJ,EAAKtJ,WAElZ,GACJ,EACAytR,EAAKznQ,UAAUw3Q,qBAAuB,SAAUroQ,GAC5C,IAAI04P,EAAe/nQ,KAAK9hB,MAAM6pR,aAC1B4P,EAAiBpkS,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YACzDN,EAAAA,cAAoB,MAAO,KAAM87B,EAAoBG,iBAAiBooQ,EAAAA,GAAQloQ,EAAAA,GAASkoQ,EAAAA,OAC3F,OAAO7P,EACHA,EAAathQ,UAAKvzB,EAAWykS,GAAiBA,CACtD,EACAhQ,EAAKznQ,UAAUnrB,OAAS,WACpB,IAAIs6B,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjDvoB,EAAKuoB,KAAK9hB,MAAO9K,EAAKqE,EAAGrE,GAAI82B,EAAOzyB,EAAGyyB,KAAM49P,EAAkBrwR,EAAGqwR,gBAAiB5rN,EAAezkE,EAAGykE,aAAciiH,EAAY1mL,EAAG0mL,UAAWigE,EAAU3mP,EAAG2mP,QAASguC,EAAa30R,EAAG20R,WAAYv0R,EAAKJ,EAAGs4R,cAAeA,OAAuB,IAAPl4R,EAAgB,YAAcA,EACpQ4a,EAAQuN,KAAKs3Q,cACjB,OAAQ7kR,EAAM5Q,OAAUtO,EAAAA,cAAoB,MAAO,CAAEM,UAAWi0R,EAAiBp0R,MAAOwoE,EAAcnoE,IAAKq4R,EAAYv8P,YAAa7P,KAAK9hB,MAAM2xB,YAAa/F,OAAQ9J,KAAK9hB,MAAM4rB,OAAQw6O,SAAUtkP,KAAK9hB,MAAMomQ,SAAUuzB,aAAc,MAChOtkS,EAAAA,cAAoB,KAAM,CAAEH,GAAIA,EAAI2E,KAAM,UAAW,eAAgBmyB,QAAch3B,EAAWW,UAAWk8R,EAAeh8R,IAAKqqP,EAAS1qP,MAAOyqL,GAAa1rK,GAC1JuN,KAAK9hB,MAAMouR,UAAY/4R,EAAAA,cAAoB,MAAO,CAAEM,UAAW,sBAAwBmsB,KAAK9hB,MAAMouR,WAActsQ,KAAK03Q,qBAAqBroQ,EAClJ,EACOs4P,CACX,CAhD0B,CAgDxBp0R,EAAAA,WACF,WACAm9B,EAAAA,EAAAA,IAAwBi3P,yEC1EpB1hQ,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAiBA,QAXmC,SAAUlF,GAEzC,SAAS2/P,IACL,OAAkB,OAAX3/P,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAKA,OARAiG,EAAUkhQ,EAAe3/P,GAIzB2/P,EAAcjnQ,UAAUnrB,OAAS,WAC7B,IAAI0C,EAAKuoB,KAAK9hB,MAAOzK,EAAWgE,EAAGhE,SAAU4G,EAAQ5C,EAAG4C,MAAOshB,EAAMlkB,EAAGkkB,IAAK0rQ,EAAa5vR,EAAG4vR,WAAYttP,EAAgBtiC,EAAGsiC,cAC5H,OAAQxmC,EAAAA,cAAoBqkC,EAAAA,EAAO/iB,EAAS,CAAEnhB,MAAO,CAAE2G,MAAOA,EAAOg3B,UAAW1V,GAAOm8Q,WAAYzQ,GAAcA,EAAWzpO,QAAU7jB,GAAgBtmC,EAC1J,EACO0zR,CACX,CAVmC,CAUjC5zR,EAAAA,wHCzCEshB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EASIg9P,EAAan2R,EAAAA,YAAiB,SAAU2K,EAAOnK,GAC/C,IAAIy6C,EAAQj7C,EAAAA,OAAa,MAEzB,OADAA,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOy6C,EAAMn6C,OAAS,IAC3Dd,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iBAC5CN,EAAAA,cAAoBsN,EAAAA,EAASgU,EAAS,CAAC,EAAG3W,EAAO,CAAEnK,IAAKy6C,EAAO/oC,MAAOvH,EAAMuH,OAAS,GAAID,SAAUtH,EAAMsH,SAAUimB,UAAWvtB,EAAMutB,UAAWF,SAAUrtB,EAAMqtB,SAAUl2B,QAAS,SAAUqE,GAAK,OAAOA,EAAE84B,iBAAmB,EAAGj5B,KAAM2E,EAAM3E,KAAM4K,SAAUjG,EAAMiG,SAAUmzB,QAASp5B,EAAMo5B,QAAS43D,OAAQ,WAAc,OAAQ37F,EAAAA,cAAoBwkS,EAAAA,EAAa,KAC3VxkS,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,SAAUV,KAAM4iS,EAAAA,MAAiB,KACvF,IACAtO,EAAW19P,UAAY,CACnBvmB,MAAOwmB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,OAAkBA,EAAAA,QAChEV,SAAUU,EAAAA,OACVzmB,SAAUymB,EAAAA,KACVR,UAAWQ,EAAAA,KACX1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5D9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,OAAQ,aAEtDy9P,EAAW5vP,YAAc,uBACzB,0FCpCI7T,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA2C7C,QArB8B,SAAUmG,GAEpC,SAASwtQ,IACL,IAAItyQ,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAEhE,OADA0C,EAAMoe,YAAc,SAAUpnC,GAAK,OAAOgpB,EAAMxkB,MAAM7I,QAAQqtB,EAAMxkB,MAAM0W,MAAOlb,EAAI,EAC9EgpB,CACX,CAaA,OAlBAuD,EAAU+uQ,EAAUxtQ,GAMpBwtQ,EAAS90Q,UAAUnrB,OAAS,WACxB,IAAI0C,EAAKuoB,KAAK9hB,MAAOuB,EAAWhI,EAAGgI,SAAU8hE,EAAQ9pE,EAAG8pE,MAAOljE,EAAW5G,EAAG4G,SAAUqqR,EAAUjxR,EAAGixR,QAASnB,EAAY9vR,EAAG8vR,UAAWrtR,EAAWzC,EAAGyC,SAAUu2R,EAAWh5R,EAAG1C,OACzKyO,EAAQjQ,EAAAA,cAAoB,KAAM,CAAEH,GAAI4sB,KAAK9hB,MAAM9K,GAAI2E,KAAM,SAAU,gBAAiB0H,EAAU,kBAAiBvF,QAAkBhH,EAAWW,WAAWu7B,EAAAA,EAAAA,GAAW,cAAe,CACjL,aAAc3vB,EACd,UAAWugB,KAAK9hB,MAAM23B,QACtB,UAAWjL,QAAQ22C,IAAwB,YAAdgmN,EAC7B,aAAcrtR,IACd7E,QAAS2qB,KAAK8gB,YAAaptC,MAAO,CAAEiG,SAAU+uR,EAAU,WAAa,UACzEn1R,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,qBAAsByvR,EAAAA,EAAAA,IAAajlR,EAAU2hB,KAAK9hB,MAAM2H,WAAWqvC,iBAClGhiD,IAAVquE,GAAqC,YAAdgmN,EAA0Bh0R,EAAAA,cAAoB,MAAO,CAAEM,UAAW,2BAA6B0tE,GAAS,MACnI,YAAoBruE,IAAbu9R,EAAyBA,EAAShqQ,UAAKvzB,EAAWsQ,EAAMwc,KAAK9hB,OAASsF,CACjF,EACOwxR,CACX,CApB8B,CAoB5BzhS,EAAAA,iFC1CE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA6D7C,QAzC+B,SAAUmG,GAErC,SAASg/P,IACL,IAAI9jQ,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAEhE,OADA0C,EAAM0rB,OAAS,KACR1rB,CACX,CAiCA,OAtCAuD,EAAUugQ,EAAWh/P,GAMrB7kB,OAAO6nB,eAAeg8P,EAAUtmQ,UAAW,QAAS,CAIhDuK,IAAK,WACD,OAAOzK,KAAKouB,MAChB,EACA1jB,YAAY,EACZC,cAAc,IAElB67P,EAAUtmQ,UAAU8K,mBAAqB,SAAUukB,GAC/C,IAAIixJ,EAAYjxJ,EAAU9pC,MACtBwyR,EAAoB1oP,EAAUk3O,cAC9BhvR,EAAKuoB,KAAK9hB,MAAOuH,EAAQhO,EAAGgO,MAAOghR,EAAgBhvR,EAAGgvR,cAAe5wP,EAAUp+B,EAAGo+B,QAClF2Y,EAAQxuB,KAAKwuB,MACb0pP,EAAe13F,IAAc/6L,GAASghR,IAAkBwR,EACxD5T,EAAW6T,GAAgB13F,EAAUl0L,WAAW7G,MAC9CwyR,GAAqBxR,GAAiBwR,EAAkB59O,SAASosO,IACnEz8P,GAAgBC,EAAAA,EAAAA,GAAiBzb,UACjCqnB,GAAW2Y,GAASxkB,IAAkBwkB,GACtCA,EAAMvmB,QAENw+P,GAAiByR,IAAiB7T,GAAY71O,GAC9CA,EAAMymO,kBAAkBxvQ,EAAM5D,OAAS4kR,EAAc5kR,OAAQ4D,EAAM5D,OAE3E,EACA2kR,EAAUtmQ,UAAUnrB,OAAS,WACzB,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAG8qE,SAAUA,OAAkB,IAAP1qE,GAAwBA,EAAIqC,EAAWzC,EAAGyC,SAAUhC,EAAKT,EAAGM,KAAMA,OAAc,IAAPG,EAAgB,UAAYA,EAAInD,EAAS0C,EAAG1C,OACnK2xR,EAAanzR,EAAAA,cAAoB,QAAS,CAAEu7C,aAAc,MAAO17C,GAAI4sB,KAAK9hB,MAAM9K,GAAIoG,KAAM,OAAQ8xB,IAAK,YAAa/xB,KAAMymB,KAAK9hB,MAAM3E,KAAMgE,YAAayiB,KAAK9hB,MAAMX,YAAa1J,UAAW,gBAAiB03B,SAAUvL,KAAK9hB,MAAMqtB,SAAUkzN,UAAWz+N,KAAK9hB,MAAMugP,UAAW1mP,KAAMA,EAAMjC,KAAMkqB,KAAK9hB,MAAMpI,KAAM2P,MAAOua,KAAK9hB,MAAMuH,MAAOD,SAAUwa,KAAK9hB,MAAMsH,SAAUzR,IAAK,SAAUy6C,GAAS,OAAO9rB,EAAM0rB,OAASI,CAAO,EAAG/iB,UAAWzL,KAAK9hB,MAAMutB,UAAW7B,QAAS5J,KAAK9hB,MAAM0rB,QAASE,OAAQ9J,KAAK9hB,MAAM4rB,OAAQz0B,QAAS2qB,KAAK9hB,MAAM7I,QAAS,gBAAiB6E,QAAYhH,EAAWgH,SAAUA,QAAYhH,EAAWyN,SAAUqf,KAAK9hB,MAAMyC,eAAYzN,EAAW8M,MAAOggB,KAAK9hB,MAAM8B,MAAO,gBAAiB,UAAW,gBAAiBuiE,EAAU,YAAaviD,KAAK9hB,MAAMyoR,KAAM,wBAAyBpkN,EAAWviD,KAAK9hB,MAAM2oR,sBAAmB3zR,EAAW,mBAAoB8sB,KAAK9hB,MAAMu5B,gBAAiB,kBAAmBzX,KAAK9hB,MAAMs5B,eAAgB,gBAAiBxX,KAAK9hB,MAAM4oR,eACn8B,OAAO/xR,EAASA,EAAO0xB,UAAKvzB,EAAWwzR,GAAaA,CACxD,EACOF,CACX,CAxC+B,CAwC7BjzR,EAAAA,iEC3DK,IAAIy4R,EAAsB,IAEtB11P,EAAuB,wKCAlC,IAAIk9C,EAAY,SAAU/tE,GAAS,OAAiB,OAAVA,QAA4BvS,IAAVuS,CAAqB,EAI7EuoR,EAAgB,SAAU7rL,EAAMgkI,GAChC,IAAK,IAAIriO,EAAM,EAAGA,EAAMq+F,EAAKtgG,OAAQiC,IACjC,GAAIq+F,EAAK15C,OAAO3kD,KAASqiO,EACrB,OAAO,EAGf,OAAO,CACX,EAII+nD,EAAc,SAAU31R,EAAM4/R,EAAYxL,GAC1C,IAAIjwR,EAASnE,EAIb,OAHIo0R,IACAjwR,EAAS,CAACiwR,GAAazoR,OAAOxH,IAE3BA,EAAOkS,MAAMupR,GAAYj0R,OAAOxH,EAAOkS,MAAM,EAAGupR,GAC3D,EAII9J,EAAY,SAAUtwR,EAAMokG,EAAM7sB,GAClC,IAAK9B,EAAUz1E,GACX,OAAO,EAEX,IAAIq6R,EAAOzxQ,OAAO5oB,GAIlB,OAHIu3E,IACA8iN,EAAOA,EAAK5iP,eAEc,IAAvB4iP,EAAKn9P,QAAQknE,EACxB,EAIIyjL,EAAe,SAAUyS,EAAYjtQ,EAAM3B,EAAW2tE,EAAW8/L,GACjE,IAAIoB,EAAiBD,EAAWtyQ,aAC5BN,EAAK2F,EAAK33B,SAAS+P,KAAKimB,GACxB8uQ,EAAgB9yQ,EAAGggI,WAAayxI,EAAgB9/L,EAAYihM,EAAWz4R,UAAY,GACnFklB,EAAaW,EAAGM,aACpB,GAAImxQ,EAAe,CACf,IAAI1qM,EAAO,EACP+rM,EAAgBzzQ,EAAawzQ,EAC7B9rM,EAAO+rM,EAAgBzzQ,EAAawzQ,EAE/BC,EAAgB,IACrB/rM,EAAO+rM,GAEE,IAAT/rM,EACA6rM,EAAWz4R,WAAa4sF,EAEM,IAAzB6rM,EAAWz4R,WAAiC,IAAdw3F,IACnCihM,EAAWz4R,UAAYw3F,EAE/B,MAEQmhM,EAAgBzzQ,EAAawzQ,EAAiBD,EAAWz4R,UACzDy4R,EAAWz4R,UAAa24R,EAAgBzzQ,EAAawzQ,EAEhDC,EAAgBF,EAAWz4R,YAChCy4R,EAAWz4R,WAAay4R,EAAWz4R,UAAY24R,EAG3D,EAIIrQ,EAAsB,SAAUz1Q,EAAO1U,EAAMpB,GAC7C,IAAID,GAAU,EACd,GAAIqB,EAAM,CACNA,EAAOA,EAAKy3C,cACZ,IAAK,IAAIt1C,EAAI,EAAGA,EAAIuS,EAAM5Q,OAAQ3B,IAAK,CACnC,IAAIwzR,GAAYpQ,EAAa7wQ,EAAMvS,GAAIvD,IAAU,IAAM,GACvD,GAAI+2R,GAAYA,EAASl+O,cAAclpC,WAAWvO,GAAO,CACrDrB,EAASwD,EACT,KACJ,CACJ,CACJ,CACA,OAAOxD,CACX,EAIIivR,EAAqB,SAAUpzR,EAAMwF,EAAM8H,EAAWm5M,QACpC,IAAdA,IAAwBA,GAAY,GACxC,IAAIw5E,EAAS,SAAU/yR,GAAS,OAAOu5M,EAAYv5M,EAAQA,EAAM+vC,aAAe,EAChF,OAAOj9C,EAAK+nF,WAAU,SAAU98E,GAC5B,OAAOqC,EAAY2yR,EAAOlV,EAAa9/Q,EAAMqC,MAAgB2yR,EAAOz6R,GAChEy6R,EAAOz6R,KAAUy6R,EAAOh1R,EAAK0xC,WACrC,GACJ,EAIIouO,EAAe,SAAU9/Q,EAAM7G,GAC/B,GAAIA,GAAS62E,EAAUhwE,GAAO,CAC1B,IAAIi6C,EAAO9gD,EAAMqM,MAAM,KACnByvR,EAASj1R,EAIb,OAHAi6C,EAAK9uC,SAAQ,SAAU4X,GACnBkyQ,EAASA,EAASA,EAAOlyQ,QAAKrzB,CAClC,IACOulS,CACX,CACA,OAAOj1R,CACX,EAuBIivR,EAAkB,SAAUhgR,EAAOy1J,EAAU58I,GAC7C48I,EAASv5J,SAAQ,SAAUnL,GACvB,IAAIimB,EAAYhX,EAAM6tE,WAAU,SAAUpgF,GAAK,OAAOwjR,EAAQxjR,EAAGsD,EAAM8nB,EAAM,KAC1D,IAAf7B,GACAhX,EAAMqR,OAAO2F,EAAW,EAEhC,GACJ,EAIIi6P,EAAU,SAAUgV,EAAOC,EAAOrtQ,GAClC,OAAOotQ,IAAUC,GACZnlN,EAAUklN,KAAWllN,EAAUmlN,IAAUrV,EAAaoV,EAAOptQ,KAASg4P,EAAaqV,EAAOrtQ,EACnG,EAIIg7P,EAAiB,SAAU/tR,EAAMkN,EAAOI,GACxC,GAAIJ,EAAO,CACP,IAAI+b,EAAgBmqQ,EAAmBpzR,EAAMkN,EAAOI,GAAW,GAC/D,OAA0B,IAAnB2b,EAAuBjpB,EAAKipB,GAAiBjpB,EAAK2vR,EAAoB3vR,EAAMkN,EAAOI,GAC9F,CACA,OAAOtN,EAAK,EAChB,EAIIgsR,EAAe,SAAU9+Q,EAAOlN,EAAMsN,QACzB,IAATtN,IAAmBA,EAAO,IAC9B,IAAIqgS,EAAY,GAChB,GAAInzR,EAAO,CACP,IAAIwiR,EAAgB1vR,EAAK2vR,EAAoB3vR,EAAMkN,EAAOI,IAC1D,GAAIoiR,EAAe,CACf,IAAIxB,EAAgBnD,EAAa2E,EAAepiR,GAC5CJ,EAAM+vC,gBAAkBixO,EAAcjxO,gBACtCojP,EAAYnS,EAAc1/Q,UAAUtB,EAAM5D,QAElD,CACJ,CACA,OAAO+2R,CACX,EAII3E,EAA0B,SAAU//R,GACN,UAA1BA,EAAMkmB,OAAOs+I,UACbxkK,EAAM+gB,gBAEd,EAIIm/Q,EAAY,SAAUyE,EAAMC,EAAMxtQ,GAClC,QAAMutQ,MAAWC,GAAQD,EAAK96R,OAAS+6R,EAAK/6R,OAGrC86R,IAASC,GA5EO,SAAUC,EAAOC,EAAO1tQ,GAG/C,QAFc,IAAVytQ,IAAoBA,EAAQ,SAClB,IAAVC,IAAoBA,EAAQ,IAC5BD,IAAUC,EACV,OAAO,EAEX,GAAID,EAAMl3R,SAAWm3R,EAAMn3R,OACvB,OAAO,EAEX,IAAK,IAAI3B,EAAI,EAAGA,EAAI64R,EAAMl3R,OAAQ3B,IAC9B,IAAKwjR,EAAQqV,EAAM74R,GAAI84R,EAAM94R,GAAIorB,GAC7B,OAAO,EAGf,OAAO,CACX,CA6D4B2tQ,CAAqBJ,EAAKtgS,KAAMugS,EAAKvgS,KAAM+yB,GACvE,wmCC3Le,SAAS4tQ,EAAgC11R,EAAMwzP,EAAQvkP,EAAO4X,EAASmuO,GAClF,OAAQnuO,GACJ,KAAKtD,EAAAA,EAAKrX,KACN,OAeGypR,EAAAA,cAA0BniC,IAGzBwB,EAAUj2L,SAAS/+D,KAAS21P,EAAAA,EAAAA,IAA8BnC,EAAQvkP,EAAO+lP,GAC7ExB,EAASmiC,EAAAA,kBAA8BniC,GAlB3C,KAAKjwO,EAAAA,EAAKltB,MACN,OAoBG0+P,EAAAA,EAAAA,IAA8B/0P,EAAMg1P,GAAa2gC,EAAAA,gBAA4BniC,GAAUA,EAnB9F,KAAKjwO,EAAAA,EAAKG,GACN,OAoBR,WACI,IAAItS,EAAQgnC,OAAOu9O,EAAAA,WAAuBniC,IACtCW,EAAWwhC,EAAAA,kBAA8BniC,GAC7C,OAAOpiP,EAAQwkR,EAAwBD,EAAAA,SAAqBvkR,EAAQ,EAAG+iP,GAAWllP,EAAO+lP,GACrF2gC,EAAAA,cAA0BniC,GAAUA,EAASW,CACrD,CAzBe0hC,GACX,KAAKtyQ,EAAAA,EAAKI,KACN,OAyBAoxO,EAAAA,EAAAA,IAA8B/0P,EAAMg1P,GAC7B2gC,EAAAA,gBAA4BniC,GAG5BsiC,EAActiC,EAAQvkP,EAAO+lP,IAAcxB,EA5BtD,KAAKjwO,EAAAA,EAAKE,KACN,OAAOkyQ,EAAAA,wBACX,KAAKpyQ,EAAAA,EAAKC,IACN,OA4BR,WACI,IAEIvzB,EAFAiJ,GAAU+V,EAAM5Q,OAAS,GAAGqzC,WAC5BmkN,EAAc5mP,EAAMA,EAAM5Q,OAAS,GAEvC,MAAO02P,EAAAA,EAAAA,IAA8Bc,EAAab,IAC9C/kQ,EAAW4lQ,EAAYb,EAAUlC,oBACjC55P,EAASy8R,EAAAA,SAAqB1lS,EAASoO,OAAS,EAAGnF,GACnD28P,EAAc5lQ,EAASA,EAASoO,OAAS,GAE7C,OAAOnF,CACX,CAtCe68R,GACX,QACI,OAAOviC,EAqCnB,CACA,SAASsiC,EAActiC,EAAQvkP,EAAO+lP,GAClC,IAAIb,EAAWwhC,EAAAA,kBAA8BniC,GACzCz8G,EAASo9G,EAAWwhC,EAAAA,YAAwBxhC,EAAUllP,EAAO+lP,EAAUlC,yBAAsBpjQ,EAC7FsmS,EAAWj/I,EAASA,EAAOi+G,EAAUlC,oBAAsB7jP,EAC3DmC,EAAQgnC,OAAOu9O,EAAAA,WAAuBniC,IAC1C,OAAOpiP,EAAQ4kR,EAAS33R,OAAS,EAC7Bs3R,EAAAA,SAAqBvkR,EAAQ,EAAG+iP,GAChCp9G,EAAS++I,EAAc3hC,EAAUllP,EAAO+lP,QAAatlQ,CAC7D,CACA,SAASkmS,EAAwBpiC,EAAQvkP,EAAO+lP,GAC5C,IAAIh1P,EAAO21R,EAAAA,YAAwBniC,EAAQvkP,EAAO+lP,EAAUlC,oBAC5D,OAAIiC,EAAAA,EAAAA,IAA8B/0P,EAAMg1P,GAC7B4gC,EAAwBD,EAAAA,SAAqB31R,EAAKg1P,EAAUlC,oBAAoBz0P,OAAS,EAAGm1P,GAASvkP,EAAO+lP,GAG5GxB,CAEf,kCC5DWyiC,EAAiB,QCfxBxzQ,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAOI2L,EAAUD,EAAAA,EAAeC,QAIlBqhQ,EAA2BnmS,EAAAA,eAAoB,SAAU2K,GAAS,OAAOA,CAAO,IAIvFy7R,EAA4C,SAAUnyQ,GAEtD,SAASmyQ,IACL,IAAIj3Q,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KA6BhE,OA5BA0C,EAAMk3Q,UAAWzlQ,EAAAA,EAAAA,KACjBzR,EAAMm3Q,cAAgB,SAAUngS,GAC5BgpB,EAAMxkB,MAAM27R,cAAcngS,EAAGgpB,EAAMlf,KAAMkf,EAAMs0O,OACnD,EACAt0O,EAAM2/C,eAAiB,SAAU3oE,GAC7BgpB,EAAMxkB,MAAMmkE,eAAe3oE,EAAGgpB,EAAMlf,KAAMkf,EAAMs0O,OACpD,EACAt0O,EAAMhQ,YAAc,SAAUhZ,GAC1BgpB,EAAMxkB,MAAMwU,YAAYhZ,EAAGgpB,EAAMlf,KAAMkf,EAAMs0O,OACjD,EACAt0O,EAAM2gO,QAAU,SAAU3pP,GACtBgpB,EAAMxkB,MAAMmlP,QAAQ3pP,EAAExF,MAAOwuB,EAAMlf,KAAMkf,EAAMs0O,OACnD,EACAt0O,EAAMihO,OAAS,SAAUjqP,GACrBgpB,EAAMxkB,MAAMylP,OAAOjqP,EAAExF,MAAOwuB,EAAMlf,KAAMkf,EAAMs0O,OAClD,EACAt0O,EAAM6gO,UAAY,SAAU7pP,GACxBgpB,EAAMxkB,MAAMqlP,UAAU7pP,EAAExF,MAAOwuB,EAAMlf,KAAMkf,EAAMs0O,OACrD,EACAt0O,EAAMo3Q,cAAgB,SAAUpgS,GAC5BgpB,EAAMxkB,MAAM47R,cAAcpgS,EAAGgpB,EAAMlf,KAAMkf,EAAMs0O,OACnD,EACAt0O,EAAMq3Q,oBAAsB,SAAU1xQ,GAC9BA,IACAA,EAA+B,aAAI3F,EAAMxkB,MAAM84P,OAC/C3uO,EAAqC,mBAAI3F,EAAMxkB,MAAM87R,SAE7D,EACOt3Q,CACX,CA2KA,OA3MAuD,EAAU0zQ,EAA4BnyQ,GAiCtCmyQ,EAA2Bz5Q,UAAUnrB,OAAS,WAC1C,IAAI2tB,EAAQ1C,KACRi6Q,EAAWj6Q,KAAKk6Q,6BAChBC,EAAan6Q,KAAKo6Q,mBACtB,OAAQ7mS,EAAAA,cAAoB,KAAM,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,mBAAoB7D,SAAUvL,KAAKuL,SAAUxzB,KAAM,WAAY,gBAAiBioB,KAAK+X,aAAc,gBAAiB/X,KAAKq6Q,aAAc,eAAgBr6Q,KAAKs6Q,YAAa,kBAAiBt6Q,KAAK9lB,eAAkBhH,EAAWa,IAAK,SAAUy3B,GAAM,OAAO9I,EAAM63Q,YAAc/uQ,CAAI,GACtUj4B,EAAAA,cAAoB,MAAO,CAAEM,UAAW,cAAcqQ,OAAO8b,KAAK9hB,MAAMvE,UAAW5F,IAAKisB,KAAK+5Q,qBACzF/5Q,KAAKw6Q,mBACLx6Q,KAAK6yF,iBACL7yF,KAAK9hB,MAAMsmL,UACPjxL,EAAAA,cAAoB0vP,EAAAA,EAAW,CAAEI,QAASrjO,KAAKqjO,QAASM,OAAQ3jO,KAAK2jO,OAAQJ,UAAWvjO,KAAKujO,WAAa42C,GAAcA,GAChIn6Q,KAAK9hB,MAAM+sB,QACP13B,EAAAA,cAAoB+kP,EAAAA,EAAQ,CAAEvD,wBAAyB,IAAKC,uBAAwB,IAAKthP,MAAO,CAAEkwG,QAAS,SAAWnwG,SAAUwmS,IAAcA,EAC1J,EACAN,EAA2Bz5Q,UAAU4K,kBAAoB,WACrD,IAAI2vQ,EAAgBz6Q,KAAK9hB,MAAMu8R,cAC3BC,EAAgB16Q,KAAKg3O,OACrByjC,GAAiBA,IAAkBC,GACnC16Q,KAAK9hB,MAAMy8R,mBAAmB36Q,KAAKu6Q,aAEnCv6Q,KAAK46Q,kBACL56Q,KAAK46Q,gBAAgBC,cAAgB76Q,KAAKw4O,UAAUpC,mBAAmBp2O,KAAKxc,MAEpF,EACAm2R,EAA2Bz5Q,UAAU8K,mBAAqB,SAAUukB,GAChE,IAAIkrP,EAAgBz6Q,KAAK9hB,MAAMu8R,cAM/B,GALIA,GACAA,IAAkBlrP,EAAUkrP,eAC5BA,IAAkBz6Q,KAAKg3O,QACvBh3O,KAAK9hB,MAAMy8R,mBAAmB36Q,KAAKu6Q,aAEnCv6Q,KAAK46Q,gBAAiB,CACtB,IAAIC,EAAgB76Q,KAAKw4O,UAAUpC,mBAAmBp2O,KAAKxc,MACvDq3R,IAAkBtrP,EAAUurP,cAAc1kC,mBAAmB7mN,EAAU/rC,QACvEwc,KAAK46Q,gBAAgBC,cAAgBA,EAE7C,CACJ,EACAlB,EAA2Bz5Q,UAAU2yF,eAAiB,WAClD,IAAIp7G,EACAirB,EAAQ1C,KACZ,GAAIA,KAAK9hB,MAAM68R,WAAY,CACvB,IAAIxhS,EAAOymB,KAAK9hB,MAAM3E,KACtB,OAAQhG,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,oBACvD77B,EAAAA,cAAoB,QAAS,CAAEiG,KAAM,WAAY3F,WAAWu7B,EAAAA,EAAAA,GAAW,2BAA4B33B,EAAK,CAAC,EACjGA,EAAG,cAAcyM,OAAOm0B,EAAQ9+B,IAASA,IAASA,EAClD9B,EAAG,cAAgBuoB,KAAK9lB,SACxBzC,IAAM,aAAcuoB,KAAKxc,KAAKzF,KAAM0hG,QAAS70E,QAAQ5K,KAAKw4O,UAAU/4J,QAAQz/E,KAAKxc,OAAQpQ,GAAI4sB,KAAK45Q,SAAUruQ,UAAW,EAAG/lB,SAAUwa,KAAK65Q,cAAe9lS,IAAK,SAAUy3B,GAAM,OAAO9I,EAAMk4Q,gBAAkBpvQ,CAAI,IACxNj4B,EAAAA,cAAoB,QAAS,CAAEM,UAAW,mBAAoBmnS,QAASh7Q,KAAK45Q,WACpF,CAIJ,EACAD,EAA2Bz5Q,UAAUs6Q,iBAAmB,WAKpD,OAJmBx6Q,KAAK9hB,MAAM+8R,cAGzBj7Q,KAAKw4O,UAAUlf,YAAYt5N,KAAKxc,QAAS81O,EAAAA,EAAAA,IAAYt5N,KAAKxc,KAAMwc,KAAKw4O,UAAUlC,sBAIpF/iQ,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,oBAAqB,CAAE,aAAcpP,KAAK9lB,WAAa7E,QAAS2qB,KAAKqiD,gBACrH9uE,EAAAA,cAAoBszC,EAAAA,EAAUhyB,EAAS,CAAC,EAAGmL,KAAKk7Q,iBACxD,EACAvB,EAA2Bz5Q,UAAUg6Q,2BAA6B,WAC9D,IAAIx3Q,EAAQ1C,KACRznB,EAAOynB,KAAKw4O,UAAU/kQ,SAASusB,KAAKxc,MACxC,OAAO+0P,EAAAA,EAAAA,IAA8Bv4O,KAAKxc,KAAMwc,KAAKw4O,WAChDjlQ,EAAAA,cAAoB,KAAM,CAAEM,UAAW,mBAAoBkE,KAAM,SAAWQ,EAAK0H,KAAI,SAAUuD,EAAMoR,GAClG,OAAQrhB,EAAAA,cAAoB4nS,EAAc,CAAE33R,KAAMA,EAAM7J,SAAoB,IAAVib,EAAc,MAAQA,IAAUrc,EAAKsJ,OAAS,EAAI,MAAQ,MAAOm1P,OAAQmiC,EAAAA,SAAqBvkR,EAAO8N,EAAMs0O,QAASgjC,SAAUt3Q,EAAMxkB,MAAM87R,SAAU/uQ,QAASvI,EAAMxkB,MAAM+sB,QAASwvQ,cAAe/3Q,EAAMxkB,MAAMu8R,cAAeW,eAAgB14Q,EAAMxkB,MAAMk9R,eAAgBN,cAAep4Q,EAAMxkB,MAAM48R,cAAeO,OAAQ34Q,EAAMxkB,MAAMm9R,OAAQN,WAAYr4Q,EAAMxkB,MAAM68R,WAAYO,oBAAqB54Q,EAAMxkB,MAAMo9R,oBAAqB5oR,YAAagQ,EAAMxkB,MAAMwU,YAAaioR,mBAAoBj4Q,EAAMxkB,MAAMy8R,mBAAoBn2G,UAAW9hK,EAAMxkB,MAAMsmL,UAAW6+D,QAAS3gO,EAAMxkB,MAAMmlP,QAASM,OAAQjhO,EAAMxkB,MAAMylP,OAAQJ,UAAW7gO,EAAMxkB,MAAMqlP,UAAW03C,YAAav4Q,EAAMxkB,MAAM+8R,YAAa54N,eAAgB3/C,EAAMxkB,MAAMmkE,eAAgBw3N,cAAen3Q,EAAMxkB,MAAM27R,cAAeC,cAAep3Q,EAAMxkB,MAAM47R,cAAexuQ,IAAK1W,EAAOrb,KAAMmpB,EAAMxkB,MAAM3E,KAAMW,SAAUwoB,EAAMxoB,SAAU4pC,MAAOphB,EAAMxkB,MAAM4lC,OAC77B,UAAO5wC,CACf,EACAymS,EAA2Bz5Q,UAAUk6Q,iBAAmB,WACpD,OAAQ7mS,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,kBAAmB,CACvE,UAAWpP,KAAK9hB,MAAMu8R,gBAAkBz6Q,KAAKg3O,OAC7C,aAAch3O,KAAKw4O,UAAU/4P,SAASugB,KAAKxc,MAC3C,aAAcwc,KAAK9lB,WACnBxG,MAAO,CAAEq7P,YAAa,QAAU15P,QAAS2qB,KAAKtN,YAAaonR,cAAe95Q,KAAK85Q,eACnFvmS,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,wBAA0BmsB,KAAK9hB,MAAMm9R,OAC1E9nS,EAAAA,cAAoBysB,KAAK9hB,MAAMm9R,OAAQ,CAAE73R,KAAMwc,KAAKxc,KAAM+3R,sBAAuBv7Q,KAAKg3O,SACtFh3O,KAAKw4O,UAAUz6P,KAAKiiB,KAAKxc,OACrC,EACAb,OAAO6nB,eAAemvQ,EAA2Bz5Q,UAAW,YAAa,CACrEuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAM48R,aACtB,EACApwQ,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemvQ,EAA2Bz5Q,UAAW,SAAU,CAClEuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAM84P,MACtB,EACAtsO,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemvQ,EAA2Bz5Q,UAAW,OAAQ,CAChEuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMsF,IACtB,EACAknB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemvQ,EAA2Bz5Q,UAAW,WAAY,CACpEuK,IAAK,WACD,OAAQzK,KAAK9hB,MAAMu8R,eAAiBz6Q,KAAK9hB,MAAMk9R,kBAAoBp7Q,KAAKg3O,OAAS,GAAK,CAC1F,EACAtsO,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemvQ,EAA2Bz5Q,UAAW,eAAgB,CACxEuK,IAAK,WACD,OAAOzK,KAAKw4O,UAAUlf,YAAYt5N,KAAKxc,QAAS81O,EAAAA,EAAAA,IAAYt5N,KAAKxc,KAAMwc,KAAKw4O,UAAUlC,oBAClF1rO,QAAQ5K,KAAKw4O,UAAUj2L,SAASviD,KAAKxc,YAAStQ,CACtD,EACAw3B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemvQ,EAA2Bz5Q,UAAW,WAAY,CACpEuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMhE,UAAY8lB,KAAKw4O,UAAUt+P,SAAS8lB,KAAKxc,KAC/D,EACAknB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemvQ,EAA2Bz5Q,UAAW,cAAe,CACvEuK,IAAK,WACD,OAAIzK,KAAK9hB,MAAM68R,WACP/6Q,KAAKw4O,UAAU/4J,QAAQz/E,KAAKxc,MACrB,OAGAwc,KAAKw4O,UAAUpC,mBAAmBp2O,KAAKxc,MAAQ,QAAU,aAIpE,CAER,EACAknB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemvQ,EAA2Bz5Q,UAAW,eAAgB,CACxEuK,IAAK,WACD,QAAIzK,KAAKw4O,UAAU/4P,SAASugB,KAAKxc,QAGxBwc,KAAK9hB,MAAMo9R,sBACTt7Q,KAAK9lB,eAAWhH,OAGvB,EAER,EACAw3B,YAAY,EACZC,cAAc,IAElBgvQ,EAA2Bz5Q,UAAUg7Q,aAAe,WAChD,IAAI34N,EAAWviD,KAAKw4O,UAAUj2L,SAASviD,KAAKxc,MAE5C,OADc++D,KAAa+2K,EAAAA,EAAAA,IAAYt5N,KAAKxc,KAAMwc,KAAKw4O,UAAUlC,oBAEtD,CAAExgQ,KAAM,WAEZysE,EACD,CAAEzsE,KAAM,iBAAkBV,KAAMgqP,EAAAA,KAChC,CAAEtpP,KAAMkqB,KAAK9hB,MAAM4lC,MAAQ,iBAAmB,kBAAmB1uC,KAAM4qB,KAAK9hB,MAAM4lC,MAAQ03P,EAAAA,IAAmBC,EAAAA,IACvH,EACA9B,EAA2BtwQ,aAAe,CACtC1vB,SAAU,OAEPggS,CACX,CA7MgD,CA6M9CpmS,EAAAA,WAIS4nS,EAAe5nS,EAAAA,YAAiB,SAAU2K,EAAOnK,GACxD,IACI2nS,EADuBnoS,EAAAA,WAAiBmmS,GACCjzQ,UAAKvzB,EAAWgL,GAC7D,OAAQ3K,EAAAA,cAAoBomS,EAA4B9kR,EAAS,CAAE9gB,IAAKA,GAAO2nS,GACnF,IACAP,EAAarhQ,YAAc,4BC3PhB3D,EAAkB,CACzBrgC,KAAM,iCACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,yJCTlBhyC,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAuBzCgX,EAAUD,EAAAA,EAAeC,QAqBzBsjQ,EAA0B,SAAUn0Q,GAEpC,SAASm0Q,EAASz9R,GACd,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAkGxC,OA9FA0C,EAAM3vB,MAAQ,CAAE0nS,mBAAevnS,EAAW0oS,yBAAqB1oS,EAAWkoS,eAAgBjC,EAAAA,yBAC1Fz2Q,EAAM81O,UAAY,KAIlB91O,EAAMm5Q,oBAAqB,EAC3Bn5Q,EAAMs3Q,UAAW7lQ,EAAAA,EAAAA,KACjBzR,EAAM/iB,SAAW,KACjB+iB,EAAMi4Q,mBAAqB,SAAUmB,GAC7Bp5Q,EAAMm5Q,oBACNn5Q,EAAMq5Q,aAAaD,EAE3B,EACAp5Q,EAAMm3Q,cAAgB,SAAU3lS,EAAOsP,EAAMwzP,GACzCt0O,EAAMs5Q,SAAShlC,GACft0O,EAAMu5Q,oBAAoB/nS,EAAOsP,EAAMwzP,EAC3C,EACAt0O,EAAM2/C,eAAiB,SAAUnuE,EAAOsP,EAAMwzP,GAC1Ct0O,EAAMs5Q,SAAShlC,GACft0O,EAAMw5Q,qBAAqBhoS,EAAOsP,EAAMwzP,EAC5C,EACAt0O,EAAM2gO,QAAU,SAAU5qD,EAAQj1L,EAAMwzP,GAChCt0O,EAAMxkB,MAAMi+R,iBACZz5Q,EAAMxkB,MAAMi+R,gBAAgB11Q,UAAKvzB,EAAW,CAAEknB,OAAQsI,EAAOlf,KAAMA,EAAM+3R,sBAAuBvkC,GAExG,EACAt0O,EAAMihO,OAAS,SAAUzvP,EAAOsP,EAAMwzP,GAClC,IAAI1O,EAAQp0P,EAAMo0P,MAAOE,EAAQt0P,EAAMs0P,MAAO/wD,EAAUvjM,EAAMujM,QAASC,EAAUxjM,EAAMwjM,QACnFh1K,EAAMxkB,MAAMk+R,gBACZ15Q,EAAMxkB,MAAMk+R,eAAe31Q,UAAKvzB,EAAW,CACvCknB,OAAQsI,EACRlf,KAAMA,EACN+3R,sBAAuBvkC,EACvB1O,MAAOA,EACPE,MAAOA,EACP/wD,QAASA,EACTC,QAASA,GAGrB,EACAh1K,EAAM6gO,UAAY,SAAUrvP,EAAOsP,EAAMwzP,GACrC,IAAI1O,EAAQp0P,EAAMo0P,MAAOE,EAAQt0P,EAAMs0P,MAAO/wD,EAAUvjM,EAAMujM,QAASC,EAAUxjM,EAAMwjM,QACnFh1K,EAAMxkB,MAAMm+R,eACZ35Q,EAAMxkB,MAAMm+R,cAAc51Q,UAAKvzB,EAAW,CACtCknB,OAAQsI,EACRlf,KAAMA,EACN+3R,sBAAuBvkC,EACvB1O,MAAOA,EACPE,MAAOA,EACP/wD,QAASA,EACTC,QAASA,GAGrB,EACAh1K,EAAMhQ,YAAc,SAAUxe,EAAOsP,EAAMwzP,GACvCt0O,EAAMs5Q,SAAShlC,GACft0O,EAAM45Q,kBAAkBpoS,EAAOsP,EAAMwzP,EACzC,EACAt0O,EAAMkH,QAAU,WACZ6E,aAAa/L,EAAM65Q,kBACerpS,IAA9BwvB,EAAM3vB,MAAM0nS,eAA+B/3Q,EAAMnqB,KAAKsJ,QACtD6gB,EAAMs5Q,SAASt5Q,EAAM3vB,MAAMqoS,eAEnC,EACA14Q,EAAMoH,OAAS,WACX2E,aAAa/L,EAAM65Q,aACnB75Q,EAAM65Q,YAAcxjS,OAAOi3B,YAAW,WAAc,OAAOtN,EAAMs5Q,cAAS9oS,EAAY,GAAG,EAC7F,EACAwvB,EAAM+I,UAAY,SAAUv3B,GACxB,IAAIuvR,EAAc/gQ,EAAM4jQ,iBACxB,GAAI7C,GAAe/gQ,EAAM81O,UAAW,CAChC,IAAIgkC,EAAY77G,EAAI8iG,EAAa/gQ,EAAM3vB,MAAM0nS,cAAe/3Q,EAAMnqB,KAAMrE,EAAMm2B,QAAS3H,EAAM81O,WACzFgkC,IAAc95Q,EAAM3vB,MAAM0nS,gBAE1BvmS,EAAM+gB,iBACNyN,EAAMm5Q,oBAAqB,EAC3Bn5Q,EAAMs5Q,SAASQ,IAEnB95Q,EAAM+5Q,wBAAwBvoS,EAAOuvR,EACzC,CACJ,EACA/gQ,EAAMo3Q,cAAgB,SAAU5lS,EAAOsP,EAAMwzP,GACzC,GAAIt0O,EAAMxkB,MAAM47R,cAAe,CAC3B,IAAIt1E,EAAK,CACLpqM,OAAQsI,EACR0P,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB3uB,KAAMA,EACNk5R,OAAQ1lC,GAEZt0O,EAAMxkB,MAAM47R,cAAcrzQ,UAAKvzB,EAAWsxN,EAC9C,CACJ,GACAtuL,EAAAA,EAAAA,GAAgBC,GACTzT,CACX,CAyLA,OA9RAuD,EAAU01Q,EAAUn0Q,GAsGpB7kB,OAAO6nB,eAAemxQ,EAASz7Q,UAAW,UAAW,CAIjDuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAKlBgxQ,EAASz7Q,UAAUnrB,OAAS,WACxB,IAAI0C,EACAirB,EAAQ1C,KACZA,KAAKw4O,UAAY,IAAImkC,EAAAA,EAAc38Q,KAAK9hB,OACxC,IAAIrG,EAAKmoB,KAAK9hB,MAAO3E,EAAO1B,EAAG0B,KAAM1F,EAAYgE,EAAGhE,UACpD,OAAQN,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,cAAe33B,EAAK,CAAC,EACxEA,EAAG,cAAcyM,OAAOm0B,EAAQ9+B,IAASA,IAASA,EAClD9B,EAAG,sBAAwBuoB,KAAK9hB,MAAMsmL,UACtC/sL,EAAG,SAA8B,QAAnBuoB,KAAK9hB,MAAMyd,IACzBlkB,GAAK5D,GAAY43B,UAAWzL,KAAKyL,UAAW7B,QAAS5J,KAAK4J,QAASE,OAAQ9J,KAAK8J,OAAQ/xB,KAAM,OAAQ,yBAAwBioB,KAAKs7Q,0BAA6BpoS,EAAW,aAAc8sB,KAAK9hB,MAAM,cAAe,kBAAmB8hB,KAAK9hB,MAAM,mBAAoBnK,IAAK,SAAUs0B,GAAW,OAAO3F,EAAM/iB,SAAW0oB,CAAS,EAAGkD,SAAUvL,KAAK9hB,MAAMqtB,UAC5Vh4B,EAAAA,cAAoB,KAAM,CAAEM,UAAW,oCAAqCkE,KAAM,SAAWioB,KAAKznB,KAAK0H,KAAI,SAAUuD,EAAMoR,GACvH,OAAQrhB,EAAAA,cAAoB4nS,EAAc,CAAE33R,KAAMA,EAAM7J,SAAoB,IAAVib,EAAc,MAAQA,IAAU8N,EAAMnqB,KAAKsJ,OAAS,EAAI,MAAQ,MAAOm1P,OAAQpiP,EAAMsgC,WAAY8kP,SAAUt3Q,EAAMs3Q,SAAU/uQ,QAASvI,EAAMxkB,MAAM+sB,QAASwvQ,cAAe/3Q,EAAM3vB,MAAM0nS,cAAeW,eAAgB14Q,EAAM3vB,MAAMqoS,eAAgBN,cAAep4Q,EAAM81O,UAAW6iC,OAAQ34Q,EAAMxkB,MAAMsF,KAAMu3R,WAAYr4Q,EAAMxkB,MAAM68R,WAAYO,oBAAqB54Q,EAAM44Q,oBAAqB5oR,YAAagQ,EAAMhQ,YAAaioR,mBAAoBj4Q,EAAMi4Q,mBAAoBn2G,UAAW9hK,EAAMxkB,MAAMsmL,UAAW6+D,QAAS3gO,EAAM2gO,QAASM,OAAQjhO,EAAMihO,OAAQJ,UAAW7gO,EAAM6gO,UAAW03C,YAAav4Q,EAAMxkB,MAAM+8R,YAAa54N,eAAgB3/C,EAAM2/C,eAAgBw3N,cAAen3Q,EAAMm3Q,cAAeC,cAAep3Q,EAAMo3Q,cAAexuQ,IAAK1W,EAAOrb,KAAMA,EAAMuqC,MAA2B,QAApBphB,EAAMxkB,MAAMyd,KAC5zB,KACR,EAIAggR,EAASz7Q,UAAU8K,mBAAqB,WACpChL,KAAK67Q,oBAAqB,EAC1B77Q,KAAK48Q,0BACT,EACAjB,EAASz7Q,UAAUu8Q,wBAA0B,SAAUvoS,EAAOuvR,GAC1D,IAAI/gQ,EAAQ1C,KACZ,GAAuB,OAAnBA,KAAKw4O,UAAT,CAIA,IAAIqkC,EAAY,WACZ,OAAOn6Q,EAAM81O,YAAaW,EAAAA,EAAAA,IAA8Bz2O,EAAM3vB,MAAM0nS,cAAe/3Q,EAAMnqB,KAAMmqB,EAAM81O,UACzG,EACItkQ,EAAMm2B,UAAYtD,EAAAA,EAAKrX,MAAQsQ,KAAKw4O,UAAUj2L,SAASkhN,IAAgBoZ,KAGlE3oS,EAAMm2B,UAAYtD,EAAAA,EAAKltB,QAAUmmB,KAAKw4O,UAAUj2L,SAASkhN,KAC7DzjQ,KAAKw4O,UAAUlf,YAAYmqC,KAAgBnqC,EAAAA,EAAAA,IAAYmqC,EAAazjQ,KAAK9hB,MAAMo5G,iBAAmBulL,IAHnG78Q,KAAKk8Q,qBAAqBhoS,EAAOuvR,EAAazjQ,KAAKjtB,MAAM0nS,eAMpDvmS,EAAMm2B,UAAYtD,EAAAA,EAAK8L,OAASgqQ,IACrC78Q,KAAKs8Q,kBAAkBpoS,EAAOuvR,EAAazjQ,KAAKjtB,MAAM0nS,eAEjDvmS,EAAMm2B,UAAYtD,EAAAA,EAAKytB,OAASqoP,MAErC3oS,EAAM+gB,iBACN+K,KAAKi8Q,oBAAoB/nS,EAAOuvR,EAAazjQ,KAAKjtB,MAAM0nS,eAlB5D,CAoBJ,EACAkB,EAASz7Q,UAAU87Q,SAAW,SAAUvB,GACpC,GAAIA,GAAiBz6Q,KAAKw4O,UACtB,GAAIx4O,KAAKw4O,UAAUtC,aAAc,CAC7B,IAAI1yP,EAAOwc,KAAK+2O,YAAY0jC,GAC5Bz6Q,KAAKuO,SAAS,CAAEksQ,cAAeA,EAAemB,oBAAqB57Q,KAAKw4O,UAAUnC,QAAQ7yP,IAC9F,MAEIwc,KAAKuO,SAAS,CAAEksQ,cAAeA,SAInCz6Q,KAAKuO,UAAS,SAAUx7B,GACpB,MAAO,CACH0nS,mBAAevnS,EACf0oS,yBAAqB1oS,EACrBkoS,eAAgBroS,EAAM0nS,cAE9B,GAER,EACAkB,EAASz7Q,UAAUomQ,eAAiB,WAChC,OAAOtmQ,KAAKjtB,MAAM0nS,cAAgBz6Q,KAAK+2O,YAAY/2O,KAAKjtB,MAAM0nS,oBAAiBvnS,CACnF,EACAyoS,EAASz7Q,UAAU62O,YAAc,SAAUC,GACvC,OAAOmiC,EAAAA,YAAwBniC,EAAQh3O,KAAKznB,KAAMynB,KAAK9hB,MAAMo5G,eAAiBmiL,EAClF,EACAkC,EAASz7Q,UAAU+7Q,oBAAsB,SAAU19C,EAAiB/6O,EAAMwzP,IACtEpwD,EAAAA,EAAAA,GAAc5mL,KAAK9hB,MAAM27R,cAAet7C,EAAiBv+N,KAAM,CAAExc,KAAMA,EAAM+3R,sBAAuBvkC,GACxG,EACA2kC,EAASz7Q,UAAUg8Q,qBAAuB,SAAU39C,EAAiB/6O,EAAMwzP,IACvEpwD,EAAAA,EAAAA,GAAc5mL,KAAK9hB,MAAMmkE,eAAgBk8K,EAAiBv+N,KAAM,CAAExc,KAAMA,EAAM+3R,sBAAuBvkC,GACzG,EACA2kC,EAASz7Q,UAAUo8Q,kBAAoB,SAAU/9C,EAAiB/6O,EAAMwzP,IACpEpwD,EAAAA,EAAAA,GAAc5mL,KAAK9hB,MAAMwU,YAAa6rO,EAAiBv+N,KAAM,CAAExc,KAAMA,EAAM+3R,sBAAuBvkC,GACtG,EACA2kC,EAASz7Q,UAAU08Q,yBAA2B,WAC1C,GAAI58Q,KAAKw4O,WAAax4O,KAAKw4O,UAAUtC,aAAc,CAC/C,IAAI0lC,EAAsB57Q,KAAKjtB,MAAM6oS,oBACrC,GAAIA,EAAqB,CACrB,IAAInB,EAAgBz6Q,KAAK9hB,MAAM4+R,0BAC3B98Q,KAAK9hB,MAAM4+R,0BAA0BlB,IACrCnjC,EAAAA,EAAAA,IAAcmjC,EAAqB57Q,KAAKw4O,UAAUtC,aAAcl2O,KAAKznB,KAAMynB,KAAK9hB,MAAMo5G,eACtFmjL,IAAkBz6Q,KAAKjtB,MAAM0nS,gBAC7Bz6Q,KAAK67Q,oBAAqB,EAC1B77Q,KAAKuO,SAAS,CAAEksQ,cAAeA,IAEvC,CACJ,CACJ,EACA93R,OAAO6nB,eAAemxQ,EAASz7Q,UAAW,sBAAuB,CAC7DuK,IAAK,WACD,OAA8C,IAAvCzK,KAAK9hB,MAAM,yBAA2E,SAAvC8hB,KAAK9hB,MAAM,uBACrE,EACAwsB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAemxQ,EAASz7Q,UAAW,OAAQ,CAC9CuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAM3F,MAAQ,EAC9B,EACAmyB,YAAY,EACZC,cAAc,IAElBgxQ,EAASz7Q,UAAU67Q,aAAe,SAAUD,GACxCA,EAAQ7zQ,OACZ,EACAtlB,OAAO6nB,eAAemxQ,EAASz7Q,UAAW,OAAQ,CAI9CuK,IAAK,WACD,OAAOzK,KAAKg6Q,QAChB,EACAtvQ,YAAY,EACZC,cAAc,IAKlBgxQ,EAAS3vQ,UAAY,CACjBzzB,KAAM0zB,EAAAA,QAAkBA,EAAAA,KACxBhB,QAASgB,EAAAA,KACTV,SAAUU,EAAAA,OACViqO,aAAcjqO,EAAAA,OACd8wQ,yBAA0B9wQ,EAAAA,KAC1Bo2C,eAAgBp2C,EAAAA,KAChBvZ,YAAauZ,EAAAA,KACbm2C,YAAan2C,EAAAA,OACb4pO,YAAa5pO,EAAAA,OACbqrF,cAAerrF,EAAAA,OACf6pO,iBAAkB7pO,EAAAA,OAClBpmB,UAAWomB,EAAAA,OACX8pO,aAAc9pO,EAAAA,OACdzoB,KAAMyoB,EAAAA,IACN,uBAAwB,SAAU/tB,EAAOguB,EAAUC,GAC/C,YAAwBj5B,IAApBgL,EAAMguB,KACiB,IAApBhuB,EAAMguB,KACc,IAApBhuB,EAAMguB,IACc,SAApBhuB,EAAMguB,IACc,UAApBhuB,EAAMguB,GACF,IAAIG,MAAM,iBAAmBH,EAAnB,kBACNC,EAAgB,yBAExB,IACX,EACA,aAAcF,EAAAA,OACd,kBAAmBA,EAAAA,OACnB1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDtQ,IAAKsQ,EAAAA,QAKT0vQ,EAAStyQ,aAAe,CACpB4B,SAAS,EACTm3C,YH9TkB,WG+TlByzL,YH3SkB,WG4SlBC,iBHhTwB,cGiTxBx+I,cAAemiL,EACf5zR,UH9TgB,OG+ThBkwP,aH3ToB,WG4TpBC,WH5SiB,UG6SjBC,wBHzS+B,qBG0S/B18P,KAAM,UAEHoiS,CACX,CAhS8B,CAgS5BpoS,EAAAA,sBCxUK,SAASypS,GAAiBnoD,EAAYooD,EAAmB/0Q,GAC5D,IAAIzwB,EAAKlE,EAAAA,SAAe0pS,GAAoB5iS,EAAQ5C,EAAG,GAAIylS,EAAWzlS,EAAG,GAMzE,OALAlE,EAAAA,WAAgB,gBACEL,IAAVmH,GAAuBw6O,EAAWxgP,SAClC6oS,EAASroD,EAAWxgP,QAAQmxJ,YAEpC,GAAGt9H,GACI7tB,CACX,CCRO,IAAI8iS,GAAa,SAAUj/R,GAC9B,OAAO3K,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YAC3CN,EAAAA,cAAoB,MAAO,KAAM2K,EAAMzK,UAC/C,wDCPIohB,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,GAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAqBI7kB,GAAUD,EAAAA,EAAeC,QAASC,GAAaF,EAAAA,EAAeE,WAE9D8kQ,GAAc,SAAUl/R,GACxB,OAAO3K,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,sBAAwBqK,EAAMzK,SAClF,EACI4pS,GAAU,SAAUC,GACpB,OAAOA,EAAkBt0R,MAAM,KAAK/I,KAAI,SAAUC,GAAK,OAAOytF,SAASztF,EAAG,GAAK,GACnF,EASImpB,GAAe,CACfwsO,YAAa,WACbuE,cAAe,QACfrgO,cAAe,CACX9O,SAAS,EACT5wB,MAAO,QACPgB,OAAQ,SAEZ9C,KAAM,GACNo+B,UAAU,EACVjjC,MAAO,CAAC,EACRsjC,gBAAgB,EAChBz9B,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,SAQHo5R,IAA2BjjQ,EAAAA,EAAAA,KA6D3BkjQ,GAAejqS,EAAAA,YAAiB,SAAU08R,EAAal8R,GAC9D,IAAI0D,GACJy+B,EAAAA,EAAAA,GAAgBC,GAAAA,GAChB,IAAIj4B,GAAQ8nP,EAAAA,EAAAA,GAAgBu3C,GAA0BtN,GAClDjS,EAAgBnpQ,GAASA,GAAS,CAAC,EAAGwU,IAAenrB,GACrDu/R,EAAelqS,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IAC7D/gC,EAAK4qR,EAAc5qR,IAAMqqS,EACzBllS,EAAOylR,EAAczlR,KAAM4J,EAAc67Q,EAAc77Q,YAAa43B,EAAgBikP,EAAcjkP,cAAermC,EAAQsqR,EAActqR,MAAOmT,EAASm3Q,EAAcn3Q,OAAQ3M,EAAW8jR,EAAc9jR,SAAUrC,EAAKmmR,EAAcxkP,OAAQA,OAAgB,IAAP3hC,EAAgByyB,EAAAA,EAAOzyB,EAAIK,EAAK8lR,EAAcl0Q,QAASA,OAAiB,IAAP5R,EAAgBoyB,EAAAA,EAAOpyB,EAAIqF,EAAcygR,EAAczgR,YAAa1H,EAAQmoR,EAAcnoR,MAAOC,EAAOkoR,EAAcloR,KAAM+/P,EAAcmoB,EAAcnoB,YAAauE,EAAgB4jB,EAAc5jB,cAAe1jO,EAAoBsnP,EAActnP,kBAAmBE,EAAQonP,EAAcpnP,MAAOD,EAAWqnP,EAAcrnP,SAAUK,EAAiBgnP,EAAchnP,eAC3pBzL,GAAWkvC,EAAAA,EAAAA,GAAYujN,EAAczyP,SAAUrxB,GAC/CkgB,EAAS7mB,EAAAA,OAAa,MACtBshP,EAAathP,EAAAA,OAAa,MAC1BmqS,EAAWnqS,EAAAA,OAAa,MACxBoqS,EAAmBpqS,EAAAA,OAAa,MAChCqqS,EAAYrqS,EAAAA,OAAa,MACzBsqS,EAActqS,EAAAA,OAAa,MAC3BuqS,EAAevqS,EAAAA,QAAa,GAC5B8E,EAAK9E,EAAAA,cAAeL,GAAYuvC,GAAapqC,EAAG,GAAI0lS,GAAgB1lS,EAAG,GACvE2lS,QAAqC9qS,IAAxB8qR,EAAcv4Q,MAC3BA,GAAQu4R,GAAahgB,EAAcv4Q,WAAwBvS,IAAfuvC,GAA2BA,GAAau7O,EAAcznR,aAClG25Q,IAAW18L,EAAAA,EAAAA,IAAU/tE,IACrBw4R,GAAmB/tB,IAAWoT,EAAAA,EAAAA,IAAa79Q,GAAOu4Q,EAAcn4Q,WAAa,GAC7EgyB,GAhHU,SAAUu9D,EAAY86K,GACpC,IAAIx5O,EAAoB0+D,EAAW1+D,kBAAmBE,EAAQw+D,EAAWx+D,MAAOD,EAAWy+D,EAAWz+D,SACtG,MAAQ,CACJF,iBAAmCvjC,IAAtBwjC,EACbE,MAAOhM,aAAkB13B,IAAV0jC,EAAsBA,GAAUD,GAAYu5O,GAC3Dn5O,cAAem5O,EAEvB,CAyGmBguB,CAAY,CAAExnQ,kBAAmBA,EAAmBE,MAAOA,EAAOD,SAAUA,GAAYu5O,IACnGjoP,GAAQ10B,EAAAA,aAAkB,WAAc,OAAOshP,EAAWxgP,SAAWwgP,EAAWxgP,QAAQ4zB,OAAS,GAAG,IACxG10B,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDlc,MAAO8/Q,EACP31P,QAASwsN,EAAWxgP,QACpB4zB,MAAOA,GACP,IACJ10B,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAAIsnB,IAAMk0O,EAAAA,EAAAA,GAAOhb,EAAYmpC,EAAcriQ,KACvCshR,QAA4C/pS,IAAxB6mC,EAAc1/B,MAClC0/B,EAAc1/B,WAAyBnH,IAAhBQ,EAAM2G,MAAsB3G,EAAM2G,MAAQgvB,GAAa0Q,cAAc1/B,MAC5F6sR,GAAa8V,GAAiBnoD,EAAYooD,IAC1CkB,GAActpR,GAAS,CAAExa,MAAO6sR,SAAuBh0R,IAARyoB,GAAoB,CAAE0V,UAAW1V,IAAQ,CAAC,GACzFljB,GAAKlF,EAAAA,UAAe,GAAQgb,GAAO9V,GAAG,GAAI+kP,GAAU/kP,GAAG,GACvDkgK,QAAoBzlK,IAAX2T,EAAuBA,EAAS0H,GACzC5V,GAAKpF,EAAAA,UAAe,GAAQsiC,GAAUl9B,GAAG,GAAIooP,GAAapoP,GAAG,GAC7D0G,GAAK9L,EAAAA,WAAkBshC,GAAcx1B,GAAG,GAAI++R,GAAiB/+R,GAAG,GAChEmtR,MAAgB33P,IAAeA,IAAeyB,GAAAA,GAAwB0nP,EAAcznP,UACpFtiB,GAAK1gB,EAAAA,SAAe,IAAKuP,GAASmR,GAAG,GAAI8K,GAAY9K,GAAG,GACxDm+P,GAAc7+Q,EAAAA,aAAkB,WAC5BqqS,EAAUvpS,SAAWupS,EAAUvpS,QAAQg+Q,mBACvCurB,EAAUvpS,QAAQg+Q,kBAAkBx6O,GAASjB,MACvC,QACsB1jC,IAAtBwjC,EA9IO,uCA8IgDA,EAErE,GAAG,CAACA,EAAmBmB,KACvBtkC,EAAAA,UAAgB6+Q,IAChB7+Q,EAAAA,WAAgB,WACZ,IAAI0jC,EAAiB7R,EAAAA,GAAarsB,OAAOm+B,gBAAkB,IAAIn+B,OAAOm+B,eAAeC,GAAetI,KAxKhG,YA4KJ,OAHkB,OAAbrgB,eAAkC,IAAbA,cAAsB,EAASA,SAASa,OAAS4nB,GACvEA,EAAeG,QAAQ5oB,SAASa,MAE7B,YACe,OAAbb,eAAkC,IAAbA,cAAsB,EAASA,SAASa,OAAS4nB,GACvEA,EAAeI,YAEvB,CACJ,GAAG,IACH,IAAIgnQ,GAAY9qS,EAAAA,aAAkB,SAAUW,GACxC,IAAKykK,GAAQ,CACT,GAAIn/H,EAAQ,CACR,IAAI8kQ,EAAYzpR,GAAS,CAAC,EAAG3gB,GAC7BslC,EAAO/S,UAAKvzB,EAAWorS,EAC3B,MACeprS,IAAX2T,GACA22O,IAAQ,EAEhB,CACJ,GAAG,CAAC7kF,GAAQ9xJ,EAAQ2yB,IAChBi6P,GAAalgS,EAAAA,aAAkB,SAAUW,GACzC,GAAIykK,GAAQ,CACR,GAAI7uJ,EAAS,CACT,IAAIy0R,EAAa1pR,GAAS,CAAC,EAAG3gB,GAC9B4V,EAAQ2c,UAAKvzB,EAAWqrS,EAC5B,MACerrS,IAAX2T,IACA22O,IAAQ,GACJgvC,IACAx8P,YAAW,WACP,IAAIv4B,EACJkoP,GAAiD,QAAnCloP,EAAKkmS,EAAiBtpS,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,QACzF,GAAG,KAGf,CACJ,GAAG,CAACswI,GAAQ9xJ,EAAQiD,EAAS0iR,KACzBgS,GAAiBjrS,EAAAA,aAAkB,SAAUW,GAC7C,IAAKA,EAAMitQ,sBAAwB/mP,EAAO/lB,QAAS,CAC/C0sP,IAAW,GACX,IAAIv8B,EAAK,CACLpyL,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB/X,OAAQA,EAAO/lB,UAElBskK,GAAS86H,GAAa4K,IAAW75E,EACtC,CACJ,GAAG,CAAC7rD,GAAQ9xJ,EAAQ2yB,EAAQ1vB,IACxBg0O,GAAcvqP,EAAAA,aAAkB,SAAUwqP,GAC1C+/C,EAAazpS,SAAU,EACvB0pP,IACAhlP,OAAOi3B,YAAW,WAAc,OAAO8tQ,EAAazpS,SAAU,CAAO,GAAG,EAC5E,GAAG,IACCoqS,GAAmBlrS,EAAAA,aAAkB,SAAUW,GAC/C,IAAIuD,EAAII,EACJwyB,EAAUn2B,EAAMm2B,QAASuI,EAAS1+B,EAAM0+B,OACxC8rQ,EAAWb,EAAYxpS,SAAWwpS,EAAYxpS,QAAQg0B,QAC1D,GAAKjO,EAAO/lB,WAAYH,EAAMitQ,uBAAqD,QAA3B1pQ,EAAKimS,EAASrpS,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,WAAan0B,EAAMkmB,QAA1I,CAGA,IAAIoqM,EAAK,CACLpyL,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB/X,OAAQA,EAAO/lB,SAEnB,GAAIskK,GACA,GAAItuI,IAAYtD,EAAAA,EAAKiP,KAAQpD,GAAUvI,IAAYtD,EAAAA,EAAKG,GACpDhzB,EAAM+gB,iBACNw+Q,GAAWjvE,QAEV,GAAIk6E,GAAYA,EAAS94Q,cAAc,cACvCyE,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKI,MACrCkD,IAAYtD,EAAAA,EAAKrX,MAAQ2a,IAAYtD,EAAAA,EAAKltB,OAC1CwwB,IAAYtD,EAAAA,EAAKE,MAAQoD,IAAYtD,EAAAA,EAAKC,KAAM,CACpD,GAAIqD,IAAYtD,EAAAA,EAAKG,KAAmC,QAA3BrvB,EAAK6lS,EAASrpS,eAA4B,IAAPwD,OAAgB,EAASA,EAAGwwB,SAAU,CAClG,IAAI5V,EAAQuF,MAAMklC,KAAKwhP,EAAS//L,iBAAiB,qBAC7C8kL,EAAchhN,GAAc,GAAIhwD,GAAO,GAAM0O,UAAUjT,MAAK,SAAUhO,GAAK,OAAO0qB,QAAQ1qB,GAAKA,EAAE0lB,cAAc,YAAc,IACjI,GAAI69P,GAA8C,IAA/BhxQ,EAAMwoB,QAAQwoP,GAC7B,OAAO3lC,IAAY,WAAc,IAAIrmP,EAAIkoP,GAAyC,QAA3BloP,EAAKimS,EAASrpS,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,QAAU,GAExI,CACAy1N,GAAYxzN,EAAAA,EAChB,MACSD,IAAYtD,EAAAA,EAAKI,MACtB22N,IAAY,WAAc,IAAIrmP,EAAIkoP,IAA0C,QAA3BloP,EAAKimS,EAASrpS,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,UAAYq2Q,EAAW,SAGtI9rQ,GAAUvI,IAAYtD,EAAAA,EAAKI,MAChCjzB,EAAM+gB,iBACNopR,GAAU75E,IAEJ7rD,IACFtuI,IAAYtD,EAAAA,EAAKiP,KACjB+Z,GAAQ77C,EAlChB,CAqCJ,GAAG,CAACykK,GAAQ9xJ,EAAQ2yB,EAAQ1vB,IACxB86Q,GAAiBrxR,EAAAA,aAAkB,SAAUW,GAC7C,IAAIm2B,EAAUn2B,EAAMm2B,QAAkBn2B,EAAM0+B,QAC7BvI,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKI,OAGvDjzB,EAAM+gB,iBACN6oO,GAAYzzN,IAAYtD,EAAAA,EAAKG,GACzB,WAAcy4N,GAAa9K,EAAWxgP,QAAU,EAChD,WAAcsrP,GAAak+C,EAAYxpS,SAAWwpS,EAAYxpS,QAAQg0B,QAAU,GACxF,GAAG,IACCs3N,GAAepsP,EAAAA,aAAkB,SAAU80B,GACvCA,GACAy1N,IAAY,WAAc,OAAOz1N,EAAQJ,OAAS,GAE1D,GAAG,IACC4gQ,GAAgBt1R,EAAAA,aAAkB,WAClC,IAAIkE,EACCo+B,KAAW8iI,IAAW9xJ,EAInB3I,EAAM8D,WACN29O,GAAyC,QAA3BloP,EAAKimS,EAASrpS,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,SAG7Es3N,GAAak+C,EAAYxpS,SAAWwpS,EAAYxpS,QAAQg0B,SAP5DorQ,GAAW,CAAEr5Q,OAAQA,EAAO/lB,SAUpC,GAAG,CAACyV,EAAS5L,EAAM8D,WAAY6zB,GAAShvB,EAAQ8xJ,KAC5C20H,GAAgB/5R,EAAAA,aAAkB,WAC9BsiC,IAEA8pN,GAAa9K,EAAWxgP,QAEhC,GAAG,CAACwhC,KACAjM,GAAUr2B,EAAAA,aAAkB,SAAUW,GACtC,IAAK2hC,KAAYioQ,EAAazpS,UAC1B0sP,IAAW,GACP7iP,EAAM0rB,SAAWxP,EAAO/lB,SAAS,CACjC,IAAIsqS,EAAa,CACbvsQ,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB/X,OAAQA,EAAO/lB,SAEnB6J,EAAM0rB,QAAQnD,UAAKvzB,EAAWyrS,EAClC,CAER,GAAG,CAAC9oQ,GAAS33B,EAAM0rB,UACfE,GAASv2B,EAAAA,aAAkB,SAAUW,GACrC,GAAI2hC,KAAYioQ,EAAazpS,SAAW+lB,EAAO/lB,QAAS,CACpD0sP,IAAW,GACX,IAAIv8B,EAAK,CACLpyL,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB/X,OAAQA,EAAO/lB,SAEnB,GAAI6J,EAAM4rB,OAAQ,CACd,IAAI60Q,EAAa9pR,GAAS,CAAC,EAAG2vM,GAC9BtmN,EAAM4rB,OAAOrD,UAAKvzB,EAAWyrS,EACjC,CACKnS,IACDiH,GAAWjvE,EAEnB,CACJ,GAAG,CAAC3uL,GAAS33B,EAAM4rB,OAAQ6uI,GAAQ9xJ,EAAQiD,IACvC80R,GAAqBrrS,EAAAA,aAAkB,WACnCsiC,IAEAioN,GAAYxzN,EAAAA,GAEZkiQ,IACAx8P,YAAW,WACP,IAAIv4B,EACJkoP,GAAiD,QAAnCloP,EAAKkmS,EAAiBtpS,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,QACzF,GAAG,IAEX,GAAG,CAACwN,GAAS22P,KACTqS,GAActrS,EAAAA,aAAkB,SAAUW,EAAOo6K,EAAUgvH,GAC3D,GAAIp/R,EAAMsH,SAAU,CAChB,IAAIs5R,EAAcjqR,GAAS,CAAEpP,MAAO6oK,EAAUl1C,MAAOkkK,EAAoBD,GAAQC,GAAqB,IAAMppS,GAC5GgK,EAAMsH,SAASihB,UAAKvzB,EAAW4rS,EACnC,CACKd,IACDD,GAAczvH,EAEtB,GAAG,CAACpwK,EAAMsH,SAAUw4R,KAChBx4R,GAAWjS,EAAAA,aAAkB,SAAUW,GACvC,KAAIwvR,EAAAA,EAAAA,IAAQxvR,EAAMsP,KAAMiC,GAAOtD,IAAiBiY,EAAO/lB,QAAvD,CAGA,IAAImP,EAAOtP,EAAMsP,KAAM+3R,EAAwBrnS,EAAMqnS,sBAAuBppQ,EAAcj+B,EAAMi+B,YAC5FqyL,EAAK,CACLpyL,eAF0Hl+B,EAAMk+B,eAGhID,YAAaA,EACb/X,OAAQA,EAAO/lB,SAEnBwqS,GAAYr6E,EAAIhhN,EAAM+3R,GACtB9H,GAAWjvE,EARX,CASJ,GAAG,CAACw5E,GAAYv4R,GAAOvH,EAAMsH,SAAUrD,EAAaw2J,GAAQ9xJ,EAAQiD,IAChEimC,GAAUx8C,EAAAA,aAAkB,SAAUW,GACtC,GAAKkmB,EAAO/lB,QAAZ,CAGA,IAAImwN,EAAK,CACLpyL,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB/X,OAAQA,EAAO/lB,SAEnBwqS,GAAYr6E,EAAI,MAChBivE,GAAWjvE,GACXtwN,EAAM+gB,gBARN,CASJ,GAAG,CAAC+oR,GAAY9/R,EAAMsH,SAAUmzJ,GAAQ9xJ,EAAQiD,IAC5Ci1R,GAAWxrS,EAAAA,aAAkB,SAAUW,GAEvC,GADAA,EAAMk+B,eAAeI,kBACjBt0B,EAAMmkE,gBAAkBjoD,EAAO/lB,QAAS,CACxC,IAAImP,EAAOtP,EAAMsP,KAAM+3R,EAAwBrnS,EAAMqnS,sBAAuBppQ,EAAcj+B,EAAMi+B,YAAaC,EAAiBl+B,EAAMk+B,eAChI4sQ,EAAc,CACd5lK,MAAOikK,GAAQ9B,GACf/3R,KAAMA,EACN2uB,YAAaA,EACbC,eAAgBA,EAChBhY,OAAQA,EAAO/lB,SAEnB6J,EAAMmkE,eAAe57C,UAAKvzB,EAAW8rS,EACzC,CACJ,GAAG,CAAC9gS,EAAMmkE,iBACNppD,GAAiB1lB,EAAAA,aAAkB,SAAUW,GAC7C,GAAIgK,EAAM+a,gBAAkBmB,EAAO/lB,QAAS,CACxC,IACImwN,EAAK,CACL1hN,OAFa,CAAEnG,MAAOuB,EAAM2H,UAAWyY,SAAU,WAAY7Y,MAAOvR,EAAMkmB,OAAO3U,OAGjF2sB,eAAgBl+B,EAAMk+B,eACtBD,YAAaj+B,EAAMi+B,YACnB/X,OAAQA,EAAO/lB,SAEnB6J,EAAM+a,eAAewN,UAAKvzB,EAAWsxN,QAChBtxN,IAAjBgL,EAAM4E,QACNic,GAAU7qB,EAAMkmB,OAAO3U,MAE/B,CACJ,GAAG,CAACvH,EAAM+a,eAAgB/a,EAAM4E,OAAQ5E,EAAM2H,YAe1CsxB,GAAiB5jC,EAAAA,aAAkB,SAAUkmC,GAC7C,IAAK,IAAIC,EAAK,EAAGC,EAAYF,EAASC,EAAKC,EAAU93B,OAAQ63B,IAAM,CAC/D,IAAIE,EAAQD,EAAUD,GACtB0kQ,GAAexkQ,EAAMxf,OAAOyf,YAChC,CAEJ,GAAG,IACColQ,GAAe1rS,EAAAA,SAAc,WAC7B,OAAQyqS,KAAe9tB,GAAY33Q,GAC/BgiQ,EAAAA,EAAAA,IAAQhiQ,EAAM6hQ,GAAe,SAAU52P,GACnC,IAAI/L,EACJ,OAAOmjQ,EAAAA,EAAAA,IAAep3P,EAAM42P,IAAgB3iQ,EAAK,CAAC,GAAMo+P,IAAe6tB,EAAAA,EAAAA,IAAQlgR,EAAMiC,GAAOtD,GAAc1K,GAC9G,GACR,GAAG,CAACc,EAAMkN,GAAOu4R,GAAY9tB,GAAUra,EAAauE,IAChD8kC,GAASlhB,EAAcmhB,YAAchC,GACrCiC,GAAiBphB,EAAcqhB,aAAejC,GAC9Cx9P,IAAei/O,EAAAA,EAAAA,KACf1qR,IAAW6iC,GAAkBa,GAASjB,MACtCr9B,GAAOykR,EAAczkR,KAAM+9B,GAAU0mP,EAAc1mP,QAASnzB,GAAW65Q,EAAc75Q,SACrFm7R,GAAgB/rS,EAAAA,cAAoBA,EAAAA,SAAgB,KACpDA,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,0BAA2B4uP,EAAcnqR,WAAY4D,EAAK,CAAC,EACvGA,EAAG,YAAYyM,OAAOm0B,GAAQ9+B,KAASA,KAASA,GAChD9B,EAAG,aAAayM,OAAOo0B,GAAWhB,KAAYA,KAAYA,GAC1D7/B,EAAG,YAAYyM,OAAOC,KAAaA,GACnC1M,EAAG,WAAao+B,GAChBp+B,EAAG,cAAgBtD,GACnBsD,EAAG,aAAeumR,EAAcp/P,QAChCnnB,EAAG,cAAgBk/B,EACnBl/B,EAAG,cAAgBumR,EAAc9jR,SACjCzC,IAAM8zB,SAAUA,EAAUkzN,UAAWu/B,EAAcv/B,UAAWrrP,GAAIA,EAAIM,MAAOmC,EAAQgf,GAASA,GAAS,CAAC,EAAGnhB,GAAQ,CAAE2G,WAAOnH,IAAeQ,EAAOioB,IAAKA,GAAK5nB,IAAK8gP,EAAYppN,UAAWvxB,OAAWhH,EAAYurS,GAAkB5uQ,YAAa+uQ,GAAoBvpS,QAAS6E,OAAWhH,EAAYsrS,GAAgB50Q,QAASA,GAASE,OAAQA,GAAQ/xB,KAAM,WAAY,gBAAiB,OAAQ,gBAAiB4gK,GAAQ,gBAAiBz+J,EAAU,aAAcrE,EAAO,kBAAmBmoR,EAAcxmP,eAAgB,mBAAoBwmP,EAAcvmP,gBAAiB,gBAAiBd,GACjkBpjC,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,iBACrCN,EAAAA,cAAoB6rS,GAAgB,CAAE57R,KAAMiC,IAASw4R,IAAoB1gS,IAC7EygR,EAAcp/P,SAAWrrB,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,uBAAwBiC,KAAM,YAClGo6Q,KAAah2Q,GAAa3G,EAAAA,cAAoB,OAAQ,CAAE8B,QAAS06C,GAASl8C,UAAW,gBAAiBmM,MAAO4/B,GAAapQ,iBAAiB+wB,EAAAA,GAAO7wB,EAAAA,GAAS6wB,EAAAA,KAASxoD,KAAM,SAAUwzB,UAAW,EAAGsE,YAAa,SAAUn2B,GAAK,OAAOA,EAAEub,gBAAkB,GACrP1hB,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,IAAKV,KAAMi2C,EAAAA,OACrD93C,EAAAA,cAAoB4B,GAAAA,EAAQ,CAAEo2B,UAAW,EAAG/xB,KAAM,SAAU,aAAc,SAAU3F,UAAW,iBAAkB0F,KAAMA,GAAM4K,SAAUA,GAAUpK,WAAY,OAAQu9B,QAAS,KAAMliC,KAAM,iBAAkBujC,QAASymN,EAAAA,MACrN7rP,EAAAA,cAAoB,SAAU,CAAEuC,KAAMA,EAAM/B,IAAK6pS,EAAWryQ,UAAW,EAAG,eAAe,EAAMvrB,MAAOnK,EAAOnC,MAAO,CAAE0hB,QAAS,EAAG/a,MAAO,EAAGoJ,OAAQ,EAAG3J,QAAS,EAAGH,SAAU,WAAY+V,KAAM,QAC3Lnc,EAAAA,cAAoB,SAAU,CAAEkS,MAAOu4Q,EAAcoP,SAAWpP,EAAcoP,SAAS3mQ,UAAKvzB,EAAWuS,IAASA,OACnH+mR,IAAcj5R,EAAAA,cAAoBqkC,EAAAA,EAAO,CAAE/jC,WAAWu7B,EAAAA,EAAAA,GAAW2K,EAAclmC,UAAW,CAAE,QAAiB,QAAR8nB,KAAkBod,YAAY3J,EAAAA,EAAAA,GAAW2K,EAAchB,WAAY,wBAAyBrlC,MAAOyqS,GAAalzQ,QAAS8O,EAAc9O,QAAS6N,OAAQ+7M,EAAWxgP,QAAS61B,KAAMyuI,GAAQn/H,OAAQqvP,GAAe/+Q,QAASwjR,GAAetzP,SAAUD,EAAcC,UACnWgkP,EAAch8Q,YAAezO,EAAAA,cAAoBm2R,EAAAA,EAAY,CAAEjkR,WAAgCvS,IAAzB8qR,EAAcl7Q,OAAuBA,GAASk7Q,EAAcl7Q,OAAQ/O,IAAK2pS,EAAUl4R,SAAUyT,GAAgBwS,UAAWm5P,GAAgBrrR,KAAMA,GAAM+9B,QAASA,GAASnzB,SAAUA,KACtP5L,EAAKsJ,OAAS,EAAKtO,EAAAA,cAAoBooS,EAAU,CAAE5nS,IAAK8pS,EAAatyQ,SAAUA,EAAUhzB,KAAM0mS,GAAc/oC,aAAc/zP,EAAa0D,UAAWm4Q,EAAcn4Q,UAAWgwP,YAAaA,EAAazzL,YAAa47M,EAAc57M,YAAak1C,cAAe8iJ,EAAe6gC,aAAa,EAAMvoR,YAAalN,GAAU68D,eAAgB08N,GAAUxlS,KAAMA,GAAMiK,KAAMw6Q,EAAcx6Q,KAAMmY,IAAKA,KAAWpoB,EAAAA,cAAoB2rS,GAAQ,KAAMt/P,GAAapQ,iBAAiBooQ,EAAAA,GAAQloQ,EAAAA,GAASkoQ,EAAAA,QAC/dpL,IAvD8B,WAC9B,IAAIvd,EAAe+O,EAAch8Q,WAAczO,EAAAA,cAAoBm2R,EAAAA,EAAY,CAAEjkR,WAAgCvS,IAAzB8qR,EAAcl7Q,OAAuBA,GAASk7Q,EAAcl7Q,OAAQ/O,IAAK4pS,EAAkBn4R,SAAUyT,GAAgBwS,UAAWm5P,GAAgBrrR,KAAMA,GAAM+9B,QAASA,GAASnzB,SAAUA,KAAe,KAC3R+wB,EAAmB,CACnBE,cAAe4oP,EAAc5oP,cAC7BD,OAAQwjI,GACR7uJ,QAAS,SAAU5V,GAAS,OAAOu/R,GAAWv/R,EAAQ,EACtD2gC,YAAaA,GACbo6O,aAAcA,GAElB,OAAQ17Q,EAAAA,cAAoBiiC,GAAAA,EAAc3gB,GAAS,CAAC,EAAGqgB,GACnD3hC,EAAAA,cAAoBkiC,GAAAA,EAAoB,CAAE5hC,UAAW,sBACjDN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBAAsB0E,EAAKsJ,OAAS,EAAKtO,EAAAA,cAAoBooS,EAAU,CAAE5nS,IAAK8pS,EAAatyQ,SAAUA,EAAUhzB,KAAM0mS,GAAc/oC,aAAc/zP,EAAa0D,UAAWm4Q,EAAcn4Q,UAAWgwP,YAAaA,EAAazzL,YAAa47M,EAAc57M,YAAak1C,cAAe8iJ,EAAe6gC,aAAa,EAAMvoR,YAAalN,GAAU68D,eAAgB08N,GAAUxlS,KAAMA,GAAMiK,KAAMw6Q,EAAcx6Q,KAAMmY,IAAKA,KAAWpoB,EAAAA,cAAoB2rS,GAAQ,KAAMt/P,GAAapQ,iBAAiBooQ,EAAAA,GAAQloQ,EAAAA,GAASkoQ,EAAAA,SACriB,CA0CkBnM,IAClB,OAAO51R,EAAStC,EAAAA,cAAoBkqE,GAAAA,EAAe,CAAE5nE,MAAOA,EAAO6nE,YAAaugO,GAAkBsB,kBAAmBhiS,EAAa+7B,YAAanlC,GAASolC,eAAgBr/B,EAAUm/B,SAAUjmC,EAAIM,MAAO,CAAE2G,MAAO3G,EAAQA,EAAM2G,WAAQnH,GAAaO,SAAU6rS,GAAc3jR,IAAKA,KAAU2jR,EAC9R,IACItzQ,GAAY,CACZnlB,OAAQolB,EAAAA,KACR/xB,SAAU+xB,EAAAA,KACVtQ,IAAKsQ,EAAAA,OACLV,SAAUU,EAAAA,OACVwyN,UAAWxyN,EAAAA,OACX1zB,KAAM0zB,EAAAA,MACNxmB,MAAOwmB,EAAAA,IACPmhQ,SAAUnhQ,EAAAA,KACV1uB,YAAa0uB,EAAAA,OACb9pB,YAAa8pB,EAAAA,OAAiBoY,WAC9Bx+B,UAAWomB,EAAAA,OAAiBoY,WAC5BwxN,YAAa5pO,EAAAA,OACbm2C,YAAan2C,EAAAA,OACbmuO,cAAenuO,EAAAA,OACfp4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPp2B,MAAOo2B,EAAAA,OACPyK,kBAAmBzK,EAAAA,OACnB+K,eAAgB/K,EAAAA,KAChB2K,MAAO3K,EAAAA,KACP0K,SAAU1K,EAAAA,KACVn2B,KAAMm2B,EAAAA,OACN74B,GAAI64B,EAAAA,OACJuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjBjqB,WAAYiqB,EAAAA,KACZnpB,OAAQmpB,EAAAA,OACRrN,QAASqN,EAAAA,KACT8N,cAAe9N,EAAAA,MAAgB,CAC3BhB,QAASgB,EAAAA,UAAoB,CAACA,EAAAA,KAAgBA,EAAAA,MAAgB,CACtDkrQ,aAAclrQ,EAAAA,OACdmrQ,cAAenrQ,EAAAA,WAEvB8M,WAAY9M,EAAAA,OACZp4B,UAAWo4B,EAAAA,OACX+N,SAAU/N,EAAAA,IACV5xB,MAAO4xB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC9C5wB,OAAQ4wB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,WAEnDuN,OAAQvN,EAAAA,KACRniB,QAASmiB,EAAAA,KACTrC,QAASqC,EAAAA,KACTnC,OAAQmC,EAAAA,KACRzmB,SAAUymB,EAAAA,KACVhT,eAAgBgT,EAAAA,KAChBo2C,eAAgBp2C,EAAAA,KAChBzoB,KAAMyoB,EAAAA,KACNozQ,YAAapzQ,EAAAA,KACbkzQ,WAAYlzQ,EAAAA,KACZmJ,cAAenJ,EAAAA,OACfsK,SAAUtK,EAAAA,MAEduxQ,GAAa1jQ,YAAc,yBAC3B0jQ,GAAaxxQ,UAAYA,kBC3hBrBnX,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,GAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAsBI7kB,GAAUD,EAAAA,EAAeC,QAASC,GAAaF,EAAAA,EAAeE,WAY9DjP,GAAe,CACf2sO,WAAY,aACZC,wBAAyB,0BACzBmE,cAAe,QACfrgO,cAAe,CACX9O,SAAS,EACT5wB,MAAO,QACPgB,OAAQ,SAEZ9B,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,QACVwyB,UAAU,EACVK,gBAAgB,GAQTwoQ,IAA8BllQ,EAAAA,EAAAA,KAwE9BmlQ,GAAkBlsS,EAAAA,YAAiB,SAAU08R,EAAal8R,GACjE,IAAI0D,EAAII,EACJqG,GAAQ8nP,EAAAA,EAAAA,GAAgBw5C,GAA6BvP,IACzD/5P,EAAAA,EAAAA,GAAgBC,GAAAA,GAChB,IAAIupQ,EAAgBnsS,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IAC9D/gC,EAAK8K,EAAM9K,IAAMssS,EACjBxnS,EAAKgG,EAAM3F,KAAMA,OAAc,IAAPL,EAAgB,GAAKA,EAAIiK,EAAcjE,EAAMiE,YAAa9J,EAAK6F,EAAM67B,cAAeA,OAAuB,IAAP1hC,EAAgB,CAAC,EAAIA,EAAII,EAAKyF,EAAMxK,MAAOA,OAAe,IAAP+E,EAAgB,CAAC,EAAIA,EAAIoO,EAAS3I,EAAM2I,OAAQ3M,EAAWgE,EAAMhE,SAAUvB,EAAKuF,EAAMs7B,OAAQA,OAAgB,IAAP7gC,EAAgB2xB,EAAAA,EAAO3xB,EAAI0G,EAAKnB,EAAM4L,QAASA,OAAiB,IAAPzK,EAAgBirB,EAAAA,EAAOjrB,EAAI9B,EAAcW,EAAMX,YAAa1H,EAAQqI,EAAMrI,MAAOC,EAAOoI,EAAMpI,KAAMme,EAAK/V,EAAM83P,WAAYA,OAAoB,IAAP/hP,EAAgBoV,GAAa2sO,WAAa/hP,EAAIG,EAAKlW,EAAM+3P,wBAAyBA,OAAiC,IAAP7hP,EAAgBiV,GAAa4sO,wBAA0B7hP,EAAIgJ,EAAKlf,EAAMk8P,cAAeA,OAAuB,IAAPh9O,EAAgBiM,GAAa+wO,cAAgBh9O,EAAIsZ,EAAoBx4B,EAAMw4B,kBAAmBE,EAAQ14B,EAAM04B,MAAOu+H,EAAOj3J,EAAMi3J,KAAM1vJ,EAAQvH,EAAMuH,MAAO4X,EAAKnf,EAAMy4B,SAAUA,OAAkB,IAAPtZ,EAAgBgM,GAAasN,SAAWtZ,EAAIE,EAAKrf,EAAM84B,eAAgBA,QAAwB,IAAPzZ,EAAgB8L,GAAa2N,eAAiBzZ,EACz+BgO,IAAWkvC,EAAAA,EAAAA,GAAYv8D,EAAMqtB,SAAUrxB,GACvCylS,GAAYpsS,EAAAA,OAAa,MACzBshP,GAAathP,EAAAA,OAAa,MAC1BmqS,GAAWnqS,EAAAA,OAAa,MACxBoqS,GAAmBpqS,EAAAA,OAAa,MAChCqqS,GAAYrqS,EAAAA,OAAa,MACzBsqS,GAActqS,EAAAA,OAAa,MAC3BuqS,GAAevqS,EAAAA,QAAa,GAC5BqsS,GAAkBrsS,EAAAA,OAAa,IAC/ButP,GAAWvtP,EAAAA,OAAa,MACxBmqB,GAAKnqB,EAAAA,WAAkBssS,GAAkBniR,GAAG,GAAIoiR,GAAqBpiR,GAAG,GACxEqiR,GAAKxsS,EAAAA,UAAe,GAAQysS,GAAYD,GAAG,GAAIE,GAAeF,GAAG,GACjEG,GAAK3sS,EAAAA,UAAe,GAAQ4sS,GAAeD,GAAG,GAAIE,GAAkBF,GAAG,GACvEG,GAAK9sS,EAAAA,WAAkBshC,GAAcwrQ,GAAG,GAAIjC,GAAiBiC,GAAG,GAChE1jH,GAAKppL,EAAAA,SAAe,IAAK+sS,GAAmB3jH,GAAG,GAAI4jH,GAAsB5jH,GAAG,GAC5E6jH,GAAKjtS,EAAAA,SAAe,IAAKktS,GAAcD,GAAG,GAAIE,GAAiBF,GAAG,GAClEhU,MAAgB33P,IAAeA,IAAeyB,GAAAA,GAAwBp4B,EAAMq4B,UAC5EoiI,QAAoBzlK,IAAX2T,EAAuBA,EAASm5R,GACzC9vB,GAAWtlP,QAAQ5S,MAAMC,QAAQxS,IAAUA,EAAM5D,QACjDg2B,GA/HU,SAAUu9D,EAAY86K,GACpC,IAAIx5O,EAAoB0+D,EAAW1+D,kBAAmBE,EAAQw+D,EAAWx+D,MAAOD,EAAWy+D,EAAWz+D,SACtG,MAAQ,CACJF,iBAAmCvjC,IAAtBwjC,EACbE,MAAOhM,aAAkB13B,IAAV0jC,EAAsBA,GAAUD,GAAYu5O,GAC3Dn5O,cAAem5O,EAEvB,CAwHmBguB,CAAY,CAAExnQ,kBAAmBA,EAAmBE,MAAOA,EAAOD,SAAUA,GAAYu5O,IACnGv0P,IAAMk0O,EAAAA,EAAAA,GAAOhb,GAAY32O,EAAMyd,KAC/BshR,QAA4C/pS,IAAxB6mC,EAAc1/B,MAClC0/B,EAAc1/B,WAAyBnH,IAAhBQ,EAAM2G,MAAsB3G,EAAM2G,MAAQgvB,GAAa0Q,cAAc1/B,MAC5F6sR,GAAa8V,GAAiBnoD,GAAYooD,IAC1CkB,GAActpR,GAAS,CAAExa,MAAO6sR,SAAuBh0R,IAARyoB,GAAoB,CAAE0V,UAAW1V,IAAQ,CAAC,GACzFsM,GAAQ10B,EAAAA,aAAkB,WAAc,OAAOshP,GAAWxgP,SAAWwgP,GAAWxgP,QAAQ4zB,OAAS,GAAG,IACxG23Q,GAAgBvrS,aAAmBnB,IAATiiK,GACrB1vJ,GAAS,IAAIxF,KAAI,SAAUuD,GAAQ,MAAQ,CAAEzF,MAAMulR,EAAAA,EAAAA,IAAa9/Q,EAAMtF,EAAM2H,WAAYtN,KAAM,CAACiL,GAAU,IAAKi/D,GAAc,GAAI0yF,GAAM,GAC3I5hK,EAAAA,oBAA0BosS,IAAW,WAAc,MAAQ,CACvDzhS,MAAOA,EACPmqB,QAASwsN,GAAWxgP,QACpB4zB,MAAOA,GACP,IACJ10B,EAAAA,oBAA0BQ,GAAK,WAAc,OAAO4rS,GAAUtrS,OAAS,IACvE,IAAI+9Q,GAAc7+Q,EAAAA,aAAkB,WAC5BqqS,GAAUvpS,SAAWupS,GAAUvpS,QAAQg+Q,mBACvCurB,GAAUvpS,QAAQg+Q,kBAAkBx6O,GAASjB,MACvC,QACsB1jC,IAAtBwjC,EAvJO,uCAuJgDA,EAErE,GAAG,CAACA,EAAmBmB,KACvBtkC,EAAAA,UAAgB6+Q,IAChB7+Q,EAAAA,WAAgB,WACZ,IAAI0jC,EAAiB7R,EAAAA,GAAarsB,OAAOm+B,gBAAkB,IAAIn+B,OAAOm+B,eAAeC,GAAetI,KAhLhG,YAoLJ,OAHkB,OAAbrgB,eAAkC,IAAbA,cAAsB,EAASA,SAASa,OAAS4nB,GACvEA,EAAeG,QAAQ5oB,SAASa,MAE7B,WACC4nB,GACAA,EAAeI,YAEvB,CACJ,GAAG,IACH9jC,EAAAA,WAAgB,WACRutP,GAASzsP,SAAWskK,IACpBmoF,GAASzsP,QAAQssS,YAAY7/C,GAASzsP,QAAQusS,OAEtD,GAAG,CAACn7R,EAAOkzJ,KACX,IAAIkmI,GAActrS,EAAAA,aAAkB,SAAUW,EAAO2sS,EAAc7mC,GAC/D,GAAI97P,EAAMsH,SAAU,CAChB,IAAIs5R,EAAcjqR,GAAS,CAAEpC,MAAOouR,EAAc7mC,UAAWA,GAAa9lQ,GAC1EgK,EAAMsH,SAASihB,UAAKvzB,EAAW4rS,EACnC,CACJ,GAAG,CAAC5gS,EAAMsH,WACNA,GAAWjS,EAAAA,aAAkB,SAAUW,GACvC,KAAIwvR,EAAAA,EAAAA,IAAQxvR,EAAMsP,KAAMiC,EAAOtD,IAAiBw9R,GAAUtrS,QAA1D,CAGA,IAAImP,EAAOtP,EAAMsP,KAAM2uB,EAAcj+B,EAAMi+B,YACvCqyL,EAAK,CACLpyL,eAFqEl+B,EAAMk+B,eAG3ED,YAAaA,EACb/X,OAAQulR,GAAUtrS,SAEtBwqS,GAAYr6E,EAAI,CAAChhN,GAAO,SAPxB,CAQJ,GAAG,CAACiC,EAAOtD,EAAa08R,KACpBR,GAAY9qS,EAAAA,aAAkB,SAAUW,GACxC,IAAKykK,GAAQ,CACT,GAAIn/H,EAAQ,CACR,IAAI8kQ,EAAYzpR,GAAS,CAAC,EAAG3gB,GAC7BslC,EAAO/S,UAAKvzB,EAAWorS,EAC3B,MACeprS,IAAX2T,IACAo5R,IAAa,GACbM,GAAoB96R,GAAS,IACzB+mR,IACAx8P,YAAW,WACP,IAAIv4B,EACJkoP,GAAiD,QAAnCloP,EAAKkmS,GAAiBtpS,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,QACzF,GAAG,KAGf,CACJ,GAAG,CAACswI,GAAQ9xJ,EAAQ2yB,EAAQgzP,GAAYmR,KACpClK,GAAalgS,EAAAA,aAAkB,SAAUW,GACzC,GAAIykK,GAAQ,CACR,GAAI7uJ,EAAS,CACT,IAAIy0R,EAAa1pR,GAAS,CAAC,EAAG3gB,GAC9B4V,EAAQ2c,UAAKvzB,EAAWqrS,EAC5B,MACerrS,IAAX2T,GACAo5R,IAAa,EAErB,CACJ,GAAG,CAACtnI,GAAQ9xJ,EAAQiD,IAChBg0O,GAAcvqP,EAAAA,aAAkB,SAAUwqP,GAC1C+/C,GAAazpS,SAAU,EACvB0pP,IACAhlP,OAAOi3B,YAAW,WAAc,OAAO8tQ,GAAazpS,SAAU,CAAO,GAAG,EAC5E,GAAG,IACCsrP,GAAepsP,EAAAA,aAAkB,SAAU80B,GACvCA,GACAy1N,IAAY,WAAc,OAAOz1N,EAAQJ,OAAS,GAE1D,GAAG,CAAC61N,KACA+qC,GAAgBt1R,EAAAA,aAAkB,WAClC,IAAIkE,GACC0oS,IAAgBxnI,GACjB86H,GAAW,CAAEr5Q,OAAQulR,GAAUtrS,UAG3B6J,EAAM8D,WACN29O,GAAyC,QAA3BloP,EAAKimS,GAASrpS,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,SAG7Es3N,GAAak+C,GAAYxpS,SAAWwpS,GAAYxpS,QAAQg0B,QAGpE,GAAG,CAAC83Q,GAAcxnI,GAAQgnF,GAAc8zC,GAAYv1R,EAAM8D,aACtDsrR,GAAgB/5R,EAAAA,aAAkB,WAC9B4sS,IAEAxgD,GAAa9K,GAAWxgP,QAEhC,GAAG,CAAC8rS,GAAcxgD,KACd/1N,GAAUr2B,EAAAA,aAAkB,SAAUW,GACtC,IAAKisS,KAAiBrC,GAAazpS,UAC/B+rS,IAAgB,GACZliS,EAAM0rB,SAAW+1Q,GAAUtrS,SAAS,CACpC,IAAIsqS,EAAa,CACbvsQ,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB/X,OAAQulR,GAAUtrS,SAEtB6J,EAAM0rB,QAAQnD,UAAKvzB,EAAWyrS,EAClC,CAER,GAAG,CAACwB,GAAcjiS,EAAM0rB,UACpBE,GAASv2B,EAAAA,aAAkB,SAAUW,GACrC,GAAIisS,KAAiBrC,GAAazpS,SAAWsrS,GAAUtrS,QAAS,CAC5D+rS,IAAgB,GAChB,IAAI57E,EAAK,CACLpyL,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB/X,OAAQulR,GAAUtrS,SAEtB,GAAI6J,EAAM4rB,OAAQ,CACd,IAAI60Q,EAAa9pR,GAAS,CAAC,EAAG2vM,GAC9BtmN,EAAM4rB,OAAOrD,UAAKvzB,EAAWyrS,EACjC,CACKnS,IACDiH,GAAWjvE,EAEnB,CACJ,GAAG,CAAC27E,GAAcjiS,EAAM4rB,OAAQ6uI,GAAQ9xJ,EAAQiD,IAC5C80R,GAAqBrrS,EAAAA,aAAkB,WACnC4sS,IAEAriD,GAAYxzN,EAAAA,EAEpB,GAAG,CAAC61Q,GAAcriD,KACd0gD,GAAiBjrS,EAAAA,aAAkB,SAAUW,GAC7C,IAAKA,EAAMitQ,sBAAwBw+B,GAAUtrS,QAAS,CAClD+rS,IAAgB,GAChB,IAAI57E,EAAK,CACLpyL,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB/X,OAAQulR,GAAUtrS,SAEjBskK,IACD0lI,GAAU75E,EAElB,CACJ,GAAG,CAAC7rD,GAAQ0lI,KACRI,GAAmBlrS,EAAAA,aAAkB,SAAUW,GAC/C,IAAIuD,EAAII,EACJwyB,EAAUn2B,EAAMm2B,QAASuI,EAAS1+B,EAAM0+B,OACxCkuQ,EAAkBjD,GAAYxpS,SAAWwpS,GAAYxpS,QAAQg0B,QACjE,GAAKs3Q,GAAUtrS,WAAYH,EAAMitQ,uBAAqD,QAA3B1pQ,EAAKimS,GAASrpS,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,WAAan0B,EAAMkmB,QAA7I,CAGA,IAAIoqM,EAAK,CACLpyL,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB/X,OAAQulR,GAAUtrS,SAEtB,GAAIoR,GAASA,EAAM5D,OAAS,IACvBwoB,IAAYtD,EAAAA,EAAKrX,MAAQ2a,IAAYtD,EAAAA,EAAKltB,OACvCwwB,IAAYtD,EAAAA,EAAKE,MAAQoD,IAAYtD,EAAAA,EAAKC,KAC1CqD,IAAYtD,EAAAA,EAAK0tB,QAAS,CAC9B,IAAIk/O,EAAeiM,GAAgBvrS,QAC/B+oP,EAAeyiD,GACflM,EAAarzM,WAAU,SAAU1jF,GAAK,OAAOw3R,EAAAA,EAAAA,IAAUx3R,EAAGijS,GAAiB19R,EAAc,KAAM,EAC/FuyR,OAAgBxhS,EAChByhS,GAA+B,IAAlBv3C,EACb/yN,IAAYtD,EAAAA,EAAKrX,KAOjBglR,EAAgBf,EALZv2C,EADAu3C,EACe7/Q,KAAKI,IAAI,EAAGkoO,EAAe,GAG3Bu2C,EAAa9xR,OAAS,GAIpCwoB,IAAYtD,EAAAA,EAAKltB,MAClBujP,IAAiBu2C,EAAa9xR,OAAS,EACvC6yR,OAAgBxhS,EAEXyhS,IAELD,EAAgBf,EADhBv2C,EAAetoO,KAAKC,IAAI4+Q,EAAa9xR,OAAS,EAAGu7O,EAAe,KAI/D/yN,IAAYtD,EAAAA,EAAKE,KACtBytQ,EAAgBf,EAAa,GAExBtpQ,IAAYtD,EAAAA,EAAKC,IACtB0tQ,EAAgBf,EAAaA,EAAa9xR,OAAS,GAE9CwoB,IAAYtD,EAAAA,EAAK0tB,QAClBkgP,GACAkK,GAAYr6E,EAAImvE,EAAav2C,GAAc7kP,KAAM,UAGrDm8R,IAAkBmL,IAClBC,GAAmBpL,EAE3B,CACA,GAAI/7H,GACA,GAAItuI,IAAYtD,EAAAA,EAAKiP,KAAQpD,GAAUvI,IAAYtD,EAAAA,EAAKG,GACpDhzB,EAAM+gB,iBACNw+Q,GAAWjvE,QAEV,GAAIs8E,GAAmBA,EAAgBl7Q,cAAc,cACrDyE,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKI,MACrCkD,IAAYtD,EAAAA,EAAKrX,MAAQ2a,IAAYtD,EAAAA,EAAKltB,OAC1CwwB,IAAYtD,EAAAA,EAAKE,MAAQoD,IAAYtD,EAAAA,EAAKC,KAAM,CACpD,GAAIqD,IAAYtD,EAAAA,EAAKG,KAAmC,QAA3BrvB,EAAK6lS,GAASrpS,eAA4B,IAAPwD,OAAgB,EAASA,EAAGwwB,SAAU,CAClG,IAAI5V,EAAQuF,MAAMklC,KAAK4jP,EAAgBniM,iBAAiB,qBACpD8kL,EAAchhN,GAAc,GAAIhwD,GAAO,GAAM0O,UAAUjT,MAAK,SAAUhO,GAAK,OAAO0qB,QAAQ1qB,GAAKA,EAAE0lB,cAAc,YAAc,IACjI,GAAI69P,GAA8C,IAA/BhxQ,EAAMwoB,QAAQwoP,GAC7B,OAAO3lC,IAAY,WAAc,IAAIrmP,EAAIkoP,GAAyC,QAA3BloP,EAAKimS,GAASrpS,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,QAAU,GAExI,CACAy1N,GAAYxzN,EAAAA,EAChB,MACSD,IAAYtD,EAAAA,EAAKI,MACtB22N,IAAY,WAAc,IAAIrmP,EAAIkoP,IAA0C,QAA3BloP,EAAKimS,GAASrpS,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,UAAYy4Q,EAAkB,SAI9IluQ,GAAUvI,IAAYtD,EAAAA,EAAKI,OAC3BjzB,EAAM+gB,iBACNopR,GAAU75E,GAzElB,CA4EJ,GAAG,CAAC7rD,GAAQ86H,GAAY9zC,GAAc7B,GAAaugD,GAAWwB,GAAiB19R,EAAasD,EAAOo5R,KAC/Fja,GAAiBrxR,EAAAA,aAAkB,SAAUW,GAC7C,IAAIm2B,EAAUn2B,EAAMm2B,QAAkBn2B,EAAM0+B,QAC7BvI,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKI,OAGvDjzB,EAAM+gB,iBACN6oO,GAAYzzN,IAAYtD,EAAAA,EAAKG,GACzB,WAAcy4N,GAAa9K,GAAWxgP,QAAU,EAChD,WAAcsrP,GAAak+C,GAAYxpS,SAAWwpS,GAAYxpS,QAAQg0B,QAAU,GACxF,GAAG,CAACs3N,GAAc7B,KACd/tM,GAAUx8C,EAAAA,aAAkB,SAAUW,GACtC,GAAKyrS,GAAUtrS,QAAf,CAGA,IAAImwN,EAAK,CACLpyL,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB/X,OAAQulR,GAAUtrS,SAEtBwqS,GAAYr6E,EAAI,GAAI,SACpBivE,GAAWjvE,GACXtwN,EAAM+gB,gBARN,CASJ,GAAG,CAAC4pR,GAAapL,KACblB,GAAch/R,EAAAA,aAAkB,SAAUi/R,EAAet+R,GACzD,IAAIuD,EACJg8R,GAAW,CAAEr5Q,OAAQulR,GAAUtrS,UAC1B8rS,IACDxgD,GAAyC,QAA3BloP,EAAKimS,GAASrpS,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,SAEjFw2Q,GAAY,CACRzsQ,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB/X,OAAQulR,GAAUtrS,SACnBm+R,EAAe,SACtB,GAAG,CAACqM,GAAapL,GAAY9zC,GAAcwgD,KACvCpB,GAAWxrS,EAAAA,aAAkB,SAAUW,GACvC,GAAIgK,EAAMmkE,gBAAkBs9N,GAAUtrS,QAAS,CAC3C,IAAImP,EAAOtP,EAAMsP,KAAM+3R,EAAwBrnS,EAAMqnS,sBAAuBppQ,EAAcj+B,EAAMi+B,YAAaC,EAAiBl+B,EAAMk+B,eAChI4sQ,EAAc,CACd5lK,OAjaQkkK,EAiaO/B,EAhapB+B,EAAkBt0R,MAAM,KAAK/I,KAAI,SAAUC,GAAK,OAAOytF,SAASztF,EAAG,GAAK,KAianEsD,KAAMA,EACN2uB,YAAaA,EACbC,eAAgBA,EAChBhY,OAAQulR,GAAUtrS,SAEtB6J,EAAMmkE,eAAe57C,UAAKvzB,EAAW8rS,EACzC,CAxaM,IAAU1B,CAyapB,GAAG,CAACp/R,EAAMmkE,iBACNppD,GAAiB1lB,EAAAA,aAAkB,SAAUW,GAC7C,GAAIgK,EAAM+a,gBAAkB0mR,GAAUtrS,QAAS,CAC3C,IACImwN,EAAK,CACL1hN,OAFa,CAAEnG,MAAOuB,EAAM2H,UAAWyY,SAAU,WAAY7Y,MAAOvR,EAAMkmB,OAAO3U,OAGjF2sB,eAAgBl+B,EAAMk+B,eACtBD,YAAaj+B,EAAMi+B,YACnB/X,OAAQulR,GAAUtrS,SAEtB6J,EAAM+a,eAAewN,UAAKvzB,EAAWsxN,QAChBtxN,IAAjBgL,EAAM4E,QACN49R,GAAexsS,EAAMkmB,OAAO3U,MAEpC,CACJ,GAAG,CAACvH,EAAM+a,eAAgB/a,EAAM4E,OAAQ5E,EAAM2H,YAC1CyvB,GAAW/hC,EAAAA,aAAkB,SAAUW,GACvC,GAAKyrS,GAAUtrS,QAAf,CAGA,IAAImwN,EAAK,CACLpyL,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB/X,OAAQulR,GAAUtrS,SAElB6J,EAAMo3B,UACNp3B,EAAMo3B,SAAS7O,UAAKvzB,EAAWsxN,GAGnCivE,GAAWjvE,GACXtwN,EAAM+gB,gBAXN,CAYJ,GAAG,CAAC/W,EAAMo3B,SAAUm+P,KAqBhBt8P,GAAiB5jC,EAAAA,aAAkB,SAAUkmC,GAC7C,IAAK,IAAIC,EAAK,EAAGC,EAAYF,EAASC,EAAKC,EAAU93B,OAAQ63B,IAAM,CAC/D,IAAIE,EAAQD,EAAUD,GACtB0kQ,GAAexkQ,EAAMxf,OAAOyf,YAChC,CAEJ,GAAG,IACCqlQ,GAAShhS,EAAMihS,YAAchC,GAC7Bv9P,IAAei/O,EAAAA,EAAAA,KACf1qR,IAAW6iC,IAAkBa,GAASjB,MACtCr9B,GAAO2E,EAAM3E,KAAM+9B,GAAUp5B,EAAMo5B,QAASnzB,GAAWjG,EAAMiG,SAC7D4vR,GAAsBvH,IAAc7zH,GAAS2nI,GAAmBV,GAAgBvrS,QAChF0sS,GAAmBxtS,EAAAA,cAAoBA,EAAAA,SAAgB,KACvDA,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,4BAA6BlxB,EAAMrK,WAAY4D,EAAK,CAAC,EACjGA,EAAG,WAAWyM,OAAOm0B,GAAQ9+B,KAASA,KAASA,GAC/C9B,EAAG,aAAayM,OAAOo0B,GAAWhB,KAAYA,KAAYA,GAC1D7/B,EAAG,WAAWyM,OAAOC,KAAaA,GAClC1M,EAAG,WAAa0oS,KAAiBjmS,EACjCzC,EAAG,cAAgBtD,GACnBsD,EAAG,cAAgByC,EACnBzC,EAAG,aAAeyG,EAAM0gB,QACxBnnB,EAAG,cAAgBk/B,EACnBl/B,IAAM8zB,SAAUA,GAAUkzN,UAAWvgP,EAAMugP,UAAWrrP,GAAIA,EAAIM,MAAOmC,EAAQgf,GAASA,GAAS,CAAC,EAAGnhB,GAAQ,CAAE2G,WAAOnH,IAAeQ,EAAOioB,IAAKA,GAAK5nB,IAAK8gP,GAAYppN,UAAWvxB,OAAWhH,EAAYurS,GAAkB5uQ,YAAa+uQ,GAAoBh1Q,QAASA,GAASE,OAAQA,GAAQ/xB,KAAM,WAAY,gBAAiB,OAAQ,gBAAiB4gK,GAAQ,gBAAiBz+J,EAAU,aAAcrE,EAAO,kBAAmBqI,EAAMs5B,eAAgB,mBAAoBt5B,EAAMu5B,gBAAkBv5B,EAAMu5B,gBAAkB,YAAcrkC,EAAI,gBAAiB8K,EAAMy4B,SAAUthC,QAAS6E,OAAWhH,EAAYsrS,IACplBjrS,EAAAA,cAAoB,MAAO,CAAEH,GAAI,YAAcA,EAAIS,WAAWu7B,EAAAA,EAAAA,GAAW,mDAAoDv3B,EAAK,CAAC,EAC3HA,EAAG,eAAeqM,OAAOm0B,GAAQ9+B,KAASA,KAASA,GACnD1B,KAAQk8R,GAAoBlyR,OAAS,EAAKtO,EAAAA,cAAoB2gS,EAAAA,EAAS,CAAE7vR,IAAKnG,EAAMmG,IAAKkuR,YAAaA,GAAah6R,KAAMw7R,GAAqB5/P,KAAM/gC,EAAIyiC,QAASgqQ,GAAkBD,GAAgBvrS,QAAQ6Z,MAAK,SAAUtR,GAAK,OAAOw3R,EAAAA,EAAAA,IAAUx3R,EAAGijS,GAAiB19R,EAAc,SAAKjP,EAAWqG,KAAMA,KAAWgE,GAC3ThK,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,iBACrCN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,sBAAwB,SACrEqK,EAAM0gB,SAAWrrB,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,uBAAwBiC,KAAM,YAC1Fo6Q,KAAah2Q,GAAY65R,GAAoBlyR,OAAS,GAClDtO,EAAAA,cAAoB4yR,GAAAA,EAAa,CAAE9wR,QAAS06C,KAChDx8C,EAAAA,cAAoB,SAAU,CAAEuC,KAAMA,EAAM/B,IAAK6pS,GAAWryQ,UAAW,EAAG,eAAe,EAAMvrB,MAAOnK,EAAOnC,MAAO,CAAE0hB,QAAS,EAAG/a,MAAO,EAAGoJ,OAAQ,EAAG3J,QAAS,EAAGH,SAAU,WAAY+V,KAAM,QAC3Lnc,EAAAA,cAAoB,SAAU,CAAEkS,MAAOvH,EAAMkvR,SAAWlvR,EAAMkvR,SAAS3mQ,UAAKvzB,EAAWuS,GAASA,MACnG+mR,IAAcj5R,EAAAA,cAAoBqkC,EAAAA,EAAO,CAAEmB,YAAY3J,EAAAA,EAAAA,GAAW2K,EAAchB,WAAY,2BAA4BllC,WAAWu7B,EAAAA,EAAAA,GAAW2K,EAAclmC,UAAW,CAAE,QAAiB,QAAR8nB,KAAkBjoB,MAAOyqS,GAAalzQ,QAAS8O,EAAc9O,QAAS6N,OAAQ+7M,GAAWxgP,QAAS61B,KAAMyuI,GAAQn/H,OAAQqvP,GAAe/+Q,QAASwjR,GAAetzP,SAAUD,EAAcC,SAAUjmC,IAAK+sP,IACrX5iP,EAAM8D,YAAezO,EAAAA,cAAoBm2R,EAAAA,EAAY,CAAEjkR,WAAwBvS,IAAjBgL,EAAM4E,OAAuB29R,GAAcviS,EAAM4E,OAAQ/O,IAAK2pS,GAAUl4R,SAAUyT,GAAgBwS,UAAWm5P,GAAgBr5P,SAAUA,GAAUhyB,KAAMA,GAAM+9B,QAASA,GAASnzB,SAAUA,KACvP5L,EAAKsJ,OAAS,EAAKtO,EAAAA,cAAoBooS,EAAU,CAAE5nS,IAAK8pS,GAAatyQ,SAAUA,GAAUhzB,KAAMA,EAAM29P,aAAc/zP,EAAa0D,UAAW3H,EAAM2H,UAAWmwP,WAAYA,EAAYC,wBAAyBA,EAAyB7zL,YAAalkE,EAAMkkE,YAAak1C,cAAe8iJ,EAAe6gC,aAAa,EAAMvoR,YAAalN,GAAUq0R,cAAer0R,GAAU68D,eAAgB08N,GAAUhE,YAAY,EAAMxhS,KAAMA,GAAMiK,KAAMtF,EAAMsF,KAAMmY,IAAKA,KAAWpoB,EAAAA,cAAoB2rS,GAAQ,KAAMt/P,GAAapQ,iBAAiBooQ,EAAAA,GAAQloQ,EAAAA,GAASkoQ,EAAAA,QAC1hBpL,IAxD8B,WAC9B,IAAIvd,EAAe/wQ,EAAM8D,WAAczO,EAAAA,cAAoBm2R,EAAAA,EAAY,CAAEjkR,WAAwBvS,IAAjBgL,EAAM4E,OAAuB29R,GAAcviS,EAAM4E,OAAQ/O,IAAK4pS,GAAkBn4R,SAAUyT,GAAgBwS,UAAWm5P,GAAgBrrR,KAAMA,GAAM+9B,QAASA,GAASnzB,SAAUA,KAAe,KACxQ+wB,EAAmB,CACnBE,cAAel3B,EAAMk3B,cACrBD,OAAQwjI,GACR7uJ,QAAS,SAAU5V,GAAS,OAAOgK,EAAMo3B,SAAWA,GAASphC,GAAS67C,GAAQ77C,EAAQ,EACtF2gC,YAAaA,GACbo6O,aAAcA,EACd55O,OAAQ,CACJP,WAAY8K,GAAapQ,iBAAiB+jQ,EAAAA,GAA0B7jQ,EAAAA,GAAS6jQ,EAAAA,KAC7Ej+P,SAAU,SAAUphC,GAAS,OAAOgK,EAAMo3B,SAAWA,GAASphC,GAAS67C,GAAQ77C,EAAQ,EACvF8gC,UAAW4K,GAAapQ,iBAAiBgkQ,EAAAA,GAAyB9jQ,EAAAA,GAAS8jQ,EAAAA,KAC3Ej+P,QAAS,SAAUrhC,GAAS,OAAOu/R,GAAWv/R,EAAQ,IAG9D,OAAQX,EAAAA,cAAoBiiC,GAAAA,EAAc3gB,GAAS,CAAC,EAAGqgB,GACnD3hC,EAAAA,cAAoBkiC,GAAAA,EAAoB,CAAE5hC,UAAW,sBACjDN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBAAsB0E,EAAKsJ,OAAS,EAAKtO,EAAAA,cAAoBooS,EAAU,CAAE5nS,IAAK8pS,GAAatyQ,SAAUA,GAAUhzB,KAAMA,EAAM29P,aAAc/zP,EAAa0D,UAAW3H,EAAM2H,UAAWmwP,WAAYA,EAAYC,wBAAyBA,EAAyB7zL,YAAalkE,EAAMkkE,YAAak1C,cAAe8iJ,EAAe6gC,aAAa,EAAMvoR,YAAalN,GAAUq0R,cAAer0R,GAAU68D,eAAgB08N,GAAUhE,YAAY,EAAMxhS,KAAMA,GAAMiK,KAAMtF,EAAMsF,KAAMmY,IAAKA,KAAWpoB,EAAAA,cAAoB2rS,GAAQ,KAAMt/P,GAAapQ,iBAAiBooQ,EAAAA,GAAQloQ,EAAAA,GAASkoQ,EAAAA,SAChmB,CAqCkBnM,IAClB,OAAO51R,EAAStC,EAAAA,cAAoBkqE,GAAAA,EAAe,CAAE5nE,MAAOA,EAAO6nE,YAAawyM,GAAUqvB,kBAAmBhiS,EAAa+7B,YAAanlC,GAASolC,eAAgBr/B,EAAUm/B,SAAUjmC,EAAIM,MAAO,CAAE2G,MAAO3G,EAAQA,EAAM2G,WAAQnH,GAAaO,SAAUstS,GAAiBplR,IAAKA,KAAUolR,EACzR,IACI/0Q,GAAY,CACZnlB,OAAQolB,EAAAA,KACR/xB,SAAU+xB,EAAAA,KACVtQ,IAAKsQ,EAAAA,OACLV,SAAUU,EAAAA,OACVwyN,UAAWxyN,EAAAA,OACX1zB,KAAM0zB,EAAAA,MACNxmB,MAAOwmB,EAAAA,IACPmhQ,SAAUnhQ,EAAAA,KACV1uB,YAAa0uB,EAAAA,OACb9pB,YAAa8pB,EAAAA,OAAiBoY,WAC9Bx+B,UAAWomB,EAAAA,OAAiBoY,WAC5B2xN,WAAY/pO,EAAAA,OACZgqO,wBAAyBhqO,EAAAA,OACzBm2C,YAAan2C,EAAAA,OACbmuO,cAAenuO,EAAAA,OACfp4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPp2B,MAAOo2B,EAAAA,OACPyK,kBAAmBzK,EAAAA,OACnB+K,eAAgB/K,EAAAA,KAChB2K,MAAO3K,EAAAA,KACP0K,SAAU1K,EAAAA,KACVn2B,KAAMm2B,EAAAA,OACN74B,GAAI64B,EAAAA,OACJuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjBjqB,WAAYiqB,EAAAA,KACZnpB,OAAQmpB,EAAAA,OACRrN,QAASqN,EAAAA,KACTkpI,KAAMlpI,EAAAA,QAAkBA,EAAAA,MAAgB,CACpCluB,KAAMkuB,EAAAA,OACN1zB,KAAM0zB,EAAAA,QAAkBA,EAAAA,QAE5B8N,cAAe9N,EAAAA,MAAgB,CAC3BhB,QAASgB,EAAAA,UAAoB,CAACA,EAAAA,KAAgBA,EAAAA,MAAgB,CACtDkrQ,aAAclrQ,EAAAA,OACdmrQ,cAAenrQ,EAAAA,WAEvB8M,WAAY9M,EAAAA,OACZp4B,UAAWo4B,EAAAA,OACX+N,SAAU/N,EAAAA,IACV5xB,MAAO4xB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC9C5wB,OAAQ4wB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,WAEnDuN,OAAQvN,EAAAA,KACRniB,QAASmiB,EAAAA,KACTrC,QAASqC,EAAAA,KACTnC,OAAQmC,EAAAA,KACRzmB,SAAUymB,EAAAA,KACVhT,eAAgBgT,EAAAA,KAChBo2C,eAAgBp2C,EAAAA,KAChBqJ,SAAUrJ,EAAAA,KACVzoB,KAAMyoB,EAAAA,KACNkzQ,WAAYlzQ,EAAAA,KACZmJ,cAAenJ,EAAAA,OACfsK,SAAUtK,EAAAA,MAEdwzQ,GAAgB3lQ,YAAc,4BAC9B2lQ,GAAgBp2Q,aAAeA,GAC/Bo2Q,GAAgBzzQ,UAAYA,kBC1mBxBy2C,GAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAGW8jP,GAAc,SAAUv7R,EAAO0W,GACtC,IAAIlc,EAAM,CAAC,EAMX,OALIwF,GAASA,EAAM5D,QACf4D,EAAMkJ,SAAQ,SAAUnL,GACpBvD,EAAIkc,EAAS3Y,KAAS,CAC1B,IAEGvD,CACX,EAQWghS,GAA0B,SAAU1oS,EAAMwlD,GACjD,IAAItrC,EAAQsrC,EAAQtrC,MAAOtQ,EAAc47C,EAAQ57C,YAAasD,EAAQs4C,EAAQt4C,MAAOhO,EAAKsmD,EAAQq8M,cAAeA,OAAuB,IAAP3iQ,EAAgB,QAAUA,EAAIuiQ,EAAYj8M,EAAQi8M,UAC/K79O,GAAWC,EAAAA,GAAAA,GAAOja,GAClBirR,EAAW4T,GAAYv7R,EAAO0W,GAClC,GAAkB,UAAd69O,EACA,MAAO,GAEN,GAAkB,WAAdA,EAAwB,CAC7B,IAAIknC,EAAoBF,GAAYvuR,EAAO0J,GAC3C,OAAO1W,EAAM3C,QAAO,SAAUU,GAAQ,OAAQ09R,EAAkB/kR,EAAS3Y,GAAQ,GACrF,CASA,IAPA,IAMI29R,EANA1W,EAAeh4Q,EAAM,GACrB2uR,EAAajlR,EAASsuQ,GACtB4W,GAAgBjlR,EAAAA,GAAAA,GAAOg+O,GACvBj+M,EAAQsmB,GAAc,GAAIlqE,GAAM,GAChCg/C,EAAU,GACV+pP,EAAU,GAEPnlP,EAAMt6C,QAAQ,CACjB,IAAIw3P,EAAcl9M,EAAM6C,MACxB,GAAIoiP,IAAejlR,EAASk9O,GAAc,CACtCioC,EAAU/pP,EAAQt3C,KAAI,SAAUshS,GAAe,OAAOA,EAAY/9R,IAAM,IACxE29R,EAAY9nC,EACZ,KACJ,CAEQ9hN,GACAA,EAAQ11C,QACR01C,EAAQA,EAAQ11C,OAAS,GAAG2/R,iBAAmBrlP,EAAMt6C,QACrD01C,EAAQyH,OAERo4M,EAAWiqC,EAAchoC,KACbjC,EAASv1P,SACrB01C,EAAQv2B,KAAK,CAAExd,KAAM61P,EAAamoC,eAAgBrlP,EAAMt6C,SACxDs6C,EAAMn7B,KAAKb,MAAMg8B,EAAOi7M,GAGpC,CAGA,IAFA,IAAIqqC,EAAgBh/N,GAAc,GAAK4+N,EAAcF,IAAc,IAAK,GACpE1tS,EAAW,GACRguS,EAAc5/R,QAAQ,CACrBw3P,EAAcooC,EAAcziP,MAChCvrD,EAASutB,KAAKq4O,IACVjC,EAAWiqC,EAAchoC,KACbjC,EAASv1P,QACrB4/R,EAAczgR,KAAKb,MAAMshR,EAAerqC,EAEhD,CACA,IACI9oF,EAAW,GACf,IAFiB8+G,EAASgU,GAEX,CACX9yH,EAASttJ,KAAKb,MAAMmuJ,EAAU7oK,GAC9B6oK,EAASttJ,KAAKmgR,GACd7yH,EAASttJ,KAAKb,MAAMmuJ,EAAU76K,EAASqP,QAAO,SAAUU,GAAQ,OAAQ4pR,EAASjxQ,EAAS3Y,GAAQ,KAGlG,IAFA,IAAIk+R,EAAmBJ,EAAQx+R,QAAO,SAAUU,GAAQ,OAAQ4pR,EAASjxQ,EAAS3Y,GAAQ,IACtFm+R,EAAgBX,GAAY1yH,EAAUnyJ,GACjCjc,EAAIwhS,EAAiB7/R,OAAS,EAAG3B,GAAK,EAAGA,IAAK,CACnD,IACIk3P,EADAh3O,EAAYshR,EAAiBxhS,GAGjC,IAFIk3P,EAAWiqC,EAAcjhR,IACQtd,QAAO,SAAUU,GAAQ,OAAOm+R,EAAcxlR,EAAS3Y,GAAQ,IAAG3B,OAC3Eu1P,EAASv1P,OACjC,MAGAysK,EAASttJ,KAAKZ,GACduhR,EAAcxlR,EAASiE,KAAc,CAE7C,CACJ,KACK,CACD,IAAIwhR,EAAYzlR,EAASglR,GACrBU,EAAgBb,GAAYvtS,EAAU0oB,GACtC2lR,EAAed,GAAYM,EAASnlR,GACxCmyJ,EAASttJ,KAAKb,MAAMmuJ,EAAW7oK,EAC1B3C,QAAO,SAAUU,GAClB,IAAIwzP,EAAS76O,EAAS3Y,GACtB,OAAQq+R,EAAc7qC,IAAW4qC,IAAc5qC,IAAW8qC,EAAa9qC,EAC3E,IACJ,CACA,OAAO1oF,CACX,+BC5GA,IAAI72K,mFAIG,IAAImgS,EAAS,mBAITr3O,EAAQ,kBAIR0qO,EAA+B,yCAI/BE,EAAiC,2CAIjCqE,EAAgC,0CAIhCgE,EAA0B,kBAI1BD,EAA2B,mBAI3B7jQ,IAAYj4B,EAAK,CAAC,GACtB8oD,GAAS,QACZ9oD,EAAGmgS,GAAU,iBACbngS,EAAGwzR,GAAgC,kBACnCxzR,EAAG0zR,GAAkC,oBACrC1zR,EAAG+3R,GAAiC,SACpC/3R,EAAG+7R,GAA2B,QAC9B/7R,EAAG87R,GAA4B,SAC/B97R,iDCrCG,IAAI0+B,EAAkB,CACzBrgC,KAAM,kCACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,0RCNXs9K,EAAe,oxGAIfwsD,EAAe,syBCLtB/xB,EAAW,SAAUtuO,EAAMj8B,GAC3B,IAAI4tK,EAAc5tK,EAAMi0F,IACnBh4D,EAAK3uC,MAAM2mG,GACP0wE,aAAa,IAAIhB,EAAAA,IAAa1nI,EAAK3uC,MAAMstG,MACzCirE,qBAAqB7lK,EAAM46F,KAAO2hM,EAAAA,EAAYC,eAAevgQ,EAAK3uC,MAAMw8D,OAAQ9pD,EAAMtH,MAAQ,KAC9FutK,QAAQ,cAAe,WAChChqI,EAAKukJ,YAAYvkJ,EAAK3uC,MAAMotB,MAAMkzJ,GACtC,ECNW6uH,EAA4B,qBAAXnpS,QACxB,UAAU00B,KAAK10B,OAAOu1C,UAAUC,WCDzBpY,EAAkB,CACzBrgC,KAAM,+BACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,gMCTlBhyC,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAgBIw5H,EAAOyrH,EAAAA,EAAoBzrH,KAAMt1E,EAAO+gM,EAAAA,EAAoB/gM,KAAMC,EAAS8gM,EAAAA,EAAoB9gM,OAAQmT,EAAY2tL,EAAAA,EAAoB3tL,UAuBvIr0G,EAAwB,SAAUqnB,GAElC,SAASrnB,EAAOjC,GACZ,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAyGxC,OArGA0C,EAAM3vB,MAAQ,CACV2uC,UAAMxuC,EACNkvS,YAAY,GAEhB1/Q,EAAM/iB,SAAW,KACjB+iB,EAAM2/Q,gBAAkB,KACxB3/Q,EAAM4/Q,OAAS,KACf5/Q,EAAM6/Q,WAAa,KACnB7/Q,EAAM8/Q,aAAe,KACrB9/Q,EAAMs6P,sBAAuB,EAI7Bt6P,EAAMuF,MAAQ,WACNvF,EAAMgf,MACNhf,EAAMgf,KAAKzZ,OAEnB,EACAvF,EAAM+/Q,aAAe,SAAUzqD,EAAWr3N,EAAU+hR,GAChD,OAAOhgR,EAAM3vB,MAAM2vS,IAAenvS,EAAAA,cAAoBykP,EAAW,CAAEt2M,KAAMhf,EAAMgf,KAAM/gB,SAAUA,EAAUhF,IAAK+G,EAAMxkB,MAAMyd,IAAK7R,QAAS,WAChI,IAAIrS,EACJ,OAAOirB,EAAM6L,WAAU92B,EAAK,CAAC,GAAMirS,IAAa,EAAOjrS,GAC3D,GACR,EACAirB,EAAMigR,WAAa,SAAUC,EAAMhuR,GAC/B,IAAIiuR,EAAQtvS,EAAAA,cAAoBqvS,EAAM,CAAElhQ,KAAMhf,EAAMgf,KAAM/lB,IAAK+G,EAAMxkB,MAAMyd,IAAK2P,IAAK1W,IACrF,OAAOiuR,EAAKrpS,OAASupP,EAAAA,EAAmBxvP,EAAAA,cAAoBqvS,EAAM,CAAEt3Q,IAAK1W,IAAWiuR,CACxF,EACAngR,EAAMogR,YAAc,SAAUphQ,EAAMqhQ,GAChCrgR,EAAM6L,SAAS,CAAEmT,KAAMA,GAC3B,EACAhf,EAAM+pJ,kBAAoB,SAAU4G,EAAatgL,GAC7C,IAAImB,EAAQ,CAAEkmB,OAAQsI,EAAO2wJ,YAAaA,EAAatgL,MAAOA,GAC9D,OACsD,KAD9C2vB,EAAMxkB,MAAM8kS,WAChBtgR,EAAMxkB,MAAM8kS,UAAUv8Q,UAAKvzB,EAAWgB,GAC9C,EACAwuB,EAAMugR,YAAc,SAAU9kS,GAC1B,GAAIukB,EAAMxkB,MAAM+kS,aAAevgR,EAAMwgR,WAAY,CAC7C,IAAIt6B,EAAU,CACVxuP,OAAQsI,EACRygR,WAAYhlS,EACZg0B,YAAazP,EAAMwgR,YAEnBE,EAAU1gR,EAAMxkB,MAAM+kS,YAAYx8Q,UAAKvzB,EAAW01Q,GAEtD,GADAlmP,EAAMwgR,gBAAahwS,EACI,kBAAZkwS,EACP,OAAOA,CAEf,CACA,OAAOjlS,CACX,EACAukB,EAAMmkL,oBAAsB,SAAUxzB,GAClC,IAAI5N,EAAa4N,EAAY5N,WAC7B,GAAI/iJ,EAAMxkB,MAAMsH,UAAYigK,EAAY,CACpC/iJ,EAAM6/Q,WAAalvH,EACnB,IAAIgwH,EAAQhwH,EAAYhzE,IAAKijM,EAAWjwH,EAAYhzE,IAAI7mG,KAAK+1D,OACzDg0O,EAAW7gR,EACX8gR,EAAU,CACVppR,OAAQmpR,EACR99R,MAAO49R,EACP,QAAIllS,GAEA,OADAolS,EAASf,aAAeR,EAAAA,EAAY1wH,QAAQ,CAAEjxE,IAAKgjM,EAAO9zO,OAAQ+zO,IAC3DC,EAASf,YACpB,EACAnvH,YAAaA,EACb9jH,OAAQ+zO,GAEZ5gR,EAAMxkB,MAAMsH,SAASihB,UAAKvzB,EAAWswS,EACzC,EACI9gR,EAAMgf,WAA+BxuC,IAAtBwvB,EAAMxkB,MAAMuH,OAAwBggK,GACnD/iJ,EAAMgf,KAAKukJ,YAAYvjK,EAAMgf,KAAK3uC,MAAMotB,MAAMkzJ,GAEtD,EACA3wJ,EAAMkH,QAAU,SAAU08L,EAAOn0L,GAC7B,GAAIzP,EAAMxkB,MAAM0rB,QAAS,CACrB,IAAI65Q,EAAU,CACVrpR,OAAQsI,EACRyP,YAAaA,GAEjBzP,EAAMxkB,MAAM0rB,QAAQnD,UAAKvzB,EAAWuwS,EACxC,CACA,OAAO,CACX,EACA/gR,EAAMoH,OAAS,SAAUw8L,EAAOn0L,GAC5B,GAAIzP,EAAMxkB,MAAM4rB,OAAQ,CACpB,IAAI45Q,EAAU,CACVtpR,OAAQsI,EACRyP,YAAaA,GAEjBzP,EAAMxkB,MAAM4rB,OAAOrD,UAAKvzB,EAAWwwS,EACvC,CACA,OAAO,CACX,EACAhhR,EAAMgyP,QAAU,SAAUpuD,EAAOn0L,GAI7B,OAHIzP,EAAMxkB,MAAM+kS,cACZvgR,EAAMwgR,WAAa/wQ,IAEhB,CACX,GACA+D,EAAAA,EAAAA,GAAgBC,GAChBzT,EAAMs6P,sBAAuB/hB,EAAAA,EAAAA,GAAuB9kO,GAC7CzT,CACX,CA+PA,OA3WAuD,EAAU9lB,EAAQqnB,GA6GlB7kB,OAAO6nB,eAAerqB,EAAO+f,UAAW,QAAS,CAI7CuK,IAAK,WACD,OAAwB,OAApBzK,KAAKuiR,WACEviR,KAAKuiR,WAAWliM,SAEGntG,IAArB8sB,KAAK9hB,MAAMuH,MACTua,KAAK9hB,MAAMuH,MAEbua,KAAK0hB,KACH1hB,KAAK0hB,KAAK3uC,MAAMstG,IAEpBrgF,KAAK9hB,MAAMoC,gBAAkB,EACxC,EACAoqB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAerqB,EAAO+f,UAAW,UAAW,CAI/CuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAerqB,EAAO+f,UAAW,iBAAkB,CAItDuK,IAAK,WACD,OAAOzK,KAAKqiR,eAChB,EACA33Q,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAerqB,EAAO+f,UAAW,OAAQ,CAI5CuK,IAAK,WACD,OAAOzK,KAAKsmM,KAChB,EACA57L,YAAY,EACZC,cAAc,IAKlBxqB,EAAO+f,UAAU4K,kBAAoB,WAC5B9K,KAAKsiR,QAAWJ,GACjBliR,KAAK2jR,YAEb,EAIAxjS,EAAO+f,UAAU8K,mBAAqB,SAAUukB,GAC5C,IAAI9pC,EAAQua,KAAK9hB,MAAMuH,MACnBi8B,EAAO1hB,KAAK0hB,UACFxuC,IAAVuS,GAAwBi8B,KHzOL,SAAUA,EAAMj8B,EAAO+6L,EAAW+hG,EAAYC,GACpD,kBAAV/8R,EACH88R,GAAc98R,IAAU+8R,EACxBxyB,EAAStuO,EAAM,CAAEg4D,GAAI6oM,IAEhB98R,IAAU+6L,GACfwvE,EAAStuO,EAAM,CAAEvjC,KAAMsH,IAIvB88R,GAAc98R,EAAMizE,GAAG6pN,EAAWliM,KAClC2vK,EAAStuO,EAAM,CAAEg4D,GAAI6oM,IAEf7gQ,EAAK3uC,MAAMstG,IAAI3nB,GAAGjzE,IACxBuqQ,EAAStuO,EAAM,CAAE2+D,IAAK56F,GAGlC,CG2NQm+R,CAAkBliQ,EAAMj8B,EAAO8pC,EAAU9pC,MAAOua,KAAKuiR,WAAYviR,KAAKwiR,cACtExiR,KAAKuiR,WAAa,KAClBviR,KAAKwiR,aAAe,KACxB,EAIAriS,EAAO+f,UAAU6O,qBAAuB,WAChC/O,KAAK0hB,MACL1hB,KAAK0hB,KAAKmmJ,UAEd7nK,KAAKsmM,WAAQpzN,EACb,IAAI2wS,EAAe7jR,KAAKsiR,QAAUtiR,KAAKsiR,OAAOwB,cAC9C,GAAID,EAAc,CACV7jR,KAAKqiR,iBAAmBriR,KAAKqiR,gBAAgBxjM,YAC7C7+E,KAAKqiR,gBAAgBxjM,WAAW74E,YAAYhG,KAAKqiR,iBAGrD,IADA,IAAIt5O,EAAO86O,EAAar1R,SAASu6C,KAC1BA,GAAQA,EAAK22C,YAChB32C,EAAK/iC,YAAY+iC,EAAK22C,WAE9B,CACJ,EAIAv/F,EAAO+f,UAAUnrB,OAAS,WACtB,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOrG,EAAKJ,EAAG8I,MAAOA,OAAe,IAAP1I,EAAgB,GAAKA,EAAIK,EAAKT,EAAG0Y,gBAAiBA,OAAyB,IAAPjY,EAAgB,SAAWA,EAAIG,EAAKZ,EAAGsgK,mBAAoBA,OAA4B,IAAP1/J,EAAgB,OAASA,EAAI3E,EAAQ+D,EAAG/D,MAAOG,EAAY4D,EAAG5D,UAC1P+rC,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CA,KAAK0hB,OACaqiQ,EAAAA,EAAep1N,SAAS3uD,KAAK0hB,KAAK3uC,OACxCglK,mBAAqBA,GAErC,IAAI39J,EAAe4lB,KAAK9hB,MAAM9D,kBACTlH,IAAjBkH,QAAuDlH,KAAxBQ,GAAS,CAAC,GAAG2H,SAC5CjB,EAAe,CAAEiB,OAAQ,UAE7B,IAAIq+L,EAAUn5L,EAAMN,KAAI,SAAUuD,EAAMoR,GACpC,OAAOoD,MAAMC,QAAQzU,GACjBjQ,EAAAA,cAAoBkG,EAAAA,EAAa,CAAE6xB,IAAK1W,GAASpR,EAAKvD,IAAIyiB,EAAMigR,WAAY/tR,IAC5E8N,EAAMigR,WAAWn/R,EAAMoR,EAC/B,IACA,OAAQrhB,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAU2F,GAAK,OAAOgpB,EAAM/iB,SAAWjG,CAAG,EAAG7F,WAAWu7B,EAAAA,EAAAA,GAAW,WAAYv7B,EAAW,CAAE,qBAAsBmsB,KAAK9hB,MAAM+D,YAAc0Z,IAAKqE,KAAK9hB,MAAMyd,IAAKjoB,MAAOA,GAC7MgmM,EAAQ73L,OAAS,GAAMtO,EAAAA,cAAoB2B,EAAAA,EAAS,CAAErB,UAAW,mBAAoBgvP,mBAAoB7iO,KAAK9hB,MAAM2kP,oBAAsBnpD,GACtH,WAApBvpL,EACK5c,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBACrCN,EAAAA,cAAoB,SAAU,CAAEywS,OAAQ9B,EAAU,WAC1Cx/Q,EAAMihR,YACV,OAAIzwS,EAAWa,IAAK,SAAU2F,GAAK,OAAOgpB,EAAM4/Q,OAAS5oS,CAAG,EAAGuqS,YAAa,IAAKjkS,MAAO4/B,EAAapQ,iBAAiB5sB,EAAAA,EAAKshS,YAAax0Q,EAAAA,EAAS9sB,EAAAA,EAAKshS,cAAexwS,MAAO0G,EAAcvG,UAAW,cAC5MN,EAAAA,cAAoB,MAAO,CAAEG,MAAO0G,EAAcvG,UAAW,oBAC1DN,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAU2F,GAAK,OAAOgpB,EAAM2/Q,gBAAkB3oS,CAAG,EAAGyqS,gCAAgC,EAAMpsS,KAAM,UAAW,kBAAmBioB,KAAK9hB,MAAMs5B,eAAgB,mBAAoBxX,KAAK9hB,MAAMu5B,gBAAiB,aAAczX,KAAK9hB,MAAMi9O,aAC5Qn7N,KAAKyiR,aAAa2B,EAAAA,EAAcC,iBAAkB3tH,EAAM,cACxD12J,KAAKg9P,sBAAwBzpR,EAAAA,cAAoB4nQ,EAAAA,EAAkB,MAC3E,EACAh7P,EAAO+f,UAAUyjR,WAAa,WAC1B,IAAIjhR,EAAQ1C,KACR6jR,EAAe7jR,KAAKsiR,QAAUtiR,KAAKsiR,OAAOwB,cAC9C,GAAID,EAAc,CACd,IAAIS,EAAmBT,EAAar1R,SACpC,CAAC+mO,EAAcwsD,EAAiC,QAAnB/hR,KAAK9hB,MAAMyd,IJ1S7B,+BI0SyDzoB,GAAWyb,SAAQ,SAAU2vF,GAC7F,GAAIA,EAAQ,CACR,IAAI5qG,EAAQ4wS,EAAiBnrS,cAAc,SAC3CzF,EAAMoyB,YAAYw+Q,EAAiBzpI,eAAev8D,IAClDgmM,EAAiBv7O,KAAKjjC,YAAYpyB,EACtC,CACJ,IACA,IAAIm3K,EAAOy5H,EAAiBnrS,cAAc,QAC1C0xK,EAAK3iH,aAAa,UAAW,SAC7Bo8O,EAAiBv7O,KAAKjjC,YAAY+kJ,GAElC7qJ,KAAKqiR,gBAAkBiC,EAAiBnrS,cAAc,OACtDmrS,EAAiBj1R,KAAKyW,YAAY9F,KAAKqiR,iBACvCriR,KAAKqiR,gBAAgB9kQ,UAAUE,IAAI,YACvC,CACA,IAAI5U,EAAM7I,KAAKqiR,gBACf,GAAKx5Q,EAAL,CAGA,IAAIpxB,EAAKuoB,KAAK9hB,MAAM65J,mBAAoBA,OAA4B,IAAPtgK,EAAgB,OAASA,EAElF20K,EAAU,CAEV,IAAIkB,EAAAA,IAAO,CACP5rI,KAAM,WAAc,MAAQ,CAAEulH,OAAQvkI,EAAMogR,YAAgB,EAC5Dx3Q,IAAK,IAAIkiJ,EAAAA,IAAU,iCAEvB,IAAIF,EAAAA,IAAO,CACPb,kBAAmBzsJ,KAAKysJ,kBACxBnhJ,IAAK,IAAIkiJ,EAAAA,IAAU,4BAEvB,IAAIF,EAAAA,IAAO,CACPhiJ,IAAKy4Q,EAAAA,EACLhxS,MAAO,CACHw4E,KAAM,WAAc,MAAQ,CAAEwsF,mBAAoBA,EAAuB,EACzE53I,MAAO,SAAUS,EAAGs1B,GAAO,OAAOA,CAAK,MAG/CiqK,EAAAA,EAAAA,QACAuC,EAAAA,EAAAA,QACA0J,EAAAA,EAAAA,QACAjF,EAAAA,EAAAA,QACAyB,EAAAA,EAAAA,QACAlQ,EAAAA,EAAAA,QACA+H,EAAAA,EAAAA,QAEA8jF,EAAY1vR,EAASA,EAAS,CAAC,EAAGmtR,EAAAA,EAAYwC,aAAa,CAC3DvyI,MAAO,CAAEklB,SAAU,YAAastH,UAAW,cAC3CC,cAAe,CAAEtjM,KAAMA,EAAMC,OAAQA,EAAQmT,UAAWA,MACvD,CAAE,QAAS,WACR,IAAI4tL,EAAa1/Q,EAAM3vB,MAAMqvS,WACzBh7E,EAAa1kM,EAAMgf,KACvB,GAAI0lL,EAAY,CACZ,IAAIu9E,EAAcv9E,EAAWr0N,MACzB6xS,EAAYD,EAAY7/K,UAAU1qC,MAClCyqN,GAAWryH,EAAAA,EAAAA,KAAQmyH,EAAaA,EAAYp1O,OAAOo7F,MAAM+rB,EAAK3nB,OAE7DqzI,GADUwC,IAAcC,GAEzBniR,EAAM6L,SAAS,CAAE6zQ,YAAY,GAErC,CACA,OAAQA,CACZ,EAAG,UAAW,WACV,IAAI3qS,EACAqtS,EAAmC,QAAxBrtS,EAAKirB,EAAM2F,eAA4B,IAAP5wB,OAAgB,EAASA,EAAGmuB,cAAc,cACzF,GAAIk/Q,EAAS,CACT,IAAI1sG,EAAS0sG,EAAQl/Q,cAAcg9N,EAAAA,EAAehlM,KAAK,MACvD,GAAIw6I,EAEA,OADAA,EAAOnwK,SACA,CAEf,CACA,OAAO,CACX,IACApwB,EAAKmoB,KAAK9hB,MAAOhG,EAAKL,EAAGyI,eAAgBA,OAAwB,IAAPpI,EAAgB,GAAKA,EAAIuN,EAAQ5N,EAAG4N,MAAOupB,EAAUn3B,EAAGm3B,QAClHqxE,EAAO56F,GAA0B,kBAAVA,EAAsBA,EAC7Cu8R,EAAAA,EAAYC,eAAe,IAAIxtI,EAAAA,IAAO,CAAExK,MAAOA,EAAAA,IAAOU,MAAOA,EAAAA,MAAUllJ,GAASnF,EAAgB,CAAEy3J,mBAAoBA,IACtHgtI,EAAY,CACZhyS,MAAOw5K,EAAAA,IAAY1lJ,OAAO,CACtBulJ,QAAS3pG,EAAcA,EAAc,GAAI2pG,GAAS,GAAO,EAACu7B,EAAAA,EAAAA,KAAO48F,IAAY58F,EAAAA,EAAAA,KAAO1qB,EAAAA,OAAc,GAClG58E,IAAKA,IAET2kM,oBAAqBhlR,KAAKijR,YAC1Bp8F,oBAAqB7mL,KAAK6mL,oBAC1BxC,gBAAiB,CACbp8K,MAAOjI,KAAK4J,QACZoxK,KAAMh7K,KAAK8J,OACXoxK,MAAOl7K,KAAK00P,SAEhBjhB,WAAY,SAAUntC,EAAO7tB,EAAQ7pL,EAAOq2R,GACxC,IAAIC,GAAa,EAIjB,OAHAt2R,EAAMgrC,QAAQ6uG,aAAa,EAAG75I,EAAMgrC,QAAQrgD,MAAM,SAAUsmG,GACxDqlM,EAAaA,GAAiC,2BAAnBrlM,EAAKrmG,KAAK1D,IACzC,IACOovS,CACX,GAEAC,EAAa,CAAE/4H,QAASA,EAASm4H,UAAWA,EAAWnqR,OA7E9C4F,KA6E8D+kR,UAAWA,EAAWl8Q,IAAKA,GAClG6Y,EAAO1hB,KAAKsmM,MAASt3L,GAAWA,EAAQvI,UAAKvzB,EAAWiyS,IAAgB,IAAI7hG,EAAAA,IAAW,CAAEO,MAAOh7K,GAAOk8Q,GAC3G/kR,KAAKuO,SAAS,CACVmT,KAAMA,GAlFV,CAoFJ,EAIAvhC,EAAO6rB,UAAY,CACf1rB,eAAgB2rB,EAAAA,OAChBxmB,MAAOwmB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC9C9b,gBAAiB8b,EAAAA,MAAgB,CAAC,SAAU,QAC5C7xB,aAAc6xB,EAAAA,OACdtQ,IAAKsQ,EAAAA,OACLp4B,UAAWo4B,EAAAA,OACXwL,gBAAiBxL,EAAAA,OACjBuL,eAAgBvL,EAAAA,OAChBkvN,UAAWlvN,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACP1rB,MAAO0rB,EAAAA,QAAkBA,EAAAA,KACzB42N,mBAAoB52N,EAAAA,KACpBhqB,UAAWgqB,EAAAA,KACX8rI,mBAAoB9rI,EAAAA,MAAgB,EAAC,GAAM,EAAO,SAClD+C,QAAS/C,EAAAA,KACTrC,QAASqC,EAAAA,KACTnC,OAAQmC,EAAAA,KACRzmB,SAAUymB,EAAAA,KACVg3Q,YAAah3Q,EAAAA,KACb+2Q,UAAW/2Q,EAAAA,MAER9rB,CACX,CA7W4B,CA6W1B5M,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBvwB,6DC1ZbgiS,+BA9BPttR,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAOW87H,EAAankK,EAAS,CAAC,EAAGokK,EAAAA,IAAYD,aAKjD,SAAWmpH,GAIP,IAAIiD,EAAoB,CACpB5rS,KAAM,UAKV2oS,EAAoB/gM,KAAOvsF,EAASA,EAAS,CAAC,EAAGwwR,EAAAA,KAAe,CAAEnnS,MAAO2W,EAAS,CAAEzf,KAAM,OAAQujC,QAAS2sQ,EAAAA,KAAYF,GAAoB11Q,SAAU,CAC7I1vB,MAAO4C,EAAAA,EAAKw+F,MACb2zE,YAAa,SAIpBotH,EAAoB9gM,OAASxsF,EAASA,EAAS,CAAC,EAAG0wR,EAAAA,KAAiB,CAAErnS,MAAO2W,EAAS,CAAEzf,KAAM,SAAUujC,QAAS6sQ,EAAAA,KAAcJ,GAAoB11Q,SAAU,CACrJ1vB,MAAO4C,EAAAA,EAAKy+F,QACb0zE,YAAa,WAIpBotH,EAAoB3tL,UAAY3/F,EAASA,EAAS,CAAC,EAAG4wR,EAAAA,KAAoB,CAAEvnS,MAAO2W,EAAS,CAAEzf,KAAM,YAAaujC,QAAS+sQ,EAAAA,KAAiBN,GAAoB11Q,SAAU,CACjK1vB,MAAO4C,EAAAA,EAAK4xG,WACbugE,YAAa,cAIpBotH,EAAoBrnF,cAAgBjmM,EAASA,EAAS,CAAC,EAAG8wR,EAAAA,KAAwB,CAAEznS,MAAO2W,EAAS,CAAEzf,KAAM,gBAAiBujC,QAASitQ,EAAAA,KAAqBR,GAAoB11Q,SAAU,CACjL1vB,MAAO4C,EAAAA,EAAKk4M,eACb/lC,YAAa,kBAIpBotH,EAAoBpnF,UAAYlmM,EAASA,EAAS,CAAC,EAAGgxR,EAAAA,KAAoB,CAAE3nS,MAAO2W,EAAS,CAAEzf,KAAM,YAAaujC,QAASmtQ,EAAAA,KAAiBV,GAAoB11Q,SAAU,CACjK1vB,MAAO4C,EAAAA,EAAKm4M,WACbhmC,YAAa,cAIpBotH,EAAoBnnF,YAAcnmM,EAASA,EAAS,CAAC,EAAGkxR,EAAAA,KAAsB,CAAE7nS,MAAO2W,EAAS,CAAEzf,KAAM,YAAaujC,QAASqtQ,EAAAA,KAAiBZ,GAAoB11Q,SAAU,CACrK1vB,MAAO4C,EAAAA,EAAKo4M,aACbjmC,YAAa,gBAIpBotH,EAAoBzrH,KAAO7hK,EAASA,EAAS,CAAC,EAAGoxR,EAAAA,KAAe,CAAE/nS,MAAO2W,EAAS,CAAEzf,KAAM,OAAQujC,QAASutQ,EAAAA,KAAYd,GAAoB11Q,SAAU,CAC7Iy2Q,gBAAiBvjS,EAAAA,EAAKujS,gBACtBC,2BAA4BxjS,EAAAA,EAAKwjS,2BACjCC,uBAAwBzjS,EAAAA,EAAKyjS,uBAC7BC,qBAAsB1jS,EAAAA,EAAK0jS,qBAC3BC,yBAA0B3jS,EAAAA,EAAK2jS,yBAC/BC,sBAAuB5jS,EAAAA,EAAK4jS,sBAC5BC,sBAAuB7jS,EAAAA,EAAK6jS,uBAC7B1xH,YAAa,SAIpBotH,EAAoBuE,WAAa7xR,EAASA,EAAS,CAAC,EAAGoxR,EAAAA,KAAe,CAAE/nS,MAAO2W,EAAS,CAAEzf,KAAM,WAAYujC,QAASguQ,EAAAA,KAAevB,GAAoB11Q,SAAU,CAC1Jy2Q,gBAAiBvjS,EAAAA,EAAK8jS,WACtBN,2BAA4BxjS,EAAAA,EAAKgkS,sBACjCP,uBAAwBzjS,EAAAA,EAAKikS,kBAC7BP,qBAAsB1jS,EAAAA,EAAKkkS,gBAC3BP,yBAA0B,GAC1BC,sBAAuB5jS,EAAAA,EAAKmkS,iBAC5BN,sBAAuB7jS,EAAAA,EAAKokS,kBAC7BjyH,YAAa,aAAckyH,YAAY,IAI9C9E,EAAoB+E,YAAc,CAC9BhpS,MAAO2W,EAAS,CAAEzf,KAAM,YAAaujC,QAASwuQ,EAAAA,KAAgB/B,GAC9D11Q,SAAU,CACNk/L,YAAahsN,EAAAA,EAAKgsN,YAClBw4E,gBAAiBxkS,EAAAA,EAAKwkS,iBAE1BryH,YAAa,eAKjBotH,EAAoBlzE,aAAe,CAC/B/wN,MAAO2W,EAAS,CAAEzf,KAAM,yBAA0BujC,QAAS0uQ,EAAAA,KAA2BjC,GACtF11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKqsN,cAEhBl6C,YAAa,gBAKjBotH,EAAoB/yE,YAAc,CAC9BlxN,MAAO2W,EAAS,CAAEzf,KAAM,yBAA0BujC,QAAS2uQ,EAAAA,KAA2BlC,GACtF11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKwsN,aAEhBr6C,YAAa,eAKjBotH,EAAoBzyE,gBAAkB,CAClCxxN,MAAO2W,EAAS,CAAEzf,KAAM,2BAA4BujC,QAAS4uQ,EAAAA,KAA6BnC,GAC1F11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAK8sN,iBAEhB36C,YAAa,mBAKjBotH,EAAoBvyE,eAAiB,CACjC1xN,MAAO2W,EAAS,CAAEzf,KAAM,4BAA6BujC,QAAS6uQ,EAAAA,KAA8BpC,GAC5F11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKgtN,gBAEhB76C,YAAa,kBAKjBotH,EAAoB/rF,UAAY,CAC5Bl4M,MAAO2W,EAAS,CAAEzf,KAAM,mBAAoBujC,QAAS8uQ,EAAAA,KAAsBrC,GAC3E11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKwzM,WAEhBrhC,YAAa,aAKjBotH,EAAoBryE,aAAe,CAC/B5xN,MAAO2W,EAAS,CAAEzf,KAAM,sBAAuBujC,QAAS+uQ,EAAAA,KAAyBtC,GACjF11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKktN,cAEhB/6C,YAAa,gBAKjBotH,EAAoB1pF,YAAc,CAC9Bv6M,MAAO2W,EAAS,CAAEzf,KAAM,eAAgBujC,QAASgvQ,EAAAA,KAAmBvC,GACpE11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAK61M,aAEhB1jC,YAAa,eAKjBotH,EAAoB7rF,WAAa,CAC7Bp4M,MAAO2W,EAAS,CAAEzf,KAAM,cAAeujC,QAASivQ,EAAAA,KAAkBxC,GAClE11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAK0zM,YAEhBvhC,YAAa,cAKjBotH,EAAoBnrF,UAAY,CAC5B94M,MAAO2W,EAAS,CAAEzf,KAAM,0BAA2BujC,QAASkvQ,EAAAA,KAA6BzC,GACzF11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKo0M,WAEhBjiC,YAAa,aAKjBotH,EAAoB9zR,MAAQ,CACxBnQ,MAAO2W,EAAS,CAAEzf,KAAM,QAASujC,QAASmvQ,EAAAA,KAAa1C,GACvD11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKyL,QAMpB8zR,EAAoB1mH,UAAY,CAC5Bv9K,MAAO2W,EAAS,CAAEzf,KAAM,aAAcujC,QAASovQ,EAAAA,KAAiB3C,GAChE11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAK64K,YAMpB0mH,EAAoBr/L,IAAM,CACtB5kG,MAAO2W,EAAS,CAAEzf,KAAM,WAAYujC,QAASmT,EAAAA,KAAes5P,GAC5D11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKkgG,MAYpBq/L,EAAoB6F,eAAiB,CACjCz4R,SAAU,aACVD,UAAW,KACXhU,OAAQ,OAKZ6mS,EAAoB5rH,gBAAkB,CAClCr4K,MAAO2W,EAAS,CAAEzf,KAAM,YAAaujC,QAASsvQ,EAAAA,KAAgB7C,GAC9D11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAK2zK,iBAEhBxB,YAAa,mBAKjBotH,EAAoB9vL,MAAQ,CACxBxS,KAAM,QACN3hG,MAAO2W,EAAS,CAAEzf,KAAM,QAASujC,QAASuvQ,EAAAA,KAAa9C,GACvD11Q,SAAU,CACNy4Q,YAAavlS,EAAAA,EAAKulS,YAClBC,uBAAwBxlS,EAAAA,EAAKwlS,uBAC7BC,mBAAoBzlS,EAAAA,EAAKylS,mBACzBC,iBAAkB1lS,EAAAA,EAAK0lS,iBACvBC,mBAAoB3lS,EAAAA,EAAK2lS,mBACzBC,iBAAkB5lS,EAAAA,EAAK4lS,iBACvBC,kBAAmB7lS,EAAAA,EAAK6lS,kBACxBC,kBAAmB9lS,EAAAA,EAAK8lS,kBACxBC,kBAAmB/lS,EAAAA,EAAK+lS,mBAE5B5zH,YAAa,eAKjBotH,EAAoByG,SAAW,CAC3B1qS,MAAO2W,EAAS,CAAEzf,KAAM,OAAQujC,QAASkwQ,EAAAA,KAAYzD,GACrD11Q,SAAU,CACNk5Q,SAAUhmS,EAAAA,EAAKgmS,SACfE,oBAAqBlmS,EAAAA,EAAKkmS,oBAC1BC,eAAgBnmS,EAAAA,EAAKmmS,eACrBC,eAAgBpmS,EAAAA,EAAKomS,gBAEzBj0H,YAAa,cAKjBotH,EAAoB8G,eAAiB,CACjC/qS,MAAO2W,EAAS,CAAEzf,KAAM,OAAQujC,QAASuwQ,EAAAA,KAAkB9D,GAC3D11Q,SAAU,CACNy5Q,qBAAsBvmS,EAAAA,EAAKumS,qBAC3BC,uBAAwBxmS,EAAAA,EAAKwmS,uBAC7BC,mBAAoBzmS,EAAAA,EAAKymS,mBACzBC,sBAAuB1mS,EAAAA,EAAK0mS,sBAC5BC,oBAAqB3mS,EAAAA,EAAK2mS,oBAC1BC,uBAAwB5mS,EAAAA,EAAK4mS,uBAC7BC,mBAAoB7mS,EAAAA,EAAK6mS,mBACzBC,sBAAuB9mS,EAAAA,EAAK8mS,sBAC5BC,qBAAsB/mS,EAAAA,EAAK+mS,qBAC3BC,qBAAsBhnS,EAAAA,EAAKgnS,qBAC3BC,uBAAwBjnS,EAAAA,EAAKinS,uBAC7BC,qBAAsBlnS,EAAAA,EAAKknS,qBAC3BC,qBAAsBnnS,EAAAA,EAAKmnS,qBAC3BC,qBAAsBpnS,EAAAA,EAAKonS,qBAC3BC,mBAAoBrnS,EAAAA,EAAKqnS,qBAMjC9H,EAAoB+H,OAASr1R,EAASA,EAAS,CAAC,EAAGoxR,EAAAA,KAAe,CAAE/nS,MAAO2W,EAAS,CAAEzf,KAAM,SAAUujC,QAASwxQ,EAAAA,KAAc/E,GAAoB11Q,SAAU,CACnJ1vB,MAAO4C,EAAAA,EAAKsnS,QACbn1H,YAAa,WAIpBotH,EAAoB90E,KAAO,CACvBnvN,MAAO2W,EAAS,CAAEzf,KAAM,OAAQujC,QAASyxQ,EAAAA,KAAYhF,GACrD11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKyqN,MAEhBt4C,YAAa,QAKjBotH,EAAoB91E,KAAO,CACvBnuN,MAAO2W,EAAS,CAAEzf,KAAM,OAAQujC,QAAS0xQ,EAAAA,KAAYjF,GACrD11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKypN,MAEhBt3C,YAAa,QAKjBotH,EAAoBxvR,SAAW,CAC3Bjf,MAAO,YACPi5R,YAAa,CAAE5uR,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK+P,UAAWlN,MAAO,GAAI6kS,gBAAiB1nS,EAAAA,EAAK+P,UAC/EF,MAAO,CACH,CAAE1U,KAAM,UAAW0H,MAAO,YAC1B,CAAE1H,KAAM,WAAY0H,MAAO,WAC3B,CAAE1H,KAAM,WAAY0H,MAAO,SAC3B,CAAE1H,KAAM,WAAY0H,MAAO,UAC3B,CAAE1H,KAAM,WAAY0H,MAAO,SAC3B,CAAE1H,KAAM,WAAY0H,MAAO,WAC3B,CAAE1H,KAAM,WAAY0H,MAAO,aAE/BsvK,YAAa,YAKjBotH,EAAoBoI,SAAW,CAC3B72S,MAAO,cACPi5R,YAAa,CAAE5uR,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK2nS,UAAW9kS,MAAO,GAAI6kS,gBAAiB1nS,EAAAA,EAAK2nS,UAC/E93R,MAAO,CACH,CAAE1U,KAAM,QAAS0H,MAAO,+BACpB/R,MAAO,CAAE0hJ,WAAY,iCACzB,CAAEr3I,KAAM,cAAe0H,MAAO,oCAC1B/R,MAAO,CAAE0hJ,WAAY,sCACzB,CAAEr3I,KAAM,UAAW0H,MAAO,iBACtB/R,MAAO,CAAE0hJ,WAAY,mBACzB,CAAEr3I,KAAM,SAAU0H,MAAO,+BACrB/R,MAAO,CAAE0hJ,WAAY,iCACzB,CAAEr3I,KAAM,iBAAkB0H,MAAO,sCAC7B/R,MAAO,CAAE0hJ,WAAY,wCACzB,CAAEr3I,KAAM,SAAU0H,MAAO,6BACrB/R,MAAO,CAAE0hJ,WAAY,+BACzB,CAAEr3I,KAAM,kBAAmB0H,MAAO,iCAC9B/R,MAAO,CAAE0hJ,WAAY,mCACzB,CAAEr3I,KAAM,eAAgB0H,MAAO,wCAC3B/R,MAAO,CAAE0hJ,WAAY,0CACzB,CAAEr3I,KAAM,UAAW0H,MAAO,8BACtB/R,MAAO,CAAE0hJ,WAAY,iCAE7B2/B,YAAa,YAKjBotH,EAAoBqI,YAAc,CAC9B7d,YAAa,CAAE5uR,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKC,QAAS4C,MAAO,GAAI6kS,gBAAiB1nS,EAAAA,EAAKC,QAC7E4P,MAAO,CACH,CAAE1U,KAAM,YAAa0H,MAAO,IAAK/R,MAAO,CAAEkwG,QAAS,QAAShwG,WAAY,IACxE,CAAEmK,KAAM,YAAa0H,MAAO,KAAM/R,MAAO,CAAEkwG,QAAS,QAASjxF,SAAU,MAAO/e,WAAY,EAAG8M,WAAY,SACzG,CAAE3C,KAAM,YAAa0H,MAAO,KAAM/R,MAAO,CAAEkwG,QAAS,QAASjxF,SAAU,QAAS/e,WAAY,EAAG8M,WAAY,SAC3G,CAAE3C,KAAM,YAAa0H,MAAO,KAAM/R,MAAO,CAAEkwG,QAAS,QAASjxF,SAAU,SAAU/e,WAAY,EAAG8M,WAAY,SAC5G,CAAE3C,KAAM,YAAa0H,MAAO,KAAM/R,MAAO,CAAEkwG,QAAS,QAASjxF,SAAU,MAAO/e,WAAY,EAAG8M,WAAY,SACzG,CAAE3C,KAAM,YAAa0H,MAAO,KAAM/R,MAAO,CAAEkwG,QAAS,QAASjxF,SAAU,SAAU/e,WAAY,EAAG8M,WAAY,SAC5G,CAAE3C,KAAM,YAAa0H,MAAO,KAAM/R,MAAO,CAAEkwG,QAAS,QAASjxF,SAAU,SAAU/e,WAAY,EAAG8M,WAAY,UAEhHq0K,YAAa,eAKjBotH,EAAoBsI,UAAY,CAC5B/2S,MAAO,QACPg3S,iBAAkB,CACdt1S,KAAM,mBACNujC,QAASgyQ,EAAAA,IACTjpQ,KAAM,UACN1hC,MAAO4C,EAAAA,EAAKgoS,gBACZzvD,UAAWv4O,EAAAA,EAAKioS,gBAEpB91H,YAAa,aAKjBotH,EAAoB2I,UAAY,CAC5Bp3S,MAAO,mBACPg3S,iBAAkB,CACdt1S,KAAM,UACNujC,QAASoyQ,EAAAA,IACTrpQ,KAAM,UACN1hC,MAAO4C,EAAAA,EAAKxC,gBACZ+6O,UAAWv4O,EAAAA,EAAKooS,gBAEpBj2H,YAAa,aAKjBotH,EAAoB8I,UAAY,CAC5BhjO,QAASxF,EAAc,GAAIu8G,EAAAA,KAAgB,GAC3C9gL,MAAO2W,EAAS,CAAEzf,KAAM,aAAcujC,QAASuyQ,EAAAA,KAAiB9F,GAChE11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKqoS,WAEhBl2H,YAAa,aAKjBotH,EAAoBgJ,WAAa,CAC7BljO,QAASxF,EAAc,GAAIw8G,EAAAA,KAAiB,GAC5C/gL,MAAO2W,EAAS,CAAEzf,KAAM,cAAeujC,QAASyyQ,EAAAA,KAAkBhG,GAClE11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKuoS,YAEhBp2H,YAAa,cAKjBotH,EAAoBkJ,YAAc,CAC9BpjO,QAASxF,EAAc,GAAIy8G,EAAAA,KAAkB,GAC7ChhL,MAAO2W,EAAS,CAAEzf,KAAM,eAAgBujC,QAAS2yQ,EAAAA,KAAmBlG,GACpE11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKyoS,aAEhBt2H,YAAa,eAKjBotH,EAAoBoJ,aAAe,CAC/BtjO,QAASxF,EAAc,GAAI08G,EAAAA,KAAmB,GAC9CjhL,MAAO2W,EAAS,CAAEzf,KAAM,gBAAiBujC,QAAS6yQ,EAAAA,KAAoBpG,GACtE11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAK2oS,cAEhBx2H,YAAa,gBAKjBotH,EAAoBsJ,YAAc,CAC9BxjO,QAASxF,EAAc,GAAI28G,EAAAA,KAAkB,GAC7ClhL,MAAO2W,EAAS,CAAEzf,KAAM,eAAgBujC,QAAS+yQ,EAAAA,KAAmBtG,GACpE11Q,SAAU,CAAC,EACXqlJ,YAAa,eAKjBotH,EAAoBtsL,OAAS,CACzB5tC,QAASgxG,EAAAA,IAAYhvB,MACrB+uB,WAAYA,EACZ96K,MAAO2W,EAAS,CAAEzf,KAAM,SAAUujC,QAASgzQ,EAAAA,KAAcvG,GACzD11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKizG,QAEhBk/D,YAAa,UAKjBotH,EAAoByJ,QAAU,CAC1B3jO,QAASkxG,EAAAA,IAAalvB,MACtB+uB,WAAYA,EACZ96K,MAAO2W,EAAS,CAAEzf,KAAM,UAAWujC,QAASkzQ,EAAAA,KAAezG,GAC3D11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKgpS,SAEhB72H,YAAa,WAKjBotH,EAAoBnrH,YAAc,CAC9BW,SAAUqB,EAAWhC,YACrB94K,MAAO2W,EAAS,CAAEzf,KAAM,eAAgBujC,QAASmzQ,EAAAA,KAAmB1G,GACpE11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKo0K,aAEhBjC,YAAa,cACb9iB,MAAOp9I,EAAS,CAAC,EAAGmkK,IAKxBmpH,EAAoBjrH,WAAa,CAC7BS,SAAUqB,EAAW9B,WACrBh5K,MAAO2W,EAAS,CAAEzf,KAAM,iBAAkBujC,QAASozQ,EAAAA,KAAqB3G,GACxE11Q,SAAU,CACN1vB,MAAO4C,EAAAA,EAAKs0K,YAEhBnC,YAAa,gBACb9iB,MAAOp9I,EAAS,CAAC,EAAGmkK,GAE3B,CA1eD,CA0eGmpH,IAAwBA,EAAsB,CAAC,2NCzgB9Cl8Q,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAeI/L,EAAWwhR,EAAAA,EAAoB8G,eAI/B+C,EAAsC,SAAUxkR,GAEhD,SAASwkR,EAAqB9tS,GAC1B,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA2GxC,OA1GA0C,EAAMupR,YAAc,SAAU/3S,GAC1BwuB,EAAM6L,SAAS,CAAEtvB,YAAa/K,EAAMuL,UACxC,EACAijB,EAAM5Y,QAAU,WACZ,IAAI43B,EAAOhf,EAAMxkB,MAAMwjC,KACnB3uC,EAAQ2uC,EAAK3uC,MACbsgL,EAActgL,EAAM2mG,GAAG0wE,aAAanB,EAAAA,IAAcpiJ,OAAO9zB,EAAMstG,IAAKttG,EAAM+xH,UAAU5nE,KAAMnqD,EAAM+xH,UAAU3mD,KAC9Gz8B,EAAKukJ,YAAYlzL,EAAMotB,MAAMkzJ,IAC7B3xI,EAAKzZ,QACLvF,EAAMxkB,MAAM4L,QAAQ2c,UAAKvzB,EAC7B,EACAwvB,EAAMwpR,eAAiB,SAAUC,GAC7B,IAAI5jQ,EAAU7lB,EAAM3vB,MAAMw1C,QACtB6lP,EAAY1rQ,EAAM3vB,MAAMq7R,UACxBr/I,EAAM,EAAGxhH,EAAM,EACnB,GAAIgb,GAAW6lP,EAAW,CACtB,IAAI/5R,EAAUk0C,EAAQ+3C,WAAU,SAAU7zD,GAAK,OAAOA,EAAEisD,GAAG01M,EAAY,IACvEr/I,GAAmB,IAAb16I,EAAiBk0C,EAAQ1mC,OAASxN,EAAU,EAClDk5B,EAAMgb,EAAQ1mC,MAClB,CACA,OAAOsjO,EAAAA,EAAAA,IAAagnE,EAAYp9J,EAAKxhH,EACzC,EACA7K,EAAM0pR,WAAa,WACf1pR,EAAM2pR,QACV,EACA3pR,EAAM4pR,WAAa,WACf5pR,EAAM2pR,QAAO,EACjB,EACA3pR,EAAM2pR,OAAS,SAAU7sF,QACJ,IAAbA,IAAuBA,GAAW,GACtC,IAAI99K,EAAOhf,EAAMxkB,MAAMwjC,KACnBjqC,EAAKirB,EAAM3vB,MAAOgL,EAAOtG,EAAG0nN,WAAYH,EAAYvnN,EAAGunN,UAAWS,EAAchoN,EAAGgoN,YACnFZ,EAAgB,CAAE9gN,KAAMA,EAAMkhN,UAD8ExnN,EAAGwnN,UAC3DD,UAAWA,EAAWE,UAD4DznN,EAAGynN,UACzCM,SAAUA,EAAUC,YAAaA,GACjI8sF,GAAkBr+R,EAAAA,EAAAA,KAAKwzB,EAAK3uC,MAAO8rN,GACvC,GAAI0tF,EAAiB,CACjB,IAAIl5H,EAAc3xI,EAAK3uC,MAAM2mG,GAAG0wE,aAAamiI,GAC7Cl5H,EAAYxH,iBACZnqI,EAAKukJ,YAAYvkJ,EAAK3uC,MAAMotB,MAAMkzJ,IAClC3wJ,EAAM6L,SAAS,CAAE6/P,UAAWme,GAChC,CACJ,EACA7pR,EAAM8pR,UAAY,WACd,IAAI9qQ,EAAOhf,EAAMxkB,MAAMwjC,KACnBojF,EAAYpjF,EAAK3uC,MAAM+xH,UACvB66F,EAAcj9L,EAAM3vB,MAAM4sN,YAC9B,IAAK76F,EAAU1qC,MAAO,CAClB,IAAIr3D,EAAQ+hG,EAAU5nE,KAClBl2B,EAAMjE,EAAQ48L,EAAY99M,OAC1BwxK,GAAcnmK,EAAAA,EAAAA,KAAQ43G,EAAW66F,EAAaj+K,EAAK3uC,MAAM2mG,IAC7D25E,EAAYjJ,aAAanB,EAAAA,IAAcpiJ,OAAOwsJ,EAAYhzE,IAAKt9E,EAAOiE,IACtEqsJ,EAAYxH,iBACZnqI,EAAKs8B,SAASq1G,GACd3wJ,EAAM+pR,aAAa,CAAC,EACxB,CACJ,EACA/pR,EAAMgqR,aAAe,WACjB,IAAIhrQ,EAAOhf,EAAMxkB,MAAMwjC,KACnBjqC,EAAKirB,EAAM3vB,MAAOosN,EAAa1nN,EAAG0nN,WAAYQ,EAAcloN,EAAGkoN,YAAaX,EAAYvnN,EAAGunN,UAC3FH,EAAgB,CAAE9gN,KAAMohN,EAAYF,UAD8ExnN,EAAGwnN,UAC3DD,UAAWA,EAAWE,UAD4DznN,EAAGynN,WAE/IxlH,GAAKvsF,EAAAA,EAAAA,KAAWu0B,EAAK3uC,MAAO4sN,EAAad,GACzCnlH,GACAh4D,EAAKs8B,SAAS07B,GAElBh3E,EAAM+pR,aAAa,CAAC,EACxB,EACA/pR,EAAM+I,UAAY,SAAUv3B,GA1ExB,KA2EIA,EAAMm2B,QACN3H,EAAM0pR,aA5EA,KA8EDl4S,EAAMm2B,SACX3H,EAAM5Y,SAEd,EACA4Y,EAAMiqR,mBAAqB,SAAUjzS,GAAK,OAAOgpB,EAAM+pR,aAAa,CAAEztF,UAAWtlN,EAAE+L,OAAU,EAC7Fid,EAAMkqR,mBAAqB,SAAUlzS,GAAK,OAAOgpB,EAAM+pR,aAAa,CAAExtF,UAAWvlN,EAAE+L,OAAU,EAC7Fid,EAAMmqR,qBAAuB,SAAUnzS,GAAK,OAAOgpB,EAAM+pR,aAAa,CAAEhtF,YAAa/lN,EAAE+L,OAAU,EACjGid,EAAMoqR,mBAAqB,SAAUpzS,GAAK,OAAOgpB,EAAM+pR,aAAa,CAAEvtF,UAAWxlN,EAAE+L,OAAU,EAC7Fid,EAAMqqR,eAAiB,SAAUrzS,GAAK,OAAOgpB,EAAM+pR,aAAa,CAAEttF,WAAYzlN,EAAE0gB,OAAO3U,OAAU,EACjGid,EAAMsqR,gBAAkB,SAAUtzS,GAAK,OAAOgpB,EAAM+pR,aAAa,CAAE9sF,YAAajmN,EAAE0gB,OAAO3U,OAAU,EACnGid,EAAM+pR,aAAe,SAAU5+Q,GAC3B,IAAIoO,EAAYpnB,EAASA,EAASA,EAAS,CAAC,EAAG6N,EAAM3vB,OAAQ86B,GAAO,CAAE0a,aAASr1C,EAAWk7R,eAAWl7R,IACjGwuC,EAAOhf,EAAMxkB,MAAMwjC,KACvB,GAAIzF,EAAUkjL,WAAY,CACtB,IAAIphN,EAAOk+B,EAAUkjL,WAAYF,EAAYhjL,EAAUgjL,UAAWD,EAAY/iL,EAAU+iL,UAAWE,EAAYjjL,EAAUijL,UAAWO,EAAcxjL,EAAUwjL,YACxJZ,EAAgB,CAAE9gN,KAAMA,EAAMkhN,UAAWA,EAAWD,UAAWA,EAAWE,UAAWA,GACrF+tF,EAAcvrQ,EAAK3uC,MAAM+xH,UACzBv8E,GAAUm3K,EAAAA,EAAAA,KAAQh+K,EAAK3uC,MAAMstG,IAAKw+G,GAClCuvE,GAAc1rQ,EAAM3vB,MAAMosN,YAAc52K,EAAQ,IAChDA,EAAQr6B,MAAK,SAAUP,GAAS,OAAOA,EAAMuvC,MAAQ+vP,EAAY/vP,IAAM,KACtEuiK,GAAel3K,EAAQ,SACxBr1C,EACJwvB,EAAM6L,SAAS1Z,EAASA,EAAS,CAAC,EAAGonB,GAAY,CAAEsM,QAASA,EAAS6lP,UAAWA,IACpF,MAEI1rQ,EAAM6L,SAAS0N,EAEvB,EACAvZ,EAAM3vB,MAAQ,CACVkM,YAAa,EACbkgN,YAAYrwC,EAAAA,EAAAA,KAAqB5wK,EAAMwjC,KAAK3uC,OAC5C4sN,YAAa,GACbX,WAAW,EACXC,WAAW,EACXQ,aAAa,EACbP,WAAW,GAERx8L,CACX,CAyFA,OAvMAuD,EAAU+lR,EAAsBxkR,GA+GhC7kB,OAAO6nB,eAAewhR,EAAqB9rR,UAAW,WAAY,CAC9DuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMyiB,UAAYA,CAClC,EACA+J,YAAY,EACZC,cAAc,IAKlBqhR,EAAqB9rR,UAAU8K,mBAAqB,SAAUpK,EAAGmlL,GAC7D,IAAIrkK,EAAO1hB,KAAK9hB,MAAMwjC,KAClBjqC,EAAKuoB,KAAKjtB,MAAO8E,EAAKJ,EAAG8wC,QAASA,OAAiB,IAAP1wC,EAAgB,GAAKA,EAAIu2R,EAAY32R,EAAG22R,UACxF,GAAIroF,EAAUqoF,YAAcA,EAAW,CACnC,IAAIr7R,EAAQ2uC,EAAK3uC,MAEb2mG,EAAK3mG,EAAM2mG,GACXwzM,EAAe,GACnB3kQ,EAAQ55B,SAAQ,SAAU6sC,GACtB0xP,EAAalsR,KAAK,CACdk8B,KAAM1B,EAAE0B,KACRihB,GAAI3iB,EAAE2iB,GACN+rF,MAAO,CACHysB,MAAQy3G,GAAa5yO,EAAEk9B,GAAG01M,GACtB,kBACA,uBAGhB,IACA10L,EAAGgyE,QAAQi1C,EAAAA,IAAkBusF,GAC7BxzM,EAAG0wE,aAAagkH,GAAanlH,EAAAA,IAAcpiJ,OAAO9zB,EAAMstG,IAAKttG,EAAM+xH,UAAU5nE,OAC7Exb,EAAKs8B,SAAS07B,EAClB,CACJ,EAIAsyM,EAAqB9rR,UAAUnrB,OAAS,WACpC,IAAI2tB,EAAQ1C,KACR4f,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CvoB,EAAKuoB,KAAKW,SAAS+O,SAAU05Q,EAAyB3xS,EAAG2xS,uBAAwBC,EAAqB5xS,EAAG4xS,mBAAoBC,EAAwB7xS,EAAG6xS,sBAAuBC,EAAsB9xS,EAAG8xS,oBAAqBC,EAAyB/xS,EAAG+xS,uBAAwBC,EAAqBhyS,EAAGgyS,mBAAoBC,EAAwBjyS,EAAGiyS,sBAAuBC,EAAuBlyS,EAAGkyS,qBAAsBC,EAAuBnyS,EAAGmyS,qBAAsBC,EAAyBpyS,EAAGoyS,uBAAwBC,EAAuBryS,EAAGqyS,qBAAsBC,EAAuBtyS,EAAGsyS,qBAAsBC,EAAuBvyS,EAAGuyS,qBAAsBC,EAAqBxyS,EAAGwyS,mBAC3qBpyS,EAAKmoB,KAAKjtB,MAAOisN,EAAYnnN,EAAGmnN,UAAWC,EAAYpnN,EAAGonN,UAAWQ,EAAc5nN,EAAG4nN,YAAaP,EAAYrnN,EAAGqnN,UAAWC,EAAatnN,EAAGsnN,WAAYQ,EAAc9nN,EAAG8nN,YAAayuE,EAAYv2R,EAAGu2R,UACtM2M,EAAcxnS,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBACtDN,EAAAA,cAAoB,OAAQ,KACxBA,EAAAA,cAAoBmoE,EAAAA,EAAU,CAAEtoE,GAAI,aAAcqsG,QAASu/G,EAAWx5M,SAAUwa,KAAK2sR,qBACrFp5S,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,aAAcnnS,UAAW,oBAAsB+rC,EAAapQ,iBAAiBm6Q,EAAsBj6Q,EAAAA,EAASi6Q,MACxJp2S,EAAAA,cAAoB,OAAQ,KACxBA,EAAAA,cAAoBmoE,EAAAA,EAAU,CAAEtoE,GAAI,cAAeqsG,QAASw/G,EAAWz5M,SAAUwa,KAAK4sR,qBACtFr5S,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,cAAennS,UAAW,oBAAsB+rC,EAAapQ,iBAAiBo6Q,EAAsBl6Q,EAAAA,EAASk6Q,MACzJr2S,EAAAA,cAAoB,OAAQ,KACxBA,EAAAA,cAAoBmoE,EAAAA,EAAU,CAAEtoE,GAAI,eAAgBqsG,QAASggH,EAAaj6M,SAAUwa,KAAK6sR,uBACzFt5S,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,eAAgBnnS,UAAW,oBAAsB+rC,EAAapQ,iBAAiBq6Q,EAAwBn6Q,EAAAA,EAASm6Q,MAC5Jt2S,EAAAA,cAAoB,OAAQ,KACxBA,EAAAA,cAAoBmoE,EAAAA,EAAU,CAAEtoE,GAAI,qBAAsBqsG,QAASy/G,EAAW15M,SAAUwa,KAAK8sR,qBAC7Fv5S,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,qBAAsBnnS,UAAW,oBAAsB+rC,EAAapQ,iBAAiBs6Q,EAAsBp6Q,EAAAA,EAASo6Q,OAChKz2Q,EAAc9/B,EAAAA,cAAoB,MAAO,CAAEM,UAAW,uBACtDN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEgP,SAAU,OAAQpK,WAAY,UAAW1E,QAAS2qB,KAAKssR,YACjF/4S,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,eAAgBV,KAAM4uC,EAAAA,MAC5DpE,EAAapQ,iBAAiBu6Q,EAAsBr6Q,EAAAA,EAASq6Q,KACjEx2S,EAAAA,cAAoB,OAAQ,KAAMysB,KAAKksR,eAAetsQ,EAAapQ,iBAAiBy6Q,EAAoBv6Q,EAAAA,EAASu6Q,MACjH12S,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEgP,SAAU,OAAQpK,WAAY,UAAW1E,QAAS2qB,KAAKosR,YACjFxsQ,EAAapQ,iBAAiBw6Q,EAAsBt6Q,EAAAA,EAASs6Q,IAC7Dz2S,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,gBAAiBV,KAAM2uC,EAAAA,QACjEopQ,EAAY55S,EAAAA,cAAoBO,EAAAA,EAAM,CAAEiB,OAAQ,WAAc,OAAQxB,EAAAA,cAAoBiC,EAAAA,EAAa,CAAEyjC,YAAY,GACjH1lC,EAAAA,cAAoBgI,EAAAA,EAAc,KAC9BhI,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,WAAYnnS,UAAW,gBAAkB+rC,EAAapQ,iBAAiB+5Q,EAAqB75Q,EAAAA,EAAS65Q,KAC7Ih2S,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkI,EAAAA,GAAO,CAAErI,GAAI,WAAYoG,KAAM,OAAQiM,MAAO05M,EAAY35M,SAAUkd,EAAMqqR,eAAgBnjR,QAASlH,EAAMqqR,eAAgBthR,UAAW/I,EAAM+I,UAAWiyP,WAAW,MAAa,IAC7Mh4G,EAAenyK,EAAAA,cAAoBO,EAAAA,EAAM,CAAEiB,OAAQ,WAAc,OAAQxB,EAAAA,cAAoBiC,EAAAA,EAAa,CAAEyjC,YAAY,GACpH1lC,EAAAA,cAAoBgI,EAAAA,EAAc,KAC9BhI,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,cAAennS,UAAW,gBAAkB+rC,EAAapQ,iBAAiBg6Q,EAAwB95Q,EAAAA,EAAS85Q,KACnJj2S,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkI,EAAAA,GAAO,CAAErI,GAAI,cAAeoG,KAAM,OAAQiM,MAAOk6M,EAAan6M,SAAUkd,EAAMsqR,oBAAwB,IAC1I,OAAQz5S,EAAAA,cAAoBo2P,EAAAA,EAAQ,CAAE3pP,MAAO4/B,EAAapQ,iBAAiB45Q,EAAwB15Q,EAAAA,EAAS05Q,IAA0Bt/R,QAASkW,KAAKlW,QAASpW,MAAO,CAAE2G,MAAO,OAAQgB,OAAQ,OAAQ+xS,WAAY,QAAUnrS,WAAW,EAAO88Q,eAAgB,WAAc,OAAO,IAAM,EAAGG,eAAgB,WAAc,OAAO,IAAM,GAClU3rR,EAAAA,cAAoBiM,EAAAA,EAAU,CAAEC,SAAUugB,KAAKjtB,MAAMkM,YAAapL,UAAW,wBAAyB6L,SAAUsgB,KAAKisR,YAAansS,WAAW,GACzIvM,EAAAA,cAAoBwM,EAAAA,EAAa,CAAEC,MAAO4/B,EAAapQ,iBAAiB65Q,EAAoB35Q,EAAAA,EAAS25Q,KACjG8D,EACApS,EACA1nQ,GACJ9/B,EAAAA,cAAoBwM,EAAAA,EAAa,CAAEC,MAAO4/B,EAAapQ,iBAAiB85Q,EAAuB55Q,EAAAA,EAAS45Q,KACpG6D,EACAznI,EACAnyK,EAAAA,cAAoB,MAAO,CAAEM,UAAW,4CACpCN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAE+E,UAAW0wB,QAAQwjQ,GAAY/4R,QAAS2qB,KAAKwsR,WAAa5sQ,EAAapQ,iBAAiBi6Q,EAAoB/5Q,EAAAA,EAAS+5Q,KACnJl2S,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAE+E,UAAW0wB,QAAQwjQ,GAAY/4R,QAAS2qB,KAAK0sR,cAAgB9sQ,EAAapQ,iBAAiBk6Q,EAAuBh6Q,EAAAA,EAASg6Q,MAC7J3O,EACA1nQ,IAChB,EACO24Q,CACX,CAzM0C,CAyMxCz4S,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBs7Q,uLCvPpB/lR,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCohD,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAYImnP,EAAkC,SAAU78Q,GAE5C,SAAS68Q,IACL,IAAI3hR,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAmBhE,OAlBA0C,EAAMzW,KAAO,KACbyW,EAAM1iB,MAAQ,KACd0iB,EAAMtI,OAAS,KACfsI,EAAM5Y,QAAU,WACZ4Y,EAAMxkB,MAAMwjC,KAAKzZ,QACjBvF,EAAMxkB,MAAM4L,SAChB,EACA4Y,EAAM2qR,SAAW,WACb,IAAI3rQ,EAAOhf,EAAMxkB,MAAMwjC,KACnBqtH,EAAOrsI,EAAMxkB,MAAMyiB,SAASouI,KAC5B7E,EAAQ,CACRj+I,KAAMyW,EAAMzW,KAAOyW,EAAMzW,KAAKxG,WAAQvS,EACtC8M,MAAO0iB,EAAM1iB,MAAQ0iB,EAAM1iB,MAAMyF,WAAQvS,EACzCknB,OAAQsI,EAAMtI,QAAUsI,EAAMtI,OAAOiO,SAAW3F,EAAMtI,OAAOiO,QAAQo3E,QAAU,cAAWvsG,IAE9F4hL,EAAAA,EAAAA,KAAU,CAAE/lB,KAAMA,EAAM7E,MAAOA,GAASxnI,EAAMxkB,MAAMyiB,SAASo0J,YAA7DD,CAA0EpzI,EAAK3uC,MAAO2uC,EAAKs8B,UAC3Ft7C,EAAM5Y,SACV,EACO4Y,CACX,CAgCA,OAtDAuD,EAAUo+Q,EAAkB78Q,GA0B5B68Q,EAAiBnkR,UAAUnrB,OAAS,WAChC,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM/gB,EAAWlpB,EAAGkpB,SAAUhF,EAAMlkB,EAAGkkB,IAAK5mB,EAAS0C,EAAG1C,OACnF6qC,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CnoB,EAAK8oB,EAAS+O,SAAU02Q,EAA6BvuS,EAAGuuS,2BAA4BC,EAAyBxuS,EAAGwuS,uBAAwBC,EAAuBzuS,EAAGyuS,qBAAsBC,EAA2B1uS,EAAG0uS,yBAA0BC,EAAwB3uS,EAAG2uS,sBAAuBC,EAAwB5uS,EAAG4uS,sBAC7T5B,IAAWnjQ,IACX8wI,EAAAA,EAAAA,KAAQ9wI,EAAK3uC,MAAO2uC,EAAK3uC,MAAMw8D,OAAOo7F,MAAMhqI,EAASouI,OAErDn1G,EAAWrmD,EAAAA,cAAoBO,EAAAA,EAAM,CAAEiB,OAAQ,WAAc,OAAQxB,EAAAA,cAAoBiC,EAAAA,EAAa,CAAEyjC,YAAY,GAChH1lC,EAAAA,cAAoBgI,EAAAA,EAAc,KAC9BhI,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,oBAAqBnnS,UAAW,gBAAkB+rC,EAAapQ,iBAAiB62Q,EAAwB32Q,EAAAA,EAAS22Q,KACzJ9yS,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkI,EAAAA,GAAO,CAAEjC,KAAM,OAAQpG,GAAI,oBAAqBW,IAAK,SAAU2F,GAAK,OAAOgpB,EAAMzW,KAAOvS,CAAG,EAAGnD,aAAesuS,GAAYA,EAAS36I,MAAMj+I,WAAS/Y,EAAWwqR,WAAW,MACnMnqR,EAAAA,cAAoBgI,EAAAA,EAAc,KAC9BhI,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,qBAAsBnnS,UAAW,gBAAkB+rC,EAAapQ,iBAAiB82Q,EAAsB52Q,EAAAA,EAAS42Q,KACxJ/yS,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkI,EAAAA,GAAO,CAAEjC,KAAM,OAAQpG,GAAI,qBAAsBW,IAAK,SAAU2F,GAAK,OAAOgpB,EAAM1iB,MAAQtG,CAAG,EAAGnD,aAAesuS,GAAYA,EAAS36I,MAAMlqJ,YAAU9M,OACxJ,IAAxBytB,EAASsmR,YAAwB1zS,EAAAA,cAAoBgI,EAAAA,EAAc,KAC/DhI,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,uBAAwBnnS,UAAW,oBACvEN,EAAAA,cAAoBmoE,EAAAA,EAAU,CAAEtoE,GAAI,uBAAwBW,IAAK,SAAU2F,GAAK,OAAOgpB,EAAMtI,OAAS1gB,CAAG,EAAG4zS,eAAiBzI,KAAcA,EAAS36I,MAAM9vI,aAAWlnB,IACrK0sC,EAAapQ,iBAAiB+2Q,EAA0B72Q,EAAAA,EAAS62Q,MAAgC,IAC7GgH,EAAgB,CAAEh6S,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEE,QAAS2qB,KAAKlW,QAAS6R,IAAKA,EAAK2P,IAAK,UAAYsU,EAAapQ,iBAAiBg3Q,EAAuB92Q,EAAAA,EAAS82Q,KAA4BjzS,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEE,QAAS2qB,KAAKqtR,SAAUtzS,WAAY,UAAW4hB,IAAKA,EAAK2P,IAAK,UAAYsU,EAAapQ,iBAAiBi3Q,EAAuB/2Q,EAAAA,EAAS+2Q,MAElW+G,EAAUj6S,EAAAA,cAAoBo2P,EAAAA,EAAQ,CAAEw3B,aAAc,IAAKH,cAAe,IAAKntR,UAAW,kBAAmBmM,MAAO4/B,EAAapQ,iBAAiB42Q,EAA4B12Q,EAAAA,EAAS02Q,IAA8Bt8R,QAASkW,KAAKlW,QAASpW,MAAe,QAARioB,EAAgB,CAAE5R,UAAW,cAAY7W,EAAWwtP,OAAO,EAAMq+B,eAAgB,WAAc,OAAO,IAAM,EAAGG,eAAgB,WAAc,OAAO,IAAM,EAAGj9Q,WAAW,GAC3Z23C,EACArmD,EAAAA,cAAoB4sB,MAAM5sB,EAAOkvE,EAAc,CAAC8/M,EAAAA,EAAkB,MAAOgrB,GAAe,KAC5F,OAAOx4S,EAASA,EAAOy4S,EAAQ,CAAE5zP,QAASA,EAAS2zP,cAAeA,IAAmBC,CACzF,EACOnJ,CACX,CAxDsC,CAwDpC9wS,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwB2zQ,GC7FxB,IAAIp+Q,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCohD,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAYIuwP,EAAmC,SAAUjmR,GAE7C,SAASimR,IACL,IAAI/qR,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAkChE,OAjCA0C,EAAMlW,IAAM,KACZkW,EAAMgrR,QAAU,KAChBhrR,EAAM1iB,MAAQ,KACd0iB,EAAMroB,MAAQ,KACdqoB,EAAMrnB,OAAS,KACfqnB,EAAM5Y,QAAU,WACZ4Y,EAAMxkB,MAAMwjC,KAAKzZ,QACjBvF,EAAMxkB,MAAM4L,SAChB,EACA4Y,EAAM2qR,SAAW,WACb,IAAI51S,EAAKirB,EAAMxkB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM/gB,EAAWlpB,EAAGkpB,SAEhD66E,EADQ95D,EAAK3uC,MAAMw8D,OAAO06F,MACTtpI,EAASk/E,MAC1BtnG,EAAO,CACPiU,IAAKkW,EAAMlW,IAAMkW,EAAMlW,IAAI/G,MAAQ,KACnCzF,MAAO0iB,EAAM1iB,MAAQ0iB,EAAM1iB,MAAMyF,MAAQ,KACzCgH,IAAKiW,EAAMgrR,QAAUhrR,EAAMgrR,QAAQjoS,MAAQ,KAC3CpL,MAAOqoB,EAAMroB,MAAQqoB,EAAMroB,MAAMoL,MAAQ,KACzCpK,OAAQqnB,EAAMrnB,OAASqnB,EAAMrnB,OAAOoK,MAAQ,MAE5CykJ,EAAQvnJ,OAAOC,KAAKrK,GACnBuK,QAAO,SAAUwoB,GAAO,OAAqB,OAAd/yB,EAAK+yB,IAA+B,KAAd/yB,EAAK+yB,EAAa,IACvE7uB,QAAO,SAAU4wB,EAAKynD,GACvB,IAAIr9E,EACJ,OAAOkL,OAAO2mB,OAAO+D,IAAM51B,EAAK,CAAC,GAAMq9E,GAAQv8E,EAAKu8E,GAAOr9E,GAC/D,GAAG,CAAC,GACAuqN,EAAWxmH,EAAS42D,cAAclI,GAClC83D,IACqBjoD,EAAAA,EAAAA,KAAWioD,GAAU,EAC1C2rF,CAAejsQ,EAAK3uC,OAAO,SAAU2mG,GAAM,OAAOh4D,EAAKs8B,SAAS07B,EAAGgyE,QAAQ,cAAe/qJ,EAASo0J,aAAarJ,QAAQ,OAAQxhB,GAAS,IAE7IxnI,EAAM5Y,SACV,EACO4Y,CACX,CA0CA,OA/EAuD,EAAUwnR,EAAmBjmR,GAyC7BimR,EAAkBvtR,UAAUnrB,OAAS,WACjC,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM/gB,EAAWlpB,EAAGkpB,SAAUhF,EAAMlkB,EAAGkkB,IAAK5mB,EAAS0C,EAAG1C,OACnF8C,EAAK8oB,EAAS+O,SAAU04Q,EAAyBvwS,EAAGuwS,uBAAwBC,EAAqBxwS,EAAGwwS,mBAAoBC,EAAmBzwS,EAAGywS,iBAAkBC,EAAqB1wS,EAAG0wS,mBAAoBC,EAAmB3wS,EAAG2wS,iBAAkBC,EAAoB5wS,EAAG4wS,kBAAmBC,EAAoB7wS,EAAG6wS,kBAAmBC,EAAoB9wS,EAAG8wS,kBAC/V/oQ,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CjtB,EAAQ2uC,GAAQA,EAAK3uC,MACrBm3J,EAAQ,CAAC,EACTn3J,GAASA,EAAM+xH,qBAAqBklD,EAAAA,KACpCj3K,EAAM+xH,UAAUjlB,KAAKrmG,OAASzG,EAAMw8D,OAAO06F,MAAMtpI,EAASk/E,QAC1DqqD,EAAQn3J,EAAM+xH,UAAUjlB,KAAKqqD,OAEjC,IAAItwG,EAAWrmD,EAAAA,cAAoBO,EAAAA,EAAM,CAAEiB,OAAQ,WAAc,OAAQxB,EAAAA,cAAoBiC,EAAAA,EAAa,CAAEyjC,YAAY,GAChH1lC,EAAAA,cAAoBgI,EAAAA,EAAc,KAC9BhI,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,qBAAsBnnS,UAAW,gBAAkB+rC,EAAapQ,iBAAiB64Q,EAAoB34Q,EAAAA,EAAS24Q,KACtJ90S,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkI,EAAAA,GAAO,CAAEjC,KAAM,OAAQpG,GAAI,qBAAsBmD,aAAc2zJ,EAAM19I,IAAKzY,IAAK,SAAU2F,GAAK,OAAOgpB,EAAMlW,IAAM9S,CAAG,EAAGgkR,WAAW,MAC9JnqR,EAAAA,cAAoBgI,EAAAA,EAAc,KAC9BhI,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,qBAAsBnnS,UAAW,gBAAkB+rC,EAAapQ,iBAAiB+4Q,EAAoB74Q,EAAAA,EAAS64Q,KACtJh1S,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkI,EAAAA,GAAO,CAAEjC,KAAM,OAAQpG,GAAI,qBAAsBmD,aAAc2zJ,EAAMz9I,IAAK1Y,IAAK,SAAU2F,GAAK,OAAOgpB,EAAMgrR,QAAUh0S,CAAG,MACpJnG,EAAAA,cAAoBgI,EAAAA,EAAc,KAC9BhI,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,uBAAwBnnS,UAAW,gBAAkB+rC,EAAapQ,iBAAiB84Q,EAAkB54Q,EAAAA,EAAS44Q,KACtJ/0S,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkI,EAAAA,GAAO,CAAEjC,KAAM,OAAQpG,GAAI,uBAAwBmD,aAAc2zJ,EAAMlqJ,MAAOjM,IAAK,SAAU2F,GAAK,OAAOgpB,EAAM1iB,MAAQtG,CAAG,MACtJnG,EAAAA,cAAoBgI,EAAAA,EAAc,KAC9BhI,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,uBAAwBnnS,UAAW,gBAAkB+rC,EAAapQ,iBAAiBg5Q,EAAkB94Q,EAAAA,EAAS84Q,KACtJj1S,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkI,EAAAA,GAAO,CAAEjC,KAAM,OAAQpG,GAAI,uBAAwBmD,aAAc2zJ,EAAM7vJ,MAAOtG,IAAK,SAAU2F,GAAK,OAAOgpB,EAAMroB,MAAQX,CAAG,MACtJnG,EAAAA,cAAoBgI,EAAAA,EAAc,KAC9BhI,EAAAA,cAAoB,QAAS,CAAEynS,QAAS,wBAAyBnnS,UAAW,gBAAkB+rC,EAAapQ,iBAAiBi5Q,EAAmB/4Q,EAAAA,EAAS+4Q,KACxJl1S,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkI,EAAAA,GAAO,CAAErI,GAAI,wBAAyBmD,aAAc2zJ,EAAM7uJ,OAAQtH,IAAK,SAAU2F,GAAK,OAAOgpB,EAAMrnB,OAAS3B,CAAG,MAAU,IACzJ6zS,EAAgB,CAAEh6S,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEE,QAAS2qB,KAAKlW,QAAS6R,IAAKA,EAAK2P,IAAK,UAAYsU,EAAapQ,iBAAiBk5Q,EAAmBh5Q,EAAAA,EAASg5Q,KAAwBn1S,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEE,QAAS2qB,KAAKqtR,SAAUtzS,WAAY,UAAW4hB,IAAKA,EAAK2P,IAAK,UAAYsU,EAAapQ,iBAAiBm5Q,EAAmBj5Q,EAAAA,EAASi5Q,MACtV6E,EAAUj6S,EAAAA,cAAoBo2P,EAAAA,EAAQ,CAAEw3B,aAAc,IAAKH,cAAe,IAAKntR,UAAW,kBAAmBmM,MAAO4/B,EAAapQ,iBAAiB44Q,EAAwB14Q,EAAAA,EAAS04Q,IAA0Bt+R,QAASkW,KAAKlW,QAASwhB,IAAK,SAAU53B,MAAe,QAARioB,EAAgB,CAAE5R,UAAW,cAAY7W,EAAWwtP,OAAO,EAAMq+B,eAAgB,WAAc,OAAO,IAAM,EAAGG,eAAgB,WAAc,OAAO,IAAM,EAAGj9Q,WAAW,GACla23C,EACArmD,EAAAA,cAAoB4sB,MAAM5sB,EAAOkvE,EAAc,CAAC8/M,EAAAA,EAAkB,MAAOgrB,GAAe,KAC5F,OAAOx4S,EAASA,EAAOy4S,EAAQ,CAAE5zP,QAASA,EAAS2zP,cAAeA,IAAmBC,CACzF,EACOC,CACX,CAjFuC,CAiFrCl6S,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwB+8Q,2BCtHpBxnR,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCohD,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAYI0wP,EAAgC,SAAUpmR,GAE1C,SAASomR,IACL,IAAIlrR,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAoBhE,OAnBA0C,EAAMmrR,SAAW,KACjBnrR,EAAMorR,YAAc,SAAUC,GAC1BrrR,EAAMmrR,SAAWE,EACjB,IAAIF,EAAWE,GAAQA,EAAK1lR,QAAQh0B,QAChCw5S,IACAA,EAASn6S,MAAM0uN,OAAS,OAEhC,EACA1/L,EAAMsrR,SAAW,WACb,IAAIv2S,EAAKirB,EAAMxkB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM/gB,EAAWlpB,EAAGkpB,SAChDxiB,GAAOyxK,EAAAA,EAAAA,KAAgBltJ,EAAMmrR,UAAYnrR,EAAMmrR,SAASpoS,OAAU,IAClEsyJ,EAAqBgsI,EAAAA,EAAep1N,SAASjtC,EAAK3uC,OAAOglK,oBAC7DwZ,EAAAA,EAAAA,KAAQpzK,EAAMwiB,EAASo0J,YAAa,CAAEhd,mBAAoBA,GAA1DwZ,CAAgF7vI,EAAK3uC,MAAO2uC,EAAKs8B,UACjGt7C,EAAM5Y,SACV,EACA4Y,EAAM5Y,QAAU,WACZ4Y,EAAMxkB,MAAMwjC,KAAKzZ,QACjBvF,EAAMxkB,MAAM4L,SAChB,EACO4Y,CACX,CAgBA,OAvCAuD,EAAU2nR,EAAgBpmR,GA2B1BomR,EAAe1tR,UAAUnrB,OAAS,WAC9B,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM/gB,EAAWlpB,EAAGkpB,SAAUhF,EAAMlkB,EAAGkkB,IAAK5mB,EAAS0C,EAAG1C,OACnF6qC,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CnoB,EAAK8oB,EAAS+O,SAAUo5Q,EAAsBjxS,EAAGixS,oBAAqBC,EAAiBlxS,EAAGkxS,eAAgBC,EAAiBnxS,EAAGmxS,eAC9HpvP,EAAWrmD,EAAAA,cAAoBqN,EAAAA,EAAU,CAAE/M,UAAW,oBAAqB0C,cAAc04K,EAAAA,EAAAA,MAAWqC,EAAAA,EAAAA,KAAQ5vI,EAAK3uC,QAAS2qR,WAAW,EAAMuwB,UAAU,EAAOl6S,IAAKisB,KAAK8tR,cACtKP,EAAgB,CAAEh6S,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEE,QAAS2qB,KAAKlW,QAAS6R,IAAKA,EAAK2P,IAAK,UAAYsU,EAAapQ,iBAAiBu5Q,EAAgBr5Q,EAAAA,EAASq5Q,KAAqBx1S,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEE,QAAS2qB,KAAKguR,SAAUj0S,WAAY,UAAW4hB,IAAKA,EAAK2P,IAAK,UAAYsU,EAAapQ,iBAAiBw5Q,EAAgBt5Q,EAAAA,EAASs5Q,MAE7UwE,EAAUj6S,EAAAA,cAAoBo2P,EAAAA,EAAQ,CAAE91P,UAAW,kBAAmBmM,MAAO4/B,EAAapQ,iBAAiBs5Q,EAAqBp5Q,EAAAA,EAASo5Q,IAAuBh/R,QAASkW,KAAKlW,QAASwhB,IAAK,SAAU53B,MAAe,QAARioB,EAAgB,CAAE5R,UAAW,cAAY7W,EAAWwtP,OAAO,EAAMq+B,eAAgB,WAAc,OAAO,IAAM,EAAGG,eAAgB,WAAc,OAAO,IAAM,EAAGj9Q,WAAW,EAAM++Q,cAAe,IAAKG,aAAc,KAC7ZvnO,EACArmD,EAAAA,cAAoB4sB,MAAM5sB,EAAOkvE,EAAc,CAAC8/M,EAAAA,EAAkB,MAAOgrB,GAAe,KAC5F,OAAOx4S,EAASA,EAAOy4S,EAAQ,CAAE5zP,QAASA,EAAS2zP,cAAeA,IAAmBC,CACzF,EACOI,CACX,CAzCoC,CAyClCr6S,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBk9Q,OCxDbxJ,YAtBPn+Q,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,IAuB7C,SAAW+iR,GAIP,IAAIC,EAAkC,SAAU78Q,GAE5C,SAAS68Q,IACL,OAAkB,OAAX78Q,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,EAAUo+Q,EAAkB78Q,GAIrB68Q,CACX,CANsC,CAMpC6J,GACF9J,EAAcC,iBAAmBA,EAIjC,IAAIoJ,EAAmC,SAAUjmR,GAE7C,SAASimR,IACL,OAAkB,OAAXjmR,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,EAAUwnR,EAAmBjmR,GAItBimR,CACX,CANuC,CAMrCU,GACF/J,EAAcqJ,kBAAoBA,EAIlC,IAAIG,EAAgC,SAAUpmR,GAE1C,SAASomR,IACL,OAAkB,OAAXpmR,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,EAAU2nR,EAAgBpmR,GAInBomR,CACX,CANoC,CAMlCQ,GACFhK,EAAcwJ,eAAiBA,EAI/B,IAAI5B,EAAsC,SAAUxkR,GAEhD,SAASwkR,IACL,OAAkB,OAAXxkR,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,EAAU+lR,EAAsBxkR,GAIzBwkR,CACX,CAN0C,CAMxCqC,EAAAA,GACFjK,EAAc4H,qBAAuBA,CACxC,CA7CD,CA6CG5H,IAAkBA,EAAgB,CAAC,wXCpElCn+Q,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAqD7C,QA/B+B,SAAUmG,GAErC,SAAS8mR,IACL,IAAI5rR,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAEhE,OADA0C,EAAM3vB,MAAQ,CAAEgoB,KAAM,EAAGC,KAAM,GACxB0H,CACX,CAuBA,OA5BAuD,EAAUqoR,EAAW9mR,GAMrB8mR,EAAUpuR,UAAUquR,WAAa,SAAU35R,EAAO45R,EAAQC,GACtD,IAAI/rR,EAAQ1C,KACRjF,EAAMjG,KAAK4M,MAAM9M,EAAQoL,KAAK9hB,MAAM8+D,SACpChiD,EAAMpG,EAAQoL,KAAK9hB,MAAM8+D,QACzBv9D,EAAWub,GAAOyzR,GAAU1zR,GAAOyzR,EACvC,OAAQj7S,EAAAA,cAAoB,OAAQ,CAAEM,UAjB9B,wBAiBsD4L,EAAW,IAAIyE,OAhBjE,cAgByF,IAAKsrP,aAAc,WAAc,OAAO9sO,EAAM6L,SAAS,CAAExT,IAAKA,EAAKC,IAAKA,GAAQ,EAAG3lB,QAAS,WAAc,OAAOqtB,EAAMxkB,MAAMwwS,YAAYjoR,UAAKvzB,EAAW6nB,EAAKC,EAAM,EAAGsQ,IAAK1W,GACrR,EACA05R,EAAUpuR,UAAUnrB,OAAS,WACzB,IAAI2tB,EAAQ1C,KACRwuF,EAAQ,GACRjtF,EAAQvB,KAAK9hB,MAAM8+D,QAAUh9C,KAAK9hB,MAAM0c,KACxCnjB,EAAKuoB,KAAKjtB,MAAOgoB,EAAMtjB,EAAGsjB,IAAKC,EAAMvjB,EAAGujB,IACxCkiO,EAASl9N,KAAK9hB,MAAMg/O,OACpBvuM,EAAU3uB,KAAK9hB,MAAMywS,mBACrB3zR,GAAO,IACP2zB,GAAUw2L,EAAAA,EAAAA,IAAanlN,KAAK9hB,MAAM0wS,uBAAwB7zR,EAAM,EAAGC,EAAM,IAE7E,IAAK,IAAI9a,EAAI,EAAGA,EAAIqhB,EAAOrhB,IACvBsuG,EAAMxtF,KAAKhB,KAAKuuR,WAAWruS,EAAG6a,EAAKC,IAEvC,MAAO,CAAEznB,EAAAA,cAAoB,MAAO,CAAEk8P,aAAc,WAAc,OAAO/sO,EAAM6L,SAAS,CAAExT,KAAM,EAAGC,KAAM,GAAM,EAAGsQ,IAAK,QAAS53B,MAAO,CAAE4C,YAAa,WAAa6mP,cAAeD,EAAQrtN,YAAaqtN,GAAU1uI,GAAUj7G,EAAAA,cAAoB,MAAO,CAAEM,UAAW,WAAYy3B,IAAK,SAAU6xN,cAAeD,EAAQrtN,YAAaqtN,GAAUvuM,GAChV,EACO2/P,CACX,CA9B+B,CA8B7B/6S,EAAAA,WCpDF,IAsBWs7S,EAtBP5oR,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,IAuB7C,SAAWwtR,GAIP,IAAIC,EAAkC,SAAUtnR,GAE5C,SAASsnR,IACL,IAAIpsR,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAahE,OAZA0C,EAAMqsR,aAAc,EACpBrsR,EAAMssR,aAAe,SAAU96S,GAC3B,IAAI4kC,EAASpW,EAAMxkB,MAAM46B,SACrBA,GAAWA,IAAW5kC,EAAMkmB,QAAU0e,EAAOsqE,oBAAsBlvG,EAAMkmB,UAGzEsI,EAAMxkB,MAAMgsB,OAASxH,EAAMqsR,aAC3BrsR,EAAMxkB,MAAM4L,UAEhB4Y,EAAMqsR,aAAc,EACxB,EACArsR,EAAMy6N,cAAgB,WAAc,OAAOz6N,EAAMqsR,aAAc,CAAM,EAC9DrsR,CACX,CAsDA,OAtEAuD,EAAU6oR,EAAkBtnR,GAoB5BsnR,EAAiB5uR,UAAU8K,mBAAqB,SAAUukB,GAElDA,EAAUrlB,MAAQlK,KAAK9hB,MAAMgsB,MAC7BlK,KAAK9hB,MAAM4L,SAEnB,EAIAglS,EAAiB5uR,UAAU4K,kBAAoB,WAC3C/xB,OAAOG,iBAAiB,YAAa8mB,KAAKgvR,cAC1Cj2S,OAAOG,iBAAiB,cAAe8mB,KAAKgvR,aAChD,EAIAF,EAAiB5uR,UAAU6O,qBAAuB,WAC9Ch2B,OAAOq5C,oBAAoB,YAAapyB,KAAKgvR,cAC7Cj2S,OAAOq5C,oBAAoB,cAAepyB,KAAKgvR,aACnD,EAIAF,EAAiB5uR,UAAUnrB,OAAS,WAChC,IAAI0C,EAAKuoB,KAAK9hB,MAAOgsB,EAAOzyB,EAAGyyB,KAAM4O,EAASrhC,EAAGqhC,OAAQnd,EAAMlkB,EAAGkkB,IAAK9jB,EAAKJ,EAAGmjB,KAAMA,OAAc,IAAP/iB,EAAgBi3S,EAAiBzlR,aAAazO,KAAO/iB,EAAIK,EAAKT,EAAGulE,QAASA,OAAiB,IAAP9kE,EAAgB42S,EAAiBzlR,aAAa2zC,QAAU9kE,EACpO+gC,EAAqB,QAARtd,EAAgB,QAAU,OAC3C,OAAQpoB,EAAAA,cAAoBqkC,EAAAA,EAAO,CAAEkB,OAAQA,EAAQE,YAAa,CAAEC,WAAYA,EAAYC,SAAU,UAAYC,WAAY,CAAEF,WAAYA,EAAYC,SAAU,OAASH,WAAY,+CAAgD7O,KAAMA,EAAMx2B,MAAe,QAARioB,EAAgB,CAAE0V,UAAW,YAAUn+B,GAC7RK,EAAAA,cAAoB+6S,EAAW,CAAE1zR,KAAMA,EAAMoiD,QAASA,EAAS2xO,mBAAoB3uR,KAAK9hB,MAAMywS,mBAAoBC,uBAAwB5uR,KAAK9hB,MAAM0wS,uBAAwBF,YAAa1uR,KAAK9hB,MAAM+wS,cAAe/xD,OAAQl9N,KAAKm9N,gBACzO,EAIA2xD,EAAiB9iR,UAAY,CACzB9B,KAAM+B,EAAAA,KAAeoY,WACrBsqQ,mBAAoB1iR,EAAAA,OAAiBoY,WACrCuqQ,uBAAwB3iR,EAAAA,OAAiBoY,WACzCv6B,QAASmiB,EAAAA,KAAeoY,WACxB4qQ,cAAehjR,EAAAA,KAAeoY,WAC9BvL,OAAQ7M,EAAAA,IACRrR,KAAMqR,EAAAA,OACN+wC,QAAS/wC,EAAAA,OACTtQ,IAAKsQ,EAAAA,QAKT6iR,EAAiBzlR,aAAe,CAC5BzO,KAAM,EACNoiD,QAAS,GAEN8xO,CACX,CAxEsC,CAwEpCv7S,EAAAA,WACFs7S,EAAmBC,iBAAmBA,CACzC,CA9ED,CA8EGD,IAAuBA,EAAqB,CAAC,QCrDrCK,sBAhDPjpR,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,GAaA,SAAWsyS,GAIPA,EAAkBC,sBAAwB,SAAUxuR,GAChD,IAAIiiR,EAAsB,SAAUp7Q,GAEhC,SAAS4nR,IACL,IAAI1sR,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KA4BhE,OA3BA0C,EAAM3vB,MAAQ,CACVs8S,aAAa,GAEjB3sR,EAAM01K,OAAS,KACf11K,EAAMihQ,YAAc,WAChBjhQ,EAAM6L,SAAS,CACX8gR,aAAc3sR,EAAM3vB,MAAMs8S,aAElC,EACA3sR,EAAM+wQ,WAAa,WACX/wQ,EAAM3vB,MAAMs8S,aACZ3sR,EAAMihQ,aAEd,EACAjhQ,EAAMusR,cAAgB,SAAUl0R,EAAKC,GACjC,IAAI0mB,EAAOhf,EAAMxkB,MAAMwjC,KACvB,GAAKA,EAAL,CAGA,IAAIjqC,EAAKiqC,EAAK3uC,MAAMw8D,OAAO06F,MAAO9kD,EAAQ1tG,EAAG0tG,MAAOymG,EAAYn0M,EAAGm0M,UAAWC,EAAap0M,EAAGo0M,WAC1FyjG,GAAW1gF,EAAAA,EAAAA,KAAY,CAAEzpH,MAAOA,EAAOymG,UAAWA,EAAWC,WAAYA,GAAc9wL,EAAKC,GAC5Fs0R,IACAv1I,EAAAA,EAAAA,KAAWu1I,GAAU,EAArBv1I,CAA2Br4H,EAAK3uC,MAAO2uC,EAAKs8B,UAEhDt8B,EAAKzZ,QACLvF,EAAM+wQ,YAPN,CAQJ,EACO/wQ,CACX,CAcA,OA7CAuD,EAAUmpR,EAAiB5nR,GAgC3B4nR,EAAgBlvR,UAAUnrB,OAAS,WAC/B,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQmJ,EAAQsc,EAAO/iB,EAAI,CAAC,OAAQ,WACjF1E,EAAQ2uC,GAAQA,EAAK3uC,MACrB6sC,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CnoB,EAAK8oB,EAAS+O,SAAU6/Q,EAAoB13S,EAAG+2N,YAAaw4E,EAAkBvvS,EAAGuvS,gBACjFoI,EAAiB5vQ,EAAapQ,iBAAiB+/Q,EAAmB7/Q,EAAAA,EAAS6/Q,IAC3EE,EAAqB7vQ,EAAapQ,iBAAiB43Q,EAAiB13Q,EAAAA,EAAS03Q,IAC7EltS,EAAW0wB,SAAS73B,KAAU07K,EAAAA,EAAAA,KAAU17K,EAAOA,EAAMw8D,OAAO06F,MAAM9kD,SAClEtG,EAAAA,EAAAA,IAAW9rG,EAAM+xH,UAAU+mC,OAAO,SAAUhsD,GAAQ,MAA0B,2BAAnBA,EAAKrmG,KAAK1D,IAAmC,KACxGk7R,EAAY,CAAEz9R,EAAAA,cAAoB4B,EAAAA,EAAQ0f,EAAS,CAAExf,QAAS6E,OAAWhH,EAAY8sB,KAAK2jQ,YAAa,kBAAiBzpR,QAAkBhH,EAAWa,IAAK,SAAU2F,GAAK,OAAOgpB,EAAM01K,OAAS1+L,GAAKA,EAAE2uB,OAAS,EAAGiD,IAAK,eAAiBokR,EAAAA,GAAsB,CAAE1vS,MAAOwvS,GAAkB7uR,EAASziB,MAAOA,EAAO,CAAErK,WAAWu7B,EAAAA,EAAAA,GAAWlxB,EAAMrK,UAAW8sB,EAASziB,MAAMrK,UAAW,CAAE,aAAcqG,OAAmBwnC,IAASxnC,GAAa3G,EAAAA,cAAoBs7S,EAAmBC,iBAAkB,CAAExjR,IAAK,mBAAoBqjR,mBAAoBa,EAAgBZ,uBAAwBa,EAAoB9zR,IAAKzd,EAAMyd,IAAKmd,OAAQ9Y,KAAKo4K,OAAQluK,KAAMlK,KAAKjtB,MAAMs8S,YAAavlS,QAASkW,KAAKyzQ,WAAYwb,cAAejvR,KAAKivR,iBAAqB,MAC1tB,OAAOl6S,EAASA,EAAO0xB,UAAKvzB,EAAW89R,EAAW,CAAEtvP,KAAMA,IAAUsvP,CACxE,EACOoe,CACX,CA/C0B,CA+CxB77S,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,CACH,CAxDD,CAwDGsM,IAAsBA,EAAoB,CAAC,ICzG9C,IC8CWS,ED9CP1pR,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAQI6uS,EAActJ,EAAAA,EAAoBsJ,oBC5ClCxlR,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,GAWA,SAAW+yS,GAIPA,EAAgBC,wBAA0B,SAAUjvR,GAChD,IAAIiiR,EAAsB,SAAUp7Q,GAEhC,SAASqoR,IACL,IAAIntR,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAahE,OAZA0C,EAAMld,SAAW,SAAUtR,GACvB,IAAIsP,EAAOtP,EAAMkmB,OAAO3U,MACpBi8B,EAAOhf,EAAMxkB,MAAMwjC,KACnBhuC,EAAQitB,EAASjtB,MACrB,GAAIguC,EAAM,EACN0yI,EAAAA,EAAAA,KAAiB,CAAE1gL,MAAOA,EAAO+R,MAAOjC,EAAKiC,OAASkb,EAASo0J,YAA/DX,CAA4E1yI,EAAK3uC,MAAO2uC,EAAKs8B,UAC7F,IAAI5rC,EAAiBl+B,EAAMk+B,eACvBA,GAA0C,UAAxBA,EAAe54B,MACjCkoC,EAAKzZ,OAEb,CACJ,EACOvF,CACX,CAgBA,OAhCAuD,EAAU4pR,EAAkBroR,GAiB5BqoR,EAAiB3vR,UAAUnrB,OAAS,WAChC,IAAIrB,EAAQitB,EAASjtB,MACjB+D,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQwD,EAAOd,EAAGc,KAAMu3S,EAAmBr4S,EAAGk1R,YAAaojB,EAAWv1R,EAAO/iB,EAAI,CAAC,OAAQ,SAAU,OAAQ,gBACzJgb,EAAQla,GAAQooB,EAASlO,MACzBk6Q,EAAcmjB,GAAoBnvR,EAASgsQ,YAC3CruL,EAAS58D,GAAOyxI,EAAAA,EAAAA,KAAgBzxI,EAAK3uC,MAAO,CAAE+C,KAAMpC,EAAO+R,MAAO,SAAY,GAC9Em6B,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1C2sQ,GAAeA,EAAY2d,mBAC3B3d,EAAc93Q,EAAS,CAAC,EAAG83Q,IACf5uR,KAAO4uR,EAAY2d,gBAAkB1qQ,EAAapQ,iBAAiBm9P,EAAY2d,gBAAiB56Q,EAAAA,EAASi9P,EAAY2d,kBAAoB3d,EAAY5uR,MAErK,IAAI0H,EAAiC,IAAzB,IAAIo7L,IAAIviG,GAAQ/kG,KAAa+kG,EAAO,GAAK,KACjD0xM,EAAYz8S,EAAAA,cAAoBgnB,EAAAA,GAAc1F,EAAS,CAAEpP,MAAOA,EAAQgN,EAAMvE,MAAK,SAAUhO,GAAK,OAAOA,EAAEuF,QAAUA,CAAO,IAAKA,EAAOlN,KAAMka,EAAOk6Q,YAAaA,EAAa5tC,WAAYA,EAAAA,GAAYl5O,UAAW,OAAQ1D,YAAa,QAASqD,SAAUwa,KAAKxa,SAAU9R,MAAOu8S,EAAAA,GAAgB3hB,yBAAyB,EAAOtuR,MAAO2sR,EAAY5uR,MAAQgyS,IAC/V,OAAOh7S,EAASA,EAAO0xB,UAAKvzB,EAAW88S,EAAU,CAAEtuQ,KAAMA,IAAUsuQ,CACvE,EACOH,CACX,CAlC0B,CAkCxBt8S,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,CACH,CA3CD,CA2CG+M,IAAoBA,EAAkB,CAAC,QC5C/BO,sBC9CPr7R,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EASWyjR,EAAiB,SAAUjyS,GAClC,IAAIwjC,EAAOxjC,EAAMwjC,KAAMhuC,EAAQwK,EAAMxK,MAAOg3S,EAAmBxsS,EAAMwsS,iBAAkB31H,EAAc72K,EAAM62K,YACvGq7H,EAAW1F,EAAiB1qS,MAC5BqwS,EAAe3F,EAAiBvvD,UAChC1jP,EAAKizS,EAAiBhpQ,KAAM4uQ,OAAqB,IAAP74S,EAAgB,UAAYA,EACtE+N,EAAWjS,EAAAA,aAAkB,SAAUW,GACnCwtC,KACA0yI,EAAAA,EAAAA,KAAiB,CAAE1gL,MAAOA,EAAO+R,MAAOvR,EAAMuR,OAASsvK,EAAvDX,CAAoE1yI,EAAK3uC,MAAO2uC,EAAKs8B,UACjE,YAAhBsyO,GACA5uQ,EAAKzZ,QAGjB,GAAG,CAACyZ,EAAMhuC,EAAO48S,EAAav7H,IAC9B,OAAQxhL,EAAAA,cAAoB4oE,EAAAA,EAAatnD,EAAS,CAAErP,SAAUA,EAAU+qS,mBAAoB/qS,GAAYklS,EAAkB,CAAE1qS,MAAOowS,GAAWvxB,EAAAA,EAAAA,KAAkBrvP,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,IAAaA,EAAUj1D,UAAWk1D,GAAexxB,EAAAA,EAAAA,KAAkBrvP,iBAAiB6gR,EAAc3gR,EAAAA,EAAS2gR,IAAiBA,IACpU,EDjCIpqR,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,GAWA,SAAWszS,GAIPA,EAAkBM,8BAAgC,SAAU7vR,GACxD,IAAIiiR,EAAsB,SAAUp7Q,GAEhC,SAASipR,IACL,IAAI/tR,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAWhE,OAVA0C,EAAMld,SAAW,SAAUtR,GACvB,IAAIsP,EAAOtP,EAAMkmB,OAAO3U,MACpBi8B,EAAOhf,EAAMxkB,MAAMwjC,KACvB,GAAIA,IAAQg0I,EAAAA,EAAAA,KAAoBlyK,EAAKiC,MAAOkb,EAASo0J,YAAzCW,CAAsDh0I,EAAK3uC,MAAO2uC,EAAKs8B,UAAW,CAC1F,IAAI5rC,EAAiBl+B,EAAMk+B,eACvBA,GAA0C,UAAxBA,EAAe54B,MACjCkoC,EAAKzZ,OAEb,CACJ,EACOvF,CACX,CAgBA,OA9BAuD,EAAUwqR,EAAyBjpR,GAenCipR,EAAwBvwR,UAAUnrB,OAAS,WACvC,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQwD,EAAOd,EAAGc,KAAMu3S,EAAmBr4S,EAAGk1R,YAAaojB,EAAWv1R,EAAO/iB,EAAI,CAAC,OAAQ,SAAU,OAAQ,gBACzJgb,EAAQla,GAAQooB,EAASlO,MACzBk6Q,EAAcmjB,GAAoBnvR,EAASgsQ,YAC3C55R,EAAQ2uC,GAAQA,EAAK3uC,MACrB+nO,EAAU/nO,GAAQ+iL,EAAAA,EAAAA,KAAgB/iL,GAAS,GAC3C6sC,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1C2sQ,GAAeA,EAAY2d,mBAC3B3d,EAAc93Q,EAAS,CAAC,EAAG83Q,IACf5uR,KAAO4uR,EAAY2d,gBAAkB1qQ,EAAapQ,iBAAiBm9P,EAAY2d,gBAAiB56Q,EAAAA,EAASi9P,EAAY2d,kBAAoB3d,EAAY5uR,MAErK,IAAI0H,EAAkC,IAA1B,IAAIo7L,IAAIi6B,GAASvhO,KAAauhO,EAAQ,GAAK,KACnDk1E,EAAYz8S,EAAAA,cAAoBgnB,EAAAA,GAAc1F,EAAS,CAAEpP,MAAOA,EAAQgN,EAAMvE,MAAK,SAAUhO,GAAK,OAAOA,EAAEuF,QAAUA,CAAO,IAAKA,EAAOD,SAAUwa,KAAKxa,SAAUu5O,WAAYA,EAAAA,GAAYxmP,KAAMka,EAAOk6Q,YAAaA,EAAa9mR,UAAW,OAAQ1D,YAAa,QAASzO,MAAOu8S,EAAAA,GAAgB3hB,yBAAyB,EAAOtuR,MAAO2sR,EAAY5uR,MAAQgyS,IAC/V,OAAOh7S,EAASA,EAAO0xB,UAAKvzB,EAAW88S,EAAU,CAAEtuQ,KAAMA,IAAUsuQ,CACvE,EACOS,CACX,CAhC0B,CAgCxBl9S,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,CACH,CAzCD,CAyCGsN,IAAsBA,EAAoB,CAAC,IExF9C,ICKWQ,EDLPzqR,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAUW+zS,EAAwB,SAAUhwR,EAAUmiI,GACnD,IAAI8/I,EAAsB,SAAUp7Q,GAEhC,SAASopR,IACL,OAAkB,OAAXppR,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAWA,OAdAiG,EAAU2qR,EAAiBppR,GAI3BopR,EAAgB1wR,UAAUnrB,OAAS,WAC/B,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQglP,EAAcv/N,EAAO/iB,EAAI,CAAC,OAAQ,WACvFmoC,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CowR,EAAWzvR,EAAS+O,SAAS1vB,MAC7BjN,EAAQ2uC,GAAQA,EAAK3uC,MACrBmH,IAAWnH,IAAS+vJ,EAAQ/vJ,GAC5BqlM,EAAU7kM,EAAAA,cAAoB4B,EAAAA,EAAQ0f,EAAS,CAAExf,QAAS6E,OAAWhH,EAAY,WAAc,OAAOwuC,GAClGohH,EAAQphH,EAAK3uC,OAAO,SAAU2mG,GAAM,OAAOh4D,EAAKs8B,SAAS07B,EAAGgyE,QAAQ,cAAe/qJ,EAASo0J,aAAe,GAAI,EAAG,kBAAiB76K,QAAkBhH,GAAaw8S,EAAAA,GAAsB,CAAE1vS,MAAO4/B,EAAapQ,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,KAAczvR,EAASziB,MAAO67O,EAAa,CAAElmP,WAAWu7B,EAAAA,EAAAA,GAAW2qN,EAAYlmP,UAAW8sB,EAASziB,MAAMrK,UAAW,CAAE,aAAcqG,OAC9X,OAAOnF,EAASA,EAAO0xB,UAAKvzB,EAAWklM,EAAQ,CAAE12J,KAAMA,IAAU02J,CACrE,EACOw4G,CACX,CAhB0B,CAgBxBr9S,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,GC5DA,SAAW8N,GAIPA,EAAcG,eAAiB,SAAUlwR,GAAY,OAAOgwR,EAAsBhwR,EAAU0sM,EAAAA,IAAO,EAInGqjF,EAAcI,eAAiB,SAAUnwR,GAAY,OAAOgwR,EAAsBhwR,EAAU0rM,EAAAA,IAAO,CACtG,CATD,CASGqkF,IAAkBA,EAAgB,CAAC,ICftC,IA+CWK,EA/CP9qR,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,GAYA,SAAWm0S,GAIPA,EAAaC,iBAAmB,SAAUrwR,GACtC,IAAIiiR,EAAsB,SAAUp7Q,GAEhC,SAASypR,IACL,OAAkB,OAAXzpR,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CA2BA,OA9BAiG,EAAUgrR,EAAYzpR,GAItBypR,EAAW/wR,UAAUnrB,OAAS,WAC1B,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQglP,EAAcv/N,EAAO/iB,EAAI,CAAC,OAAQ,WACvFkkB,EAAMo+N,EAAYp+N,IAClB5oB,EAAQ2uC,GAAQA,EAAK3uC,MACrBk3J,EAAQl3J,GAASA,EAAMw8D,OAAO06F,MAC9BktB,EAAWltB,GAASA,EAAMtpI,EAASq4J,WAAW7B,UAC9ClvG,EAAUtnD,EAASsnD,QACnBipO,IAAgBn+S,KAAWokL,KAC1BmC,EAAAA,EAAAA,KAAWvmL,EAAOk1E,EAAStsD,IACxBssD,EAAQrpB,MAAK,SAAU7hD,GAAK,OAAOktJ,GAASA,EAAMltJ,EAAE8iG,QAASs2E,EAAAA,EAAAA,KAAQpjL,EAAOk3J,EAAMltJ,EAAE8iG,MAAQ,QAC/Fs2E,EAAAA,EAAAA,KAAQpjL,EAAOokL,GAChBg6H,IAAkBp+S,IAASymL,EAAAA,EAAAA,KAAoBzmL,EAAOokL,GACtDi6H,EAAYF,GAAeC,EAC3BvxQ,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CowR,EAAWzvR,EAAS+O,SAAS1vB,MAC7B9F,GAAYk3S,EACZh5G,EAAU7kM,EAAAA,cAAoB4B,EAAAA,EAAQ0f,EAAS,CAAExf,QAAS6E,OAAWhH,EAAY,WACzEwuC,GAAQyvQ,GAAiBh6H,GACzB2B,EAAAA,EAAAA,KAAa3B,EAAb2B,CAAuBp3I,EAAK3uC,MAAO2uC,EAAKs8B,UAEnCt8B,GAAQwvQ,IACb93H,EAAAA,EAAAA,KAAanxG,EAAStnD,EAASo0J,YAAap5J,EAA5Cy9J,CAAiD13I,EAAK3uC,MAAO2uC,EAAKs8B,SAE1E,EAAG,kBAAiB9jE,QAAkBhH,EAAW8M,MAAO4/B,EAAapQ,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,KAAcV,EAAAA,GAAsB/uR,EAASziB,MAAO67O,EAAa,CAAElmP,WAAWu7B,EAAAA,EAAAA,GAAW2qN,EAAYlmP,UAAW8sB,EAASziB,MAAMrK,UAAW,CAAE,aAAcqG,OACvQ,OAAOnF,EAASA,EAAO0xB,UAAKvzB,EAAWklM,EAAQ,CAAE12J,KAAMA,IAAU02J,CACrE,EACO64G,CACX,CAhC0B,CAgCxB19S,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,CACH,CAzCD,CAyCGmO,IAAiBA,EAAe,CAAC,ICzFpC,IA8CWM,EA9CPprR,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,GAWA,SAAWy0S,GAIPA,EAAmBC,uBAAyB,SAAU3wR,GAClD,IAAIiiR,EAAsB,SAAUp7Q,GAEhC,SAAS+pR,IACL,OAAkB,OAAX/pR,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAaA,OAhBAiG,EAAUsrR,EAAY/pR,GAItB+pR,EAAWrxR,UAAUnrB,OAAS,WAC1B,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQglP,EAAcv/N,EAAO/iB,EAAI,CAAC,OAAQ,WACvF1E,EAAQ2uC,GAAQA,EAAK3uC,MAErBgrD,EAAU,CAAEgxG,KADLpuI,EAASouI,KACQqjB,SADSzxJ,EAASyxJ,SACEC,SADmB1xJ,EAAS0xJ,UAExEzyI,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CowR,EAAWzvR,EAAS+O,SAAS1vB,MAC7Bo4L,EAAU7kM,EAAAA,cAAoB4B,EAAAA,EAAQ0f,EAAS,CAAExf,QAAS,WACtD,OAAOqsC,IAAQmyI,EAAAA,EAAAA,KAAmB91H,EAAShrD,GAASA,EAAM2mG,GAAGgyE,QAAQ,cAAe/qJ,EAASo0J,aAA9ElB,CAA4FnyI,EAAK3uC,MAAO2uC,EAAKs8B,SAChI,EAAGv+D,WAAY1M,IAASm/K,EAAAA,EAAAA,KAAQn/K,EAAOgrD,GAAUzqB,WAAW,GAAQo8Q,EAAAA,GAAsB,CAAE1vS,MAAO4/B,EAAapQ,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,KAAczvR,EAASziB,MAAO67O,IACtL,OAAOhlP,EAASA,EAAO0xB,UAAKvzB,EAAWklM,EAAQ,CAAE12J,KAAMA,IAAU02J,CACrE,EACOm5G,CACX,CAlB0B,CAkBxBh+S,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,CACH,CA3BD,CA2BGyO,IAAuBA,EAAqB,CAAC,QC1BrCG,aChDPvrR,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EDpCIqpB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,GAaA,SAAW40S,GAIPA,EAAWC,eAAiB,SAAU9wR,GAClC,IAAIiiR,EAAsB,SAAUp7Q,GAEhC,SAASkqR,IACL,IAAIhvR,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAShE,OARA0C,EAAM3vB,MAAQ,CACV4+S,cAAc,GAElBjvR,EAAMkvR,aAAe,WACjBlvR,EAAM6L,SAAS,CACXojR,cAAejvR,EAAM3vB,MAAM4+S,cAEnC,EACOjvR,CACX,CAYA,OAxBAuD,GAAUyrR,EAAUlqR,GAapBkqR,EAASxxR,UAAUnrB,OAAS,WACxB,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQmJ,EAAQsc,GAAO/iB,EAAI,CAAC,OAAQ,WACjF1E,EAAQ2uC,GAAQA,EAAK3uC,MACrB6xS,GAAY7xS,GAAQA,EAAM+xH,UAAU1qC,MACpCyqN,EAAW9xS,IAASy/K,EAAAA,EAAAA,KAAQz/K,EAAOA,EAAMw8D,OAAOo7F,MAAMhqI,EAASouI,OAC/DnvH,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CmmR,EAAkBxlR,EAAS+O,SAASy2Q,gBACpCjsS,EAAW0qS,IAAcC,EACzB7T,EAAY,CAAEz9R,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAExf,QAAS6E,OAAWhH,EAAY8sB,KAAK4xR,aAAc,kBAAiB13S,QAAkBhH,EAAWo4B,IAAK,QAAUokR,EAAAA,GAAsB,CAAE1vS,MAAO4/B,EAAapQ,iBAAiB22Q,EAAiBz2Q,EAAAA,EAASy2Q,KAAqBxlR,EAASziB,MAAOA,EAAO,CAAErK,WAAWu7B,EAAAA,EAAAA,GAAWlxB,EAAMrK,UAAW8sB,EAASziB,MAAMrK,UAAW,CAAE,aAAcqG,OAAmB8lB,KAAKjtB,MAAM4+S,cAAgBjwQ,GAASnuC,EAAAA,cAAoB6wS,GAAAA,EAAcC,iBAAkB,CAAE/4Q,IAAK,mBAAoB3K,SAAUA,EAAUhF,IAAKzd,EAAMyd,IAAK+lB,KAAMA,EAAM53B,QAASkW,KAAK4xR,gBAAoB,MACvlB,OAAO78S,EAASA,EAAO0xB,UAAKvzB,EAAW89R,EAAW,CAAEtvP,KAAMA,IAAUsvP,CACxE,EACO0gB,CACX,CA1B0B,CA0BxBn+S,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,CACH,CAnCD,CAmCG4O,IAAeA,EAAa,CAAC,IEpFhC,IA8CWK,GA9CP5rR,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,GAWA,SAAWi1S,GAIPA,EAAWC,eAAiB,SAAUnxR,GAClC,IAAIiiR,EAAsB,SAAUp7Q,GAEhC,SAASuqR,IACL,OAAkB,OAAXvqR,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAsBA,OAzBAiG,GAAU8rR,EAAUvqR,GAIpBuqR,EAAS7xR,UAAUnrB,OAAS,WACxB,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQglP,EAAcv/N,GAAO/iB,EAAI,CAAC,OAAQ,WACvF0lC,GAAW,EACXyC,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CowR,EAAWzvR,EAAS+O,SAAS1vB,MAC7BiyJ,EAAQtxI,EAASsxI,MACjB0lB,EAAWh3J,EAASg3J,SACxB,GAAIj2I,EAAM,CACN,IAAI3uC,EAAQ2uC,EAAK3uC,MACbk3J,EAAQl3J,EAAMw8D,OAAO06F,MACrB+nJ,GAAQ77H,EAAAA,EAAAA,KAAQpjL,EAAOk3J,EAAMgI,EAAM+kB,cAAei7H,GAAQ97H,EAAAA,EAAAA,KAAQpjL,EAAOk3J,EAAMgI,EAAMilB,aAErF/5I,EADAw6I,IAAa1lB,EAAM+kB,YACRg7H,IAAUC,GAGTD,GAASC,CAE7B,CACA,IAAI75G,EAAU7kM,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAExf,QAAS,WAAc,OAAOqsC,IAAQ28I,EAAAA,EAAAA,KAAW38I,EAAK3uC,MAAO2uC,EAAKs8B,SAAUt8B,EAAM7sB,GAAS,CAAE8iK,SAAUA,GAAY1lB,GAAQtxI,EAASo0J,YAAc,EAAGzhJ,WAAW,EAAM7zB,SAAU09B,EAAUn9B,MAAO4/B,EAAapQ,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,KAAcV,EAAAA,GAAsB/uR,EAASziB,MAAO67O,IAC3V,OAAOhlP,EAASA,EAAO0xB,UAAKvzB,EAAWklM,EAAQ,CAAE12J,KAAMA,IAAU02J,CACrE,EACO25G,CACX,CA3B0B,CA2BxBx+S,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,CACH,CApCD,CAoCGiP,KAAeA,GAAa,CAAC,ICnFhC,IA+CWK,GA/CPjsR,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,GAYA,SAAWs1S,GAIPA,EAAcC,kBAAoB,SAAUxxR,GACxC,IAAIiiR,EAAsB,SAAUp7Q,GAEhC,SAAS4qR,IACL,OAAkB,OAAX5qR,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAsBA,OAzBAiG,GAAUmsR,EAAa5qR,GAIvB4qR,EAAYlyR,UAAUnrB,OAAS,WAC3B,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQglP,EAAcv/N,GAAO/iB,EAAI,CAAC,OAAQ,WACvF1E,EAAQ2uC,GAAQA,EAAK3uC,MACrB4oB,EAAMo+N,EAAYp+N,IAClB02R,IAAat/S,IAASumL,EAAAA,EAAAA,KAAWvmL,EAAO4tB,EAASsnD,QAAStsD,GAC1Dw7J,EAAWpkL,GAASA,EAAMw8D,OAAO06F,MAAMtpI,EAASq4J,WAAW7B,UAC3Dm7H,IAAmBv/S,IAAS0mL,EAAAA,EAAAA,KAAqB1mL,EAAO,CAAEk3J,MAAOtpI,EAASsnD,QAAS+wG,WAAYr4J,EAASq4J,aACxGu5H,EAAaF,GAAYC,EACzB1yQ,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CowR,EAAWzvR,EAAS+O,SAAS1vB,MAC7B9F,GAAYq4S,EACZn6G,EAAU7kM,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAExf,QAAS6E,OAAWhH,EAAY,WACzEwuC,GAAQ4wQ,GAAkBn7H,GAC1BsB,EAAAA,EAAAA,KAAatB,EAAbsB,CAAuB/2I,EAAK3uC,MAAO2uC,EAAKs8B,UAEnCt8B,GAAQ2wQ,IACbj5H,EAAAA,EAAAA,KAAaz4J,EAASsnD,QAAStnD,EAASo0J,YAAap5J,EAArDy9J,CAA0D13I,EAAK3uC,MAAO2uC,EAAKs8B,SAEnF,EAAG,kBAAiB9jE,QAAkBhH,EAAW8M,MAAO4/B,EAAapQ,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,KAAcV,EAAAA,GAAsB/uR,EAASziB,MAAO67O,EAAa,CAAElmP,WAAWu7B,EAAAA,EAAAA,GAAW2qN,EAAYlmP,UAAW8sB,EAASziB,MAAMrK,UAAW,CAAE,aAAcqG,OACvQ,OAAOnF,EAASA,EAAO0xB,UAAKvzB,EAAWklM,EAAQ,CAAE12J,KAAMA,IAAU02J,CACrE,EACOg6G,CACX,CA3B0B,CA2BxB7+S,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,CACH,CApCD,CAoCGsP,KAAkBA,GAAgB,CAAC,IC/E/B,IA4BIM,GA5BAC,GAAkB,SAAU1/S,EAAOirE,GAC1C,IAAIthE,GAASozN,EAAAA,EAAAA,KAAa/8N,EAAOirE,GACjC,GAAIthE,IAAWshE,EAAU,CACrB,IAAI8+B,GAAMsvG,EAAAA,EAAAA,KAAcr5M,GACpBgoB,EAAM+hF,GAAOA,EAAI+C,KAAK/C,EAAI85B,OAC9B,GAAI77G,GAAkC,IAA3BA,EAAI6+B,QAAQ+tG,WACnB,OAAO,CAEf,CACA,OAAOjrJ,CACX,EAIWg2S,GAAe,SAAU3/S,EAAOirE,GACvC,IAAIthE,GAAS05M,EAAAA,EAAAA,KAAUrjN,EAAOirE,GAC9B,GAAIthE,IAAWshE,EAAU,CACrB,IAAI8+B,GAAMsvG,EAAAA,EAAAA,KAAcr5M,GACpB4/S,EAAY71M,GAAOA,EAAI+C,KAAK/C,EAAI85B,MAAQ,GAC5C,GAAI+7K,GAA8C,IAAjCA,EAAU/4P,QAAQ+tG,WAC/B,OAAO,CAEf,CACA,OAAOjrJ,CACX,GAKA,SAAW81S,GAIPA,EAAYI,uBAAyB,SAAUjyR,GAC3C,OAAOgwR,EAAsBhwR,EAAUsuM,EAAAA,IAC3C,EAIAujF,EAAYK,sBAAwB,SAAUlyR,GAC1C,OAAOgwR,EAAsBhwR,EAAUyuM,EAAAA,IAC3C,EAIAojF,EAAYM,0BAA4B,SAAUnyR,GAC9C,OAAOgwR,EAAsBhwR,EAAU+uM,EAAAA,IAC3C,EAIA8iF,EAAYO,yBAA2B,SAAUpyR,GAC7C,OAAOgwR,EAAsBhwR,EAAUivM,EAAAA,IAC3C,EAIA4iF,EAAYQ,oBAAsB,SAAUryR,GACxC,OAAOgwR,EAAsBhwR,EAAU+xR,GAC3C,EAIAF,EAAYS,uBAAyB,SAAUtyR,GAC3C,OAAOgwR,EAAsBhwR,EAAU8xR,GAC3C,EAIAD,EAAYU,sBAAwB,SAAUvyR,GAC1C,OAAOgwR,EAAsBhwR,EAAU83L,EAAAA,IAC3C,EAIA+5F,EAAYW,qBAAuB,SAAUxyR,GACzC,OAAOgwR,EAAsBhwR,EAAU21L,EAAAA,IAC3C,EAIAk8F,EAAYY,oBAAsB,SAAUzyR,GACxC,OAAOgwR,EAAsBhwR,EAAUq2L,EAAAA,IAC3C,CACH,CAvDD,CAuDGw7F,KAAgBA,GAAc,CAAC,ICzFlC,IA+CWa,GA/CPptR,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,GAYA,SAAWy2S,GAIPA,EAAaC,iBAAmB,SAAU3yR,GACtC,IAAIiiR,EAAsB,SAAUp7Q,GAEhC,SAAS+rR,IACL,OAAkB,OAAX/rR,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAcA,OAjBAiG,GAAUstR,EAAY/rR,GAItB+rR,EAAWrzR,UAAUnrB,OAAS,WAC1B,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQglP,EAAcv/N,GAAO/iB,EAAI,CAAC,OAAQ,WACvFsmD,EAAU,CAAEgxG,KAAMpuI,EAASouI,MAC3BykJ,IAAU9xQ,IACVwwI,EAAAA,EAAAA,KAAQxwI,EAAK3uC,MAAOgrD,GAEpBne,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CowR,EAAWzvR,EAAS+O,SAAS1vB,MAC7B9F,GAAYs5S,EACZp7G,EAAU7kM,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAExf,QAAS6E,OAAWhH,EAAY,WAAc,OAAOwuC,IAClG+yI,EAAAA,EAAAA,KAAW12H,EAASrc,EAAK3uC,MAAM2mG,GAAGgyE,QAAQ,cAAe/qJ,EAASo0J,aAAlEN,CAAgF/yI,EAAK3uC,MAAO2uC,EAAKs8B,SAAW,EAAG,kBAAiB9jE,QAAkBhH,GAAaw8S,EAAAA,GAAsB,CAAE1vS,MAAO4/B,EAAapQ,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,KAAczvR,EAASziB,MAAO67O,EAAa,CAAElmP,WAAWu7B,EAAAA,EAAAA,GAAW2qN,EAAYlmP,UAAW8sB,EAASziB,MAAMrK,UAAW,CAAE,aAAcqG,OAC3X,OAAOnF,EAASA,EAAO0xB,UAAKvzB,EAAWklM,EAAQ,CAAE12J,KAAMA,IAAU02J,CACrE,EACOm7G,CACX,CAnB0B,CAmBxBhgT,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,CACH,CA5BD,CA4BGyQ,KAAiBA,GAAe,CAAC,IC5EpC,IA8CWI,GA9CPxtR,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,GAWA,SAAW62S,GAIPA,EAAeC,mBAAqB,SAAU/yR,GAC1C,IAAIiiR,EAAsB,SAAUp7Q,GAEhC,SAASmsR,IACL,IAAIjxR,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAShE,OARA0C,EAAM3vB,MAAQ,CACV4+S,cAAc,GAElBjvR,EAAMkvR,aAAe,WACjBlvR,EAAM6L,SAAS,CACXojR,cAAejvR,EAAM3vB,MAAM4+S,cAEnC,EACOjvR,CACX,CAQA,OApBAuD,GAAU0tR,EAAcnsR,GAaxBmsR,EAAazzR,UAAUnrB,OAAS,WAC5B,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQglP,EAAcv/N,GAAO/iB,EAAI,CAAC,OAAQ,WACvFmoC,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CowR,EAAWzvR,EAAS+O,SAASk5Q,SAC7B5X,EAAY,CAAEz9R,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAExf,QAAS2qB,KAAK4xR,aAActmR,IAAK,YAAcokR,EAAAA,GAAsB,CAAE1vS,MAAO4/B,EAAapQ,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,KAAczvR,EAASziB,MAAO67O,IAAkB/5N,KAAKjtB,MAAM4+S,cAAgBjwQ,GAASnuC,EAAAA,cAAoB6wS,GAAAA,EAAcwJ,eAAgB,CAAEtiR,IAAK,iBAAkBoW,KAAMA,EAAM/gB,SAAUA,EAAUhF,IAAKo+N,EAAYp+N,IAAK7R,QAASkW,KAAK4xR,gBAAoB,MAC/a,OAAO78S,EAASA,EAAO0xB,UAAKvzB,EAAW89R,EAAW,CAAEtvP,KAAMA,IAAUsvP,CACxE,EACO2iB,CACX,CAtB0B,CAsBxBpgT,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,CACH,CA/BD,CA+BG6Q,KAAmBA,GAAiB,CAAC,IC9ExC,IAAI5+R,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAQIyR,GAAQ8zR,EAAAA,EAAoB9zR,MAIrBulS,GAAQ,SAAU11S,GACzB,IAAIwjC,EAAOxjC,EAAMwjC,KAAM3sC,EAASmJ,EAAMnJ,OAAQ0C,EAAKyG,EAAMyiB,SAAUA,OAAkB,IAAPlpB,EAAgB4W,GAAQ5W,EAAIsiP,EAAcv/N,GAAOtc,EAAO,CAAC,OAAQ,SAAU,aACrJ2qB,EAAM6Y,GAAQA,EAAK7Y,IACnBw3E,EAAMx3E,GAAOA,EAAIwN,cACjBw9Q,EAAexzM,GAAOA,EAAIoiF,YAC1B2tH,EAAWzvR,EAAS+O,SAAS1vB,MAC7B9F,GAAY25S,GAAgBA,IAAiB96S,OAC7C1D,EAAU9B,EAAAA,aAAkB,WACxBsgT,GACAA,EAAaxlS,OAErB,GAAG,CAACwlS,IACAz7G,EAAU7kM,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAExf,QAAS6E,OAAWhH,EAAYmC,EAAS,kBAAiB6E,QAAkBhH,EAAW8M,OAAO6+Q,EAAAA,EAAAA,KAAkBrvP,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,KAAcV,EAAAA,GAAsB/uR,EAASziB,MAAO67O,EAAa,CAAElmP,WAAWu7B,EAAAA,EAAAA,GAAW2qN,EAAYlmP,UAAW8sB,EAASziB,MAAMrK,UAAW,CAAE,aAAcqG,OACnW,OAAQnF,EAASA,EAAO0xB,UAAKvzB,EAAWklM,EAAQ,CAAE12J,KAAMA,IAAU02J,CACtE,aC/CIvjL,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAQIkmG,GAAMq/L,EAAAA,EAAoBr/L,IAAKgxM,GAAwB3R,EAAAA,EAAoB6F,eAIpE+L,GAAM,SAAU71S,GACvB,IAAIwjC,EAAOxjC,EAAMwjC,KAAM3sC,EAASmJ,EAAMnJ,OAAQ0C,EAAKyG,EAAMyiB,SAAUA,OAAkB,IAAPlpB,EAAgBqrG,GAAMrrG,EAAIuwS,EAAiB9pS,EAAM8pS,eAAgBgM,EAAkB91S,EAAM81S,gBAAiBj6D,EAAcv/N,GAAOtc,EAAO,CAAC,OAAQ,SAAU,WAAY,iBAAkB,oBACjQkyS,EAAWzvR,EAAS+O,SAAS1vB,MAC7B3K,EAAU9B,EAAAA,aAAkB,WACxBmuC,IACAtyB,EAAAA,GAAAA,GAAQsyB,EAAK7Y,IAAKhU,GAASA,GAAS,CAAC,EAAGi/R,IAAyB9L,GAAkB,CAAC,GAAKgM,EAEjG,GAAG,CAACtyQ,EAAMsmQ,EAAgBgM,IACtB57G,EAAU7kM,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAExf,QAASA,EAAS2K,OAAO6+Q,EAAAA,EAAAA,KAAkBrvP,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,KAAcV,EAAAA,GAAsB/uR,EAASziB,MAAO67O,IACxL,OAAQhlP,EAASA,EAAO0xB,UAAKvzB,EAAWklM,EAAQ,CAAE12J,KAAMA,IAAU02J,CACtE,EC3CIvjL,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAQI6+K,GAAY0mH,EAAAA,EAAoB1mH,UAIzBw4H,GAAY,SAAU/1S,GAC7B,IAAIwjC,EAAOxjC,EAAMwjC,KAAM3sC,EAASmJ,EAAMnJ,OAAQ0C,EAAKyG,EAAMyiB,SAAUA,OAAkB,IAAPlpB,EAAgBgkL,GAAYhkL,EAAIsiP,EAAcv/N,GAAOtc,EAAO,CAAC,OAAQ,SAAU,aACzJkyS,EAAWzvR,EAAS+O,SAAS1vB,MAC7B3K,EAAU9B,EAAAA,aAAkB,WACxBmuC,KACAwyQ,EAAAA,EAAAA,KAAiBxyQ,EAAK3uC,MAAO2uC,EAAKs8B,UAClCt8B,EAAKzZ,QAEb,GAAG,CAACyZ,IACA02J,EAAU7kM,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAExf,QAASA,EAAS2K,OAAO6+Q,EAAAA,EAAAA,KAAkBrvP,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,KAAcV,EAAAA,GAAsB/uR,EAASziB,MAAO67O,IACxL,OAAQhlP,EAASA,EAAO0xB,UAAKvzB,EAAWklM,EAAQ,CAAE12J,KAAMA,IAAU02J,CACtE,EC5CIvjL,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EASI25K,GAAkB4rH,EAAAA,EAAoB5rH,gBACtCzzB,IAAUqxJ,EAAAA,EAAAA,OAIHC,GAAkB,SAAUl2S,GACnC,IAAIwjC,EAAOxjC,EAAMwjC,KAAM3sC,EAASmJ,EAAMnJ,OAAQ0C,EAAKyG,EAAMyiB,SAAUA,OAAkB,IAAPlpB,EAAgB8+K,GAAkB9+K,EAAIsiP,EAAcv/N,GAAOtc,EAAO,CAAC,OAAQ,SAAU,aAC/JkyS,EAAWzvR,EAAS+O,SAAS1vB,MAC7B9F,GAAYwnC,IAASohH,GAAQphH,EAAK3uC,OAClCsC,EAAU9B,EAAAA,aAAkB,WACxBmuC,GACAohH,GAAQphH,EAAK3uC,OAAO,SAAU2mG,GAC1BA,EAAGgyE,QAAQ,cAAe/qJ,EAASo0J,aACnCrzI,EAAKs8B,SAAS07B,EAClB,GAER,GAAG,CAACh4D,IACA02J,EAAU7kM,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAExf,QAAS6E,OAAWhH,EAAYmC,EAAS,kBAAiB6E,QAAkBhH,EAAW8M,OAAO6+Q,EAAAA,EAAAA,KAAkBrvP,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,KAAcV,EAAAA,GAAsB/uR,EAASziB,MAAO67O,EAAa,CAAElmP,WAAWu7B,EAAAA,EAAAA,GAAWlxB,EAAMrK,UAAW8sB,EAASziB,MAAMrK,UAAW,CAAE,aAAcqG,OAC7V,OAAQnF,EAASA,EAAO0xB,UAAKvzB,EAAWklM,EAAQ,CAAE12J,KAAMA,IAAU02J,CACtE,aCjDInyK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EASI+jB,GAAWwhR,EAAAA,EAAoB8G,eAI/BoL,GAAgC,SAAU7sR,GAE1C,SAAS6sR,IACL,IAAI3xR,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAOhE,OAHA0C,EAAM3vB,MAAQ,CAAEuhT,YAAY,GAC5B5xR,EAAM5Y,QAAU,WAAc,OAAO4Y,EAAM6L,SAAS,CAAE+lR,YAAY,GAAU,EAC5E5xR,EAAM8W,OAAS,WAAc,OAAO9W,EAAM6L,SAAS,CAAE+lR,YAAY,GAAS,EACnE5xR,CACX,CAYA,OAtBAuD,GAAUouR,EAAgB7sR,GAc1B6sR,EAAen0R,UAAUnrB,OAAS,WAC9B,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAMq4M,EAAcv/N,GAAO/iB,EAAI,CAAC,SAC3DyG,EAAQyiB,GAASziB,MACjB0hC,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CowR,EAAWzvR,GAAS+O,SAASy5Q,qBAC7BjvS,GAAYwnC,EAChB,MAAO,CAAEnuC,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAExf,QAAS6E,OAAWhH,EAAY8sB,KAAKwZ,OAAQ,kBAAiBt/B,QAAkBhH,GAAaw8S,EAAAA,GAAsB,CAAE1vS,MAAO4/B,EAAapQ,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,IAAY9kR,IAAK,QAAUptB,EAAO67O,EAAa,CAAElmP,WAAWu7B,EAAAA,EAAAA,GAAW2qN,EAAYlmP,UAAWqK,EAAMrK,UAAW,CAAE,aAAcqG,OAAkB8lB,KAAKjtB,MAAMuhT,YAAc5yQ,GAASnuC,EAAAA,cAAoBy4S,GAAAA,EAAsB,CAAEtqQ,KAAMA,EAAM53B,QAASkW,KAAKlW,QAAS6R,IAAKo+N,EAAYp+N,IAAK2P,IAAK,WAC9f,EACO+oR,CACX,CAxBoC,CAwBlC9gT,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwB2jR,mBC3EpBx/R,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,GAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAOI2hD,GAAa,SAAU9rG,EAAOyoG,GAC9B,IAAI/jG,EAAK1E,EAAM+xH,UAAW5nE,EAAOzlD,EAAGylD,KAAMihB,EAAK1mE,EAAG0mE,GAC9CzhE,EAAS,KAKb,OAJA3J,EAAMstG,IAAIooD,aAAavrG,EAAMihB,GAAI,SAAU0hC,GAEvC,QADAnjG,EAASA,IAAWmjG,EAAKrmG,OAASgiG,EAAWqE,EAAO,MAExD,IACOnjG,CACX,EAIWq1S,GAAW,SAAU7zS,GAC5B,IAMIylG,EAAIn+E,EANJ2X,GAAW,EACXuE,EAAOxjC,EAAMwjC,KACbuwH,EAAQ+mB,EAAAA,EACRrB,EAAWz5K,EAAMy5K,SACjB/3I,GAAei/O,EAAAA,EAAAA,KACfpsQ,EAAQgwD,GAAc,GAAKvkE,EAAMuU,OAAS,IAAK,GAEnD,GAAIivB,EAAM,CACN,IAAI3uC,EAAQ2uC,EAAK3uC,MACbk3J,EAAQl3J,GAASA,EAAMw8D,OAAO06F,MAClCtmD,EAAKsmD,GAASprD,GAAW9rG,EAAOk3J,EAAMgI,EAAM+kB,cAC5CxxJ,EAAKykI,GAASprD,GAAW9rG,EAAOk3J,EAAMgI,EAAMilB,aAC5C/5I,EAAWvS,QAAQ+sJ,IAAa1lB,EAAM+kB,YAAerzE,IAAOn+E,GAAQm+E,GAAMn+E,EAC9E,CAqBA,GAAI2X,IAAawmE,GAAMn+E,GAAK,CACxB,IAAI+uR,GAAkBp2H,EAAAA,EAAAA,MAAWx6E,GAAMn+E,GAAI0kI,OAC3Cz3I,EAAQA,EAAMxS,KAAI,SAAUuD,EAAMoR,GAAS,OAAQC,GAASA,GAAS,CAAC,EAAGrR,GAAO,CAAE/D,SAAU80S,EAAkB/wS,EAAK9P,QAAU6gT,EAA4B,IAAV3/R,GAAiB,GACpK,CACA,OAAQrhB,EAAAA,cAAoB,OAAQ,CAAEs8B,YAAa,SAAUn2B,GAAKA,EAAEub,gBAAkB,GAClF1hB,EAAAA,cAAoByrP,GAAAA,EAAa,CAAEn5O,UAAW,OAAQ4M,MAAOA,EAAOrd,KAAM8I,EAAM9I,KAAMujC,QAASz6B,EAAMy6B,QAAS0mN,cAzB9F,SAAU5mD,GACtB/2J,KACA28I,EAAAA,EAAAA,KAAW38I,EAAK3uC,MAAO2uC,EAAKs8B,SAAUt8B,EAAM7sB,GAASA,GAAS,CAAE8iK,SAAUA,GAAY1lB,GAAQ,CAAE+rB,UAAW,CAAC,IAAM,cAClHt8I,EAAKzZ,QAEb,EAoBgJvV,YAnB9H,SAAUxe,GACxB,GAAIwtC,EAAM,CACN,IAAIs8I,EAAY9pL,EAAMsP,KAAK9P,MAAQ,CAAEA,MAAO,oBAAsBQ,EAAMsP,KAAK9P,MAAQ,KAAQ,CAAC,EAC1F8gT,EAAc7wM,GAAMn+E,EACxB,GAAIgvR,IAAer2H,EAAAA,EAAAA,KAAUq2H,EAAYtqJ,SAAWh2J,EAAMsP,KAAK9P,MAAO,CAClE,IAAIopG,EAAMp7D,EAAK3uC,MAAM+xH,UAAU4jD,MAAM/a,WAAW,GAAI,GAAK,EACzDjsH,EAAKs8B,SAASt8B,EAAK3uC,MAAM2mG,GAAG4tE,cAAcxqE,EAAKp7D,EAAK3uC,MAAMw8D,OAAO06F,MAAM0tB,GAAWqG,GACtF,MAEIK,EAAAA,EAAAA,KAAW38I,EAAK3uC,MAAO2uC,EAAKs8B,SAAUt8B,EAAM7sB,GAASA,GAAS,CAAE8iK,SAAUA,GAAY1lB,GAAQ,CAAE+rB,UAAWA,IAAc,cAE7Ht8I,EAAKzZ,OACT,CACJ,EAM0Ky2N,YAAavhN,EAAW,kBAAejqC,EAAW8M,WAAuB9M,IAAhBgL,EAAM8B,MAAsB9B,EAAM8B,MAAQ4/B,EAAapQ,iBAAiBtxB,EAAMkyS,SAAU1gR,EAAAA,EAASxxB,EAAMkyS,aAC9U,oGC/EIv7R,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAMW+nR,GAAS,SAITC,GAAU,SAAUjvS,GAC3B,IAAIkvS,EAAalvS,EAAMkI,MAAM8mS,IAC7B,OAAOE,EAAaA,EAAW,GAAK,EACxC,EAIW1sJ,GAAW,SAAUpoD,EAAMnsG,GAClC,IAAI+D,EACAI,EACA4N,EAAQypK,IAAkC,QAArBr3K,EAAKgoG,EAAKqqD,aAA0B,IAAPryJ,OAAgB,EAASA,EAAGnE,QAAU,IAAIA,IAAU,GAC1G,OAAO+D,EAAK,CAAC,GACN/D,GAASogF,WAAWruE,IAAU,KACjChO,EAAG/D,EAAQ,QAAUghT,GAAQjvS,GAC7BhO,CACR,EAIWy3K,GAAa,SAAUf,GAM9B,OALcA,GAAa,IAAInlK,MAAM,WAAWlG,OAAO8nB,SAAS3qB,KAAI,SAAUwsB,GAC1E,IAAIh1B,EACA+2K,EAAY/hJ,EAAEzjB,MAAM,WACxB,OAAOvR,EAAK,CAAC,GAAM+2K,EAAU,IAAMA,EAAU,GAAI/2K,CACrD,IAAGgF,QAAO,SAAU4wB,EAAK6oB,GAAO,OAAQrhC,GAASA,GAAS,CAAC,EAAGwY,GAAM6oB,EAAO,GAAG,CAAC,EAEnF,EAqBIgrK,GAAa,OAIV,SAAS+B,GAAavJ,EAAW2B,EAAW51M,GAC/C,IAAIykJ,EACJ,GAAI,IAAIt9H,OAAO,QAAUyuL,EAAY,KAAK5tL,KAAKisL,EAAUhmN,OAAS,IAAK,CACnE,IAAIA,EA3Ba,SAAUy6K,EAAWC,GAC1C,IAAIC,EAAgBD,EAAS16K,MACzBonD,EAASszH,EAAS3oK,MAClB6oK,EAAWF,EAASE,SACxB,IAAKH,EACD,MAAO,CAAEz2B,SAAS,EAAOhkJ,MAAO,MAEpC,IAAI4qG,EAAS6vE,EAAUnlK,MAAM,WAAWlG,QAAO,SAAU2pB,GAAK,OAAO7B,QAAQ6B,EAAI,IAC7E8hJ,EAAWjwE,EAAOx7F,QAAO,SAAU2pB,GACnC,IAAI+hJ,EAAY/hJ,EAAEzjB,MAAM,WACxB,QAASwlK,EAAU,GAAGh5H,gBAAkB64H,GAAiBvzH,EAAOrtB,KAAK+gJ,EAAU,IACnF,IAIA,OAHIF,GACAC,EAASvtJ,KAAK,GAAG9c,OAAOmqK,EAAe,MAAMnqK,OAAOoqK,IAEjD,CACH56K,MAAO66K,EAAS3wH,KAAK,OAAS2wH,EAAS1sK,OAAS,IAAM,IACtD61I,QAAS9sH,QAAQ0jJ,IAAaC,EAAS1sK,SAAWy8F,EAAOz8F,OAEjE,CAQoBqsK,CAAmBwrC,EAAUhmN,OAAS,GAAI,CAAEA,MAAO2nN,EAAW51M,MAAOy7M,GAAY5yC,SAAU7oK,IAAS/R,MAChHw2J,EAAQr1I,GAASA,GAAS,CAAC,EAAG6kM,GAAY,CAAEhmN,MAAOA,GACvD,MACK,GAAIgmN,EAAUhmN,MAAO,CACtB,IAAIkhT,EAAO1lI,GAAWwqC,EAAUhmN,OAChCkhT,EAAKv5F,GAAa51M,EAClBykJ,EAAQr1I,GAASA,GAAS,CAAC,EAAG6kM,GAAY,CAAEhmN,MAAOiP,OAAOC,KAAKgyS,GAAM9xS,QAAO,SAAU2pB,GAAK,OAAO7B,QAAQgqR,EAAKnoR,GAAK,IAAGhwB,QAAO,SAAU4wB,EAAK0hH,GAAO,OAAO1hH,EAAM0hH,EAAM,KAAO6lK,EAAK7lK,GAAO,IAAM,GAAG,IAAIr1F,QAC3M,MAGQwwG,EADAzkJ,EACQoP,GAASA,GAAS,CAAC,EAAG6kM,GAAY,CAAEhmN,MAAO2nN,EAAY,KAAO51M,EAAQ,MAGtEoP,GAAS,CAAC,EAAG6kM,GAG7B,OAAOxvD,CACX,CACA,ICrCW2qJ,GDsDAC,GAAgB,SAAU/hT,GACjC,IAAIgiT,GAAiBl2M,EAAAA,EAAAA,IAAW9rG,EAAM+xH,UAAU+mC,OAAO,SAAUprJ,GAAK,MAAuB,UAAhBA,EAAEjH,KAAK1D,IAAkB,IAClGk/S,GAAen2M,EAAAA,EAAAA,IAAW9rG,EAAM+xH,UAAUgnC,KAAK,SAAUrrJ,GAAK,MAAuB,UAAhBA,EAAEjH,KAAK1D,IAAkB,IAClG,OAAIi/S,GAAkBC,GAAgBD,EAAen+K,QAAUo+K,EAAap+K,OAASm+K,EAAel1M,KAAKnnB,GAAGs8N,EAAan1M,MApB9G,SAAU9sG,GACrB,IAAIstG,EAAMttG,EAAMstG,IAAKykB,EAAY/xH,EAAM+xH,UACnCpoH,EAAS,GAUb,OATAooH,EAAUw5C,OAAO3vJ,SAAQ,SAAUqU,GAC/B,IAAIk6B,EAAOl6B,EAAM6oI,MAAM/uD,IACnB3+B,EAAKn7C,EAAM8oI,IAAIhvD,IACnBuD,EAAIooD,aAAavrG,EAAMihB,GAAI,SAAU0hC,EAAM/C,EAAK04E,EAASC,GAC9B,eAAnB51E,EAAKrmG,KAAK1D,MAA4C,iBAAnB+pG,EAAKrmG,KAAK1D,MAC7C4G,EAAOskB,KAAK,CAAE6+E,KAAMA,EAAM/C,IAAKA,GAEvC,GACJ,IACOpgG,CACX,CAQoBu4S,CAASliT,GAAO+P,QAAO,SAAUrL,GACzC,IAAIqlG,EAAMrlG,EAAGqlG,IACTunH,GAAcxlH,EAAAA,EAAAA,IAAW9rG,EAAMstG,IAAIj4E,QAAQ00E,IAAM,SAAUr8F,GAAK,MAAuB,UAAhBA,EAAEjH,KAAK1D,IAAkB,IACpG,OAAOuuN,GAAeA,EAAYztF,QAAUm+K,EAAen+K,OAASm+K,EAAel1M,KAAKnnB,GAAG2rI,EAAYxkH,KAC3G,IAGG,EACX,EAIWq1M,GAAa,SAAUniT,GAC9B,IAAIy7G,EAAQ,GACZ,GAAIsmM,GAAc/hT,GAAO8O,OAAQ,CAC7B,IAAIsgK,EAAOpvK,EAAM+xH,UAAU+mC,MACvBw4D,GAAcxlH,EAAAA,EAAAA,IAAWsjE,GAAM,SAAU1hK,GAAK,MAAiC,UAA1BA,EAAEjH,KAAKyvJ,KAAK0gD,SAAuB,IAC5F,GAAoB,OAAhB0a,EACA,OAAO71G,EAEX,IAAI2mM,EAAahzI,EAAKp/I,MAAMshM,EAAYztF,OACpC0tF,EAAYD,EAAYxkH,KACxB5/F,EAAMsoM,EAAAA,IAAS99K,IAAI65L,GACnB++E,EAAQtwS,EAAMstG,IAClBpgG,EAAIA,IAAI0O,SAAQ,SAAU6sC,GACtB,IAAIshD,EAAMthD,EAAI25P,EACd3mM,EAAMxtF,KAAK,CAAE87E,IAAKA,EAAK+C,KAAMwjM,EAAMp0I,OAAOnyD,IAC9C,GACJ,CACA,OAAO0R,CACX,EE/II35F,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAIIghJ,GAAe,kBAwDf0nI,GAAa,SAAU5mM,EAAO96G,GAC9B,IAAIY,EAAS,IAAIusM,IACbp7L,EAAQ,GAMZ,OALA+oG,EAAM7/F,SAAQ,SAAU3N,GACpB,IAAIvJ,EACJgO,EAAQypK,IAAuC,QAA1Bz3K,EAAKuJ,EAAK6+F,KAAKqqD,aAA0B,IAAPzyJ,OAAgB,EAASA,EAAG/D,QAAU,IAAIA,IAAU,GAC3GY,EAAOmpC,IAAIh4B,EACf,IACoB,IAAhBnR,EAAOiF,MAAckM,EACdA,EAEJ,EACX,EACI4vS,GAAY,SAAU7mM,EAAOpiF,GAC7B,IAAI93B,EAAS,IAAIusM,IACbp7L,EAAQ,GAKZ,OAJA+oG,EAAM7/F,SAAQ,SAAU3N,GACpByE,GAASzE,EAAK6+F,KAAKqqD,OAAS,CAAC,GAAG99H,IAAS,GACzC93B,EAAOmpC,IAAIh4B,EACf,IACoB,IAAhBnR,EAAOiF,MAAckM,EACdA,EAEJ,EACX,EAII6vS,GAAkB,CAClBC,YAAY,EACZC,UAAW,KACXC,UAAW,GACXC,WAAY,KACZC,WAAY,GACZC,UAAW,CAAEzrO,EAAG,GAAIkmB,EAAG,IACvBwlN,YAAa,GACbz1S,qBAAiBlN,EACjB4iT,YAAa,KACbC,YAAa,KACbz/S,iBAAapD,EACb8iT,YAAa,KACb5iT,GAAI,GACJS,UAAW,IAKXoiT,GAAmB,SAAUljT,GAC7B,IAAIy7G,EAAQsmM,GAAc/hT,GACtBovK,EAAOpvK,EAAM+xH,UAAU+mC,MACvB1mD,EAAQqJ,EAAM3sG,QAASg9F,EAAAA,EAAAA,IAAWsjE,GAAM,SAAU1hK,GAAK,MAAiC,UAA1BA,EAAEjH,KAAKyvJ,KAAK0gD,SAAuB,IAAK,KAC1G,OAAKxkG,EAGEtwF,GAASA,GAASA,GAASA,GAAS,CAAC,EAAGygS,IA7GlC,SAAU9mM,EAAOrJ,EAAOg9D,GACrC,IAAIzlK,EAAS,CACT84S,UAAW,KACXC,UAAW,IAEXnxF,EAAYn/G,EAAMtF,KAClBqvG,EAAW/sC,EAAKp/I,MAAMoiF,EAAMyxB,OAChC,IAAK0tF,EAAUp6D,MAAMwjB,IACjB,OAAOhxK,EAEX,IAAIrC,EAAQ,IAAIwmM,IACZp7L,EAAQ,GACR2/F,GAAW+qE,EAAAA,EAAAA,KAAem0C,EAAUp6D,MAAMwjB,KAAehuE,WAmB7D,OAlBA8O,EAAM7/F,SAAQ,SAAU3N,GAKpB,IAJA,IAAIurM,EAAQ+X,EAAUl8L,QAAQpnB,EAAK87F,IAAMoyG,GACrCn0L,EAAMwxL,EAAMhyD,OACZ6pE,EAAY7X,EAAM33L,QAClBqG,EAAU,EACL/a,EAAI,EAAGA,GAAKkkN,EAAWlkN,IAC5B+a,GAAWF,EAAIy8F,MAAMt3G,GAAGgqJ,MAAM+/C,QAElC,IAAIjvL,EAAMoqF,EAAS3xG,SAASwnB,EAAU,GAClCD,IACAvV,EAAQuV,EAAItnB,MAAM2G,MAClBA,EAAMojC,IAAIh4B,GAElB,IACmB,IAAfpL,EAAMd,MAAckM,IACpB/I,EAAO84S,UAAY1hO,WAAWruE,IAAU,KACxC/I,EAAO+4S,UAAYf,GAAQjvS,IAExB/I,CACX,CA6EqEw5S,CAAW1nM,EAAOrJ,EAAOg9D,IA5E5E,SAAU3zD,EAAOrJ,EAAOg9D,GACtC,IAAIzlK,EAAS,CACTg5S,WAAY,KACZC,WAAY,IAEZrxF,EAAYn/G,EAAMtF,KAClBqvG,EAAW/sC,EAAKp/I,MAAMoiF,EAAMyxB,OAC5Bv7H,EAAS,IAAIwlM,IACbp7L,EAAQ,GAYZ,OAXA+oG,EAAM7/F,SAAQ,SAAU3N,GACpB,IAAIvJ,EAEAsjB,EADQupM,EAAUl8L,QAAQpnB,EAAK87F,IAAMoyG,GACzB30D,OAChB90I,EAAQypK,IAAiC,QAApBz3K,EAAKsjB,EAAImvI,aAA0B,IAAPzyJ,OAAgB,EAASA,EAAG/D,QAAU,IAAI2H,QAAU,GACrGA,EAAOoiC,IAAIh4B,EACf,IACoB,IAAhBpK,EAAO9B,MAAckM,IACrB/I,EAAOg5S,WAAa5hO,WAAWruE,IAAU,KACzC/I,EAAOi5S,WAAajB,GAAQjvS,IAEzB/I,CACX,CAuDsGy5S,CAAY3nM,EAAOrJ,EAAOg9D,IAAQ,CAAEyzI,UAAW,CAAEzrO,EAAGirO,GAAW5mM,EAAO,cAAene,EAAG+kN,GAAW5mM,EAAO,mBAAqBqnM,YAAaT,GAAW5mM,EAAO,eAAgBpuG,gBAAiBg1S,GAAW5mM,EAAO,0BAAuBt7G,EAAW4iT,YAAahiO,WAAWshO,GAAW5mM,EAAO,aAAe,KAAMunM,YAAajiO,WAAWshO,GAAW5mM,EAAO,kBAAoB,KAAMl4G,YAAa8+S,GAAW5mM,EAAO,sBAAmBt7G,EAAW8iT,YAAaZ,GAAW5mM,EAAO,iBAAmB,KAAMp7G,GAAIiiT,GAAU7mM,EAAO,MAAO36G,UAAWwhT,GAAU7mM,EAAO,WAF1nB8mM,EAGf,EA6CIc,GAAc,SAAU18M,EAAInhG,EAAMi2G,GAClCA,EAAM7/F,SAAQ,SAAUlX,GACpB,IAAIooG,EAAOpoG,EAAGooG,KAAM/C,EAAMrlG,EAAGqlG,IACzBotD,EAAQr1I,GAAS,CAAC,EAAGgrF,EAAKqqD,OAC9BA,EAAQ+4D,GAAa/4D,EAAO,eAAgB3xJ,EAAKjC,aAAe,IAChE4zJ,EAAQ+4D,GAAa/4D,EAAO,eAAgB3xJ,EAAKy9S,aAAe,IAChE9rJ,EAAQ+4D,GAAa/4D,EAAO,eAA4C,kBAArB3xJ,EAAKw9S,YAA2Bx9S,EAAKw9S,YAAc,KAAO,IAC7G7rJ,EAAQ+4D,GAAa/4D,EAAO,UAAuC,kBAArB3xJ,EAAKu9S,YAA2Bv9S,EAAKu9S,YAAc,KAAO,IACxG5rJ,EAAQ+4D,GAAa/4D,EAAO,mBAAoB3xJ,EAAK6H,iBAAmB,IACxE8pJ,EAAQ+4D,GAAa/4D,EAAO,aAAc3xJ,EAAKq9S,UAAUzrO,GAAK,IAC9D+/E,EAAQ+4D,GAAa/4D,EAAO,iBAAkB3xJ,EAAKq9S,UAAUvlN,GAAK,KAClE65D,EAAQ+4D,GAAa/4D,EAAO,cAAe3xJ,EAAKs9S,aAAe,KACzDziT,GAAKmF,EAAKnF,IAAM,KACtB82J,EAAMysB,MAAQp+K,EAAK1E,WAAa,KAChC6lG,EAAG4tE,cAAcxqE,EAAK,KAAMotD,GACE,kBAAnB3xJ,EAAKi9S,WA3DL,SAAU97M,EAAIoD,EAAKziG,GAMlC,IALA,IAAI5C,EAAII,EACJ00M,EAAQ7yG,EAAG2G,IAAIj4E,QAAQ00E,GACvB/hF,EAAMwxL,EAAMhyD,OACZ6pE,EAAY7X,EAAM33L,QAClBqG,EAAU,EACL/a,EAAI,EAAGA,GAAKkkN,EAAWlkN,IAC5B+a,GAAWF,EAAIy8F,MAAMt3G,GAAGgqJ,MAAM+/C,QAElC,IAAIqa,EAAY/X,EAAM1sG,KAAK0sG,EAAM31E,MAAQ,GACrCs4E,EAAW3C,EAAM5+C,WAAW,EAAG4+C,EAAM31E,MAAQ,GAAK,EAClDszB,EAAQo6D,EAAUp6D,MAEtB,GAAIA,GAASA,EAAMwjB,KAEXtoE,GAAW+qE,EAAAA,EAAAA,KAAejmB,EAAMwjB,KAAehuE,YACpCjsG,SAASwnB,EAAU,GAC9BvnB,MAAM2G,MAAQA,EAClB6vJ,EAAQr1I,GAASA,GAAS,CAAC,EAAGq1I,KAASzyJ,EAAK,CAAC,GAAMi2K,IAAgBtoE,EAASmrE,UAAW94K,IACvFiiG,EAAG4tE,cAAc4nC,EAAU,KAAMhlD,OAEhC,CACD,IAAI3oI,EAAQ,EACZ,IAASrhB,EAAI,EAAGA,EAAI6a,EAAI4sI,WAAYznJ,IAChCqhB,GAASxG,EAAIy8F,MAAMt3G,GAAGgqJ,MAAM+/C,QAEhC,IAAI7kG,EAAW52F,SAASrV,cAAc,YAClC0hB,EAAO,IAAI7C,MAAMuJ,GACrB,IAASrhB,EAAI,EAAGA,EAAIqhB,EAAOrhB,IACvB2a,EAAK3a,GAAKsO,SAASrV,cAAc,OACjCisG,EAASt/E,YAAYjL,EAAK3a,IAExB2a,EAAKupM,GACP1wN,MAAM2G,MAAQA,EAClB6vJ,EAAQr1I,GAASA,GAAS,CAAC,EAAGq1I,KAASryJ,EAAK,CAAC,GAAM61K,IAAgB,aAAe7yJ,EAAKpe,QAAO,SAAU4wB,EAAK0hH,GAAO,OAAO1hH,EAAM0hH,EAAIwhC,SAAW,GAAG,IAAM,cAAe14K,IACxK6hG,EAAG4tE,cAAc4nC,EAAU,KAAMhlD,EACrC,CACJ,CAuBYmsJ,CAAa38M,EAAIoD,EAAKvkG,EAAKi9S,WAAaj9S,EAAKk9S,WAAa,OAE/B,kBAApBl9S,EAAKm9S,YAxBJ,SAAUh8M,EAAIoD,EAAKzhG,GACnC,IAAIkxM,EAAQ7yG,EAAG2G,IAAIj4E,QAAQ00E,GACvB/hF,EAAMwxL,EAAMhyD,OACZw7D,EAASxJ,EAAM5+C,WAAW,GAAK,EACnCj0D,EAAG4tE,cAAcyuC,EAAQ,KAAMkN,GAAaloM,EAAImvI,MAAO,SAAU7uJ,GACrE,CAoBYi7S,CAAc58M,EAAIoD,EAAKvkG,EAAKm9S,YAAcn9S,EAAKo9S,YAAc,MAErE,GACJ,EChMI9gS,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EACI6lE,GAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAeWq5P,GAAsB,SAAUr4S,GACvC,IAAIwjC,EAAOxjC,EAAMwjC,KAAMq4M,EAAcv/N,GAAOtc,EAAO,CAAC,SAChDzG,EAAKlE,EAAAA,UAAe,GAAQ+gT,EAAa78S,EAAG,GAAI++S,EAAgB/+S,EAAG,GACnEg/S,GAAM53B,EAAAA,EAAAA,KACN63B,EAAU9rR,QAAQ8W,IAAQm9D,EAAAA,EAAAA,IAAWn9D,EAAK3uC,MAAM+xH,UAAU+mC,OAAO,SAAUprJ,GAAK,MAAiC,UAA1BA,EAAEjH,KAAKyvJ,KAAK0gD,SAAuB,KAC1Ht0M,EAAU9B,EAAAA,aAAkB,WAC5BijT,GAAc,EAClB,GAAG,IACCG,EAAcpjT,EAAAA,aAAkB,WAChCijT,GAAc,GACL,OAAT90Q,QAA0B,IAATA,GAA2BA,EAAKzZ,OACrD,GAAG,CAACyZ,IACAk1Q,EAASrjT,EAAAA,aAAkB,SAAUgF,GACrC,GAAImpC,GAAQnpC,EAAM,CACd,IAAImhG,EDyIK,SAAU3mG,EAAOwF,GAClC,IAAImhG,EAAK3mG,EAAM2mG,GACX8U,EAAQj2G,EAAKg9S,WAAaL,GAAWniT,GAAS+hT,GAAc/hT,GAEhE,OADAqjT,GAAY18M,EAAInhG,EAAMi2G,GACf9U,CACX,CC9IqBm9M,CAAen1Q,EAAK3uC,MAAOwF,GAChCmhG,EAAG+rE,YACH/jI,EAAKs8B,SAAS07B,EAEtB,CACAi9M,GACJ,GAAG,CAACj1Q,EAAMi1Q,IACV,OAAQpjT,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAErb,KAAM,SAAUwG,MAAOy2S,EAAIjnR,iBAAiB5sB,EAAAA,EAAKk0S,eAAgBpnR,EAAAA,EAAS9sB,EAAAA,EAAKk0S,iBAAkB1hT,KAAM,wBAAyBujC,QAASo+Q,GAAAA,IAAyB1hT,QAASA,EAAS6E,UAAWw8S,GAAWhH,EAAAA,GAAsB31D,IACvQu6D,GAAc5yQ,GAAQnuC,EAAAA,cAAoByjT,GAA2B,CAAEt1Q,KAAMA,EAAMpM,SAAUqhR,EAAaC,OAAQA,IAC1H,EACIK,GAAY,CACZ,CAAEC,QAASt0S,EAAAA,EAAKu0S,sBAAuBp5S,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKu0S,uBACvD/hT,KAAM,uBAAwBujC,QAASy+Q,GAAAA,IAAuB3xS,MAAO,CAAE0kE,EAAG,OAAQkmB,EAAG,QACzF,CAAE6mN,QAASt0S,EAAAA,EAAKy0S,wBAAyBt5S,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKy0S,yBACzDjiT,KAAM,yBAA0BujC,QAAS2+Q,GAAAA,IAAyB7xS,MAAO,CAAE0kE,EAAG,SAAUkmB,EAAG,QAC/F,CAAE6mN,QAASt0S,EAAAA,EAAK20S,uBAAwBx5S,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK20S,wBACxDniT,KAAM,wBAAyBujC,QAAS6+Q,GAAAA,IAAwB/xS,MAAO,CAAE0kE,EAAG,QAASkmB,EAAG,QAC5F,CAAE6mN,QAASt0S,EAAAA,EAAK60S,yBAA0B15S,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK60S,0BAC1DriT,KAAM,0BAA2BujC,QAAS++Q,GAAAA,IAA0BjyS,MAAO,CAAE0kE,EAAG,OAAQkmB,EAAG,WAC/F,CAAE6mN,QAASt0S,EAAAA,EAAK+0S,2BAA4B55S,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK+0S,4BAC5DviT,KAAM,4BAA6BujC,QAASi/Q,GAAAA,IAA4BnyS,MAAO,CAAE0kE,EAAG,SAAUkmB,EAAG,WACrG,CAAE6mN,QAASt0S,EAAAA,EAAKi1S,0BAA2B95S,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKi1S,2BAC3DziT,KAAM,2BAA4BujC,QAASm/Q,GAAAA,IAA2BryS,MAAO,CAAE0kE,EAAG,QAASkmB,EAAG,WAClG,CAAE6mN,QAASt0S,EAAAA,EAAKm1S,yBAA0Bh6S,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKm1S,0BAC1D3iT,KAAM,0BAA2BujC,QAASq/Q,GAAAA,IAA0BvyS,MAAO,CAAE0kE,EAAG,OAAQkmB,EAAG,WAC/F,CAAE6mN,QAASt0S,EAAAA,EAAKq1S,2BAA4Bl6S,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKq1S,4BAC5D7iT,KAAM,4BAA6BujC,QAASu/Q,GAAAA,IAA4BzyS,MAAO,CAAE0kE,EAAG,SAAUkmB,EAAG,WACrG,CAAE6mN,QAASt0S,EAAAA,EAAKu1S,0BAA2Bp6S,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKu1S,2BAC3D/iT,KAAM,2BAA4BujC,QAASy/Q,GAAAA,IAA2B3yS,MAAO,CAAE0kE,EAAG,QAASkmB,EAAG,WAClG,CAAE6mN,QAASt0S,EAAAA,EAAKy1S,0BAA2Bt6S,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKy1S,2BAC3DjjT,KAAM,eAAgBujC,QAAS2/Q,GAAAA,IAAsB7yS,MAAO,CAAE0kE,EAAG,GAAIkmB,EAAG,MAE5EkoN,GAAkB,CAClB,CAAErB,QAASt0S,EAAAA,EAAK41S,mBAAoBz6S,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK41S,oBACpD/yS,MAAO,GAAIrQ,KAAM,YAAaujC,QAAS8/Q,GAAAA,KAC3C,CAAEvB,QAASt0S,EAAAA,EAAK81S,wBAAyB36S,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK81S,yBACzDjzS,MAAO,SAAUrQ,KAAM,mBAAoBujC,QAASggR,GAAAA,MAKjDC,GAAsB,SAAUvwR,EAAS5iB,GAChD,OAAKA,EAGGlS,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoBwkS,GAAAA,EAAa,KAC7BxkS,EAAAA,cAAoBszC,GAAAA,EAAU,CAAEzxC,KAAMqQ,EAAMkzB,QAAS7iC,KAAM2P,EAAMrQ,QACrEizB,GALOA,CAMf,EAIWwwR,GAAqB,SAAUpzR,EAAI+7N,GAC1C,IAAIs3D,EAAgBvlT,EAAAA,cAAoBA,EAAAA,SAAgB,KACpDA,EAAAA,cAAoBwkS,GAAAA,EAAa,KAC7BxkS,EAAAA,cAAoBszC,GAAAA,EAAU,CAAEzxC,KAAMosP,EAAUnjP,SAASs6B,QAAS7iC,KAAM0rP,EAAUnjP,SAASjJ,QAC/FqwB,EAAGvnB,MAAMzK,UACb,OAAOF,EAAAA,aAAmBkyB,EAAIA,EAAGvnB,MAAO46S,EAC5C,EACI9B,GAA4B,SAAU94S,GACtC,IAAIkrB,EAAW71B,EAAAA,SAAc,WACzB,OAAO0iT,GAAiB/3S,EAAMwjC,KAAK3uC,MACvC,GAAG,CAACmL,EAAMwjC,OACN+0Q,GAAM53B,EAAAA,EAAAA,KACN02B,EAAahiT,EAAAA,OAAa,MAC1BwlT,EAAgB3vR,EAASmsR,WACzBC,EAAYjiT,EAAAA,OAAa,MACzBylT,EAAe5vR,EAASosR,UACxBC,EAAYliT,EAAAA,OAAa,MACzB61B,EAASqsR,YAAch5E,EAAAA,GAAMzkO,SAASoxB,EAASqsR,YAC/Ch5E,EAAAA,GAAMz7M,KAAKoI,EAASqsR,WAExB,IAAIwD,EAAe7vR,EAASqsR,WAAa,GACrCC,EAAaniT,EAAAA,OAAa,MAC1B2lT,EAAgB9vR,EAASssR,WACzBC,EAAapiT,EAAAA,OAAa,MAC1B61B,EAASusR,aAAel5E,EAAAA,GAAMzkO,SAASoxB,EAASusR,aAChDl5E,EAAAA,GAAMz7M,KAAKoI,EAASusR,YAExB,IAAIwD,EAAgB/vR,EAASusR,YAAc,GACvCC,EAAYriT,EAAAA,OAAa,MACzB6lT,EAAenC,GAAU/oS,MAAK,SAAUmrS,GAAM,YAAsBnmT,IAAfmmT,EAAG5zS,MAAM0kE,GAAmB/gD,EAASwsR,WAC1FyD,EAAG5zS,MAAM0kE,IAAM/gD,EAASwsR,UAAUzrO,GAAKkvO,EAAG5zS,MAAM4qF,IAAMjnE,EAASwsR,UAAUvlN,CAAG,KAAM,KAClFwlN,EAActiT,EAAAA,OAAa,MAC3B+lT,EAAiBf,GAAgBrqS,MAAK,SAAUiY,GAAK,OAAOA,EAAE1gB,QAAU2jB,EAASysR,WAAa,IAC9Fz1S,EAAkB7M,EAAAA,OAAa,MAC/BgmT,EAAqBnwR,EAAShpB,gBAC9B01S,EAAcviT,EAAAA,OAAa,MAC3BimT,EAAiBpwR,EAAS0sR,YAC1BC,EAAcxiT,EAAAA,OAAa,MAC3BkmT,EAAiBrwR,EAAS2sR,YAC1Bz/S,EAAc/C,EAAAA,OAAa,MAC3BmmT,EAAiBtwR,EAAS9yB,YAC1B0/S,EAAcziT,EAAAA,OAAa,MAC3BomT,EAAiBC,EAAAA,GAAiB1rS,MAAK,SAAUue,GAAK,OAAOA,EAAEhnB,QAAU2jB,EAAS4sR,WAAa,IAC/F5iT,EAAKG,EAAAA,OAAa,MAClBsmT,EAAQzwR,EAASh2B,GACjBS,EAAYN,EAAAA,OAAa,MACzBumT,EAAe1wR,EAASv1B,UACxB+iT,EAASrjT,EAAAA,aAAkB,WAC3B,IAAIkE,EAAII,EAAIK,EAAIG,EAAII,EAAIE,EAAI0G,EAAI4U,EAAIG,EAAIgJ,EAAIC,EAAIE,EAAIG,EAAIqiR,EAAIG,EAAIG,EAAI1jH,EAAI6jH,EAAIuZ,EAAIC,EAC5EzhT,EAAO,CACPg9S,WAAY3qR,QAA6F,QAApF/yB,EAAmC,QAA7BJ,EAAK89S,EAAWlhT,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,eAA4B,IAAPxwB,OAAgB,EAASA,EAAG4nG,SAC7I+1M,WAAyC,QAA5Bt9S,EAAKs9S,EAAUnhT,eAA4B,IAAP6D,OAAgB,EAASA,EAAGuN,QAAU,KACvFgwS,WAAyC,QAA5Bp9S,EAAKo9S,EAAUphT,eAA4B,IAAPgE,OAAgB,EAASA,EAAGoN,QAAU,GACvFiwS,YAA2C,QAA7Bj9S,EAAKi9S,EAAWrhT,eAA4B,IAAPoE,OAAgB,EAASA,EAAGgN,QAAU,KACzFkwS,YAA2C,QAA7Bh9S,EAAKg9S,EAAWthT,eAA4B,IAAPsE,OAAgB,EAASA,EAAG8M,QAAU,GACzFmwS,UAA6F,QAAjF3hS,EAAkC,QAA5B5U,EAAKu2S,EAAUvhT,eAA4B,IAAPgL,OAAgB,EAASA,EAAGoG,aAA0B,IAAPwO,OAAgB,EAASA,EAAGxO,MACjIowS,YAAiG,QAAnFz4R,EAAoC,QAA9BhJ,EAAKyhS,EAAYxhT,eAA4B,IAAP+f,OAAgB,EAASA,EAAG3O,aAA0B,IAAP2X,OAAgB,EAASA,EAAG3X,MACrIrF,gBAAoD,QAAlCid,EAAKjd,EAAgB/L,eAA4B,IAAPgpB,OAAgB,EAASA,EAAG5X,MACxFqwS,YAAmG,kBAA/C,QAA9Bv4R,EAAKu4R,EAAYzhT,eAA4B,IAAPkpB,OAAgB,EAASA,EAAG9X,OAAqD,QAA9BiY,EAAKo4R,EAAYzhT,eAA4B,IAAPqpB,OAAgB,EAASA,EAAGjY,MAAQ,KACzLswS,YAAmG,kBAA/C,QAA9BhW,EAAKgW,EAAY1hT,eAA4B,IAAP0rS,OAAgB,EAASA,EAAGt6R,OAAqD,QAA9By6R,EAAK6V,EAAY1hT,eAA4B,IAAP6rS,OAAgB,EAASA,EAAGz6R,MAAQ,KACzLnP,YAA4C,QAA9B+pS,EAAK/pS,EAAYjC,eAA4B,IAAPgsS,OAAgB,EAASA,EAAG56R,MAChFuwS,aAAkG,QAAnFxV,EAAoC,QAA9B7jH,EAAKq5H,EAAY3hT,eAA4B,IAAPsoL,OAAgB,EAASA,EAAGl3K,aAA0B,IAAP+6R,OAAgB,EAASA,EAAG/6R,QAAU,KAChJrS,GAAIuzB,QAA8B,QAArBozR,EAAK3mT,EAAGiB,eAA4B,IAAP0lT,OAAgB,EAASA,EAAGt0S,QAAU,IAChF5R,UAAW8yB,QAAqC,QAA5BqzR,EAAKnmT,EAAUQ,eAA4B,IAAP2lT,OAAgB,EAASA,EAAGv0S,QAAU,KAElGvH,EAAM04S,OAAOnwR,UAAKvzB,EAAWqF,EACjC,GAAG,CAAC2F,EAAM04S,SACNh9P,EAAWrmD,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBACnDN,EAAAA,cAAoB,WAAY,CAAEM,UAAW,mBACzCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,kDACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gCACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,mBACrCN,EAAAA,cAAoBmoE,GAAAA,EAAU,CAAE3nE,IAAKwhT,EAAYjI,eAAgByL,KACrExlT,EAAAA,cAAoB,QAAS,CAAEM,UAAW,oBAAsB4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKq3S,8BAA+BvqR,EAAAA,EAAS9sB,EAAAA,EAAKq3S,mCAC/I1mT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKs3S,oBAAqBxqR,EAAAA,EAAS9sB,EAAAA,EAAKs3S,uBACjI3mT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAKyhT,EAAWj/S,aAAcyiT,EAAcjkS,IAAK,EAAGxX,YAAak5S,EAAIjnR,iBAAiB5sB,EAAAA,EAAKu3S,SAAUzqR,EAAAA,EAAS9sB,EAAAA,EAAKu3S,aACzJ5mT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,eAAiB4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKw3S,4BAA6B1qR,EAAAA,EAAS9sB,EAAAA,EAAKw3S,iCACtI7mT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B,QACpEN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBqpE,GAAAA,GAAc,CAAE7oE,IAAK0hT,EAAWl/S,aAAc0iT,EAAc1gT,KAAMkkO,EAAAA,GAAO1iM,cAAeA,EAAAA,OACpHxmC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKy3S,qBAAsB3qR,EAAAA,EAAS9sB,EAAAA,EAAKy3S,wBAClI9mT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAK2hT,EAAYn/S,aAAc2iT,EAAenkS,IAAK,EAAGxX,YAAak5S,EAAIjnR,iBAAiB5sB,EAAAA,EAAKu3S,SAAUzqR,EAAAA,EAAS9sB,EAAAA,EAAKu3S,aAC3J5mT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,eAAiB4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK03S,yBAA0B5qR,EAAAA,EAAS9sB,EAAAA,EAAK03S,8BACnI/mT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B,QACpEN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBqpE,GAAAA,GAAc,CAAE7oE,IAAK4hT,EAAYp/S,aAAc4iT,EAAe5gT,KAAMkkO,EAAAA,GAAO1iM,cAAeA,EAAAA,OACtHxmC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK23S,wBAAyB7qR,EAAAA,EAAS9sB,EAAAA,EAAK23S,2BACrIhnT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAExmB,IAAK6hT,EAAWr/S,aAAc6iT,EAAc7gT,KAAM0+S,GAAUh3S,KAAI,SAAUC,GAAK,OAAQ2U,GAASA,GAAS,CAAC,EAAG3U,GAAI,CAAEnC,KAAM04S,EAAIjnR,iBAAiBtvB,EAAEg3S,QAASh3S,EAAEnC,OAAW,IAAI8H,UAAW,OAAQ1D,YAAa,OAAQ43B,cAAeA,EAAAA,GAAegtP,YAAa6xB,GAAqB75D,WAAY85D,OAC1UtlT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK43S,0BAA2B9qR,EAAAA,EAAS9sB,EAAAA,EAAK43S,6BACvIjnT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAExmB,IAAK8hT,EAAat/S,aAAc+iT,EAAgB/gT,KAAMggT,GAAgBt4S,KAAI,SAAUC,GAAK,OAAQ2U,GAASA,GAAS,CAAC,EAAG3U,GAAI,CAAEnC,KAAM04S,EAAIjnR,iBAAiBtvB,EAAEg3S,QAASh3S,EAAEnC,OAAW,IAAI8H,UAAW,OAAQ1D,YAAa,QAAS43B,cAAeA,EAAAA,GAAegtP,YAAa6xB,GAAqB75D,WAAY85D,OACrVtlT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK63S,0BAA2B/qR,EAAAA,EAAS9sB,EAAAA,EAAK63S,6BACvIlnT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAK+hT,EAAav/S,aAAcijT,EAAgBzkS,IAAK,MACnGxhB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK83S,yBAA0BhrR,EAAAA,EAAS9sB,EAAAA,EAAK83S,4BACtInnT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoB4oE,EAAAA,EAAa,CAAEpoE,IAAKqM,EAAiB7J,aAAcgjT,MAC/EhmT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK+3S,0BAA2BjrR,EAAAA,EAAS9sB,EAAAA,EAAK+3S,6BACvIpnT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAKgiT,EAAax/S,aAAckjT,EAAgB1kS,IAAK,MACnGxhB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKg4S,0BAA2BlrR,EAAAA,EAAS9sB,EAAAA,EAAKg4S,6BACvIrnT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoB4oE,EAAAA,EAAa,CAAEpoE,IAAKuC,EAAaC,aAAcmjT,MAC3EnmT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKi4S,0BAA2BnrR,EAAAA,EAAS9sB,EAAAA,EAAKi4S,6BACvItnT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAExmB,IAAKiiT,EAAaz/S,aAAcojT,EAAgB5/Q,cAAeA,EAAAA,GAAexhC,KAAMqhT,EAAAA,GAAkB/zS,UAAW,OAAQ1D,YAAa,YAClL5O,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gCACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKk4S,iBAAkBprR,EAAAA,EAAS9sB,EAAAA,EAAKk4S,oBAC9HvnT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBsN,GAAAA,EAAS,CAAE9M,IAAKX,EAAImD,aAAcsjT,MAC9DtmT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gCACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKm4S,uBAAwBrrR,EAAAA,EAAS9sB,EAAAA,EAAKm4S,0BACpIxnT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBsN,GAAAA,EAAS,CAAE9M,IAAKF,EAAW0C,aAAcujT,SAC7EvM,EAAgB,CAAEh6S,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAE4E,WAAY,UAAWuxB,IAAK,OAAQj2B,QAASuhT,GAAUH,EAAIjnR,iBAAiB5sB,EAAAA,EAAKo4S,mBAAoBtrR,EAAAA,EAAS9sB,EAAAA,EAAKo4S,sBAAyBznT,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEE,QAAS6I,EAAMo3B,SAAUhK,IAAK,UAAYmrR,EAAIjnR,iBAAiB5sB,EAAAA,EAAKq4S,qBAAsBvrR,EAAAA,EAAS9sB,EAAAA,EAAKq4S,yBACtU,OAAQ1nT,EAAAA,cAAoBo2P,GAAAA,EAAQ,CAAE91P,UAAW,+CAAgDmM,MAAOy2S,EAAIjnR,iBAAiB5sB,EAAAA,EAAKk0S,eAAgBpnR,EAAAA,EAAS9sB,EAAAA,EAAKk0S,iBAAkBhtS,QAAS5L,EAAMo3B,SAAUhK,IAAK,SAAU53B,MAAO,CAAE05S,WAAY,QAAU/yS,MAAO,IAAKgB,OAAQ,IAAKqlP,OAAO,EAAMq+B,eAAgB,WAAc,OAAO,IAAM,EAAGG,eAAgB,WAAc,OAAO,IAAM,EAAGj9Q,WAAW,GAClY23C,EACArmD,EAAAA,cAAoB4sB,MAAM5sB,EAAOkvE,GAAc,CAAC8/M,GAAAA,EAAkB,CAAEtE,OAAQ,UAAYsvB,GAAe,IAC/G,qBCtPI14R,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAQIwuR,GAAmB,CACnBtgS,KAAM,EACNoiD,QAAS,EACT3iE,MAAO,KACPo7S,UAAW,GACXp6S,OAAQ,KACRs6S,WAAY,GACZh8S,SAAU,KACVoQ,UAAW,GACX+rS,YAAa,KACbqF,YAAa,KACb/6S,qBAAiBlN,EACjB6iT,YAAa,KACbz/S,iBAAapD,EACb8iT,YAAa,KACboF,iBAAiB,EACjBhoT,GAAI,GACJS,UAAW,GACXu9K,QAAS,GACTiqI,iBAAkB,KAClBC,gBAAiB,KACjBC,WAAY,EACZC,cAAe,EACfC,iBAAkB,QAKlBC,GAAsB,CACtBhsS,KAAM,CAAE,cAAe,GAAI,eAAgB,QAC3C8hF,OAAQ,CAAE,cAAe,OAAQ,eAAgB,QACjD33F,MAAO,CAAE,cAAe,OAAQ,eAAgB,IAChD,GAAI,CAAC,GAEL8hT,GAAa,SAAU17S,GAEvB,IADA,IAAIuuG,EAAQ,GACHxwG,EAAI,EAAGA,EAAIiC,EAAI5E,OAAQ2C,IAAK,CACjC,IAAI+kB,EAAQ/kB,EAAIiC,EAAI5F,MAChB2sB,EAAMjE,EAAQ9iB,EAAI5F,MACtBm0G,EAAMxtF,KAAK/gB,EAAIA,IAAI2O,MAAMmU,EAAOiE,GACpC,CACA,OAAOwnF,CACX,EAyCIotM,GAAuB,SAAUz2M,GACjC,IAAI02M,GAAW,EACXC,GAAS,EAab,OAZA32M,EAAMvrD,QAAQjrC,SAAQ,SAAUoM,GAC5BA,EAAI6+B,QAAQjrC,SAAQ,SAAU3N,GAC1B,IAAIw0L,EAAwB,iBAAnBx0L,EAAKxH,KAAK1D,KACfy/L,EAAwB,eAAnBv0L,EAAKxH,KAAK1D,KACf0/L,IAAOx0L,EAAKkpJ,MAAMu0G,QAClBo9C,GAAW,IAEVrmH,IAAOx0L,EAAKkpJ,MAAM92J,IAAQmiM,IAAOv0L,EAAKkpJ,MAAMroG,WAC7Ci6P,GAAS,EAEjB,GACJ,IACOD,EAAW,QAAWC,EAAS,KAAO,MACjD,EAIIC,GAAmB,SAAUhpT,GAC7B,IAAI0E,EAAII,EAAIK,EACRs2G,EAAQsmM,GAAc/hT,GACtBovK,EAAOpvK,EAAM+xH,UAAU+mC,MACvB1mD,EAAQqJ,EAAM3sG,QAASg9F,EAAAA,EAAAA,IAAWsjE,GAAM,SAAU1hK,GAAK,MAAiC,UAA1BA,EAAEjH,KAAKyvJ,KAAK0gD,SAAuB,IAAK,KAC1G,IAAKxkG,EACD,OAAO+1M,GAEX,IAAIc,GAAcn9M,EAAAA,EAAAA,IAAWsjE,GAAM,SAAU1hK,GAAK,MAAuB,kBAAhBA,EAAEjH,KAAK1D,IAA0B,IACtFmmT,EAAa,GACbC,EAAgB,CAAC,EACjBC,EAAe,CAAC,EAChBH,IACAG,EAAejtI,GAAW8sI,EAAYn8M,KAAKqqD,MAAMx2J,OACjDsoT,EAAYn8M,KAAKjmD,QAAQjrC,SAAQ,SAAUkxF,GACvC,GAAuB,2BAAnBA,EAAKrmG,KAAK1D,KAAmC,CAC7C,IAAIsmT,GAAK5rI,EAAAA,EAAAA,KAAgB3wE,GAEzBo8M,EAA4B,WAD5BA,GAAa3rI,EAAAA,EAAAA,KAAe8rI,IACU,GAAKH,EAC3CC,EAAgBhtI,GAAWrvE,EAAKqqD,MAAMx2J,MAC1C,CACJ,KAEJ,IAAI4qG,EAAS4wE,IAAwC,QAA3Bz3K,EAAK0tG,EAAMtF,KAAKqqD,aAA0B,IAAPzyJ,OAAgB,EAASA,EAAG/D,QAAU,IAC/FuM,EAAMsoM,EAAAA,IAAS99K,IAAI06E,EAAMtF,MACzB/C,EAAuC,SAAhCq/M,EAAa,gBAA8D,SAAjCA,EAAa,gBAA8B,SAC3D,SAAjCA,EAAa,gBAA6B,OACN,SAAhCA,EAAa,eAA4B,QAAU,KACvDE,EAxFe,SAAUl3M,EAAOllG,GACpC,IAAIs7S,EAAa,EACbC,EAAgB,EAChBhtM,EAAQmtM,GAAW17S,GACvBuuG,EAAM7/F,SAAQ,SAAUoM,GACpB,IAAIshS,GAAc,EAClBthS,EAAIpM,SAAQ,SAAUyjM,GAClB,IAAIpxM,EAAOmkG,EAAM8pD,OAAOmjD,GACpBpxM,GAA2B,iBAAnBA,EAAKxH,KAAK1D,OAClBumT,GAAc,EAEtB,IACIA,GACAd,GAER,IACA,IAAK,IAAIvgS,EAAM,EAAGA,EAAM/a,EAAI5F,MAAO2gB,IAAO,CAEtC,IADA,IAAIqhS,GAAc,EACTthS,EAAM,EAAGA,EAAM9a,EAAI5E,OAAQ0f,IAAO,CACvC,IAAIq3L,EAAU5jG,EAAMzzF,IAAQyzF,EAAMzzF,GAAKC,GACnCha,EAA0B,kBAAZoxM,GAAwBjtG,EAAM8pD,OAAOmjD,GACnDpxM,GAA2B,iBAAnBA,EAAKxH,KAAK1D,OAClBumT,GAAc,EAEtB,CACIA,GACAb,GAER,CACA,MAAO,CAAE5gS,KAAM2gS,EAAYv+O,QAASw+O,EACxC,CA0DsBc,CAAiBn3M,EAAMtF,KAAM5/F,GAC3Cs8S,EA1DgB,SAAUp3M,GAC9B,IAAIzhG,EAAU,IAAIm9L,IAMlB,OALA17F,EAAMvrD,QAAQjrC,SAAQ,SAAUoM,GAC5BA,EAAI6+B,QAAQjrC,SAAQ,SAAU3N,GAC1B0C,EAAQ+5B,IAAIyxI,GAAWluK,EAAKkpJ,MAAMx2J,OAAOgQ,SAAW,GACxD,GACJ,IACwB,IAAjBA,EAAQnK,KAAaye,MAAMklC,KAAKx5C,GAAS,GAAK,EACzD,CAkDuB84S,CAAkBr3M,EAAMtF,MAC3C,OAAOhrF,GAASA,GAASA,GAASA,GAASA,GAASA,GAAS,CAAC,EAAGqmS,IAAmB,CAAEl+O,QAAS/8D,EAAI5F,MAAOugB,KAAM3a,EAAI5E,SAAW4sJ,GAAS9iD,EAAMtF,KAAM,UAAYm8M,GAAe,IAAIvuR,KAAK0uR,EAAa9hT,OAAS,IAAM4tJ,GAAS+zJ,EAAYn8M,KAAM,SAAW,CAAC,GAAKooD,GAAS9iD,EAAMtF,KAAM,WAAY,CAAE91F,UAAWu0F,EAAO,eAAiB,GAAI3kG,SAAUmjG,GAAO,KAAMg5M,YAAayG,EAAezoO,WAAWyoO,GAAgB,KAAMpB,YAAa78M,EAAO,kBAAoBxqB,WAAWwqB,EAAO,mBAAqB,KAAMl+F,gBAAiBk+F,EAAO,oBAAqBy3M,YAAaz3M,EAAO,gBAAkBxqB,WAAWwqB,EAAO,iBAAmB,KAAMhoG,YAAagoG,EAAO,gBAAiB03M,YAAa13M,EAAO,iBAAmB,KAAM88M,gBAA+C,aAA9B98M,EAAO,mBAAmC8yE,QAAS6qI,QAAc/oT,EAAWmoT,iBAAkBa,EAAc,eAAiB,GAAIZ,gBAAiBY,EAAc,iBAAmB,KAAMX,WAAYc,EAAYzhS,KAAM4gS,cAAea,EAAYr/O,QAASy+O,iBAAmBY,EAAYzhS,MAAQyhS,EAAYr/O,QAAW4+O,GAAqBz2M,EAAMtF,MAAQ,OAAQzsG,IAAiC,QAA3ByE,EAAKstG,EAAMtF,KAAKqqD,aAA0B,IAAPryJ,OAAgB,EAASA,EAAGzE,KAAO,GAAIS,WAAwC,QAA3BqE,EAAKitG,EAAMtF,KAAKqqD,aAA0B,IAAPhyJ,OAAgB,EAASA,EAAGy+K,QAAU,IACluC,EACI2gC,GAAW,SAAUnyG,GACrB,IACInkG,EADUmkG,EAAMgkD,UACDA,UACnB,MAAO,CAAEtpD,KAAM7+F,EAAM87F,IAAKqI,EAAMvrD,QAAQrgD,KAAOyH,EAAKinJ,SACxD,EACIw0J,GAAgB,SAAU1pT,EAAOm8M,EAAU/pG,EAAOu3M,EAAO55J,GACzD,IACIsvD,EAAUlD,EADHoI,GAASnyG,GACUrI,IAE9B,IADW/pG,EAAMstG,IAAI4uD,OAAOmjD,GAExB,OAAOr/M,EAMX,IAJA,IAAIgjI,EAAMhjI,EAAMstG,IAAIj4E,QAAQgqL,GACxBjoC,EAAM,IAAIijC,EAAAA,IAAcr3E,EAAKA,GAC7B4mL,EAAQ5pT,EAAM2mG,GAAG0wE,aAAaD,GAC9ByyI,EAAc7pT,EAAMotB,MAAMw8R,GACrBz8S,EAAI,EAAGA,EAAIw8S,EAAOx8S,IACvB4iJ,EAAQ85J,GAAa,SAAUljN,GAC3BkjN,EAAcA,EAAYz8R,MAAMu5E,EACpC,IAEJ,OAAOkjN,CACX,EACIC,GAAmB,SAAU9pT,EAAOm8M,EAAU4tG,EAAUh6J,GAExD,IADA,IAAI85J,EAAc7pT,EACTmN,EAAI,EAAGA,EAAI48S,EAAU58S,IAAK,CAC/B,IAAIilG,EAAQy3M,EAAYv8M,IAAI4uD,OAAOigD,GACnC,GAAI/pG,EAAO,CACP,IACIitG,EAAUlD,EADHoI,GAASnyG,GACUrI,IAC1Bi5B,EAAM6mL,EAAYv8M,IAAIj4E,QAAQgqL,GAC9BttF,EAAY,IAAIsoF,EAAAA,IAAcr3E,EAAKA,GACnC4mL,EAAQC,EAAYljN,GAAG0wE,aAAatlD,GAExCg+B,EADA85J,EAAcA,EAAYz8R,MAAMw8R,IACX,SAAUjjN,GAC3BkjN,EAAcA,EAAYz8R,MAAMu5E,EACpC,GACJ,CACJ,CACA,OAAOkjN,CACX,EA6DIG,GAAc,SAAUhqT,EAAOiO,EAAM87F,EAAKtjG,EAAM0wJ,GAChD,GAAIlpJ,EAAKxH,KAAK1D,OAAS0D,EAAK1D,MAAQ6M,OAAOC,KAAKsnJ,GAAOroJ,OAAS,EAAG,CAC/D,IAAI63F,EAAK3mG,EAAM2mG,GAAG4tE,cAAcxqE,EAAKtjG,EAAMqb,GAASA,GAAS,CAAC,EAAG7T,EAAKkpJ,OAAQA,IAC9E,OAAOn3J,EAAMotB,MAAMu5E,EACvB,CACA,OAAO3mG,CACX,EAMIiqT,GAAsB,SAAUjqT,EAAOwF,EAAM22M,GAC7C,IAAI/pG,EAAQpyG,EAAMstG,IAAI4uD,OAAOigD,GACzBjvM,EAAMklG,GAASojG,EAAAA,IAAS99K,IAAI06E,GAChC,IAAKA,IAAUllG,EACX,OAAOlN,EAEX,IAAIy7G,EAAQmtM,GAAW17S,GACnBwC,EAAW1P,EACX0E,EAAK1E,EAAMw8D,OAAO06F,MAAO8hD,EAAet0M,EAAGs0M,aAAcF,EAAap0M,EAAGo0M,WACzEz4M,EAAKuzB,QAAO,IAAI1pB,MAAOgV,WACvB+rG,EAAM,GAYNn8D,EAAU,SAAU9mC,EAAKC,EAAKiiS,EAAWC,GACzC,IAAIxgT,EAAS,GACb,GAAIwgT,EACA,IAAK,IAAIhpO,EAAI,EAAGA,EAAIn5D,EAAKm5D,IACjB8pC,EAAI9pC,IAAM8pC,EAAI9pC,GAAGl5D,IACjBte,EAAOskB,KAAKg9F,EAAI9pC,GAAGl5D,IAI/B,GAAIiiS,EACA,IAAK,IAAIlwS,EAAI,EAAGA,EAAIiO,EAAKjO,IACjBixG,EAAIjjG,IAAQijG,EAAIjjG,GAAKhO,IACrBrQ,EAAOskB,KAAKg9F,EAAIjjG,GAAKhO,IAIjC,OAAOrQ,EAAOkhD,KAAK,IACvB,EAgCA,OA/BA4wD,EAAM7/F,SAAQ,SAAUoM,EAAKopM,GACzBppM,EAAIpM,SAAQ,SAAUyjM,EAASgS,GAC3B,IAAIpjN,EAAOmkG,EAAM8pD,OAAOmjD,GACxB,GAAIpxM,EAAM,CACN,IAAIi8S,EAAY74F,EAAY7rN,EAAKijT,cAC7B0B,EAAY/4F,EAAW5rN,EAAKgjT,WAC5BrxJ,EAAQr1I,GAAS,CAAC,EAAG7T,EAAKkpJ,QAnDhC,SAAUlpJ,EAAMkpJ,GACtB,uBAAuBz8H,KAAKzsB,EAAKkpJ,MAAM92J,IAAM,MAC7C82J,EAAM92J,GAAK,KAEnB,CAgDgB+pT,CAAQn8S,EAAMkpJ,GACdA,EAAMroG,QAAU,KAChBqoG,EAAMu0G,MAAQ,KACVy+C,GAAaD,GACiB,UAA1B1kT,EAAKkjT,mBACLvxJ,EAAMu0G,MAAQy+C,EAAY,MAAQ,OAER,OAA1B3kT,EAAKkjT,mBACLvxJ,EAAM92J,GA5Cb,SAAU2nB,EAAKC,GACxB,IAAIte,EAAS,QAAQwH,OAAO6W,GAAK7W,OAAO8W,EAAK,KAAK9W,OAAO9Q,GAQzD,OAPK4qH,EAAIjjG,IACLijG,EAAIh9F,KAAK,IAERg9F,EAAIjjG,GAAKC,IACVgjG,EAAIjjG,GAAKiG,KAAK,IAElBg9F,EAAIjjG,GAAKC,GAAOte,EACTA,CACX,CAkC+B2iQ,CAAOl7C,EAAUC,IACxBA,EAAY,GAAKD,EAAW,KAC5Bj6D,EAAMroG,QAAUA,EAAQsiK,EAAUC,EAAW64F,EAAWC,IAAc,OAG9Ez6S,EAAWs6S,GAAYt6S,EAAUzB,EAAMkuM,EAAWkD,EAAU,EAAGrG,EAAc7hD,KAG/C,OAA1B3xJ,EAAKkjT,mBACLvxJ,EAAMroG,QAAUA,EAAQsiK,EAAUC,EAAW7rN,EAAKijT,cAAgB,EAAGjjT,EAAKgjT,WAAa,IAAM,MAEjG94S,EAAWs6S,GAAYt6S,EAAUzB,EAAMkuM,EAAWkD,EAAU,EAAGvG,EAAY3hD,GAEnF,CACJ,GACJ,IACOznJ,CACX,EAUI26S,GAAsB,SAAUxjQ,EAAS2V,GAEzC,OADU4hH,EAAAA,EAAAA,KAAa,MAAQv3H,EAAU,OAAQ2V,GACtC3V,QAAQ8lD,WAAW9lD,OAClC,EACIi3H,GAAgB,SAAUt4K,EAAMg3D,GAChC,GAAKh3D,EAAK64K,QAAV,CAGA,IAAIisI,EAAY,CAAEjsI,QAAS,GAAI19K,MAAO,0BAClC6E,EAAK8iT,mBACLgC,EAAYp6F,GAAao6F,EAAW,aAAc9kT,EAAK8iT,mBAEvD9iT,EAAK+iT,kBACL+B,EAAYp6F,GAAao6F,EAAW,eAAgB9kT,EAAK+iT,kBAE7D,IAAIgC,EAAiBF,GAAoB7kT,EAAK64K,QAAS7hH,GAEvD,OADmB+tP,GAAkB/tP,EAAO06F,MAAMywD,uBAAuBtoD,cAAcirJ,EAAWC,SAAoBpqT,CATtH,CAWJ,EACIgyS,GAAa,SAAUqY,GACvB,OAAOA,EAAY79M,YAAmD,2BAArC69M,EAAY79M,WAAWlmG,KAAK1D,IACjE,EAgCI0nT,GAAgB,SAAUzqT,EAAOwF,EAAM22M,EAAUuuG,EAAcC,GAC/D,IAAIhhT,EAAS,CACT3J,MAAOA,EACP+pG,IAAKoyG,GAET,GAAKuuG,IAAiBllT,EAAKoB,WAAYpB,EAAK64K,QA0BnCqsI,IAAiBllT,EAAKoB,UAAYpB,EAAK64K,UAAa74K,EAAK64K,SAAW8zH,GAAWuY,EAAa59M,QACjG9sG,EA9Fe,SAAUA,EAAOwqT,EAAa33F,EAAYtnH,GAC7D,IAAI4rD,EAAQr1I,GAAS,CAAC,EAAG0oS,EAAYrzJ,OAMrC,OALAA,EAAQ+4D,GAAa/4D,EAAO,cAAe,IAC3CA,EAAQ+4D,GAAa/4D,EAAO,eAAgB,IAC5CvnJ,OAAOC,KAAK07F,GAAU,CAAC,GAAG3vF,SAAQ,SAAU8d,GACxCy9H,EAAQ+4D,GAAa/4D,EAAOz9H,GAAI6xE,GAAU,CAAC,GAAG7xE,IAAM,GACxD,IACO15B,EAAMotB,MAAMptB,EAAM2mG,GAAG4tE,cAAcs+C,EAAY,KAAM17D,GAChE,CAsFgByzJ,CAAiB5qT,EAAO0qT,EAAa59M,KAAM69M,EAAiBnlT,EAAKoB,UAAY+hT,GAAoBnjT,EAAKoB,WAC9G5G,EAhEc,SAAUA,EAAOwqT,EAAa33F,EAAYrtN,GAC5D,IACIqlT,EADA3hR,EAAYlpC,EAEZ8qT,EAAiBj4F,EAAa,EAC9Bk4F,EAAUl4F,EAAa,EACvBr2J,EAAStzB,EAAUszB,OACvB,GAAI21O,GAAWqY,GAEX,GADAK,EAAcL,EAAY79M,WACtBnnG,EAAK64K,QAAS,CACd,IAAIksI,EAAiBF,GAAoB7kT,EAAK64K,QAAS7hH,GAGvD,GADAquP,GADA3hR,EAAYA,EAAU9b,MAAM8b,EAAUy9D,GAAGgsE,YAAYm4I,EAAgBA,EAAiBD,EAAYhkQ,QAAQrgD,KAAM+jT,KACxFj9M,IAAI4uD,OAAO6uJ,GAClB,CACb,IAAIT,EAAYxoS,GAAS,CAAC,EAAG+oS,EAAY1zJ,OACzCmzJ,EAAYp6F,GAAao6F,EAAW,aAAc9kT,EAAK8iT,kBAAoB,IAC3EgC,EAAYp6F,GAAao6F,EAAW,eAAgB9kT,EAAK+iT,iBAAmB,IAC5Er/Q,EAAYA,EAAU9b,MAAM8b,EAAUy9D,GAAG8tE,iBAAiBs2I,EAAS,QAAST,EAAU3pT,OAC1F,CACJ,MAEIuoC,EAAYA,EAAU9b,MAAM8b,EAAUy9D,GAAGksE,YAAYi4I,EAAgBA,EAAiBD,EAAYhkQ,QAAQrgD,YAI9GqkT,EAAc/sI,GAAct4K,EAAMg3D,MAE9BtzB,EAAYA,EAAU9b,MAAM8b,EAAUy9D,GAAGgsE,YAAYo4I,EAASA,EAASF,KAG/E,OAAO3hR,CACX,CAkCgB8hR,CAAgBhrT,EAAO0qT,EAAa59M,KAAM69M,EAAiBnlT,GACnEmE,EAAS,CAAE3J,MAAOA,EAAO+pG,IAAK4gN,IAM9BhhT,GAJK+gT,GAAkBllT,EAAKoB,UAAYpB,EAAK64K,QAIpC,CAAEr+K,MAAOA,EAAO+pG,IAAKoyG,GAHrB,CAAEn8M,MAAOA,EAAO8sG,KAAM49M,EAAa59M,KAAM/C,IAAK/pG,EAAM+xH,UAAU+mC,MAAM9oI,MAAM06R,EAAa7mL,OAAS,OAhCvD,CAClD,IAAIonL,EAAiB,CAAE74M,MAAO,GAAIzxG,MAAO,kBACrCD,EAAW,GACXkG,EAAWpB,EAAKoB,SAChBskT,EAActkT,GAAY+hT,GAAoB/hT,GAC9CskT,GACAt7S,OAAOC,KAAKq7S,GAAatvS,SAAQ,SAAUmiK,GACvCktI,EAAiB/6F,GAAa+6F,EAAgBltI,EAAWmtI,EAAYntI,IAAc,GACvF,IAEsB,kBAAfv4K,EAAK8B,OAAyC,MAAnB9B,EAAKk9S,YACvCuI,EAAiB/6F,GAAa+6F,EAAgB,QAASzlT,EAAK8B,MAAQ9B,EAAKk9S,YAE7E,IAAImI,EAAc/sI,GAAct4K,EAAMxF,EAAMw8D,QACxCquP,GACAnqT,EAASutB,KAAK48R,GAElB,IAAIz4M,EAAQpyG,EAAMstG,IAAI4uD,OAAOigD,GAC7Bz7M,EAASutB,KAAKmkF,GACd,IAAI+4M,EAAiBnrT,EAAMw8D,OAAO06F,MAAMwwD,cAAcroD,cAAc4rJ,EAAgBvqT,GACpF,GAAIyqT,EAAgB,CAChB,IAAIxkN,EAAK3mG,EAAM2mG,GAAGgsE,YAAYwpC,EAAUA,EAAW/pG,EAAMvrD,QAAQrgD,KAAM2kT,GAEvExhT,EAAS,CAAE3J,MADXA,EAAQA,EAAMotB,MAAMu5E,GACKoD,IAAKoyG,EAClC,CACJ,CAYA,IAAIrpL,EAAU43R,GAAgB/gT,EAAO3J,MAAMstG,IAAI4uD,OAAOyuJ,GACtD,GAAI73R,EAAS,CACT,IAAIqkI,OAAQ,EACc,kBAAf3xJ,EAAK8B,OAAyC,MAAnB9B,EAAKk9S,UACvCvrJ,EAAQ+4D,GAAap9L,EAAQqkI,MAAO,QAAS3xJ,EAAK8B,MAAQ9B,EAAKk9S,WAEvC,MAAnBl9S,EAAKk9S,WAAqB,IAAIhoR,KAAKyhJ,GAAWrpJ,EAAQqkI,MAAMx2J,OAAS,IAAI2G,OAAS,MACvF6vJ,EAAQ+4D,GAAap9L,EAAQqkI,MAAO,QAAS,KAE7CA,IACAxtJ,EAAO3J,MAAQ2J,EAAO3J,MAAMotB,MAAMzjB,EAAO3J,MAAM2mG,GAAG4tE,cAAco2I,EAAiB,KAAMxzJ,IAE/F,CACA,OAAOxtJ,CACX,EAIIyhT,GAAiB,SAAUprT,EAAOwF,GAClC,IAAIszJ,EAAQ94J,EAAM+xH,UAAU+mC,MACxB1mD,GAAQtG,EAAAA,EAAAA,IAAWgtD,GAAO,SAAUprJ,GAAK,MAAiC,UAA1BA,EAAEjH,KAAKyvJ,KAAK0gD,SAAuB,IACvF,GAAKxkG,EAAL,CAGA,IAAI+pG,EAAWrjD,EAAM9oI,MAAMoiF,EAAMyxB,OAAS,EACtC36F,EAlRU,SAAUlpC,EAAOm8M,EAAUt0L,EAAMoiD,GAC/C,IAAI/gC,EAAYlpC,EACZoyG,EAAQlpE,EAAUokE,IAAI4uD,OAAOigD,GACjC,IAAK/pG,EACD,OAAOlpE,EAEX,IAAIh8B,EAAMsoM,EAAAA,IAAS99K,IAAI06E,GACvB,OAAIllG,EAAI5F,QAAU2iE,GAAW/8D,EAAI5E,SAAWuf,EACjCqhB,GAEP+gC,EAAU/8D,EAAI5F,MACd4hC,EAAYwgR,GAAcxgR,EAAWizK,EAAU/pG,EAAOnoC,EAAU/8D,EAAI5F,MAAOu1N,EAAAA,KAEtE5yJ,EAAU/8D,EAAI5F,QACnB4hC,EAAY4gR,GAAiB5gR,EAAWizK,EAAUjvM,EAAI5F,MAAQ2iE,EAASy1O,MAE3EttM,EAAQlpE,EAAUokE,IAAI4uD,OAAOigD,KAKzBt0L,GADJ3a,EAAMsoM,EAAAA,IAAS99K,IAAI06E,IACJ9pG,OACX4gC,EAAYwgR,GAAcxgR,EAAWizK,EAAU/pG,EAAOvqF,EAAO3a,EAAI5E,OAAQ+zN,EAAAA,KAEpEx0M,EAAO3a,EAAI5E,SAChB4gC,EAAY4gR,GAAiB5gR,EAAWizK,EAAUjvM,EAAI5E,OAASuf,EAAM83R,KAElEz2Q,GATIA,EAUf,CAsPoBmiR,CAAYrrT,EAAOm8M,EAAU32M,EAAKqiB,KAAMriB,EAAKykE,SAC7D,GAAK/gC,EAAL,CAGA,IAAIo3I,EAAcp3I,EAAUy9D,GAC5Bw7M,GAAWj5Q,GAAWttB,SAAQ,SAAU3N,GACpC,IAAIkpJ,EAAQr1I,GAAS,CAAC,EAAG7T,EAAK6+F,KAAKqqD,OACnCA,EAAQ+4D,GAAa/4D,EAAO,UAAuC,kBAArB3xJ,EAAKu9S,YAA2Bv9S,EAAKu9S,YAAc,KAAO,IACxGziI,EAAY/L,cAActmK,EAAK87F,IAAK,KAAMotD,EAC9C,IAEAjuH,EAhQiB,SAAUlpC,EAAOwF,EAAM22M,GACxC,IAAI/pG,EAAQpyG,EAAMstG,IAAI4uD,OAAOigD,GAC7B,IAAK/pG,EACD,OAAOpyG,EAEX,IAAIm3J,EAAQr1I,GAAS,CAAC,EAAGswF,EAAM+kD,OAC3Bm0J,EAAgC,OAAf9lT,EAAK8B,QAAsC,MAAnB9B,EAAKk9S,YAAuBl9S,EAAK64K,UAAY74K,EAAKoB,UAC/FuwJ,EAAQ+4D,GAAa/4D,EAAO,QAASm0J,EAAiB9lT,EAAK8B,MAAQ9B,EAAKk9S,UAAY,IACpFvrJ,EAAQ+4D,GAAa/4D,EAAO,SAA0B,OAAhB3xJ,EAAK8C,OAAkB9C,EAAK8C,OAAS9C,EAAKo9S,WAAa,IAC7FzrJ,EAAQ+4D,GAAa/4D,EAAO,aAAc3xJ,EAAKwR,WAAa,IAC5DmgJ,EAAQ+4D,GAAa/4D,EAAO,mBAAoB3xJ,EAAK6H,iBAAmB,IACxE8pJ,EAAQ+4D,GAAa/4D,EAAO,eAAgB3xJ,EAAKw9S,YAAcx9S,EAAKw9S,YAAc,KAAO,IACzF7rJ,EAAQ+4D,GAAa/4D,EAAO,eAAgB3xJ,EAAKy9S,aAAe,IAChE9rJ,EAAQ+4D,GAAa/4D,EAAO,eAAgB3xJ,EAAKjC,aAAe,IAChE4zJ,EAAQ+4D,GAAa/4D,EAAO,iBAAuC,OAArB3xJ,EAAK4iT,YAAuB5iT,EAAK4iT,YAAc,KAAO,IAEhGjxJ,EADqB,OAArB3xJ,EAAK4iT,YACGl4F,GAAa/4D,EAAO,kBAAmB,SAGvC+4D,GAAa/4D,EAAO,kBAAmB3xJ,EAAK6iT,gBAAkB,WAAa,IAEvF,IAAIkD,EAAY5C,GAAoBnjT,EAAKoB,UAAY,KAAO,CAAC,EAC7DgJ,OAAOC,KAAK07S,GAAW3vS,SAAQ,SAAUjb,GACrCw2J,EAAQ+4D,GAAa/4D,EAAOx2J,EAAO4qT,EAAU5qT,GACjD,IACAw2J,EAAM92J,GAAKmF,EAAKnF,IAAM,KACtB82J,EAAMysB,MAAQp+K,EAAK1E,WAAa,KAChC,IAAI6lG,EAAK3mG,EAAM2mG,GAAG4tE,cAAc4nC,EAAU,KAAMhlD,GAEhD,OADQn3J,EAAMotB,MAAMu5E,EAExB,CAkOgB6kN,CADZtiR,EAAYA,EAAU9b,MAAMkzJ,GACU96K,EAAM22M,GAC5CjzK,EAAY+gR,GAAoB/gR,EAAW1jC,EAAM22M,GACjD,IAAI8sG,GAAcn9M,EAAAA,EAAAA,IAAWgtD,GAAO,SAAUprJ,GAAK,MAAuB,kBAAhBA,EAAEjH,KAAK1D,IAA0B,IACvF0oT,EAAiB3yJ,EAAM9oI,OAAuB,OAAhBi5R,QAAwC,IAAhBA,OAAyB,EAASA,EAAYplL,QAAU,GAAK,EACnHl6H,EAAS8gT,GAAcvhR,EAAW1jC,EAAM22M,EAAU8sG,EAAawC,GACnEviR,EAAYv/B,EAAO3J,MACnB,IAAImqD,EAAOxgD,EAAOogG,IACd+C,EAAO5jE,EAAUokE,IAAI4uD,OAAOvyJ,EAAOogG,KACvC,GAAK+C,EAAL,CAGA,IAAI1hC,EAAKjhB,GAAQ8+P,GAAe72M,GAAOtF,KAAKjmD,QAAQrgD,KAChDmgG,EAAK3mG,EAAM2mG,GAAGgsE,YAAYxoH,EAAMihB,EAAI0hC,GACpCypE,EAAQd,EAAAA,IAAUc,MAAMzpE,GACxBilB,EAAYmkD,EAAAA,IAAcpiJ,OAAO6yE,EAAG2G,IAAKnjD,EAAOosH,EAAMnrG,GAAK,GAE/D,OADAu7B,EAAG0wE,aAAatlD,GACTprB,CANP,CAlBA,CALA,CA8BJ,EChfI7kF,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EACI6lE,GAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAgBWuhQ,GAAkB,SAAUvgT,GACnC,IAAIwjC,EAAOxjC,EAAMwjC,KAAMq4M,EAAcv/N,GAAOtc,EAAO,CAAC,SAChDu4S,GAAM53B,EAAAA,EAAAA,KACNpnR,EAAKlE,EAAAA,UAAe,GAAQ+gT,EAAa78S,EAAG,GAAI++S,EAAgB/+S,EAAG,GACnEi/S,EAAU9rR,QAAQ8W,IAAQm9D,EAAAA,EAAAA,IAAWn9D,EAAK3uC,MAAM+xH,UAAU+mC,OAAO,SAAUprJ,GAAK,MAAiC,UAA1BA,EAAEjH,KAAKyvJ,KAAK0gD,SAAuB,KAC1Ht0M,EAAU9B,EAAAA,aAAkB,WAC5BijT,GAAc,EAClB,GAAG,IACCG,EAAcpjT,EAAAA,aAAkB,WAChCijT,GAAc,GACL,OAAT90Q,QAA0B,IAATA,GAA2BA,EAAKzZ,OACrD,GAAG,CAACyZ,IACAk1Q,EAASrjT,EAAAA,aAAkB,SAAUgF,GACrC,GAAImpC,GAAQnpC,EAAM,CACd,IAAImhG,EAAKykN,GAAez8Q,EAAK3uC,MAAOwF,GAChCmhG,GACAh4D,EAAKs8B,SAAS07B,EAEtB,CACAi9M,GACJ,GAAG,CAACj1Q,EAAMi1Q,IACV,OAAQpjT,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAErb,KAAM,SAAUwG,MAAOy2S,EAAIjnR,iBAAiB5sB,EAAAA,EAAK87S,gBAAiBhvR,EAAAA,EAAS9sB,EAAAA,EAAK87S,kBAAmBtpT,KAAM,mBAAoBujC,QAASgmR,GAAAA,IAAqBtpT,QAASA,EAAS6E,UAAWw8S,GAAWhH,EAAAA,GAAsB31D,IAChQu6D,GAAc/gT,EAAAA,cAAoBqrT,GAAuB,CAAE90S,QAAS6sS,EAAaC,OAAQA,EAAQl1Q,KAAMA,IAC/G,EACIu1Q,GAAY,CACZ,CAAEC,QAASt0S,EAAAA,EAAKi8S,yBAA0B9gT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKi8S,0BAC1Dp5S,MAAO,OAAQrQ,KAAM,0BAA2BujC,QAAS++Q,GAAAA,KAC7D,CAAER,QAASt0S,EAAAA,EAAKk8S,2BAA4B/gT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKk8S,4BAC5Dr5S,MAAO,SAAUrQ,KAAM,4BAA6BujC,QAASi/Q,GAAAA,KACjE,CAAEV,QAASt0S,EAAAA,EAAKm8S,0BAA2BhhT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKm8S,2BAC3Dt5S,MAAO,QAASrQ,KAAM,2BAA4BujC,QAASm/Q,GAAAA,KAC/D,CAAEZ,QAASt0S,EAAAA,EAAKo8S,2BAA4BjhT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKo8S,4BAC5Dv5S,MAAO,GAAIrQ,KAAM,eAAgBujC,QAAS2/Q,GAAAA,MAE9C2G,GAAgB,CAAC,CACb/H,QAASt0S,EAAAA,EAAKs8S,oBACdnhT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKs8S,qBACpBz5S,MAAO,OACP/R,MAAO,CAAC,EACR0B,KAAM,sBACNujC,QAASwmR,GAAAA,KACV,CACCjI,QAASt0S,EAAAA,EAAKw8S,sBACdrhT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKw8S,uBACpB35S,MAAO,SACP/R,MAAO,CAAC,EACR0B,KAAM,wBACNujC,QAAS0mR,GAAAA,KACV,CACCnI,QAASt0S,EAAAA,EAAK08S,qBACdvhT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK08S,sBACpB75S,MAAO,QACP/R,MAAO,CAAC,EACR0B,KAAM,uBACNujC,QAAS4mR,GAAAA,MACVt/S,KAAI,SAAUsmB,GAAK,OAAQ1R,GAASA,GAAS,CAAC,EAAG0R,GAAI,CAAE7yB,MAAOgoT,GAAoBn1R,EAAE9gB,QAAY,IACnG+5S,GAAsB,CAAC,CACnBtI,QAASt0S,EAAAA,EAAK68S,mBACd1hT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK68S,oBACpBh6S,MAAO,MACPrQ,KAAM,eACNujC,QAAS+mR,GAAAA,KACV,CACCxI,QAASt0S,EAAAA,EAAK+8S,sBACd5hT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK+8S,uBACpBl6S,MAAO,SACPrQ,KAAM,kBACNujC,QAASinR,GAAAA,MAEbC,GAAuB,CACvB,CAAE3I,QAASt0S,EAAAA,EAAKk9S,oBAAqB/hT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKk9S,qBAAsBr6S,MAAO,QACtF,CAAEyxS,QAASt0S,EAAAA,EAAKm9S,mCAAoChiT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKm9S,oCAAqCt6S,MAAO,SACpH,CAAEyxS,QAASt0S,EAAAA,EAAKo9S,iCAAkCjiT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKo9S,kCAAmCv6S,MAAO,OAEhHm5S,GAAwB,SAAU1gT,GAClC,IAAIkrB,EAAW71B,EAAAA,SAAc,WACzB,IAAIR,EAAQmL,EAAMwjC,MAAQxjC,EAAMwjC,KAAK3uC,MAErC,OADWA,EAAQgpT,GAAiBhpT,GAASmoT,EAEjD,GAAG,CAACh9S,EAAMwjC,OACN+0Q,GAAM53B,EAAAA,EAAAA,KACNpnR,EAAKlE,EAAAA,SAAe,GAAIkM,EAAWhI,EAAG,GAAIwoT,EAAcxoT,EAAG,GAC3DiI,EAAWnM,EAAAA,aAAkB,SAAUW,GACvC+rT,EAAY/rT,EAAMuL,SACtB,GAAG,IAECmb,EAAOrnB,EAAAA,OAAa,MACpBypE,EAAUzpE,EAAAA,OAAa,MACvB8G,EAAQ9G,EAAAA,OAAa,MACrB8H,EAAS9H,EAAAA,OAAa,MACtB4nT,EAAc5nT,EAAAA,OAAa,MAC3BuiT,EAAcviT,EAAAA,OAAa,MAC3BwiT,EAAcxiT,EAAAA,OAAa,MAC3BkiT,EAAYliT,EAAAA,OAAa,MACzBoiT,EAAapiT,EAAAA,OAAa,MAC1BoG,EAAWpG,EAAAA,OAAa,MACxBqiT,EAAYriT,EAAAA,OAAa,MACzByiT,EAAcziT,EAAAA,OAAa,MAC3B6M,EAAkB7M,EAAAA,OAAa,MAC/B+C,EAAc/C,EAAAA,OAAa,MAC3B6nT,EAAkB7nT,EAAAA,OAAa,MAE/BH,EAAKG,EAAAA,OAAa,MAClBM,EAAYN,EAAAA,OAAa,MACzB69K,EAAU79K,EAAAA,OAAa,MACvBgoT,EAAahoT,EAAAA,OAAa,MAC1BioT,EAAgBjoT,EAAAA,OAAa,MAC7B8nT,EAAmB9nT,EAAAA,OAAa,MAChC+nT,EAAkB/nT,EAAAA,OAAa,MAC/BkoT,EAAmBloT,EAAAA,OAAa,MAChCqjT,EAASrjT,EAAAA,aAAkB,WAC3B,IAAIkE,EAAII,EAAIK,EAAIG,EAAII,EAAIE,EAAI0G,EAAI4U,EAAIG,EAAIgJ,EAAIC,EAAIE,EAAIG,EAAIqiR,EAAIG,EAAIG,EAAI1jH,EAAI6jH,EAAIuZ,EAAIC,EAC5EzhT,EAAO,CACPqiB,MAA+B,QAAvBnjB,EAAKmjB,EAAKvmB,eAA4B,IAAPoD,OAAgB,EAASA,EAAGgO,QAAU,EAC7Eu3D,SAAqC,QAA1BnlE,EAAKmlE,EAAQ3oE,eAA4B,IAAPwD,OAAgB,EAASA,EAAG4N,QAAU,EACnFpL,MAAOA,EAAMhG,QAAUgG,EAAMhG,QAAQoR,MAAQ,KAC7CpK,OAAQA,EAAOhH,QAAUgH,EAAOhH,QAAQoR,MAAQ,KAChD01S,YAAaA,EAAY9mT,QAAU8mT,EAAY9mT,QAAQoR,MAAQ,KAC/DqwS,YAAaA,EAAYzhT,QAAUyhT,EAAYzhT,QAAQoR,MAAQ,KAC/DswS,YAAaA,EAAY1hT,QAAU0hT,EAAY1hT,QAAQoR,MAAQ,KAC/DgwS,WAAyC,QAA5Bv9S,EAAKu9S,EAAUphT,eAA4B,IAAP6D,OAAgB,EAASA,EAAGuN,QAAU,GACvFkwS,YAA2C,QAA7Bt9S,EAAKs9S,EAAWthT,eAA4B,IAAPgE,OAAgB,EAASA,EAAGoN,QAAU,GACzF9L,UAA4F,QAAhFhB,EAAiC,QAA3BF,EAAKkB,EAAStF,eAA4B,IAAPoE,OAAgB,EAASA,EAAGgN,aAA0B,IAAP9M,OAAgB,EAASA,EAAG8M,QAAU,KAC1IsE,WAAyC,QAA5B1K,EAAKu2S,EAAUvhT,eAA4B,IAAPgL,OAAgB,EAASA,EAAGoG,OAASmwS,EAAUvhT,QAAQoR,MAAMA,MAAQ,KACtHuwS,aAA6C,QAA9B/hS,EAAK+hS,EAAY3hT,eAA4B,IAAP4f,OAAgB,EAASA,EAAGxO,OAASuwS,EAAY3hT,QAAQoR,MAAMA,MAAQ,KAC5HrF,gBAAoD,QAAlCgU,EAAKhU,EAAgB/L,eAA4B,IAAP+f,OAAgB,EAASA,EAAG3O,MACxFnP,YAA4C,QAA9B8mB,EAAK9mB,EAAYjC,eAA4B,IAAP+oB,OAAgB,EAASA,EAAG3X,MAChF21S,gBAAiBxwR,QAAkG,QAAzFrN,EAAwC,QAAlCF,EAAK+9R,EAAgB/mT,eAA4B,IAAPgpB,OAAgB,EAASA,EAAGgL,eAA4B,IAAP9K,OAAgB,EAASA,EAAGkiF,SACvJrsG,GAAIuzB,QAA8B,QAArBjJ,EAAKtqB,EAAGiB,eAA4B,IAAPqpB,OAAgB,EAASA,EAAGjY,QAAU,IAChF5R,UAAW8yB,QAAqC,QAA5Bo5Q,EAAKlsS,EAAUQ,eAA4B,IAAP0rS,OAAgB,EAASA,EAAGt6R,QAAU,IAC9F2rK,QAASzqJ,QAAmC,QAA1Bu5Q,EAAK9uH,EAAQ/8K,eAA4B,IAAP6rS,OAAgB,EAASA,EAAGz6R,QAAU,IAC1F81S,YAA2C,QAA7Blb,EAAKkb,EAAWlnT,eAA4B,IAAPgsS,OAAgB,EAASA,EAAG56R,QAAU,EACzF+1S,eAAiD,QAAhC7+H,EAAK6+H,EAAcnnT,eAA4B,IAAPsoL,OAAgB,EAASA,EAAGl3K,QAAU,EAC/F41S,kBAAuD,QAAnC7a,EAAK6a,EAAiBhnT,eAA4B,IAAPmsS,OAAgB,EAASA,EAAG/6R,OAAS41S,EAAiBhnT,QAAQoR,MAAMA,MAAQ,KAC3I61S,iBAAqD,QAAlCvB,EAAKuB,EAAgBjnT,eAA4B,IAAP0lT,OAAgB,EAASA,EAAGt0S,OAAS61S,EAAgBjnT,QAAQoR,MAAMA,MAAQ,KACxIg2S,kBAAuD,QAAnCzB,EAAKyB,EAAiBpnT,eAA4B,IAAP2lT,OAAgB,EAASA,EAAGv0S,OAASg2S,EAAiBpnT,QAAQoR,MAAMA,MAAQ,QAE/IvH,EAAM04S,OAAOnwR,UAAKvzB,EAAWqF,EACjC,GAAG,CAAC2F,EAAM04S,SACNsJ,EAAW3sT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBACnDN,EAAAA,cAAoB,WAAY,CAAEM,UAAW,mBACzCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,kDACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKu9S,oBAAqBzwR,EAAAA,EAAS9sB,EAAAA,EAAKu9S,uBACjI5sT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAK6mB,EAAMrkB,aAAc6yB,EAASxO,KAAM7F,IAAK,MAC3FxhB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKw9S,uBAAwB1wR,EAAAA,EAAS9sB,EAAAA,EAAKw9S,0BACpI7sT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAKipE,EAASzmE,aAAc6yB,EAAS4zC,QAASjoD,IAAK,MACjGxhB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKy9S,qBAAsB3wR,EAAAA,EAAS9sB,EAAAA,EAAKy9S,wBAClI9sT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAKsG,EAAO9D,aAAc6yB,EAAS/uB,MAAO0a,IAAK,EAAGxX,YAAak5S,EAAIjnR,iBAAiB5sB,EAAAA,EAAKu3S,SAAUzqR,EAAAA,EAAS9sB,EAAAA,EAAKu3S,eAC/J5mT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B,QACpEN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBqpE,GAAAA,GAAc,CAAE7oE,IAAK0hT,EAAWl/S,aAAc6yB,EAASqsR,UAAWl9S,KAAMkkO,EAAAA,GAAO1iM,cAAeA,EAAAA,OAC1HxmC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK09S,sBAAuB5wR,EAAAA,EAAS9sB,EAAAA,EAAK09S,yBACnI/sT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAKsH,EAAQ9E,aAAc6yB,EAAS/tB,OAAQ0Z,IAAK,EAAGxX,YAAak5S,EAAIjnR,iBAAiB5sB,EAAAA,EAAKu3S,SAAUzqR,EAAAA,EAAS9sB,EAAAA,EAAKu3S,eACjK5mT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B,QACpEN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBqpE,GAAAA,GAAc,CAAE7oE,IAAK4hT,EAAYp/S,aAAc6yB,EAASusR,WAAYp9S,KAAMkkO,EAAAA,GAAM35N,QAAO,SAAUqnE,GAAK,MAAa,MAANA,CAAW,IAAIpwC,cAAeA,EAAAA,OACvKxmC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK29S,wBAAyB7wR,EAAAA,EAAS9sB,EAAAA,EAAK29S,2BACrIhtT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAExmB,IAAK4F,EAAUpD,aAAc0oT,GAAc/wS,MAAK,SAAUqY,GAAK,OAAOA,EAAE9gB,QAAU2jB,EAASzvB,QAAU,IAAIogC,cAAeA,EAAAA,GAAexhC,KAAM0mT,GAAch/S,KAAI,SAAUC,GAAK,OAAQ2U,GAASA,GAAS,CAAC,EAAG3U,GAAI,CAAEnC,KAAM04S,EAAIjnR,iBAAiBtvB,EAAEg3S,QAASh3S,EAAEnC,OAAW,IAAI8H,UAAW,OAAQ1D,YAAa,QAAS4kR,YAAa6xB,GAAqB75D,WAAY85D,OAC5YtlT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK49S,yBAA0B9wR,EAAAA,EAAS9sB,EAAAA,EAAK49S,4BACtIjtT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAExmB,IAAK6hT,EAAWr/S,aAAc0gT,GAAU/oS,MAAK,SAAUnR,GAAK,OAAOA,EAAE0I,QAAU2jB,EAASrf,SAAW,IAAIxR,KAAM0+S,GAAUh3S,KAAI,SAAUC,GAAK,OAAQ2U,GAASA,GAAS,CAAC,EAAG3U,GAAI,CAAEnC,KAAM04S,EAAIjnR,iBAAiBtvB,EAAEg3S,QAASh3S,EAAEnC,OAAW,IAAI8H,UAAW,OAAQ1D,YAAa,QAAS43B,cAAeA,EAAAA,GAAegtP,YAAa6xB,GAAqB75D,WAAY85D,OACtYtlT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK69S,2BAA4B/wR,EAAAA,EAAS9sB,EAAAA,EAAK69S,8BACxIltT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAKonT,EAAa5kT,aAAc6yB,EAAS+xR,YAAa59S,YAAak5S,EAAIjnR,iBAAiB5sB,EAAAA,EAAKu3S,SAAUzqR,EAAAA,EAAS9sB,EAAAA,EAAKu3S,WAAYplS,IAAK,MACpLxhB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK89S,2BAA4BhxR,EAAAA,EAAS9sB,EAAAA,EAAK89S,8BACxIntT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAK+hT,EAAav/S,aAAc6yB,EAAS0sR,YAAav4S,YAAak5S,EAAIjnR,iBAAiB5sB,EAAAA,EAAKu3S,SAAUzqR,EAAAA,EAAS9sB,EAAAA,EAAKu3S,WAAYplS,IAAK,MACpLxhB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gCACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK+9S,+BAAgCjxR,EAAAA,EAAS9sB,EAAAA,EAAK+9S,kCAC5IptT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoB4oE,EAAAA,EAAa,CAAEpoE,IAAKqM,EAAiB7J,aAAc6yB,EAAShpB,oBACxF7M,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKg+S,2BAA4BlxR,EAAAA,EAAS9sB,EAAAA,EAAKg+S,8BACxIrtT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAKgiT,EAAax/S,aAAc6yB,EAAS2sR,YAAahhS,IAAK,MACzGxhB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKi+S,2BAA4BnxR,EAAAA,EAAS9sB,EAAAA,EAAKi+S,8BACxIttT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoB4oE,EAAAA,EAAa,CAAEpoE,IAAKuC,EAAaC,aAAc6yB,EAAS9yB,gBACpF/C,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKk+S,2BAA4BpxR,EAAAA,EAAS9sB,EAAAA,EAAKk+S,8BACxIvtT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAExmB,IAAKiiT,EAAaz/S,aAAcwqT,EAAAA,GAAa7yS,MAAK,SAAUue,GAAK,OAAOA,EAAEhnB,QAAU2jB,EAAS4sR,WAAa,IAAIj8Q,cAAeA,EAAAA,GAAexhC,KAAMwoT,EAAAA,GAAa9gT,KAAI,SAAUC,GAAK,OAAQ2U,GAASA,GAAS,CAAC,EAAG3U,GAAI,CAAEnC,KAAM04S,EAAIjnR,iBAAiBtvB,EAAEg3S,QAASh3S,EAAEnC,OAAW,IAAI8H,UAAW,OAAQ1D,YAAa,YACzV5O,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gCACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBmoE,GAAAA,EAAU,CAAE3nE,IAAKqnT,EAAiBvnT,UAAW,kBAAmBgC,MAAO4gT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKo+S,+BAAgCtxR,EAAAA,EAAS9sB,EAAAA,EAAKo+S,iCAAkC1T,eAAgBlkR,EAASgyR,uBAC9O6F,EAAY1tT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBACpDN,EAAAA,cAAoB,WAAY,CAAEM,UAAW,mBACzCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,0BACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gBACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKs+S,kBAAmBxxR,EAAAA,EAAS9sB,EAAAA,EAAKs+S,qBAC/H3tT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBsN,GAAAA,EAAS,CAAE9M,IAAKX,EAAImD,aAAc6yB,EAASh2B,OACvEG,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gBACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKu+S,wBAAyBzxR,EAAAA,EAAS9sB,EAAAA,EAAKu+S,2BACrI5tT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBsN,GAAAA,EAAS,CAAE9M,IAAKF,EAAW0C,aAAc6yB,EAASv1B,cAC9EN,EAAAA,cAAoB,WAAY,CAAEM,UAAW,mBACzCN,EAAAA,cAAoB,SAAU,CAAEM,UAAW,iBAAmB4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKw+S,6BAA8B1xR,EAAAA,EAAS9sB,EAAAA,EAAKw+S,gCACpI7tT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oCACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gCACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAKy+S,uBAAwB3xR,EAAAA,EAAS9sB,EAAAA,EAAKy+S,0BACpI9tT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBsN,GAAAA,EAAS,CAAE9M,IAAKq9K,EAAS76K,aAAc6yB,EAASgoJ,YAC5E79K,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK0+S,+BAAgC5xR,EAAAA,EAAS9sB,EAAAA,EAAK0+S,kCAC5I/tT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAExmB,IAAKunT,EAAiB/kT,aAAcipT,GAAoBtxS,MAAK,SAAUhO,GAAK,OAAOA,EAAEuF,QAAU2jB,EAASkyR,eAAiB,IAAI/iT,KAAMinT,GAAoBv/S,KAAI,SAAUC,GAAK,OAAQ2U,GAASA,GAAS,CAAC,EAAG3U,GAAI,CAAEnC,KAAM04S,EAAIjnR,iBAAiBtvB,EAAEg3S,QAASh3S,EAAEnC,OAAW,IAAIg8B,cAAeA,EAAAA,GAAel0B,UAAW,OAAQ1D,YAAa,QAAS4kR,YAAa6xB,GAAqB75D,WAAY85D,OACtatlT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK2+S,gCAAiC7xR,EAAAA,EAAS9sB,EAAAA,EAAK2+S,mCAC7IhuT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAExmB,IAAKsnT,EAAkB9kT,aAAc0gT,GAAU/oS,MAAK,SAAUhO,GAAK,OAAOA,EAAEuF,QAAU2jB,EAASiyR,gBAAkB,IAAI9iT,KAAM0+S,GAAUh3S,KAAI,SAAUC,GAAK,OAAQ2U,GAASA,GAAS,CAAC,EAAG3U,GAAI,CAAEnC,KAAM04S,EAAIjnR,iBAAiBtvB,EAAEg3S,QAASh3S,EAAEnC,OAAW,IAAIg8B,cAAeA,EAAAA,GAAel0B,UAAW,OAAQ1D,YAAa,QAAS4kR,YAAa6xB,GAAqB75D,WAAY85D,OACpZtlT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK4+S,0BAA2B9xR,EAAAA,EAAS9sB,EAAAA,EAAK4+S,6BACvIjuT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAKwnT,EAAYhlT,aAAc6yB,EAASmyR,WAAYxmS,IAAK,MACvGxhB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK6+S,0BAA2B/xR,EAAAA,EAAS9sB,EAAAA,EAAK6+S,6BACvIluT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBkoE,GAAAA,EAAgB,CAAE1nE,IAAKynT,EAAejlT,aAAc6yB,EAASoyR,cAAezmS,IAAK,MAC7GxhB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BACpCN,EAAAA,cAAoB,QAAS,CAAEM,UAAW,wBAA0B4iT,EAAIjnR,iBAAiB5sB,EAAAA,EAAK8+S,gCAAiChyR,EAAAA,EAAS9sB,EAAAA,EAAK8+S,mCAC7InuT,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAExmB,IAAK0nT,EAAkBllT,aAAcspT,GAAqB3xS,MAAK,SAAUhO,GAAK,OAAOA,EAAEuF,QAAU2jB,EAASqyR,gBAAkB,IAAIljT,KAAMsnT,GAAqB5/S,KAAI,SAAUC,GAAK,OAAQ2U,GAASA,GAAS,CAAC,EAAG3U,GAAI,CAAEnC,KAAM04S,EAAIjnR,iBAAiBtvB,EAAEg3S,QAASh3S,EAAEnC,OAAW,IAAIg8B,cAAeA,EAAAA,GAAel0B,UAAW,OAAQ1D,YAAa,iBACnYy3C,EAAWrmD,EAAAA,cAAoBiM,GAAAA,EAAU,CAAEC,SAAUA,EAAUC,SAAUA,EAAUI,WAAW,EAAOD,iBAAiB,GACtHtM,EAAAA,cAAoBwM,GAAAA,EAAa,CAAEC,MAAOy2S,EAAIjnR,iBAAiB5sB,EAAAA,EAAK++S,uBAAwBjyR,EAAAA,EAAS9sB,EAAAA,EAAK++S,0BAA4BzB,GACtI3sT,EAAAA,cAAoBwM,GAAAA,EAAa,CAAEC,MAAOy2S,EAAIjnR,iBAAiB5sB,EAAAA,EAAKg/S,wBAAyBlyR,EAAAA,EAAS9sB,EAAAA,EAAKg/S,2BAA6BX,IACxI1T,EAAgB,CAAEh6S,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAE4E,WAAY,UAAWuxB,IAAK,OAAQj2B,QAASuhT,GAAUH,EAAIjnR,iBAAiB5sB,EAAAA,EAAKi/S,oBAAqBnyR,EAAAA,EAAS9sB,EAAAA,EAAKi/S,uBAA0BtuT,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEE,QAAS6I,EAAM4L,QAASwhB,IAAK,UAAYmrR,EAAIjnR,iBAAiB5sB,EAAAA,EAAKk/S,sBAAuBpyR,EAAAA,EAAS9sB,EAAAA,EAAKk/S,0BACxU,OAAQvuT,EAAAA,cAAoBo2P,GAAAA,EAAQ,CAAE91P,UAAW,+CAAgDmM,MAAOy2S,EAAIjnR,iBAAiB5sB,EAAAA,EAAK87S,gBAAiBhvR,EAAAA,EAAS9sB,EAAAA,EAAK87S,kBAAmB50S,QAAS5L,EAAM4L,QAASwhB,IAAK,SAAU53B,MAAO,CAAE05S,WAAY,QAAU/yS,MAAO,IAAKgB,OAAQ,IAAKqlP,OAAO,EAAMq+B,eAAgB,WAAc,OAAO,IAAM,EAAGG,eAAgB,WAAc,OAAO,IAAM,EAAGj9Q,WAAW,GACnY23C,EACArmD,EAAAA,cAAoB4sB,MAAM5sB,EAAOkvE,GAAc,CAAC8/M,GAAAA,EAAkB,CAAEtE,OAAQ,UAAYsvB,GAAe,IAC/G,EJrSItnR,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,GA+BA,SAAWmoR,GAOP,SAASkN,EAAgBphS,GAAY,OtBfZ,SAAUA,GACnC,IAAIiiR,EAAsB,SAAUp7Q,GAEhC,SAASw6R,IACL,OAAkB,OAAXx6R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAYA,OAfAiG,EAAU+7R,EAAWx6R,GAIrBw6R,EAAU9hS,UAAUnrB,OAAS,WACzB,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQmJ,EAAQsc,EAAO/iB,EAAI,CAAC,OAAQ,WACjF1E,EAAQ2uC,GAAQA,EAAK3uC,MACrBqtN,IAAYrtN,IAASujL,EAAAA,EAAAA,KAAUvjL,EAAO4tB,EAASsnD,SAC/CA,EAAUm4I,EAAUqrF,EAAYxjO,QAAUtnD,EAASsnD,QACnD8sG,EAAcqrC,EAAUqrF,EAAY12H,YAAcp0J,EAASo0J,YAC3Dn1I,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CowR,EAAWzvR,EAAS+O,SAAS1vB,MAC7Bo4L,EAAU7kM,EAAAA,cAAoB4B,EAAAA,EAAQ0f,EAAS,CAAExf,QAAS,WAAc,OAAOqsC,IAAQ00I,EAAAA,EAAAA,KAAYnuG,EAAS8sG,EAArBqB,CAAkC10I,EAAK3uC,MAAO2uC,EAAKs8B,SAAW,EAAGv+D,SAAU2gN,EAAS9sL,WAAW,GAAQo8Q,EAAAA,GAAsB,CAAE1vS,MAAO4/B,EAAapQ,iBAAiB4gR,EAAU1gR,EAAAA,EAAS0gR,KAAczvR,EAASziB,MAAOA,IAChT,OAAOnJ,EAASA,EAAO0xB,UAAKvzB,EAAWklM,EAAQ,CAAE12J,KAAMA,IAAU02J,CACrE,EACO4pH,CACX,CAjB0B,CAiBxBzuT,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,CsBNgDof,CAA0BrhS,EAAW,CACjFk0R,EAAYkN,gBAAkBA,EAI9B,IAAIE,EAA2B,SAAUz6R,GAErC,SAASy6R,IACL,OAAkB,OAAXz6R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUg8R,EAAWz6R,GAIdy6R,CACX,CAN+B,CAM7BF,EAAgB5f,EAAAA,EAAoB8I,YACtC4J,EAAYoN,UAAYA,EAIxB,IAAIC,EAA4B,SAAU16R,GAEtC,SAAS06R,IACL,OAAkB,OAAX16R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUi8R,EAAY16R,GAIf06R,CACX,CANgC,CAM9BH,EAAgB5f,EAAAA,EAAoBgJ,aACtC0J,EAAYqN,WAAaA,EAIzB,IAAIC,EAA6B,SAAU36R,GAEvC,SAAS26R,IACL,OAAkB,OAAX36R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUk8R,EAAa36R,GAIhB26R,CACX,CANiC,CAM/BJ,EAAgB5f,EAAAA,EAAoBkJ,cACtCwJ,EAAYsN,YAAcA,EAI1B,IAAIC,EAA8B,SAAU56R,GAExC,SAAS46R,IACL,OAAkB,OAAX56R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUm8R,EAAc56R,GAIjB46R,CACX,CANkC,CAMhCL,EAAgB5f,EAAAA,EAAoBoJ,eAQtC,SAAS4D,EAAsBxuR,GAAY,OAAOuuR,EAAkBC,sBAAsBxuR,EAAW,CAPrGk0R,EAAYuN,aAAeA,EAQ3BvN,EAAY1F,sBAAwBA,EAIpC,IAAIkT,EAA6B,SAAU76R,GAEvC,SAAS66R,IACL,OAAkB,OAAX76R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUo8R,EAAa76R,GAIhB66R,CACX,CANiC,CAM/BlT,EAAsBhN,EAAAA,EAAoB+E,cAC5C2N,EAAYwN,YAAcA,EAI1B,IAAIvT,EAAkC,SAAUtnR,GAE5C,SAASsnR,IACL,OAAkB,OAAXtnR,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU6oR,EAAkBtnR,GAIrBsnR,CACX,CANsC,CAMpCD,EAAmBC,kBAQrB,SAASc,EAAwBjvR,GAAY,OAAOgvR,EAAgBC,wBAAwBjvR,EAAW,CAPvGk0R,EAAY/F,iBAAmBA,EAQ/B+F,EAAYjF,wBAA0BA,EAItC,IAAI0S,EAA0B,SAAU96R,GAEpC,SAAS86R,IACL,OAAkB,OAAX96R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUq8R,EAAU96R,GAIb86R,CACX,CAN8B,CAM5B1S,EAAwBzN,EAAAA,EAAoBxvR,WAC9CkiS,EAAYyN,SAAWA,EAIvB,IAAIr2K,EAA0B,SAAUzkH,GAEpC,SAASykH,IACL,OAAkB,OAAXzkH,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUgmH,EAAUzkH,GAIbykH,CACX,CAN8B,CAM5B2jK,EAAwBzN,EAAAA,EAAoBoI,WAoB9C,SAASiG,EAA8B7vR,GAAY,OAAOuvR,EAAkBM,8BAA8B7vR,EAAW,CAnBrHk0R,EAAY5oK,SAAWA,EAIvB4oK,EAAY0N,UAAY,SAAUrkT,GAC9B,OAAO3K,EAAAA,cAAoB48S,EAAgBt7R,GAAS,CAAC,EAAGstR,EAAAA,EAAoBsI,UAAWvsS,GAC3F,EAIA22S,EAAY2N,UAAY,SAAUtkT,GAC9B,OAAO3K,EAAAA,cAAoB48S,EAAgBt7R,GAAS,CAAC,EAAGstR,EAAAA,EAAoB2I,UAAW5sS,GAC3F,EAQA22S,EAAYrE,8BAAgCA,EAI5C,IAAIiS,EAA6B,SAAUj7R,GAEvC,SAASi7R,IACL,OAAkB,OAAXj7R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUw8R,EAAaj7R,GAIhBi7R,CACX,CANiC,CAM/BjS,EAA8BrO,EAAAA,EAAoBqI,cAQpD,SAASqG,EAAelwR,GAAY,OAAO+vR,EAAcG,eAAelwR,EAAW,CAQnF,SAASmwR,EAAenwR,GAAY,OAAO+vR,EAAcI,eAAenwR,EAAW,CAfnFk0R,EAAY4N,YAAcA,EAQ1B5N,EAAYhE,eAAiBA,EAQ7BgE,EAAY/D,eAAiBA,EAI7B,IAAI4R,EAAsB,SAAUl7R,GAEhC,SAASk7R,IACL,OAAkB,OAAXl7R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUy8R,EAAMl7R,GAITk7R,CACX,CAN0B,CAMxB7R,EAAe1O,EAAAA,EAAoB90E,OACrCwnF,EAAY6N,KAAOA,EAInB,IAAIC,EAAsB,SAAUn7R,GAEhC,SAASm7R,IACL,OAAkB,OAAXn7R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU08R,EAAMn7R,GAITm7R,CACX,CAN0B,CAMxB7R,EAAe3O,EAAAA,EAAoB91E,OAQrC,SAAS2kF,EAAiBrwR,GAAY,OAAOowR,EAAaC,iBAAiBrwR,EAAW,CAPtFk0R,EAAY8N,KAAOA,EAQnB9N,EAAY7D,iBAAmBA,EAI/B,IAAI4R,EAAwB,SAAUp7R,GAElC,SAASo7R,IACL,OAAkB,OAAXp7R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU28R,EAAQp7R,GAIXo7R,CACX,CAN4B,CAM1B5R,EAAiB7O,EAAAA,EAAoBtsL,SAQvC,SAASy7L,EAAuB3wR,GAC5B,OAAO0wR,EAAmBC,uBAAuB3wR,EACrD,CATAk0R,EAAY+N,OAASA,EAUrB/N,EAAYvD,uBAAyBA,EAIrC,IAAIuR,EAAsB,SAAUr7R,GAEhC,SAASq7R,IACL,OAAkB,OAAXr7R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU48R,EAAMr7R,GAITq7R,CACX,CAN0B,CAMxBvR,EAAuBnP,EAAAA,EAAoB/gM,OAC7CyzM,EAAYgO,KAAOA,EAInB,IAAIC,EAAwB,SAAUt7R,GAElC,SAASs7R,IACL,OAAkB,OAAXt7R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU68R,EAAQt7R,GAIXs7R,CACX,CAN4B,CAM1BxR,EAAuBnP,EAAAA,EAAoB9gM,SAC7CwzM,EAAYiO,OAASA,EAIrB,IAAIC,EAA2B,SAAUv7R,GAErC,SAASu7R,IACL,OAAkB,OAAXv7R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU88R,EAAWv7R,GAIdu7R,CACX,CAN+B,CAM7BzR,EAAuBnP,EAAAA,EAAoB3tL,YAC7CqgM,EAAYkO,UAAYA,EAIxB,IAAIC,EAA+B,SAAUx7R,GAEzC,SAASw7R,IACL,OAAkB,OAAXx7R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU+8R,EAAex7R,GAIlBw7R,CACX,CANmC,CAMjC1R,EAAuBnP,EAAAA,EAAoBrnF,gBAC7C+5F,EAAYmO,cAAgBA,EAI5B,IAAIC,EAA2B,SAAUz7R,GAErC,SAASy7R,IACL,OAAkB,OAAXz7R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUg9R,EAAWz7R,GAIdy7R,CACX,CAN+B,CAM7B3R,EAAuBnP,EAAAA,EAAoBpnF,YAC7C85F,EAAYoO,UAAYA,EAIxB,IAAIC,EAA6B,SAAU17R,GAEvC,SAAS07R,IACL,OAAkB,OAAX17R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUi9R,EAAa17R,GAIhB07R,CACX,CANiC,CAM/B5R,EAAuBnP,EAAAA,EAAoBnnF,cAQ7C,SAASmoG,EAAsBxiS,GAAY,ObnSZ,SAAUA,GACzC,IAAIiiR,EAAsB,SAAUp7Q,GAEhC,SAAS47R,IACL,IAAI1gS,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAShE,OARA0C,EAAM3vB,MAAQ,CACV4+S,cAAc,GAElBjvR,EAAMkvR,aAAe,WACjBlvR,EAAM6L,SAAS,CACXojR,cAAejvR,EAAM3vB,MAAM4+S,cAEnC,EACOjvR,CACX,CAWA,OAvBAuD,GAAUm9R,EAAiB57R,GAa3B47R,EAAgBljS,UAAUnrB,OAAS,WAC/B,IAAI0C,EAAKuoB,KAAK9hB,MAAOwjC,EAAOjqC,EAAGiqC,KAAM3sC,EAAS0C,EAAG1C,OAAQglP,EAAcv/N,GAAO/iB,EAAI,CAAC,OAAQ,WACvF1E,EAAQ2uC,GAAQA,EAAK3uC,MACrByoG,EAAWzoG,EAAQA,EAAMw8D,OAAO06F,MAAMtpI,EAASk/E,WAAQ3sG,EACvD0sC,GAAetQ,EAAAA,EAAAA,IAA2BtP,MAC1CmoR,EAAcxnR,EAAS+O,SAASy4Q,YAChCjuS,GAAYshG,IAAazoG,KAAU07K,EAAAA,EAAAA,KAAU17K,EAAOyoG,GACpDw1L,EAAY,CAAEz9R,EAAAA,cAAoB4B,EAAAA,EAAQ0f,GAAS,CAAExf,QAAS6E,OAAWhH,EAAY8sB,KAAK4xR,aAAc,kBAAiB13S,QAAkBhH,EAAWo4B,IAAK,eAAiBokR,EAAAA,GAAsB,CAAE1vS,MAAO4/B,EAAapQ,iBAAiB24Q,EAAaz4Q,EAAAA,EAASy4Q,KAAiBxnR,EAASziB,MAAO67O,EAAa,CAAElmP,WAAWu7B,EAAAA,EAAAA,GAAW2qN,EAAYlmP,UAAW8sB,EAASziB,MAAMrK,UAAW,CAAE,aAAcqG,OAAmB8lB,KAAKjtB,MAAM4+S,cAAgBjwQ,GAASnuC,EAAAA,cAAoB6wS,GAAAA,EAAcqJ,kBAAmB,CAAEniR,IAAK,oBAAqBoW,KAAMA,EAAM/gB,SAAUA,EAAUhF,IAAKo+N,EAAYp+N,IAAK7R,QAASkW,KAAK4xR,gBAAoB,MAC1mB,OAAO78S,EAASA,EAAO0xB,UAAKvzB,EAAW89R,EAAW,CAAEtvP,KAAMA,IAAUsvP,CACxE,EACOoyB,CACX,CAzB0B,CAyBxB7vT,EAAAA,WAEF,OADAm9B,EAAAA,EAAAA,IAAwBkyQ,GACjBA,CACX,CasQsDwgB,CAAsCziS,EAAW,CAPnGk0R,EAAYqO,YAAcA,EAQ1BrO,EAAYsO,sBAAwBA,EAIpC,IAAIE,EAA6B,SAAU77R,GAEvC,SAAS67R,IACL,OAAkB,OAAX77R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUo9R,EAAa77R,GAIhB67R,CACX,CANiC,CAM/BF,EAAsBhhB,EAAAA,EAAoB9vL,QAQ5C,SAASo/L,EAAe9wR,GAAY,OAAO6wR,EAAWC,eAAe9wR,EAAW,CAPhFk0R,EAAYwO,YAAcA,EAQ1BxO,EAAYpD,eAAiBA,EAI7B,IAAI6R,EAAsB,SAAU97R,GAEhC,SAAS87R,IACL,OAAkB,OAAX97R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUq9R,EAAM97R,GAIT87R,CACX,CAN0B,CAMxB7R,EAAetP,EAAAA,EAAoBzrH,OACrCm+H,EAAYyO,KAAOA,EAInB,IAAIC,EAA4B,SAAU/7R,GAEtC,SAAS+7R,IACL,OAAkB,OAAX/7R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUs9R,EAAY/7R,GAIf+7R,CACX,CANgC,CAM9B9R,EAAetP,EAAAA,EAAoBuE,aAQrC,SAASoL,EAAenxR,GAAY,OAAOkxR,GAAWC,eAAenxR,EAAW,CAPhFk0R,EAAY0O,WAAaA,EAQzB1O,EAAY/C,eAAiBA,EAI7B,IAAI0R,GAA6B,SAAUh8R,GAEvC,SAASg8R,IACL,OAAkB,OAAXh8R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUu9R,EAAah8R,GAIhBg8R,CACX,CANiC,CAM/B1R,EAAe3P,EAAAA,EAAoBnrH,cACrC69H,EAAY2O,YAAcA,GAI1B,IAAIC,GAA+B,SAAUj8R,GAEzC,SAASi8R,IACL,OAAkB,OAAXj8R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUw9R,EAAej8R,GAIlBi8R,CACX,CANmC,CAMjC3R,EAAe3P,EAAAA,EAAoBjrH,aA6CrC,SAASi7H,GAAkBxxR,GAAY,OAAOuxR,GAAcC,kBAAkBxxR,EAAW,CA5CzFk0R,EAAY4O,cAAgBA,GAK5B5O,EAAY6O,aAAe,SAAUxlT,GACjC,IAAIylT,EAAU,CACV,CAAEvuT,KAAM,iBAAkBujC,QAASozQ,GAAAA,IAAmBhuS,KAAM,OAAQrK,MAAO,QAC3E,CAAE0B,KAAM,yBAA0BujC,QAASirR,GAAAA,IAA0B7lT,KAAM,SAAUrK,MAAO,UAC5F,CAAE0B,KAAM,wBAAyBujC,QAASkrR,GAAAA,IAAyB9lT,KAAM,SAAUrK,MAAO,WAE9F,OAAQH,EAAAA,cAAoBw+S,GAAUl9R,GAAS,CAAE8iK,SAAUwqH,EAAAA,EAAoBjrH,WAAWS,SAAUllK,MAAOkxS,EAASvuT,KAAM,iBAAkBujC,QAASozQ,GAAAA,IAAmBqE,SAAUjO,EAAAA,EAAoBjrH,WAAWxnJ,SAAS1vB,OAAS9B,GACvO,EAKA22S,EAAYiP,aAAe,SAAU5lT,GACjC,IAAI6lT,EAAU,CACV,CAAE3uT,KAAM,eAAgBujC,QAASmzQ,GAAAA,IAAiB/tS,KAAM,WAExD,CAAE3I,KAAM,mBAAoBujC,QAASqrR,GAAAA,IAAoBjmT,KAAM,cAAerK,MAAO,eACrF,CAAE0B,KAAM,mBAAoBujC,QAASsrR,GAAAA,IAAoBlmT,KAAM,cAAerK,MAAO,eACrF,CAAE0B,KAAM,iBAAkBujC,QAASurR,GAAAA,IAAkBnmT,KAAM,cAAerK,MAAO,eACjF,CAAE0B,KAAM,mBAAoBujC,QAASwrR,GAAAA,IAAoBpmT,KAAM,cAAerK,MAAO,gBAEzF,OAAQH,EAAAA,cAAoBw+S,GAAUl9R,GAAS,CAAE8iK,SAAUwqH,EAAAA,EAAoBnrH,YAAYW,SAAUllK,MAAOsxS,EAAS3uT,KAAM,eAAgBujC,QAASmzQ,GAAAA,IAAiBsE,SAAUjO,EAAAA,EAAoBnrH,YAAYtnJ,SAAS1vB,OAAS9B,GACrO,EAIA22S,EAAY0B,oBAAsB6N,GAKlCvP,EAAY4J,gBAAkB4F,GAS9BxP,EAAY1C,kBAAoBA,GAIhC,IAAImS,GAAyB,SAAU98R,GAEnC,SAAS88R,IACL,OAAkB,OAAX98R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUq+R,EAAS98R,GAIZ88R,CACX,CAN6B,CAM3BnS,GAAkBhQ,EAAAA,EAAoByJ,UAyDxC,SAASgH,GAAuBjyR,GAAY,OAAO6xR,GAAYI,uBAAuBjyR,EAAW,CAQjG,SAASkyR,GAAsBlyR,GAAY,OAAO6xR,GAAYK,sBAAsBlyR,EAAW,CAQ/F,SAASmyR,GAA0BnyR,GAC/B,OAAO6xR,GAAYM,0BAA0BnyR,EACjD,CAQA,SAASoyR,GAAyBpyR,GAAY,OAAO6xR,GAAYO,yBAAyBpyR,EAAW,CAQrG,SAASqyR,GAAoBryR,GAAY,OAAO6xR,GAAYQ,oBAAoBryR,EAAW,CAQ3F,SAASsyR,GAAuBtyR,GAAY,OAAO6xR,GAAYS,uBAAuBtyR,EAAW,CAQjG,SAASuyR,GAAsBvyR,GAAY,OAAO6xR,GAAYU,sBAAsBvyR,EAAW,CAQ/F,SAASwyR,GAAqBxyR,GAAY,OAAO6xR,GAAYW,qBAAqBxyR,EAAW,CAQ7F,SAASyyR,GAAoBzyR,GAAY,OAAO6xR,GAAYY,oBAAoBzyR,EAAW,CA1H3Fk0R,EAAYyP,QAAUA,GAKtBzP,EAAYjB,MAAQ,SAAU11S,GAAS,OAAO3K,EAAAA,cAAoBgxT,GAAW1vS,GAAS,CAAC,EAAG3W,GAAS,EAoCnG22S,EAAYd,IAAM,SAAU71S,GAAS,OAAO3K,EAAAA,cAAoBixT,GAAS3vS,GAAS,CAAC,EAAG3W,GAAS,EAI/F22S,EAAYZ,UAAY,SAAU/1S,GAAS,OAAO3K,EAAAA,cAAoBkxT,GAAe5vS,GAAS,CAAC,EAAG3W,GAAS,EAI3G22S,EAAYT,gBAAkB,SAAUl2S,GAAS,OAAO3K,EAAAA,cAAoBmxT,GAAqB7vS,GAAS,CAAC,EAAG3W,GAAS,EAQvH22S,EAAYjC,uBAAyBA,GAQrCiC,EAAYhC,sBAAwBA,GAUpCgC,EAAY/B,0BAA4BA,GAQxC+B,EAAY9B,yBAA2BA,GAQvC8B,EAAY7B,oBAAsBA,GAQlC6B,EAAY5B,uBAAyBA,GAQrC4B,EAAY3B,sBAAwBA,GAQpC2B,EAAY1B,qBAAuBA,GAQnC0B,EAAYzB,oBAAsBA,GAIlC,IAAIuR,GAA8B,SAAUn9R,GAExC,SAASm9R,IACL,OAAkB,OAAXn9R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU0+R,EAAcn9R,GAIjBm9R,CACX,CANkC,CAMhC/R,GAAuBzQ,EAAAA,EAAoBlzE,eAC7C4lF,EAAY8P,aAAeA,GAI3B,IAAIC,GAA6B,SAAUp9R,GAEvC,SAASo9R,IACL,OAAkB,OAAXp9R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU2+R,EAAap9R,GAIhBo9R,CACX,CANiC,CAM/B/R,GAAsB1Q,EAAAA,EAAoB/yE,cAC5CylF,EAAY+P,YAAcA,GAI1B,IAAIC,GAAiC,SAAUr9R,GAE3C,SAASq9R,IACL,OAAkB,OAAXr9R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU4+R,EAAiBr9R,GAIpBq9R,CACX,CANqC,CAMnC/R,GAA0B3Q,EAAAA,EAAoBzyE,kBAChDmlF,EAAYgQ,gBAAkBA,GAI9B,IAAIC,GAAgC,SAAUt9R,GAE1C,SAASs9R,IACL,OAAkB,OAAXt9R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU6+R,EAAgBt9R,GAInBs9R,CACX,CANoC,CAMlC/R,GAAyB5Q,EAAAA,EAAoBvyE,iBAC/CilF,EAAYiQ,eAAiBA,GAI7B,IAAIC,GAA2B,SAAUv9R,GAErC,SAASu9R,IACL,OAAkB,OAAXv9R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU8+R,EAAWv9R,GAIdu9R,CACX,CAN+B,CAM7B/R,GAAoB7Q,EAAAA,EAAoB/rF,YAC1Cy+F,EAAYkQ,UAAYA,GAIxB,IAAIC,GAA8B,SAAUx9R,GAExC,SAASw9R,IACL,OAAkB,OAAXx9R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAU++R,EAAcx9R,GAIjBw9R,CACX,CANkC,CAMhC/R,GAAuB9Q,EAAAA,EAAoBryE,eAC7C+kF,EAAYmQ,aAAeA,GAI3B,IAAIC,GAA6B,SAAUz9R,GAEvC,SAASy9R,IACL,OAAkB,OAAXz9R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUg/R,EAAaz9R,GAIhBy9R,CACX,CANiC,CAM/B/R,GAAsB/Q,EAAAA,EAAoB1pF,cAC5Co8F,EAAYoQ,YAAcA,GAI1B,IAAIC,GAA4B,SAAU19R,GAEtC,SAAS09R,IACL,OAAkB,OAAX19R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUi/R,EAAY19R,GAIf09R,CACX,CANgC,CAM9B/R,GAAqBhR,EAAAA,EAAoB7rF,aAC3Cu+F,EAAYqQ,WAAaA,GAIzB,IAAIC,GAA2B,SAAU39R,GAErC,SAAS29R,IACL,OAAkB,OAAX39R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUk/R,EAAW39R,GAId29R,CACX,CAN+B,CAM7B/R,GAAoBjR,EAAAA,EAAoBnrF,YAQ1C,SAASs8F,GAAiB3yR,GAAY,OAAO0yR,GAAaC,iBAAiB3yR,EAAW,CAPtFk0R,EAAYsQ,UAAYA,GAQxBtQ,EAAYvB,iBAAmBA,GAI/B,IAAI8R,GAAwB,SAAU59R,GAElC,SAAS49R,IACL,OAAkB,OAAX59R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUm/R,EAAQ59R,GAIX49R,CACX,CAN4B,CAM1B9R,GAAiBnR,EAAAA,EAAoB+H,SAQvC,SAASwJ,GAAmB/yR,GAAY,OAAO8yR,GAAeC,mBAAmB/yR,EAAW,CAP5Fk0R,EAAYuQ,OAASA,GAQrBvQ,EAAYnB,mBAAqBA,GAIjC,IAAI2R,GAA0B,SAAU79R,GAEpC,SAAS69R,IACL,OAAkB,OAAX79R,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUo/R,EAAU79R,GAIb69R,CACX,CAN8B,CAM5B3R,GAAmBvR,EAAAA,EAAoByG,WACzCiM,EAAYwQ,SAAWA,GAIvB,IAAIhR,GAAgC,SAAU7sR,GAE1C,SAAS6sR,IACL,OAAkB,OAAX7sR,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CACA,OAJAiG,GAAUouR,EAAgB7sR,GAInB6sR,CACX,CANoC,CAMlCiR,IACFzQ,EAAYR,eAAiBA,EAChC,CA3qBD,CA2qBGQ,KAAgBA,GAAc,CAAC,8BKnrBvB0Q,GAAc,CAErB/8I,UAAWA,EAAAA,IACXG,eAAgBA,EAAAA,IAChBM,cAAeA,EAAAA,IACfe,cAAeA,EAAAA,IACfZ,aAAcA,EAAAA,IACdmD,YAAaA,EAAAA,IACbe,OAAQA,EAAAA,IACRE,UAAWA,EAAAA,IACX7C,YAAaA,EAAAA,IAEb8xB,WAAYA,EAAAA,IACZK,cAAeA,EAAAA,IACfwG,WAAYA,EAAAA,IAEZ30C,KAAMA,EAAAA,IACNtB,YAAaA,EAAAA,IACbc,UAAWA,EAAAA,IACX/0J,SAAUA,EAAAA,IACV4xJ,MAAOA,EAAAA,IACPD,aAAcA,EAAAA,IACdX,KAAMA,EAAAA,IACNqK,OAAQA,EAAAA,IACRd,SAAUA,EAAAA,IACVY,SAAUA,EAAAA,IACVhE,aAAcA,EAAAA,IACdj9C,UAAWA,EAAAA,IACXkpD,cAAeA,EAAAA,IAEf6I,UAAWA,EAAAA,IACXpF,KAAMA,EAAAA,IACNK,WAAYA,EAAAA,IACZmC,UAAWA,EAAAA,IACXD,QAASA,EAAAA,IACTP,SAAUA,EAAAA,IACVS,YAAaA,EAAAA,IACbC,UAAWA,EAAAA,IACXnB,WAAYA,EAAAA,IACZnP,aAAcA,EAAAA,IACdgM,QAASA,EAAAA,IACTN,UAAWA,EAAAA,IACXoB,QAASA,EAAAA,IACTwB,YAAaA,EAAAA,IACbE,eAAgBA,EAAAA,IAChBI,YAAaA,EAAAA,IACbE,kBAAmBA,EAAAA,IACnB8B,YAAaA,EAAAA,IAEbuI,gBAAiBA,EAAAA,IACjBsO,aAAcA,EAAAA,IACdO,mBAAoBA,EAAAA,IACpBE,YAAaA,EAAAA,IACbE,kBAAmBA,EAAAA,IACnBC,OAAQA,EAAAA,IACRE,SAAUA,EAAAA,IACVjU,KAAMA,EAAAA,IACNkU,cAAeA,EAAAA,IACfE,SAAUA,EAAAA,IACVE,oBAAqBA,EAAAA,IACrBC,eAAgBA,EAAAA,IAChBC,WAAYA,EAAAA,IACZI,oBAAqBA,EAAAA,IACrBC,iBAAkBA,EAAAA,IAClBC,UAAWA,EAAAA,IACXY,OAAQA,EAAAA,IACRrV,aAAcA,EAAAA,IACd2K,WAAYA,EAAAA,IACZiL,SAAUA,EAAAA,IACVC,cAAeA,EAAAA,IACfE,aAAcA,EAAAA,IACdC,cAAeA,EAAAA,IACfC,WAAYA,EAAAA,IAEZmvC,QAASA,EAAAA,IACTiB,KAAMA,EAAAA,IACNhB,KAAMA,EAAAA,IACNiB,UAAWA,EAAAA,IACXC,UAAWA,EAAAA,IAEXC,UAAWA,EAAAA,IACXE,WAAYA,EAAAA,IACZK,cAAeA,EAAAA,IACfG,OAAQA,EAAAA,IACRC,SAAUA,EAAAA,IACVC,gBAAiBA,EAAAA,IACjBC,iBAAkBA,EAAAA,IAClBC,gBAAiBA,EAAAA,IACjBC,iBAAkBA,EAAAA,IAClBC,YAAaA,EAAAA,IACbC,kBAAmBA,EAAAA,IACnBE,uBAAwBA,EAAAA,IAExBhnB,OAAQA,EAAAA,IACRE,eAAgBA,EAAAA,GAEhB7wB,YAAaA,EAAAA,IACbE,WAAYA,EAAAA,IACZC,SAAUA,EAAAA,IACVC,aAAcA,EAAAA,IACdM,WAAYA,EAAAA,IACZS,cAAeA,EAAAA,IACfM,aAAcA,EAAAA,IACdK,aAAcA,EAAAA,IAEdquC,WAAYA,EAAAA,IAEZyB,UAAWA,EAAAA,IAEXlQ,aAAcA,EAAAA,IACdzJ,UAAWA,EAAAA,IACXJ,aAAcA,EAAAA,IACd3C,WAAYA,EAAAA,IACZC,UAAWA,EAAAA,IACXC,cAAeA,EAAAA,IACfM,gBAAiBA,EAAAA,IACjBC,YAAaA,EAAAA,IACblE,SAAUA,EAAAA,IACVC,SAAUA,EAAAA,IACVC,SAAUA,EAAAA,IACVoE,cAAeA,EAAAA,IACfC,WAAYA,EAAAA,IACZC,eAAgBA,EAAAA,IAChBzB,WAAYA,EAAAA,IACZQ,eAAgBA,EAAAA,IAChBoB,cAAeA,EAAAA,IACf7E,SAAUA,EAAAA,IACV0D,gBAAiBA,EAAAA,IACjBmH,eAAgBA,EAAAA,IAChBF,wBAAyBA,EAAAA,IACzBT,sBAAuBA,EAAAA,IACvB4C,aAAcA,EAAAA,IACdC,UAAWA,EAAAA,IACXoa,gBAAiBA,EAAAA,IACjBE,eAAgBA,EAAAA,IAChBE,aAAcA,EAAAA,IACdla,YAAaA,EAAAA,IACbC,OAAQA,EAAAA,IACRoZ,aAAcA,EAAAA,IACdG,YAAaA,EAAAA,IACbhZ,UAAWA,EAAAA,IACXE,WAAYA,EAAAA,IACZU,UAAWA,EAAAA,IACXC,kBAAmBA,EAAAA,IACnBM,YAAaA,EAAAA,IACbG,aAAcA,EAAAA,IACdS,gBAAiBA,EAAAA,IACjBC,mBAAoBA,EAAAA,IACpBC,iBAAkBA,EAAAA,IAClBC,aAAcA,EAAAA,IACdG,YAAaA,EAAAA,kCCtMjB,IAAIhhN,6BAIJ,IAAI2pG,EAAO,cAIPC,EAAS,gBAITmT,EAAY,mBAIZsmG,EAAgB,uBAIhBC,EAAY,mBAIZC,EAAc,qBAIdmrF,EAAkB,mBAIlBO,EAAa,oBAIbr4R,EAAQ,eAIRotK,EAAY,mBAIZlF,EAAkB,yBAIlBzzE,EAAM,aAIN8nM,EAAkB,yBAIlBxqS,EAAkB,yBAIlBwuN,EAAc,qBAIdw4E,EAAkB,yBAIlBn4E,EAAe,sBAIfG,EAAc,qBAIdM,EAAkB,yBAIlBE,EAAiB,wBAIjBxZ,EAAY,mBAIZ0Z,EAAe,sBAIfrX,EAAc,qBAIdnC,EAAa,oBAIbU,EAAY,mBAIZovF,EAA6B,gCAI7BC,EAAyB,0CAIzBC,EAAuB,wCAIvBC,EAA2B,4CAI3BC,EAAwB,iCAIxBC,EAAwB,iCAIxBG,EAAwB,iCAIxBC,EAAoB,2CAIpBC,EAAkB,yCAIlBC,EAAmB,kCAInBC,EAAmB,kCAInBmB,EAAc,eAIdC,EAAyB,4BAIzBC,EAAqB,uBAIrBC,EAAmB,qBAInBC,EAAqB,uBAIrBC,EAAmB,qBAInBC,EAAoB,sBAIpBC,EAAoB,sBAIpBC,EAAoB,sBAIpBC,EAAW,kBAIXE,EAAsB,+BAItBC,EAAiB,yBAIjBC,EAAiB,yBAIjBkB,EAAS,gBAIT78E,GAAO,cAIPhB,GAAO,cAIP15M,GAAW,kBAIX43R,GAAW,kBAIX1nS,GAAS,gBAITooS,GAAY,mBAIZE,GAAa,oBAIbE,GAAc,qBAIdE,GAAe,sBAIf11L,GAAS,gBAIT+1L,GAAU,iBAIV50H,GAAc,qBAIdE,GAAa,oBAIbiyH,GAAuB,gCAIvBC,GAAyB,kCAIzBC,GAAqB,8BAIrBC,GAAwB,iCAIxBC,GAAsB,8BAItBC,GAAyB,iCAIzBC,GAAqB,6BAIrBC,GAAwB,gCAIxBC,GAAuB,+BAIvBC,GAAuB,+BAIvBC,GAAyB,iCAIzBC,GAAuB,+BAIvBC,GAAuB,+BAIvBC,GAAuB,+BAIvBC,GAAqB,6BAIrB/F,GAAc,qBAId2G,GAAiB,6BAIjBG,GAAiB,6BAIjB8L,GAAiB,wBAIjBK,GAAwB,+BAIxBE,GAA0B,iCAI1BE,GAAyB,gCAIzBE,GAA2B,kCAI3BE,GAA6B,oCAI7BE,GAA4B,mCAI5BE,GAA2B,kCAI3BE,GAA6B,oCAI7BE,GAA4B,mCAI5BE,GAA4B,mCAI5BG,GAAqB,4BAIrBE,GAA0B,iCAI1BuB,GAAgC,uCAIhCC,GAAsB,6BAItBE,GAA8B,qCAI9BC,GAAuB,8BAIvBC,GAA2B,kCAI3BC,GAA0B,iCAI1BC,GAA4B,mCAI5BC,GAA4B,mCAI5BC,GAA2B,kCAI3BC,GAA4B,mCAI5BC,GAA4B,mCAI5BC,GAA4B,mCAI5BC,GAAmB,0BAInBC,GAAyB,gCAIzBC,GAAqB,4BAIrBC,GAAuB,8BAIvByD,GAAkB,yBAIlBG,GAA2B,kCAI3BC,GAA6B,oCAI7BC,GAA4B,mCAI5BC,GAA6B,oCAI7BE,GAAsB,6BAItBE,GAAwB,+BAIxBE,GAAuB,8BAIvBG,GAAqB,4BAIrBE,GAAwB,+BAIxBG,GAAsB,6BAItBC,GAAqC,4CAIrCC,GAAmC,0CAInCG,GAAsB,6BAItBC,GAAyB,gCAIzBC,GAAuB,8BAIvBC,GAAwB,+BAIxBC,GAA0B,iCAI1BC,GAA2B,kCAI3BC,GAA6B,oCAI7BC,GAA6B,oCAI7BC,GAAiC,wCAIjCC,GAA6B,oCAI7BC,GAA6B,oCAI7BC,GAA6B,oCAI7BE,GAAiC,wCAIjCE,GAAoB,2BAIpBC,GAA0B,iCAI1BC,GAA+B,sCAI/BC,GAAyB,gCAIzBC,GAAiC,wCAIjCC,GAAkC,yCAIlCC,GAA4B,mCAI5BC,GAA4B,mCAI5BC,GAAkC,yCAIlCC,GAAyB,gCAIzBC,GAA0B,iCAI1BC,GAAsB,6BAItBC,GAAwB,+BAIxB0D,GAAkB,yBAIlBC,GAAmB,0BAInBC,GAAoB,2BAIpBC,GAAoB,2BAIpBC,GAAoB,2BAIpBC,GAAoB,2BAIpBC,GAAmB,0BAInBC,GAAmB,0BAInBC,GAAoB,2BAIpBC,GAAqB,4BAIrBC,GAAqB,4BAIrBC,GAAoB,2BAIpBhM,GAAW,kBAIJzqR,KAAYj4B,EAAK,CAAC,GACtB2pG,GAAQ,OACX3pG,EAAG4pG,GAAU,SACb5pG,EAAG+8G,GAAa,YAChB/8G,EAAGqjN,GAAiB,gBACpBrjN,EAAGsjN,GAAa,YAChBtjN,EAAGujN,GAAe,cAClBvjN,EAAGyyS,GAAU,mBACbzyS,EAAG41N,IAAQ,OACX51N,EAAG40N,IAAQ,OACX50N,EAAGkb,IAAY,YACflb,EAAG8yS,IAAY,YACf9yS,EAAGoL,IAAU,SACbpL,EAAGwzS,IAAa,kBAChBxzS,EAAG0zS,IAAc,mBACjB1zS,EAAG4zS,IAAe,cAClB5zS,EAAG8zS,IAAgB,UACnB9zS,EAAGo+G,IAAU,SACbp+G,EAAGm0S,IAAW,UACdn0S,EAAGu/K,IAAe,sBAClBv/K,EAAGy/K,IAAc,wBACjBz/K,EAAG4W,GAAS,QACZ5W,EAAGgkL,GAAa,aAChBhkL,EAAG8+K,GAAmB,mBACtB9+K,EAAGqrG,GAAO,gBACVrrG,EAAGmzS,GAAmB,QACtBnzS,EAAG2I,GAAmB,mBAEtB3I,EAAGm3N,GAAe,iBAClBn3N,EAAG2vS,GAAmB,2BACtB3vS,EAAGw3N,GAAgB,gBACnBx3N,EAAG23N,GAAe,gBAClB33N,EAAGi4N,GAAmB,yBACtBj4N,EAAGm4N,GAAkB,0BACrBn4N,EAAG2+M,GAAa,aAChB3+M,EAAGq4N,GAAgB,gBACnBr4N,EAAGghN,GAAe,eAClBhhN,EAAG6+M,GAAc,cACjB7+M,EAAGu/M,GAAa,aAEhBv/M,EAAG0uS,GAAmB,mBACtB1uS,EAAG2uS,GAA8B,mBACjC3uS,EAAG4uS,GAA0B,cAC7B5uS,EAAG6uS,GAAwB,QAC3B7uS,EAAG8uS,GAA4B,0BAC/B9uS,EAAG+uS,GAAyB,SAC5B/uS,EAAGgvS,GAAyB,SAE5BhvS,EAAGivS,GAAc,cACjBjvS,EAAGmvS,GAAyB,cAC5BnvS,EAAGovS,GAAqB,cACxBpvS,EAAGqvS,GAAmB,QACtBrvS,EAAGsvS,GAAoB,SACvBtvS,EAAGuvS,GAAoB,SAEvBvvS,EAAG0wS,GAAe,eAClB1wS,EAAG2wS,GAA0B,eAC7B3wS,EAAG4wS,GAAsB,cACzB5wS,EAAG6wS,GAAoB,QACvB7wS,EAAG8wS,GAAsB,iBACzB9wS,EAAG+wS,GAAoB,aACvB/wS,EAAGgxS,GAAqB,cACxBhxS,EAAGixS,GAAqB,SACxBjxS,EAAGkxS,GAAqB,SAExBlxS,EAAGmxS,GAAY,YACfnxS,EAAGqxS,GAAuB,YAC1BrxS,EAAGsxS,GAAkB,SACrBtxS,EAAGuxS,GAAkB,SAErBvxS,EAAG0xS,IAAwB,mBAC3B1xS,EAAG2xS,IAA0B,mBAC7B3xS,EAAG4xS,IAAsB,OACzB5xS,EAAG6xS,IAAyB,UAC5B7xS,EAAG8xS,IAAuB,aAC1B9xS,EAAG+xS,IAA0B,eAC7B/xS,EAAGgyS,IAAsB,UACzBhyS,EAAGiyS,IAAyB,cAC5BjyS,EAAGkyS,IAAwB,aAC3BlyS,EAAGmyS,IAAwB,wBAC3BnyS,EAAGoyS,IAA0B,6BAC7BpyS,EAAGqyS,IAAwB,qBAC3BryS,EAAGsyS,IAAwB,OAC3BtyS,EAAGuyS,IAAwB,OAC3BvyS,EAAGwyS,IAAsB,qBACzBxyS,EAAGysS,IAAe,8CAClBzsS,EAAGozS,IAAkB,aACrBpzS,EAAGuzS,IAAkB,aACrBvzS,EAAGq/S,IAAkB,kBACrBr/S,EAAG0/S,IAAyB,WAC5B1/S,EAAG4/S,IAA2B,aAC9B5/S,EAAG8/S,IAA0B,YAC7B9/S,EAAGggT,IAA4B,cAC/BhgT,EAAGkgT,IAA8B,gBACjClgT,EAAGogT,IAA6B,eAChCpgT,EAAGsgT,IAA4B,cAC/BtgT,EAAGwgT,IAA8B,gBACjCxgT,EAAG0gT,IAA6B,eAChC1gT,EAAG4gT,IAA6B,eAChC5gT,EAAG+gT,IAAsB,OACzB/gT,EAAGihT,IAA2B,cAC9BjhT,EAAGwiT,IAAiC,qBACpCxiT,EAAGyiT,IAAuB,QAC1BziT,EAAG2iT,IAA+B,kBAClC3iT,EAAG4iT,IAAwB,SAC3B5iT,EAAG6iT,IAA4B,eAC/B7iT,EAAG8iT,IAA2B,YAC9B9iT,EAAG+iT,IAA6B,eAChC/iT,EAAGgjT,IAA6B,eAChChjT,EAAGijT,IAA4B,aAC/BjjT,EAAGkjT,IAA6B,eAChCljT,EAAGmjT,IAA6B,eAChCnjT,EAAGojT,IAA6B,eAChCpjT,EAAGqjT,IAAoB,KACvBrjT,EAAGsjT,IAA0B,YAC7BtjT,EAAGujT,IAAsB,OACzBvjT,EAAGwjT,IAAwB,SAC3BxjT,EAAGinT,IAAmB,mBACtBjnT,EAAGonT,IAA4B,aAC/BpnT,EAAGqnT,IAA8B,eACjCrnT,EAAGsnT,IAA6B,cAChCtnT,EAAGunT,IAA8B,eACjCvnT,EAAGynT,IAAuB,OAC1BznT,EAAG2nT,IAAyB,SAC5B3nT,EAAG6nT,IAAwB,QAC3B7nT,EAAGgoT,IAAsB,MACzBhoT,EAAGkoT,IAAyB,SAC5BloT,EAAGqoT,IAAuB,OAC1BroT,EAAGsoT,IAAsC,0BACzCtoT,EAAGuoT,IAAoC,wBACvCvoT,EAAG0oT,IAAuB,OAC1B1oT,EAAG2oT,IAA0B,UAC7B3oT,EAAG4oT,IAAwB,QAC3B5oT,EAAG6oT,IAAyB,SAC5B7oT,EAAG8oT,IAA2B,WAC9B9oT,EAAG+oT,IAA4B,YAC/B/oT,EAAGgpT,IAA8B,eACjChpT,EAAGipT,IAA8B,eACjCjpT,EAAGkpT,IAAkC,mBACrClpT,EAAGmpT,IAA8B,eACjCnpT,EAAGopT,IAA8B,eACjCppT,EAAGqpT,IAA8B,eACjCrpT,EAAGupT,IAAkC,mBACrCvpT,EAAGypT,IAAqB,KACxBzpT,EAAG0pT,IAA2B,YAC9B1pT,EAAG2pT,IAAgC,gBACnC3pT,EAAG4pT,IAA0B,UAC7B5pT,EAAG6pT,IAAkC,WACrC7pT,EAAG8pT,IAAmC,YACtC9pT,EAAG+pT,IAA6B,cAChC/pT,EAAGgqT,IAA6B,cAChChqT,EAAGiqT,IAAmC,oBACtCjqT,EAAGkqT,IAA0B,UAC7BlqT,EAAGmqT,IAA2B,WAC9BnqT,EAAGoqT,IAAuB,OAC1BpqT,EAAGqqT,IAAyB,SAC5BrqT,EAAG+tT,IAAmB,OACtB/tT,EAAGguT,IAAoB,QACvBhuT,EAAGiuT,IAAqB,SACxBjuT,EAAGkuT,IAAqB,SACxBluT,EAAGmuT,IAAqB,SACxBnuT,EAAGouT,IAAqB,SACxBpuT,EAAGquT,IAAoB,QACvBruT,EAAGsuT,IAAoB,QACvBtuT,EAAGuuT,IAAqB,SACxBvuT,EAAGwuT,IAAsB,UACzBxuT,EAAGyuT,IAAsB,UACzBzuT,EAAG0uT,IAAqB,SACxB1uT,EAAG0iT,IAAY,OACf1iT,GAIOmL,GAAO,CACdw+F,KAAMA,EACNC,OAAQA,EACRmT,UAAWA,EACXsmG,cAAeA,EACfC,UAAWA,EACXC,YAAaA,EACbkvF,OAAQA,EACR78E,KAAMA,GACNhB,KAAMA,GACN15M,SAAUA,GACV43R,SAAUA,GACV1nS,OAAQA,GACRooS,UAAWA,GACXE,WAAYA,GACZE,YAAaA,GACbE,aAAcA,GACd11L,OAAQA,GACR+1L,QAASA,GACT50H,YAAaA,GACbE,WAAYA,GACZ7oK,MAAOA,EACPotK,UAAWA,EACXlF,gBAAiBA,EACjBzzE,IAAKA,EACL8nM,gBAAiBA,EACjBxqS,gBAAiBA,EACjBwuN,YAAaA,EACbw4E,gBAAiBA,EACjBn4E,aAAcA,EACdG,YAAaA,EACbM,gBAAiBA,EACjBE,eAAgBA,EAChBxZ,UAAWA,EACX0Z,aAAcA,EACdrX,YAAaA,EACbnC,WAAYA,EACZU,UAAWA,EACXmvF,gBAAiBA,EACjBC,2BAA4BA,EAC5BC,uBAAwBA,EACxBC,qBAAsBA,EACtBC,yBAA0BA,EAC1BC,sBAAuBA,EACvBC,sBAAuBA,EACvBC,WAAYA,EACZE,sBAAuBA,EACvBC,kBAAmBA,EACnBC,gBAAiBA,EACjBC,iBAAkBA,EAClBC,iBAAkBA,EAClBmB,YAAaA,EACbC,uBAAwBA,EACxBC,mBAAoBA,EACpBC,iBAAkBA,EAClBC,mBAAoBA,EACpBC,iBAAkBA,EAClBC,kBAAmBA,EACnBC,kBAAmBA,EACnBC,kBAAmBA,EACnBC,SAAUA,EACVE,oBAAqBA,EACrBC,eAAgBA,EAChBC,eAAgBA,EAChBG,qBAAsBA,GACtBC,uBAAwBA,GACxBC,mBAAoBA,GACpBC,sBAAuBA,GACvBC,oBAAqBA,GACrBC,uBAAwBA,GACxBC,mBAAoBA,GACpBC,sBAAuBA,GACvBC,qBAAsBA,GACtBC,qBAAsBA,GACtBC,uBAAwBA,GACxBC,qBAAsBA,GACtBC,qBAAsBA,GACtBC,qBAAsBA,GACtBC,mBAAoBA,GACpB/F,YAAaA,GACb2G,eAAgBA,GAChBG,eAAgBA,GAChB8L,eAAgBA,GAChBK,sBAAuBA,GACvBE,wBAAyBA,GACzBE,uBAAwBA,GACxBE,yBAA0BA,GAC1BE,2BAA4BA,GAC5BE,0BAA2BA,GAC3BE,yBAA0BA,GAC1BE,2BAA4BA,GAC5BE,0BAA2BA,GAC3BE,0BAA2BA,GAC3BG,mBAAoBA,GACpBE,wBAAyBA,GACzBuB,8BAA+BA,GAC/BC,oBAAqBA,GACrBE,4BAA6BA,GAC7BC,qBAAsBA,GACtBC,yBAA0BA,GAC1BC,wBAAyBA,GACzBC,0BAA2BA,GAC3BC,0BAA2BA,GAC3BC,yBAA0BA,GAC1BC,0BAA2BA,GAC3BC,0BAA2BA,GAC3BC,0BAA2BA,GAC3BC,iBAAkBA,GAClBC,uBAAwBA,GACxBC,mBAAoBA,GACpBC,qBAAsBA,GACtByD,gBAAiBA,GACjBG,yBAA0BA,GAC1BC,2BAA4BA,GAC5BC,0BAA2BA,GAC3BC,2BAA4BA,GAC5BE,oBAAqBA,GACrBE,sBAAuBA,GACvBE,qBAAsBA,GACtBG,mBAAoBA,GACpBE,sBAAuBA,GACvBG,oBAAqBA,GACrBC,mCAAoCA,GACpCC,iCAAkCA,GAClCG,oBAAqBA,GACrBC,uBAAwBA,GACxBC,qBAAsBA,GACtBC,sBAAuBA,GACvBC,wBAAyBA,GACzBC,yBAA0BA,GAC1BC,2BAA4BA,GAC5BC,2BAA4BA,GAC5BC,+BAAgCA,GAChCC,2BAA4BA,GAC5BC,2BAA4BA,GAC5BC,2BAA4BA,GAC5BE,+BAAgCA,GAChCE,kBAAmBA,GACnBC,wBAAyBA,GACzBC,6BAA8BA,GAC9BC,uBAAwBA,GACxBC,+BAAgCA,GAChCC,gCAAiCA,GACjCC,0BAA2BA,GAC3BC,0BAA2BA,GAC3BC,gCAAiCA,GACjCC,uBAAwBA,GACxBC,wBAAyBA,GACzBC,oBAAqBA,GACrBC,sBAAuBA,GACvB0D,gBAAiBA,GACjBC,iBAAkBA,GAClBC,kBAAmBA,GACnBC,kBAAmBA,GACnBC,kBAAmBA,GACnBC,kBAAmBA,GACnBC,iBAAkBA,GAClBC,iBAAkBA,GAClBC,kBAAmBA,GACnBC,mBAAoBA,GACpBC,mBAAoBA,GACpBC,kBAAmBA,GACnBhM,SAAUA,0ICt9BVzK,EAAuB,CACvB7/Q,YAAa,SAAUn2B,GAAK,OAAOA,EAAEub,gBAAkB,EACvDkoO,cAAe,SAAUzjP,GAAK,OAAOA,EAAEub,gBAAkB,GAKzDg7R,EAAiB,CACjB7C,WAAY,QAKZjoE,EAAe,SAAU32L,GAEzB,IADA,IAAItmB,EAAO,GACFwR,EAAK,EAAGA,EAAKhN,UAAU7qB,OAAQ63B,IACpCxR,EAAKwR,EAAK,GAAKhN,UAAUgN,GAK7B,OAHAxR,EAAKvZ,SAAQ,SAAUlJ,EAAOmP,GAC1B45B,EAAQA,EAAMthC,QAAQ,IAAM0H,EAAQ,IAAK+R,OAAOlhB,GACpD,IACO+oC,CACX,EAIIuwM,EAAa,SAAUt5N,EAAI+7N,GAC3B,OAAOA,EAAUnjP,SAAS3K,MAAQH,EAAAA,aAAmBkyB,EAAIA,EAAGvnB,MAAQ3K,EAAAA,cAAoB,OAAQ,CAAEG,MAAO8tP,EAAUnjP,SAAS3K,OAAS+xB,EAAGvnB,MAAMzK,WAAcgyB,CAChK,EAIIg3M,EAAQ,CAAC,KAAM,KAAM,KAIrB1iM,EAAgB,CAAE9O,QAAS,CAAEksQ,aAAc,IAAKC,cAAe,MAI/D2pB,EAAe,CACf,CAAE7J,QAASt0S,EAAAA,EAAK4iT,gBAAiBznT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK4iT,iBAAkB//S,MAAO,QAC9E,CAAEyxS,QAASt0S,EAAAA,EAAK6iT,iBAAkB1nT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK6iT,kBAAmBhgT,MAAO,SAChF,CAAEyxS,QAASt0S,EAAAA,EAAK8iT,kBAAmB3nT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK8iT,mBAAoBjgT,MAAO,UAClF,CAAEyxS,QAASt0S,EAAAA,EAAK+iT,kBAAmB5nT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAK+iT,mBAAoBlgT,MAAO,UAClF,CAAEyxS,QAASt0S,EAAAA,EAAKgjT,kBAAmB7nT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKgjT,mBAAoBngT,MAAO,UAClF,CAAEyxS,QAASt0S,EAAAA,EAAKijT,kBAAmB9nT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKijT,mBAAoBpgT,MAAO,UAClF,CAAEyxS,QAASt0S,EAAAA,EAAKkjT,iBAAkB/nT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKkjT,kBAAmBrgT,MAAO,SAChF,CAAEyxS,QAASt0S,EAAAA,EAAKmjT,iBAAkBhoT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKmjT,kBAAmBtgT,MAAO,SAChF,CAAEyxS,QAASt0S,EAAAA,EAAKojT,kBAAmBjoT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKojT,mBAAoBvgT,MAAO,UAClF,CAAEyxS,QAASt0S,EAAAA,EAAKqjT,mBAAoBloT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKqjT,oBAAqBxgT,MAAO,WACpF,CAAEyxS,QAASt0S,EAAAA,EAAKsjT,mBAAoBnoT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKsjT,oBAAqBzgT,MAAO,WACpF,CAAEyxS,QAASt0S,EAAAA,EAAKujT,kBAAmBpoT,KAAM2xB,EAAAA,EAAS9sB,EAAAA,EAAKujT,mBAAoB1gT,MAAO,WAKtF,SAASo5F,EAAW/B,EAAKnoB,GACrB,IAAK,IAAIiiD,EAAQ95B,EAAI85B,MAAOA,EAAQ,EAAGA,IAAS,CAC5C,IAAI/2B,EAAO/C,EAAI+C,KAAK+2B,GACpB,GAAIjiD,EAAUkrB,GACV,MAAO,CAAEA,KAAMA,EAAM+2B,MAAOA,EAEpC,CACA,OAAO,IACX,oDCpDWorK,sBClBPntR,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAGI00E,EAAO+gM,EAAAA,EAAoB/gM,KAAMoT,EAAY2tL,EAAAA,EAAoB3tL,UAAWnT,EAAS8gM,EAAAA,EAAoB9gM,OACzGkgF,EAA2B,qBAAdjzI,WAA4B,MAAM7gB,KAAK6gB,UAAU8T,oBDd9DvtC,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,GASA,SAAWs1Q,GASPA,EAAY5rH,YAHZ,SAAqB10I,EAAMumC,EAAS66E,GAChC,OAAOl4H,SAAQw7R,EAAAA,EAAAA,KAAkBn+O,EAAS66E,EAA3BsjK,CAAoC1kR,EAAK3uC,MAAO2uC,EAAKs8B,UACxE,EAUAgkO,EAAY5tH,iBAHZ,SAA0B1yI,EAAMqc,EAAS+kG,GACrC,OAAOujK,EAAAA,EAAAA,KAAuBtoQ,EAAS+kG,EAAhCujK,CAAyC3kR,EAAK3uC,MAAO2uC,EAAKs8B,SACrE,EAUAgkO,EAAYltH,UAHZ,SAAmBpzI,EAAMqc,EAAS+kG,GAC9B,OAAOwjK,EAAAA,EAAAA,KAAgBvoQ,EAAS+kG,EAAzBwjK,CAAkC5kR,EAAK3uC,MAAO2uC,EAAKs8B,SAC9D,EAUAgkO,EAAYukB,cAHZ,SAAuBxzT,EAAOyoG,GAC1B,OAAOg+E,EAAAA,EAAAA,KAAoBzmL,EAAOyoG,EACtC,EAYAwmM,EAAYvzH,UAHZ,SAAmB17K,EAAOyoG,GACtB,OAAOgrN,EAAAA,EAAAA,KAAgBzzT,EAAOyoG,EAClC,EAUAwmM,EAAYykB,eAHZ,SAAwB1zT,EAAOimL,GAC3B,OAAOS,EAAAA,EAAAA,KAAqB1mL,EAAO,CAAEimL,WAAYA,EAAY/uB,MAAO,IACxE,EAWA+3I,EAAYjmF,eAHZ,SAAwB59M,GACpB,OAAOuoT,EAAAA,EAAAA,KAAqBvoT,EAChC,EAaA6jS,EAAYC,eAHZ,SAAwB1yO,EAAQpxD,EAAM8yK,GAClC,OAAOE,EAAAA,EAAAA,MAAavB,EAAAA,EAAAA,KAAezxK,GAAOoxD,OAAyBr8D,IAAjB+9K,EAA6BA,EAAe,CAAElZ,mBAAoB,QACxH,EAwBAiqI,EAAYpzE,YAHZ,SAAqB+3F,EAAY/rS,EAAMoiD,GACnC,OAAO4pP,EAAAA,EAAAA,KAAkBD,EAAY/rS,EAAMoiD,EAC/C,EAUAglO,EAAYtsH,oBAHZ,SAA6Bh0I,EAAMj8B,EAAOsvK,GACtC,OAAO8xI,EAAAA,EAAAA,KAA0BphT,EAAOsvK,EAAjC8xI,CAA8CnlR,EAAK3uC,MAAO2uC,EAAKs8B,SAC1E,EAUAgkO,EAAYlsH,gBAHZ,SAAyB/iL,GACrB,OAAO+zT,EAAAA,EAAAA,KAAsB/zT,EACjC,EAYAivS,EAAY1wH,QAHZ,SAAiBv+K,GACb,OAAOg0T,EAAAA,EAAAA,KAAch0T,EACzB,EAQAivS,EAAY7uH,gBAHZ,SAAyBpgL,EAAOW,GAC5B,OAAOszT,EAAAA,EAAAA,KAAsBj0T,EAAOW,EACxC,EAUAsuS,EAAYxvH,QAHZ,SAAiBz/K,EAAOohK,GACpB,OAAO8yJ,EAAAA,EAAAA,KAAcl0T,EAAOohK,EAChC,EAUA6tI,EAAY9vH,QAHZ,SAAiBn/K,EAAOgrD,GACpB,OAAOmpQ,EAAAA,EAAAA,KAAcn0T,EAAOgrD,EAChC,EAUAikP,EAAY7rH,QAHZ,SAAiBpjL,EAAOyoG,GACpB,OAAO2rN,EAAAA,EAAAA,KAAcp0T,EAAOyoG,EAChC,EAUAwmM,EAAY5oH,aAHZ,SAAsB13I,EAAMumC,EAAS66E,EAASnnI,GAC1C,OAAOiP,SAAQw8R,EAAAA,EAAAA,KAAmBn/O,EAAS66E,EAASnnI,EAArCyrS,CAA0C1lR,EAAK3uC,MAAO2uC,EAAKs8B,UAC9E,EAWAgkO,EAAY/yH,WAHZ,SAAoBr1H,GAChB,OAAOytQ,EAAAA,EAAAA,KAAiBztQ,EAC5B,EAaAooP,EAAYjoI,WAHZ,SAAoBr4H,EAAMm+D,EAAMgsE,IAC5By7I,EAAAA,EAAAA,KAAiBznN,EAAMgsE,EAAvBy7I,CAAuC5lR,EAAK3uC,MAAO2uC,EAAKs8B,SAC5D,EAUAgkO,EAAY1rH,UAHZ,SAAmBvjL,EAAOk1E,GACtB,OAAOs/O,EAAAA,EAAAA,KAAgBx0T,EAAOk1E,EAClC,EAUA+5N,EAAY1oH,WAHZ,SAAoBvmL,EAAOk1E,EAAStsD,GAChC,OAAO6rS,EAAAA,EAAAA,KAAiBz0T,EAAOk1E,EAAStsD,EAC5C,EAiBAqmR,EAAYhlF,eAHZ,SAAwB7+M,GACpB,OAAOspT,EAAAA,EAAAA,KAAqBtpT,EAChC,EAmBA6jS,EAAY/kF,UAHZ,SAAmB9+M,EAAMkG,GACrB,OAAOqjT,EAAAA,EAAAA,KAAgBvpT,EAAMkG,EACjC,EAYA29R,EAAYtkF,aAHZ,SAAsBv/M,EAAMwiB,GACxB,OAAOgnS,EAAAA,EAAAA,KAAmBxpT,EAAMwiB,EACpC,EAYAqhR,EAAY5kF,kBAHZ,SAA2BztG,IACvBi4M,EAAAA,EAAAA,KAAwBj4M,EAC5B,EAaAqyL,EAAYzkF,kBAHZ,SAA2B5tG,IACvBk4M,EAAAA,EAAAA,KAAwBl4M,EAC5B,EAUAqyL,EAAYxiM,gBAHZ,SAAyBmQ,IACrBm4M,EAAAA,EAAAA,KAAsBn4M,EAC1B,EAiBAqyL,EAAYjlF,SAHZ,SAAkB5+M,GACd,OAAO4pT,EAAAA,EAAAA,KAAe5pT,EAC1B,EAaA6jS,EAAY1jF,2BAHZ,SAAoCngN,EAAM08L,GACtC,OAAOmtH,EAAAA,EAAAA,KAAiC7pT,EAAM08L,EAClD,EAWAmnG,EAAYphF,cAHZ,SAAuBt1L,GACnB,OAAO28R,EAAAA,EAAAA,KAAoB38R,EAC/B,EAWA02Q,EAAY9/E,cAHZ,SAAuBnkK,GACnB,OAAOmqQ,EAAAA,EAAAA,KAAoBnqQ,EAC/B,EAUAikP,EAAYj7E,cAHZ,WACI,OAAOohG,EAAAA,EAAAA,MACX,EAiBAnmB,EAAYzwH,QAJZ,SAAiB7vI,EAAMvjC,EAAM2kJ,EAASmuB,GAClC,IAAIm3I,GAAUx4I,EAAAA,EAAAA,KAAezxK,IAC7BkqT,EAAAA,EAAAA,KAAcD,EAAStlK,EAASmuB,EAAhCo3I,CAA8C3mR,EAAK3uC,MAAO2uC,EAAKs8B,SACnE,EAUAgkO,EAAYnuH,mBAHZ,SAA4BnyI,EAAMqc,EAASs1H,EAAaS,GACpD,OAAOw0I,EAAAA,EAAAA,KAAyBvqQ,EAASs1H,EAAaS,EAA/Cw0I,CAA0D5mR,EAAK3uC,MAAO2uC,EAAKs8B,SACtF,EAUAgkO,EAAY3jH,WAHZ,SAAoB38I,EAAMuwH,EAAOnP,GAC7B,OAAOylK,EAAAA,EAAAA,KAAiB7mR,EAAK3uC,MAAO2uC,EAAKs8B,SAAUt8B,EAAMuwH,EAAOnP,EACpE,EAcAk/I,EAAYwC,aAHZ,SAAsB7jR,GAClB,OCzYkB,SAAUA,GAChC,IAAI6nS,GAAW3rI,EAAAA,EAAAA,KAAc9B,EAAAA,KAAU,SAAUhoL,EAAOirE,GACpD,IAAIymO,EAAY9jR,GAAYA,EAASsxI,OAAStxI,EAASsxI,MAAMwyI,WAAa,aACtE9qM,EAAK5mG,EAAMw8D,OAAO06F,MAAMw6I,GAI5B,OAHIzmO,GACAA,EAASjrE,EAAM2mG,GAAG4xE,qBAAqB3xE,EAAG9yE,UAAUglJ,mBAEjD,CACX,IACIsL,EAAWx2J,GAAYA,EAASsxI,OAAStxI,EAASsxI,MAAMklB,UAAY,YACpEutH,EAAgB/jR,GAAYA,EAAS+jR,eAAiB,CAAC,EAI3D,OAHwB7vR,EAASA,EAASA,EAASA,EAAS,CAAE,QAAS,SAAU9hB,EAAOirE,GAAY,OAAO61G,EAAAA,EAAAA,KAAmB6wH,EAActjM,MAAQA,EAAzCyyE,CAA+C9gL,EAAOirE,EAAW,EAAG,QAAS,SAAUjrE,EAAOirE,GAAY,OAAO61G,EAAAA,EAAAA,KAAmB6wH,EAAcrjM,QAAUA,EAA3CwyE,CAAmD9gL,EAAOirE,EAAW,EAAG,QAAS,SAAUjrE,EAAOirE,GAAY,OAAO61G,EAAAA,EAAAA,KAAmB6wH,EAAclwL,WAAaA,EAA9Cq/D,CAAyD9gL,EAAOirE,EAAW,EAAG,QAASqvJ,EAAAA,IAAM,cAAehB,EAAAA,KAAQx3M,EAAS,CAAC,EAAI0sK,EAA0B,CAAC,EAArB,CAAE,QAAS8qC,EAAAA,OAAe,CAAE,UAAa0B,EAAAA,IAAe,YAAay6F,EAAU,cAAeA,IAAa3zS,EAAS,CAAC,EAAG0sK,EAAM,CAAE,aAAcinI,GAAa,CAAC,IAAK,CAAE,MAAS,SAAUz1T,EAAOirE,GAC9oB,OAAOm6G,EAAAA,EAAAA,KAAcplL,EAAMw8D,OAAO06F,MAAMktB,GAAjCgB,CAA4CplL,EAAOirE,EAC9D,EAAG,KAAOs6I,EAAAA,EAAAA,KAAa,GAAI,aAAaA,EAAAA,EAAAA,MAAc,IAE9D,CD0XeisF,CAAuB5jR,EAClC,EAKAqhR,EAAYymB,SAAW1kB,EAAAA,EAIvB/B,EAAYjhF,eAAiB2nG,EAAAA,IAI7B1mB,EAAYr3I,MAAQ91I,EAAS,CAAC,EAAG8zS,EAAAA,KAIjC3mB,EAAY/3I,MAAQp1I,EAAS,CAAC,EAAG+zS,EAAAA,IACpC,CA3ZD,CA2ZG5mB,IAAgBA,EAAc,CAAC,sDE1avB+B,EAAiB,YAAIv2H,KAAU,sFCJtC34J,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAOWhH,EAAQ,SAAUsI,GACzB,IAAIpI,EAAOoI,EAAMpI,KAAMC,EAAYmI,EAAMnI,UAAWE,EAAYiI,EAAMjI,UAAWxC,EAAWyK,EAAMzK,SAAU+R,EAAWtH,EAAMsH,SAAUinC,EAASjyB,EAAOtc,EAAO,CAAC,OAAQ,YAAa,YAAa,WAAY,aACzMgM,EAAO3W,EAAAA,WAAiBs1T,EAAAA,GACxBC,EAAS5+S,EAAOA,EAAK9W,GAAK,GAC9BG,EAAAA,WAAgB,WACZ,GAAK2W,EAIL,OADsBA,EAAK6+S,cAAcjzT,EAAMG,EAEnD,GAAG,CAACH,EAAMgzT,EAAQ7yT,IAClB,IAAI+yT,EAAiBz1T,EAAAA,aAAkB,SAAUW,GAS7C,IAAIo6K,EAAWp6K,OACQhB,IAAhBgB,EAAMuR,MACHvR,EAAMuR,MACLvR,EAAMkmB,OACHlmB,EAAMkmB,OAAO3U,MACbvR,EAAMkmB,OACdlmB,EACNgW,EAAK1E,SAAS1P,EAAM,CAAE2P,MAAO6oK,IACzB9oK,GACAA,EAASihB,UAAKvzB,EAAWgB,EAEjC,GAAG,CAAC4B,EAAMgzT,EAAQtjT,IACdyjT,EAA0B11T,EAAAA,aAAkB,SAAUW,GAAS,OAAOgW,EAAK1E,SAAS1P,EAAM,CAAE2P,MAAOvR,EAAMkmB,OAAO3U,OAAU,GAAG,CAAC3P,EAAMgzT,IACpII,EAAe31T,EAAAA,aAAkB,WAAc,OAAO2W,EAAK4f,OAAOh0B,EAAO,GAAG,CAACA,EAAMgzT,IACnFK,EAAgB51T,EAAAA,aAAkB,WAAc,OAAO2W,EAAK0f,QAAQ9zB,EAAO,GAAG,CAACA,EAAMgzT,IACzF,IAAK5+S,EAKD,OAAO,KAEX,IAAIzE,EAAQyE,EAAKtE,YAAY9P,GAK7B,MAAyB,kBAAdC,EAEAxC,EAAAA,cAAoBwC,EAAW8e,EAAS,CAAErP,SAAUyjT,EAAyBn/R,OAAQo/R,EAAct/R,QAASu/R,EAAe1jT,MAAOA,EAAOhS,SAAUA,GAAYg5C,IAEnKl5C,EAAAA,cAAoBwC,EAAW8e,EAASA,EAAS,CAAEphB,SAAUA,GAAYg5C,GAAS,CAErFjnC,SAAUwjT,EAAgBl/R,OAAQo/R,EAAct/R,QAASu/R,EAAe1jT,MAAOA,EAE/EixB,kBAAmBxsB,EAAKiuN,OAAOriO,GAAO6kE,QAASzwD,EAAKywD,QAAQ7kE,GAAOslE,SAAUlxD,EAAKkxD,SAAStlE,GAAOqlE,QAASjxD,EAAKixD,QAAQrlE,GAMxH8gC,QAAShM,QAAQ1gB,EAAKiuN,OAAOriO,KAAUoU,EAAKywD,QAAQ7kE,IAAQA,KAAMA,IAC1E,EACAF,EAAMkkC,YAAc,wFCpFTv+B,EAAe,SAAU2C,GAChC,IAAIkrT,GAAiBh6R,EAAAA,EAAAA,GAAW,CAC5B,gBAAgB,EAChB,QAAuB,QAAdlxB,EAAMyd,KAChBzd,EAAMrK,WACT,OAAQN,EAAAA,cAAoB,MAAO,CAAEM,UAAWu1T,EAAgB11T,MAAOwK,EAAMxK,OAASwK,EAAMzK,SAChG,EACA8H,EAAau+B,YAAc,0JCXhB3D,EAAkB,CACzBrgC,KAAM,6BACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,yJCTlBhyC,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAuDIppD,EAAsB,SAAU0zB,GAKhC,SAAS1zB,EAAKoK,GACV,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAiSxC,OAhSA0C,EAAMi6P,KAAMxoP,EAAAA,EAAAA,KACZzR,EAAM2mS,SAAW,CAAC,EAClB3mS,EAAM4mS,SAAW,CAAC,EAClB5mS,EAAM6mS,UAAY,CAAC,EACnB7mS,EAAM8mS,mBAAqB,CAAC,EAC5B9mS,EAAM+mS,QAAU,CAAC,EACjB/mS,EAAMgnS,QAAU,CAAC,EACjBhnS,EAAMinS,YAAa,EACnBjnS,EAAMknS,YAAa,EAInBlnS,EAAMvuB,QAAU,WACZ,OAAOuuB,EAAMmnS,YAAYnnS,EAAMy1M,OACnC,EAIAz1M,EAAMonS,uBAAyB,WAIvBpnS,EAAMqnS,qBACNt7R,aAAa/L,EAAMqnS,qBAEvBrnS,EAAMqnS,oBAAsBhxT,OAAOi3B,YAAW,WAC1CtN,EAAMqnS,yBAAsB72T,EAC5BwvB,EAAMqI,aACV,GAhF0B,EAiF9B,EAIArI,EAAMsnS,UAAY,WACdtnS,EAAMpuB,QAASmrB,EAAAA,EAAAA,IAAMiD,EAAMxkB,MAAMlK,eACjC0uB,EAAMi6P,KAAMxoP,EAAAA,EAAAA,KACZzR,EAAM2mS,SAAW,CAAC,EAClB3mS,EAAM4mS,SAAW,CAAC,EAClB5mS,EAAM6mS,UAAY,CAAC,EACnB7mS,EAAM8mS,mBAAqB,CAAC,EAC5B9mS,EAAMgnS,QAAU,CAAC,EACjBhnS,EAAMknS,YAAa,EACnBlnS,EAAMqI,aACV,EAMArI,EAAMunS,QAAU,WAAc,OAAOvnS,EAAMsnS,WAAa,EAIxDtnS,EAAMwnS,SAAW,SAAUvtT,GACvB+lB,EAAMgnS,QAAQ/sT,IAAS,CAC3B,EAIA+lB,EAAMptB,SAAW,SAAUpB,GACvB,IAAIi2T,EAAiB,CAAC,EAClB9tT,EAASqmB,EAAMrmB,OACfnI,IACoC,oBAAzBA,EAAM+gB,gBACb/gB,EAAM+gB,iBAE2B,oBAA1B/gB,EAAMs+B,iBACbt+B,EAAMs+B,mBAGdn2B,EAAOsS,SAAQ,SAAUqtE,GACrBmuO,EAAenuO,IAAa,CAChC,IAEAt5D,EAAMy4C,QAAUtmD,EAAS,CAAC,EAAGs1S,GAC7BznS,EAAMi4C,QAAU9lD,EAAS,CAAC,EAAGs1S,GAC7B,IAAI71T,EAASouB,EAAMpuB,OACfH,EAAUuuB,EAAMmnS,YAAYnnS,EAAMy1M,QAClCiyF,EAAa1nS,EAAM2nS,eAAe3nS,EAAM04C,SAAU/+D,GAClDqmB,EAAMxkB,MAAMjK,eACZyuB,EAAMxkB,MAAMjK,cAAcwyB,UAAKvzB,EAAW,CACtCoB,OAAQA,EACRH,QAASA,EACTi2T,WAAYA,EACZl2T,MAAOA,IAGXC,IAAYuuB,EAAMxkB,MAAMosT,gBAAkBF,IAAe1nS,EAAMxkB,MAAM5I,WACrEotB,EAAMknS,YAAa,EACnBlnS,EAAMxkB,MAAM5I,SAASmxB,UAAKvzB,EAAWoB,EAAQJ,IAEjDwuB,EAAMqI,aACV,EAMArI,EAAMld,SAAW,SAAU1P,EAAMioD,GAC7B,IAAItmD,EACAgO,EAAQs4C,EAAQt4C,MACpBid,EAAMwnS,SAASp0T,GACV4sB,EAAM04C,SAAStlE,KAChB4sB,EAAM04C,SAAWvmD,EAASA,EAAS,CAAC,EAAG6N,EAAM04C,YAAY3jE,EAAK,CAAC,GAAM3B,IAAQ,EAAM2B,KAEvFirB,EAAM6nS,YAAYz0T,EAAM2P,GACxBid,EAAMqI,aACV,EAIArI,EAAMkH,QAAU,SAAU9zB,EAAM00T,GAC5B,IAAI/yT,EACAirB,EAAMy4C,QAAQrlE,KAGlB4sB,EAAMy4C,QAAUtmD,EAASA,EAAS,CAAC,EAAG6N,EAAMy4C,WAAW1jE,EAAK,CAAC,GAAM3B,IAAQ,EAAM2B,IAC5E+yT,GACD9nS,EAAMqI,cAEd,EAIArI,EAAMoH,OAAS,SAAUh0B,EAAM00T,GAC3B,IAAI/yT,EACAirB,EAAMi4C,QAAQ7kE,KAGlB4sB,EAAMkH,QAAQ9zB,EAAM00T,GACpB9nS,EAAMi4C,QAAU9lD,EAASA,EAAS,CAAC,EAAG6N,EAAMi4C,WAAWljE,EAAK,CAAC,GAAM3B,IAAQ,EAAM2B,IAC5E+yT,GACD9nS,EAAMqI,cAEd,EAIArI,EAAM+nS,gBAAkB,SAAU30T,EAAMG,GACpC,IAAIwB,EACJirB,EAAMwnS,SAASp0T,GAEf,IAAI40T,EAAiBhoS,EAAMioS,kBAAkB70T,IAAS,GAClDy+C,EAAYm2Q,EAAc7oT,OAG9B,OAFA6gB,EAAMioS,kBAAoB91S,EAASA,EAAS,CAAC,EAAG6N,EAAMioS,qBAAqBlzT,EAAK,CAAC,GAAM3B,GAAQ2sE,EAAcA,EAAc,GAAIioP,GAAe,GAAO,CAACz0T,IAAY,GAAQwB,IAC1KirB,EAAMonS,yBACC,WACH,IAAIryT,EAEJ,IAAIirB,EAAMinS,WAAV,CAGA,IAAIiB,EAAgBnoP,EAAc,GAAK//C,EAAMioS,kBAAkB70T,IAAS,IAAK,GACzE+0T,EAA0BjgS,QAAQggS,EAAcr2Q,IACpDq2Q,EAAcr2Q,QAAarhD,EAC3BwvB,EAAMioS,kBAAoB91S,EAASA,EAAS,CAAC,EAAG6N,EAAMioS,qBAAqBlzT,EAAK,CAAC,GAAM3B,GAAQ80T,EAAenzT,IAC1GozT,GACAnoS,EAAMonS,wBANV,CAQJ,CACJ,EAIApnS,EAAMmnS,YAAc,SAAU1xF,GAC1B,OAAQx1N,OAAOC,KAAKu1N,GAAQv5K,MAAK,SAAUo9B,GAAa,OAAOpxD,QAAQutM,EAAOn8I,GAAa,GAC/F,EAIAt5D,EAAM2nS,eAAiB,SAAUjvP,EAAU/+D,GACvC,OAAOA,EAAOuiD,MAAK,SAAUo9B,GAAa,OAAO5gB,EAAS4gB,EAAY,GAC1E,EAIAt5D,EAAMooS,oBAAsB,SAAUnwP,EAASt+D,GAC3C,OAAOA,EAAOuiD,MAAK,SAAUo9B,GAAa,OAAQrhB,EAAQqhB,EAAY,GAC1E,EAIAt5D,EAAMqoS,cAAgB,SAAUpwP,EAASt+D,GACrC,OAAOA,EAAOuiD,MAAK,SAAUo9B,GAAa,OAAOrhB,EAAQqhB,EAAY,GACzE,EAIAt5D,EAAMsoS,cAAgB,SAAU7vP,EAAS9+D,GACrC,OAAOA,EAAOuiD,MAAK,SAAUo9B,GAAa,OAAO7gB,EAAQ6gB,EAAY,GACzE,EAIAt5D,EAAM9c,YAAc,SAAUo2E,GAC1B,OAAO5/D,EAAAA,EAAAA,GAAO4/D,EAAP5/D,CAAkBsG,EAAMpuB,OACnC,EAIAouB,EAAM6nS,YAAc,SAAUvuO,EAAWv2E,GACrC,OAAO6lM,EAAAA,EAAAA,GAAOtvH,EAAPsvH,CAAkB5oL,EAAMpuB,OAAQmR,EAC3C,EAIAid,EAAMuoS,cAAgB,SAAUn1T,GAC5B,IAAI2B,EACJirB,EAAMwnS,SAASp0T,GACV4sB,EAAM04C,SAAStlE,KAChB4sB,EAAM04C,SAAWvmD,EAASA,EAAS,CAAC,EAAG6N,EAAM04C,YAAY3jE,EAAK,CAAC,GAAM3B,IAAQ,EAAM2B,KAEvFirB,EAAMoH,OAAOh0B,GAAM,EACvB,EAIA4sB,EAAM2qR,SAAW,SAAUv3S,EAAMioD,GAC7Br7B,EAAMuoS,cAAcn1T,GACpB,IAAIo1T,EAAWzoP,EAAc,GAAK//C,EAAM9c,YAAY9P,IAAS,IAAK,GAClEo1T,EAASpnS,OAAOi6B,EAAQnpC,MAAO,EAAGmpC,EAAQt4C,OAC1Cid,EAAM6nS,YAAYz0T,EAAMo1T,GACxBxoS,EAAMqI,aACV,EAIArI,EAAMyoS,UAAY,SAAUr1T,EAAMioD,GAC9Br7B,EAAM2qR,SAASv3S,EAAM,CACjB2P,MAAOs4C,EAAQt4C,MACfmP,MAAO,GAEf,EAIA8N,EAAM0oS,OAAS,SAAUt1T,EAAMioD,GAC3Br7B,EAAMuoS,cAAcn1T,GACpB,IAAIo1T,EAAWzoP,EAAcA,EAAc,GAAK//C,EAAM9c,YAAY9P,IAAS,IAAK,GAAO,CAACioD,EAAQt4C,QAAQ,GACxGid,EAAM6nS,YAAYz0T,EAAMo1T,GACxBxoS,EAAMqI,aACV,EAIArI,EAAM2oS,MAAQ,SAAUv1T,GACpB4sB,EAAMuoS,cAAcn1T,GACpB,IAAIo1T,EAAWzoP,EAAc,GAAK//C,EAAM9c,YAAY9P,IAAS,IAAK,GAC9D2P,EAAQylT,EAASlsQ,MAGrB,OAFAt8B,EAAM6nS,YAAYz0T,EAAMo1T,GACxBxoS,EAAMqI,cACCtlB,CACX,EAIAid,EAAM6nB,SAAW,SAAUz0C,EAAMioD,GAC7Br7B,EAAMuoS,cAAcn1T,GACpB,IAAIo1T,EAAWzoP,EAAc,GAAK//C,EAAM9c,YAAY9P,IAAS,IAAK,GAC9D2P,EAAQylT,EAASpnS,OAAOi6B,EAAQnpC,MAAO,GAG3C,OAFA8N,EAAM6nS,YAAYz0T,EAAMo1T,GACxBxoS,EAAMqI,cACCtlB,CACX,EAIAid,EAAM8pR,UAAY,SAAU12S,EAAMioD,GAC9Br7B,EAAMuoS,cAAcn1T,GACpB,IAAIo1T,EAAWzoP,EAAc,GAAK//C,EAAM9c,YAAY9P,IAAS,IAAK,GAClEo1T,EAASpnS,OAAOi6B,EAAQnpC,MAAO,EAAGmpC,EAAQt4C,OAC1Cid,EAAM6nS,YAAYz0T,EAAMo1T,GACxBxoS,EAAMqI,aACV,EAIArI,EAAMg+P,OAAS,SAAU5qR,EAAMioD,GAC3Br7B,EAAMuoS,cAAcn1T,GACpB,IAAIo1T,EAAWzoP,EAAc,GAAK//C,EAAM9c,YAAY9P,IAAS,IAAK,GAC9D2P,EAAQylT,EAASntQ,EAAQzJ,WAC7B42Q,EAASpnS,OAAOi6B,EAAQzJ,UAAW,GACnC42Q,EAASpnS,OAAOi6B,EAAQxJ,UAAW,EAAG9uC,GACtCid,EAAM6nS,YAAYz0T,EAAMo1T,GACxBxoS,EAAMqI,aACV,GACAmL,EAAAA,EAAAA,GAAgBC,GAChBzT,EAAMpuB,QAASmrB,EAAAA,EAAAA,IAAMvhB,EAAMlK,eACpB0uB,CACX,CA2NA,OAlgBAuD,EAAUnyB,EAAM0zB,GAwShB7kB,OAAO6nB,eAAe12B,EAAKosB,UAAW,UAAW,CAI7CuK,IAAK,WACD,OAAOzK,KAAKqpS,QAChB,EAIA13R,IAAK,SAAUlsB,GACXua,KAAKqpS,SAAW5jT,CACpB,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe12B,EAAKosB,UAAW,UAAW,CAI7CuK,IAAK,WACD,OAAOzK,KAAKspS,QAChB,EAIA33R,IAAK,SAAUlsB,GACXua,KAAKspS,SAAW7jT,CACpB,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe12B,EAAKosB,UAAW,WAAY,CAI9CuK,IAAK,WACD,OAAOzK,KAAKupS,SAChB,EAIA53R,IAAK,SAAUlsB,GACXua,KAAKupS,UAAY9jT,CACrB,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe12B,EAAKosB,UAAW,oBAAqB,CAIvDuK,IAAK,WACD,OAAOzK,KAAKwpS,kBAChB,EAIA73R,IAAK,SAAUlsB,GACXua,KAAKwpS,mBAAqB/jT,CAC9B,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe12B,EAAKosB,UAAW,SAAU,CAI5CuK,IAAK,WACD,OAAOzK,KAAKypS,OAChB,EAIA93R,IAAK,SAAUlsB,GACXua,KAAKypS,QAAUhkT,CACnB,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe12B,EAAKosB,UAAW,SAAU,CAI5CuK,IAAK,WACD,OAAO9nB,OAAOC,KAAKod,KAAK0pS,QAC5B,EACAh/R,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe12B,EAAKosB,UAAW,aAAc,CAIhDuK,IAAK,WACD,GAAIzK,KAAK9hB,MAAMjI,UACX,OAAO+pB,KAAK9hB,MAAMjI,UAAU+pB,KAAK1rB,OAAQ0rB,KAAKpa,YAEtD,EACA8kB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe12B,EAAKosB,UAAW,SAAU,CAI5CuK,IAAK,WACD,IAAI/H,EAAQ1C,KACRm4M,EAAS,CAAC,EACV97N,EAAS2jB,KAAK3jB,OACdsuT,EAAoB3qS,KAAK2qS,kBA8B7B,OA7BAtuT,EAAOsS,SAAQ,SAAUqtE,GAErB,GADAm8I,EAAOn8I,GAAa,GAChB2uO,EAAkB3uO,GAAY,CAC9B,IAAI3iE,EAAe,GACnBsxS,EAAkB3uO,GAAWrtE,SAAQ,SAAU1Y,GACvC+hB,MAAMC,QAAQhiB,GACdojB,EAAa2H,KAAKb,MAAM9G,EAAcpjB,GAGtCojB,EAAa2H,KAAK/qB,EAE1B,IAEAojB,EAAanL,MAAK,SAAUjY,GACxB,GAAIA,EAAW,CACX,IAAIyG,EAASzG,EAAUysB,EAAM9c,YAAYo2E,GAAYt5D,EAAM9c,YAAa,CAAE9P,KAAMkmF,IAChF,GAAIt/E,EAEA,OADAy7N,EAAOn8I,GAAat/E,GACb,CAEf,CACA,OAAO,CACX,GACJ,CACJ,IACiBsjB,KAAKsrS,aAElB9mE,EAAAA,EAAAA,IAAYxkO,KAAKsrS,WAAYnzF,GAE1BA,CACX,EACAztM,YAAY,EACZC,cAAc,IAKlB72B,EAAKosB,UAAU6O,qBAAuB,WAClC/O,KAAK2pS,YAAa,EACd3pS,KAAK+pS,qBACLt7R,aAAazO,KAAK+pS,oBAE1B,EAIAj2T,EAAKosB,UAAUnrB,OAAS,WACpB,IAAIA,EAASirB,KAAK9hB,MAAMnJ,OACpB4lE,EAAU36C,KAAK26C,QACfQ,EAAUn7C,KAAKm7C,QACfC,EAAWp7C,KAAKo7C,SAChB/+D,EAAS2jB,KAAK3jB,OACd87N,EAASn4M,KAAKm4M,OACdozF,EAAYvrS,KAAK6pS,YAAY1xF,GAC7BqzF,EAAexrS,KAAKqqS,eAAejvP,EAAU/+D,GAC7CovT,EAAczrS,KAAK+qS,cAAcpwP,EAASt+D,GAC1CqvT,EAAc1rS,KAAKgrS,cAAc7vP,EAAS9+D,GAI1CgZ,EAHoB2K,KAAK8qS,oBAAoBnwP,EAASt+D,KAGjBkvT,GAAeA,IAAcvrS,KAAK9hB,MAAMosT,gBAAkBkB,GACnG,OAAQj4T,EAAAA,cAAoBs1T,EAAAA,EAAYr1E,SAAU,CAAEloN,IAAKtL,KAAK28P,IAAKl3Q,MAAO,CAClErS,GAAI4sB,KAAK28P,IACT/2Q,YAAaoa,KAAKpa,YAClBuyN,OAAQA,EACR/8J,SAAUA,EACVT,QAASA,EACTQ,QAASA,EACT4tP,cAAe/oS,KAAKyqS,gBACpBn1T,SAAU0qB,KAAK1qB,SACfkQ,SAAUwa,KAAKxa,SACfokB,QAAS5J,KAAK4J,QACdE,OAAQ9J,KAAK8J,OACbqhS,UAAWnrS,KAAKmrS,UAChBC,OAAQprS,KAAKorS,OACb/d,SAAUrtR,KAAKqtR,SACfge,MAAOrrS,KAAKqrS,MACZ9gR,SAAUvqB,KAAKuqB,SACfiiQ,UAAWxsR,KAAKwsR,UAChB9rB,OAAQ1gQ,KAAK0gQ,SACZ3rR,EAAO,CACZ6hC,MAAO20R,EACPnwP,SAAUowP,EACV7wP,QAAS8wP,EACTtwP,QAASuwP,EACT5pT,UAAWke,KAAK4pS,WAChBhkT,YAAaoa,KAAKpa,YAClBuyN,OAAQA,EACR9iN,YAAaA,EACb7P,SAAUwa,KAAKxa,SACflQ,SAAU0qB,KAAK1qB,SACfq2T,YAAa3rS,KAAKgqS,YAE1B,EAIAl2T,EAAKgmC,YAAc,iBAInBhmC,EAAKk4B,UAAY,CACbh4B,cAAei4B,EAAAA,IACf32B,SAAU22B,EAAAA,KACVh4B,cAAeg4B,EAAAA,KACfl3B,OAAQk3B,EAAAA,KAAeoY,YAEpBvwC,CACX,CApgB0B,CAogBxBP,EAAAA,6DC3lBSs1T,UAAct1T,cAAoB,+FCFzCshB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAUWpH,EAAcjC,EAAAA,YAAiB,SAAU2K,EAAOnK,GACvD,IAAI0D,EACAumR,EAAgBnpQ,EAAS,CAAEtb,KAAM,UAAY2E,GAC7CmqB,EAAU90B,EAAAA,OAAa,MACvB6mB,EAAS7mB,EAAAA,OAAa,MAC1BA,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CAAEiO,QAASA,EAAQh0B,QAAS6J,MAAO8/Q,EAAkB,IAC7GzqR,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAAI6V,EAAO3W,EAAAA,WAAiBs1T,EAAAA,GACxBh1T,EAAYmqR,EAAcnqR,UAAwColC,GAArB+kP,EAActqR,MAAoBsqR,EAAc/kP,YAAY1/B,EAAOykR,EAAczkR,KAAMkzC,EAASjyB,EAAOwjQ,EAAe,CAAC,YAAa,QAAS,aAAc,SACxM4tC,GAAgBx8R,EAAAA,EAAAA,KAAY33B,EAAK,CAC7B,UAAU,IAEX,UAAUyM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EAC7D9B,EAAG,sBAAsC,IAAfwhC,EAC1BxhC,GAAK5D,GACT,OAAQN,EAAAA,cAAoB,OAAQshB,EAAS,CAAE9gB,IAAKs0B,GAAWokB,EAAQ,CAAE/4C,MAAOwK,EAAMxK,MAAOG,UAAW+3T,EAAet2T,SAAU4U,EAAOA,EAAK5U,cAAWpC,IAAcgL,EAAMzK,SAChL,IACA+B,EAAYskC,YAAc,sMChDtBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAOWivT,EAAa,SAAU3tT,GAC9B,IAAIpI,EAAOoI,EAAMpI,KAAMC,EAAYmI,EAAMnI,UAAWE,EAAYiI,EAAMjI,UAA8BxC,GAAZyK,EAAM1E,KAAiB0E,EAAMzK,UAAUg5C,EAASjyB,EAAOtc,EAAO,CAAC,OAAQ,YAAa,YAAa,OAAQ,aAC7LgM,EAAO3W,EAAAA,WAAiBs1T,EAAAA,GACxBC,EAAS5+S,EAAOA,EAAK9W,GAAK,GAC9BG,EAAAA,WAAgB,WACZ,GAAK2W,EAIL,OADsBA,EAAK6+S,cAAcjzT,EAAMG,EAEnD,GAAG,CAACH,EAAMgzT,EAAQ7yT,IAClB,IAAIk1T,EAAY53T,EAAAA,aAAkB,SAAUW,GAAS,OAAOgW,EAAKihT,UAAUr1T,EAAM5B,EAAQ,GAAG,CAAC4B,EAAMgzT,IAC/FsC,EAAS73T,EAAAA,aAAkB,SAAUW,GAAS,OAAOgW,EAAKkhT,OAAOt1T,EAAM5B,EAAQ,GAAG,CAAC4B,EAAMgzT,IACzFzb,EAAW95S,EAAAA,aAAkB,SAAUW,GAAS,OAAOgW,EAAKmjS,SAASv3S,EAAM5B,EAAQ,GAAG,CAAC4B,EAAMgzT,IAC7FuC,EAAQ93T,EAAAA,aAAkB,WAAc,OAAO2W,EAAKmhT,MAAMv1T,EAAO,GAAG,CAACA,EAAMgzT,IAC3Ev+Q,EAAWh3C,EAAAA,aAAkB,SAAUW,GAAS,OAAOgW,EAAKqgC,SAASz0C,EAAM5B,EAAQ,GAAG,CAAC4B,EAAMgzT,IAC7Ftc,EAAYj5S,EAAAA,aAAkB,SAAUW,GAAS,OAAOgW,EAAKsiS,UAAU12S,EAAM5B,EAAQ,GAAG,CAAC4B,EAAMgzT,IAC/FpoC,EAASntR,EAAAA,aAAkB,SAAUW,GAAS,OAAOgW,EAAKw2Q,OAAO5qR,EAAM5B,EAAQ,GAAG,CAAC4B,EAAMgzT,IAC7F,IAAK5+S,EAKD,OAAO,KAGX,IAAIzE,EAAQyE,EAAKtE,YAAY9P,GAK7B,OAAOvC,EAAAA,cAAoBwC,EAAW8e,EAAS,CAE3CpP,MAAOA,EAEPixB,kBAAmBxsB,EAAKiuN,OAAOriO,GAAO6kE,QAASzwD,EAAKywD,QAAQ7kE,GAAOslE,SAAUlxD,EAAKkxD,SAAStlE,GAAOqlE,QAASjxD,EAAKixD,QAAQrlE,GAMxH8gC,QAAShM,QAAQ1gB,EAAKiuN,OAAOriO,KAAUoU,EAAKywD,QAAQ7kE,IAAQq1T,UAAWA,EAAWC,OAAQA,EAAQ/d,SAAUA,EAAUge,MAAOA,EAAO9gR,SAAUA,EAAUiiQ,UAAWA,EAAW9rB,OAAQA,EAAQjtR,SAAUA,EAAUqC,KAAMA,GAAQ22C,GACxO,EACAo/Q,EAAW/xR,YAAc,mOCvErB2oC,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAqLI4uQ,EAAiB,SAAU/tQ,GAC3B,IAAIsiN,EAAqBtiN,EAAQsiN,mBAAoB5B,EAAQ1gN,EAAQ0gN,MACrE,GAAK4B,EAAmBhsQ,SAAYoqQ,EAApC,CAGA,IAAIvrK,EAAS,GACTmS,GAAQm5J,EAAAA,EAAAA,IAAiBC,GACzBnpE,GAAQopE,EAAAA,EAAAA,IAAeD,GAC3B,GAAKp5J,GAAUiwF,EAAf,CAGA,IAAIimH,EAAavjS,MAAMklC,KAAKmoD,EAAM5xG,UAC9Bs4T,EAAW/zS,MAAMklC,KAAKo4I,EAAM7hM,UAChCgvE,EAAcA,EAAc,GAAI84O,GAAY,GAAOwQ,GAAU,GAAMp9S,SAAQ,SAAUoM,EAAKopM,GACtFnsM,MAAMklC,KAAKniC,EAAItnB,UAAUkb,SAAQ,SAAU3N,GACvC,IAAIq+P,GAAShB,EAAAA,EAAAA,IAAiBr9P,GAC9B,GAAKq+P,EAAL,CAMA,IAHA,IAEIj7C,EAFAL,EAAU/iN,EAAK+iN,SAAW,EAC1BioG,EAAWhrT,EAAKia,SAAW,EAEtB27G,EAAQutF,EAAU3mC,EAAW2mC,EAAWJ,EAASntF,EAAQ4mD,EAAU5mD,IAAS,CAIjF,GAHK1jC,EAAO0jC,KACR1jC,EAAO0jC,GAAS,SAEF1jI,IAAdkxN,EAAyB,CACzB,IAAI6nG,EAAgB/4N,EAAO0jC,GAAOt2C,WAAU,SAAU4rO,GAAM,OAAQA,CAAI,IACxE9nG,EAAY6nG,GAAiB,EAAIA,EAAgB/4N,EAAO0jC,GAAO/0H,MACnE,CACAqxF,EAAO0jC,GAAOwtF,GAAai7C,GAAU,EACzC,CACA,IAASzoI,EAAQwtF,EAAY,EAAG5mC,EAAW4mC,EAAY4nG,EAAUp1L,EAAQ4mD,EAAU5mD,IAC/E1jC,EAAOixH,GAAUvtF,GAASyoI,GAAU,EAfxC,CAiBJ,GACJ,IACAgB,EAAmBhsQ,QAAQ+qQ,iBAAmBlsK,EAAOpwF,QAAO,SAAUiY,GAAO,QAASA,CAAK,IAC3FslP,EAAmBhsQ,QAAQ83T,gBAAkB5Q,EAAW15S,OAAS,CA5BjE,CANA,CAmCJ,EAIWuqT,EA1NS,SAAUruQ,GAC1B,IAAImgN,EAAcngN,EAAQmgN,YAAagC,EAAkBniN,EAAQmiN,gBAAiBG,EAAqBtiN,EAAQsiN,mBAAoBZ,EAAW1hN,EAAQ0hN,SAElJvB,IACAgC,EAAgB7rQ,QAAU,CACtB+pQ,SAAU,GACVhlI,MAAO,GAEXinI,EAAmBhsQ,QAAU,CACzBg4T,wBAAwB,EACxBC,2BAAuBp5T,EACvBusQ,SAAUA,IAAYtrO,EAAAA,EAAAA,KACtBirO,iBAAkB,GAClB+sD,iBAAkB,GAG9B,EA0MWC,EAtMe,SAAUruQ,GAChC,IAAI0gN,EAAQ1gN,EAAQ0gN,MAAOyB,EAAkBniN,EAAQmiN,gBAAiBG,EAAqBtiN,EAAQsiN,mBACnG,GAAIH,EAAgB7rQ,SAAWgsQ,EAAmBhsQ,SAAWoqQ,EAAO,CAChEqtD,EAAe/tQ,GACf,IAAIwuQ,EAAUlsD,EAAmBhsQ,QAAQ+qQ,iBAAiB,GAAG,GACzDotD,EAAiBC,EAAAA,GAAgBxiS,iBAAiBw0O,EAAO8tD,GACzDA,GAAWC,IACXtsD,EAAgB7rQ,QAAQ+pQ,SAAWmuD,EACnCC,EAAetkQ,aAAa,WAAY,KAEhD,CACJ,EA2LWkkQ,EAvLqB,SAAUruQ,GACtC,IAAImiN,EAAkBniN,EAAQmiN,gBAAiBG,EAAqBtiN,EAAQsiN,mBAAoBza,EAAkB7nM,EAAQvvC,SAC1H,GAAI0xP,EAAgB7rQ,SAAWgsQ,EAAmBhsQ,SAAWuxP,EAAiB,CAC1E,IAAI57N,GAAgBC,EAAAA,EAAAA,GAAiB27N,GACjCwY,EAAWquD,EAAAA,GAAgBpuD,iBAAiBr0O,GAC5Co0O,GAAYA,IAAa8B,EAAgB7rQ,QAAQ+pQ,WACjDiC,EAAmBhsQ,QAAQg4T,wBAAyB,EAE5D,CACJ,EA8KWD,EA1KgB,SAAUruQ,GACjC,IAAI0gN,EAAQ1gN,EAAQ0gN,MAAOyB,EAAkBniN,EAAQmiN,gBAAiBG,EAAqBtiN,EAAQsiN,mBAGnG,GAFAyrD,EAAe/tQ,GAEXmiN,EAAgB7rQ,SAAWgsQ,EAAmBhsQ,SAAWoqQ,EAAO,CAEhE,IADoBguD,EAAAA,GAAgBxiS,iBAAiBw0O,EAAOyB,EAAgB7rQ,QAAQ+pQ,UAChE,CAChB,IAAImuD,EAAUlsD,EAAmBhsQ,QAAQ+qQ,iBAAiB,GAAG,GACzDotD,EAAiBC,EAAAA,GAAgBxiS,iBAAiBw0O,EAAO8tD,GACzDA,GAAWC,IACXtsD,EAAgB7rQ,QAAQ+pQ,SAAWmuD,EACnCC,EAAetkQ,aAAa,WAAY,KACpCm4M,EAAmBhsQ,QAAQg4T,wBAC3BG,EAAevkS,QAG3B,CACAo4O,EAAmBhsQ,QAAQg4T,wBAAyB,CACxD,CACJ,EAuJWD,EAnJG,SAAUl4T,EAAO6pD,GAC3B,IAAImiN,EAAkBniN,EAAQmiN,gBAC9B,IAAIhsQ,EAAMitQ,sBAGLjB,EAAgB7rQ,QAArB,CAGA,IAAIq4T,EAAiBx4T,EAAMkmB,OACvBgkP,EAAWquD,EAAAA,GAAgBpuD,iBAAiBquD,GAChD,GAAItuD,GAAYA,IAAa8B,EAAgB7rQ,QAAQ+pQ,SAAU,CAC3D,IAAIK,EAAQguD,EAAAA,GAAgB5sD,gBAAgB6sD,GAC5C,IAAKjuD,EACD,OAEJ,IAAI0B,EAAcssD,EAAAA,GAAgBxiS,iBAAiBw0O,EAAOyB,EAAgB7rQ,QAAQ+pQ,UAC9E+B,GACAA,EAAYj4M,aAAa,WAAY,MAEzCwkQ,EAAexkQ,aAAa,WAAY,KACxCg4M,EAAgB7rQ,QAAQ+pQ,SAAWA,CACvC,CAdA,CAeJ,EA6HWguD,EAzHK,SAAUl4T,EAAO6pD,GAC7B,IAAImiN,EAAkBniN,EAAQmiN,gBAAiBG,EAAqBtiN,EAAQsiN,mBAAoBssD,EAAqB5uQ,EAAQ4uQ,mBAC7H,IAAIz4T,EAAMitQ,sBAGLjB,EAAgB7rQ,SAAYgsQ,EAAmBhsQ,QAGpD,GAAIH,EAAMm2B,UAAYtD,EAAAA,EAAKiP,IAA3B,CAMA,IAAI3N,EAAUn0B,EAAMkmB,OAChB6jP,EAAYwuD,EAAAA,GAAgBpuD,iBAAiBh2O,GAC7CukS,EAAYH,EAAAA,GAAgB/sD,oBAAoBr3O,GAChDo2O,EAAQguD,EAAAA,GAAgB5sD,gBAAgBx3O,GACxC6qE,EAASmtK,EAAmBhsQ,QAAQ+qQ,iBACxC,QAAkBlsQ,IAAd05T,GAA2BnuD,EAAO,CAClC,GAAIvqQ,EAAMm2B,UAAYtD,EAAAA,EAAK8L,MAAO,CAE9B,IAAIg6R,EAAqBJ,EAAAA,GAAgB9sD,sBAAsBt3O,EAAS,CAAE+wG,MAAOwzL,EAAY,IAC7F,GAAIC,EAOA,YANAJ,EAAAA,GAAgB9sE,aAAa,CACzBsgB,gBAAiB4sD,EACjB34T,MAAOA,EACPgsQ,gBAAiBA,EACjBC,YAAa93O,IAKb43O,EAAkBwsD,EAAAA,GAAgB3sD,qBAAqBz3O,GAAS,GAEpE,YADAokS,EAAAA,GAAgB9sE,aAAa,CAAEsgB,gBAAiBA,EAAiB/rQ,MAAOA,EAAOgsQ,gBAAiBA,EAAiBC,YAAa93O,GAGtI,CACA,GAAIn0B,EAAMm2B,UAAYtD,EAAAA,EAAKG,IACvBhzB,EAAMm2B,UAAYtD,EAAAA,EAAKI,MACvBjzB,EAAMm2B,UAAYtD,EAAAA,EAAKrX,MACvBxb,EAAMm2B,UAAYtD,EAAAA,EAAKltB,MAAO,CAC9B,IAAIglQ,EAAY3qQ,EAAMm2B,UAAYtD,EAAAA,EAAKG,IAAMhzB,EAAMm2B,UAAYtD,EAAAA,EAAKrX,KAChE4yI,EAAapuJ,EAAMm2B,UAAYtD,EAAAA,EAAKG,IAAMhzB,EAAMm2B,UAAYtD,EAAAA,EAAKI,KACjE2lS,OAAmB,EACvB,GAAIzsD,EAAmBhsQ,SAAWgsQ,EAAmBhsQ,QAAQi4T,sBAAuB,CAChF,IAAI70T,EAAK4oQ,EAAmBhsQ,QAAQi4T,sBAAuBnoG,EAAW1sN,EAAG,GAAI2sN,EAAY3sN,EAAG,GAExFq1T,EADA55N,EAAOixH,GAAUC,KAAe65C,EACboC,EAAmBhsQ,QAAQi4T,uBAG3BntD,EAAAA,EAAAA,IAAOjsK,EAAQ+qK,EAE1C,MAEI6uD,GAAmB3tD,EAAAA,EAAAA,IAAOjsK,EAAQ+qK,GAEtC,GAAI6uD,EAAkB,CACd3oG,EAAW2oG,EAAiB,GAAI1oG,EAAY0oG,EAAiB,GAAjE,IACIj1T,EAAKyqJ,GACLq8G,EAAAA,EAAAA,IAAqBx6C,EAAUC,EAAW65C,EAAW/qK,EAAQ2rK,IAC7DG,EAAAA,EAAAA,GAAsB76C,EAAUC,EAAW65C,EAAW/qK,EAAQ2rK,GAAYkuD,EAAal1T,EAAG,GAAIm1T,EAAiBn1T,EAAG,GACtH,GAAIk1T,EAAY,CACR9sD,EAAkBwsD,EAAAA,GAAgBxiS,iBAAiBw0O,EAAOsuD,GAE9DN,EAAAA,GAAgB9sE,aAAa,CAAEsgB,gBAAiBA,EAAiB/rQ,MAAOA,EAAOgsQ,gBAAiBA,EAAiBC,YAAa93O,IAC9Hg4O,EAAmBhsQ,QAAQi4T,sBAAwBU,EAC/CL,GACAA,EAAmB,CAAEhtE,aAAcsgB,EAAiB/rQ,MAAOA,GAEnE,CACJ,CACJ,CACJ,CA5DA,KALA,CAEI,IAAI+rQ,EAAkBwsD,EAAAA,GAAgB7sD,6BAA6B1rQ,EAAMkmB,QACzEqyS,EAAAA,GAAgB9sE,aAAa,CAAEsgB,gBAAiBA,EAAiB/rQ,MAAOA,EAAOgsQ,gBAAiBA,GAEpG,CA6DJ,sBCzLIz9L,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,MCRIzlD,YAIOw1T,EAAY,aAIZC,EAAiB,kBAIjBC,EAAoB,qBAIpBC,EAAgB,iBAIhBC,EAAgB,iBAIhBC,EAAmB,qBAQnBC,EAAY,aAIZC,EAAU,WAIVC,EAAkB,mBAQlBC,EAAwB,yBAIxBC,EAAiB,kBAIjBC,EAAyB,0BAIzBC,EAAoB,qBAIpBC,EAAuB,wBAoPvBp+R,IAAYj4B,EAAK,CAAC,GACtB61T,GAAoB,iBACvB71T,EA1R4B,uBA0RH,cACzBA,EAAGw1T,GAAa,yBAChBx1T,EAAGy1T,GAAkB,uBACrBz1T,EAAG01T,GAAqB,0BACxB11T,EAAG21T,GAAiB,sBACpB31T,EAAG41T,GAAiB,sBACpB51T,EAAG81T,GAAa,OAChB91T,EAAG+1T,GAAW,KACd/1T,EAAGg2T,GAAmB,MACtBh2T,EAnR8B,mBAmRH,OAC3BA,EAAGi2T,GAAyB,6BAC5Bj2T,EAAGk2T,GAAkB,QACrBl2T,EAAGm2T,GAA0B,YAC7Bn2T,EAAGo2T,GAAqB,SACxBp2T,EAAGq2T,GAAwB,aAC3Br2T,EAzBuB,kBAyBH,WACpBA,EAtByB,oBAsBH,SACtBA,EAnQ0B,qBAmQH,cACvBA,EAhQ6B,wBAgQH,kBAC1BA,EA7P8B,yBA6PH,UAC3BA,EA1PiC,4BA0PH,cAC9BA,EAvP+B,0BAuPH,WAC5BA,EApPkC,6BAoPH,eAC/BA,EAjPkC,6BAiPH,cAC/BA,EA9OgC,2BA8OH,WAC7BA,EA3OmC,8BA2OH,mBAChCA,EAxOgC,2BAwOH,YAC7BA,EArO2B,sBAqOH,8BACxBA,EAlO0B,qBAkOH,kBACvBA,EA/N2B,sBA+NH,2BACxBA,EA5N0B,qBA4NH,eACvBA,EAzNsB,iBAyNH,UACnBA,EAtNuB,kBAsNH,WACpBA,EAnNoC,+BAmNH,uBACjCA,EAhN6B,wBAgNH,WAC1BA,EA7M8B,yBA6MH,YAC3BA,EA1MqC,gCA0MH,wBAClCA,EAvMwB,mBAuMH,MACrBA,EApMuB,kBAoMH,KACpBA,EAjM6B,wBAiMH,iBAC1BA,EA9LwB,mBA8LH,YACrBA,EA3LqB,gBA2LH,QAClBA,EAxL8B,yBAwLH,iBAC3BA,EArLmC,8BAqLH,wBAChCA,EAlL2C,sCAkLH,kBACxCA,EA/KmD,8CA+KH,2BAChDA,EA5K2C,sCA4KH,oBACxCA,EAzKsC,iCAyKH,eACnCA,EAtKmC,8BAsKH,aAChCA,EAnKqC,gCAmKH,QAClCA,EAhKsC,iCAgKH,SACnCA,EA7J+B,0BA6JH,SAC5BA,EA1JiC,4BA0JH,iBAC9BA,EAvJkC,6BAuJH,kBAC/BA,EApJoC,+BAoJH,cACjCA,EAjJuC,kCAiJH,kBACpCA,EA9IwC,mCA8IH,UACrCA,EA3I2C,sCA2IH,cACxCA,EAxIyC,oCAwIH,WACtCA,EArI4C,uCAqIH,eACzCA,EAlI4C,uCAkIH,cACzCA,EA/H0C,qCA+HH,WACvCA,EA5H6C,wCA4HH,mBAC1CA,EAzH0C,qCAyHH,YACvCA,EAtHqC,gCAsHH,8BAClCA,EAnHoC,+BAmHH,kBACjCA,EAhHqC,gCAgHH,2BAClCA,EA7GoC,+BA6GH,eACjCA,EA1GgC,2BA0GH,UAC7BA,EAvG8C,yCAuGH,uBAC3CA,EApGuC,kCAoGH,WACpCA,EAjGwC,mCAiGH,YACrCA,EA9F+C,0CA8FH,wBAC5CA,EA3FkC,6BA2FH,MAC/BA,EAxFiC,4BAwFH,KAC9BA,aCjYAwuB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAwBzC0sS,EAAqC,SAAUvmS,GAE/C,SAASumS,IACL,IAAIrrS,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAShE,OARA0C,EAAMsrS,iBAAmB,SAAUt0T,EAAGyqG,GAClCzqG,EAAEub,iBACFyN,EAAMxkB,MAAMy4R,WAAWxyL,EAAMzqG,EACjC,EACAgpB,EAAMurS,uBAAyB,SAAUv0T,GACrCA,EAAEub,iBACFyN,EAAMxkB,MAAMy4R,WAAWj9R,EAAE0gB,OAAO3U,MAAO/L,EAC3C,EACOgpB,CACX,CAiEA,OA7EAuD,EAAU8nS,EAAqBvmS,GAa/BumS,EAAoB7tS,UAAUnrB,OAAS,WAgBnC,IAfA,IAAI0C,EACAirB,EAAQ1C,KACRqP,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjDkuS,EAAsBluS,KAAK9hB,MAAMiwT,YAAcnuS,KAAK9hB,MAAMiwT,YAAYN,GACrE,CAAEriR,WAAYqiR,EAAmBO,eAAgB1+R,EAASm+R,IAC3DQ,EAAyBruS,KAAK9hB,MAAMiwT,YAAcnuS,KAAK9hB,MAAMiwT,YAAYZ,GACxE,CAAE/hR,WAAY+hR,EAAWa,eAAgB1+R,EAAS69R,IACnDe,EAA6BtuS,KAAK9hB,MAAMiwT,YAAcnuS,KAAK9hB,MAAMiwT,YAAYL,GAC5E,CAAEtiR,WAAYsiR,EAAsBM,eAAgB1+R,EAASo+R,IAC9DS,EAA2Bl/R,EAAoBG,iBAAiB8+R,EAA2B9iR,WAAY8iR,EAA2BF,gBAClII,EAAWxuS,KAAK+C,MAAQ,GAAK/C,KAAKyuS,WAAWzuS,KAAK+C,MAAQ,EAAGwrS,GAC7DG,EAAW1uS,KAAKgH,IAAMhH,KAAK9hB,MAAMomG,YAActkF,KAAKyuS,WAAWzuS,KAAKgH,IAAM,EAAGunS,GAC7EI,EAAiB3uS,KAAK+C,MAAQ,GAAK/C,KAAK4uS,iBAAiB5uS,KAAK+C,MAAQ,GACtE8rS,EAAiB7uS,KAAKgH,IAAMhH,KAAK9hB,MAAMomG,YAActkF,KAAK4uS,iBAAiB5uS,KAAKgH,IAAM,GACtF0yK,EAAU,GACL51L,EAAMkc,KAAK+C,MAAOjf,GAAOkc,KAAKgH,IAAKljB,IACxC41L,EAAQ14K,KAAKld,GAEjB,IAAIgrT,EAAWp1H,EAAQz5L,KAAI,SAAUkkG,GAAQ,OAAQ5wG,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEtB,WAAWu7B,EAAAA,EAAAA,GAAW,CAAE,aAAc1M,EAAMxkB,MAAM6wT,cAAgB5qN,IAAS74E,IAAK64E,EAAMhgG,SAAU,OAAQpK,WAAY,UAAWR,KAAMmpB,EAAMxkB,MAAM3E,KAAM+9B,QAAS,KAAMv/B,KAAM,SAAU,aAAcs3B,EAAoBG,iBAAiB6+R,EAAuB7iR,WAAY6iR,EAAuBD,gBAAkB,IAAMjqN,EAAM,eAAgBzhF,EAAMxkB,MAAM6wT,cAAgB5qN,QAAcjxG,EAAWmC,QAAS,SAAUqE,GAAK,OAAOgpB,EAAMsrS,iBAAiBt0T,EAAGyqG,EAAO,GAAKA,EAAQ,IACliBpmD,EAAU27I,EAAQz5L,KAAI,SAAUkkG,GAAQ,OAAQ5wG,EAAAA,cAAoB,SAAU,CAAE+3B,IAAK64E,GAAQA,EAAQ,IACzG,OAAQ5wG,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB,SAAU,CAAEG,MAAO,CAAE2G,MAAO,MAAOiB,OAAQ,UAAWsoG,QAA6B,aAApB5jF,KAAK9hB,MAAM1E,KAChF,cACA,QAAU3F,WAAWu7B,EAAAA,EAAAA,GAAW,oDAAqD33B,EAAK,CAAC,EACjGA,EAAG,YAAYyM,OAAOk0B,EAAAA,EAAeC,QAAQrY,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,KAChG9B,IAAM,aAAc43B,EAAoBG,iBAAiB0+R,EAAoB1iR,WAAY0iR,EAAoBE,gBAAiB3oT,MAAOua,KAAK9hB,MAAM6wT,YAAavpT,SAAU,SAAU9L,GAAK,OAAOgpB,EAAMurS,uBAAuBv0T,EAAI,GAClOi1T,EACA5wQ,EACA8wQ,GACJt7T,EAAAA,cAAoB,MAAO,CAAEM,UAAW,kBAAmBH,MAAO,CAAEkwG,QAA6B,YAApB5jF,KAAK9hB,MAAM1E,KAC1E,GACA,SACVg1T,EACAM,EACAJ,GACZ,EACA/rT,OAAO6nB,eAAeujS,EAAoB7tS,UAAW,MAAO,CACxDuK,IAAK,WACD,OAAO3V,KAAKC,IAAKiL,KAAK+C,MAAQ/C,KAAK9hB,MAAM8wT,YAAe,EAAGhvS,KAAK9hB,MAAMomG,WAC1E,EACA55E,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeujS,EAAoB7tS,UAAW,QAAS,CAC1DuK,IAAK,WACD,IAAI05E,EAAOnkF,KAAK9hB,MAAM6wT,YAClBC,EAAchvS,KAAK9hB,MAAM8wT,YAC7B,GAAI7qN,EAAO6qN,EAAa,CACpB,IAAIC,EAAY9qN,EAAO6qN,EACvB,OAAqB,IAAbC,EAAmB9qN,EAAO6qN,EAAe,EAAK7qN,EAAO8qN,EAAY,CAC7E,CACA,OAAO,CACX,EACAvkS,YAAY,EACZC,cAAc,IAElBojS,EAAoB7tS,UAAUuuS,WAAa,SAAUtqN,EAAMg3I,GACvD,IAAIz4N,EAAQ1C,KACZ,OAAQzsB,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEgP,SAAU,OAAQpK,WAAY,UAAWR,KAAMymB,KAAK9hB,MAAM3E,KAAM+9B,QAAS,KAAMv/B,KAAM,SAAU,aAAcojP,EAAW9lP,QAAS,SAAUqE,GAAK,OAAOgpB,EAAMsrS,iBAAiBt0T,EAAGyqG,EAAO,GA7E3N,MA8EP,EACA4pN,EAAoB7tS,UAAU0uS,iBAAmB,SAAUzqN,GACvD,OAAQ5wG,EAAAA,cAAoB,SAAU,CAAEkS,MAAO0+F,GAhF5C,MAiFP,EACO4pN,CACX,CA/EyC,CA+EvCx6T,EAAAA,qBCvGE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAsBzC6tS,EAA4B,SAAU1nS,GAEtC,SAAS0nS,IACL,IAAIxsS,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAQhE,OAPA0C,EAAM3vB,MAAQ,CAAEoxG,KAAMzhF,EAAMxkB,MAAM6wT,aAClCrsS,EAAMsmS,eAAiB,SAAUtvT,GAC7BgpB,EAAM6L,SAAS,CAAE41E,KAAMzqG,EAAE0gB,OAAO3U,QAC5B/L,EAAE0gB,OAAO3U,OACTid,EAAMxkB,MAAMy4R,WAAWj9R,EAAE0gB,OAAO3U,MAAO/L,EAE/C,EACOgpB,CACX,CAmBA,OA9BAuD,EAAUipS,EAAY1nS,GAYtB0nS,EAAWhvS,UAAUnrB,OAAS,WAC1B,IAAIo6T,GAAcjkS,EAAAA,EAAAA,IAAmBlL,MACjCqP,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjDovS,EAAcpvS,KAAK9hB,MAAMiwT,YAAcnuS,KAAK9hB,MAAMiwT,YAAYZ,GAC7D,CAAE/hR,WAAY+hR,EAAWa,eAAgB1+R,EAAS69R,IACnD8B,EAAYrvS,KAAK9hB,MAAMiwT,YAAcnuS,KAAK9hB,MAAMiwT,YAAYX,GAC3D,CAAEhiR,WAAYgiR,EAASY,eAAgB1+R,EAAS89R,IACjD8B,EAAoBtvS,KAAK9hB,MAAMiwT,YAAcnuS,KAAK9hB,MAAMiwT,YAAYV,GACnE,CAAEjiR,WAAYiiR,EAAiBW,eAAgB1+R,EAAS+9R,IAC7D,OAAQl6T,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,iBACrCN,EAAAA,cAAoB,OAAQ,KAAM87B,EAAoBG,iBAAiB4/R,EAAY5jR,WAAY4jR,EAAYhB,iBAC3G76T,EAAAA,cAAoBkoE,EAAAA,EAAgB,CAAEh2D,WAAkCvS,IAA3B8sB,KAAK9hB,MAAM6wT,YAA4B/uS,KAAK9hB,MAAM6wT,YAAc/uS,KAAKjtB,MAAMoxG,KAAM3+F,SAAUwa,KAAKgpS,eAAgBj0S,IAAK,EAAG4/P,UAAU,IAC/KphR,EAAAA,cAAoB,OAAQ,KAAM,GAAG2Q,OAAOmrB,EAAoBG,iBAAiB6/R,EAAU7jR,WAAY6jR,EAAUjB,gBAAiB,KAAKlqT,OAAOirT,EACzItsT,OAAOwsB,EAAoBG,iBAAiB8/R,EAAkB9jR,WAAY8jR,EAAkBlB,gBAAiB,CAC9GpuS,KAAK9hB,MAAMomG,gBAE3B,EACO4qN,CACX,CAhCgC,CAgC9B37T,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBw+R,eCxDpBjpS,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAsBzCkuS,EAAgC,SAAU/nS,GAE1C,SAAS+nS,IACL,IAAI7sS,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAMhE,OALA0C,EAAM8sS,eAAiB,SAAU91T,GACzBgpB,EAAMxkB,MAAMy4R,YACZj0Q,EAAMxkB,MAAMy4R,WAAW,CAAE7qQ,KAAM,EAAGC,KAAM4hE,SAASj0F,EAAE0gB,OAAO3U,MAAO,KAAO/L,EAEhF,EACOgpB,CACX,CAeA,OAxBAuD,EAAUspS,EAAgB/nS,GAU1B+nS,EAAervS,UAAUnrB,OAAS,WAC9B,IAAI0C,EAAKuoB,KAAK9hB,MAAOuH,EAAQhO,EAAGgO,MAAOgqT,EAAYh4T,EAAGg4T,UAAWlkC,EAAW9zR,EAAG8zR,SAAU4iC,EAAc12T,EAAG02T,YACtGuB,EAAQD,EAAU7gT,aACR1b,IAAVuS,GAAwF,IAAjEiqT,EAAM5sT,QAAO,SAAU2pB,GAAK,OAAOA,IAAM8+P,CAAU,IAAG1pR,QAC7E6tT,EAAMp/P,QAAQi7N,GAElB,IAAIokC,EAAqBxB,EAAcA,EAAYb,GAC9C,CAAE9hR,WAAY8hR,EAAkBc,eAAgB1+R,EAAS49R,IAC1DsC,EAAuBzB,EAAcA,EAAYP,GAChD,CAAEpiR,WAAYoiR,EAAwBQ,eAAgB1+R,EAASk+R,IACpE,OAAQr6T,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,iBAC7CN,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAE9U,WAAiBvS,IAAVuS,EAAsBA,EAAQ8lR,EAAUhzR,KAAMm3T,EAAOlqT,SAAUwa,KAAKwvS,eAAgBr0E,WAAW7rN,EAAAA,EAAAA,IAA2BtP,MAAMwP,iBAAiBogS,EAAqBpkR,WAAYokR,EAAqBxB,gBAAiB70T,KAAMymB,KAAK9hB,MAAM3E,OACpRhG,EAAAA,cAAoB,OAAQ,MAAM+7B,EAAAA,EAAAA,IAA2BtP,MAAMwP,iBAAiBmgS,EAAmBnkR,WAAYmkR,EAAmBvB,iBAC9I,EACOmB,CACX,CA1BoC,CA0BlCh8T,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwB6+R,0BC/Cbp5R,GAAkB,CACzBrgC,KAAM,mCACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,yJCTlBhyC,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAoBImjS,GAAuB,SAAUroS,GAEjC,SAASqoS,EAAM3xT,GACX,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAsCxC,OArCA0C,EAAM/iB,SAAW,KACjB+iB,EAAMytQ,aAAe,SAAU13N,EAAWq3P,GACtC,IAAI57T,EAAQ2gB,GAAS,CAAEuF,OAAQsI,EAAO0P,eAAgB09R,EAAY19R,eAAgBD,YAAa29R,EAAY39R,YAAa29R,YAAaA,GAAer3P,GAChJ/1C,EAAMxkB,MAAMiyR,cACZztQ,EAAMxkB,MAAMiyR,aAAa1pQ,UAAKvzB,EAAWgB,EAEjD,EACAwuB,EAAMqzQ,WAAa,SAAU5xL,EAAMjwG,GAC3BwuB,EAAMxkB,MAAMiyR,cAAgBhsL,EAAO,GAAKA,GAAQzhF,EAAM4hF,YACtD5hF,EAAMxkB,MAAMiyR,aAAa,CACrB/1Q,OAAQsI,EACRoJ,MAAOq4E,EAAO,GAAKzhF,EAAMxkB,MAAM6tB,KAC/BA,KAAMrJ,EAAMxkB,MAAM6tB,KAClBqG,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB29R,YAAa57T,GAGzB,EACAwuB,EAAM+/N,eAAiB,WACnB,IAAIp6N,EAAU3F,EAAM2F,QACpB,GAAKA,GAAY3F,EAAMxkB,MAAM6xT,WAA7B,CAGA,IAAI11T,EAAQguB,EAAQm9H,YAChBnrJ,EAlCmB,IAmCnBqoB,EAAM6L,SAAS,CAAEyhS,gBAAgB,IAE5B31T,GArCc,KAqC2BA,EAjC5B,IAkClBqoB,EAAM6L,SAAS,CAAE0hS,eAAe,EAAOD,gBAAgB,IAGvDttS,EAAM6L,SAAS,CAAE0hS,eAAe,EAAMD,gBAAgB,GAT1D,CAWJ,GACA95R,EAAAA,EAAAA,GAAgBC,IAChBzT,EAAM3vB,MAAQ,CAAEi9T,gBAAgB,EAAMC,eAAe,GAC9CvtS,CACX,CAkIA,OA3KAuD,GAAU4pS,EAAOroS,GA0CjB7kB,OAAO6nB,eAAeqlS,EAAM3vS,UAAW,QAAS,CAC5CuK,IAAK,WACD,MAA0B,QAAnBzK,KAAK9hB,MAAMyd,GACtB,EACA+O,YAAY,EACZC,cAAc,IAGlBhoB,OAAO6nB,eAAeqlS,EAAM3vS,UAAW,UAAW,CAI9CuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAKlBklS,EAAM3vS,UAAU4K,kBAAoB,WAChC/xB,OAAOG,iBAAiB,SAAU8mB,KAAKyiO,gBACvCziO,KAAKyiO,gBACT,EAIAotE,EAAM3vS,UAAU6O,qBAAuB,WACnCh2B,OAAOq5C,oBAAoB,SAAUpyB,KAAKyiO,eAC9C,EAIAotE,EAAM3vS,UAAUnrB,OAAS,WACrB,IAAI0C,EAuBAouD,EAAO/3B,EAAMD,EAAMvK,EAtBnBZ,EAAQ1C,KACRnoB,EAAKmoB,KAAKjtB,MAAOi9T,EAAiBn4T,EAAGm4T,eAAgBC,EAAgBp4T,EAAGo4T,cACxE/3T,EAAK8nB,KAAK9hB,MAAO4tB,EAAO5zB,EAAG4zB,KAAMC,EAAO7zB,EAAG6zB,KAAMxK,EAAQrpB,EAAGqpB,MAAOkuS,EAAYv3T,EAAGu3T,UAAWl2T,EAAOrB,EAAGqB,KAAMw2T,EAAa73T,EAAG63T,WAAY5B,EAAcj2T,EAAGi2T,YAAa+B,EAAgBh4T,EAAGg4T,cAC1L7gS,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjDmvS,GAAcjkS,EAAAA,EAAAA,IAAmBlL,MACjC+uS,EAAcj6S,KAAK4M,MAAMoK,EAAOC,GAAQ,EACxCokS,EAA8B,YAApBnwS,KAAK9hB,MAAM1E,KACpBjG,EAAAA,cAAoBw6T,EAAqB,CAAEv0T,KAAOu2T,IAAeC,EAAkB,WAAa,UAAWhB,YAAahvS,KAAK9hB,MAAM8wT,aAAe,EAAG1qN,WAAYtkF,KAAKskF,WAAYyqN,YAAaA,EAAap4B,WAAY32Q,KAAK+1Q,WAAYo4B,YAAanuS,KAAK9hB,MAAMiwT,YAAa50T,KAAMymB,KAAK9hB,MAAM3E,OAAYhG,EAAAA,cAAoB27T,EAAY,CAAEF,YAAahvS,KAAK9hB,MAAM8wT,aAAe,EAAG1qN,WAAYtkF,KAAKskF,WAAYyqN,YAAaA,EAAap4B,WAAY32Q,KAAK+1Q,WAAYo4B,YAAaA,EAAa50T,KAAMymB,KAAK9hB,MAAM3E,OACvf62T,EAAmBjC,EAAcA,EAAYjB,GAC5C,CAAE1hR,WAAY0hR,EAAgBkB,eAAgB1+R,EAASw9R,IACxDmD,EAAsBlC,EAAcA,EAAYhB,GAC/C,CAAE3hR,WAAY2hR,EAAmBiB,eAAgB1+R,EAASy9R,IAC3DmD,EAAkBnC,EAAcA,EAAYf,GAC3C,CAAE5hR,WAAY4hR,EAAegB,eAAgB1+R,EAAS09R,IACvDmD,EAAkBpC,EAAcA,EAAYd,GAC3C,CAAE7hR,WAAY6hR,EAAee,eAAgB1+R,EAAS29R,IACvDmD,EAAcrC,EAAcA,EAAYlB,GACvC,CAAEzhR,WAAYyhR,EAAWmB,eAAgB1+R,EAASu9R,IACnDwD,EAA0BtC,EAAcA,EAAYT,GACnD,CAAEliR,WAAYkiR,EAAuBU,eAAgB1+R,EAASg+R,IAC/DgD,EAAmBvC,EAAcA,EAAYR,GAC5C,CAAEniR,WAAYmiR,EAAgBS,eAAgB1+R,EAASi+R,IAExD3tS,KAAK9hB,MAAMyyT,eACX9qQ,EAAQ7lC,KAAK85N,aAAa,EAAG,6BAA+C,IAAhBi1E,EAAoB,cAAgB,IAAK1/R,EAAoBG,iBAAiB4gS,EAAiB5kR,WAAY4kR,EAAiBhC,gBAAiBpuS,KAAK8jB,MAAQ,qBAAuB,oBAAqB9jB,KAAK8jB,MAAQ8sR,GAAAA,IAAsBC,GAAAA,IAAqC,IAAhB9B,QAA2B77T,GACrV46B,EAAO9N,KAAK85N,aAAai1E,EAAc,EAAG,eAAiC,IAAhBA,EAAoB,cAAgB,IAAK1/R,EAAoBG,iBAAiB6gS,EAAoB7kR,WAAY6kR,EAAoBjC,gBAAiBpuS,KAAK8jB,MAAQ,kBAAoB,iBAAkB9jB,KAAK8jB,MAAQ23P,GAAAA,IAAoBD,GAAAA,IAAmC,IAAhBuzB,QAA2B77T,GAChV26B,EAAO7N,KAAK85N,aAAai1E,EAAc,EAAG,eAAiBA,GAAe/uS,KAAKskF,WAAa,cAAgB,IAAKj1E,EAAoBG,iBAAiB8gS,EAAgB9kR,WAAY8kR,EAAgBlC,gBAAiBpuS,KAAK8jB,MAAQ,iBAAmB,kBAAmB9jB,KAAK8jB,MAAQ03P,GAAAA,IAAmBC,GAAAA,IAAoBszB,GAAe/uS,KAAKskF,iBAAoBpxG,GAClWowB,EAAOtD,KAAK85N,aAAa95N,KAAKskF,WAAY,4BAA8ByqN,GAAe/uS,KAAKskF,WAAa,cAAgB,IAAKj1E,EAAoBG,iBAAiB+gS,EAAgB/kR,WAAY+kR,EAAgBnC,gBAAiBpuS,KAAK8jB,MAAQ,oBAAsB,qBAAsB9jB,KAAK8jB,MAAQ+sR,GAAAA,IAAqBD,GAAAA,IAAsB7B,GAAe/uS,KAAKskF,iBAAoBpxG,IAE7X,IAAI49T,EAAiBrB,GAAcl8T,EAAAA,cAAoBg8T,EAAgB,CAAE54B,WAAY32Q,KAAKmwQ,aAAc5E,SAAUx/P,EAAM0jS,UAAWA,EAAWhqT,MAAOyqT,EAAe/B,YAAaA,EAAa50T,KAAMymB,KAAK9hB,MAAM3E,OAC3MuE,EAAOkiB,KAAK9hB,MAAMJ,MAASvK,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,gBAAkBs7T,EACrFtsT,OAAOwsB,EAAoBG,iBAAiBghS,EAAYhlR,WAAYglR,EAAYpC,gBAAiB,CAClGt5S,KAAKC,IAAI+W,EAAO,EAAGvK,GACnBzM,KAAKC,IAAI+W,EAAOC,EAAMxK,GACtBA,KAEJ,OAAQhuB,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,WAAY33B,EAAK,CAAC,EACrEA,EAAG,WAAWyM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EAC9D9B,GAAKuoB,KAAK9hB,MAAMrK,WAAYH,MAAOssB,KAAK9hB,MAAMxK,MAAOqE,KAAM,cAAe,uBAAwB,QAAS4jB,IAAKqE,KAAK9hB,MAAMyd,IAAK,oBAAqB0T,EAAoBG,iBAAiBihS,EAAwBjlR,WAAYilR,EAAwBrC,gBAAiB,aAAc/+R,EAAoBG,iBAAiBkhS,EAAiBllR,WAAYklR,EAAiBtC,gBAAiBr6T,IAAK,SAAUs0B,GAAW,OAAO3F,EAAM/iB,SAAW0oB,CAAS,GACxb90B,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,yBAC/Cy2B,EACA/3B,EACAqiS,EACAtiS,EACAvK,GACJysS,EAAcC,GAAkBc,EAAkBA,EAClDf,EAAcE,GAAiBnyT,EAAQA,EAC/C,EACA+xT,EAAM3vS,UAAU45N,aAAe,SAAU31I,EAAMtwG,EAAWmM,EAAO5K,EAAMujC,EAAS6xO,GAC5E,IAAI9nP,EAAQ1C,KACZ,OAAQzsB,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEgP,SAAU,OAAQpK,WAAY,OAAQR,KAAMymB,KAAK9hB,MAAM3E,KAAM+9B,QAAS,KAAMzjC,UAAWA,EAAWuB,KAAMA,EAAMujC,QAASA,EAAS34B,MAAOA,EAAOjI,KAAM,SAAU,gBAAiByyQ,EAAYn1Q,QAAS,SAAUqE,GAC5OA,EAAEub,iBACFyN,EAAMqzQ,WAAW5xL,EAAMzqG,EAC3B,GACR,EACAiJ,OAAO6nB,eAAeqlS,EAAM3vS,UAAW,aAAc,CACjDuK,IAAK,WACD,OAAO3V,KAAK4O,MAAM1D,KAAK9hB,MAAMqjB,OAAS,GAAKvB,KAAK9hB,MAAM6tB,KAC1D,EACArB,YAAY,EACZC,cAAc,IAKlBklS,EAAM7jS,UAAY,CACdn4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACP1K,MAAO0K,EAAAA,OAAiBoY,WACxBvY,KAAMG,EAAAA,OAAiBoY,WACvBtY,KAAME,EAAAA,OAAiBoY,WACvB2qR,YAAa/iS,EAAAA,OACbnuB,KAAMmuB,EAAAA,KACNzyB,KAAMyyB,EAAAA,MAAgB,CAAC,UAAW,UAClCwjS,UAAWxjS,EAAAA,QAAkBA,EAAAA,UAAoB,CAC7CA,EAAAA,OACAA,EAAAA,UAEJ0kS,aAAc1kS,EAAAA,KACdkkQ,aAAclkQ,EAAAA,KACdkiS,YAAaliS,EAAAA,KACb1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDtQ,IAAKsQ,EAAAA,QAKT4jS,EAAMxmS,aAAe,CACjB2lS,YAAa,GACblxT,MAAM,EACNtE,KAAM,UACND,KAAM,UAEHs2T,CACX,CA7K2B,CA6KzBt8T,EAAAA,YAEFg5B,EAAAA,EAAAA,IAAgBsjS,KAChBn/R,EAAAA,EAAAA,IAAwBm/R,0EC7NpBh7S,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAOWqkS,GAAiB,SAAU7yT,GAClC,IAAIzG,EACA8rP,EAAYrlP,EAAMqlP,UAAWL,EAAWhlP,EAAMglP,SAC9CrrP,GAAK8qQ,EAAAA,EAAAA,IAAoBzkQ,EAAMmE,YAAa2uT,EAAmBn5T,EAAGyK,QAAS2uT,EAAgBp5T,EAAGowP,KAAMipE,EAAgBr5T,EAAG0K,KAAM6pM,EAAgBv0M,EAAGmJ,KAChJmwT,EAAe59T,EAAAA,OAAa,MAC5B69T,EAAoB79T,EAAAA,OAAa,MACjC89T,EAAe99T,EAAAA,OAAa,CAAEkkM,QAAS,EAAGC,QAAS,IACnDx/L,EAAK3E,EAAAA,SAAe,MAAO+9T,EAAkBp5T,EAAG,GAAIq5T,EAAqBr5T,EAAG,GAC5Es5T,EAAkBj+T,EAAAA,SAClBk+T,EAAel+T,EAAAA,QAAa,GAC5Bm+T,EAAiBn+T,EAAAA,QAAa,GAC9Bo+T,EAAiBp+T,EAAAA,aAAkB,SAAUklE,GAC7C,IAAIvkE,EAAQukE,EAAUvkE,MACtBw9T,EAAer9T,QAAUH,EAAM40P,cAAc1uO,OAAO68J,aAAa0pF,GAAAA,KAC7D+wD,EAAer9T,SAAY88T,EAAa98T,UAG5Cm9T,EAAgBn9T,SAAUouQ,EAAAA,EAAAA,IAAuB0uD,EAAa98T,QAAQg0B,SACtEgpS,EAAah9T,QAAU,CACnBqjM,QAASxjM,EAAMwjM,QACfD,QAASvjM,EAAMujM,SAEvB,GAAG,IACCm6H,EAAgBr+T,EAAAA,aAAkB,SAAUklE,GAC5C,IAAIvkE,EAAQukE,EAAUvkE,MAClBuD,EAAK45T,EAAah9T,QAASojM,EAAUhgM,EAAGggM,QAASC,EAAUjgM,EAAGigM,QAClE,IAAIg6H,EAAer9T,SAGd48T,GAAmC,WAAlBC,KAGlBp8S,KAAK6T,IAAI+uK,EAAUxjM,EAAMwjM,SAAW,GAAK5iL,KAAK6T,IAAI8uK,EAAUvjM,EAAMujM,SAAW,KAC7Eg6H,EAAap9T,SAAU,GAEvBo9T,EAAap9T,SAAS,CACtB,IAAIo0B,GAASi6O,EAAAA,EAAAA,IAAU8uD,EAAgBn9T,SACvCk9T,EAAmB,CACf33T,IAAKkb,KAAKC,IAAI2iL,EAASxjM,EAAMwjM,SAAWjvK,EAAO7uB,IAC/C8V,KAAMoF,KAAKC,IAAI0iL,EAASvjM,EAAMujM,SAAWhvK,EAAO/Y,KAChDrV,MAAOya,KAAK6T,IAAIz0B,EAAMujM,QAAUA,GAChCp8L,OAAQyZ,KAAK6T,IAAIz0B,EAAMwjM,QAAUA,IAEzC,CACJ,GAAG,CAAC65H,EAAoBN,EAAeC,IACnCW,EAAmBt+T,EAAAA,aAAkB,SAAUklE,GAC/C,IAAIvkE,EAAQukE,EAAUvkE,MAClBuD,EAAK45T,EAAah9T,QAASojM,EAAUhgM,EAAGggM,QAASC,EAAUjgM,EAAGigM,QAClE,IAAIg6H,EAAer9T,SAAY88T,EAAa98T,QAA5C,CAGA,IAAIuxP,EAAkBurE,EAAa98T,QAAQg0B,SAAW8oS,EAAa98T,QAAQg0B,QAAQgO,cACnF,GAAKuvN,EAAL,CAGA,GAAK6rE,EAAap9T,QA0Bb,CACD,IAAIkyN,EAAQzxM,KAAKC,IAAI2iL,EAASxjM,EAAMwjM,SAChChoL,EAAOoF,KAAKC,IAAI0iL,EAASvjM,EAAMujM,SAC/Bt9F,EAASrlF,KAAKI,IAAIwiL,EAASxjM,EAAMwjM,SACjC79L,EAAQib,KAAKI,IAAIuiL,EAASvjM,EAAMujM,SAChCq6H,EAAiBV,EAAkB/8T,QACvC,IAAKy9T,EACD,OAEJA,EAAep+T,MAAMwiH,WAAa,SAC9B67M,EAAensE,EAAgB7hE,iBAAiBr0K,EAAM62M,GAA1D,IACIyrG,EAAapsE,EAAgB7hE,iBAAiBlqL,EAAOsgG,GAEzD,GADA23N,EAAep+T,MAAMwiH,WAAa,IAC7B67M,IAAiBC,EAClB,OAEJ,IAAIC,GAAiBpxD,EAAAA,EAAAA,IAAekxD,EAAc,MAC9CG,GAAiBrxD,EAAAA,EAAAA,IAAeoxD,EAAgB,MAChDE,GAAetxD,EAAAA,EAAAA,IAAemxD,EAAY,MAC1CI,GAAevxD,EAAAA,EAAAA,IAAesxD,EAAc,MAC5C5wD,GAAgBP,EAAAA,EAAAA,IAAeixD,GAC/BxwD,GAAgBV,EAAAA,EAAAA,IAAYmxD,GAC5B1wD,GAAcR,EAAAA,EAAAA,IAAemxD,GAC7BzwD,GAAcX,EAAAA,EAAAA,IAAYqxD,QACRl/T,IAAlBquQ,QACkBruQ,IAAlBuuQ,QACgBvuQ,IAAhBsuQ,QACgBtuQ,IAAhBwuQ,GACAne,EAAU,CACNpxN,YAAaj+B,EAAM40P,cACnB2Y,cAAeA,EACfF,cAAeA,EACfG,YAAaA,EACbF,YAAaA,EACb5uO,OAAQ1+B,EAAM0+B,OACd+gK,SAAUz/L,EAAMy/L,SAChBF,QAASv/L,EAAMu/L,QACfC,QAASx/L,EAAMw/L,QACfnxL,KAAM2uT,EACNlwT,KAAMorM,EACNu1D,QAAQ,GAGpB,KArE2B,CACvB,IAAIowD,EACJ,KADIA,EAAensE,EAAgB7hE,iBAAiB0T,EAASC,IAEzD,OAEJ,IAAI0pE,GAAYP,EAAAA,EAAAA,IAAekxD,EAAc,MACzC1wD,GAAYR,EAAAA,EAAAA,IAAekxD,EAAc,MACzCviG,GAAWwxC,EAAAA,EAAAA,IAAeI,GAC1Bj9C,GAAW48C,EAAAA,EAAAA,IAAYM,GACvBD,GAAaC,QAA0BnuQ,IAAbixN,QAAuCjxN,IAAbs8N,GACpD+zB,EAAU,CACNpxN,YAAaj+B,EAAM40P,cACnB2Y,cAAet9C,EACfo9C,cAAe/xC,EACfkyC,YAAav9C,EACbq9C,YAAahyC,EACb58L,OAAQ1+B,EAAM0+B,OACd+gK,SAAUz/L,EAAMy/L,SAChBF,QAASv/L,EAAMu/L,QACfC,QAASx/L,EAAMw/L,QACfnxL,KAAM2uT,EACNlwT,KAAMorM,EACNu1D,QAAQ,GAGpB,CA6CA4vD,EAAmB,MACnBE,EAAap9T,SAAU,EACvBg9T,EAAah9T,QAAU,CAAEojM,QAAS,EAAGC,QAAS,EAzE9C,CAJA,CA8EJ,GAAG,CAAC65H,EAAoBL,EAAe9kH,EAAem3C,IAClDW,GAAcqC,EAAAA,GAAAA,GAAY6qE,GAC9B,OAAKJ,EAGGz9T,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB0vP,GAAAA,EAAW,CAAEI,QAASsuE,EAAgBhuE,OAAQiuE,EAAeruE,UAAWsuE,EAAkB99T,IAAKo9T,EAAcjuE,SAAUA,GAAYhlP,EAAMzK,UAC7J69T,GACIp/E,GAAAA,aAAsB3+O,EAAAA,cAAoB,MAAO,CAAEQ,IAAKq9T,EAAmB19T,MAAOmhB,GAASA,GAAS,CAAC,EAAGy8S,GAAkB,CAAE33T,SAAU,UAAY9F,UAAW,8BAAyD,QAAxB4D,EAAKysP,WAAkC,IAAPzsP,OAAgB,EAASA,EAAG4X,OALtP9b,EAAAA,aAAmBA,EAAAA,SAAe6mL,KAAKl8K,EAAMzK,UAAW,CAAEM,IAAKmvP,GAM/E,EC1JIj9N,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAqBzCgxS,GAA0B,SAAU7qS,GAEpC,SAAS6qS,EAASn0T,GACd,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAQxC,OAPA0C,EAAM3vB,MAAQ,CACVsI,OAAQ,EACR08I,SAAS,EACTroI,KAAM,EACN9V,IAAK,GAET8oB,EAAM4vS,iBAAmB/+T,EAAAA,YAClBmvB,CACX,CAgBA,OA3BAuD,GAAUosS,EAAU7qS,GAYpB6qS,EAASnyS,UAAUnrB,OAAS,WACxB,IAAIw9T,EAAgBvyS,KAAKsyS,iBAAiBj+T,QACtCm+T,EAAWxyS,KAAKjtB,MAAMglJ,SAAW3yH,EAAAA,IAAaqtS,EAAAA,GAAAA,cAAcl/T,EAAAA,cAAoB,MAAO,CAAEM,UAAW,sBAAuBH,MAAO,CAC9HoG,OAAQ,IACR8pG,QAAS,QACThqG,IAAKomB,KAAKjtB,MAAM6G,IAAM,KACtB8V,KAAMsQ,KAAKjtB,MAAM2c,KAAO,KACxBrU,OAAQ2kB,KAAKjtB,MAAMsI,OAAS,QACxBk3T,GAAiBA,EAAcl8R,cACvCk8R,EAAcl8R,cAAchnB,KAC5Bb,SAASa,MACb,OAAQ9b,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCi/T,EACAj/T,EAAAA,cAAoB,MAAO,CAAEQ,IAAKisB,KAAKsyS,iBAAkB5+T,MAAO,CAAEkwG,QAAS,UACnF,EACOyuN,CACX,CA7B8B,CA6B5B9+T,EAAAA,0BClDE0yB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAsBzCqxS,GAA0B,SAAUlrS,GAEpC,SAASkrS,EAASx0T,GACd,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAUxC,OATA0C,EAAMmyN,WAAathP,EAAAA,YACnBmvB,EAAM3vB,MAAQ,CACVglJ,SAAS,EACTn+I,IAAK,EACL8V,KAAM,EACNyrM,UAAW,GACXv0M,OAAQ,cAEZ8b,EAAM4vS,iBAAmB/+T,EAAAA,YAClBmvB,CACX,CA2BA,OAxCAuD,GAAUysS,EAAUlrS,GAcpB7kB,OAAO6nB,eAAekoS,EAASxyS,UAAW,UAAW,CACjDuK,IAAK,WACD,OAAOzK,KAAK60N,WAAWxgP,OAC3B,EACAq2B,YAAY,EACZC,cAAc,IAElB+nS,EAASxyS,UAAUnrB,OAAS,WACxB,IAAIw9T,EAAgBvyS,KAAKsyS,iBAAiBj+T,QACtCuS,EAASoZ,KAAKjtB,MAAM6T,OACpB+rT,EAAW3yS,KAAKjtB,MAAMglJ,SAAW3yH,EAAAA,IAAaqtS,EAAAA,GAAAA,cAAcl/T,EAAAA,cAAoB,MAAO,CAAEQ,IAAKisB,KAAK60N,WAAYhhP,UAAW,uBAAwBH,MAAO,CACrJkwG,QAAS,QACTjqG,SAAU,WACVG,OAAQ,IACR4J,QAAS,WACT9J,IAAKomB,KAAKjtB,MAAM6G,IAAM,KACtB8V,KAAMsQ,KAAKjtB,MAAM2c,KAAO,OAE5Bnc,EAAAA,cAAoBszC,GAAAA,EAAU,CAAEhzC,UAAW,gBAAiBiC,KAAM8Q,EAAQxR,KAAiB,eAAXwR,EAA0BwkC,GAAAA,IAAakoP,GAAAA,MACvHtzQ,KAAKjtB,MAAMooN,WAAco3G,GAAiBA,EAAcl8R,cACxDk8R,EAAcl8R,cAAchnB,KAC5Bb,SAASa,MACb,OAAQ9b,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCo/T,EACAp/T,EAAAA,cAAoB,MAAO,CAAEQ,IAAKisB,KAAKsyS,iBAAkB5+T,MAAO,CAAEkwG,QAAS,UACnF,EACO8uN,CACX,CA1C8B,CA0C5Bn/T,EAAAA,gDChEE0yB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAOI+W,GAAwB,SAAUjc,GAElC,SAASic,IACL,IAAI/gB,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAmBhE,OAlBA0C,EAAMkwS,WAAa,KACnBlwS,EAAMyiF,MAAQ,KACdziF,EAAMmwS,YAAa,EACnBnwS,EAAMyyO,gBAAiBD,EAAAA,EAAAA,KACvBxyO,EAAM4hP,SAAW,SAAU7rE,GACvB,GAAI/1K,EAAMmwS,WACNnwS,EAAMmwS,YAAa,OAGvB,GAAKnwS,EAAMkwS,WAAX,CAGA,IAAI5/M,EAAatwF,EAAMkwS,WAAW5/M,WAC9B8/M,EAAwBpwS,EAAMxkB,MAAM40T,wBACpCA,GAAyBA,EAAsB9/M,aAAeA,IAC9D8/M,EAAsB9/M,WAAaA,EAJvC,CAMJ,EACOtwF,CACX,CAsDA,OA5EAuD,GAAUwd,EAAQjc,GAuBlB7kB,OAAO6nB,eAAeiZ,EAAOvjB,UAAW,UAAW,CAC/CuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAM60T,QAAQ1+T,OAC9B,EACAq2B,YAAY,EACZC,cAAc,IAElB8Y,EAAOvjB,UAAU4K,kBAAoB,WACjC,IAAI+uN,GAAM/1M,EAAAA,EAAAA,IAAM9jB,KAAKqI,SACjBrI,KAAK9hB,MAAM80T,cACXhzS,KAAK9hB,MAAM80T,aAAaC,SAASp5E,GAErC75N,KAAK+K,aACT,EAKA0Y,EAAOvjB,UAAUgzS,cAAgB,SAAUlgN,GACnChzF,KAAK4yS,YAAc5yS,KAAK4yS,WAAW5/M,aAAeA,IAClDhzF,KAAK6yS,YAAa,EAClB7yS,KAAK4yS,WAAW5/M,WAAaA,EAErC,EAKAvvE,EAAOvjB,UAAUg9Q,SAAW,SAAU7iS,GAC9B2lB,KAAKmlF,QACLnlF,KAAKmlF,MAAMzxG,MAAM2G,MAAQA,EAAQ,KAEzC,EACAopC,EAAOvjB,UAAUnrB,OAAS,WACtB,IAAI0C,EACAirB,EAAQ1C,KACZ,OAAKA,KAAK9hB,MAAMi1T,cAKR5/T,EAAAA,cAAoB,MAAO,CAAEQ,IAAKisB,KAAK9hB,MAAM60T,QAASl/T,WAAWu7B,EAAAA,EAAAA,GAAW,gBAAiB,CAAE,0BAA2BpP,KAAK9hB,MAAMsmL,YAAczsL,KAAM,gBAC7JxE,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAUsxB,GAAO3C,EAAMkwS,WAAavtS,CAAK,EAAGxxB,UAAW,qBAAsBH,MAAOssB,KAAKm1O,eAAiB,CAAC,EAAI,CAAE4gD,YAAa,GAAKzxC,SAAUtkP,KAAKskP,SAAUvsQ,KAAM,gBAChMxE,EAAAA,cAAoB,QAAS,CAAEQ,IAAK,SAAUoxG,GAASziF,EAAMyiF,MAAQA,CAAO,EAAGtxG,WAAWu7B,EAAAA,EAAAA,GAAW,+BAAgC33B,EAAK,CAC9H,cAAeuoB,KAAK9hB,MAAM3E,MAE9B9B,EAAG,WAAWyM,OAAOk0B,EAAAA,EAAeC,QAAQrY,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,KAC/F9B,GAAKuoB,KAAK9hB,MAAMrK,WAAYkE,KAAM,gBACtCxE,EAAAA,cAAoB,WAAY,CAAEQ,IAAK,SAAU2F,GAAKgpB,EAAMxkB,MAAM80T,aAAaI,eAAiB15T,CAAG,GAAKsmB,KAAK9hB,MAAM2c,MACnHtnB,EAAAA,cAAoB,QAASshB,GAAS,CAAEhhB,UAAW,gBAAiBkE,KAAM,YAAc+lQ,GAAAA,IACpF99O,KAAK9hB,MAAMm1T,UACXrzS,KAAK9hB,MAAMo1T,cAdf//T,EAAAA,cAAoB,QAASshB,GAAS,CAAE9c,KAAM,eAAgBlE,WAAWu7B,EAAAA,EAAAA,GAAW,gBAAiB,CAAE,0BAA2BpP,KAAK9hB,MAAMsmL,aAAgBs5E,GAAAA,IACjK99O,KAAK9hB,MAAMm1T,UACXrzS,KAAK9hB,MAAMo1T,UAavB,EACO7vR,CACX,CA9E4B,CA8E1BlwC,EAAAA,sBC9GE0yB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAoBzCkyS,GAAiC,SAAU/rS,GAE3C,SAAS+rS,IACL,IAAI7wS,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KA6BhE,OA5BA0C,EAAM8hK,UAAY,KAIlB9hK,EAAM2gO,QAAU,SAAU9qP,GACtB,IAAI8vB,EAAU3F,EAAM8hK,WAAa9hK,EAAM8hK,UAAUn8J,QAC7CA,GAAW3F,EAAMxkB,MAAMs1T,cACvB9wS,EAAMxkB,MAAMs1T,aAAaj7T,EAAKrE,MAAOm0B,EAE7C,EAIA3F,EAAMihO,OAAS,SAAUprP,GACrB,IAAI8vB,EAAU3F,EAAM8hK,WAAa9hK,EAAM8hK,UAAUn8J,QAC7CA,GAAW3F,EAAMxkB,MAAMu1T,aACvB/wS,EAAMxkB,MAAMu1T,YAAYl7T,EAAKrE,MAAOm0B,EAE5C,EAIA3F,EAAM6gO,UAAY,SAAUhrP,GACVmqB,EAAM8hK,WAAa9hK,EAAM8hK,UAAUn8J,SAClC3F,EAAMxkB,MAAMw1T,gBACvBhxS,EAAMxkB,MAAMw1T,eAAen7T,EAAKrE,MAExC,EACOwuB,CACX,CAMA,OAtCAuD,GAAUstS,EAAiB/rS,GAiC3B+rS,EAAgBrzS,UAAUnrB,OAAS,WAC/B,IAAI2tB,EAAQ1C,KACZ,OAAQzsB,EAAAA,cAAoB0vP,GAAAA,EAAW,CAAEI,QAASrjO,KAAKqjO,QAASM,OAAQ3jO,KAAK2jO,OAAQJ,UAAWvjO,KAAKujO,UAAW7pO,KAAMsG,KAAK9hB,MAAMy0T,SAAU3uE,WAAY,CAAEsJ,mBAAoBttO,KAAK9hB,MAAMy1T,UAAWtiS,UAAW,CAAE4H,YAAY,EAAMC,UAAU,IAAW+qN,gBAAiBjkO,KAAK9hB,MAAM01T,mBAAgB1gU,EAAWa,IAAK,SAAUgC,GAAa2sB,EAAM8hK,UAAYzuL,CAAW,GACnWxC,EAAAA,cAAoB,KAAM,CAAEM,UAAW,cAAeH,MAAO,CAAEq7P,YAAa,QAAUh3P,KAAM,MAAO,gBAAiBioB,KAAK9hB,MAAM21T,cAAgB7zS,KAAK9hB,MAAMzK,UAClK,EACO8/T,CACX,CAxCqC,CAwCnChgU,EAAAA,0BC5DE0yB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAoBzCyyS,GAA+B,SAAUtsS,GAEzC,SAASssS,IACL,IAAIpxS,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAsChE,OArCA0C,EAAM8hK,UAAY,KAClB9hK,EAAMqxS,WAAY,EAIlBrxS,EAAMihO,OAAS,SAAUprP,GACrBmqB,EAAMqxS,WAAY,EAClB,IAAI1rS,EAAU3F,EAAM8hK,WAAa9hK,EAAM8hK,UAAUn8J,QAC7CA,GACA3F,EAAMxkB,MAAMkkN,OAAO7pN,EAAKrE,MAAOm0B,GAAS,EAEhD,EAIA3F,EAAM6gO,UAAY,SAAUhrP,GACxB,GAAKmqB,EAAMqxS,UAAX,CAGA,IAAI1rS,EAAU3F,EAAM8hK,WAAa9hK,EAAM8hK,UAAUn8J,QAC7CA,GACA3F,EAAMxkB,MAAMkkN,OAAO7pN,EAAKrE,MAAOm0B,GAAS,GAE5C3F,EAAMqxS,WAAY,CALlB,CAMJ,EAIArxS,EAAM6sO,cAAgB,SAAUr7P,GAC5B,IAAIwuB,EAAMqxS,UAAV,CAGA,IAAI1rS,EAAU3F,EAAM8hK,WAAa9hK,EAAM8hK,UAAUn8J,QAC7CA,GAAW3F,EAAMxkB,MAAM81T,SACvBtxS,EAAMxkB,MAAM81T,QAAQ9/T,EAAOm0B,EAH/B,CAKJ,EACO3F,CACX,CAMA,OA/CAuD,GAAU6tS,EAAetsS,GA0CzBssS,EAAc5zS,UAAUnrB,OAAS,WAC7B,IAAI2tB,EAAQ1C,KACZ,OAAQzsB,EAAAA,cAAoB0vP,GAAAA,EAAW,CAAEI,QAAS,SAAU3pP,GAAKA,EAAExF,MAAM40P,cAAct2N,iBAAmB,EAAGmxN,OAAQ3jO,KAAK2jO,OAAQJ,UAAWvjO,KAAKujO,UAAWxvP,IAAK,SAAUgC,GAAa2sB,EAAM8hK,UAAYzuL,CAAW,GAClNxC,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,mBAAoBH,MAAO,CAAEq7P,YAAa,QAAUvqE,WAAW,EAAO+qE,cAAevvO,KAAKuvO,gBAC3I,EACOukE,CACX,CAjDmC,CAiDjCvgU,EAAAA,sBCrEEshB,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAMWunS,GAAkB,SAAU/1T,GACnC,IAAIg2T,EAAWh2T,EAAMg2T,SAAUj5S,EAAU/c,EAAM+c,QAAS8oM,EAAU7lN,EAAM6lN,QAASlwN,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MAAO8sQ,EAAWtiQ,EAAMsiQ,SAAU/0O,EAAYvtB,EAAMutB,UAAWyyO,EAAchgQ,EAAMggQ,YAAazB,EAAkBv+P,EAAMu+P,gBAAiBthB,EAAYj9O,EAAMi9O,UAAWpjP,EAAOmG,EAAMnG,KAAMsiS,EAAen8R,EAAMm8R,aACtU85B,GAAuBn2D,EAAAA,GAAAA,GAA2BwC,EAAUtC,GAChE,OAAQ3qQ,EAAAA,cAAoB,KAAMshB,GAAS,CAAE,YAAaq/S,EAAU,aAAc/4E,EAAW,gBAAiBshB,EAAiB,gBAAiB49B,EAG5Ip/Q,QAASA,EAAS8oM,QAASA,EAASlwN,UAAWA,EAAWH,MAAOA,EAAO+3B,UAAWA,EAAW1zB,KAAMA,GAAQo8T,GAAuBj2T,EAAMzK,SACjJ,EACAwgU,GAAgBn6R,YAAc,oDCxB1B7T,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAcI0nS,GAAa,CACbC,KAAM,CAAE,IAAO,OAAQ,KAAQ,GAAI,GAAI,OACvCC,MAAO,CAAE,IAAO,OAAQ,KAAQ,MAAO,GAAI,QAK3CC,GAAc,CACd,KAAQ,OACR,IAAO,YACP,KAAQ,cAKRC,GAA2B,SAAUhtS,GAErC,SAASgtS,EAAUt2T,GACf,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAkFxC,OAjFA0C,EAAM+xS,aAAe,EACrB/xS,EAAM9N,OAAS,EACf8N,EAAMgyS,YAAc,SAAUxgU,EAAO4wN,GAC7B5wN,EAAMitQ,sBAGNjtQ,EAAMm2B,UAAYtD,EAAAA,EAAK8L,OACvBnQ,EAAMiyS,UAAUzgU,EAAO4wN,EAE/B,EACApiM,EAAM8rF,MAAQ,SAAUomN,GAAc,OAAOA,EAAW30T,KAAI,SAAUqvN,GAClE,IAAIxK,EAASpiM,EAAMxkB,MAAM8+D,QAAQsyJ,GAC7BvtN,EAAW2gB,EAAMxkB,MAAM6D,UAAY+iN,EAAO/iN,SAC1C8yT,EAAYnyS,EAAMxkB,MAAM4f,KAAO4E,EAAMxkB,MAAM4f,KAAKwiE,WAAU,SAAU7zD,GAAK,OAAOA,EAAE9vB,QAAUmoN,EAAOnoN,KAAO,KAAM,EAChHm4T,EAAUD,GAAa,GAAMnyS,EAAMxkB,MAAM4f,KAAM+2S,GAAWl5S,KAAiB,OAC3Eo5S,EAAoC,OAAtBjwG,EAAOiwG,WAAuB,KAAQjwG,EAAOiwG,YAAcryS,EAAMxkB,MAAM62T,WACrFlhU,GAAYu7B,EAAAA,EAAAA,GAAW,CACvB,UAAW01L,EAAO03C,OAClB,eAAgB5xO,QAAQmqS,GACxB,cAAc,EACd,YAAY,EACZ,uBAAwBjwG,EAAOp1B,OAC/B,WAAYhtK,EAAMxkB,MAAM4f,MAAQ4E,EAAMxkB,MAAM4f,KAAK8gC,MAAK,SAAU1G,GAAc,OAAOA,EAAWv7C,QAAUmoN,EAAOnoN,KAAO,KACzHmoN,EAAOkwG,iBACNthU,OAAwBR,IAAhB4xN,EAAOp1M,KACZgT,EAAMxkB,MAAM4lC,MAET,CAAEp0B,KAAMo1M,EAAOjrN,MAAOA,MAAOirN,EAAOp1M,MADpC,CAAEA,KAAMo1M,EAAOp1M,KAAM7V,MAAOirN,EAAOjrN,OAEvC,CAAC,EACHo7T,GAAYl1S,EAAAA,EAAAA,IAAK2C,GAAO8M,iBAAiB0lS,GAAAA,GAAexlS,GAAAA,GAASwlS,GAAAA,KACjEC,EAAYrwG,EAAOswG,aAAe,CAClClB,SAAUK,GAAYO,GACtB/8T,KAAM,eACN0kQ,gBAAiB33C,EAAO23C,gBACxB49B,cAAc,EACdg7B,gBAAiBtzT,EAAWkzT,EAAY,IACxC,CACA,KAAQ,gBAER3pS,EAAOw5L,EAAOwwG,kBAAoB,IAAO5yS,EAAM9N,QAAU8N,EAAM+xS,aAC/Dc,EAAazwG,EAAO5X,WAAa4X,EAAO5X,WAAasoH,GAAAA,EACrDtoH,EAAc35M,EAAAA,cAAoBgiU,EAAY,CAAEjqS,IAAK,EAAG3uB,MAAOmoN,EAAOnoN,MAAOtH,QAAS0M,GAAa,SAAUrI,GAAK,OAAOgpB,EAAMiyS,UAAUj7T,EAAGorN,EAAS,QAAM5xN,EAAWuiU,gBAAiB/yS,EAAMxkB,MAAMu3T,gBAAiBz1T,MAAO8kN,EAAO9kN,MAAO01T,eAAgB5wG,EAAO6wG,qBAAsB5gU,OAAQ2tB,EAAMxkB,MAAM03T,WAAYniU,SAAUivB,EAAMmzS,SAAShB,GAAYiB,uBAAwB,CAC/WhxG,OAAQ,CACJnoN,MAAOmoN,EAAOnoN,MACdqD,MAAO8kN,EAAO9kN,MACd0vL,OAAQo1B,EAAOp1B,OACf5sL,OAAQgiN,EAAOhiN,OACf1P,GAAI0xN,EAAO1xN,IAEf2O,SAAUA,GAAY2gB,EAAMxkB,MAAM6D,SAClC+b,KAAM4E,EAAMxkB,MAAM4f,KAClBC,aAAc2E,EAAMxkB,MAAM63T,WAC1BjzT,OAAQ4f,EAAMxkB,MAAM4E,OACpBd,WAAY0gB,EAAMxkB,MAAM8D,YAAc8iN,EAAO9iN,WAC7Ck3E,gBAAiBx2D,EAAMxkB,MAAMg7E,gBAC7BjgE,eAAgByJ,EAAMxkB,MAAM83T,aAC5Bz0P,MAAO7+C,EAAMxkB,MAAMqjE,MACnB00P,UAAWvzS,EAAMxkB,MAAM+3T,UACvBC,cAAexzS,EAAMxkB,MAAMi4T,YAC3BpB,WAAYA,KAEhBqB,EAAUvhT,GAASA,GAAS,CAAC,EAAGsgT,GAAY,CAAE7pS,IAAKA,EAAKrQ,QAAS6pM,EAAO7pM,QAAS8oM,QAASe,EAAOf,QAASlwN,UAAWA,EAAWH,MAAOA,EAAO8sQ,SAAU17C,EAAO1xN,GAAI8qQ,YAAap5C,EAAOo5C,YAAazyO,UAAW1pB,GAAa,SAAUrI,GAAK,OAAOgpB,EAAMgyS,YAAYh7T,EAAGorN,EAAS,QAAM5xN,EAAW6E,KAAM,iBACvS6hD,EAAU,CACVszJ,EACCxqL,EAAMxkB,MAAM80T,cAAgBtwS,EAAMxkB,MAAM80T,aAAa/wT,WAAa6iN,EAAO7iN,WACnE1O,EAAAA,cAAoBugU,GAAe,CAAExoS,IAAK,EAAG82L,OAAQ,SAAU1oN,EAAG2uB,EAASrB,GACtE,OAAOtE,EAAMxkB,MAAM80T,cACftwS,EAAMxkB,MAAM80T,aAAaS,YAAY/5T,EAAGorN,EAAQz8L,EAASrB,EACjE,EAAGgtS,QAAS,SAAUt6T,GAClB,OAAOgpB,EAAMxkB,MAAM80T,cACftwS,EAAMxkB,MAAM80T,aAAaqD,gBAAgB38T,EAAG,CAACorN,EAAO1xN,IAC5D,KAERkjU,GAAcC,EAAAA,GAAAA,IAAa7zS,EAAMxkB,MAAMswG,MAAOs2G,EAAOt2G,OACzD,GAAI8nN,GAAeA,EAAYppH,WAAY,CACvC,IAAIspH,EAAaF,EAAYppH,WAC7B,OAAQ35M,EAAAA,cAAoBijU,EAAY,CAAElrS,IAAKA,EAAK8qS,QAASA,EAASxhT,MAAO06M,GAAe11K,EAChG,CACA,OAAQrmD,EAAAA,cAAoB0gU,GAAiBp/S,GAAS,CAAC,EAAGuhT,EAAS,CAAE9qS,IAAKA,IAAQsuB,EACtF,GAAI,EACJl3B,EAAMiyS,UAAYjyS,EAAMiyS,UAAU9lS,KAAKnM,GAChCA,CACX,CAoCA,OAzHAuD,GAAUuuS,EAAWhtS,GAsFrBgtS,EAAUt0S,UAAUy0S,UAAY,SAAUj7T,EAAGorN,GAEzC,GADAprN,EAAEub,iBACG+K,KAAK9hB,MAAM63T,WAAhB,CAGA,IAAIt+T,GAAK4tD,EAAAA,GAAAA,GAAUrlC,KAAK9hB,MAAM6D,WAAY,EAAO+iN,EAAO/iN,WAAY,GAAQ00T,EAAch/T,EAAGg/T,YAAal0T,EAAO9K,EAAG8K,KAChHm0T,GAAiB12S,KAAK9hB,MAAM4f,MAAQ,IAAIhb,QAAO,SAAUqjB,GAAK,OAAOA,EAAExpB,QAAUmoN,EAAOnoN,KAAO,IAAG,GAClGgf,EAAMy4S,GAAWqC,GAAaC,GAAiBA,EAAc/6S,KAAO,IACpEg7S,EAA0B,WAATp0T,EACjB,IAAMyd,KAAK9hB,MAAM4f,MAAQ,IAAIhb,QAAO,SAAUqjB,GAAK,OAAOA,EAAExpB,QAAUmoN,EAAOnoN,KAAO,IAC5E,KAARgf,GAAcmpM,EAAOnoN,OACrBg6T,EAAc31S,KAAK,CAAErkB,MAAOmoN,EAAOnoN,MAAOgf,IAAKA,IAEnDqE,KAAK9hB,MAAM63T,WAAWY,EAAej9T,EATrC,CAUJ,EACA86T,EAAUt0S,UAAU21S,SAAW,SAAUhB,GACrC,OAAK70S,KAAK9hB,MAAM4f,KAGT+2S,GAAa,GAAK,CACrBthU,EAAAA,cAAoB,OAAQ,CAAE+3B,IAAK,EAAGz3B,UAAW,eAC7CN,EAAAA,cAAoBszC,GAAAA,EAAU,CAAE/wC,KAAM,QAAUkqB,KAAK9hB,MAAM4f,KAAK+2S,GAAWl5S,IAAM,SAAUvmB,KAAyC,QAAnC4qB,KAAK9hB,MAAM4f,KAAK+2S,GAAWl5S,IAAgBi7S,GAAAA,IAAmBC,GAAAA,OACnK72S,KAAK9hB,MAAM4f,KAAKjc,OAAS,GACrBtO,EAAAA,cAAoB,OAAQ,CAAE+3B,IAAK,EAAGz3B,UAAW,eAC7CN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,gBAAkBghU,EAAY,KAPxE,IASf,EACAL,EAAUt0S,UAAUnrB,OAAS,WACzB,IAAI2tB,EAAQ1C,KAGZ,OAFAA,KAAKy0S,aAAe,EACpBz0S,KAAKpL,OAAS,EACPoL,KAAK9hB,MAAMm+P,WAAWp8P,KAAI,SAAU20T,EAAY10T,GACnD,OAAOwiB,EAAMxkB,MAAMs1T,cAAiBjgU,EAAAA,cAAoBggU,GAAiB,CAAEjoS,IAAKprB,EAAGszT,aAAc9wS,EAAMxkB,MAAMs1T,aAAcC,YAAa/wS,EAAMxkB,MAAMu1T,YAAaC,eAAgBhxS,EAAMxkB,MAAMw1T,eAAgBG,aAAc3zT,EAAI,EAAGyyT,SAAUjwS,EAAMxkB,MAAMy0T,SAAUgB,UAAWjxS,EAAMxkB,MAAMy1T,UAAWC,aAAclxS,EAAMxkB,MAAM01T,cAAgBlxS,EAAM8rF,MAAMomN,KAAiBrhU,EAAAA,cAAoB,KAAM,CAAEM,UAAW,cAAekE,KAAM,MAAO,gBAAiBmI,EAAI,GAAKwiB,EAAM8rF,MAAMomN,GACxd,GACJ,EACOJ,CACX,CA3H+B,CA2H7BjhU,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwB8jS,8BCnLpBvuS,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAiBIoqS,GAA2B,SAAUtvS,GAErC,SAASsvS,IACL,OAAkB,OAAXtvS,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAyFA,OA5FAiG,GAAU6wS,EAAWtvS,GAIrBsvS,EAAU52S,UAAU62S,oBAAsB,SAAUp6T,EAAO+yL,GACvD,IAAIhzL,EAAS,GAAGwH,OAAOwrL,EAAS,uBAAyB,IAKzD,OAJI1vK,KAAK9hB,MAAM4f,MACXkC,KAAK9hB,MAAM4f,KAAKhb,QAAO,SAAUo1C,GAAc,OAAOA,EAAWv7C,QAAUA,CAAO,IAAGkF,OAAS,IAC9FnF,GAAU,aAEPA,CACX,EACAo6T,EAAU52S,UAAUnB,UAAY,SAAUtZ,EAAO6Y,EAAU3hB,EAAOjD,GAC9D,GAAKsmB,KAAK9hB,MAAM83T,aAAhB,CAGA,IAAIj6S,EAAU,GAQd,IAPc,KAAVtW,GAA0B,OAAVA,GAA+B,KAAb6Y,IAClCvC,EAAQiF,KAAK,CACTrkB,MAAOA,EACP2hB,SAAUA,EACV7Y,MAAOA,IAGXua,KAAK9hB,MAAM4E,QAAUkd,KAAK9hB,MAAM4E,OAAOiZ,SACtBiE,KAAK9hB,MAAM4E,OAAOiZ,SAAW,IACnCpN,SAAQ,SAAU7L,GACzB,IAAIo1C,EAAap1C,EACbo1C,GAAcA,EAAWv7C,QAAUA,GACnCof,EAAQiF,KAAKk3B,EAErB,IAEJ,IAAIp8B,EAAQkE,KAAK9hB,MAAM4E,QAAUkd,KAAK9hB,MAAM4E,OAAOgZ,MAAQkE,KAAK9hB,MAAM4E,OAAOgZ,MAAQ,MACrFkE,KAAK9hB,MAAM83T,aAAaj6S,EAAQla,OAAS,EAAI,CAAEia,MAAOA,EAAOC,QAASA,GAAY,KAAMriB,EAnBxF,CAoBJ,EACAo9T,EAAU52S,UAAUnrB,OAAS,WACzB,IAAI2tB,EAAQ1C,KACRD,GAAOuP,EAAAA,EAAAA,IAA2BtP,MAClCg3S,EAAah3S,KAAK9hB,MAAM4E,QAAUkd,KAAK9hB,MAAM4E,OAAOiZ,SAAW,GAQ/D04S,EAAe,EAAG7/S,GAAS,EAC3BqiT,EAAcj3S,KAAK9hB,MAAM8+D,QAAQl6D,QAAO,SAAUiK,GAAK,OAA6B,IAAtBA,EAAEtZ,SAASoO,MAAc,IACtF5B,KAAI,SAAU6kN,GACf,IAAIoyG,GAAaC,EAAAA,GAAAA,IAAcryG,EAAOhiN,QAClCs0T,EAXW,SAAUz6T,GACzB,QAAczJ,IAAVyJ,EAAJ,CAGA,IAAI06T,EAAiBL,EAAWl0T,QAAO,SAAUA,GAAU,OAAOA,EAAOnG,QAAUA,CAAO,IAC1F,OAAO06T,EAAex1T,OAASw1T,EAAe,QAAKnkU,CAFnD,CAGJ,CAK8BokU,CAAaxyG,EAAOnoN,OAC1Cw+O,EAAYr2B,EAAO9iN,WAAa+d,EAAKyP,iBAAiB+nS,GAAAA,GAAiB7nS,GAAAA,GAAS6nS,GAAAA,UAAoBrkU,EACpGuS,EAAQ2xT,GAAuBA,EAAoB3xT,WACzCvS,IAAVuS,IACAA,EAAuB,SAAfyxT,EAAwB,GAAK,MAEzC,IAAIM,EAAkB1yG,EAAO9iN,YAAc,CACvCjN,OAAQ2tB,EAAMxkB,MAAM03T,WACpBj5T,MAAOmoN,EAAOnoN,MACdqD,MAAO8kN,EAAO2yG,YACdhyT,MAAOA,EACP6Y,SAAU84S,GAAuBA,EAAoB94S,SACrDo5S,WAAWC,EAAAA,GAAAA,IAAYj1S,EAAMxkB,MAAMg7E,gBAAgBg+O,IAAe,GAAIn3S,GACtE63S,eAAeD,EAAAA,GAAAA,IAAYE,GAAAA,GAAqB93S,GAChDm3S,WAAYA,EACZ/7E,UAAWA,EACX31O,SAAU,SAAU9L,GAAKgpB,EAAM3D,UAAUrlB,EAAE+L,MAAO/L,EAAE4kB,SAAUwmM,EAAOnoN,MAAOjD,EAAE04B,eAAiB,GAE/F9G,EAAOw5L,EAAOwwG,kBAAoB,IAAO1gT,IAAU6/S,EACnDU,EAAY,CACZh6E,UAAWA,EACXshB,gBAAiB33C,EAAO23C,iBAExB/oQ,OAAwBR,IAAhB4xN,EAAOp1M,KACZgT,EAAMxkB,MAAM4lC,MAET,CAAEp0B,KAAMo1M,EAAOjrN,MAAOA,MAAOirN,EAAOp1M,MADpC,CAAEA,KAAMo1M,EAAOp1M,KAAM7V,MAAOirN,EAAOjrN,OAEvC,CAAC,EACHu8T,EAAUvhT,GAAS,CAAE2rP,SAAUisD,EAAAA,GAAgBlsD,kBAAkBz7C,EAAO1xN,IAAK8qQ,YAAap5C,EAAOo5C,YAAaxqQ,MAAOA,EAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,aAAc1M,EAAMq0S,oBAAoBjyG,EAAOnoN,MAAOmoN,EAAOp1B,cAAWx8L,GAAY6E,KAAM,gBAAkBo9T,GAC9Pv7Q,EAAW49Q,IAAoB1yG,EAAOpiJ,WACtCnvE,EAAAA,cAAoBuxN,EAAOpiJ,WAAY7tD,GAAS,CAAC,EAAG2iT,IACpDjkU,EAAAA,cAAoBukU,GAAAA,EAAgBjjT,GAAS,CAAEtb,KAAMmpB,EAAMxkB,MAAM3E,MAAQi+T,KACzElB,GAAcC,EAAAA,GAAAA,IAAa7zS,EAAMxkB,MAAMswG,MAAOs2G,EAAOt2G,OACzD,GAAI8nN,GAAeA,EAAY5zP,WAAY,CACvC,IAAI8zP,EAAaF,EAAY5zP,WAC7B,OAAQnvE,EAAAA,cAAoBijU,EAAY3hT,GAAS,CAAEyW,IAAKA,GAAOksS,EAAiB,CAAEpB,QAASA,EAASxhT,MAAOA,IAAUglC,EACzH,CACA,OAAQrmD,EAAAA,cAAoB0gU,GAAiBp/S,GAAS,CAAEyW,IAAKA,GAAO8qS,GAAUx8Q,EAClF,IACA,OAAOrmD,EAAAA,cAAoB,KAAM,CAAEM,UAhGb,2BAgG0C,gBAAiBmsB,KAAK9hB,MAAM21T,aAAc97T,KAAM,OAASk/T,EAC7H,EACOH,CACX,CA9F+B,CA8F7BvjU,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBomS,IC1IxB,IAAI7wS,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAQIqrS,GAAmC,SAAUvwS,GAE7C,SAASuwS,IACL,IAAIr1S,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAqDhE,OApDA0C,EAAM8hK,UAAY,KAIlB9hK,EAAM2gO,QAAU,SAAU9qP,GACtB,IAAI8vB,EAAU3F,EAAM8hK,WAAa9hK,EAAM8hK,UAAUn8J,QAC7CA,GAAW3F,EAAMxkB,MAAMmlP,SACvB3gO,EAAMxkB,MAAMmlP,QAAQ9qP,EAAKrE,MAAOm0B,EAExC,EAIA3F,EAAMihO,OAAS,SAAUprP,GACrB,IAAI8vB,EAAU3F,EAAM8hK,WAAa9hK,EAAM8hK,UAAUn8J,QAC7CA,GAAW3F,EAAMxkB,MAAMylP,QACvBjhO,EAAMxkB,MAAMylP,OAAOprP,EAAKrE,MAAOm0B,EAEvC,EAIA3F,EAAM6gO,UAAY,SAAUhrP,GACVmqB,EAAM8hK,WAAa9hK,EAAM8hK,UAAUn8J,SAClC3F,EAAMxkB,MAAMqlP,WACvB7gO,EAAMxkB,MAAMqlP,UAAUhrP,EAAKrE,MAEnC,EACAwuB,EAAMqzS,WAAa,SAAU7hU,GAEzB,GADAA,EAAM+gB,iBACFyN,EAAMxkB,MAAM6f,aAAc,CAC1B,IAAID,EAA4B,QAApB4E,EAAMxkB,MAAMyd,IAAiB,OAAS,MAClD+G,EAAMxkB,MAAM6f,aAAa7pB,EAAO4pB,EACpC,CACJ,EACA4E,EAAMs1S,YAAc,SAAU9jU,GAC1BA,EAAM+gB,iBACN/gB,EAAMs+B,kBACF9P,EAAMxkB,MAAMqsC,UACZ7nB,EAAMxkB,MAAMqsC,SAASr2C,EAE7B,EACAwuB,EAAMo3Q,cAAgB,SAAU5lS,GAC5B,IAAImK,EAAW,CACX2B,MAAO0iB,EAAMxkB,MAAM8B,MACnB2b,IAAK+G,EAAMxkB,MAAMyd,IACjB/G,MAAO8N,EAAMxkB,MAAM0W,OAEnB8N,EAAMxkB,MAAM47R,eACZp3Q,EAAMxkB,MAAM47R,cAAcrzQ,UAAKvzB,EAAWgB,EAAO,CAAEmK,SAAUwW,GAAS,CAAC,EAAGxW,IAElF,EACOqkB,CACX,CAaA,OArEAuD,GAAU8xS,EAAmBvwS,GAyD7BuwS,EAAkB73S,UAAUnrB,OAAS,WACjC,IAAI2tB,EAAQ1C,KACRrE,EAAMqE,KAAK9hB,MAAMyd,IACrB,OAAQpoB,EAAAA,cAAoB0vP,GAAAA,EAAW,CAAEI,QAASrjO,KAAKqjO,QAASM,OAAQ3jO,KAAK2jO,OAAQJ,UAAWvjO,KAAKujO,UAAWxvP,IAAK,SAAUgC,GAAa2sB,EAAM8hK,UAAYzuL,CAAW,GACrKxC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,+DAAgEwB,QAAS2qB,KAAK+1S,WAAYj8B,cAAe95Q,KAAK85Q,cAAe/hS,KAAM,SAAUrE,MAAO,CAAEq7P,YAAa,SACvMx7P,EAAAA,cAAoB,OAAQ,KACxBA,EAAAA,cAAoBszC,GAAAA,EAAU,CAAE/wC,KAAM,QAAU6lB,EAAM,SAAUvmB,KAAc,QAARumB,EAAgBi7S,GAAAA,IAAmBC,GAAAA,IAAmBt9T,KAAM,WACtIhG,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,kBAAoBmsB,KAAK9hB,MAAM8B,OACxEzM,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,kBACrCN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,qCAAsCwB,QAAS2qB,KAAKg4S,aACzFzkU,EAAAA,cAAoBszC,GAAAA,EAAU,CAAE/wC,KAAM,WAAYV,KAAMkmP,GAAAA,IAAa/hP,KAAM,aAC/F,EACOw+T,CACX,CAvEuC,CAuErCxkU,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBqnS,IC1GxB,IAAI9xS,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAsBzC42S,GAA4B,SAAUzwS,GAEtC,SAASywS,IACL,IAAIv1S,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAYhE,OAXA0C,EAAMw1S,cAAgB,SAAUhkU,EAAO0gB,GACnC,IAAIujT,EAAYz1S,EAAMxkB,MAAMqjE,MAAM3yD,QAClCupT,EAAUr0S,OAAOlP,EAAO,GACxB8N,EAAMxkB,MAAMi4T,YAAYgC,EAAWjkU,EACvC,EACAwuB,EAAM01S,kBAAoB,SAAUlkU,EAAO0gB,EAAOyjT,EAAW18S,GACzD,IAAI4lD,EAAQ5+D,OAAO2mB,OAAO,CAAC,EAAG+uS,EAAW,CAAE18S,IAAKA,IAC5Cw8S,EAAYz1S,EAAMxkB,MAAMqjE,MAAM3yD,QAClCupT,EAAUr0S,OAAOlP,EAAO,EAAG2sD,GAC3B7+C,EAAMxkB,MAAMi4T,YAAYgC,EAAWjkU,EACvC,EACOwuB,CACX,CAeA,OA9BAuD,GAAUgyS,EAAYzwS,GAgBtBywS,EAAW/3S,UAAUnrB,OAAS,WAC1B,IAAI2tB,EAAQ1C,KAER+yI,GADa/yI,KAAK9hB,MAAMqjE,OAAS,IACbthE,KAAI,SAAUo4T,EAAWzjT,GAAS,OAAQrhB,EAAAA,cAAoBwkU,GAAmB,CAAEzsS,IAAK1W,EAAOA,MAAOA,EAAO+G,IAAK08S,EAAU18S,KAAO,MAAO3b,MAAO0iB,EAAMxkB,MAAMo6T,aAAaD,EAAU17T,OAAQ4tC,SAAU,SAAUr2C,GAChOwuB,EAAMw1S,cAAchkU,EAAO0gB,EAC/B,EAAGmJ,aAAc,SAAU7pB,EAAOynB,GAC9B+G,EAAM01S,kBAAkBlkU,EAAO0gB,EAAOyjT,EAAW18S,EACrD,EAAG0nO,QAAS3gO,EAAMxkB,MAAMs1T,aAAc7vE,OAAQjhO,EAAMxkB,MAAMu1T,YAAalwE,UAAW7gO,EAAMxkB,MAAMw1T,eAAgB55B,cAAep3Q,EAAMxkB,MAAM47R,eAAmB,IAChK,OAAQvmS,EAAAA,cAAoB,MAAO,CAAEQ,IAAKisB,KAAK9hB,MAAMq6T,YAAa1kU,UAAW,oBAAqBkE,KAAM,UAAW,cAAcgoB,EAAAA,EAAAA,IAAKC,MAAMwP,iBAAiBgpS,GAAAA,GAAqB9oS,GAAAA,GAAS8oS,GAAAA,KAAuB,gBAAiBx4S,KAAK9hB,MAAMu6B,cAAgB,IAC1PllC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,6BAA8BkE,KAAM,QAAUg7J,GACtFx/J,EAAAA,cAAoB,MAAO,CAAEM,UAAW,8BACnCk/J,EAAOlxJ,SAAUke,EAAAA,EAAAA,IAAKC,MAAMwP,iBAAiBgc,GAAAA,GAAY9b,GAAAA,GAAS8b,GAAAA,KACnE,QACZ,EACOysR,CACX,CAhCgC,CAgC9B1kU,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBunS,ICxDxB,IAAIhyS,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAqBzCo3S,GAAwB,SAAUjxS,GAElC,SAASixS,IACL,IAAI/1S,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAIhE,OAHA0C,EAAMg2S,WAAa,KACnBh2S,EAAMyiF,MAAQ,KACdziF,EAAMyyO,gBAAiBD,EAAAA,EAAAA,KAChBxyO,CACX,CAsCA,OA7CAuD,GAAUwyS,EAAQjxS,GAQlBixS,EAAOv4S,UAAU4K,kBAAoB,WACjC9K,KAAKuO,SAAS,CAAC,EACnB,EAKAkqS,EAAOv4S,UAAUgzS,cAAgB,SAAUlgN,GACnChzF,KAAK04S,aACL14S,KAAK04S,WAAW1lN,WAAaA,EAErC,EAKAylN,EAAOv4S,UAAUg9Q,SAAW,SAAU7iS,GAC9B2lB,KAAKmlF,QACLnlF,KAAKmlF,MAAMzxG,MAAM2G,MAAQA,EAAQ,KAEzC,EACAo+T,EAAOv4S,UAAUnrB,OAAS,WACtB,IAAI0C,EACAirB,EAAQ1C,KACZ,OAAKA,KAAK9hB,MAAMi1T,cAGR5/T,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gBAAiBkE,KAAM,gBACnExE,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAUsxB,GAAO3C,EAAMg2S,WAAarzS,CAAK,EAAGxxB,UAAW,qBAAsBH,MAAOssB,KAAKm1O,eAAiB,CAAC,EAAI,CAAE4gD,YAAa,GAAKh+S,KAAM,gBACvKxE,EAAAA,cAAoB,QAAS,CAAEQ,IAAK,SAAUoxG,GAASziF,EAAMyiF,MAAQA,CAAO,EAAGtxG,WAAWu7B,EAAAA,EAAAA,GAAW,+BAAgC33B,EAAK,CAC9H,cAAeuoB,KAAK9hB,MAAM3E,MAE9B9B,EAAG,WAAWyM,OAAOk0B,EAAAA,EAAeC,QAAQrY,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,KAC/F9B,GAAKuoB,KAAK9hB,MAAMrK,WAAYkE,KAAM,gBACtCxE,EAAAA,cAAoB,WAAY,CAAEQ,IAAK,SAAU2F,GAAKgpB,EAAMxkB,MAAM80T,aAAa2F,eAAiBj/T,CAAG,EAAG3B,KAAM,gBAAkBioB,KAAK9hB,MAAM2c,MACzItnB,EAAAA,cAAoB,QAAS,CAAEM,UAAW,gBAAiBkE,KAAM,gBAAkBioB,KAAK9hB,MAAM6c,QAV9FxnB,EAAAA,cAAoB,QAAS,CAAEM,UAAW,iBAAmBmsB,KAAK9hB,MAAM6c,IAWxF,EACO09S,CACX,CA/C4B,CA+C1BllU,EAAAA,WChEEgiS,GAA+B,WAC/B,SAASA,EAAc3rN,GACnB,IAAIlnD,EAAQ1C,KACZA,KAAKmlF,MAAQ,KACbnlF,KAAKy1Q,gBAAkB,EACvBz1Q,KAAK44S,cAAgB,EACrB54S,KAAK64S,aAAe,EACpB74S,KAAK84S,UAAY,EACjB94S,KAAKuB,MAAQ,EACbvB,KAAK+4S,mBAAoB,EACzB/4S,KAAKg5S,SAAW,EAChBh5S,KAAKurQ,SAAW,EAChBvrQ,KAAK01Q,WAAa,KAClB11Q,KAAKi5S,aAAe1lU,EAAAA,YACpBysB,KAAKk5S,aAAc,EACnBl5S,KAAKm5S,eAAYjmU,EACjB8sB,KAAK4zS,aAAergU,EAAAA,YACpBysB,KAAKo5S,eAAiB,GACtBp5S,KAAK21Q,cAAgB,EACrB31Q,KAAKq5S,eAAiB,EACtBr5S,KAAK61Q,eAAgB,EACrB71Q,KAAKs5S,aAAe19Q,OAAOk4B,WAAWvgF,EAAAA,SACtCysB,KAAKu5S,SAAW,SAAU3gD,EAAS4gD,GAC/B,IAAK92S,EAAMyC,WAAaq0S,EACpB,MAAO,CAAEC,cAAe,EAAGC,eAAgB,GAM/C,IAJA,IAAIC,EAAej3S,EAAMyC,UAAUy8J,aAC/Bg4I,EAAgB9kT,KAAK4O,KAAKi2S,EAAe/gD,EAAQ,GAAGh0N,MACpD60Q,EAAgB3kT,KAAK4O,MAAMk1P,EAAQ/2Q,OAAS+3T,GAAiB,GAC7DF,EAAiB,EACZx5T,EAAI,EAAGA,EAAIu5T,EAAev5T,IAC/Bw5T,GAAkB9gD,EAAQ14Q,GAAG0kD,KAAOg0N,EAAQ14Q,GAAGmtB,IAEnD,MAAO,CACHosS,cAAeA,EACfC,eAAgBA,EAChBG,oBAAqBD,EAAgBA,EAAgB,EAE7D,EACA55S,KAAK85S,0BAA4B,WAC7B,OAAKp3S,EAAMyC,UAGJzC,EAAMyC,UAAUY,aAAerD,EAAMyC,UAAUy8J,aAF3C,CAGf,EACIh4G,IACA5pD,KAAK44S,cAAgB,EACrB54S,KAAK64S,cAAgB74S,KAAK44S,eAE9B54S,KAAK6pQ,cAAgB7pQ,KAAK6pQ,cAAch7P,KAAK7O,KACjD,CA0LA,OAzLArd,OAAO6nB,eAAe+qQ,EAAcr1Q,UAAW,YAAa,CACxDuK,IAAK,WACD,OAAOzK,KAAK4zS,aAAav/T,OAC7B,EACAq2B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe+qQ,EAAcr1Q,UAAW,aAAc,CAIzDuK,IAAK,WAID,IAHA,IAAI/tB,EAAS,GACTq9T,EAAU/5S,KAAKi5S,aAAa5kU,SAAW2rB,KAAKi5S,aAAa5kU,QAAQZ,UAAY,GAC7EumU,EAAa,EACR95T,EAAI,EAAGA,EAAI65T,EAAQl4T,OAAQ3B,IAC5B65T,EAAQ75T,GAAGrM,UAAUonC,QAAQ,mBAAqB,EAClD++R,GAAcD,EAAQ75T,GAAG2rP,aAGzBkuE,EAAQ75T,GAAGrM,UAAUonC,QAAQ,iBAAmB,EAChDv+B,EAAOA,EAAOmF,OAAS,GAAG+iD,MAAQm1Q,EAAQ75T,GAAG2rP,cAG7CnvP,EAAOskB,KAAK,CACR4jC,KAAMm1Q,EAAQ75T,GAAG2rP,aACjBx+N,IAAK2sS,IAETA,EAAa,GAGrB,OAAOt9T,CACX,EACAguB,YAAY,EACZC,cAAc,IAElB4qQ,EAAcr1Q,UAAU61Q,WAAa,SAAUjqQ,EAAMpyB,GACjDsmB,KAAK64S,aAAe/sS,EAAO9L,KAAK44S,cAC5B54S,KAAK01Q,YACL11Q,KAAK01Q,WAAW,CACZ5pQ,KAAMhX,KAAKI,IAAI,EAAG4W,EAAO9L,KAAK44S,eAC9B7sS,KAAM/L,KAAKurQ,UACZ7xR,EAEX,EACA67R,EAAcr1Q,UAAUk3E,UAAY,SAAU0rF,EAAIm3I,GAC9Cj6S,KAAKq5S,eAAiBv2I,EAClB9iK,KAAK+4S,mBAAqB/4S,KAAKmlF,QAC3BnlF,KAAKs5S,cAAgB,IAAMW,EAC3Bj6S,KAAKmlF,MAAMzxG,MAAMy3B,UAAY,cAAgB23J,EAAK,MAGlD9iK,KAAKo5S,eAAiB,cAAgBt2I,EAAK,MAGvD,EACAyyG,EAAcr1Q,UAAUovD,MAAQ,WAC5BtvD,KAAK61Q,eAAgB,EACjB71Q,KAAKk5S,cAGLl5S,KAAKmF,YACLnF,KAAKmF,UAAUvlB,UAAY,GAE/BogB,KAAKo3E,UAAU,GAAG,GACtB,EACAm+L,EAAcr1Q,UAAUg2Q,cAAgB,SAAUx8R,GAC9C,GAAKsmB,KAAKmF,UAAV,CAGA,IAAIyzP,EAAU54P,KAAKk6S,WACft6T,EAAYogB,KAAKmF,UAAUvlB,UAC3Bu2R,EAAkBn2Q,KAAKq5S,eACvBc,EAAY,EACZ1iU,EAAKuoB,KAAKu5S,SAAS3gD,EAAShuP,QAAQ5K,KAAK44S,gBAAiBa,EAAgBhiU,EAAGgiU,cAAeC,EAAiBjiU,EAAGiiU,eAAgBG,EAAsBpiU,EAAGoiU,oBACzJzjC,EAAkBx2R,EAAYu2R,EAClC,KAAKC,EAAkBsjC,GAAmB9gD,EAAQ/2Q,QAAUg4T,GAA5D,CAGA,KAAQM,EAAYn6S,KAAK44S,cAAgB54S,KAAK64S,aAAe74S,KAAKg5S,SAAWS,GACtEz5S,KAAK84S,UAAYqB,EAAY,KAC9BhkC,GAAmBvd,EAAQA,EAAQ/2Q,OAAS,EAAIs4T,GAAWv1Q,KAAOg0N,EAAQA,EAAQ/2Q,OAAS,EAAIs4T,GAAW9sS,KAAO+oQ,GAAmBx2R,IACtIu2R,GAAmBvd,EAAQA,EAAQ/2Q,OAAS,EAAIs4T,GAAWv1Q,KACvDg0N,EAAQA,EAAQ/2Q,OAAS,EAAIs4T,GAAW9sS,IAC5C8sS,IAQJ,GANkB,IAAdA,GAA0C,IAAvBn6S,KAAK44S,eAAuB54S,KAAK64S,aAAe,IAGnE1iC,EAAkBrhR,KAAKI,IAAIihR,EAAkBvd,EAAQ,GAAGh0N,KAAM,GAC9Du1Q,EAAY,GAEZn6S,KAAK84S,UAAYqB,GAAa,GAAKhkC,EAAkBv2R,EAIrD,OAHAogB,KAAKo3E,UAAU,GACfp3E,KAAK+1Q,WAAW,EAAGr8R,QACnBsmB,KAAKmF,UAAUvlB,UAAY,GAS/B,GANIu2R,EAAkBv2R,IAClBu2R,EAAkBv2R,GAKlBu2R,IAAoBn2Q,KAAKq5S,eAAgB,CACzCr5S,KAAKo3E,UAAUtiF,KAAKI,IAAI,EAAGihR,EAAkBujC,IAC7C,IAAIU,EAAWtlT,KAAKI,IAAI,EAAG8K,KAAK84S,UAAYqB,EAAYV,GACxDz5S,KAAK+1Q,WAAWqkC,EAAU1gU,EAC9B,CA9BA,CATA,CAwCJ,EACA67R,EAAcr1Q,UAAUo2Q,gBAAkB,SAAU58R,GAChD,GAAKsmB,KAAKmF,UAAV,CAQA,IALA,IAAIyzP,EAAU54P,KAAKk6S,WACft6T,EAAYogB,KAAKmF,UAAUvlB,UAC3Bu2R,EAAkBn2Q,KAAKq5S,eACvBc,EAAY,EACZ1iU,EAAKuoB,KAAKu5S,SAAS3gD,EAAShuP,QAAQ5K,KAAK44S,gBAAiBa,EAAgBhiU,EAAGgiU,cAAeC,EAAiBjiU,EAAGiiU,eAAgBG,EAAsBpiU,EAAGoiU,oBACtJM,EAAYvhD,EAAQ/2Q,OAASme,KAAK44S,iBACnCziC,EAAkBvd,EAAQuhD,GAAWv1Q,KAAOg0N,EAAQuhD,GAAW9sS,IAAMztB,IACvEu2R,GAAmBvd,EAAQuhD,GAAWv1Q,KAAOg0N,EAAQuhD,GAAW9sS,IAChE8sS,IAECV,EAAgBz5S,KAAK84S,UAAYqB,GAAcvhD,EAAQ/2Q,QAAUg4T,IAGlEM,GAAavhD,EAAQ/2Q,OAASme,KAAK44S,eAAiB54S,KAAK84S,UAAYqB,GAAan6S,KAAKuB,OACvFvB,KAAKo3E,UAAU++L,EAAkBujC,GACjC15S,KAAK+1Q,WAAW/1Q,KAAKuB,MAAQ,EAAIk4S,EAAe//T,IAE3Cy8R,IAAoBn2Q,KAAKq5S,gBAAkBr5S,KAAK84S,UAAYqB,EAAYV,IAAkBz5S,KAAK84S,YACpG94S,KAAKo3E,UAAU++L,EAAkBujC,GACjC15S,KAAK+1Q,WAAW/1Q,KAAK84S,UAAYqB,EAAYV,EAAe//T,IApBhE,CAsBJ,EACA67R,EAAcr1Q,UAAUs2Q,gBAAkB,SAAU98R,GAChD,IAAI2gU,EAAgBr6S,KAAKuB,MAAQvB,KAAK21Q,cAAiB31Q,KAAKy1Q,gBACxDtxE,EAAWrvM,KAAK4M,MAAM24S,GACtBl2G,GAAYnkM,KAAKuB,QACjB4iM,EAAWnkM,KAAKuB,MAAQ,GAE5B,IAAI+4S,EAAgBxlT,KAAKC,IAAIslT,EAAgBl2G,EAAU,GACnDo2G,EAAc,EACdC,EAAiBr2G,EAAWnkM,KAAK84S,UACjClgD,EAAU54P,KAAKk6S,WACfM,GAAkB,GAAKA,GAAkB,EACzCD,IAAiB3hD,EAAQ,GAAGh0N,KAAOg0N,EAAQ,GAAGvrP,KAAOitS,GAE5B,IAApBE,IACLD,IAAiB3hD,EAAQA,EAAQ/2Q,OAAS,GAAG+iD,KAAOg0N,EAAQA,EAAQ/2Q,OAAS,GAAGwrB,KAAOitS,GAE3F,IAAI7iU,EAAKuoB,KAAKu5S,SAAS3gD,EAAShuP,QAAQ5K,KAAK44S,gBAAiBa,EAAgBhiU,EAAGgiU,cAAeC,EAAiBjiU,EAAGiiU,eACpH15S,KAAKo3E,UAAUtiF,KAAKI,IAAI,EAAGqlT,EAAcb,EAAiB15S,KAAK85S,4BAA8B95S,KAAKy1Q,gBAAkB4kC,EAAgBr6S,KAAKuB,QACzIvB,KAAK+1Q,WAAW5xE,EAAWs1G,EAAe//T,EAC9C,EACA67R,EAAcr1Q,UAAU2pQ,cAAgB,SAAUnwR,GAC9C,GAAKsmB,KAAK+4S,kBAGV,IAAI/4S,KAAK61Q,eAAkB71Q,KAAKmF,WAAcnF,KAAKmlF,MAAnD,CAIA,IAAIvlG,EAAYogB,KAAKmF,UAAUvlB,UAC3BkuB,EAAO9N,KAAK21Q,cAEhB,GADA31Q,KAAK21Q,cAAgB/1R,OACE1M,IAAnB8sB,KAAKm5S,UAKL,OAJAn5S,KAAKo3E,UAAUp3E,KAAKy1Q,gBAAkBz1Q,KAAKm5S,UAAYn5S,KAAKuB,OAC5DvB,KAAK+1Q,WAAW/1Q,KAAKm5S,UAAWz/T,GAChCsmB,KAAK21Q,cAAgB/1R,OACrBogB,KAAKm5S,eAAYjmU,GAGjB0M,EAAYkuB,EAAO,GAAKluB,EAAYogB,KAAKq5S,eAAiBr5S,KAAKmlF,MAAM0mJ,aAAe,GACpF7rO,KAAKk2Q,cAAcx8R,GAEdkG,EAAYkuB,EAAO,GAAKluB,EAAYogB,KAAKq5S,eAA2C,EAA1Br5S,KAAKmlF,MAAM0mJ,aAAmB,EAC7F7rO,KAAKs2Q,gBAAgB58R,GAGrBsmB,KAAKw2Q,gBAAgB98R,GAEzBsmB,KAAK21Q,cAAgB/1R,CApBrB,MAFIogB,KAAK61Q,eAAgB,CAuB7B,EACON,CACX,CA7OmC,GCC/B7c,GAAkC,WAClC,SAASA,EAAiBn3P,EAAOikM,EAAWmzD,EAAiBpgR,QAC3C,IAAVgpB,IAAoBA,EAAQ,GAChCvB,KAAKuB,MAAQA,EACbvB,KAAK+8F,QAAU,GACf/8F,KAAK44P,QAAU,GAEf,IADA,IAAIn7L,EAAM,EACD35E,EAAM,EAAGA,EAAMyd,EAAOzd,IAAO,CAClCkc,KAAK+8F,QAAQ/7F,KAAKy8D,GAClB,IAAIg9O,EAAcliU,GAAQA,EAAKuL,GAAKy+D,UAAkC,SAAtBhqE,EAAKuL,GAAK42T,QAAsB/hD,EAAkBnzD,EAClG/nI,GAAOg9O,EACPz6S,KAAK44P,QAAQ53P,KAAKy5S,EACtB,CACJ,CA+BA,OA9BA/hD,EAAiBx4P,UAAU7kB,OAAS,SAAU8oN,GAC1C,OAAOnkM,KAAK44P,QAAQz0D,EACxB,EACAu0D,EAAiBx4P,UAAUtL,MAAQ,SAAUjb,GACzC,KAAIA,EAAW,GAAf,CAGA,IAAI+C,EAASsjB,KAAK+8F,QAAQtgH,QAAO,SAAUqxB,EAAMz5B,EAASyP,GACtD,YAAa5Q,IAAT46B,EACOA,EAEFz5B,IAAYsF,EACVmK,EAEFzP,EAAUsF,EACRmK,EAAM,OADZ,CAIT,QAAG5Q,GACH,YAAkBA,IAAXwJ,EAAuBsjB,KAAKuB,MAAQ,EAAI7kB,CAb/C,CAcJ,EACAg8Q,EAAiBx4P,UAAUuI,OAAS,SAAU07L,GAC1C,OAAOnkM,KAAK+8F,QAAQonG,EACxB,EACAu0D,EAAiBx4P,UAAU64P,YAAc,WAGrC,OAFiB/4P,KAAK+8F,QAAQ/8F,KAAK+8F,QAAQl7G,OAAS,GACnCme,KAAK44P,QAAQ54P,KAAK44P,QAAQ/2Q,OAAS,EAGxD,EACO62Q,CACX,CA7CsC,GAkDlCiiD,GAAoC,WACpC,SAASA,EAAmBC,GACxB56S,KAAKmlF,MAAQ,KACbnlF,KAAKy1Q,gBAAkB,EACvBz1Q,KAAK44S,cAAgB,EACrB54S,KAAK64S,aAAe,EACpB74S,KAAK84S,UAAY,EACjB94S,KAAKuB,MAAQ,EACbvB,KAAK+4S,mBAAoB,EACzB/4S,KAAKg5S,SAAW,EAChBh5S,KAAKurQ,SAAW,EAChBvrQ,KAAK01Q,WAAa,KAClB11Q,KAAKi5S,aAAe1lU,EAAAA,YACpBysB,KAAKk5S,aAAc,EACnBl5S,KAAKm5S,eAAYjmU,EACjB8sB,KAAK4zS,aAAergU,EAAAA,YACpBysB,KAAKo5S,eAAiB,GACtBp5S,KAAK61Q,eAAgB,EACrB71Q,KAAKq5P,WAAa,EAClBr5P,KAAKo5P,YAAc,EACnBp5P,KAAKs5P,cAAgB,EACrBt5P,KAAKs5S,aAAe19Q,OAAOk4B,WAAWvgF,EAAAA,SACtCysB,KAAKo5P,YAAcp5P,KAAKurQ,SACxBvrQ,KAAKq5P,WAAar5P,KAAKg5S,SAAWh5S,KAAKurQ,SACvCvrQ,KAAK6pQ,cAAgB7pQ,KAAK6pQ,cAAch7P,KAAK7O,KACjD,CAsEA,OArEArd,OAAO6nB,eAAemwS,EAAmBz6S,UAAW,YAAa,CAC7DuK,IAAK,WACD,OAAOzK,KAAK4zS,aAAav/T,OAC7B,EACAq2B,YAAY,EACZC,cAAc,IAElBgwS,EAAmBz6S,UAAUk3E,UAAY,SAAU0rF,EAAIm3I,GAC/Cj6S,KAAK+4S,mBAAqB/4S,KAAKmlF,QAC3B+8L,GAAAA,IAAWliR,KAAKs5S,cAAgB,IAAMW,EACtCj6S,KAAKmlF,MAAMzxG,MAAMy3B,UAAY,cAAgB23J,EAAK,MAGlD9iK,KAAKo5S,eAAiB,cAAgBt2I,EAAK,MAGvD,EACA63I,EAAmBz6S,UAAU61Q,WAAa,SAAUjqQ,EAAMpyB,GAClDsmB,KAAK01Q,YACL11Q,KAAK01Q,WAAW,CAAE5pQ,KAAMhX,KAAKI,IAAI,EAAG4W,GAAOC,KAAM/L,KAAKurQ,UAAY7xR,EAE1E,EACAihU,EAAmBz6S,UAAUovD,MAAQ,WACjCtvD,KAAK61Q,eAAgB,EACjB71Q,KAAKk5S,cAGLl5S,KAAKmF,YACLnF,KAAKmF,UAAUvlB,UAAY,GAE/BogB,KAAKo3E,UAAU,GAAG,GACtB,EACAujO,EAAmBz6S,UAAU2pQ,cAAgB,SAAUnwR,GACnD,GAAKsmB,KAAK+4S,mBAAsB/4S,KAAKmF,WAAcnF,KAAKmlF,OACnDnlF,KAAKu5P,kBAAqBv5P,KAAK4zS,aAAav/T,QAGjD,GAAI2rB,KAAK61Q,cACL71Q,KAAK61Q,eAAgB,MADzB,CAIA,IAAIj2R,EAAYogB,KAAKmF,UAAUvlB,UAC3BsnB,EAAKlH,KAAKs5P,eAAiB15Q,EAC3BunB,GAAQD,EACZlH,KAAKs5P,cAAgB15Q,EACrB,IAAIi6Q,EAAiB75P,KAAKu5P,iBAAiB3kQ,MAAMhV,GAC7Ci7T,EAAkB76S,KAAKu5P,iBAAiB9wP,OAAOoxP,GAC/C9zP,EAAe/F,KAAK4zS,aAAav/T,QAAQ0xB,aACzC+zP,EAAgB95P,KAAKu5P,iBAAiB3kQ,MAAMhV,EAAYmmB,GAC5D,GAAIoB,GAAQ2yP,GAAiB95P,KAAKq5P,YAAcr5P,KAAKq5P,WAAar5P,KAAKuB,MAAO,CAC1E,IAAI5tB,EAAYkmR,EAAiB75P,KAAKurQ,SAAYvrQ,KAAKuB,MACnD5tB,EAAW,IACXkmR,GAAkClmR,EAClCknU,EAAkB76S,KAAKu5P,iBAAiB9wP,OAAOoxP,IAEnD75P,KAAKo5P,YAAcS,EACnB75P,KAAKo3E,UAAUyjO,GACf,IAAIC,EAAW96S,KAAKo5P,YAAcp5P,KAAKurQ,SACvCvrQ,KAAKq5P,WAAavkQ,KAAKC,IAAI+lT,EAAU96S,KAAKuB,OAC1CvB,KAAK+1Q,WAAW/1Q,KAAKo5P,YAAa1/Q,EACtC,MACK,GAAIwtB,GAAM2yP,EAAiB75P,KAAKo5P,YAAa,CAC9C,IAAIW,EAAmBjlQ,KAAK4M,MAAsB,GAAhB1B,KAAKurQ,UACvCvrQ,KAAKo5P,YAActkQ,KAAKI,IAAI2kQ,EAAiBE,EAAkB,GAC/D/5P,KAAKo3E,UAAUp3E,KAAKu5P,iBAAiB9wP,OAAOzI,KAAKo5P,cACjDp5P,KAAKq5P,WAAavkQ,KAAKC,IAAIiL,KAAKo5P,YAAcp5P,KAAKurQ,SAAUvrQ,KAAKuB,OAClEvB,KAAK+1Q,WAAW/1Q,KAAKo5P,YAAa1/Q,EACtC,CA3BA,CA4BJ,EACOihU,CACX,CAhGwC,GChDpCI,GAA8B,WAC9B,SAASA,EAAaC,GAClB,IAAIt4S,EAAQ1C,KAGZA,KAAKg9C,QAAU,GAIfh9C,KAAK/d,WAAY,EACjB+d,KAAK8jB,OAAQ,EACb9jB,KAAKizS,SAAW,SAAUnvR,GACtBphB,EAAMohB,MAAQA,CAClB,EACA9jB,KAAKyzS,YAAc,SAAUv/T,EAAO4wN,EAAQm2G,EAASj0S,GACjD,IAAIttB,EAAIxF,EAAM40P,cACT9hO,IACDttB,EAAEub,iBACFvb,EAAE84B,kBACF94B,EAAEstM,4BAEN,IAAIk0H,EAAYD,EAAQr8N,QAAQ,MAChC,GAAKs8N,GAAcA,EAAnB,CAGA,IAAIC,EAAWD,EAAUrhS,YACrB23K,EAAW2pH,EAOf,GANIz4S,EAAMohB,MACN0tK,GAAaypH,EAAQt5N,wBAAwB9nG,MAASohU,EAAQz1K,YAAc,EAAMtxJ,EAAMujM,QAGxF+Z,GAAYt9M,EAAMujM,QAAUwjI,EAAQt5N,wBAAwBjyF,KAAQurT,EAAQz1K,YAAc,EAEzFx+H,KAAOlS,KAAK6T,IAAI6oL,EAAW2pH,GAAY,GAA5C,CAGAz4S,EAAM04S,oBAAoBF,EAAUj1H,cAAcpsK,aAClDnX,EAAM24S,UAAUv2G,EAAQhwM,KAAK4M,MAAM8vL,GAAY2pH,GAC/C,IAAIvmT,EAAQ8N,EAAMs6C,QAAQl6D,QAAO,SAAUiK,GAAK,OAAQA,EAAEtZ,SAASoO,MAAQ,IAAGy+E,WAAU,SAAUvzE,GAAK,OAAOA,EAAE3Z,KAAO0xN,EAAO1xN,EAAI,IAClIsvB,EAAMigO,SAAS/tO,EAAOumT,EAAU3pH,EAAU93M,EAAGstB,EAAK89L,EAAO1xN,GAJzD,CAXA,CAgBJ,EACA4sB,KAAKq2S,gBAAkB,SAAUniU,EAAOonU,GACpC,IAAIt+P,EAAUt6C,EAAMs6C,QAAQl6D,QAAO,SAAUiK,GAAK,OAAOuuT,EAAUrgS,QAAQluB,EAAE3Z,KAAO,CAAG,IACvF,GAAKsvB,EAAM64S,cAAiBv+P,EAAQn7D,OAApC,CAKA,IAFA,IAAI25T,EAAiB,CAAC,EAClBr/Q,EAAQ6gB,EACL7gB,EAAMt6C,OAAS,GAAG,CACrB,IAAI45T,EAAat/Q,EAAM6C,MACvB,IAAKy8Q,EACD,MAEAA,EAAWhoU,SAASoO,OACpBs6C,EAAMn7B,KAAKb,MAAMg8B,EAAOs/Q,EAAWhoU,UAGnC+nU,EAAeC,EAAWroU,IAAMqoU,CAExC,CACA,IAAIC,EAAQh5S,EAAMs6C,QAAQl6D,QAAO,SAAUiK,GAAK,OAAQA,EAAEtZ,SAASoO,MAAQ,IACvE85T,EAAmB,GACvBD,EAAM/sT,SAAQ,SAAUitT,EAAehnT,GAC/B4mT,EAAeI,EAAcxoU,KAC7BuoU,EAAiB36S,KAAKpM,EAE9B,IACA,IAAIsmG,EAAS,CAACx4F,EAAM64S,aAAat1H,eAC7B41H,EAAY,CAACn5S,EAAM64S,cACnB74S,EAAM0wS,iBACNl4M,EAAOl6F,KAAK0B,EAAM0wS,eAAentH,eACjC41H,EAAU76S,KAAK0B,EAAM0wS,iBAErB1wS,EAAMi2S,iBACNz9M,EAAOl6F,KAAK0B,EAAMi2S,eAAe1yH,eACjC41H,EAAU76S,KAAK0B,EAAMi2S,iBAEzBz9M,EAAOvsG,SAAQ,SAAUw2F,GAAS,OAAOA,EAAM5nE,UAAUE,IAAI,gBAAkB,IAC/E,IAAIq+R,EAAY,GAChBD,EAAUltT,SAAQ,SAAUy2F,GACxBu2N,EAAiBhtT,SAAQ,SAAU2gN,GAC3BlqH,EAAS3xG,SAAS67N,KAClBlqH,EAAS3xG,SAAS67N,GAAaj1N,MAAQ,GACvCyhU,EAAUxsG,GAAex6M,KAAKI,IAAI4mT,EAAUxsG,IAAgB,EAAGlqH,EAAS3xG,SAAS67N,GAAa9pE,YAxFnG,GA0FH,GACJ,IACAq2K,EAAUltT,SAAQ,SAAUy2F,GACxBu2N,EAAiBhtT,SAAQ,SAAU2gN,GAC3BlqH,EAAS3xG,SAAS67N,KAClBlqH,EAAS3xG,SAAS67N,GAAaj1N,MAAQyhU,EAAUxsG,GAAe,KAChEosG,EAAMpsG,GAAaj1N,MAAQyhU,EAAUxsG,GAE7C,GACJ,IACAp0G,EAAOvsG,SAAQ,SAAUw2F,GAAS,OAAOA,EAAM5nE,UAAUC,OAAO,gBAAkB,IAClF9a,EAAMigO,SAASg5E,EAAiB,GAAI,EAAG,EAAGznU,GAAO,EAAMonU,EAAU,GAnDjE,CAoDJ,EACAt7S,KAAK+7S,kBAAoB,SAAUC,GA6B/B,IA5BA,IAAIC,EAAcv5S,EAAMs6C,QAAQl6D,QAAO,SAAUiK,GAAK,OAAQA,EAAEtZ,SAASoO,MAAQ,IAC7E05Q,EAAa,MACbpnG,EAAU,SAAUj0K,GACpB,IAAI07T,EAAgBI,EAAgB97T,GAChCsvN,EAAWysG,EAAY37O,WAAU,SAAUvzE,GAAK,OAAOA,EAAE3Z,KAAOwoU,EAAcxoU,EAAI,IAClF8oU,EAA0BpoP,YAAY8nP,EAAcvhU,OAAS,GAAG66C,YAChEinR,EAA0BrnT,KAAK4M,MAAMw6S,GACzC3gD,GAAc2gD,EAA0BC,EACxC,IAAIz6C,EAAey6C,EAA0BrnT,KAAK4M,MAAM65P,GAExD,GADAA,GAAczmQ,KAAK4M,MAAM65P,GACrB74P,EAAM64S,cAAgB74S,EAAM64S,aAAa9nU,SAAS+7N,GAAW,CAC7D,IAAI4sG,EAAYzuO,SAASjrE,EAAM64S,aAAa9nU,SAAS+7N,GAAUn1N,MAAO,IACtEqoB,EAAM64S,aAAa9nU,SAAS+7N,GAAUn1N,MAAQqnR,EAAe,KAC7Dh/P,EAAM25S,oBAAoB35S,EAAM64S,aAAat1H,cAAe21H,EAAeQ,EAAY16C,EAC3F,CACA,GAAIh/P,EAAM0wS,gBAAkB1wS,EAAM0wS,eAAe3/T,SAAS+7N,GAAW,CACjE,IAAI8sG,EAAc3uO,SAASjrE,EAAM0wS,eAAe3/T,SAAS+7N,GAAUn1N,MAAO,IAE1EqoB,EAAM0wS,eAAe3/T,SAAS+7N,GAAUn1N,MAAQqnR,EAAe,KAC/Dh/P,EAAM25S,oBAAoB35S,EAAM0wS,eAAentH,cAAe21H,EAAeU,EAAc56C,EAC/F,CACA,GAAIh/P,EAAMi2S,gBAAkBj2S,EAAMi2S,eAAellU,SAAS+7N,GAAW,CACjE,IAAI+sG,EAAc5uO,SAASjrE,EAAMi2S,eAAellU,SAAS+7N,GAAUn1N,MAAO,IAE1EqoB,EAAMi2S,eAAellU,SAAS+7N,GAAUn1N,MAAQqnR,EAAe,KAC/Dh/P,EAAM25S,oBAAoB35S,EAAMi2S,eAAe1yH,cAAe21H,EAAeW,EAAc76C,EAC/F,CACJ,EACSxhR,EAAI,EAAGA,EAAI87T,EAAgBn6T,OAAQ3B,IACxCi0K,EAAQj0K,EAEhB,EACA8f,KAAK2iO,SAAWq4E,CACpB,CA4FA,OA3FAD,EAAa76S,UAAUk7S,oBAAsB,SAAU/gU,GAInD,IAHA,IAAI2iE,EAAUh9C,KAAKg9C,QAAQl6D,QAAO,SAAUiK,GAAK,OAAQA,EAAEtZ,SAASoO,MAAQ,IACxE26T,EAAiB,EACjB3hT,EAAOmF,KAAKu7S,aAAev7S,KAAKu7S,aAAa9nU,SAAW,GACnDyM,EAAI,EAAGA,EAAI2a,EAAKhZ,OAAQ3B,IACzB2a,EAAK3a,GAAG7F,MACRA,GAASy5E,WAAWj5D,EAAK3a,GAAG7F,OAG5BmiU,IAGR,GAAuB,IAAnBA,EAGJ,KAAIC,EAAS3nT,KAAK4M,MAAMrnB,EAAQmiU,GAChC,IAASt8T,EAAI,EAAGA,EAAI2a,EAAKhZ,OAAQ3B,IAAK,CAClC,IAAI8a,EAAMH,EAAK3a,GACV8a,EAAI3gB,QACL2gB,EAAI3gB,MAAQoiU,EACZz/P,EAAQ98D,GAAG7F,MAAQoiU,EAAOvnR,WACtBl1B,KAAKozS,iBACLpzS,KAAKozS,eAAe3/T,SAASyM,GAAG7F,MAAQoiU,GAExCz8S,KAAK24S,iBACL34S,KAAK24S,eAAellU,SAASyM,GAAG7F,MAAQoiU,GAGpD,CAb+C,CAcnD,EACA1B,EAAa76S,UAAUm7S,UAAY,SAAUv2G,EAAQ43G,GAIjD,IAHA,IAAIC,EAAkB38S,KAAKg9C,QAAQsjB,WAAU,SAAUvzE,GAAK,OAAOA,EAAE3Z,KAAO0xN,EAAO1xN,EAAI,IACnFwpU,EAAW,GACX9/L,EAAOgoF,EAAOrxN,SAASoO,OAClB3B,EAAIy8T,EAAkB,EAAG7/L,EAAO,GAAK58H,EAAI8f,KAAKg9C,QAAQn7D,OAAQ3B,IAAK48H,IAAQ,CAChF,IAAIlnB,EAAK51F,KAAKg9C,QAAQ98D,GACjB01G,EAAGniH,SAASoO,OAIbi7H,GAAQlnB,EAAGniH,SAASoO,OAHpB+6T,EAAS57S,KAAK40F,EAKtB,CAaA,OAZwB,IAApBgnN,EAAS/6T,QACT+6T,EAAS57S,KAAK8jM,GAElB83G,EAASjuT,SAAQ,SAAUkuT,GACvB,IAAIC,EAAcD,EAAYxiU,MAAQy5E,WAAW+oP,EAAYxiU,MAAM66C,YAAcwnR,EAAO,EACpF3nT,OAAwC7hB,IAAlC2pU,EAAYE,kBAAkC,GAAKF,EAAYE,kBACrED,EAAc/nT,IACd+nT,EAAc/nT,GAElB8nT,EAAYxiU,MAAQyiU,CACxB,IACA98S,KAAK+7S,kBAAkBa,GAChBA,CACX,EACA7B,EAAa76S,UAAUm8S,oBAAsB,SAAUh0S,EAASh0B,EAAS2oU,GACrE,IAAIt6S,EAAQ1C,KACR88N,EAAezoP,EAAQugB,MACvBqoT,EAAgBj9S,KAAKu7S,aAAat1H,cAAcrnG,QAAQ,WACxDjvF,EAA6B,OAAlBstT,QAA4C,IAAlBA,OAA2B,EAASA,EAAcpjS,YACvFqjS,EAAgBl9S,KAAKg9C,QAAQl6D,QAAO,SAAUiK,GAAK,OAAOA,EAAE2iL,MAAQ,IAAGzvL,KAAI,SAAUvG,GAAK,OAAOi0F,SAASj0F,EAAEW,MAAQ,GAAI,GAAK,IAAGoC,QAAO,SAAUM,EAAGqpB,GAAK,OAAOrpB,EAAIqpB,CAAG,GAAG,IACzK/xB,EAAQq7L,QAAU//K,GAAYutT,EAxMlB,IA2MjBl9S,KAAKg9C,QAAQruD,SAAQ,SAAUwuT,GAC3B,IAAiB,OAAZA,QAAgC,IAAZA,OAAqB,EAASA,EAAQztI,SAAWstI,EAAY,CAClF,IAAII,EAA2B,OAAZ/0S,QAAgC,IAAZA,OAAqB,EAASA,EAAQs2E,iBAAiB,mBAAqBw+N,EAAQ1gE,gBAAkB,MAC5H,OAAjB2gE,QAA0C,IAAjBA,GAAmCA,EAAazuT,SAAQ,SAAU6c,GACvF,IAAI8iF,EAAe9iF,EAAG93B,MAClBgvB,EAAMohB,OACFq5R,EAAQvoT,MAAQkoO,GAAgBxuI,GAAgBA,EAAaz0G,QAC7Dy0G,EAAaz0G,MAAQ8zF,SAAS2gB,EAAaz0G,MAAO,IAAMmjU,EAAa,MAErEG,EAAQvoT,MAAQkoO,GAAgBxuI,GAAgBA,EAAa5+F,OAC7D4+F,EAAa5+F,KAAOi+E,SAAS2gB,EAAa5+F,KAAM,IAAMstT,EAAa,QAInEG,EAAQvoT,MAAQkoO,GAAgBxuI,GAAgBA,EAAa5+F,OAC7D4+F,EAAa5+F,KAAOi+E,SAAS2gB,EAAa5+F,KAAM,IAAMstT,EAAa,MAEnEG,EAAQvoT,MAAQkoO,GAAgBxuI,GAAgBA,EAAaz0G,QAC7Dy0G,EAAaz0G,MAAQ8zF,SAAS2gB,EAAaz0G,MAAO,IAAMmjU,EAAa,MAGjF,GACJ,CACJ,GACJ,EACOjC,CACX,CAjOkC,0DCP9B90S,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAOI2wS,GAAyC,SAAU71S,GAEnD,SAAS61S,IACL,IAAI36S,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAEhE,OADA0C,EAAMwvP,UAAW/9O,EAAAA,EAAAA,KACVzR,CACX,CAkBA,OAvBAuD,GAAUo3S,EAAyB71S,GAMnC61S,EAAwBn9S,UAAUnrB,OAAS,WACvC,IAAI2tB,EAAQ1C,KACR81S,EAAyB91S,KAAK9hB,MAAM43T,uBACpCwH,EAAmB,CAClB/pU,EAAAA,cAAoB,QAAS,CAAE+3B,IAAK,EAAGm0E,QAASz/E,KAAK9hB,MAAMw3T,eAAgBtiU,GAAI4sB,KAAKkyP,SAAU14Q,KAAM,WAAY3F,UAAW,wCAAyC2R,SAAU,SAAU9L,GACjL,OAAOgpB,EAAMxkB,MAAMu3T,gBAAgB,CAC/B94T,MAAO+lB,EAAMxkB,MAAMvB,MACnBy1B,eAAgB14B,GAExB,IACHnG,EAAAA,cAAoB,QAAS,CAAE+3B,IAAK,EAAGz3B,UAAW,mBAAoBmnS,QAASh7Q,KAAKkyP,WACrF4jD,EAAuBf,YAAcxhU,EAAAA,cAAoBgqU,GAAAA,EAAuB1oT,GAAS,CAAC,EAAGihT,KAEjG,OAAO91S,KAAK9hB,MAAMnJ,OACdirB,KAAK9hB,MAAMnJ,OAAO0xB,UAAKvzB,EAAWoqU,EAAkBt9S,KAAK9hB,OACzDo/T,CACR,EACOD,CACX,CAzB6C,CAyB3C9pU,EAAAA,sBCzDE0yB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAOI8wS,GAA2B,SAAUh2S,GAErC,SAASg2S,IACL,IAAI96S,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAyBhE,OAxBA0C,EAAM/iB,SAAW,KACjB+iB,EAAM6rR,WAAa,SAAUzpF,EAAQlwM,GACjC,IAAInd,EACAgmU,IAAWhmU,EAAK,CACZwjB,QAA4B,IAAnB6pM,EAAO7pM,QAAgB6pM,EAAO7pM,aAAU/nB,EACjDQ,WAAuBR,IAAhB4xN,EAAOp1M,KACPgT,EAAMxkB,MAAM4lC,MAET,CAAEp0B,KAAMo1M,EAAOjrN,MAAOA,MAAOirN,EAAOp1M,MADpC,CAAEA,KAAMo1M,EAAOp1M,KAAM7V,MAAOirN,EAAOjrN,OAEvC,CAAC,EACPhG,WAAWu7B,EAAAA,EAAAA,GAAW,aAAc01L,EAAOp1B,aAA0Bx8L,IAAhB4xN,EAAOp1M,KAAqB,uBAAyB,IAC1G4b,IAAK1W,EACL7c,KAAM,aAEP,iBAAmB+sN,EAAO23C,gBAC7BhlQ,GACA4zQ,EAAYx2P,GAAS,CAAElY,MAAOmoN,EAAOnoN,MAAO8/P,gBAAiB33C,EAAO23C,iBAAmBghE,GACvFnH,GAAcC,EAAAA,GAAAA,IAAa7zS,EAAMxkB,MAAMswG,MAAOs2G,EAAOt2G,OACzD,GAAI8nN,GAAeA,EAAYoH,WAAY,CACvC,IAAIlH,EAAaF,EAAYoH,WAC7B,OAAOnqU,EAAAA,cAAoBijU,EAAY3hT,GAAS,CAAC,EAAGw2P,EAAW,CAAEoyD,QAASA,EAAS7oT,MAAOA,IAC9F,CACA,OAAQkwM,EAAO44G,YAAcnqU,EAAAA,cAAoBuxN,EAAO44G,WAAY7oT,GAAS,CAAC,EAAGw2P,EAAW,CAAE//O,IAAK1W,MAAerhB,EAAAA,cAAoB,KAAMshB,GAAS,CAAC,EAAG4oT,GAC7J,EACO/6S,CACX,CAWA,OAvCAuD,GAAUu3S,EAAWh2S,GA6BrB7kB,OAAO6nB,eAAegzS,EAAUt9S,UAAW,UAAW,CAClDuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElB6yS,EAAUt9S,UAAUnrB,OAAS,WACzB,OAAOxB,EAAAA,cAAoB,KAAM,CAAEM,UAAW,cAAekE,KAAM,MAAO,gBAAiBioB,KAAK9hB,MAAM21T,eAAgB8J,EAAAA,GAAAA,IAAc39S,KAAK9hB,MAAM8+D,SAAS/8D,IAAI+f,KAAKuuR,YACrK,EACOivB,CACX,CAzC+B,CAyC7BjqU,EAAAA,sBCtES4iC,GAAkB,CACzBrgC,KAAM,6BACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,yJCTlBpjD,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAIWkxS,GAAiB,SAAU1/T,GAClC,IAAI+c,EAAU/c,EAAM+c,QAAS4iT,EAAe3/T,EAAM2/T,aAAcx/T,EAAWH,EAAMG,SAAUy/T,EAAY5/T,EAAM4/T,UAAW1qU,EAAK8K,EAAM9K,GAC/H+gU,GAAuBn2D,EAAAA,GAAAA,GAA2B5qQ,GAClD0mS,EAAgBvmS,EAAAA,aAAkB,SAAUW,GACxCgK,EAAM47R,eACN57R,EAAM47R,cAAcrzQ,UAAKvzB,EAAWgB,EAAOgK,EAAMG,SAEzD,GAAG,CAACH,EAAM47R,cAAe57R,EAAMG,WAC/B,OAAQ9K,EAAAA,cAAoB,KAAMshB,GAAS,CAAEilR,cAAeA,EAAejmS,UAAW,2BAA4BonB,QAASA,EAAS,gBAAiB4iT,EAAc9lU,KAAM,YAAco8T,GACnL5gU,EAAAA,cAAoB2K,EAAM6/T,OAAQ,CAAE1/T,SAAUA,EAAUy/T,UAAWA,IAC3E,ECxBIjpT,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAIWsxS,GAA0B,SAAU9/T,GAC3C,IAAIi2T,GAAuBn2D,EAAAA,GAAAA,GAA2B9/P,EAAM9K,IAC5D,OAAQG,EAAAA,cAAoB,KAAMshB,GAAS,CAAEhhB,UAAW,+BAAiCsgU,EAAsB,CAAEp8T,KAAM,aAC3H,ECjBIkuB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,GAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EA8DIp8C,GAAsB,SAAU0mB,GAEhC,SAAS1mB,EAAK5C,GACV,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KACxC0C,EAAMu7S,SAAW,GACjBv7S,EAAMw7S,YAAc,CAAC,IACrBx7S,EAAMy7S,kBAAoB,EAC1Bz7S,EAAM07S,UAAW,EACjB17S,EAAM27S,wBAAyB,EAC/B37S,EAAMw9O,gBAAkB,CAAE7rQ,aAASnB,GACnCwvB,EAAM29O,mBAAqB,CAAEhsQ,aAASnB,GACtCwvB,EAAM47S,MAAQ,GACd57S,EAAM67S,iBAAcrrU,EACpBwvB,EAAM87S,iBAAmB,EACzB97S,EAAMs6P,sBAAuB,EAC7Bt6P,EAAMixS,UAAYpgU,EAAAA,YAClBmvB,EAAM+7S,iBAAmBlrU,EAAAA,YACzBmvB,EAAM/iB,SAAW,KACjB+iB,EAAMg8S,aAAe,KACrBh8S,EAAMkxS,aAAergU,EAAAA,YACrBmvB,EAAMu2S,aAAe1lU,EAAAA,YACrBmvB,EAAMi8S,QAAU,KAChBj8S,EAAMk8S,wBAAqB1rU,EAC3BwvB,EAAMohB,OAAQ,EACdphB,EAAMm8S,SAAU1qS,EAAAA,EAAAA,KAChBzR,EAAMo8S,oBAAqB3qS,EAAAA,EAAAA,KAC3BzR,EAAMisE,SAAW,KACjBjsE,EAAMq8S,mBAAqB,SAAUtlS,GACjC,IAAIskB,EAAU,CAAEomK,SAAUzhM,EAAMyhM,UAChC1qL,EAAQ9qB,SAAQ,SAAUirB,GACjBA,EAAMolS,gBACPt8S,EAAMu8S,gBAAgBlhR,EAE9B,GACJ,EACAr7B,EAAMu8S,gBAAkB,SAAUlhR,GAC9B,GAAKr7B,EAAMknQ,GAAGzkQ,WAAwC,SAA3BzC,EAAMxkB,MAAM2uP,WAAvC,CAGInqO,EAAMisE,UACNjsE,EAAMisE,SAASt3D,aAEnB,IAAI8sL,EAAWpmK,EAAQomK,SACvB,GAA+B,YAA3BzhM,EAAMxkB,MAAM2uP,WACZnqO,EAAMknQ,GAAGuvC,UAAYh1G,EACrBzhM,EAAMknQ,GAAGzkQ,UAAU2/K,OAAO,EAAGhwL,KAAKu0C,MAAM3mC,EAAMknQ,GAAGuvC,UAAYz2S,EAAMknQ,GAAGroQ,MAAQmB,EAAMknQ,GAAGzkQ,UAAU0mO,oBAEhG,GAAInpO,EAAM2F,QAAS,CACpB,IAAI62S,EAAc/6G,EAAW,EACvBzhM,EAAM2F,QAAQzC,cAAc,wBAAwB1hB,OAAO,EAAG,MAC9Dwe,EAAM2F,QAAQzC,cAAc,wBAAwB1hB,OAAOigN,EAAW,EAAG,MAC3E+6G,GAAex8S,EAAMkxS,aAAav/T,UAClCquB,EAAMkxS,aAAav/T,QAAQuL,UAAYs/T,EAAYz5K,UAE3D,CAhBA,CAiBJ,EAMA/iI,EAAMmpJ,eAAiB,SAAU9tH,GAC7B,GAAKr7B,EAAMknQ,GAAGzkQ,WAAwC,SAA3BzC,EAAMxkB,MAAM2uP,WAAvC,CAGAnqO,EAAMyhM,SAAWpmK,EAAQomK,SACzB,IAAIA,EAAWpmK,EAAQomK,SACnB97L,EAAU3F,EAAM2F,QACpB,GAAI3F,EAAMisE,UAAYtmE,EAAS,CAC3B3F,EAAMisE,SAASt3D,aACf,IAAIjd,EAASiO,EAAQzC,cAAc,wBAAyB1hB,OAAOigN,EAAU,OACzE/pM,EACAsI,EAAMisE,SAASv3D,QAAQhd,GAGvBsI,EAAMu8S,gBAAgBlhR,EAE9B,CAbA,CAcJ,EAMAr7B,EAAMy8S,WAAa,SAAU7D,GACzB54S,EAAMswS,aAAaqD,gBAAgB,KAAMiF,EAC7C,EACA54S,EAAMo3Q,cAAgB,SAAU5lS,EAAOmK,EAAU1B,GAC7C,GAAI+lB,EAAMxkB,MAAM47R,cAAe,CAC3B,IAAIt1E,EAAK,CACLpqM,OAAQsI,EACR0P,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB9zB,SAAUA,EACV1B,MAAOA,GAEX+lB,EAAMxkB,MAAM47R,cAAcrzQ,UAAKvzB,EAAWsxN,EAC9C,CACJ,EACA9hM,EAAM08S,iBAAmB,SAAUlhU,GAC/B,IAAIsnN,EAAYtnN,EAAMsnN,UAAWmzD,EAAkBz6Q,EAAMy6Q,gBAAiBolD,EAAS7/T,EAAM6/T,OAAQ37P,EAAclkE,EAAMkkE,YAAa6zP,EAAY/3T,EAAM+3T,UAChJoJ,EAAa38S,EAAM48S,YACnBC,OAA6BrsU,IAAdsyN,GAA2BA,EAAY,EACtDg6G,OAAyCtsU,IAApBylR,GAAiCA,EAAkB,EACxE8mD,GAA4B,IAAdxJ,GAA4C,kBAAdA,IAAgD,IAAtBA,EAAU3zT,QAChFo9T,EAAa90S,QAAQmzS,GAAU37P,GACnC,OAAKm9P,GACAE,IAAgBJ,GAChBK,KAAgBF,IAAuBH,GACjC9pC,GAEJolC,EACX,EACAj4S,EAAM48S,UAAY,WACd,IAAI7nU,EAAKirB,EAAMxkB,MAAO3F,EAAOd,EAAGc,KAAMgpB,EAAQ9pB,EAAG8pB,MACjD,OAAIvJ,MAAMC,QAAQ1f,GACPA,EAAKsJ,SAAW0f,IAElBhpB,GACEgpB,IAAUhpB,EAAKgpB,KAG9B,EACAmB,EAAMi9S,yBAA2B,SAAUp+S,EAAO00S,GAU9C,GATAvzS,EAAMk9S,qBAAgD,YAA3Bl9S,EAAMxkB,MAAM2uP,WAA0BnqO,EAAMxkB,MAAMqjB,MAAOmB,EAAMxkB,MAAM4E,OAAQ4f,EAAMxkB,MAAMqjE,MAAO7+C,EAAMxkB,MAAM4f,KAAMm4S,QAAuC/iU,IAA1BwvB,EAAMxkB,MAAMsnN,WAAqD,IAA1B9iM,EAAMxkB,MAAMsnN,WAC7M9iM,EAAMknQ,GAAGsvC,YAAcx2S,EAAMxkB,MAAMg7T,cAAe,EAClDx2S,EAAMknQ,GAAG8L,WAAahzQ,EAAMi0Q,WAC5Bj0Q,EAAMknQ,GAAGovC,SAAWt2S,EAAMxkB,MAAM4tB,MAAQ,EACxCpJ,EAAMknQ,GAAG2B,eAAiCr4R,IAArBwvB,EAAMxkB,MAAM6tB,KAAqBrJ,EAAMxkB,MAAM6tB,KAAOrJ,EAAMxkB,MAAMqtR,WAAa,EAClG7oQ,EAAMknQ,GAAGmvC,kBAAgD,YAA3Br2S,EAAMxkB,MAAM2uP,WAC1CnqO,EAAMknQ,GAAGroQ,MAAQA,EACjBmB,EAAMknQ,GAAGkvC,WAAap2S,EAAMxkB,MAAM4tB,MAAQ,IAAiC,YAA3BpJ,EAAMxkB,MAAM2uP,WACxDnqO,EAAMknQ,GAAGgvC,eAAiBl2S,EAAMknQ,GAAGivC,cAAgBn2S,EAAMxkB,MAAM4tB,MAAQ,IAAM,QACnD54B,IAA1BwvB,EAAMxkB,MAAMsnN,WAA2B9iM,EAAMxkB,MAAMsnN,UAAY,IAAMywG,EAAW,CAChF,IAAIxgC,EAAkB/yQ,EAAMxkB,MAAMsnN,UAAYjkM,EAC9CmB,EAAMknQ,GAAG6L,gBAAkByM,GAAAA,GAAUptR,KAAKC,IAAI8qT,GAAAA,GAAkBpqC,GAAmBA,CACvF,MAEI/yQ,EAAMknQ,GAAG6L,gBAAkB,QAM/B,GAJA/yQ,EAAMknQ,GAAGgqC,aAAelxS,EAAMkxS,aAC9BlxS,EAAMknQ,GAAGqvC,aAAev2S,EAAMu2S,aAC9Bv2S,EAAMknQ,GAAGzkL,MAAQziF,EAAMg8S,aACvBh8S,EAAM67S,iBAAcrrU,EAChBwvB,EAAMknQ,cAAc+wC,GAAoB,CACxC,IAAIljU,EAAKirB,EAAMxkB,MAAOrG,EAAKJ,EAAG+tN,UAAWA,OAAmB,IAAP3tN,EAAgB,EAAIA,EAAIkmU,EAAStmU,EAAGsmU,OAAQ37P,EAAc3qE,EAAG2qE,YAC9GlqE,EAAKwqB,EAAMxkB,MAAMy6Q,gBAAiBA,OAAyB,IAAPzgR,EAAgB,EAAIA,EAC5EygR,EAAkB/tP,QAAQmzS,GAAU37P,GAAeu2M,EAAkBnzD,EACjE9iM,EAAM48S,aACN58S,EAAMknQ,GAAGroQ,MAAQmB,EAAM47S,MAAMz8T,OAC7B6gB,EAAM67S,YAAc77S,EAAM47S,MAAM1vT,MAAM8T,EAAMknQ,GAAGovC,SAAUt2S,EAAMknQ,GAAGovC,SAAWt2S,EAAMknQ,GAAG2B,UACtF7oQ,EAAMknQ,GAAGrQ,iBAAmB72P,EAAM62P,iBAAiB72P,EAAMknQ,GAAIlnQ,EAAM47S,MAAMz8T,OAAQ2jN,EAAWmzD,EAAiBj2P,EAAM47S,QAGnH57S,EAAMknQ,GAAGrQ,iBAAmB,IAAIb,GAAiBn3P,EAAOikM,EAAWmzD,GAEnE8c,EAAkB/yQ,EAAMknQ,GAAGrQ,iBAAiBR,cAChDr2P,EAAMknQ,GAAG6L,gBAAkByM,GAAAA,GAAUptR,KAAKC,IAAI8qT,GAAAA,GAAkBpqC,GAAmBA,CACvF,CACJ,EACA/yQ,EAAMmnQ,cAAgB,SAAU31R,GAC5B,GAAIA,EAAMkmB,SAAWlmB,EAAM4sQ,cAA3B,CAGAryO,aAAa/L,EAAMk8S,oBACnBl8S,EAAMknQ,GAAGzkL,MAAQziF,EAAMg8S,aACvB,IAAI1rN,EAAa9+G,EAAM4sQ,cAAc9tJ,WACjCpzG,EAAY1L,EAAM4sQ,cAAclhQ,WAChC8iB,EAAMxkB,MAAM4hU,sBAA0Bp9S,EAAMknQ,GAAGmvC,mBAAqBn5T,IAAc8iB,EAAM87S,mBACxF97S,EAAMk8S,mBAAqB7lU,OAAOi3B,YAAW,WAActN,EAAMqI,aAAe,GAAG,IAEnFrI,EAAM4hC,SACN5hC,EAAM4hC,QAAQ4uQ,cAAclgN,GAE5BtwF,EAAMi8S,SACNj8S,EAAMi8S,QAAQzL,cAAclgN,GAE5BtwF,EAAMknQ,IAAMhqR,IAAc8iB,EAAM87S,kBAChC97S,EAAMknQ,GAAGC,cAAc31R,IAE3B0yM,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAMomQ,SAAUpwQ,EAAOwuB,OAAOxvB,GAClDwvB,EAAM87S,iBAAmB5+T,CAlBzB,CAmBJ,EACA8iB,EAAM+I,UAAY,SAAUv3B,GAMxB,GALAk4T,EAAkCl4T,EAAO,CACrCgsQ,gBAAiBx9O,EAAMw9O,gBACvBG,mBAAoB39O,EAAM29O,mBAC1BssD,mBAAoBjqS,EAAMiqS,qBAE1BjqS,EAAMxkB,MAAMutB,UAAW,CACvB,IAAIh0B,GAAKkrQ,EAAAA,EAAAA,IAAoBjgP,EAAMxkB,MAAMmE,YAAaE,EAAO9K,EAAG8K,KAAMvB,EAAOvJ,EAAGuJ,KAC5EwjN,EAAK3vM,GAAS,CAAEmK,UAAW0D,EAAMq9S,mBAAoBx9T,KAAMA,EAAMvB,KAAMA,EAAMkgQ,YAAax+O,EAAMm8S,QAASz8T,cAAesgB,EAAMxkB,MAAMkE,eAAiBsgB,EAAMs9S,aAAa9rU,IAC5KwuB,EAAMxkB,MAAMutB,UAAUhF,UAAKvzB,EAAWsxN,EAC1C,CACJ,EACA9hM,EAAMkH,QAAU,SAAU11B,GACtBk4T,EAAgCl4T,EAAO,CACnCgsQ,gBAAiBx9O,EAAMw9O,iBAE/B,EACAx9O,EAAMiqS,mBAAqB,SAAU5uQ,GACjC,GAAIr7B,EAAMxkB,MAAMyuT,mBAAoB,CAChC,IAAInoG,EAAK3vM,GAAS,CAAE8qO,aAAc5hM,EAAQ4hM,cAAgBj9N,EAAMs9S,aAAajiR,EAAQ7pD,QACrFwuB,EAAMxkB,MAAMyuT,mBAAmBlmS,UAAKvzB,EAAWsxN,EACnD,CACJ,EACA9hM,EAAMu9S,SAAW,SAAUvmU,EAAG8J,GACtBkf,EAAMxkB,MAAMgiU,YAAoC,OAAtBxmU,EAAE0gB,OAAOs+I,UACnCh2I,EAAMxkB,MAAMgiU,WAAWz5S,UAAKvzB,EAAW2hB,GAAS,CAAExW,SAAUmF,EAAKnF,UAAYqkB,EAAMs9S,aAAatmU,IAExG,EACAgpB,EAAMy9S,YAAc,SAAUzmU,EAAG8J,GACzBkf,EAAMxkB,MAAMkiU,kBAA0C,OAAtB1mU,EAAE0gB,OAAOs+I,UACzCh2I,EAAMxkB,MAAMkiU,iBAAiB35S,UAAKvzB,EAAW2hB,GAAS,CAAExW,SAAUmF,EAAKnF,UAAYqkB,EAAMs9S,aAAatmU,IAE9G,EACAgpB,EAAM29S,WAAa,SAAUnsU,GACzB,IAAImsU,EAAa39S,EAAMxkB,MAAMoiU,aAC7B,GAAIpsU,EAAMyI,QAAU+lB,EAAMxkB,MAAMkkE,aAAe1/C,EAAMxkB,MAAMqjE,YAAyBruE,IAAhBgB,EAAMyI,MAA1E,CACI,IAAI4jU,EAAe79S,EAAMxkB,MAAMmkE,eAC3Bk+P,GACAA,EAAa95S,UAAKvzB,EAAW2hB,GAASA,GAAS,CAAC,EAAG6N,EAAMs9S,aAAa9rU,EAAMk+B,iBAAkB,CAAE/zB,SAAUnK,EAAMmK,SAAUy/T,UAAW5pU,EAAM4pU,UAAWr4T,MAAOvR,EAAMuR,QAG3K,MACI46T,GACAA,EAAW55S,UAAKvzB,EAAW2hB,GAASA,GAAS,CAAC,EAAG6N,EAAMs9S,aAAa9rU,EAAMk+B,iBAAkB,CAAE/zB,SAAUnK,EAAMmK,SAAU1B,MAAOzI,EAAMyI,MAAO8I,MAAOvR,EAAMuR,QAEjK,EACAid,EAAM89S,wBAA0B,SAAUtsU,GAClCwuB,EAAMxkB,MAAMsiU,yBACZ99S,EAAMxkB,MAAMsiU,wBAAwB/5S,UAAKvzB,EAAW,CAChDyJ,MAAOzI,EAAMyI,MACbw1B,YAAaj+B,EAAMk+B,gBAAkBl+B,EAAMk+B,eAAeD,YAC1DC,eAAgBl+B,EAAMk+B,eACtBhY,OAAQsI,EACR1D,UAAW0D,EAAMq9S,mBACjB39T,cAAesgB,EAAMxkB,MAAMkE,eAGvC,EACAsgB,EAAM+9S,iBAAmB,SAAUvsU,GAC/B,GAAIwuB,EAAMxkB,MAAMsE,kBAAmB,CAC/B,IAAIk+T,EAAiB7rT,GAAS,CAAEud,oBAAgBl/B,EAAWknB,OAAQsI,EAAOtgB,cAAesgB,EAAMxkB,MAAMkE,eAAiB,GAAI8+P,YAAax+O,EAAMm8S,QAAS7/S,UAAW0D,EAAMq9S,mBAAoB1hU,SAAU,MAAQnK,GAC7MwuB,EAAMxkB,MAAMsE,kBAAkBikB,UAAKvzB,EAAWwtU,EAClD,CACJ,EACAh+S,EAAMi0Q,WAAa,SAAUxyL,EAAM/xE,EAAgB09R,GAC/CptS,EAAMi+S,eAAej+S,EAAMxkB,MAAMiyR,aAAc,CAAEhsL,KAAMA,GAAQ,CAAEr4E,KAAMq4E,EAAKr4E,KAAMC,KAAMo4E,EAAKp4E,MAAQqG,EAAgB09R,EACzH,EACAptS,EAAMk+S,gBAAkB,SAAU1sU,GAC9BwuB,EAAMi0Q,WAAW,CAAE7qQ,KAAM53B,EAAM43B,KAAMC,KAAM73B,EAAM63B,MAAQ73B,EAAMk+B,eAAgBl+B,EAAM47T,YACzF,EACAptS,EAAMqzS,WAAa,SAAUj4S,EAAMsU,GAC/B1P,EAAMi+S,eAAej+S,EAAMxkB,MAAM6f,aAAc,CAAED,KAAMA,GAAQjJ,GAAS,CAAEiJ,KAAMA,GAAoC,YAA3B4E,EAAMxkB,MAAM2uP,WAA2B,CAAE/gO,KAAM,GAAM,CAAC,GAAKsG,EACxJ,EACA1P,EAAMszS,aAAe,SAAUlzT,EAAQsvB,GACnC1P,EAAMi+S,eAAej+S,EAAMxkB,MAAM+a,eAAgB,CAAEnW,OAAQA,GAAU,CAAEA,OAAQA,QAAU5P,EAAW44B,KAAM,GAAKsG,EACnH,EACA1P,EAAMyzS,YAAc,SAAUpjK,EAAQ7+J,GAClC,IAAIk+B,EAAiBl+B,EAAMi+B,YACvBj+B,EAAQ,CAAEi+B,YAAaj+B,EAAMi+B,aAAej+B,EAAM40P,eACtDpmO,EAAMi+S,eAAej+S,EAAMxkB,MAAMg4T,cAAe,CAAE30P,MAAOwxF,GAAU,CAAExxF,MAAOwxF,EAAQjnI,KAAM,GAAKsG,EACnG,EACA1P,EAAMigO,SAAW,SAAU/tO,EAAO48L,EAAU2pH,EAAUhpS,EAAanL,EAAK65S,GACpEn+S,EAAMo+S,kBACNp+S,EAAM27S,wBAAyB,EAC/B37S,EAAM07S,UAAW,EACjB17S,EAAMy7S,oBACFz7S,EAAMxkB,MAAM6iU,gBACZr+S,EAAMxkB,MAAM6iU,eAAet6S,UAAKvzB,EAAW,CACvC8pE,QAASt6C,EAAMs6C,QACf7qC,YAAaA,EACb6uS,eAAgBH,EAChBjsT,MAAOA,EACP48L,SAAUA,EACV2pH,SAAUA,EACVn0S,IAAKA,EACL5M,OAAQsI,GAGpB,EACAA,EAAMk9S,sBAAuB9rE,EAAAA,EAAAA,IAAW,SAAUmtE,EAAaC,EAAQC,EAASC,EAAQC,EAAOC,GAC3F5+S,EAAMknQ,GAAGt6M,QACT,IAAIiyP,EAAK7+S,EAAM08S,iBAAiB18S,EAAMxkB,OACtCwkB,EAAMknQ,GAAK,IAAI23C,EAAGD,EACtB,IACA5+S,EAAM8+S,UAAW1tE,EAAAA,EAAAA,IAAW,SAAU2tE,EAAWC,EAAgB51S,EAAMy1C,EAAOa,EAAa++P,EAASE,GAChG,IAAIM,EAAc,GAElB,MAAO,CAAEA,YAAaA,EAAaC,qBADTJ,EAAAA,GAAAA,IAASG,EAAaF,EAAWC,EAAgB,CAAE9sT,MAAOkX,QAAkB54B,IAAVquE,EAAqBa,GAErH,IACA1/C,EAAM62P,kBAAmBzlB,EAAAA,EAAAA,IAAW,SAAU+tE,EAAKtgT,EAAOikM,EAAWmzD,EAAiBpgR,GAClF,OAAO,IAAImgR,GAAiBn3P,EAAOikM,EAAWmzD,EAAiBpgR,EACnE,IACAmqB,EAAMo/S,iBAAkBhuE,EAAAA,EAAAA,IAAW,SAAUrgQ,GACzC,OAAOF,EAAAA,SAAeinD,QAAQ/mD,EAClC,IACAivB,EAAMq/S,aAAcjuE,EAAAA,EAAAA,IAAW,SAAUrgQ,EAAUgsQ,EAAUuiE,GACzD,IAAIC,EAAiBxuU,EAASqP,QAAO,SAAU00G,GAAS,OAAOA,GAASA,EAAMh+G,MAAmC,yBAA3Bg+G,EAAMh+G,KAAKsgC,WAAwC,IACzI,OAAOioS,EAAAA,GAAAA,IAAYE,EAAgBv/S,EAAMs6C,QAAS,CAAEklQ,OAAQ,EAAGziE,SAAUA,GAC7E,IACA/8O,EAAM05O,YAAatI,EAAAA,EAAAA,IAAW,SAAU92L,GACpC,OAAOo/L,EAAAA,EAAAA,IAAWp/L,EACtB,IACAt6C,EAAMy/S,kBAAmBruE,EAAAA,EAAAA,IAAW,SAAU92L,EAASolQ,EAAY3iE,GAC3D/8O,EAAMxkB,MAAMkE,eACZ46D,EAAQl6D,QAAO,SAAUiK,GAAK,OAAOA,EAAEpQ,QAAU+lB,EAAMxkB,MAAMkE,aAAe,IAAGuM,SAAQ,SAAU5B,GAC7FA,EAAE1S,MAAQ0S,EAAE1S,OAAS,OACrB0S,EAAE/L,KAAO+L,EAAE/L,MAAQqhU,GAAAA,EACnBt1T,EAAEmgM,WAAangM,EAAEmgM,YAAcmwH,EACnC,IAEJ,IAAIiF,EAAsB,CACtBlvU,GAAI,GACJ6O,WAAW,EACX5H,MAAO,OACP2F,MAAO,IACPs1T,kBAAmB,EACnBiN,YAAa,EACb9uU,SAAU,GACVk4L,aAAc,EACd/0D,MAAO,EACP37G,QAAS,EACT8oM,QAAS,EACTr0M,KAAM,EACN7V,MAAO,EACP+a,MAAO,EACPqoP,aAAa,EACbR,gBAAiB,EACjB24D,cAAc,GAEdoN,EAAoB,EACpB9/S,EAAMxkB,MAAMkkE,aAAgB1/C,EAAMxkB,MAAMmkE,gBAAmB3/C,EAAMxkB,MAAM6/T,SACvE/gQ,EAAQ1M,QAAQz7C,GAASA,GAAS,CAAC,EAAGytT,GAAsB,CAAEthU,KAAMyhU,GAAAA,EAAmB9lU,MAAO+lB,EAAMxkB,MAAMkkE,YAAa4yP,gBAAiB,4BAA6B5hU,GAAIq5T,EAAAA,GAAgBltD,sBAAsB,GAAGr7P,OAAOwe,EAAMu7S,SAASp8T,QAAS49P,EAAU,aAC3P+iE,KAEJ,IAAK,IAAItiU,EAAI,EAAGA,EAAIkiU,EAAYliU,IAC5B88D,EAAQ1M,QAAQz7C,GAASA,GAAS,CAAC,EAAGytT,GAAsB,CAAElN,cAAc,EAAOp0T,KAAM0hU,GAAAA,EAAe/lU,MAAO,QAAS+yL,OAAQhtK,EAAMxkB,MAAMykU,cAC5IH,IAEJxlQ,EAAQpuD,MAAM4zT,GAAmB7zT,SAAQ,SAAU5B,GAAK,OAAOA,EAAE4+K,aAAe,IAAM5+K,EAAE4+K,aAAe62I,EAAoB,GAC/H,IACA9/S,EAAMkgT,cAAe9uE,EAAAA,EAAAA,IAAW,SAAUh2O,EAAM/b,EAAUw/D,EAAO00P,EAAWnzT,EAAQd,EAAYk3E,EAAiB2pP,EAAkB9N,EAAY/3P,EAASq/L,EAAYymE,GAChK,OAAQvvU,EAAAA,cAAoBihU,GAAW,CAAEhmN,MAAO9rF,EAAMxkB,MAAMswG,MAAO1wF,KAAMA,EAAM/b,SAAUA,EAAUg0T,WAAYrzS,EAAMqzS,WAAYx0P,MAAOA,GAAS,GAAI00P,UAAWA,EAAWE,YAAazzS,EAAMyzS,YAAarzT,OAAQA,EAAQd,WAAYA,EAAYk3E,gBAAiBA,EAAiB88O,aAActzS,EAAMszS,aAAcjB,WAAYA,EAAYU,gBAAiB/yS,EAAM89S,wBAAyBxjQ,QAASA,EAASg2P,aAActwS,EAAMswS,aAAcQ,aAAc9wS,EAAMqgT,UAAUvP,aAAcC,YAAa/wS,EAAMqgT,UAAUtP,YAAaC,eAAgBhxS,EAAMqgT,UAAUrP,eAAgBr3D,WAAYA,EAAYu5D,WAAYiN,EAAkB/+R,MAAOg/R,EAAanQ,SAAUjwS,EAAMqgT,UAAUC,YAAarP,UAAWjxS,EAAM+7S,iBAAkB7K,aAAclxS,EAAMkxS,cACruB,IACAlxS,EAAM41S,aAAe,SAAU37T,GAC3B,IAAImoN,EAASpiM,EAAMu7S,SAAS/vT,MAAK,SAAUnB,GAAK,OAAOA,EAAEpQ,QAAUA,CAAO,IACtEqD,EAAQ8kN,IAAWA,EAAO9kN,OAAS8kN,EAAOnoN,OAC9C,YAAiBzJ,IAAV8M,EAAsBrD,EAAQqD,CACzC,EACA0iB,EAAMq9S,iBAAmB,WACrB,OAAOr9S,EAAM47S,MAAMx7T,QAAO,SAAUU,GAAQ,MAAwB,SAAjBA,EAAKk3T,OAAoB,IAAGz6T,KAAI,SAAUuD,GAAQ,OAAOA,EAAKnF,QAAU,GAC/H,GACA63B,EAAAA,EAAAA,GAAgBC,IAChBzT,EAAMs6P,sBAAuB/hB,EAAAA,EAAAA,GAAuB9kO,IACpD,IAAI8/R,GAAsC,IAA1BvzS,EAAMxkB,MAAM+3T,WACU,kBAA1BvzS,EAAMxkB,MAAM+3T,YAA6D,IAAlCvzS,EAAMxkB,MAAM+3T,UAAU3zT,QACrEi/T,EAAK7+S,EAAM08S,iBAAiBlhU,GAUhC,OATAwkB,EAAMknQ,GAAK,IAAI23C,EAAGtL,QAAiC/iU,IAApBgL,EAAMsnN,WAA+C,IAApBtnN,EAAMsnN,WACtE9iM,EAAMqgT,UAAY,IAAIE,GAAAA,EAAgBvgT,EAAMwgT,cAAcr0S,KAAKnM,GAAQA,EAAMygT,aAAat0S,KAAKnM,GAAQA,EAAM0gT,cAAcv0S,KAAKnM,IAChIA,EAAMswS,aAAe,IAAI+H,GAAar4S,EAAMigO,UAC5CypE,EAAsC,CAClCluD,YAAatzO,QAAQ1sB,EAAMggQ,aAC3BgC,gBAAiBx9O,EAAMw9O,gBACvBG,mBAAoB39O,EAAM29O,mBAC1BZ,SAAU/8O,EAAMm8S,UAEbn8S,CACX,CA8jBA,OA96BAuD,GAAUnlB,EAAM0mB,GAiXhB7kB,OAAO6nB,eAAe1pB,EAAKof,UAAW,UAAW,CAyC7CuK,IAAK,WACD,IAAI44S,EAAkBrjT,KAAKi+S,SAASn7T,QAAO,SAAUtC,GAAK,OAAOA,EAAE80T,kBAAoB,IAAwB,IAAnB90T,EAAEmrL,WAAoB,IAClH,OAAO23I,EAAAA,GAAAA,IAAgBD,EAC3B,EACA34S,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe1pB,EAAKof,UAAW,UAAW,CAI7CuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe1pB,EAAKof,UAAW,WAAY,CAC9CuK,IAAK,WACD,GAAKrF,EAAAA,EAIL,OAAQpF,KAAKqI,SAAWrI,KAAKqI,QAAQgO,eAAkB7nB,QAC3D,EACAkc,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe1pB,EAAKof,UAAW,UAAW,CAC7CuK,IAAK,WACD,OAAOzK,KAAK2zS,UAAUt/T,OAC1B,EACAq2B,YAAY,EACZC,cAAc,IAKlB7pB,EAAKof,UAAU4K,kBAAoB,WAC/B9K,KAAK8gT,mBACL1rE,EAAAA,EAAAA,KACA,IAAIvb,GAAM/1M,EAAAA,EAAAA,IAAM9jB,KAAKqI,SACrBrI,KAAK8jB,MAAQ+1M,EACbuyE,EAA4C,CACxC3tD,MAAOz+O,KAAKqI,cAAWn1B,EACvBgtQ,gBAAiBlgP,KAAKkgP,gBACtBG,mBAAoBrgP,KAAKqgP,qBAEzBrgP,KAAK8jB,OACL9jB,KAAK+K,cAMT/K,KAAK2uE,SAAYvpE,EAAAA,GAAarsB,OAAOwqU,sBACjC,IAAIxqU,OAAOwqU,qBAAqBvjT,KAAK++S,mBALnB,CAClB7iH,WAAY,MACZsnH,UAAW,MAGkE,IACrF,EAIA1iU,EAAKof,UAAUujT,wBAA0B,WAMrC,OALArX,EAAkD,CAC9C59S,SAAUwR,KAAKxR,SACf0xP,gBAAiBlgP,KAAKkgP,gBACtBG,mBAAoBrgP,KAAKqgP,qBAEtB,IACX,EAIAv/P,EAAKof,UAAU8K,mBAAqB,WAChChL,KAAK8gT,mBACL1rE,EAAAA,EAAAA,KACIp1O,KAAK4pQ,GAAGwvC,gBAAkBp5S,KAAK4pQ,GAAGzkL,QAClCnlF,KAAK4pQ,GAAGzkL,MAAMzxG,MAAMy3B,UAAYnL,KAAK4pQ,GAAGwvC,eACxCp5S,KAAK4pQ,GAAGwvC,eAAiB,IAE7BhN,EAA6C,CACzC3tD,MAAOz+O,KAAKqI,cAAWn1B,EACvBgtQ,gBAAiBlgP,KAAKkgP,gBACtBG,mBAAoBrgP,KAAKqgP,oBAEjC,EAIAv/P,EAAKof,UAAU6O,qBAAuB,WAClCN,aAAazO,KAAK4+S,mBACtB,EAIA99T,EAAKof,UAAUnrB,OAAS,WACpB,IAAI0C,EAAII,EAAIK,EAAIG,EAEZI,EADAiqB,EAAQ1C,KAERuB,EAAQvB,KAAK9hB,MAAMqjB,OAAS,EAC5Bk+O,EAAWgtD,EAAAA,GAAgBrsD,YAAYpgP,KAAKqgP,oBAC5CohE,EAAY,GACZzpT,MAAMC,QAAQ+H,KAAK9hB,MAAM3F,OACzBkpU,EAAYzhT,KAAK9hB,MAAM3F,KACvBgpB,EAAQA,GAASvB,KAAK9hB,MAAM3F,KAAKsJ,QAE5Bme,KAAK9hB,MAAM3F,OAChBkpU,EAAYzhT,KAAK9hB,MAAM3F,KAAKA,KAC5BgpB,EAAQA,GAASvB,KAAK9hB,MAAM3F,KAAKgpB,OAErC,IAAImgT,EAAkD,kBAAzB1hT,KAAK9hB,MAAM+3T,WAA2Bj2S,KAAK9hB,MAAM+3T,UAAU5gS,QAAU,OAC9F18B,EAAKqnB,KAAKwhT,SAASC,EAAWC,EAAgB1hT,KAAK9hB,MAAM4tB,MAAQ,EAAG9L,KAAK9hB,MAAMqjE,MAAOvhD,KAAK9hB,MAAMkkE,YAAapiD,KAAK9hB,MAAM4E,OAAQkd,KAAK9hB,MAAM4f,MAAO8jT,EAAsBjpU,EAAGipU,oBAAqBD,EAAchpU,EAAGgpU,YACtN3hT,KAAKs+S,MAAQqD,EACb,IAAI1L,GAAqC,IAAzBj2S,KAAK9hB,MAAM+3T,WACU,kBAAzBj2S,KAAK9hB,MAAM+3T,YAA4D,IAAjCj2S,KAAK9hB,MAAM+3T,UAAU3zT,QACvE0d,KAAKgzS,aAAa/wT,UAAY+d,KAAK9hB,MAAM+D,YAAa,EACtD+d,KAAK+iT,UAAU7gU,YAAc8d,KAAK9hB,MAAMgE,cAAe,EACvD8d,KAAK+iT,UAAU9M,UAAYA,EAC3B,IAAIyN,EAAkB1jT,KAAK9hB,MAAMmE,YAAc2d,KAAK9hB,MAAMmE,WAAW4lP,KAAO,YAAS/0P,EACrF8sB,KAAK2/S,yBAAyBp+S,EAAO00S,GACrC,IAAIxiU,EAAWusB,KAAK8hT,gBAAgB9hT,KAAK9hB,MAAMzK,UAC/CusB,KAAK2jT,YAAYlwU,EAAUmuU,GAC3B,IAAI98B,EAAUrxS,EAASwM,KAAI,SAAUu3G,GACjC,OAAIA,GAASA,EAAMh+G,MAAmC,0BAA3Bg+G,EAAMh+G,KAAKsgC,YAC3BvmC,EAAAA,aAAmBikH,EAAO3iG,GAASA,GAAS,CAAC,EAAG2iG,EAAMt5G,OAAQ,CAAEu6B,aAAc/V,EAAMo8S,sBAExF,IACX,IACI8E,EAAYnwU,EAASqP,QAAO,SAAU00G,GAAS,OAAOA,GAASA,EAAMh+G,MAC1C,4BAA3Bg+G,EAAMh+G,KAAKsgC,WAA2C,IACtD+pS,EAAYpwU,EAASqP,QAAO,SAAU00G,GAAS,OAAOA,GAASA,EAAMh+G,MAC1C,4BAA3Bg+G,EAAMh+G,KAAKsgC,WAA2C,IACtDmiS,EAAcj8S,KAAKi+S,SAASn7T,QAAO,SAAUiK,GAAK,OAA6B,IAAtBA,EAAEtZ,SAASoO,MAAc,IAClFiiU,EAAgB7N,GAAc1iU,EAAAA,cAAoB0kU,GAAY,CAAE12P,MAAOvhD,KAAK9hB,MAAMqjE,OAAS,GAAI40P,YAAan2S,KAAKm2S,YAAa3C,aAAcxzS,KAAK+iT,UAAUvP,aAAcC,YAAazzS,KAAK+iT,UAAUtP,YAAaC,eAAgB1zS,KAAK+iT,UAAUrP,eAAgB6E,YAAav4S,KAAK+iT,UAAUgB,iBAAkBzL,aAAct4S,KAAKs4S,aAAc7/R,aAAczY,KAAK8+S,mBAAoBhlC,cAAe95Q,KAAK85Q,gBAC3Yz6R,EAAK2gB,KAAK9hB,MAAO4f,EAAOze,EAAGye,KAAM/b,EAAW1C,EAAG0C,SAAUw/D,EAAQliE,EAAGkiE,MAAOz+D,EAASzD,EAAGyD,OAAQd,EAAa3C,EAAG2C,WAAYiS,EAAK5U,EAAG65E,gBAAiBA,OAAyB,IAAPjlE,EAAgByjT,GAAAA,GAAYzjT,EAAI4uT,EAAmBxjU,EAAGwjU,iBAAkB9N,EAAa11T,EAAG01T,WAC9P3xT,EAAU7P,EAAAA,cAAoBkwC,GAAQ,CAAElqC,KAAMymB,KAAK9hB,MAAM3E,KAAMy5T,aAAchzS,KAAKgzS,aAAcG,cAAyC,SAA1BnzS,KAAK9hB,MAAM2uP,WAAuBimE,sBAAuB,WAAc,OAAOpwS,EAAMknQ,GAAGzkQ,SAAW,EAAGq/J,UAAWxkK,KAAK9hB,MAAMgE,aAAe+zT,EAAWliU,IAAKisB,KAAK2zS,UAAWZ,QAAS/yS,KAAKy+S,iBAAkBpL,UAAWrzS,KAAK4iT,aAAa9kT,EAAM/b,EAAUw/D,EAAO00P,EAAWnzT,EAAQd,EAAYk3E,EAAiB2pP,EAAkB9N,EAAY/0S,KAAKi+S,SAAUj+S,KAAKk+S,YAAal+S,KAAK8jB,OAAQwvR,UAAWtzS,KAAK9hB,MAAM8D,YAAczO,EAAAA,cAAoBujU,GAAW,CAAEtoN,MAAOxuF,KAAK9hB,MAAMswG,MAAOj1G,KAAMymB,KAAK9hB,MAAM3E,KAAMyjE,QAASh9C,KAAKi+S,SAAUn7T,OAAQkd,KAAK9hB,MAAM4E,OAAQo2E,gBAAiBl5D,KAAK9hB,MAAMg7E,iBAAmBw+O,GAAAA,GAAW1B,aAAch2S,KAAKg2S,aAAcl4S,KAAMkC,KAAK9hB,MAAM4f,KAAM83S,WAAY51S,KAAK9hB,MAAM8lU,iBAAkBlgS,MAAO9jB,KAAK8jB,MAAO+vR,aAAc7zS,KAAKk+S,YAAYr8T,OAAS,UAAQ3O,EAAW2nB,KAAMohT,EAAYh8T,KAAI,SAAU6kN,EAAQlwM,GAAS,OAAQrhB,EAAAA,cAAoB,MAAO,CAAE+3B,IAAK1W,EAAMsgC,WAAY76C,OAAO6hQ,EAAAA,GAAAA,IAAep3C,IAAa,MAC1gC9xG,EAAahzF,KAAK4pQ,IAAM5pQ,KAAK4pQ,GAAGzkQ,WAAanF,KAAK4pQ,GAAGzkQ,UAAU6tF,YAAc,EAC7EgwG,EAAalvI,aAAa9zD,KAAK9hB,MAAMxK,OAAS,CAAC,GAAG2G,OAAS,IAAI66C,YAC/D9gC,E3BxnBL,SAAoC8T,GACvC,IAAI5lB,EAAU4lB,EAAK5lB,QAAS7K,EAAKywB,EAAK80C,QAASA,OAAiB,IAAPvlE,EAAgB,GAAKA,EAAIwsU,EAAqB/7S,EAAK+7S,mBAAoBjxN,EAAa9qF,EAAK8qF,WAC9IkxN,EAAWlnQ,EAAQ/8D,KAAI,WAAc,OAAO,CAAG,IAC/CkkU,EAAgBnnQ,EAAQ/8D,KAAI,WAAc,OAAO,CAAO,IAC5D,IAAKqC,EACD,MAAO,CAAE4hU,SAAUA,EAAUC,cAAeA,GAIhD,IAFA,IAAIh5H,EAASnuI,EAAQ/8D,KAAI,SAAU8M,GAAK,OAAO+mE,YAAY/mE,EAAE1S,OAAS,IAAI66C,aAAe,EAAI,IACzFkvR,EAAuB,EAClBlkU,EAAI,EAAGA,EAAI88D,EAAQn7D,OAAQ3B,IAChC,IAAI88D,EAAQ98D,GAAGwvL,OAAf,CAGA,IAAI20I,EAAgBnkU,EAAIirM,EAAOtpM,OAAS,EAAKspM,EAAOjrM,EAAI,GAAK,EAC7D,KAAIkkU,EAAuBj5H,EAAOjrM,GAAKmkU,EAAerxN,GAKlD,MAJAmxN,EAAcjkU,IAAK,EACnBkkU,GAAwBj5H,EAAOjrM,EAJnC,CAUJ,IAAI2yM,EAAa1H,EAAO1uM,QAAO,SAAU4wB,EAAKh5B,GAAW,OAAOg5B,EAAMh5B,CAAS,GAAG,GAElF,IADA+vU,EAAuB,EACdlkU,EAAI88D,EAAQn7D,OAAS,EAAG3B,GAAK,EAAGA,IACrC,IAAI88D,EAAQ98D,GAAGwvL,OAAf,CAGA,KAAI00I,EAAuB,EAAIj5H,EAAOjrM,GAAK2yM,EAAaoxH,EAAqBjxN,GAKzE,MAJAmxN,EAAcjkU,IAAK,EACnBkkU,GAAwBj5H,EAAOjrM,EAHnC,CAgBJ,IAPA,IAKIokU,EACAC,EANAC,EAAa/hQ,EAAc,GAAI0hQ,GAAe,GAC9CM,EAAS,SAAUh/T,GAAS,OAAOA,CAAO,EAC1Ci/T,EAAcF,EAAWplP,aAAY,GACrCulP,EAAYH,EAAW5lR,KAAK6lR,GAC5BG,EAAYJ,EAAW5wJ,MAAM6wJ,GAG1BE,GAAaH,EAAW3iU,UAA4B,IAAjB6iU,GAAsBE,IAAY,CAWxE,IAVIF,EAAcF,EAAW3iU,OAAS,IAClCyiU,EAAkBM,EAAYJ,EAAW3iU,OAAS2iU,EAAW3iU,OAAS6iU,EAAc,EAEhE,KADpBH,EAAcC,EAAW3iU,OAASyiU,KAE9BC,EAAcD,EAAkB,GAEpCH,EAAcI,IAAe,EAC7BL,EAASK,GAAeD,EACxBE,EAAW1gT,OAAO4gT,EAAc,EAAGJ,IAEhCE,EAAW3iU,SAAW2iU,EAAWA,EAAW3iU,OAAS,IACxD2iU,EAAWxlR,MAEf0lR,EAAcF,EAAWplP,aAAY,GACrCulP,EAAYH,EAAW5lR,KAAK6lR,GAC5BG,EAAYJ,EAAW5wJ,MAAM6wJ,EACjC,CACA,MAAO,CAAEP,SAAUA,EAAUC,cAAeA,EAChD,C2B0jBiBU,CAA2B,CAChCviU,QAAS0d,KAAK9hB,MAAM4hU,qBACpB9iQ,QAASi/P,EACTgI,mBAAoBjhH,EACpBhwG,WAAYA,IACZkxN,EAAW9vT,EAAG8vT,SAAUY,EAAc1wT,EAAG+vT,cAkCzCY,EAAa,EACjB,GAA8B,YAA1B/kT,KAAK9hB,MAAM2uP,WACX,IAAK,IAAI3sP,EAAI,EAAGA,EAAI8f,KAAK4pQ,GAAGgvC,cAAgB54S,KAAK4pQ,GAAGivC,cAAgB74S,KAAK9hB,MAAM4tB,MAAQ,GAAI5rB,IAAK,CAC5F,IAAIsD,EAAOwc,KAAKs+S,MAAMjvO,QACtB,IAAI7rF,EAQA,MAPAwc,KAAKs+S,MAAMt9S,KAAKxd,GAChBuhU,IACqB,gBAAjBvhU,EAAKk3T,SACLx6T,GAMZ,CAEJ,IAAIukU,EAAS,SAAU7vT,GACnB,OAAQA,GAAS8N,EAAM47S,MAAMz8T,OAASkjU,CAC1C,EACIC,EAAoBhlT,KAAK4pQ,GAAGovC,UAAY,EACxC3pT,EAAO,GACP41T,EAAgBjlT,KAAKk+S,YAAYr8T,QAAUme,KAAK9hB,MAAM8D,WAAa,EAAI,GAAK,EAC5EkjU,EAAsB,EAC1B,GAAIllT,KAAKs+S,MAAMz8T,OAAQ,CACnB,IAAIsjU,GAAe,EACfC,EAAmB,GACtBplT,KAAKu+S,aAAev+S,KAAKs+S,OAAO3vT,SAAQ,SAAUnL,EAAM2gN,GAChC,SAAjB3gN,EAAKk3T,UACLsK,IACAG,KAEJ,IAAIE,EAAQL,EAAoB,IAAM,EAClC7iU,EAAcugB,EAAMxkB,MAAMiE,cAAeia,EAAAA,EAAAA,GAAOsG,EAAMxkB,MAAMiE,YAAnBia,CAAgC5Y,EAAKnF,UAC9EinU,EAAgBnhH,GAAYzhM,EAAMknQ,GAAGovC,UAAY,GACjDuM,EAAQpjU,GAA4B,KAAOmjU,EAC3CE,EAAcD,EAAQ,KACtBE,EArEE,SAAUjiU,EAAM+hU,EAAOG,GACjC,IAAIC,GAAW,EACX7iT,EAAgBJ,EAAMxkB,MAAMkE,eAAgB+zP,EAAAA,GAAAA,IAAezzO,EAAMxkB,MAAMkE,cAAeoB,EAAKnF,eAAYnL,EAC3G,MAAO,CACH6nB,IAAKkhT,EAAYh8T,KAAI,SAAU6kN,EAAQwK,GACnC,GAAIw1G,EAAYx1G,GACZ,OAAO,KAEX,IAAIs2G,EAAY9gH,EAAO1xN,GAAK0xN,EAAO1xN,GAAKk8N,EACpCz7N,EAAY,GAAGqQ,OAAO4gN,EAAOjxN,UAAYixN,EAAOjxN,UAAY,IAAM,IAChE,GAAGqQ,OAAO4gN,EAAOp1B,OAAS,wBAA0B,IACtDh8L,OAAwBR,IAAhB4xN,EAAOp1M,KACZgT,EAAMohB,MAEH,CAAEp0B,KAAMo1M,EAAOjrN,MAAOA,MAAOirN,EAAOp1M,MADpC,CAAEA,KAAMo1M,EAAOp1M,KAAM7V,MAAOirN,EAAOjrN,OAEvC,CAAC,EACHgsU,GAAwB,EAC5B,GAAI/gH,EAAOz0B,UAAY3tK,EAAMxkB,MAAM4nU,UAAW,CAC1C,IAAIC,GAAS5vE,EAAAA,GAAAA,IAAezzO,EAAMxkB,MAAM4nU,UAAWtiU,EAAKnF,WACpD0nU,IAAsB,IAAXA,GAAmBA,IAAWjhH,EAAOnoN,QAChDgpU,GAAW,EACXE,GAAwB,EAEhC,CACA,IAAIG,EAAOlhH,EAAO9jN,MAAS6kU,GAAyBI,GAAAA,GAAiBC,GAAAA,EACrE,OAAQ3yU,EAAAA,cAAoByyU,EAAM,CAAElsC,cAAep3Q,EAAMo3Q,cAAexuQ,IAAKs6S,EAAWl2I,OAAQhtK,EAAMxkB,MAAMykU,WAAYvvU,GAAIq5T,EAAAA,GAAgBltD,sBAAsB,GAAGr7P,OAAOqhU,EAAO,KAAKrhU,OAAOyiB,OAAO2oM,IAAemwC,GAAWxkP,QAASipT,EAAS50G,GAAcjxN,SAAUmF,EAAKnF,SAAU1B,MAAOmoN,EAAOnoN,MAAOwpU,OAAQrhH,EAAOqhH,OAAQtjU,OAAQiiN,EAAOjiN,OAAQhP,UAAWA,EAAWkB,OAAQ2tB,EAAMxkB,MAAM03T,WAAYpnN,OAAO+nN,EAAAA,GAAAA,IAAa7zS,EAAMxkB,MAAMswG,MAAOs2G,EAAOt2G,OAAQhpG,SAAUkd,EAAM29S,WAAY5K,gBAAkB/yS,EAAMxkB,MAAMsE,kBACzf,SAAU9I,GAAKgpB,EAAM+yS,gBAAgB,CAAEvhU,MAAOwF,EAAG2E,SAAUmF,EAAKnF,SAAUy/T,UAAW4H,EAAcp2G,YAAaA,GAAgB,OACjIp8N,EAAWo8N,YAAaA,EAAa82G,aAAcnK,EAAYp6T,OAAQ64T,QAASl3T,EAAKk3T,QAASthM,MAAO51H,EAAK41H,MAAO72D,SAAU/+D,EAAK++D,SAAUu7P,UAAWt6T,EAAKs6T,UAAWpqU,MAAOA,EAAO+oQ,gBAAiB33C,EAAO23C,gBAAiByN,WAAYlyP,MAAMC,QAAQ6K,IAAkBA,EAAcmY,QAAQq0L,IAAgB,GAC1T,IACAq2G,SAAUA,EACVz7D,WAAqC,mBAAlBpnP,GAA+BA,EAE1D,CAqCsBujT,CAAQ7iU,EAAM+hU,EAAOJ,GAGnC,GAFAD,EAAsBI,EAAgBL,EAAgBG,EACtD/1T,EAAK2R,KAAMztB,EAAAA,cAAoB+yU,GAAAA,EAAS,CAAEh7S,IAAKi6S,EAAOlnU,SAAUmF,EAAKnF,SAAUkoU,SAAUlB,EAAOM,SAAUF,EAAQE,SAAUjL,QAASl3T,EAAKk3T,QAAS8L,SAAU/B,EAAOtgH,GAAW9uN,QAAS,SAAUqE,GAAK,OAAOgpB,EAAMu9S,SAASvmU,EAAG8J,EAAO,EAAG+rP,cAAe,SAAU71P,GAAK,OAAOgpB,EAAMy9S,YAAYzmU,EAAG8J,EAAO,EAAGpB,cAAesgB,EAAMxkB,MAAMkE,cAAeojN,UAAW9iM,EAAMxkB,MAAMsnN,UAAWzwN,OAAQ2tB,EAAMxkB,MAAMuoU,UAAW5S,aAAcqR,EAAqBwB,iBAAkBpB,EAAexH,UAAWqH,EAAaj7D,WAAYu7D,EAAQv7D,YAAcu7D,EAAQ1qT,MAC3hB2H,EAAMxkB,MAAM6/T,QAA2B,SAAjBv6T,EAAKk3T,SAAsBl3T,EAAK++D,SAAU,CAChE,IAAIokQ,EAAiB1K,EAAYp6T,QAC1B6gB,EAAMxkB,MAAMkkE,YAAc,EAAI,IAC9B1/C,EAAMxkB,MAAMqjE,MAAQ7+C,EAAMxkB,MAAMqjE,MAAM1/D,OAAS,IAAO,EAC7DujU,IACAF,EAAsBI,EAAgBL,EAAgBG,EACtD/1T,EAAK2R,KAAMztB,EAAAA,cAAoB,KAAM,CAAE+3B,IAAKk6S,EAAa3xU,WAAWu7B,EAAAA,EAAAA,GAAW,cAAei2S,EAAQ,qCAAuC,gBAAiB3xU,MAAO,CAAEwiH,WAAYuuN,EAAOtgH,GAAY,SAAW,GAAI9oN,OAAQqnB,EAAMxkB,MAAMy6Q,iBAAmB5gR,KAAM,MAAO,gBAAiBmtU,GACtRxiT,EAAMxkB,MAAMqjE,OAAS7+C,EAAMxkB,MAAMqjE,MAAMthE,KAAI,SAAU2mU,EAAI9iU,GACrD,IAAIrM,EACAovU,EAA4F,QAA7EpvU,EAAiB,OAAZguU,QAAgC,IAAZA,OAAqB,EAASA,EAAQ1qT,IAAIjX,UAAyB,IAAPrM,OAAgB,EAASA,EAAGyG,MAAMxK,MACtIA,EAAQmzU,EACLnkT,EAAMohB,MAEH,CAAEp0B,KAAMm3T,EAAYhtU,MAAOA,MAAOgtU,EAAYn3T,MAD9C,CAAEA,KAAMm3T,EAAYn3T,KAAM7V,MAAOgtU,EAAYhtU,OAEjD,CAAC,EACP,OAAQtG,EAAAA,cAAoBmvU,GAAAA,EAAe,CAAEtvU,GAAI,GAAI0qU,UAAWt6T,EAAKs6T,UAAWnhU,MAAOiqU,EAAGjqU,MAAO0B,SAAUmF,EAAKnF,SAAUitB,IAAKxnB,EAAKpQ,MAAOA,EAAO+oQ,gBAAiB,EAAI34P,EAAKomQ,YAAY,EAAOx6E,OAAQhtK,EAAMxkB,MAAMykU,WAAY7+R,MAAOphB,EAAMohB,MAAO0qE,MAAO9rF,EAAMxkB,MAAMswG,OAC1Q,IACA9rF,EAAMxkB,MAAMkkE,aACR7uE,EAAAA,cAAoByqU,GAAyB,CAAE5qU,GAAIq5T,EAAAA,GAAgBltD,sBAAsB,GAAGr7P,OAAOshU,EAAa,WAAY/lE,KAChIlsQ,EAAAA,cAAoBqqU,GAAgB,CAAE9jC,cAAep3Q,EAAMo3Q,cAAez7R,SAAUmF,EAAKnF,SAAUy/T,UAAWt6T,EAAKs6T,UAAW7iT,QAAS0rT,EAAe9I,aAAc,GAAKn7S,EAAMxkB,MAAMqjE,MAAQ7+C,EAAMxkB,MAAMqjE,MAAM1/D,OAAS,GAAIk8T,OAAQr7S,EAAMxkB,MAAM6/T,OAAQ3qU,GAAIq5T,EAAAA,GAAgBltD,sBAAsB,GAAGr7P,OAAOshU,EAAa,UAAW/lE,MAC5U,CACJ,GACJ,MAEIpwP,EAAK2R,KAAMztB,EAAAA,cAAoB,KAAM,CAAE+3B,IAAK,aAAcz3B,UAAW,+BAAgCkE,KAAM,MAAO,gBAAiBktU,GAC/H1xU,EAAAA,cAAoB,KAAM,CAAEM,UAAW,aAAconB,QAASghT,EAAYp6T,OAAQ9J,KAAM,YAAc6rU,EAAU/hU,OAAS+hU,EAAYrwU,EAAAA,cAAoBuzU,GAAAA,EAAe,SAEhL,IC3tByBnmT,ED2tBrBomT,GAAalyT,GAAS,CAAEtb,KAAMymB,KAAK9hB,MAAM3E,KAAM42R,aAAcnwQ,KAAK4gT,gBAAiBr/S,MAAOA,EAAO5F,IAAKqE,KAAK8jB,MAAQ,WAAQ5wC,EAAW44B,KAAM9L,KAAK4pQ,GAAGkvC,WAAa,EAAG/sS,WAA2B74B,IAApB8sB,KAAK9hB,MAAM6tB,KAAqB/L,KAAK9hB,MAAM6tB,KAAO/L,KAAK9hB,MAAMqtR,WAAa,GAAI4iC,YAAa6Y,GAAAA,IC1uB1P,SAAUvvU,GAC9B,IAAII,EAAKJ,EAAGu3T,YAAaA,OAAqB,IAAPn3T,EAAgB,GAAKA,EAAIK,EAAKT,EAAGqG,KAAMA,OAAc,IAAP5F,GAAuBA,EAAIG,EAAKZ,EAAG+B,KAAMA,OAAc,IAAPnB,EAAgB,UAAYA,EAAII,EAAKhB,EAAGg4T,UAAWA,OAAmB,IAAPh3T,OAAgBvF,EAAYuF,EAAIE,EAAKlB,EAAGk5T,aAAcA,OAAsB,IAAPh4T,GAAuBA,EAAI0G,EAAK5H,EAAGs4T,WAAYA,OAAoB,IAAP1wT,OAAgBnM,EAAYmM,EAAI4U,EAAKxc,EAAGy4T,cAC7W,MAAQ,CACJlB,YAAaA,EACblxT,KAAMA,EACN2xT,WAAyB,IAAdA,EAAqB,CAAC,EAAG,GAAI,IAAOA,QAAav8T,EAC5Dy9T,aAAcA,EACdZ,YAA2B,IAAfA,EACZv2T,KAAMA,EACN02T,mBAR+Y,IAAPj8S,OAAgB/gB,EAAY+gB,EAU5a,CAKWgzT,EAA+B,KADTtmT,ED2tBgRX,KAAK9hB,MAAMgpU,UAAY,CAAC,GC1tBxR,CAAC,EAAIvmT,ID2tB1CwmT,GAAQnnT,KAAK9hB,MAAMipU,MAAQ5zU,EAAAA,cAAoBysB,KAAK9hB,MAAMipU,MAAOtyT,GAAS,CAAC,EAAGkyT,KAAexzU,EAAAA,cAAoBs8T,GAAOh7S,GAAS,CAAEhhB,UAAW,gBAAkBkzU,KAOhK1xS,GAAUzK,QAAoC,QAA3BnyB,EAAKunB,KAAK9hB,MAAMswG,aAA0B,IAAP/1G,OAAgB,EAASA,EAAGilU,aAC/E19S,KAAKi+S,SAASr/Q,MAAK,SAAU7xC,GAAK,IAAItV,EAAI,OAAOmzB,QAAQ7d,EAAE2wT,YAAc9yS,QAA2B,QAAlBnzB,EAAKsV,EAAEyhG,aAA0B,IAAP/2G,OAAgB,EAASA,EAAGimU,YAAc,IACtJnqU,EAAAA,cAAoBklU,GAAQ,CAAEl/T,KAAMymB,KAAK9hB,MAAM3E,KAAMy5T,aAAchzS,KAAKgzS,aAAcG,cAAyC,SAA1BnzS,KAAK9hB,MAAM2uP,WAAuB94P,IAAK,SAAUg8B,GAAK,OAAOrN,EAAMi8S,QAAU5uS,CAAG,EAAGhV,IAAKxnB,EAAAA,cAAoBiqU,GAAW,CAAEhvN,MAAOxuF,KAAK9hB,MAAMswG,MAAOxxC,QAASh9C,KAAKi+S,SAAUn6R,MAAO9jB,KAAK8jB,MAAO+vR,aAAcqR,EAAsB,IAAMrqT,KAAMohT,EAAYh8T,KALpV,SAAU6kN,EAAQlwM,GAC/B,OAAQrhB,EAAAA,cAAoB,MAAO,CAAE+3B,IAAK1W,EAAMsgC,WAAY76C,OAAO6hQ,EAAAA,GAAAA,IAAep3C,IACtF,MAG2X,KACvXsiH,GAAa7zU,EAAAA,cAAoB,WAAY,CAAEQ,IAAK,SAAUgZ,GAC1D2V,EAAMswS,aAAauI,aAAexuT,CACtC,GAAKkvT,EAAYh8T,KAAI,SAAU6kN,EAAQlwM,GAAS,OAAQrhB,EAAAA,cAAoB,MAAO,CAAE+3B,IAAK1W,EAAMsgC,WAAYrhD,WAXzF8I,EAW2GmoN,EAAOnoN,MAV9H+lB,EAAMxkB,MAAM4f,MAAQ4E,EAAMxkB,MAAM4f,KAAKhb,QAAO,SAAUo1C,GAAc,OAAOA,EAAWv7C,QAAUA,CAAO,IAAGkF,OAAS,EAUoB,gBAAa3O,GAAWmH,OAAO6hQ,EAAAA,GAAAA,IAAep3C,KAXnL,IAAUnoN,CAWsL,KACzM0qU,GAAkBrnT,KAAK+iT,UAAU7gU,aAAe8d,KAAK+iT,UAAU9M,UAC/DqR,GAAetnT,KAAK9hB,MAAM4hU,qBAAuB,QAAU,QAC/D,GAA8B,SAA1B9/S,KAAK9hB,MAAM2uP,WACX,OAAQt5P,EAAAA,cAAoB6pQ,GAAAA,EAA+B5pB,SAAU,CAAE/tO,MAAOua,KAAKkgP,gBAAgB7rQ,SAC/Fd,EAAAA,cAAoB,MAAOshB,GAAS,CAAEzhB,GAAI4sB,KAAK9hB,MAAM9K,GAAIM,MAAOssB,KAAK9hB,MAAMxK,MAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,UAAW33B,EAAK,CAC5G,aAAcuoB,KAAK9hB,MAAM3E,MAE7B9B,EAAG,UAAUyM,OAAOk0B,EAAAA,EAAeC,QAAQrY,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,KAC9F9B,GAAKuoB,KAAK9hB,MAAMrK,WAAYE,IAAK,SAAUy3B,GAAM9I,EAAM/iB,SAAW6rB,CAAI,EAAG,aAAcxL,KAAK9hB,MAAMi9O,UAAW1vN,UAAWzL,KAAKyL,UAAW7B,QAAS5J,KAAK4J,SAAWi0O,GAAAA,IACrKinC,EACAg/B,EACAvwU,EAAAA,cAAoBw9T,GAAgB,CAAE1uT,WAAY2d,KAAK9hB,MAAMmE,WAAYkhP,UAAWvjO,KAAKygT,iBAAkBv9E,SAAU,SAAU/9I,GAASziF,EAAMg8S,aAAev5N,CAAO,GAChK5xG,EAAAA,cAAoB,QAAS,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,wBAAyBv3B,EAAK,CAAC,EAAGA,EAAG,WAAWqM,OAAOk0B,EAAAA,EAAeC,QAAQrY,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,KAAM1B,IAAMnE,MAAO,CAAE05S,WAAYs2B,EAAiB9/N,QAAS0jO,KAC7OF,GACAhkU,EACA7P,EAAAA,cAAoB,QAASshB,GAAS,CAAE9c,KAAM,WAAYlE,UAAW,iBAAmBkqQ,GAAAA,IAAwC1uP,GAChIgmB,KACRgyS,IAAoB9zU,EAAAA,cAAoBA,EAAAA,SAAgB,KACpDA,EAAAA,cAAoB8+T,GAAU,CAAEt+T,IAAKisB,KAAK+iT,UAAUwE,qBACpDh0U,EAAAA,cAAoBm/T,GAAU,CAAE3+T,IAAKisB,KAAK+iT,UAAUyE,uBAC5D3D,EACA7jT,KAAK9hB,MAAMgpU,UAAYC,IAE/B,IAAIjrQ,GAAel8C,KAAK9hB,MAAMxK,OAAS,CAAC,EAOxC,MAN8B,YAA1BssB,KAAK9hB,MAAM2uP,aAEN3wL,GAAa7gE,SACd6gE,GAAev5D,OAAO2mB,OAAO,CAAC,EAAG4yC,GAAc,CAAE7gE,OAAQ,YAGzD9H,EAAAA,cAAoB6pQ,GAAAA,EAA+B5pB,SAAU,CAAE/tO,MAAOua,KAAKkgP,gBAAgB7rQ,SAC/Fd,EAAAA,cAAoB,MAAOshB,GAAS,CAAEzhB,GAAI4sB,KAAK9hB,MAAM9K,GAAIM,MAAOwoE,GAAcroE,WAAWu7B,EAAAA,EAAAA,GAAW,UAAWl3B,EAAK,CACxG,aAAc8nB,KAAK9hB,MAAM3E,MAE7BrB,EAAG,UAAUgM,OAAOk0B,EAAAA,EAAeC,QAAQrY,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,KAC9FrB,EAAG,kBAA8C,YAA1B8nB,KAAK9hB,MAAM2uP,WAClC30P,GAAK8nB,KAAK9hB,MAAMrK,WAAYE,IAAK,SAAUy3B,GAC3C9I,EAAM/iB,SAAW6rB,CACrB,EAAG,aAAcxL,KAAK9hB,MAAMi9O,UAAW1vN,UAAWzL,KAAKyL,UAAW7B,QAAS5J,KAAK4J,SAAWi0O,GAAAA,IAC3FinC,EACAg/B,EACAvwU,EAAAA,cAAoB,MAAO,CAAEM,UAAW,mBAAoBkE,KAAM,OAAQ,gBAAiBkkU,EAAYp6T,OAAQ,gBAAiB0f,EAAOnuB,GAAI4sB,KAAK8+S,oBAC5I17T,EACA7P,EAAAA,cAAoB,MAAO,CAAEM,UAAW,mBAAoBkE,KAAM,gBAC9DxE,EAAAA,cAAoB,MAAO,CAAEQ,IAAKisB,KAAK4zS,aAAc//T,UAAW,mCAAoCywQ,SAAUtkP,KAAK6pQ,cAAe9xR,KAAM,gBACpIxE,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBAAqBkE,KAAM,gBAC/DxE,EAAAA,cAAoBw9T,GAAgB,CAAE1uT,WAAY2d,KAAK9hB,MAAMmE,WAAYkhP,UAAWvjO,KAAKygT,iBAAkBv9E,SAAU,SAAU/9I,GACvHziF,EAAMg8S,aAAev5N,CACzB,GACA5xG,EAAAA,cAAoB,QAAS,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,wBAAyB/2B,EAAK,CACvE,cAAe2nB,KAAK9hB,MAAM3E,MAE9BlB,EAAG,WAAW6L,OAAOk0B,EAAAA,EAAeC,QAAQrY,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,KAC/FlB,IAAMN,KAAM,eAAgBrE,MAAO,CAAE05S,WAAYs2B,EAAiB9/N,QAAS0jO,KAC/EF,GACA7zU,EAAAA,cAAoB,QAASshB,GAAS,CAAEhhB,UAAW,gBAAiBE,IAAKisB,KAAKi5S,aAAclhU,KAAM,YAAcgmQ,GAAAA,IAAwC1uP,MACpK9b,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBAAsBkE,KAAM,gBAChExE,EAAAA,cAAoB,MAAO,CAAEG,MAAiC,YAA1BssB,KAAK9hB,MAAM2uP,WACvC,CAAE,OAAW7sO,KAAK4pQ,GAAG6L,gBAAmB,MAAS,CAAC,OACtEpgQ,GACAgyS,IAAoB9zU,EAAAA,cAAoBA,EAAAA,SAAgB,KACpDA,EAAAA,cAAoB8+T,GAAU,CAAEt+T,IAAKisB,KAAK+iT,UAAUwE,qBACpDh0U,EAAAA,cAAoBm/T,GAAU,CAAE3+T,IAAKisB,KAAK+iT,UAAUyE,sBACxDxnT,KAAKg9P,sBAAwBzpR,EAAAA,cAAoB4nQ,GAAAA,EAAkB,OACvE0oE,EACA7jT,KAAK9hB,MAAMgpU,UAAYC,IACnC,EACArmU,EAAKof,UAAUu1S,gBAAkB,SAAU13Q,GACvC,GAAI/9B,KAAK9hB,MAAMsE,kBAAmB,CAC9B,IAAIomQ,EAAU7qN,EAAQ7pD,MAAOmK,EAAW0/C,EAAQ1/C,SAAUy/T,EAAY//Q,EAAQ+/Q,UAAWxuG,EAAcvxK,EAAQuxK,YAC3G73N,GAAKkrQ,EAAAA,EAAAA,IAAoB3iP,KAAK9hB,MAAMmE,YAAaE,EAAO9K,EAAG8K,KAAMvB,EAAOvJ,EAAGuJ,KAC3E0/T,EAAiB7rT,GAASA,GAAS,CAAC,EAAGmL,KAAKggT,aAAap3D,EAAQx2O,iBAAkB,CAAE/zB,SAAUA,EAAUkjQ,cAAejyC,EAAakyC,YAAalyC,EAAamyC,cAAeq8D,EAAWp8D,YAAao8D,EAAW9+S,UAAWgB,KAAK+/S,mBAAoBntS,QAAQ,EAAO6gK,SAAS,EAAOE,UAAU,EAAOD,SAAS,EAAOnxL,KAAMA,EAAMvB,KAAMA,EAAM2gQ,QAAQ,EAAOT,YAAalhP,KAAK6+S,QAASz8T,cAAe4d,KAAK9hB,MAAMkE,eAAiB,KACta4d,KAAK9hB,MAAMsE,kBAAkBikB,UAAKvzB,EAAWwtU,EACjD,CACJ,EACA5/T,EAAKof,UAAUygT,eAAiB,SAAU9nL,EAAStgJ,EAAMkvU,EAAUr1S,EAAgB09R,GAC/E,IAAI4X,EAAkB1nT,KAAK9hB,MAAMikE,kBACjC,GAAI02E,EAAS,CACT,IAAI2rE,EAAK3vM,GAASA,GAASA,GAAS,CAAC,EAAGmL,KAAKggT,aAAa5tS,IAAkB75B,GAAO,CAAEu3T,YAAaA,IAClGj3K,EAAQpyH,UAAKvzB,EAAWsxN,EAC5B,MACSkjH,GACLA,EAAgBjhT,UAAKvzB,EAAW2hB,GAASA,GAAS,CAAC,EAAGmL,KAAKggT,aAAa5tS,IAAkB,CAAE09R,YAAaA,GAAe,CAAC,EAAGpuP,UAAW7sD,GAASA,GAAS,CAAC,EAAGmL,KAAK2nT,gBAAiBF,KAE3L,EACA3mU,EAAKof,UAAUgjT,cAAgB,SAAUp1S,EAAMD,EAAMsE,GACjD,IAAI16B,EACAirB,EAAQ1C,KACR8kM,EAAS9kM,KAAKi+S,SAASnwS,GACvB8oG,EAAQkuF,EAAOluF,MACf5vG,EAAM,SAAUpS,GAChB,GACIA,UACKA,EAAQ8N,EAAMu7S,SAASp8T,QAAU6gB,EAAMu7S,SAASrpT,GAAOgiH,MAAQA,GACxE,OAAOhiH,CACX,EACIgzT,EAAU5nT,KAAKi+S,SAASn6S,OAAOgK,EAAM9G,EAAI8G,GAAQA,IACpDr2B,EAAKuoB,KAAKi+S,UAAUn6S,OAAO3D,MAAM1oB,EAAIgrE,GAAc,CAAC30C,EAAOD,EAAO7G,EAAI6G,EAAO+5S,EAAQ/lU,QAAUgsB,EAAM,GAAI+5S,GAAS,IACnH5nT,KAAKi+S,SAASn7T,QAAO,SAAUtC,GAAK,OAAOA,EAAE80T,kBAAoB,CAAG,IAAG3mT,SAAQ,SAAU5B,EAAG7M,GAAK,OAAO6M,EAAEw1T,WAAariU,CAAG,IAC1H8f,KAAKm+S,oBACL,IAAI0J,EAAiB7nT,KAAKi+S,SAASnwS,GAAM4hK,QAAU1vK,KAAKi+S,SAASpwS,GAAM6hK,QACvEitE,EAAAA,EAAAA,IAAW38O,KAAKk+S,YAAal+S,KAAKi+S,SAAU4J,GAAkB7nT,KAAKq+S,yBACnEzhE,EAAAA,EAAAA,IAAY58O,KAAKk+S,YAAal+S,KAAKi+S,SAAU4J,GAAkB7nT,KAAKq+S,wBAChEr+S,KAAKo+S,WACLp+S,KAAKq+S,wBAAyB,EAC9Br+S,KAAKo+S,UAAW,GAEpB,IAAI0J,EAAmB9nT,KAAKg9C,QAE5B,GADAh9C,KAAK+K,cACD/K,KAAK9hB,MAAM6pU,gBAAiB,CAC5B,IAAIC,EAAe,CACf5tT,OAAQ4F,KACRg9C,QAAS8qQ,EACTtnE,SAAU17C,EAAO1xN,GACjB++B,YAAaA,GAEjBnS,KAAK9hB,MAAM6pU,gBAAgBthT,UAAKvzB,EAAW80U,EAC/C,CACJ,EACAlnU,EAAKof,UAAUijT,aAAe,SAAU7uR,EAAWC,EAAWpiB,GAC1D,QAAyBj/B,IAArB8sB,KAAK9hB,MAAMqjE,MAAf,CAGA,IAAIA,EAAQvhD,KAAK9hB,MAAMqjE,MAAM3yD,QAC7B2yD,EAAMz9C,OAAO3D,MAAMohD,EAAOkB,GAAc,CAACluB,EAAW,GAAIgtB,EAAMz9C,OAAOwwB,EAAW,IAAI,IACpFt0B,KAAKm2S,YAAY50P,EAAOpvC,EAHxB,CAIJ,EACArxB,EAAKof,UAAUkjT,cAAgB,SAAU9zG,EAAa24G,EAAY91S,GAC9D,IAAIx1B,EAAQqjB,KAAKi+S,SAAS3uG,GAAa3yN,MACvC,GAAKA,EAAL,CAGA,IAAI4kE,GAASvhD,KAAK9hB,MAAMqjE,OAAS,IAAI3yD,QACrC2yD,EAAMz9C,OAAOmkT,EAAY,EAAG,CAAEtrU,MAAOA,IACrCqjB,KAAKm2S,YAAY50P,EAAOpvC,EAHxB,CAIJ,EACArxB,EAAKof,UAAU4gT,gBAAkB,WAC7B,IAAIjuH,EAAa,EACjB,GAAK7yL,KAAKgzS,aAAauI,aAAvB,CAIA,IADA,IAAI2M,EAAcloT,KAAKgzS,aAAauI,aAAa9nU,SACxCyM,EAAI,EAAGA,EAAIgoU,EAAYrmU,OAAQ3B,IAAK,CACzC,IAAI7F,EAAQ6tU,EAAYhoU,GAAG7F,MAC3B,IAAKA,EACD,OAEJw4M,GAAc/+H,WAAWz5E,EAAM66C,WACnC,CACA29J,EAAa/9L,KAAKu0C,MAAMwpJ,GACpB7yL,KAAKskC,SACLtkC,KAAKskC,QAAQ44O,SAASrqF,GAEtB7yL,KAAK2+S,SACL3+S,KAAK2+S,QAAQzhC,SAASrqF,GAEtB7yL,KAAK0+S,eACL1+S,KAAK0+S,aAAahrU,MAAM2G,MAAQw4M,EAAa,KAjBjD,CAmBJ,EACA/xM,EAAKof,UAAUyjT,YAAc,SAAUlwU,EAAU2uU,GAC7C,IAAI3iE,EAAWgtD,EAAAA,GAAgBrsD,YAAYpgP,KAAKqgP,oBAChDrgP,KAAKi+S,SAAWj+S,KAAK+hT,YAAYtuU,EAAUgsQ,EAAUz/O,KAAKm+S,mBAC7B,IAAzBn+S,KAAKi+S,SAASp8T,SACdme,KAAKi+S,UAAWkK,EAAAA,GAAAA,IAAoBnoT,KAAK9hB,MAAM3F,KAAMynB,KAAK9hB,MAAMqjE,MAAOvhD,KAAK9hB,MAAMkkE,YAAa,CAAE8/P,OAAQ,EAAGziE,SAAUA,KAE1Hz/O,KAAKmiT,iBAAiBniT,KAAKi+S,SAAUmE,EAAY3iE,GACjDz/O,KAAKk+S,YAAcl+S,KAAKo8O,WAAWp8O,KAAKi+S,UACxCj+S,KAAKgzS,aAAah2P,QAAUh9C,KAAKi+S,SACjCj+S,KAAK+iT,UAAU/lQ,QAAUh9C,KAAKi+S,QAClC,EACAn9T,EAAKof,UAAUynT,aAAe,WAC1B,MAAO,CACH7kU,OAAQkd,KAAK9hB,MAAM4E,OACnBgb,KAAMkC,KAAK9hB,MAAM4f,KACjBgO,KAAM9L,KAAK9hB,MAAM4tB,KACjBC,UAA2B74B,IAApB8sB,KAAK9hB,MAAM6tB,KAAqB/L,KAAK9hB,MAAM6tB,KAAO/L,KAAK9hB,MAAMqtR,SACpEhqN,MAAOvhD,KAAK9hB,MAAMqjE,MAE1B,EACAzgE,EAAKof,UAAU8/S,aAAe,SAAU5tS,GACpC,MAAO,CACHD,YAAaC,GAAkBA,EAAeD,YAC9CC,eAAgBA,EAChBhY,OAAQ4F,KAEhB,EAIAlf,EAAKg5B,YAAc,iBAInBh5B,EAAKuoB,aAAe,CACpB,EAKAvoB,EAAKkrB,UAAY,CACbzzB,KAAM0zB,EAAAA,UAAoB,CACtBA,EAAAA,MACAA,EAAAA,MAAgB,CACZ1zB,KAAM0zB,EAAAA,MACN1K,MAAO0K,EAAAA,WAGflqB,SAAUkqB,EAAAA,UAAoB,CAC1BA,EAAAA,KACAA,EAAAA,MAAgB,CACZ1pB,KAAM0pB,EAAAA,MAAgB,CAAC,SAAU,aACjCwqS,YAAaxqS,EAAAA,SAGrBlO,aAAckO,EAAAA,KACdnO,KAAMmO,EAAAA,MACNjqB,WAAYiqB,EAAAA,KACZnpB,OAAQmpB,EAAAA,IACRhT,eAAgBgT,EAAAA,KAChBi7S,SAAUj7S,EAAAA,UAAoB,CAC1BA,EAAAA,KACAA,EAAAA,MAAgB,CACZ+iS,YAAa/iS,EAAAA,OACbnuB,KAAMmuB,EAAAA,KACNzyB,KAAMyyB,EAAAA,MAAgB,CAAC,UAAW,UAClCwjS,UAAWxjS,EAAAA,UAAoB,CAC3BA,EAAAA,KACAA,EAAAA,QAAkBA,EAAAA,UAAoB,CAClCA,EAAAA,OACAA,EAAAA,YAGR0kS,aAAc1kS,EAAAA,SAGtBs/P,SAAUt/P,EAAAA,OACVkkQ,aAAclkQ,EAAAA,KACd1K,MAAO0K,EAAAA,OACPH,KAAMG,EAAAA,OACNF,KAAME,EAAAA,OACNitS,YAAajtS,EAAAA,KACbo2C,eAAgBp2C,EAAAA,KAChBm2C,YAAan2C,EAAAA,OACb7pB,cAAe6pB,EAAAA,OACfzpB,kBAAmBypB,EAAAA,KACnBu0S,wBAAyBv0S,EAAAA,KACzBhqB,UAAWgqB,EAAAA,KACX/pB,YAAa+pB,EAAAA,KACbs1C,MAAOt1C,EAAAA,IACPgqS,UAAWhqS,EAAAA,UAAoB,CAC3BA,EAAAA,KACAA,EAAAA,MAAgB,CACZ3pB,QAAS2pB,EAAAA,KACToJ,OAAQpJ,EAAAA,MAAgB,CAAC,SAAU,UAAW,aAGtDiqS,cAAejqS,EAAAA,KACfi0S,WAAYj0S,EAAAA,KACZm0S,iBAAkBn0S,EAAAA,KAClBq0S,aAAcr0S,EAAAA,KACd65S,UAAW75S,EAAAA,OACX4gO,WAAY5gO,EAAAA,MAAgB,CAAC,OAAQ,aAAc,YACnDu5L,UAAWv5L,EAAAA,OACX0sP,gBAAiB1sP,EAAAA,OACjB8xS,OAAQ9xS,EAAAA,IACRv4B,MAAOu4B,EAAAA,OACPk2C,kBAAmBl2C,EAAAA,KACnB80S,eAAgB90S,EAAAA,KAChB87S,gBAAiB97S,EAAAA,KACjB9pB,YAAa8pB,EAAAA,OACbiyO,YAAajyO,EAAAA,KACb1yB,KAAM0yB,EAAAA,MAAgB,CAAC,QAAS,YAGpCnrB,EAAK2yO,YAAc2pB,GAAAA,EACZt8P,CACX,CAh7B0B,CAg7BxBvN,EAAAA,sEE5gCSwN,EAAa,SAAU6f,GAAK,OAAO,IAAM,EAIpD7f,EAAW+4B,YAAc,uBAIzB/4B,EAAWsoB,aAAe,CACtBrnB,YAAY,EACZquL,UAAU,EACVtuL,UAAU,EACVE,WAAW,EACXC,aAAa,EACb+zT,WAAW,GAKfl1T,EAAWirB,UAAY,CACnBrvB,MAAOsvB,EAAAA,OACPjsB,MAAOisB,EAAAA,OACPokK,SAAUpkK,EAAAA,KACVlqB,SAAUkqB,EAAAA,UAAoB,CAC1BA,EAAAA,KACAA,EAAAA,MAAgB,CACZwqS,YAAaxqS,EAAAA,KAAeoY,eAGpCrjC,KAAMirB,EAAAA,IACNy2C,WAAYz2C,EAAAA,IACZwrS,YAAaxrS,EAAAA,OACbjqB,WAAYiqB,EAAAA,KACZnpB,OAAQmpB,EAAAA,MAAgB,CAAC,OAAQ,UAAW,UAAW,SACvDk6S,OAAQl6S,EAAAA,MAAgB,CAAC,OAAQ,UAAW,UAAW,SACvD5xB,MAAO4xB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC9C8wS,kBAAmB9wS,EAAAA,OACnBihL,WAAYjhL,EAAAA,IACZyxS,WAAYzxS,EAAAA,IACZ0pS,qBAAsB1pS,EAAAA,KACtBppB,OAAQopB,EAAAA,OACR+oS,gBAAiB/oS,EAAAA,OACjBp4B,UAAWo4B,EAAAA,OACX/pB,YAAa+pB,EAAAA,KACbhqB,UAAWgqB,EAAAA,KACXs2S,WAAYt2S,EAAAA,OACZgqS,UAAWhqS,EAAAA,KACX8oS,WAAY9oS,EAAAA,IACZyjK,OAAQzjK,EAAAA,sFCpDRhG,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA4CzCylT,EAA+B,SAAUt/S,GAEzC,SAASs/S,IACL,OAAkB,OAAXt/S,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAWA,OAdAiG,EAAU6gT,EAAet/S,GAOzBs/S,EAAc5mT,UAAUnrB,OAAS,WAC7B,OAAOirB,KAAK9hB,MAAMzK,WAAYssB,EAAAA,EAAAA,IAAKC,MAAMwP,iBAAiBo0S,EAAAA,GAAWl0S,EAAAA,GAASk0S,EAAAA,IAClF,EAIAkD,EAAchtS,YAAc,0BACrBgtS,CACX,CAhBmC,CAgBjCvzU,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBo2S,+GC9DpBjyT,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAOWw5S,EAAW,SAAUhoU,GAC5B,IAAIzG,EACA6lU,EAAmB,KACnBv9S,GAAOqoT,EAAAA,EAAAA,KACPjU,GAAuBn2D,EAAAA,EAAAA,GAA2B9/P,EAAM9K,IACxD0mS,EAAgBvmS,EAAAA,aAAkB,SAAUW,GACxCgK,EAAM47R,eACN57R,EAAM47R,cAAcrzQ,UAAKvzB,EAAWgB,EAAOgK,EAAMG,SAAUH,EAAMvB,MAEzE,GAAG,CAACuB,EAAM47R,cAAe57R,EAAMG,SAAUH,EAAMvB,QAC3C8gU,EAAU,KACV7jR,EAAU,KACd,GAAsB,gBAAlB17C,EAAMw8T,QACN+C,EAAU,CACN3jC,cAAeA,EACfjmS,UAAWqK,EAAMrK,WAErBypU,EAAmB/pU,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG4oT,SAEzD,GAAsB,gBAAlBv/T,EAAMw8T,QAA2B,CACtC,QAAoBxnU,IAAhBgL,EAAMvB,MAAqB,CAC3B,IAAIpE,GAAO49P,EAAAA,EAAAA,IAAej4P,EAAMvB,MAAOuB,EAAMG,eAChCnL,IAATqF,GAA+B,OAATA,IACtBqhD,EAAU17C,EAAM2E,OACZkd,EAAKld,OAAO3E,EAAM2E,OAAQtK,GAC1BA,EAAK28C,WAEjB,CACA,IAAIrhD,GAAYu7B,EAAAA,EAAAA,GAAW,aAAclxB,EAAMrK,UAAW,CAAE,aAAcqK,EAAMgsQ,aAChFuzD,EAAU5oT,IAAUpd,EAAK,CAAEqiS,cAAeA,EAAe7+Q,QAAS/c,EAAM+c,QAASvnB,MAAOwK,EAAMxK,MAAOG,UAAWA,EAAWkE,KAAM,WAAY,gBAAiBmG,EAAMu+P,gBAAiB,gBAAiBv+P,EAAMgsQ,aAAiBm+D,EAAAA,IAA4BnqU,EAAMoxN,YAAa73N,GAAK08T,GACjRmJ,EAAoB/pU,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG4oT,GAAU7jR,EACzE,CACA,IAAI0uR,EAAiBpqU,EAAMw8T,SAAW,OAClCpE,EAAcp4T,EAAMswG,MACxB,GAAI8nN,GAAeA,EAAYgS,GAAiB,CAC5C,IAAI9R,EAAaF,EAAYgS,GAC7B,OAAQ/0U,EAAAA,cAAoBijU,EAAY3hT,EAAS,CAAC,EAAG3W,EAAO,CAAEu/T,QAASA,IAAY7jR,EACvF,CACA,OAAO17C,EAAMnJ,OACTmJ,EAAMnJ,OAAO0xB,UAAKvzB,EAAWoqU,EAAkBp/T,GAC/Co/T,CACR,kIC1DIzoT,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAWWu5S,EAAe,SAAU/nU,GAChC,IAAIzG,EAAII,EAAIK,EAAIG,EAAII,EAChBF,GAAO49P,EAAAA,EAAAA,IAAej4P,EAAMvB,MAAOuB,EAAMG,UACzCi/T,EAAmB,KACnBiL,GAAkBn5S,EAAAA,EAAAA,GAAW,aAAc,qBAAqB33B,EAAK,CAAC,GACnE,cAAgByG,EAAMgsQ,WACzBzyQ,GAAKyG,EAAMrK,WACXsgR,EAAU5gR,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IACxDggS,GAAuBn2D,EAAAA,EAAAA,GAA2B9/P,EAAM9K,IACxDqqU,EAAU,KACV7jR,EAAU,KACVovQ,EAAiBz1T,EAAAA,aAAkB,SAAU6+B,GAC7C,GAAIl0B,EAAMsH,SAAU,CAChB,IAAIC,EAAuC,aAA/B2sB,EAAehY,OAAO5gB,KAC9B44B,EAAehY,OAAOqlF,QACtBrtE,EAAehY,OAAO3U,MAC1BvH,EAAMsH,SAAS,CACXnH,SAAUH,EAAMG,SAChBy/T,UAAW5/T,EAAM4/T,UACjBnhU,MAAOuB,EAAMvB,MACby1B,eAAgBA,EAChB3sB,MAAOA,GAEf,CACJ,GAAG,CAACvH,EAAMsH,SAAUtH,EAAMG,SAAUH,EAAM4/T,UAAW5/T,EAAMvB,QACvDm9R,EAAgBvmS,EAAAA,aAAkB,SAAUW,GACxCgK,EAAM47R,eACN57R,EAAM47R,cAAcrzQ,UAAKvzB,EAAWgB,EAAOgK,EAAMG,SAAUH,EAAMvB,MAEzE,GAAG,CAACuB,EAAM47R,cAAe57R,EAAMG,SAAUH,EAAMvB,QAC3C6rU,EAAcj1U,EAAAA,aAAkB,SAAUmG,GACtCwE,EAAMsH,UACNtH,EAAMsH,SAAS,CACXnH,SAAUH,EAAMG,SAChBy/T,UAAW5/T,EAAM4/T,UACjBnhU,MAAOuB,EAAMvB,MACby1B,eAAgB14B,EAAE04B,eAClB3sB,MAAO/L,EAAE+L,OAGrB,GAAG,CAACvH,EAAMsH,SAAUtH,EAAMG,SAAUH,EAAM4/T,UAAW5/T,EAAMvB,QAC3D,OAAQuB,EAAMioU,QACV,IAAK,UACD1I,EAAU5oT,IAAUhd,EAAK,CAAEiiS,cAAeA,EAAe7+Q,QAAS/c,EAAM+c,QAASvnB,MAAOwK,EAAMxK,MAAOG,UAAW00U,IAAsB,iBAAmBrqU,EAAMu+P,gBAAiB5kQ,EAAG,iBAAmBqG,EAAMgsQ,WAAYryQ,EAAGwwU,EAAAA,IAA4BnqU,EAAMoxN,YAAaz3N,EAAGE,KAAO,WAAYF,GAAKs8T,GACrSv6Q,EAAWrmD,EAAAA,cAAoBkoE,EAAAA,EAAgB,CAAEphE,MAAO,OAAQoL,WAAiBvS,IAATqF,EAAsB,KAAOA,EAAMiN,SAAUgjU,IACrHlL,EAAoB/pU,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG4oT,GAAU7jR,GACrE,MACJ,IAAK,OACD6jR,EAAU5oT,IAAU3c,EAAK,CAAE4hS,cAAeA,EAAe7+Q,QAAS/c,EAAM+c,QAASvnB,MAAOwK,EAAMxK,MAAOG,UAAW00U,IAAsB,iBAAmBrqU,EAAMu+P,gBAAiBvkQ,EAAG,iBAAmBgG,EAAMgsQ,WAAYhyQ,EAAGmwU,EAAAA,IAA4BnqU,EAAMoxN,YAAap3N,EAAGH,KAAO,WAAYG,GAAKi8T,GACrSv6Q,EAAWrmD,EAAAA,cAAoB6pE,EAAAA,GAAY,CAAE/iE,MAAO,OAAQoL,MAAOlN,EAAMiN,SAAUgjU,IACnFlL,EAAoB/pU,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG4oT,GAAU7jR,GACrE,MACJ,IAAK,UACD6jR,EAAU5oT,IAAUxc,EAAK,CAAEyhS,cAAeA,EAAe7+Q,QAAS/c,EAAM+c,QAASvnB,MAAOwK,EAAMxK,MAAOG,UAAW00U,IAAsB,iBAAmBrqU,EAAMu+P,gBAAiBpkQ,EAAG,iBAAmB6F,EAAMgsQ,WAAY7xQ,EAAGgwU,EAAAA,IAA4BnqU,EAAMoxN,YAAaj3N,EAAGN,KAAO,WAAYM,GAAK87T,GACrSv6Q,EAAW,CACPrmD,EAAAA,cAAoB,QAAS,CAAEksG,QAASlnG,IAAQ,EAAOnF,GAAI+gR,EAAS36Q,KAAM,WAAY3F,UAAW,wCAAyC2R,SAAUwjT,EAAgB19R,IAAK,IACzK/3B,EAAAA,cAAoB,QAAS,CAAEM,UAAW,mBAAoBmnS,QAAS7mB,EAAS7oP,IAAK,KAEzFgyS,EAAoB/pU,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG4oT,GAAU7jR,GACrE,MACJ,QACI6jR,EAAU5oT,IAAUpc,EAAK,CAAEqhS,cAAeA,EAAe7+Q,QAAS/c,EAAM+c,QAASvnB,MAAOwK,EAAMxK,MAAOG,UAAW00U,IAAsB,iBAAmBrqU,EAAMu+P,gBAAiBhkQ,EAAG,iBAAmByF,EAAMgsQ,WAAYzxQ,EAAG4vU,EAAAA,IAA4BnqU,EAAMoxN,YAAa72N,EAAGV,KAAO,WAAYU,GAAK07T,GACrSv6Q,EAAWrmD,EAAAA,cAAoB,QAAS,CAAEG,MAAO,CAAE2G,MAAO,QAAUxG,UAAW,UAAW4R,MAAOlN,GAAQ,GAAIiN,SAAUwjT,IACvHsU,EAAoB/pU,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG4oT,GAAU7jR,GAE7E,IAAI6uR,EAAgBvqU,EAAMioU,QAAU,OAChC7P,EAAcp4T,EAAMswG,MACxB,GAAI8nN,GAAeA,EAAYoS,MAAQpS,EAAYoS,KAAKD,GAAgB,CACpE,IAAIjS,EAAaF,EAAYoS,KAAKD,GAClC,OAAQl1U,EAAAA,cAAoBijU,EAAY3hT,EAAS,CAAC,EAAG3W,EAAO,CAAEu/T,QAASA,IAAY7jR,EACvF,CACA,OAAO17C,EAAMnJ,OACTmJ,EAAMnJ,OAAO0xB,UAAKvzB,EAAWoqU,EAAkBp/T,GAC/Co/T,CACR,+JC/FIr3S,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAyBzCy2S,EAAgC,SAAUtwS,GAE1C,SAASswS,EAAe55T,GACpB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAexC,OAdA0C,EAAMimT,UAAYp1U,EAAAA,YAClBmvB,EAAMkmT,qBAAuB,SAAUhpS,GACnC,GAA+B,YAA3Bld,EAAMxkB,MAAMg5T,WAAhB,CAGA,IAAIzxT,EAAQid,EAAMxkB,MAAMw5T,UAAUxpT,MAAK,SAAU1K,GAAQ,OAAOA,EAAK8a,WAAaoE,EAAMxkB,MAAMogB,QAAU,KAAM,KAC9G,OAAQ/qB,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAEhhB,KAAMmpB,EAAMxkB,MAAM3E,KAAMkM,MAAOA,EAAOD,SAAUkd,EAAMmmT,eAAgBh1U,UAAW,sBAAuBu3R,cAAe,oBAAqBzyP,QAASmwS,EAAAA,IAAYvwU,KAAMmqB,EAAMxkB,MAAMw5T,UAAW7xT,UAAW,OAAQ7F,MAAO4/B,EAAapQ,iBAAiBu5S,EAAAA,GAAsBr5S,EAAAA,GAASq5S,EAAAA,KAAwBhvS,cAAe,CAChW1/B,MAAO,KAHf,CAKJ,EACAqoB,EAAM8lT,YAAc9lT,EAAM8lT,YAAY35S,KAAKnM,GAC3CA,EAAM69B,MAAQ79B,EAAM69B,MAAM1xB,KAAKnM,GAC/BA,EAAMmmT,eAAiBnmT,EAAMmmT,eAAeh6S,KAAKnM,GACjDA,EAAMsmT,mBAAqBtmT,EAAMsmT,mBAAmBn6S,KAAKnM,GAClDA,CACX,CAsDA,OAxEAuD,EAAU6xS,EAAgBtwS,GAsB1BswS,EAAe53S,UAAUnrB,OAAS,WAC9B,IAAI0C,EACA43B,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjDs9S,EAAoB/pU,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gBAC5DN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,wBACpCmsB,KAAKipT,gBAAgBjpT,KAAK9hB,MAAMg5T,WAAYl3S,KAAK9hB,MAAMuH,MAAOua,KAAK9hB,MAAM05T,eACzErkU,EAAAA,cAAoB,MAAO,CAAEM,UAAW,yBACpCmsB,KAAK4oT,qBAAqBv5S,GAC1B,OACA97B,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEoE,KAAMymB,KAAK9hB,MAAM3E,KAAMnE,KAAM,eAAgBujC,QAASuwS,EAAAA,IAAiBr1U,WAAWu7B,EAAAA,EAAAA,IAAY33B,EAAK,CAAC,EAC1HA,EAAG,0BAA4BmzB,UAA+B,OAArB5K,KAAK9hB,MAAMuH,OAAuC,KAArBua,KAAK9hB,MAAMuH,QAAiBua,KAAK9hB,MAAMogB,UAC7G7mB,IAAMuI,MAAOqvB,EAAoBG,iBAAiB25S,EAAAA,GAAmBz5S,EAAAA,GAASy5S,EAAAA,KAAqB3vU,KAAM,SAAUnE,QAAS2qB,KAAKugC,MAAOrmD,WAAmC,OAArB8lB,KAAK9hB,MAAMuH,OAAuC,KAArBua,KAAK9hB,MAAMuH,OAAiBua,KAAK9hB,MAAMogB,eAC9O,OAAI0B,KAAK9hB,MAAMnJ,OACJirB,KAAK9hB,MAAMnJ,OAAO0xB,UAAKvzB,EAAWoqU,EAAkBt9S,KAAK9hB,OAE7Do/T,CACX,EACAxF,EAAe53S,UAAUsoT,YAAc,SAAU/iU,EAAO/L,IACpD0vU,EAAAA,EAAAA,IAAgB3jU,EAAO/L,EAAGsmB,KAAK9hB,MACnC,EACA45T,EAAe53S,UAAU2oT,eAAiB,SAAU30U,IAChDm1U,EAAAA,EAAAA,IAAmBn1U,EAAO8rB,KAAK9hB,MAAMuH,MAAOua,KAAK9hB,MAAMsH,SAC3D,EACAsyT,EAAe53S,UAAU8oT,mBAAqB,SAAU90U,IACpDo1U,EAAAA,EAAAA,IAAuBp1U,EAAO8rB,KAAK9hB,MAAMsH,SAC7C,EACAsyT,EAAe53S,UAAUqgC,MAAQ,SAAU7mD,GACvC,IAAIgpB,EAAQ1C,KACZtmB,EAAEub,iBACF+K,KAAK9hB,MAAMsH,SAAS,CAAEC,MAAO,GAAI6Y,SAAU,GAAI8T,eAAgB14B,IAC3DsmB,KAAK2oT,UAAUt0U,UACf2rB,KAAK2oT,UAAUt0U,QAAQg0B,QAAQ5iB,MAAQ,GACvCuqB,YAAW,WACPtN,EAAMimT,UAAUt0U,QAAQg0B,QAAQJ,OACpC,GAAG,GAEX,EACA6vS,EAAe53S,UAAU+oT,gBAAkB,SAAU/R,EAAYzxT,EAAOmyT,GACpE,IAAIl1S,EAAQ1C,KACZ,OAAQk3S,GACJ,IAAK,UACD,OAAQ3jU,EAAAA,cAAoBkoE,EAAAA,EAAgB,CAAE1nE,IAAKisB,KAAK2oT,UAAWpvU,KAAMymB,KAAK9hB,MAAM3E,KAAMkM,MAAOA,EAAOD,SAAU,SAAU9L,GAAKgpB,EAAM8lT,YAAY9uU,EAAE+L,MAAO/L,EAAE04B,eAAiB,EAAGpyB,MAAOggB,KAAK9hB,MAAM8B,MAAOm7O,UAAWn7N,KAAK9hB,MAAMi9O,YACrO,IAAK,OACD,OAAQ5nP,EAAAA,cAAoB6pE,EAAAA,GAAY,CAAErpE,IAAKisB,KAAK2oT,UAAWpvU,KAAMymB,KAAK9hB,MAAM3E,KAAMkM,MAAOA,EAAOD,SAAU,SAAU9L,GAAKgpB,EAAM8lT,YAAY9uU,EAAE+L,MAAO/L,EAAE04B,eAAiB,EAAGpyB,MAAOggB,KAAK9hB,MAAM8B,MAAOm7O,UAAWn7N,KAAK9hB,MAAMi9O,YACjO,IAAK,UAED,OAAQ5nP,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAExmB,IAAKisB,KAAK2oT,UAAWpvU,KAAMymB,KAAK9hB,MAAM3E,KAAMiM,SAAUwa,KAAKgpT,mBAAoBvjU,MAAOmyT,EAAc1pT,MAAK,SAAU1K,GAAQ,OAAOA,EAAK8a,YADzH,QAA5Bxb,EACiL2C,SADlIvS,IAAX4P,EACsJ,GAAK2C,GADzM,IAAU3C,CACuM,IAAIvK,KAAMq/T,EAAe/xT,UAAW,OAAQ7F,MAAOggB,KAAK9hB,MAAM8B,MAAOm7O,UAAWn7N,KAAK9hB,MAAMi9O,YACpU,QAAS,OAAQ5nP,EAAAA,cAAoBsN,EAAAA,EAAS,CAAE9M,IAAKisB,KAAK2oT,UAAWpvU,KAAMymB,KAAK9hB,MAAM3E,KAAMkM,MAAOA,GAAS,GAAID,SAAU,SAAU9L,GAAKgpB,EAAM8lT,YAAY9uU,EAAE0gB,OAAO3U,MAAO/L,EAAE04B,eAAiB,EAAGpyB,MAAOggB,KAAK9hB,MAAM8B,MAAO,aAAcggB,KAAK9hB,MAAMi9O,YAE3P,EACO28E,CACX,CA1EoC,CA0ElCvkU,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBonS,oICrGpBjjT,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAUWg2S,EAAgB,SAAUxkU,GACjC,IAAIo/T,EAAmB,KACnBhuG,EAAcpxN,EAAMoxN,YAAal2F,EAAQl7H,EAAMk7H,MAAOgtM,EAAeloU,EAAMkoU,aAAc1L,EAAUx8T,EAAMw8T,QAASr8T,EAAWH,EAAMG,SAAU1B,EAAQuB,EAAMvB,MAAO6I,EAAWtH,EAAMsH,SAAU+8D,EAAWrkE,EAAMqkE,SAAUxtE,EAASmJ,EAAMnJ,OAAQ+oU,EAAY5/T,EAAM4/T,UAAWrhE,EAAkBv+P,EAAMu+P,gBAAiB34N,EAAQ5lC,EAAM4lC,MACnUylS,EAAe5sU,GAAS,GACxBw3T,GAAuBn2D,EAAAA,EAAAA,GAA2B9/P,EAAM9K,IACxDwsC,GAAei/O,EAAAA,EAAAA,KACf4+C,EAAU,KACV+L,EAAW,KACX5vR,EAAU,KACV6vR,EAAmBl2U,EAAAA,aAAkB,SAAUW,GAC3CA,EAAMitQ,sBAGNjtQ,EAAMm2B,UAAYtD,EAAAA,EAAK8L,OAASrtB,IAChCtR,EAAM+gB,iBACNzP,EAAS,CACLnH,SAAUA,EACVy/T,UAAWA,EACX1rS,eAAgBl+B,EAChByI,WAAOzJ,EACPuS,OAAQ88D,IAGpB,GAAG,CAACA,EAAU/8D,EAAUnH,EAAUy/T,IAC9BhkC,EAAgBvmS,EAAAA,aAAkB,SAAUW,GACxCgK,EAAM47R,eACN57R,EAAM47R,cAAcrzQ,UAAKvzB,EAAWgB,EAAOgK,EAAMG,SAAUH,EAAMvB,MAEzE,GAAG,CAACuB,EAAM47R,cAAe57R,EAAMG,SAAUH,EAAMvB,QAC3C+sU,EAAqB,SAAUz/H,EAAS3rG,GACxC,IAAI7mG,EACAkyU,EAAcpnQ,EAAWqnQ,EAAAA,GAAgBC,EAAAA,GACzCl7R,EAAU/O,EAAapQ,iBAAiBm6S,EAAaj6S,EAAAA,GAASi6S,IAuBlE,OAtBAlM,EAAU5oT,IAAUpd,EAAK,CAAE5D,UAAW,aAAcH,MAAOmhB,EAASA,EAAS,CAAC,EAAG3W,EAAMxK,OAAQ4qG,GAASrjF,QAASgvL,EAAS3+K,IAAK,YAAavzB,KAAM,aAAiB,kBAAmB,EAAON,EAAG,iBAAmB8qE,EAAU9qE,EAAG,iBAAmBglQ,EAAiBhlQ,EAAGg0B,UAAYg+S,EAAkBhyU,EAAGqiS,cAAgBA,EAAeriS,GAAK08T,GAC5Uv6Q,EAAWrmD,EAAAA,cAAoB,IAAK,CAAEM,UAAW,WAC7CN,EAAAA,cAAoB,IAAK,CAAE8B,QAAS,SAAUqE,GACtCA,EAAEub,iBACEzP,GACAA,EAAS,CACLnH,SAAUA,EACVy/T,UAAWA,EACX1rS,eAAgB14B,EAChBiD,WAAOzJ,EACPuS,OAAQ88D,GAGpB,EAAGt2D,KAAM,IAAKsf,UAAW,EAAG,aAAcojB,GAC1Cp7C,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAMysE,EAC9B,iBACEz+B,EAAQ,iBAAmB,kBAAmB1uC,KAAMmtE,EACtD68K,EAAAA,IACEt7M,EAAQ03P,EAAAA,IAAmBC,EAAAA,OACvCp9R,EAASkrU,aAAyBtsU,MAASoB,EAASkrU,GAAcr0R,SAChE72C,EAASkrU,GAAcr0R,WACvB72C,EAASkrU,IACTh2U,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG4oT,GAAU7jR,EAC7D,OACoB1mD,IAAhBo8N,QAAuCp8N,IAAVkmI,GAAuBk2F,EAAcl2F,QACjDlmI,IAAjBkzU,GAA0C,gBAAZ1L,QAAwDxnU,IAA3BmL,EAASkrU,IACpE9L,EAAU,CACN/pU,MAAOwK,EAAMxK,MACb43B,IAAK,IAAMgkM,EACXz7N,WAAWu7B,EAAAA,EAAAA,GAAW,aAAc,eAAgB,CAAE,wBAAyBlxB,EAAMwxL,SACrF33L,KAAM,WACN+hS,cAAeA,GAEnBwjC,EAAoB/pU,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG4oT,KAEtDnuG,GAAel2F,IAAUl7H,EAAMwxL,OACpC4tI,EAAmBoM,EAAmBtD,EAAe92G,EAAa,CAAC,GAE9DA,GAAel2F,GAASl7H,EAAMwxL,SACnC85I,EAAW,CACP31U,UAAW,aACXkE,KAAM,WACNkjB,QAAUmrT,EAAe92G,EACzB57N,MAAO,CAAEuG,gBAAiB,EAAG6vU,iBAAkB,GAC/ChwC,cAAeA,GAEnBwjC,EAAoB/pU,EAAAA,cAAoBA,EAAAA,SAAgB,KACpDm2U,EAAmB,EAAG,CAAE/vU,SAAU,SAAUG,OAAQ,IACpDvG,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG20T,MAE/C,IAAIlB,EAAiBpqU,EAAMw8T,SAAW,OAClCpE,EAAcp4T,EAAMswG,MACxB,GAAI8nN,GAAeA,EAAY/0P,OACxB+0P,EAAY/0P,MAAM+mQ,GAAiB,CACtC,IAAI9R,EAAaF,EAAY/0P,MAAM+mQ,GACnC,OAAQ/0U,EAAAA,cAAoBijU,EAAY3hT,EAAS,CAAC,EAAG3W,EAAO,CAAEu/T,QAASA,EAAS+L,SAAUA,IAAa5vR,EAC3G,CACA,OAAO7kD,EACHA,EAAO0xB,UAAKvzB,EAAWoqU,EAAkBp/T,GACzCo/T,CACR,iICjHIzoT,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAWW+1S,EAAoB,SAAUvkU,GACrC,IAAIo/T,EAAmB,KACnBG,EAAU,KACV7jR,EAAU,KACV2oB,GAAW4zL,EAAAA,EAAAA,IAAej4P,EAAMvB,MAAOuB,EAAMG,UAC7C81T,GAAuBn2D,EAAAA,EAAAA,GAA2B9/P,EAAM9K,IACxDwsC,GAAei/O,EAAAA,EAAAA,KACf4qD,EAAmBl2U,EAAAA,aAAkB,SAAUW,GAC3CA,EAAMitQ,sBAGNjtQ,EAAMm2B,UAAYtD,EAAAA,EAAK8L,OAAS30B,EAAMsH,WACtCtR,EAAM+gB,iBACN/W,EAAMsH,SAAS,CACXnH,SAAUH,EAAMG,SAChBy/T,UAAW5/T,EAAM4/T,UACjB1rS,eAAgBl+B,EAChByI,MAAOuB,EAAMvB,MACb8I,OAAQ88D,IAGpB,GAAG,CAACrkE,EAAMG,SAAUH,EAAM4/T,UAAW5/T,EAAMvB,MAAOuB,EAAMsH,SAAU+8D,IAClE,GAAsB,gBAAlBrkE,EAAMw8T,QACN+C,EAAU5oT,EAAS,CAAEhhB,UAAW,8BAA+BkE,KAAM,YAAco8T,GACnFmJ,EACI/pU,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG4oT,SAE1C,GAAsB,gBAAlBv/T,EAAMw8T,QAA2B,CACtC,IAAIiP,EAAcpnQ,EAAWwnQ,EAAAA,GAAiBC,EAAAA,GAC1Cr7R,EAAU/O,EAAapQ,iBAAiBm6S,EAAaj6S,EAAAA,GAASi6S,IAClElM,EAAU5oT,EAAS,CAAEhhB,UAAW,8BAA+B43B,UAAWg+S,EAAkB,kBAAiBlnQ,EAAyBxqE,KAAM,WAAY,gBAAiBmG,EAAMu+P,iBAAmB03D,GAClMv6Q,EAAWrmD,EAAAA,cAAoB,IAAK,CAAE8B,QAAS,SAAUqE,GACjDA,EAAEub,iBACE/W,EAAMsH,UACNtH,EAAMsH,SAAS,CACXnH,SAAUH,EAAMG,SAChBy/T,UAAW5/T,EAAM4/T,UACjB1rS,eAAgB14B,EAChBiD,MAAOuB,EAAMvB,MACb8I,OAAQ88D,GAGpB,EAAG,aAAc5zB,EAAS1iC,KAAM,IAAKsf,UAAW,GAChDh4B,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAMysE,EAAW,QAAU,OAAQntE,KAAMmtE,EAAW0nQ,EAAAA,IAAY32C,EAAAA,OACpGgqC,EAAoB/pU,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG4oT,GAAU7jR,EACzE,CACA,IAAI0uR,EAAiBpqU,EAAMw8T,SAAW,OAClCpE,EAAcp4T,EAAMswG,MACxB,GAAI8nN,GAAeA,EAAY4T,WAAa5T,EAAY4T,UAAU5B,GAAiB,CAC/E,IAAI9R,EAAaF,EAAY4T,UAAU5B,GACvC,OAAQ/0U,EAAAA,cAAoBijU,EAAY3hT,EAAS,CAAC,EAAG3W,EAAO,CAAEu/T,QAASA,IAAY7jR,EACvF,CACA,OAAO17C,EAAMnJ,OACTmJ,EAAMnJ,OAAO0xB,UAAKvzB,EAAWoqU,EAAkBp/T,GAC/Co/T,CACR,0FC5EIzoT,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAQW21S,EAAoB,SAAUnkU,GACrC,IAAIzG,EACAuxT,EAAiBz1T,EAAAA,aAAkB,SAAU6+B,GACzCl0B,EAAMu3T,iBACNv3T,EAAMu3T,gBAAgB,CAAErjS,eAAgBA,GAEhD,GAAG,CAACl0B,EAAMu3T,kBACNthD,EAAU5gR,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IACxDrR,GAAgBqzO,EAAAA,EAAAA,IAAej4P,EAAMvB,MAAOuB,EAAMG,UAClD81T,GAAuBn2D,EAAAA,EAAAA,GAA2B9/P,EAAM9K,IACxDqqU,EAAU5oT,IAAUpd,EAAK,CAAEwjB,QAAS/c,EAAM+c,QAASvnB,MAAOwK,EAAMxK,MAAOG,UAAWqK,EAAMrK,YAAgB,iBAAmBqK,EAAMu+P,gBAAiBhlQ,EAAGM,KAAO,WAAYN,GAAK08T,GAC7Kv6Q,EAAU,CACTrmD,EAAAA,cAAoB,QAAS,CAAE+3B,IAAK,IAAKm0E,QAAkC,mBAAlB38E,GAA+BA,EAAe1vB,GAAI+gR,EAAS36Q,KAAM,WAAY3F,UAAW,wCAAyC2R,SAAUwjT,IACpMz1T,EAAAA,cAAoB,QAAS,CAAEM,UAAW,mBAAoBmnS,QAAS7mB,EAAS7oP,IAAK,OAEtFgyS,EAAqC,gBAAlBp/T,EAAMw8T,QAA6BnnU,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG4oT,GAAU7jR,GAAY,KACnH0uR,EAAiBpqU,EAAMw8T,SAAW,OAClCpE,EAAcp4T,EAAMswG,MACxB,GAAI8nN,GAAeA,EAAY7uR,QAAU6uR,EAAY7uR,OAAO6gS,GAAiB,CACzE,IAAI9R,EAAaF,EAAY7uR,OAAO6gS,GACpC,OAAQ/0U,EAAAA,cAAoBijU,EAAY3hT,EAAS,CAAC,EAAG3W,EAAO,CAAEu/T,QAASA,IAAY7jR,EACvF,CACA,OAAO17C,EAAMnJ,OACTmJ,EAAMnJ,OAAO0xB,UAAKvzB,EAAWoqU,EAAkBp/T,GAC/Co/T,CACR,yHC3CIr3S,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAUI2gU,EAAuC,SAAU/1S,GAEjD,SAAS+1S,IACL,IAAI76S,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAqDhE,OAnDA0C,EAAM3vB,MAAQ,CACVm3B,MAAM,GAGVxH,EAAMynT,QAAU,KAEhBznT,EAAMklH,SAAW,KAEjBllH,EAAM0nT,iBAAcl3U,EAEpBwvB,EAAM2nT,UAAW,EAEjB3nT,EAAMs4K,KAAO,WACLt4K,EAAM2nT,SACN3nT,EAAM2nT,UAAW,GAGrB57S,aAAa/L,EAAM0nT,aACnB1nT,EAAM0nT,YAAcrxU,OAAOi3B,YAAW,WAActN,EAAM4nT,WAAa,IAC3E,EAEA5nT,EAAMuF,MAAQ,WACVwG,aAAa/L,EAAM0nT,YACvB,EAEA1nT,EAAM6nT,YAAc,SAAUr2U,GAC1BA,EAAM+gB,iBACNyN,EAAM6L,SAAS,CACXrE,MAAOxH,EAAM3vB,MAAMm3B,OACpB,WAAc,OAAOxH,EAAM3vB,MAAMm3B,MAAQxH,EAAMklH,UAAYllH,EAAMklH,SAAS3/G,OAAS,GAC1F,EAEAvF,EAAM4nT,UAAY,WACd5nT,EAAM6L,SAAS,CAAErE,MAAM,GAC3B,EAEAxH,EAAM8nT,kBAAoB,SAAUt2U,GAChCwuB,EAAM2nT,SAAW3nT,EAAM3vB,MAAMm3B,MAAQh2B,EAAM4sQ,gBAAkBp+O,EAAMynT,OACvE,EAEAznT,EAAM+nT,gBAAkB,SAAUv2U,GAC9B,IAAIuD,EACJ,GAAIvD,EAAMm2B,UAAYtD,EAAAA,EAAKmK,IAAK,CAC5B,IAAIw5S,EAAiBx2U,EAAMkmB,OACvBuwT,EAAeD,IAAgE,QAA5CjzU,EAAKizU,EAAe9rO,QAAQ,kBAA+B,IAAPnnG,OAAgB,EAASA,EAAGmzU,uBAAuB,kBAAkB,IACnID,GAAiBA,EAAatmF,YAAcsmF,EAAa9wS,aAElF6wS,EAAe7+J,eAAe,CAAEpZ,OAAQ,UAEhD,CACJ,EACO/vI,CACX,CAcA,OAtEAuD,EAAUs3S,EAAuB/1S,GAyDjC+1S,EAAsBr9S,UAAUnrB,OAAS,WACrC,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAO2sU,EAAapzU,EAAGs9T,WAAYtoR,EAASjyB,EAAO/iB,EAAI,CAAC,eAClEqtN,EAAS9kM,KAAK9hB,MAAM4mN,OACpBz1L,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjD8qT,EAAehmH,EAAO9kN,OAAS8kN,EAAOnoN,MACtCA,EAAQmuU,EAAe,GAAG5mU,OAAO4mU,EAAc,KAAO,GAC1D,OAAQv3U,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB,IAAK,CAAEM,UAAW,wCAAyCE,IAAK,SAAU2F,GAAK,OAAOgpB,EAAMynT,QAAUzwU,CAAG,EAAGrE,QAAS2qB,KAAKuqT,YAAa16S,YAAa7P,KAAKwqT,kBAAmB/+S,UAAWzL,KAAKyqT,gBAAiBx+T,KAAM,IAAK,aAAc,GAAG/H,OAAOvH,GAAOuH,OAAOmrB,EAAoBG,iBAAiBulS,EAAAA,GAAYrlS,EAAAA,GAASqlS,EAAAA,OACxUxhU,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,gBAAiBV,KAAM21U,EAAAA,OACjEx3U,EAAAA,cAAoBqkC,EAAAA,EAAO,CAAEkB,OAAQ9Y,KAAKmqT,QAASjgT,KAAMlK,KAAKjtB,MAAMm3B,MAChE32B,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAU2F,GAAK,OAAOgpB,EAAMklH,SAAWluI,CAAG,EAAG7F,UAAW,0BAA2B03B,SAAU,EAAGzB,OAAQ9J,KAAKg7K,KAAMpxK,QAAS5J,KAAKiI,MAAOv0B,MAAO,CAAEmoQ,QAAS,SAAYgvE,GAAet3U,EAAAA,cAAoBs3U,EAAYh2T,EAAS,CAAC,EAAG43B,EAAQ,CAAEu+R,YAAahrT,KAAKsqT,eAC5S,EACO/M,CACX,CAxE2C,CAwEzChqU,EAAAA,iFCpHS03U,EAA2BxqE,EAAAA,GAE3B4nE,EAA2B3nE,EAAAA,yECClCuiE,EAAiC,WACjC,SAASA,EAAgBC,EAAeC,EAAcC,GAClD,IAAI1gT,EAAQ1C,KACZA,KAAKwnT,mBAAqBj0U,EAAAA,YAC1BysB,KAAKunT,mBAAqBh0U,EAAAA,YAC1BysB,KAAKg9C,QAAU,GACfh9C,KAAK9d,aAAc,EACnB8d,KAAKi2S,WAAY,EACjBj2S,KAAKkrT,aAAe,EACpBlrT,KAAKmrT,YAAc,EACnBnrT,KAAK47S,eAAiB,EACtB57S,KAAKorT,cAAgB,EACrBprT,KAAKqrT,qBAAuB,KAC5BrrT,KAAK+jT,iBAAmB,SAAUrqU,GAC9BgpB,EAAM2oT,qBAAwB3xU,GAAKA,EAAEjG,SAAYiG,EAAEjG,SAAS,GAAKiG,CACrE,EACAsmB,KAAKwzS,aAAe,SAAUt/T,EAAOm0B,GACjC,IAAI6iT,EAAcxoT,EAAMs+O,eAAe9sQ,EAAOm0B,GAE9C,GADA3F,EAAMyoT,WAAazoT,EAAM4oT,cAAcp3U,GACnCg3U,GAAe,EAAG,CAClB,IAAIlwT,EAAM0H,EAAMs6C,QAAQkuQ,IACpBlwT,EAAI9Y,aAAewgB,EAAMxgB,aAAe8Y,EAAIi7S,WAAavzS,EAAMuzS,aAC/DvzS,EAAMwoT,YAAcA,EAE5B,CACJ,EACAlrT,KAAKyzS,YAAc,SAAUv/T,EAAOm0B,GAKhC,GAJKn0B,EAAM60P,SACP70P,EAAM40P,cAAc7zO,iBAExB/gB,EAAM40P,cAAct2N,mBACO,IAAvB9P,EAAMwoT,cAA4C,IAAtBxoT,EAAMyoT,WAAtC,CAGAzoT,EAAMk5S,cAAgBl5S,EAAMs+O,eAAe9sQ,EAAOm0B,GAClD,IAAIkjT,EAAqB7oT,EAAM2oT,sBAAwB3oT,EAAM2oT,qBAAqB53U,SAClFivB,EAAM0oT,aAAe1oT,EAAM8oT,0BAA0Bt3U,GAC/Cq3U,GAAsBA,EAAmB1pU,OACrC0pU,EAAmB1pU,OACnB,EACJ6gB,EAAM4oT,cAAcp3U,GAC1B,IAAIu3U,GAAgB/oT,EAAMvuB,UACtBs3U,IACA/oT,EAAMk5S,eAAiB,EACvBl5S,EAAM0oT,cAAgB,GAE1B,IAAIM,EAAiBhpT,EAAMk5S,eAAiB,EACxCvzS,EAAQ50B,SAASivB,EAAMs6C,QAAQt6C,EAAMk5S,eAAehnT,OACpD8N,EAAM8oT,0BAA0Bt3U,GAC1BA,EAAM40P,cAAc1uO,OACpBsI,EAAM2oT,sBAAwB3oT,EAAM2oT,qBAAqB53U,SAASivB,EAAM0oT,cAClF1oT,EAAMipT,sBAAsBz3U,EAAOm0B,EAASqjT,EAAeD,GAC3D/oT,EAAMkpT,sBAAsB13U,EAAOm0B,EAASqjT,EAAeD,EAnB3D,CAoBJ,EACAzrT,KAAK0zS,eAAiB,SAAUx/T,GAC5B,IAAI23U,EAAkBnpT,EAAMwoT,YACxBY,EAAkBppT,EAAMk5S,cACxBmQ,EAAiBrpT,EAAMyoT,WACvBa,EAAiBtpT,EAAM0oT,aAC3Bl3U,EAAM40P,cAAc7zO,iBAChByN,EAAMupT,iBACNvpT,EAAMupT,gBAAgB19S,SAAS,CAAEwpH,SAAS,IAE1Cr1H,EAAMwpT,iBACNxpT,EAAMwpT,gBAAgB39S,SAAS,CAAEwpH,SAAS,IAE9C,IAAI5jJ,EAAUuuB,EAAMvuB,UACpBuuB,EAAMwoT,YAAcxoT,EAAMyoT,WAAazoT,EAAMk5S,cAAgBl5S,EAAM0oT,cAAgB,EAC9Ej3U,IAGD03U,GAAmB,GAAKC,GAAmB,EAC3CppT,EAAMwgT,cAAc2I,EAAiBC,EAAiB53U,EAAM40P,eAEvDijF,GAAkB,GAAKC,GAAkB,EAC9CtpT,EAAMygT,aAAa4I,EAAgBC,EAAgB93U,EAAM40P,eAEpD+iF,GAAmB,GAAKG,GAAkB,GAC/CtpT,EAAM0gT,cAAcyI,EAAiBG,EAAgB93U,EAAM40P,eAEnE,EACA9oO,KAAKkjT,cAAgBA,EACrBljT,KAAKmjT,aAAeA,EACpBnjT,KAAKojT,cAAgBA,CACzB,CAqHA,OApHAzgU,OAAO6nB,eAAey4S,EAAgB/iT,UAAW,cAAe,CAC5DuK,IAAK,WACD,OAAOzK,KAAKwnT,kBAChB,EACA98S,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAey4S,EAAgB/iT,UAAW,cAAe,CAC5DuK,IAAK,WACD,OAAOzK,KAAKunT,kBAChB,EACA78S,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAey4S,EAAgB/iT,UAAW,kBAAmB,CAChEuK,IAAK,WACD,OAAOzK,KAAKwnT,mBAAmBnzU,OACnC,EACAq2B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAey4S,EAAgB/iT,UAAW,kBAAmB,CAChEuK,IAAK,WACD,OAAOzK,KAAKunT,mBAAmBlzU,OACnC,EACAq2B,YAAY,EACZC,cAAc,IAElBs4S,EAAgB/iT,UAAU8gP,eAAiB,SAAU9sQ,EAAOqmJ,GACxD,IAAKA,GAAWA,EAAO0rD,gBAAkBjmL,KAAKqrT,qBAC1C,OAAQ,EAEZ,IAAIz2T,GAAQsoP,EAAAA,EAAAA,IAAShpQ,EAAOqmJ,GAC5B,IAAe,IAAX3lI,EACA,OAAQ,EAQZ,IANA,IAAIu/J,EAAU,SAAUj0K,GACpB,GAAIq6I,EAAO17C,WAAWprG,SAASyM,KAAOq6I,EAClC,MAAO,CAAE90I,MAAO0mU,EAAOnvQ,QAAQsjB,WAAU,SAAUvzE,GAAK,OAASA,EAAE6H,QAAUA,GAAW7H,EAAE6pH,QAAU12H,CAAK,IAEjH,EACIisU,EAASnsT,KACJ9f,EAAI,EAAGA,EAAIq6I,EAAO17C,WAAWprG,SAASoO,OAAQ3B,IAAK,CACxD,IAAIksU,EAAUj4J,EAAQj0K,GACtB,GAAuB,kBAAZksU,EACP,OAAOA,EAAQ3mU,KACvB,CACA,OAAQ,CACZ,EACAw9T,EAAgB/iT,UAAUsrT,0BAA4B,SAAUt3U,GAC5D,IAAIkmB,EAASlmB,EAAM40P,cAAc1uO,OACjC,QAAOA,EAAOvmB,UAAUonC,UACyC,IAA3D7gB,EAAOvmB,UAAUonC,QAAQ,4BAEnC,EACAgoS,EAAgB/iT,UAAUorT,cAAgB,SAAUp3U,GAChD,OAAOgpQ,EAAAA,EAAAA,IAAShpQ,EAAO8rB,KAAKqrT,qBAChC,EACApI,EAAgB/iT,UAAU/rB,QAAU,WAChC,OAAI6rB,KAAKmrT,YAAc,EAEZnrT,KAAKorT,cAAgB,GAAKprT,KAAKorT,eAAiBprT,KAAKmrT,YAEtC,IAAtBnrT,KAAKkrT,cAGLlrT,KAAKorT,cAAgB,GAE+B,IAA7CprT,KAAKg9C,QAAQh9C,KAAKkrT,aAAajV,YAAyC,IAAnBj2S,KAAKi2S,WAGzC,IAArBj2S,KAAK9d,aACR8d,KAAK47S,eAAiB,GACtB57S,KAAK47S,gBAAkB57S,KAAKkrT,cACmB,IAA/ClrT,KAAKg9C,QAAQh9C,KAAKkrT,aAAahpU,aAC/B8d,KAAKg9C,QAAQh9C,KAAK47S,eAAejwI,cAAgB3rK,KAAKg9C,QAAQh9C,KAAKkrT,aAAav/I,YACxF,EACAs3I,EAAgB/iT,UAAUyrT,sBAAwB,SAAUz3U,EAAOm0B,EAASqjT,EAAeD,GACvF,GAAKzrT,KAAKksT,gBAAV,CAGA,IAAI/wH,EAAYn7L,KAAKkrT,aAAe,EAChC7iT,EAAQ50B,SAASusB,KAAKg9C,QAAQh9C,KAAKkrT,aAAat2T,OAAOumM,UACvD9yL,EAAQ8yL,UACZn7L,KAAKksT,gBAAgB39S,SAAS,CAC1BwpH,SAAS,EACTn+I,IAAM1F,EAAMs0P,MAAQ,GACpB94O,KAAMxb,EAAMo0P,MACZntC,UAAWA,EACXv0M,OAAS6kU,IAAiBC,EAAiB,aAAe,YAT9D,CAWJ,EACAzI,EAAgB/iT,UAAU0rT,sBAAwB,SAAU13U,EAAOm0B,EAASqjT,EAAeD,GACvF,GAAKzrT,KAAKisT,gBAGV,IAAIR,GAAiBC,EAArB,CAIA,IAAI7uO,EAAO6uO,EAAc/pO,wBAErB0qO,GADeX,EAAc9sO,QAAQ,uBACP8sO,GAAe/pO,wBAC7CjyF,EAAOmtF,EAAKntF,KAAOxb,EAAMo0P,MAAQp0P,EAAMujM,QAAU,GAChDz3K,KAAKwrT,0BAA0Bt3U,KAAW8rB,KAAK47S,cAAgB57S,KAAKkrT,aAClElrT,KAAKorT,aAAeprT,KAAKmrT,aAAmC,IAArBnrT,KAAKmrT,cAC/Cz7T,GAAQmtF,EAAKxiG,OAEjB,IAAIT,EAAMyyU,EAAWzyU,IAAM1F,EAAMs0P,MAAQt0P,EAAMwjM,QAC/C13K,KAAKisT,gBAAgB19S,SAAS,CAC1BwpH,SAAS,EACTn+I,IAAKA,EACL8V,KAAMA,EACNrU,OAAS2kB,KAAK47S,eAAiB,EAAKvzS,EAAQu5J,aAAeyqJ,EAAWhxU,QAd1E,MAFI2kB,KAAKisT,gBAAgB19S,SAAS,CAAEwpH,SAAS,GAkBjD,EACOkrL,CACX,CA1MqC,0JCD1BqJ,EAAkB,CACzB,CAAEvuU,KAAM,sBAAuBugB,SAAU,OACzC,CAAEvgB,KAAM,qBAAsBugB,SAAU,OAKjCo5S,EAAY,CACnB,KAAQ,CACJ,CAAE35T,KAAM,8BAA+BugB,SAAU,YACjD,CAAEvgB,KAAM,iCAAkCugB,SAAU,kBACpD,CAAEvgB,KAAM,wBAAyBugB,SAAU,MAC3C,CAAEvgB,KAAM,2BAA4BugB,SAAU,OAC9C,CAAEvgB,KAAM,gCAAiCugB,SAAU,cACnD,CAAEvgB,KAAM,8BAA+BugB,SAAU,YACjD,CAAEvgB,KAAM,4BAA6BugB,SAAU,UAC/C,CAAEvgB,KAAM,+BAAgCugB,SAAU,aAClD,CAAEvgB,KAAM,6BAA8BugB,SAAU,WAChD,CAAEvgB,KAAM,gCAAiCugB,SAAU,eAEvD,QAAW,CACP,CAAEvgB,KAAM,wBAAyBugB,SAAU,MAC3C,CAAEvgB,KAAM,2BAA4BugB,SAAU,OAC9C,CAAEvgB,KAAM,yBAA0BugB,SAAU,OAC5C,CAAEvgB,KAAM,wBAAyBugB,SAAU,MAC3C,CAAEvgB,KAAM,yBAA0BugB,SAAU,OAC5C,CAAEvgB,KAAM,wBAAyBugB,SAAU,MAC3C,CAAEvgB,KAAM,4BAA6BugB,SAAU,UAC/C,CAAEvgB,KAAM,+BAAgCugB,SAAU,cAEtD,KAAQ,CACJ,CAAEvgB,KAAM,wBAAyBugB,SAAU,MAC3C,CAAEvgB,KAAM,2BAA4BugB,SAAU,OAC9C,CAAEvgB,KAAM,kCAAmCugB,SAAU,OACrD,CAAEvgB,KAAM,2BAA4BugB,SAAU,MAC9C,CAAEvgB,KAAM,4BAA6BugB,SAAU,MAC/C,CAAEvgB,KAAM,mCAAoCugB,SAAU,OACtD,CAAEvgB,KAAM,4BAA6BugB,SAAU,UAC/C,CAAEvgB,KAAM,+BAAgCugB,SAAU,cAEtD,QAAW,CACP,CAAEvgB,KAAM,wBAAyBugB,SAAU,QAMxCiuT,EAAgB,SAAUjuT,GACjC,MAAoB,WAAbA,GAAsC,cAAbA,GAAyC,YAAbA,GAAuC,eAAbA,CAC1F,EAIWq5S,EAAc,SAAU6U,EAAU/kT,GAAW,OAAO+kT,EAASvsU,KAAI,SAAUqe,GAAY,MAAQ,CACtGvgB,KAAM0pB,EAAQ+H,iBAAiBlR,EAASvgB,KAAM2xB,EAAAA,GAASpR,EAASvgB,OAChEugB,SAAUA,EAASA,SACnB,GAAI,EAQGu5S,EAAsB,CAC7B,CAAE95T,KAAM,wBAAyBugB,SAAU,IAC3C,CAAEvgB,KAAM,oBAAqBugB,UAAU,GACvC,CAAEvgB,KAAM,qBAAsBugB,UAAU,IAKjCmuT,EAA0B,CACjC1uU,MAAM,EACN0nO,SAAS,EACTlmN,MAAM,EACNywC,SAAS,GAKFo5Q,EAAkB,SAAU3jU,EAAO/L,EAAGwE,GAC7C,IAAIwuU,EAAkBC,EAAmBzuU,EAAMw5T,WAC3Cp5S,EAAWpgB,EAAMogB,SACrB,OAAQpgB,EAAMg5T,YACV,IAAK,UAUL,IAAK,OACI54S,IAAYiuT,EAAcjuT,KAC3BA,EAAWouT,GAED,OAAVjnU,GAAkB6Y,IAAaouT,IAC/BpuT,EAAW,IAEf,MACJ,IAAK,OACIA,IAAYiuT,EAAcjuT,KAC3BA,EAAWouT,GAEVjnU,GAAS6Y,IAAaouT,IACvBpuT,EAAW,IAEf,MACJ,QAAS,OAEbpgB,EAAMsH,SAAS,CAAEC,MAAOA,EAAO6Y,SAAUA,EAAU8T,eAAgB14B,GACvE,EAIWizU,EAAqB,SAAUzzP,EAAiBg+O,GACvD,OAAIA,EACOh+O,EAAgBg+O,GAAY,GAAG54S,SAG/B46D,EAAgB,GAAG56D,QAElC,EAIW64S,EAAgB,SAAUD,GACjC,OAAOA,GAAc,MACzB,EAIWoS,EAAyB,SAAUp1U,EAAOsR,GACjD,IAAIhC,EAAOtP,EAAMkmB,OAAO3U,MACxBD,EAAS,CACLC,MAAOjC,EAAK8a,SACZA,SAA4B,KAAlB9a,EAAK8a,SAAkB,GA/EL,KAgF5B8T,eAAgBl+B,EAAMk+B,gBAE9B,EAIWi3S,EAAqB,SAAUn1U,EAAOmmB,EAAc7U,GAC3D,IAAIC,EAAQ4U,EACR7W,EAAOtP,EAAMkmB,OAAO3U,MACnBvR,EAAMkmB,OAAOrnB,MAAM8T,SAGpB0lU,EAAc/oU,EAAK8a,YAEnB7Y,EAAQ,MAES,OAAjB4U,GAA0BkyT,EAAc/oU,EAAK8a,YAC7C7Y,OAAQvS,GAEZsS,EAAS,CAAEC,MAAOA,EAAO6Y,SAAU9a,EAAK8a,SAAU8T,eAAgBl+B,EAAMk+B,iBAC5E,kFCpKInM,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAgDI8oS,EAAgC,SAAUhuS,GAE1C,SAASguS,IACL,OAAkB,OAAXhuS,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAqBA,OAxBAiG,EAAUuvS,EAAgBhuS,GAO1BguS,EAAet1S,UAAUnrB,OAAS,WAC9B,IAAI+gU,EAAyB91S,KAAK9hB,MAAM43T,uBACpC8W,EAAa5sT,KAAK9hB,MAAM7I,QAAU,CAClCA,QAAS2qB,KAAK9hB,MAAM7I,SACpB,CAAC,EACDioU,EAAoB/pU,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,gBAC7DN,EAAAA,cAAoB,OAAQshB,EAAS,CAAEhhB,WAAWu7B,EAAAA,EAAAA,GAAW,SAAU,CAC/D,qBAAsBpP,KAAK9hB,MAAM43T,uBAAuB/zT,YACtD6qU,GACNr5U,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,kBAAoBmsB,KAAK9hB,MAAM8B,OAASggB,KAAK9hB,MAAMvB,OAAS,QACrGqjB,KAAK9hB,MAAMzK,UACfqiU,EAAuBf,YAAcxhU,EAAAA,cAAoBgqU,EAAAA,EAAuB1oT,EAAS,CAAC,EAAGihT,KACjG,OAAI91S,KAAK9hB,MAAMnJ,OACJirB,KAAK9hB,MAAMnJ,OAAO0xB,UAAKvzB,EAAWoqU,EAAkBt9S,KAAK9hB,OAE7Do/T,CACX,EACO9H,CACX,CA1BoC,CA0BlCjiU,EAAAA,yDCnGF,IAAIkvE,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAIWmI,EAAY,WAEnB,IADA,IAAI1kC,EAAW,GACN+Y,EAAK,EAAGA,EAAKhN,UAAU7qB,OAAQ63B,IACpC/Y,EAAS+Y,GAAMhN,UAAUgN,GAE7B,OAAO/2B,OAAO2mB,OAAOnJ,MAAMxd,OAAQ8/D,EAAc,CAAC,CAAEg0P,aAAa,EAAMl0T,KAAM,WAAaoe,GAAU,GACxG,qsCClBIsF,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAoBzCwrT,EAAyC,SAAUrlT,GAEnD,SAASqlT,IACL,OAAkB,OAAXrlT,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAQA,OAXAiG,EAAU4mT,EAAyBrlT,GAOnCqlT,EAAwB3sT,UAAUnrB,OAAS,WACvC,IAAItB,EAAWusB,KAAK9hB,MAAMzK,SAC1B,OAAQF,EAAAA,cAAoB,MAAO,CAAEH,GAAI4sB,KAAK9hB,MAAM9K,GAAIS,WAAWu7B,EAAAA,EAAAA,GAAW,4BAA6BpP,KAAK9hB,MAAMrK,WAAYH,MAAOssB,KAAK9hB,MAAMxK,OAASD,EACjK,EACOo5U,CACX,CAb6C,CAa3Ct5U,EAAAA,+BCjCE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAoBzCyrT,EAAoC,SAAUtlT,GAE9C,SAASslT,IACL,OAAkB,OAAXtlT,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAUA,OAbAiG,EAAU6mT,EAAoBtlT,GAO9BslT,EAAmB5sT,UAAUnrB,OAAS,WAClC,IAAI0C,EAAKuoB,KAAK9hB,MAAO8B,EAAQvI,EAAGuI,MAAOk5O,EAAYzhP,EAAGyhP,UAAWvgN,EAAUlhC,EAAGkhC,QAASl5B,EAAWhI,EAAGgI,SACrG,OAAQlM,EAAAA,cAAoB,MAAO,CAAE8B,QAAS2qB,KAAK9hB,MAAM7I,QAASxB,UAAW,qBAAqBqQ,OAAOzE,EAAW,aAAe,MAC9Hy5O,GAAavgN,IAAYplC,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAMojP,GAAY+B,EAAAA,EAAAA,IAAW/B,GAAaA,EAAW9jP,KAAMujC,IACrH34B,EACR,EACO8sU,CACX,CAfwC,CAetCv5U,EAAAA,8BCnCE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA6EzC0rT,EAAqC,SAAUvlT,GAE/C,SAASulT,IACL,IAAIrqT,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KA2BhE,OAvBA0C,EAAMsqT,aAAe,SAAU94U,GAE3B,GADAA,EAAM+gB,iBACFyN,EAAMxkB,MAAMg4T,cAAe,CAC3B,IAAI+W,EAAWvqT,EAAMxkB,MAAM4mN,OAC3B,IAAKmoH,EAAStwU,MACV,OAEJ,IAAIuwN,GAAYxqM,EAAMxkB,MAAMqjE,OAAS,IAAI3yD,QACrCq5T,EAAa/6G,EAAS5sI,WAAU,SAAU/e,GAAS,OAAOA,EAAM5kE,QAAUswU,EAAStwU,KAAO,IAC1FsrU,GAAc,EACd/6G,EAASppM,OAAOmkT,EAAY,GAG5B/6G,EAASlsM,KAAK,CACVrkB,MAAOswU,EAAStwU,QAGxB+lB,EAAMxkB,MAAMg4T,cAAchpG,EAAUh5N,EACxC,CACIwuB,EAAMxkB,MAAM8sU,aACZtoT,EAAMxkB,MAAM8sU,aAEpB,EACOtoT,CACX,CAYA,OA1CAuD,EAAU8mT,EAAqBvlT,GAkC/BulT,EAAoB7sT,UAAUnrB,OAAS,WACnC,IAAI0C,EAAKuoB,KAAK9hB,MAAOqjE,EAAQ9pE,EAAG8pE,MAAOujJ,EAASrtN,EAAGqtN,OAC/Cz1L,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjDktT,EAAYtiT,QAAQ22C,GAASujJ,EAAOnoN,OAAS4kE,EAAMrzD,MAAK,SAAUk9T,GAAgB,OAAOA,EAAazuU,QAAUmoN,EAAOnoN,KAAO,KAC9HgyC,EAAWu+R,EAA0BC,EAAAA,GAAdC,EAAAA,GAC3B,OAAQ75U,EAAAA,cAAoBs5U,EAAyB,KACjDt5U,EAAAA,cAAoBu5U,EAAoB,CAAE9sU,MAAOqvB,EAAoBG,iBAAiBmf,EAASjf,EAAAA,GAASif,IAAWuqM,UAAYg0F,EAA0B,cAAd,YAA6Bv0S,QAAUu0S,EAAwBG,EAAAA,IAAZC,EAAAA,IAAyBj4U,QAAS2qB,KAAKgtT,eAC7O,EACOD,CACX,CA5CyC,CA4CvCx5U,EAAAA,YAEFg5B,EAAAA,EAAAA,IAAgBwgT,IAChBr8S,EAAAA,EAAAA,IAAwBq8S,iBC5HpB9mT,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA6BzCksT,EAAW,OAIXnZ,EAAa,CACbC,KAAM,CACF,IAAO,CAAE,IAAO,GAAI,KAAQ,QAC5B,KAAQ,CAAE,IAAO,MAAO,KAAQ,IAChC,GAAI,CAAE,IAAO,MAAO,KAAQ,SAEhCC,MAAO,CACH,IAAO,CAAE,IAAO,MAAO,KAAQ,QAC/B,KAAQ,CAAE,IAAO,MAAO,KAAQ,QAChC,GAAI,CAAE,IAAO,MAAO,KAAQ,UAMhCO,EAAY,SAAUl4T,EAAOmhB,GAC7B,OAAKA,EAGEA,EAAKwiE,WAAU,SAAU7zD,GAAK,OAAOA,EAAE9vB,QAAUA,CAAO,KAFnD,CAGhB,EAII6wU,EAAY,SAAUC,EAAa3vT,GACnC,SAAUA,GAAQ2vT,GAAe,GAjCvB,QAiC4B3vT,EAAK2vT,GAAa9xT,IAC5D,EAII+xT,EAAa,SAAUD,EAAa3vT,GACpC,SAAUA,GAAQ2vT,GAAe,GAAK3vT,EAAK2vT,GAAa9xT,MAAQ4xT,EACpE,EAwDII,EAAoC,SAAUnmT,GAE9C,SAASmmT,IACL,IAAIjrT,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAsChE,OAlCA0C,EAAMkrT,WAAa,SAAU15U,GACzBwuB,EAAMmrT,OAAO35U,EAxGX,OAyGEwuB,EAAMxkB,MAAM8sU,aACZtoT,EAAMxkB,MAAM8sU,aAEpB,EAIAtoT,EAAMorT,YAAc,SAAU55U,GAC1BwuB,EAAMmrT,OAAO35U,EAAOq5U,GAChB7qT,EAAMxkB,MAAM8sU,aACZtoT,EAAMxkB,MAAM8sU,aAEpB,EAIAtoT,EAAMmrT,OAAS,SAAU35U,EAAO65U,GAE5B,GADA75U,EAAM+gB,iBACDyN,EAAMxkB,MAAM6f,aAAjB,CAGA,IAAItmB,EAAKirB,EAAMxkB,MAAO4mN,EAASrtN,EAAGqtN,OAAQ/iN,EAAWtK,EAAGsK,SAAU+b,EAAOrmB,EAAGqmB,KACxEjmB,GAAKwtD,EAAAA,EAAAA,GAAUtjD,IAAY,GAAO,GAAQ00T,EAAc5+T,EAAG4+T,YAAal0T,EAAO1K,EAAG0K,KAClFm0T,GAAiB54S,GAAQ,IAAIhb,QAAO,SAAUqjB,GAAK,OAAOA,EAAExpB,QAAUmoN,EAAOnoN,KAAO,IAAG,GACvFgf,EAAMy4S,EAAWqC,GAAaC,GAAiBA,EAAc/6S,KAAO,IAAIoyT,GACxEpX,EAA0B,WAATp0T,EACjB,IAAMmgB,EAAMxkB,MAAM4f,MAAQ,IAAIhb,QAAO,SAAUqjB,GAAK,OAAOA,EAAExpB,QAAUmoN,EAAOnoN,KAAO,IAC7E,KAARgf,GAAcmpM,EAAOnoN,OACrBg6T,EAAc31S,KAAK,CAAErkB,MAAOmoN,EAAOnoN,MAAOgf,IAAKA,IAEnD+G,EAAMxkB,MAAM6f,aAAa44S,EAAeziU,EAVxC,CAWJ,EACOwuB,CACX,CAqBA,OA9DAuD,EAAU0nT,EAAoBnmT,GA6C9BmmT,EAAmBztT,UAAUnrB,OAAS,WAClC,IAAI0C,EAAKuoB,KAAK9hB,MAAO4f,EAAOrmB,EAAGqmB,KAAMgnM,EAASrtN,EAAGqtN,OAC7CkpH,EAAmBnZ,EAAU/vG,EAAOnoN,MAAOmhB,GAC3CuR,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACrD,OAAQzsB,EAAAA,cAAoBs5U,EAAyB,KACjDt5U,EAAAA,cAAoBu5U,EAAoB,CAAE9sU,MAAOqvB,EAAoBG,iBAAiBy+S,EAAAA,GAAev+S,EAAAA,GAASu+S,EAAAA,KAAiB/0F,UAAW,kBAAmBvgN,QAASi+R,EAAAA,IAAkBn3T,SAAU+tU,EAAUQ,EAAkBlwT,GAAOzoB,QAAS2qB,KAAK4tT,aACnPr6U,EAAAA,cAAoBu5U,EAAoB,CAAE9sU,MAAOqvB,EAAoBG,iBAAiB0+S,EAAAA,GAAgBx+S,EAAAA,GAASw+S,EAAAA,KAAkBh1F,UAAW,mBAAoBvgN,QAASk+R,EAAAA,IAAmBp3T,SAAUiuU,EAAWM,EAAkBlwT,GAAOzoB,QAAS2qB,KAAK8tT,cAChQ,EAMAH,EAAmBxyU,OAAS,SAAUwB,EAAOmhB,GACzC,IAAIkwT,EAAmBnZ,EAAUl4T,EAAOmhB,GACxC,OAAO4vT,EAAWM,EAAkBlwT,IAAS0vT,EAAUQ,EAAkBlwT,EAC7E,EACO6vT,CACX,CAhEwC,CAgEtCp6U,EAAAA,YAEFg5B,EAAAA,EAAAA,IAAgBohT,IAChBj9S,EAAAA,EAAAA,IAAwBi9S,2BC5LpB1nT,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAqBzC8sT,EAA2C,SAAU3mT,GAErD,SAAS2mT,IACL,OAAkB,OAAX3mT,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAQA,OAXAiG,EAAUkoT,EAA2B3mT,GAOrC2mT,EAA0BjuT,UAAUnrB,OAAS,WACzC,OAAQxB,EAAAA,cAAoB,MAAO,CAAEH,GAAI4sB,KAAK9hB,MAAM9K,GAAIS,WAAWu7B,EAAAA,EAAAA,GAAW,4BAA6BpP,KAAK9hB,MAAMrK,WAAYH,MAAOssB,KAAK9hB,MAAMxK,OAChJH,EAAAA,cAAoB+kP,EAAAA,EAAQ,CAAE5kP,MAAO,CAAEiG,SAAU,WAAYiqG,QAAS,UAAa5jF,KAAK9hB,MAAMgsB,KAAOlK,KAAK9hB,MAAMzK,SAAW,MACnI,EACO06U,CACX,CAb+C,CAa7C56U,EAAAA,2DClCE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAuBzC+sT,EAA0C,SAAU5mT,GAEpD,SAAS4mT,EAAyBlwU,GAC9B,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAWxC,OAVA0C,EAAMkmT,qBAAuB,WACzB,GAA+B,YAA3BlmT,EAAMxkB,MAAMg5T,WAAhB,CAGA,IAAIzxT,EAAQid,EAAMxkB,MAAMw5T,UAAUxpT,MAAK,SAAU1K,GAAQ,OAAOA,EAAK8a,WAAaoE,EAAMxkB,MAAMogB,QAAU,KAAM,KAC9G,OAAQ/qB,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAE9U,MAAOA,EAAOD,SAAUkd,EAAMmmT,eAAgBtwU,KAAMmqB,EAAMxkB,MAAMw5T,UAAW7xT,UAAW,QAFlI,CAGJ,EACA6c,EAAM8lT,YAAc9lT,EAAM8lT,YAAY35S,KAAKnM,GAC3CA,EAAMmmT,eAAiBnmT,EAAMmmT,eAAeh6S,KAAKnM,GACjDA,EAAMsmT,mBAAqBtmT,EAAMsmT,mBAAmBn6S,KAAKnM,GAClDA,CACX,CA+BA,OA7CAuD,EAAUmoT,EAA0B5mT,GAkBpC4mT,EAAyBluT,UAAUnrB,OAAS,WACxC,OAAQxB,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCysB,KAAK4oT,uBACL5oT,KAAKipT,gBAAgBjpT,KAAK9hB,MAAMg5T,WAAYl3S,KAAK9hB,MAAMuH,MAAOua,KAAK9hB,MAAM05T,eACjF,EACAwW,EAAyBluT,UAAUsoT,YAAc,SAAU/iU,EAAO/L,IAC9D0vU,EAAAA,EAAAA,IAAgB3jU,EAAO/L,EAAGsmB,KAAK9hB,MACnC,EACAkwU,EAAyBluT,UAAU2oT,eAAiB,SAAU30U,IAC1Dm1U,EAAAA,EAAAA,IAAmBn1U,EAAO8rB,KAAK9hB,MAAMuH,MAAOua,KAAK9hB,MAAMsH,SAC3D,EACA4oU,EAAyBluT,UAAU8oT,mBAAqB,SAAU90U,IAC9Do1U,EAAAA,EAAAA,IAAuBp1U,EAAO8rB,KAAK9hB,MAAMsH,SAC7C,EACA4oU,EAAyBluT,UAAU+oT,gBAAkB,SAAU/R,EAAYzxT,EAAOmyT,GAC9E,IAAIl1S,EAAQ1C,KACZ,OAAQk3S,GACJ,IAAK,UACD,OAAQ3jU,EAAAA,cAAoBkoE,EAAAA,EAAgB,CAAEh2D,MAAOA,EAAOD,SAAU,SAAU9L,GAAKgpB,EAAM8lT,YAAY9uU,EAAE+L,MAAO/L,EAAE04B,eAAiB,EAAGi8S,cAAc,IACxJ,IAAK,OACD,OAAQ96U,EAAAA,cAAoB6pE,EAAAA,GAAY,CAAE33D,MAAOA,EAAOD,SAAU,SAAU9L,GAAKgpB,EAAM8lT,YAAY9uU,EAAE+L,MAAO/L,EAAE04B,eAAiB,IACnI,IAAK,UAED,OAAQ7+B,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAE/U,SAAUwa,KAAKgpT,mBAAoBvjU,MAAOmyT,EAAc1pT,MAAK,SAAU1K,GAAQ,OAAOA,EAAK8a,YAD7E,QAA5Bxb,EACqI2C,SADtFvS,IAAX4P,EAC0G,GAAK2C,GAD7J,IAAU3C,CAC2J,IAAIvK,KAAMq/T,EAAe/xT,UAAW,SACjO,QAAS,OAAQtS,EAAAA,cAAoBkI,EAAAA,GAAO,CAAEgK,MAAOA,GAAS,GAAID,SAAU,SAAU9L,GAAKgpB,EAAM8lT,YAAY9uU,EAAE0gB,OAAO3U,MAAO/L,EAAE04B,eAAiB,IAExJ,EACOg8S,CACX,CA/C8C,CA+C5C76U,EAAAA,WCtEE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAOI4hT,EAAwC,SAAU9mT,GAElD,SAAS8mT,IACL,OAAkB,OAAX9mT,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CASA,OAZAiG,EAAUqoT,EAAwB9mT,GAIlC8mT,EAAuBpuT,UAAUnrB,OAAS,WACtC,IAAI0C,EAAKuoB,KAAK9hB,MAAOqwU,EAAmB92U,EAAG82U,iBAAkBC,EAAmB/2U,EAAG+2U,iBAAkBC,EAAoBh3U,EAAGg3U,kBAAmBC,EAAYj3U,EAAGi3U,UAAWC,EAAal3U,EAAGk3U,WAAYC,EAAgBn3U,EAAGm3U,cACxN,OAAQr7U,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB66U,EAA0Bv5T,EAAS,CAAC,EAAG05T,KAC1DC,GAAqBj7U,EAAAA,cAAoBA,EAAAA,SAAgB,KACtDA,EAAAA,cAAoBgnB,EAAAA,GAAc,CAAEhiB,KAAMm2U,EAAWjpU,MAAOkpU,EAAYnpU,SAAUopU,EAAe/6U,UAAW,eAAgBgS,UAAW,SACvItS,EAAAA,cAAoB66U,EAA0Bv5T,EAAS,CAAC,EAAG45T,KACvE,EACOH,CACX,CAd4C,CAc1C/6U,EAAAA,qBC9CE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAeW2xR,EAAsB,SAAUC,GACvC,OAAQA,GAAc,CAAE/yT,QAAS,GAAID,MAAO,MAChD,EAIWizT,EAAqB,SAAUpyU,EAAOmG,GAY7C,OAXiB+rU,EAAoB/rU,GACHiZ,QAC7BjZ,QAAO,SAAUitB,GAClB,SAAIgkD,EAAAA,EAAAA,6BAA4BhkD,KACrBA,EAAEhU,SACLgU,EAAEhU,QAAQla,QACVkuB,EAAEhU,QAAQla,QAAU,IACnBkuB,EAAEhU,QAAQ7N,MAAK,SAAU8gU,GAAM,OAAOj7P,EAAAA,EAAAA,6BAA4Bi7P,IAAOA,EAAGryU,QAAUA,CAAO,IAG1G,IACwB,IAAM,IAClC,EAyDIsyU,EAAsC,SAAUznT,GAEhD,SAASynT,EAAqB/wU,GAC1B,IAkJIgxU,EAlJAxsT,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAmJxC,GA/IA0C,EAAMysT,YAAc,SAAU5tQ,EAAOutQ,GACjC,IAAI/yT,EAAU0mD,EAAc,GAAIqsQ,EAAW/yT,SAAS,GAChDksT,EAAalsT,EACZukE,WAAU,SAAUvwD,GAAK,OAAOA,IAAMwxC,CAAO,IAIlD,OAHI0mQ,GAAc,GACdlsT,EAAQ+H,OAAOmkT,EAAY,GAExBpzT,EAASA,EAAS,CAAC,EAAGi6T,GAAa,CAAE/yT,QAASA,GACzD,EAIA2G,EAAM0sT,YAAc,SAAU7tQ,EAAOutQ,GACjC,OAAOj6T,EAASA,EAAS,CAAC,EAAGi6T,GAAa,CAAE/yT,QAAS0mD,EAAc,CAC3DlB,GACDutQ,EAAW/yT,SAAS,IAC/B,EAIA2G,EAAMg3C,aAAe,WAAc,YAAgCxmE,IAAzBwvB,EAAMxkB,MAAMqkE,QAAwB,EAI9E7/C,EAAM2sT,eAAiB,WACnB,IAAI31Q,EAAeh3C,EAAMg3C,eACrB39B,IAAc29B,EAAeh3C,EAAMxkB,MAAMqkE,SAAW7/C,EAAM3vB,MAAMwvE,UAChE7/C,EAAMxkB,MAAMmkE,gBACZ3/C,EAAMxkB,MAAMmkE,eAAetmC,GAE1B29B,GACDh3C,EAAM6L,SAAS,CACXg0C,SAAUxmC,GAGtB,EAIArZ,EAAM4sT,kBAAoB,SAAUp7U,GAChCwuB,EAAMszS,aAAa,EAAG9hU,EAC1B,EAIAwuB,EAAM6sT,mBAAqB,SAAUr7U,GACjCwuB,EAAMszS,aAAa,EAAG9hU,EAC1B,EAIAwuB,EAAMszS,aAAe,SAAUwZ,EAAa91U,GACxC,IAAIqiB,EAAU2G,EAAM3vB,MAAMm8U,YAAYnzT,QAAQ9b,KAAI,SAAU8vB,EAAG7vB,GAC3D,OAAIA,IAAMsvU,EACC36T,EAASA,EAAS,CAAC,EAAGkb,GAAI,CAAEtqB,MAAO/L,EAAE+L,MAAO6Y,SAAU5kB,EAAE4kB,WAE5DyR,CACX,IACArN,EAAM6L,SAAS,CACX2gT,YAAar6T,EAASA,EAAS,CAAC,EAAG6N,EAAM3vB,MAAMm8U,aAAc,CAAEnzT,QAASA,KAEhF,EAIA2G,EAAM+sT,YAAc,SAAUv7U,GAC1BwuB,EAAM6L,SAAS,CACX2gT,YAAar6T,EAASA,EAAS,CAAC,EAAG6N,EAAM3vB,MAAMm8U,aAAc,CAAEpzT,MAAO5nB,EAAMkmB,OAAO3U,MAAM6Y,YAEjG,EAIAoE,EAAM69B,MAAQ,SAAUrsD,GAEpB,GADAA,EAAM+gB,iBACDyN,EAAMxkB,MAAM+a,eAAjB,CAGA,IAAItc,EAAQ+lB,EAAMxkB,MAAM4mN,OAAOnoN,MAC3BmyU,EAAaD,EAAoBnsT,EAAMxkB,MAAM4E,QAC7CosU,EAAcH,EAAmBpyU,EAAO+lB,EAAMxkB,MAAM4E,QACpD4sU,EAAcZ,EAAW/yT,QAAQjZ,QAAO,SAAUitB,GAAK,OAAOA,IAAMm/S,CAAa,IAChFQ,EAAY7tU,OAIb6gB,EAAMxkB,MAAM+a,eAAepE,EAASA,EAAS,CAAC,EAAGi6T,GAAa,CAAE/yT,QAAS2zT,IAAgBx7U,GAHzFwuB,EAAMxkB,MAAM+a,eAAe,KAAM/kB,GAKjCwuB,EAAMxkB,MAAM8sU,aACZtoT,EAAMxkB,MAAM8sU,aAZhB,CAcJ,EAIAtoT,EAAMitT,mBAAqB,WACvB,OAAO96T,EAASA,EAAS,CAAC,EAAG6N,EAAM3vB,MAAMm8U,aAAc,CAAEnzT,QAAS2G,EAAM3vB,MAC/Dm8U,YACAnzT,QACAjZ,QAAO,SAAUksU,GAClB,YAAqB97U,IAAb87U,EAAGvpU,OAAoC,OAAbupU,EAAGvpU,OAA+B,KAAbupU,EAAGvpU,OACxC,OAAbupU,EAAGvpU,OAAkBupU,EAAG1wT,QACjC,KACR,EAIAoE,EAAMquM,OAAS,SAAU78N,GAErB,GADAA,EAAM+gB,iBACDyN,EAAMxkB,MAAM+a,eAAjB,CAGA,IAAItc,EAAQ+lB,EAAMxkB,MAAM4mN,OAAOnoN,MAC3BmyU,EAAaD,EAAoBnsT,EAAMxkB,MAAM4E,QAC7CosU,EAAcH,EAAmBpyU,EAAO+lB,EAAMxkB,MAAM4E,QACpD6sU,EAAqBjtT,EAAMitT,qBAC3BC,EAAgB,KACpB,GAAIV,GAAeS,EAAmB5zT,QAAQla,OAAS,EAAG,CACtD,IAAI6tU,EAAcZ,EAAW/yT,QAAQ9b,KAAI,SAAU8vB,GAC/C,OAAIA,IAAMm/S,EACCS,EAEJ5/S,CACX,IACA6/S,EAAgB/6T,EAASA,EAAS,CAAC,EAAGi6T,GAAa,CAAE/yT,QAAS2zT,GAClE,MACK,GAA0C,IAAtCC,EAAmB5zT,QAAQla,OAAc,EAC1C6tU,EAAcZ,EACb/yT,QACAjZ,QAAO,SAAUitB,GAAK,OAAOA,IAAMm/S,CAAa,KACrCrtU,SACZ+tU,EAAgB/6T,EAASA,EAAS,CAAC,EAAGi6T,GAAa,CAAE/yT,QAAS2zT,IAEtE,MAEIE,EAAgB/6T,EAASA,EAAS,CAAC,EAAGi6T,GAAa,CAAE/yT,QAAS0mD,EAAcA,EAAc,GAAIqsQ,EAAW/yT,SAAS,GAAO,CAAC4zT,IAAqB,KAEnJjtT,EAAMxkB,MAAM+a,eAAe22T,EAAe17U,GACtCwuB,EAAMxkB,MAAM8sU,aACZtoT,EAAMxkB,MAAM8sU,aA5BhB,CA8BJ,EAEI9sU,EAAM4mN,QAAU5mN,EAAM4mN,OAAOnoN,MAAO,CACpC,IAAIu6T,GAAaC,EAAAA,EAAAA,IAAcj5T,EAAM4mN,OAAOhiN,QACxC4pU,GAAkBC,EAAAA,EAAAA,IAAmBzuU,EAAMg7E,gBAAiBg+O,GAWmC,KATnGgY,GADAA,EAAcH,EAAmB7wU,EAAM4mN,OAAOnoN,MAAOuB,EAAM4E,SAC/B+R,EAASA,EAAS,CAAC,EAAGq6T,GAAc,CAAEnzT,QAASmzT,EAAYnzT,QAAQ9b,KAAI,SAAU8vB,GACrG,OAAOlb,EAAS,CAAC,EAAGkb,EACxB,MAAQ,CACRjU,MAAO,MACPC,QAAS,CACL,CAAEpf,MAAOuB,EAAM4mN,OAAOnoN,MAAO2hB,SAAUouT,EAAiBjnU,OAAO8mU,EAAAA,EAAAA,IAAcG,GAAmB,UAAOx5U,GACvG,CAAEyJ,MAAOuB,EAAM4mN,OAAOnoN,MAAO2hB,SAAUouT,EAAiBjnU,OAAO8mU,EAAAA,EAAAA,IAAcG,GAAmB,UAAOx5U,MAG/F6oB,QAAQjZ,QAAO,SAAUqnE,GAAK,OAAOA,EAAExtE,QAAUuB,EAAM4mN,OAAOnoN,KAAO,IAAGkF,QACpFqtU,EAAYnzT,QAAQ+H,OAAO,EAAG,EAAG,CAAEnnB,MAAOuB,EAAM4mN,OAAOnoN,MAAO2hB,SAAUouT,GAEhF,CAKA,OAJAhqT,EAAM3vB,MAAQ,CACVwvE,SAAUrkE,EAAMqkE,WAAY,EAC5B2sQ,YAAaA,GAEVxsT,CACX,CA4EA,OAvPAuD,EAAUgpT,EAAsBznT,GA+KhCynT,EAAqB/uT,UAAUnrB,OAAS,WACpC,IAAI0C,EAAKuoB,KAAK9hB,MAAO4mN,EAASrtN,EAAGqtN,OAAQ+qH,EAAWp4U,EAAGo4U,SAAUrB,EAAmB/2U,EAAG+2U,iBAAkBt1P,EAAkBzhF,EAAGyhF,gBAC9H,IAAK4rI,IAAWA,EAAOnoN,MACnB,OAAOpJ,EAAAA,cAAoB,MAAO,MAEtC,IAAI2jU,GAAaC,EAAAA,EAAAA,IAAcryG,EAAOhiN,QAClCgtU,OAA+C58U,IAArBs7U,EAC1BA,EAAmB/B,EAAAA,GAAwBvV,GAC3C7nS,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjDjE,EAAUiE,KAAKjtB,MAAMm8U,YAAYnzT,QACjCg0T,GAAmBpY,EAAAA,EAAAA,IAAYz+O,EAAgBg+O,GAAa7nS,GAC5DuoS,GAAgBD,EAAAA,EAAAA,IAAYE,EAAAA,GAAqBxoS,GACjD2gT,EAAuB,CACvBrzU,MAAOmoN,EAAOnoN,MACd8I,MAAOsW,EAAQ,GAAGtW,MAClB6Y,SAAUvC,EAAQ,GAAGuC,SACrBo5S,UAAWqY,EACXnY,cAAeA,EACfpyT,SAAUwa,KAAKsvT,kBACfpY,WAAYA,GAEZ+Y,EAAwB,CACxBtzU,MAAOmoN,EAAOnoN,MACd8I,MAAOsW,EAAQ,GAAGtW,MAClB6Y,SAAUvC,EAAQ,GAAGuC,SACrBo5S,UAAWqY,EACXnY,cAAeA,EACfpyT,SAAUwa,KAAKuvT,mBACfrY,WAAYA,GAEZgZ,EAAclwT,KAAKjtB,MAAMm8U,YAAYpzT,MACrC4yT,GAAY/W,EAAAA,EAAAA,IAAY2U,EAAAA,GAAiBj9S,GACzC8gT,EAAa,CACb1qU,MAAOipU,EAAUxgU,MAAK,SAAU1K,GAAQ,OAAOA,EAAK8a,YAA8B,OAAhB4xT,EAAuB,GAAKA,EAAc,IAC5G1qU,SAAUwa,KAAKyvT,YACfl3U,KAAMm2U,GAEN0B,EAAWP,EACXQ,EAAgB,CAChB9B,iBAAkByB,EAClBvB,kBAAmBwB,EACnBvB,UAAWyB,EAAW53U,KACtBo2U,WAAYwB,EAAW1qU,MACvBmpU,cAAeuB,EAAW3qU,SAC1BgpU,iBAAkBsB,GAElBQ,EAA6D,IAA7CtwT,KAAK2vT,qBAAqB5zT,QAAQla,SAClD0qU,EAAAA,EAAAA,IAAcxwT,EAAQ,GAAGuC,YACzBiuT,EAAAA,EAAAA,IAAcxwT,EAAQ,GAAGuC,UACzBiyT,EAAcvwT,KAAK05C,eAAiB15C,KAAK9hB,MAAMqkE,SAAWviD,KAAKjtB,MAAMwvE,SACrEiuQ,EAAexwT,KAAK9hB,MAAMsyU,aAC9B,OAAQj9U,EAAAA,cAAoBs5U,EAAyB,MAChD2D,GAAgBj9U,EAAAA,cAAoBu5U,EAAoB,CAAE9sU,MAAOqvB,EAAoBG,iBAAiBioS,EAAAA,GAAa/nS,EAAAA,GAAS+nS,EAAAA,KAAev+E,UAAW,aAAcvgN,QAASmwS,EAAAA,IAAYzzU,QAAS2qB,KAAKqvT,iBACxM97U,EAAAA,cAAoB46U,EAA2B,CAAEjkT,KAAMsmT,KAAkBD,GACrEh9U,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oCACpCN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,kDAAmDyB,SAAU0qB,KAAK+wM,OAAQk5F,QAASjqS,KAAKugC,MAAO90B,UAAW,SAAU/xB,GAAK,OAAOA,EAAE84B,iBAAmB,GAC1Lj/B,EAAAA,cAAoB,MAAO,CAAEM,UAAW,2BACpCu8U,EACI78U,EAAAA,cAAoB68U,EAAUv7T,EAAS,CAAC,EAAGw7T,IAC3C98U,EAAAA,cAAoB+6U,EAAwBz5T,EAAS,CAAC,EAAGw7T,IAC7D98U,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iCACpCN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAE4E,WAAY,UAAWG,UAAWo2U,GAAiBjhT,EAAoBG,iBAAiBihT,EAAAA,GAAoB/gT,EAAAA,GAAS+gT,EAAAA,MACnJl9U,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEqE,KAAM,SAAW61B,EAAoBG,iBAAiB25S,EAAAA,GAAmBz5S,EAAAA,GAASy5S,EAAAA,WAC5I,EAMA8F,EAAqB9zU,OAAS,SAAUwB,EAAOmG,GAC3C,QAASisU,EAAmBpyU,EAAOmG,EACvC,EACOmsU,CACX,CAzP0C,CAyPxC17U,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBu+S,mCCxXpBhpT,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAsBIwzR,GAA8C,SAAUlpT,GAExD,SAASkpT,EAA6BxyU,GAClC,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA8LxC,OA1LA0C,EAAMiuT,cAAgB,WAClB,OAAIjuT,EAAMxkB,MAAM4E,QACL2c,EAAAA,EAAAA,IAAMiD,EAAMxkB,MAAM4E,QAEtB,CAAEiZ,QAAS,GAAID,MAAO,MACjC,EAIA4G,EAAMg3C,aAAe,WAAc,YAAgCxmE,IAAzBwvB,EAAMxkB,MAAMqkE,QAAwB,EAI9E7/C,EAAMkuT,UAAY,SAAU7wP,EAAc8wP,GACtC,IAAIl0U,EAAQ+lB,EAAMxkB,MAAM4mN,OAAOnoN,OAAS,GACpCpE,EAAOwnF,EAAa9/E,KAAI,SAAUuD,GAAQ,OAAO2yP,EAAAA,EAAAA,IAAex5P,EAAO6G,EAAO,IAClF,OAAIqtU,EACOt4U,EAAKuK,QAAO,SAAUU,EAAMoR,GAAS,OAAOrc,EAAK0iC,QAAQz3B,KAAUoR,CAAO,IAE9Erc,CACX,EAIAmqB,EAAMouT,eAAiB,WACnB,IAAIn0U,EAAQ+lB,EAAMxkB,MAAM4mN,OAAOnoN,MAK/B,OAJoB+lB,EAAMiuT,gBACe50T,QAAQukE,WAAU,SAAUx9E,GACjE,OAAOA,EAAOiZ,SAAWjZ,EAAOiZ,QAAQla,OAAS,GAAKiB,EAAOiZ,QAAQ,GAAGpf,QAAUA,CACtF,GAEJ,EAIA+lB,EAAM2sT,eAAiB,WACnB,IAAI31Q,EAAeh3C,EAAMg3C,eACrB39B,IAAc29B,EAAeh3C,EAAMxkB,MAAMqkE,SAAW7/C,EAAM3vB,MAAMwvE,UAChE7/C,EAAMxkB,MAAMmkE,gBACZ3/C,EAAMxkB,MAAMmkE,eAAetmC,GAE1B29B,GACDh3C,EAAM6L,SAAS,CACXg0C,SAAUxmC,GAGtB,EAIArZ,EAAMquT,mBAAqB,SAAUr3U,GACjC,IAAIs3U,EAAiBtuT,EAAMxkB,MAAM+yU,wBAA0BvuT,EAAMxkB,MAAM+yU,wBAA0B,aAC7FC,EAAmB,CACnBp1T,MAAO,MACPC,QAAS,CACL,CAAEpf,MAAO+lB,EAAMxkB,MAAM4mN,OAAOnoN,MAAO2hB,SAAU0yT,EAAgBvrU,MAAO/L,EAAE0gB,OAAO3U,MAAO6vE,YAAY,KAGxG5yD,EAAM6L,SAAS,CACX9oB,MAAO/L,EAAE0gB,OAAO3U,MAChBlN,KAAMmqB,EAAMkuT,WAAU13T,EAAAA,EAAAA,UAASwJ,EAAMxkB,MAAM3F,MAAQ,GAAI24U,GAAmBxuT,EAAMxkB,MAAMizU,aAE9F,EAIAzuT,EAAM0uT,YAAc,WAChB,IAAIJ,EAAiBtuT,EAAMxkB,MAAM+yU,wBAA0BvuT,EAAMxkB,MAAM+yU,wBAA0B,aAC7FC,EAAmB,CACnBp1T,MAAO,MACPC,QAAS,CACL,CAAEpf,MAAO+lB,EAAMxkB,MAAM4mN,OAAOnoN,MAAO2hB,SAAU0yT,EAAgBvrU,MAAO,GAAI6vE,YAAY,KAG5F5yD,EAAM6L,SAAS,CACX9oB,MAAO,GACPlN,KAAMmqB,EAAMkuT,WAAU13T,EAAAA,EAAAA,UAASwJ,EAAMxkB,MAAM3F,MAAQ,GAAI24U,GAAmBxuT,EAAMxkB,MAAMizU,aAE9F,EAIAzuT,EAAM69B,MAAQ,SAAU7mD,GAEpB,GADAA,EAAEub,iBACGyN,EAAMxkB,MAAM+a,eAAjB,CAGA,IAAI22T,EAAgBltT,EAAM3vB,MAAMs+U,eAAiB,KAC3B,OAAlBzB,GAA0BA,EAAc7zT,QAAQla,OAAS,GACrD6gB,EAAM4uT,sBAAwB,GAC9B1B,EAAc7zT,QAAQ+H,OAAOpB,EAAM4uT,qBAAsB,GAE7D5uT,EAAMxkB,MAAM+a,eAAe22T,EAAel2U,IAG1CgpB,EAAMxkB,MAAM+a,eAAe,KAAMvf,GAEjCgpB,EAAMxkB,MAAM8sU,aACZtoT,EAAMxkB,MAAM8sU,aAZhB,CAcJ,EAIAtoT,EAAMquM,OAAS,SAAUr3N,GAErB,GADAA,EAAEub,iBACGyN,EAAMxkB,MAAM+a,eAAjB,CAGA,IAAI22T,EAAgBltT,EAAM3vB,MAAMs+U,eAAiB,KACjD3uT,EAAMxkB,MAAM+a,eAAe22T,EAAel2U,GACtCgpB,EAAMxkB,MAAM8sU,aACZtoT,EAAMxkB,MAAM8sU,aAJhB,CAMJ,EAIAtoT,EAAM6uT,qBAAuB,SAAU73U,EAAG+L,GACtC,IAAI9I,EAAQ+lB,EAAMxkB,MAAM4mN,OAAOnoN,OAAS,GACpC60U,EAAY38T,EAAS,CAAC,EAAG6N,EAAM3vB,MAAMs+U,eACrCt1T,EAAU0mD,EAAc,GAAI//C,EAAM3vB,MAAMs+U,cAAct1T,SAAS,IAAS,GACxE01T,EAAe,GAInB,IAHoC,IAAhC/uT,EAAM4uT,sBAA+BE,EAAUz1T,QAAQ2G,EAAM4uT,sBAAsBv1T,SAAqB,QAAVtW,IAC9FgsU,EAAeD,EAAUz1T,QAAQ2G,EAAM4uT,sBAAsBv1T,SAE7DriB,EAAE+L,OAAmB,QAAVA,EACXid,EAAM3vB,MAAMwF,KAAKoW,SAAQ,SAAUnL,GAC/BiuU,EAAazwT,KAAK,CAAErkB,MAAOA,EAAO2hB,SAAU,KAAM7Y,MAAOjC,GAC7D,SAEC,GAAI9J,EAAE+L,MACPgsU,EAAazwT,KAAK,CAAErkB,MAAOA,EAAO2hB,SAAU,KAAM7Y,MAAOA,SAExD,GAAIid,EAAM3vB,MAAMs+U,cAAe,CAChC,IAAIz8T,EAAQ68T,EAAanxP,WAAU,SAAUx9E,GAAU,OAAOA,EAAO2C,QAAUA,CAAO,IACtFgsU,EAAa3tT,OAAOlP,EAAO,EAC/B,CACA48T,EAAU11T,MAAQ,OACkB,IAAhC4G,EAAM4uT,qBACNv1T,EAAQ2G,EAAM4uT,sBAAwB,CAClCx1T,MAAO,KACPC,QAAS01T,GAIb11T,EAAQiF,KAAK,CACTlF,MAAO,KACPC,QAAS01T,MAGZ/3U,EAAE+L,OAAmB,QAAVA,GAA2C,IAAxBgsU,EAAa5vU,SAC5Cka,EAAQ+H,OAAOpB,EAAM4uT,qBAAsB,GAE/CE,EAAUz1T,QAAUA,EACpB2G,EAAM6L,SAAS,CAAE8iT,cAAeG,GACpC,EAIA9uT,EAAMgvT,cAAgB,WAClB,IAAIC,GAAe,EACnB,GAAIjvT,EAAM3vB,MAAMs+U,cAAe,CAC3B,IAAIO,EAAYnvQ,EAAc,GAAI//C,EAAM3vB,MAAMs+U,cAAct1T,SAAS,GACrE,OAAoC,IAAhC2G,EAAM4uT,uBAGVK,EAAejvT,EAAM3vB,MAAMwF,KAAKq7K,OAAM,SAAUpwK,GAC5C,SAAoC,IAAhCkf,EAAM4uT,uBAA+BM,EAAUlvT,EAAM4uT,sBAAsBv1T,UAC/D61T,EAAUlvT,EAAM4uT,sBAAsBv1T,QAAQukE,WAAU,SAAUx9E,GAAU,OAAOA,EAAO2C,QAAUjC,CAAM,KACtG,CAGxB,IAEJ,CACA,OAAOmuU,CACX,EACAjvT,EAAM4uT,qBAAuB5uT,EAAMouT,iBACnCpuT,EAAM3vB,MAAQ,CACVwvE,SAAUrkE,EAAMqkE,WAAY,EAC5B98D,MAAO,GACPlN,KAAMmqB,EAAMkuT,UAAUluT,EAAMxkB,MAAM3F,KAAMmqB,EAAMxkB,MAAMizU,aAAe,GACnEU,cAAenvT,EAAMkuT,UAAUluT,EAAMxkB,MAAM3F,MAAM,IAAU,GAC3D84U,cAAe3uT,EAAMiuT,iBAElBjuT,CACX,CA0EA,OA3QAuD,EAAUyqT,EAA8BlpT,GAqMxCkpT,EAA6BxwT,UAAU8K,mBAAqB,WACxD,IA7MqB8mT,EAAYC,EA6M7Bp1U,EAAQqjB,KAAK9hB,MAAM4mN,OAAOnoN,OAAS,GACnCpE,EAAOynB,KAAK9hB,MAAM3F,KAAK0H,KAAI,SAAUuD,GAAQ,OAAO2yP,EAAAA,EAAAA,IAAex5P,EAAO6G,EAAO,IA9MhEsuU,EA+MHv5U,EA/Mew5U,EA+MT/xT,KAAKjtB,MAAM8+U,cA9MnCC,EAAWjwU,SAAWkwU,EAAYlwU,QAG/BiwU,EAAWl+J,OAAM,SAAUlzE,EAAIxgG,GAAK,OAAOwgG,IAAOqxO,EAAY7xU,EAAI,KA4MjE8f,KAAKuO,SAAS,CACVh2B,KAAMA,EACNs5U,cAAet5U,GAG3B,EAIAm4U,EAA6BxwT,UAAUnrB,OAAS,WAC5C,IAAI2tB,EAAQ1C,KACR8kM,EAAS9kM,KAAK9hB,MAAM4mN,OACxB,IAAKA,IAAWA,EAAOnoN,MACnB,OAAOpJ,EAAAA,cAAoB,MAAO,MAEtC,IAAI87B,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjDuwT,EAAcvwT,KAAK05C,eAAiB15C,KAAK9hB,MAAMqkE,SAAWviD,KAAKjtB,MAAMwvE,SACrEyvQ,EAAe,GACnB,GAAIhyT,KAAKjtB,MAAMs+U,cAAe,CAC1B,IAAIA,EAAgB5uQ,EAAc,GAAIziD,KAAKjtB,MAAMs+U,cAAct1T,SAAS,GACxEiE,KAAKsxT,qBAAuBD,EAAc/wP,WAAU,SAAUx9E,GAC1D,SAAIA,EAAOiZ,SAAWjZ,EAAOiZ,QAAQla,OAAS,IACnCiB,EAAOiZ,QAAQ,GAAGpf,QAAUmoN,EAAOnoN,KAGlD,KACmC,IAA/BqjB,KAAKsxT,sBAA+BD,EAAcrxT,KAAKsxT,sBAAsBv1T,QAAQla,OAAS,GAC9FwvU,EAAcrxT,KAAKsxT,sBAAsBv1T,QAAQpN,SAAQ,SAAUsjU,GAC3DA,EAAWt1U,QAAU+lB,EAAMxkB,MAAM4mN,OAAOnoN,OACxCq1U,EAAahxT,KAAKixT,EAAWxsU,MAErC,GAER,CACA,IAAIysU,EAAYlyT,KAAK9hB,MAAMg0U,UACvB3+U,EAAAA,cAAoBysB,KAAK9hB,MAAMg0U,UAAW,CAAEzsU,MAAOua,KAAKjtB,MAAM0S,MAAOD,SAAUwa,KAAK+wT,qBACnFx9U,EAAAA,cAAoB,MAAO,CAAEM,UAAW,0DACrCN,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,eAAgBiC,KAAM,SAAUV,KAAM4iS,EAAAA,MACjFzkS,EAAAA,cAAoBkI,EAAAA,GAAO,CAAE5H,UAAW,gBAAiB2F,KAAM,OAAQ+D,YAAa8xB,EAAoBG,iBAAiB2iT,EAAAA,GAAmBziT,EAAAA,GAASyiT,EAAAA,KAAqB1sU,MAAOua,KAAKjtB,MAAM0S,MAAOD,SAAU,SAAU9L,GAAK,OAAOgpB,EAAMquT,mBAAmBr3U,EAAEy4B,YAAc,IAC5Q5+B,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEqE,KAAM,SAAU89B,QAAS,KAAMzjC,UAAW,iBAAkBwB,QAAS2qB,KAAKoxT,YAAah8U,KAAM,IAAKujC,QAAS0S,EAAAA,OAC7I+mS,EAAqBJ,EAAalvU,QAAO,SAAUU,EAAMoR,GAAS,OAAOo9T,EAAa/2S,QAAQz3B,KAAUoR,CAAO,IACnH,OAAQrhB,EAAAA,cAAoBs5U,EAAyB,KACjDt5U,EAAAA,cAAoBu5U,EAAoB,CAAE9sU,MAAOqvB,EAAoBG,iBAAiBioS,EAAAA,GAAa/nS,EAAAA,GAAS+nS,EAAAA,KAAev+E,UAAW,aAAcvgN,QAASmwS,EAAAA,IAAYzzU,QAAS2qB,KAAKqvT,iBACvL97U,EAAAA,cAAoB46U,EAA2B,CAAEjkT,OAAQqmT,GACrDh9U,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oCACpCN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,kDAAmDyB,SAAU0qB,KAAK+wM,OAAQk5F,QAASjqS,KAAKugC,OAC7HhtD,EAAAA,cAAoB,MAAO,CAAEM,UAAW,2BACpCq+U,EACA3+U,EAAAA,cAAoB,KAAM,CAAEM,UAAW,6BACnCN,EAAAA,cAAoB,KAAM,CAAEM,UAAW,2BACnCN,EAAAA,cAAoBmoE,EAAAA,EAAU,CAAE7lE,MAAOw5B,EAAoBG,iBAAiB6iT,EAAAA,GAAgB3iT,EAAAA,GAAS2iT,EAAAA,KAAkB7sU,SAAU,SAAU9L,GAAK,OAAOgpB,EAAM6uT,qBAAqB73U,EAAG,MAAQ,EAAG+lG,QAASz/E,KAAK0xT,mBAClN1xT,KAAKjtB,MAAMwF,KAAK0H,KAAI,SAAUuD,EAAMoR,GAChC,OAAQrhB,EAAAA,cAAoB,KAAM,CAAEM,UAAW,SAAUy3B,IAAK1W,GAC1DrhB,EAAAA,cAAoBmoE,EAAAA,EAAU,CAAE7lE,MAAO8wB,OAAOnjB,GAAOgC,SAAU,SAAU9L,GAAK,OAAOgpB,EAAM6uT,qBAAqB73U,EAAG8J,EAAO,EAAGi8F,QAAS2yO,EAAmBp6U,SAASwL,KAC1K,KACJjQ,EAAAA,cAAoB,MAAO,CAAEM,UAAW,2BAA6Bu+U,EAAmBvwU,OAAS,IAAMwtB,EAAoBG,iBAAiB8iT,EAAAA,GAAqB5iT,EAAAA,GAAS4iT,EAAAA,MAC1K/+U,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gDACpCN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAE4E,WAAY,UAAWP,KAAM,UAAY61B,EAAoBG,iBAAiBihT,EAAAA,GAAoB/gT,EAAAA,GAAS+gT,EAAAA,MACzIl9U,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEtB,UAAW,WAAY2F,KAAM,SAAW61B,EAAoBG,iBAAiB25S,EAAAA,GAAmBz5S,EAAAA,GAASy5S,EAAAA,WACnK,EAIAuH,EAA6BrnT,aAAe,CACxC8nT,YAAY,GAETT,CACX,CA7QkD,CA6QhDn9U,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBggT,8BC/Tb6B,GAA4B,SAAUr0U,GAC7C,IAAIzG,EAAKlE,EAAAA,SAAe,IAAKuP,EAASrL,EAAG,GAAIsnB,EAAYtnB,EAAG,GACxD+6U,EAAqBj/U,EAAAA,SAAc,WAAc,OAAO,IAAIstM,IAAI3iM,EAAMu0U,aAAaxyU,KAAI,SAAU8M,GAAK,OAAOA,EAAE3Z,EAAI,IAAK,GAAG,CAAC8K,EAAMu0U,eAClIlkK,EAAWh7K,EAAAA,SAAc,WACzB,OAAO2K,EAAM8+D,QAAQl6D,QAAO,SAAUiK,GAAK,IAAItV,EAAI,OAAuC,QAA/BA,EAAMsV,EAAE/M,OAAS+M,EAAEpQ,aAA2B,IAAPlF,OAAgB,EAASA,EAAG+9C,cAAcx9C,SAAS8K,EAAO0yC,cAAgB,GAChL,GAAG,CAACt3C,EAAM8+D,QAASl6D,IACf/P,EAAQmL,EAAM8+D,QAAQ/8D,KAAI,SAAU8M,GAAK,OAAOxZ,EAAAA,SAAei/U,EAAmBvtR,IAAIl4C,EAAE3Z,IAAM,IAC9FmiC,EAAUhiC,EAAAA,aAAkB,WAC5B,IAAIm/U,EAAcx0U,EAAM8+D,QAAQl6D,QAAO,SAAU5K,EAAIgI,GAAK,OAAOnN,EAAMmN,GAAG,EAAI,IAC9EhC,EAAMy0U,gBAAgBlsT,UAAKvzB,EAAWw/U,GACtCx0U,EAAM8sU,YAAYvkT,UAAKvzB,EAC3B,GAAG,CAACH,EAAOmL,EAAM8+D,QAAS9+D,EAAMy0U,gBAAiBz0U,EAAM8sU,cACnD/gB,EAAU12T,EAAAA,aAAkB,WAC5B2K,EAAM8+D,QAAQruD,SAAQ,SAAU5B,EAAG7M,GAC/BnN,EAAMmN,GAAG,GAAGsyU,EAAmBvtR,IAAIl4C,EAAE3Z,IACzC,GACJ,GAAG,CAACL,EAAOy/U,EAAoBt0U,EAAM8+D,UACjC41Q,EAAe7/U,EAAM+P,QAAO,SAAU06M,GAAM,OAAOA,EAAG,EAAI,IAAG37M,OAC7DgxU,EAAcD,IAAiB7/U,EAAM8O,OACrCixU,EAAcv/U,EAAAA,aAAkB,WAChCR,EAAM4b,SAAQ,SAAU6uM,EAAIt9M,GACpB2yU,GAAqB,IAAN3yU,EACfs9M,EAAG,IAAG,GAGNA,EAAG,IAAIq1H,EAEf,GACJ,GAAG,CAAC9/U,EAAO8/U,IACX,OAAQt/U,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,iCAC7CN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,2BACpCN,EAAAA,cAAoBsN,GAAAA,EAAS,CAAEhN,UAAW,cAAe4R,MAAO3C,EAAQ0C,SAAU,SAAU9L,GAAK,OAAOqlB,EAAU4H,OAAOjtB,EAAE0gB,OAAO3U,OAAS,EAAGypF,OAAQ,WAAc,OAAQ37F,EAAAA,cAAoBA,EAAAA,SAAgB,KACxMA,EAAAA,cAAoBwkS,GAAAA,EAAa,KAC7BxkS,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,SAAUV,KAAM4iS,EAAAA,OAAkB,IACpFzkS,EAAAA,cAAoB,KAAM,CAAEM,UAAW,8BAClCiP,GAAUvP,EAAAA,cAAoB,KAAM,CAAEM,UAAW,2BAC9CN,EAAAA,cAAoBmoE,EAAAA,EAAU,CAAE+jC,QAASozO,EAAartU,SAAUstU,EAAaj9U,MAAO,kBACxF04K,EAAStuK,KAAI,SAAU8M,EAAG7M,GACtB,OAAQ3M,EAAAA,cAAoB,KAAM,CAAE+3B,IAAKve,EAAE3Z,GAAIS,UAAW,UACtDN,EAAAA,cAAoBmoE,EAAAA,EAAU,CAAExhE,SAAUnH,EAAMmN,GAAG,IAAuB,IAAjB0yU,EAAoBnzO,QAAS1sG,EAAMmN,GAAG,GAAIsF,SAAU,SAAU9L,GAAK,IAAIjC,EAAI,OAAO1E,EAAMmN,GAAG,GAAG0qB,QAAoC,QAA3BnzB,EAAKiC,EAAE0gB,OAAOiO,eAA4B,IAAP5wB,OAAgB,EAASA,EAAGgoG,SAAW,EAAG5pG,MAAOkX,EAAE/M,OAAS+M,EAAEpQ,QACzQ,KACJpJ,EAAAA,cAAoB,MAAO,CAAEM,UAAW,2BACpC++U,EACA,mBACJr/U,EAAAA,cAAoB,MAAO,CAAEM,UAAW,kDACpCN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEqE,KAAM,SAAUO,WAAY,UAAW1E,QAASkgC,GAAW,SACzFhiC,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEqE,KAAM,SAAUnE,QAAS40T,GAAW,WAClF,EACAsoB,GAA0Bz4S,YAAc,6GCxDpC7T,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA6DzC0xT,GAA+B,SAAUvrT,GAEzC,SAASurT,IACL,OAAkB,OAAXvrT,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAOA,OAVAiG,GAAU8sT,EAAevrT,GAOzBurT,EAAc7yT,UAAUnrB,OAAS,WAC7B,OAAO,IACX,EACOg+U,CACX,CAZmC,CAYjCx/U,EAAAA,iCCzEE0yB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAuDzC2xT,GAA6B,SAAUxrT,GAEvC,SAASwrT,IACL,OAAkB,OAAXxrT,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAgBA,OAnBAiG,GAAU+sT,EAAaxrT,GAOvBwrT,EAAY9yT,UAAUnrB,OAAS,WAC3B,IAAI0C,EACJ,OAAQlE,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,4BAA6B33B,EAAK,CACjF,gBAAiBuoB,KAAK9hB,MAAM3E,MAEhC9B,EAAG,aAAayM,OAAOk0B,GAAAA,EAAeC,QAAQrY,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,OAASymB,KAAK9hB,MAAM3E,KACjG9B,GAAKuoB,KAAK9hB,MAAMrK,WAAY,aAAcmsB,KAAK9hB,MAAMi9O,UAAW,gBAAiBn7N,KAAK9hB,MAAMu6B,aAAc1gC,KAAM,WAAaioB,KAAK9hB,MAAMzK,SACpJ,EAIAu/U,EAAYl5S,YAAc,wBACnBk5S,CACX,CArBiC,CAqB/Bz/U,EAAAA,iCC5EEkvE,GAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAMW+1R,GAAY,SAAU/0U,GAC7B,IAAIzG,EAAKyG,EAAM3F,KAAMA,OAAc,IAAPd,EAAgB,GAAKA,EACjD,OAAQlE,EAAAA,cAAoB,MAAO,CAAEM,UAAW,sDAAwD0E,EAAK0H,KAAI,SAAUuD,EAAMoR,GAAS,OAAQrhB,EAAAA,cAAoB,MAAO,CAAE+3B,IAAK1W,GAChLrhB,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,oCACrC2P,EAAKhK,KACL,MACJjG,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,qCAAuC2P,EAAK49N,gBAAmB,IAChH,EACA6xG,GAAUn5S,YAAc,0BAMjB,IAAImiS,GAAc,SAAUj/P,GAG/B,IAFA,IAAIvlE,EACAiF,EAASsgE,EAAQpuD,QACZ1O,EAAI,EAAGA,EAAIxD,EAAOmF,OAAQ3B,IAC/B,KAAOxD,EAAOwD,KAAqC,QAA7BzI,EAAKiF,EAAOwD,GAAGzM,gBAA6B,IAAPgE,OAAgB,EAASA,EAAGoK,SACnFnF,EAAOonB,OAAO3D,MAAMzjB,EAAQ+lE,GAAc,CAACviE,EAAG,GAAIxD,EAAOwD,GAAGzM,UAAU,IAG9E,OAAOiJ,CACX,EAQWw2U,GAAgB,SAAUhrT,GACjC,IAAIlJ,EAAYkJ,EAAKlJ,UAAW5E,EAAS8N,EAAK9N,OAAQhY,EAAgB8lB,EAAK9lB,cAEvE0kB,EADUm1S,GAAY7hT,EAAO4iD,SACX/8D,KAAI,SAAU8M,GAAK,OAAOA,EAAEpQ,KAAO,IAAGmG,QAAO,SAAUitB,GAAK,OAAOA,GAAkB,kBAANA,CAAgB,IAAG9vB,KAAI,SAAU8vB,GAAK,OAAO3T,EAAAA,GAAAA,GAAO2T,EAAI,IACzJojT,GAAc/2T,EAAAA,GAAAA,GAAOha,GACrBgxU,EAAU,CAAE50S,MAAO,GAAI4yL,QAAS,GAAIiiH,SAAU,GAAI5mS,OAAQ,IAe9DztB,EAAUrQ,SAAQ,SAAUnL,GACxB,IAAI/D,EAAW0zU,EAAY3vU,GACvB/D,GACAA,EAASkP,SAAQ,SAAU6gN,GAjBzB,IAAU/pN,EACK,kBADLA,EAkBJqhB,EAAQ0oM,GAAUhsN,IAhB1B4vU,EAAQhiH,QAAQpwM,KAAKvb,GAEC,mBAAVA,EACZ2tU,EAAQC,SAASryT,KAAKvb,GAEjBA,aAAiBxI,KACtBm2U,EAAQ50S,MAAMxd,KAAKvb,GAGnB2tU,EAAQ3mS,OAAOzrB,KAAKvb,EAQpB,GAER,IACA,IAAI6tU,EAAiBF,EAAQ50S,MAAMv+B,KAAI,SAAUkmB,GAAK,OAAOA,EAAElU,SAAW,IACtEshU,EAAcH,EAAQC,SAASvwU,QAAO,SAAU0wU,GAAQ,OAAOA,CAAM,IAAG3xU,OACxE4xU,EAAeL,EAAQC,SAASvwU,QAAO,SAAU0wU,GAAQ,OAAQA,CAAM,IAAG3xU,OAC1EirC,EAAMsmS,EAAQhiH,QAAQvvN,OAASuxU,EAAQhiH,QAAQ30N,QAAO,SAAU4wB,EAAKynD,GAAQ,OAAOznD,EAAOynD,CAAM,GAAG,QAAK5hF,EACzGsvE,EAAa,CACb11B,IAAKA,EACLsxC,QAAwB,kBAARtxC,EAAmBA,EAAMsmS,EAAQhiH,QAAQvvN,YAAS3O,EAClE6hB,IAAKq+T,EAAQhiH,QAAQvvN,OAASiT,KAAKC,IAAIoL,MAAMrL,KAAMs+T,EAAQhiH,cAAWl+N,EACtEgiB,IAAKk+T,EAAQhiH,QAAQvvN,OAASiT,KAAKI,IAAIiL,MAAMrL,KAAMs+T,EAAQhiH,cAAWl+N,EACtEmrF,MAAO+0P,EAAQhiH,QAAQvvN,OAASuxU,EAAQC,SAASxxU,OAASuxU,EAAQ50S,MAAM38B,OAASuxU,EAAQ3mS,OAAO5qC,OAChG6xU,OAAQH,EAAc,EAAIA,OAAcrgV,EACxCygV,QAASF,EAAe,EAAIA,OAAevgV,EAC3C0gV,SAAUR,EAAQ50S,MAAM38B,OAAS,IAAI5E,KAAK6X,KAAKC,IAAIoL,MAAMrL,KAAMw+T,SAAmBpgV,EAClF2gV,OAAQT,EAAQ50S,MAAM38B,OAAS,IAAI5E,KAAK6X,KAAKI,IAAIiL,MAAMrL,KAAMw+T,SAAmBpgV,GAEhF2P,EAAS,SAAU4C,EAAO6lB,GAC1B,MAAa,QAARA,GAAyB,YAARA,GAAuC,kBAAV7lB,GAGjC,aAAR6lB,GAA8B,WAARA,IAAqB7lB,aAAiBxI,KAC3DwI,EAAMqB,qBAGN6f,OAAOlhB,GANPA,EAAMyM,QAAQ,EAQ7B,EACIxV,EAAS,GAQb,OAPAiG,OAAOC,KAAK4/D,GAAY7zD,SAAQ,SAAU5R,GACtC,IAAIvD,EAAOuD,EACP0I,EAAQ+8D,EAAWhpE,QACTtG,IAAVuS,GACA/I,EAAOskB,KAAK,CAAExnB,KAAMA,EAAMiM,MAAOA,EAAO27N,eAAgBv+N,EAAO4C,EAAOjM,IAE9E,IACOkD,CACX,gEC5GA,IAAIjF,+QAIG,IAAImsU,EAAY,iBAIZ3W,EAAY,iBAIZC,EAAiB,sBAIjBC,EAAoB,yBAIpBC,EAAgB,qBAIhBC,EAAgB,qBAIhBC,EAAmB,yBAoBnBwmB,EAAkB,uBAIlB1G,EAAc,mBAIdD,EAAgB,qBAIhBpY,EAAa,kBAIboU,EAAoB,yBAIpBsH,EAAqB,0BAIrBhZ,EAAc,mBAIdwW,EAAgB,qBAIhBC,EAAiB,sBAIjBiE,EAAoB,yBAIpBE,EAAiB,sBAIjBtJ,EAAuB,4BAIvBuJ,EAAsB,2BAItBpd,EAAgB,qBAIhBqC,EAAkB,uBAIlBiB,EAAsB,2BAItBqR,EAAc,mBAIdD,EAAgB,qBAIhBI,EAAe,oBAIfD,EAAiB,sBAIjBr6S,IAAYj4B,EAAK,CAAC,GACtBuyU,GAAgB,oBACnBvyU,EAAGsyU,GAAkB,sBACrBtyU,EAAGoyU,GAAe,eAClBpyU,EAAGmyU,GAAiB,iBACpBnyU,EAAGmsU,GAAa,uBAChBnsU,EAAGq8U,GAAmB,gEACtBr8U,EAAG0xU,GAAqB,QACxB1xU,EAAGg5U,GAAsB,SACzBh5U,EAAGggU,GAAe,SAClBhgU,EAAGw2U,GAAiB,iBACpBx2U,EAAGy2U,GAAkB,kBACrBz2U,EAAGy9T,GAAiB,WACpBz9T,EAAG21U,GAAe,eAClB31U,EAAG01U,GAAiB,iBACpB11U,EAAGs9T,GAAc,cACjBt9T,EAAG61T,GAAoB,iBACvB71T,EAAGw1T,GAAa,yBAChBx1T,EAAGy1T,GAAkB,uBACrBz1T,EAAG01T,GAAqB,0BACxB11T,EAAG21T,GAAiB,sBACpB31T,EAAG41T,GAAiB,sBACpB51T,EAtHmB,kBAsHH,OAChBA,EAnHgC,+BAmHH,YAC7BA,EAhHiB,gBAgHH,KACdA,EA7GyB,wBA6GH,MACtBA,EAAG06U,GAAqB,SACxB16U,EAAG46U,GAAkB,YACrB56U,EAAGsxU,GAAwB,kBAC3BtxU,EAAG66U,GAAuB,iBAC1B76U,EAAG8/T,GAAmB,SACtB9/T,EAAG+gU,GAAuB,cAC1B/gU,EAAG,yBAA2B,cAC9BA,EAAG,4BAA8B,kBACjCA,EAAG,6BAA+B,UAClCA,EAAG,gCAAkC,cACrCA,EAAG,8BAAgC,WACnCA,EAAG,iCAAmC,eACtCA,EAAG,iCAAmC,cACtCA,EAAG,+BAAiC,WACpCA,EAAG,kCAAoC,mBACvCA,EAAG,+BAAiC,YACpCA,EAAG,0BAA4B,8BAC/BA,EAAG,yBAA2B,kBAC9BA,EAAG,0BAA4B,2BAC/BA,EAAG,yBAA2B,eAC9BA,EAAG,qBAAuB,UAC1BA,EAAG,sBAAwB,WAC3BA,EAAG,yBAA2B,QAC9BA,EAAG,mCAAqC,uBACxCA,EAAG,4BAA8B,WACjCA,EAAG,6BAA+B,YAClCA,EAAG,oCAAsC,wBACzCA,EAAG,uBAAyB,MAC5BA,EAAG,sBAAwB,KAC3BA,GAIG,SAASuvU,EAAiB+M,GAC7B,IAAIvoS,EAAauoS,EAAgB7mU,QAAQ,mBAAmB,SAAUi4O,EAAQ5jL,GAAS,MAAO,aAAeA,EAAM9oB,aAAe,IAClI,MAAQ,CAAEjN,WAAYA,EAAY4iR,eAAgB1+R,EAAS8b,GAC/D,kFC9LIvlB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAOI45S,EAAyB,SAAU9+S,GAEnC,SAAS8+S,IACL,OAAkB,OAAX9+S,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAyBA,OA5BAiG,EAAUqgT,EAAS9+S,GAOnB8+S,EAAQpmT,UAAUnrB,OAAS,WACvB,IAAI0C,EACA5D,GAAYu7B,EAAAA,EAAAA,GAAW,cAAe,CACtC,iBAAyC,gBAAvBpP,KAAK9hB,MAAMw8T,QAC7B,iBAAyC,gBAAvB16S,KAAK9hB,MAAMw8T,QAC7B,eAAuC,gBAAvB16S,KAAK9hB,MAAMw8T,SACA,gBAAvB16S,KAAK9hB,MAAMw8T,QACf,wBAAgD,gBAAvB16S,KAAK9hB,MAAMw8T,SACT,gBAAvB16S,KAAK9hB,MAAMw8T,SACX16S,KAAK9hB,MAAMqoU,SACf,aAAcvmT,KAAK9hB,MAAMgsQ,WACzB,kBAAmBlqP,KAAK9hB,MAAMynU,WAE9BrI,EAAoB/pU,EAAAA,cAAoB,KAAMshB,EAAS,CAAEzhB,GAAI4sB,KAAK9hB,MAAM9K,GAAIiC,QAAS2qB,KAAK9hB,MAAM7I,QAASk6P,cAAevvO,KAAK9hB,MAAMqxP,cAAe17P,UAAWA,EAAWH,MAAO,CAC3K2H,OAAQ2kB,KAAK9hB,MAAMsnN,UAAYxlM,KAAK9hB,MAAMsnN,UAAY,KAAO,GAC7DtvG,WAAYl2F,KAAK9hB,MAAMsoU,SAAW,SAAW,IAC9CzuU,KAAM,MAAO,gBAAiBioB,KAAK9hB,MAAM21T,aAAc,qBAAsB7zS,KAAK9hB,MAAMwoU,iBAAkBp7S,IAAKtL,KAAK9hB,MAAMwoU,oBAAqBjvU,EAAK,CAAC,GAAMwzU,EAAAA,IAAmD,SAAvBjrT,KAAK9hB,MAAMw8T,QAAqB16S,KAAK9hB,MAAM4/T,eAAY5qU,EAAWuE,IAAMuoB,KAAK9hB,MAAMzK,UACjR,OAAOusB,KAAK9hB,MAAMnJ,OACdirB,KAAK9hB,MAAMnJ,OAAO0xB,UAAKvzB,EAAWoqU,EAAkBt9S,KAAK9hB,OACzDo/T,CACR,EACOgJ,CACX,CA9B6B,CA8B3B/yU,EAAAA,gKC9DEshB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAIO,SAASu5P,EAAen6K,EAAW39E,GACtC,IAAIo/C,GAAQu+B,GAAa,IAAIhzE,MAAM,KAC/BzQ,EAAO8F,EAIX,OAHAo/C,EAAK9uC,SAAQ,SAAU4X,GACnBhuB,EAAOA,EAAOA,EAAKguB,QAAKrzB,CAC5B,IACOqF,CACX,CAIO,SAASipU,EAASnpN,EAAQ7pE,EAAOnZ,EAAQyoS,EAAWkW,EAAcr3U,EAAOy8H,QAC9D,IAAVA,IAAoBA,EAAQ,GAEhC,IADA,IAAI66M,EAAW76M,EACNl5H,EAAI,EAAGA,EAAIsuC,EAAM3sC,OAAQ3B,IAC9B,GAAK8zU,QAAmC9gV,IAAnBs7C,EAAMtuC,GAAGuF,YAA0CvS,IAAnBs7C,EAAMtuC,GAAGuS,MAA9D,CAWAwhU,EAAWn/T,KAAKI,IAAI++T,EAAU76M,EAAQ,GACtC,IAAI72D,OAAqBrvE,IAAVyJ,QACyBzJ,IAApCijQ,EAAex5P,EAAO6xC,EAAMtuC,KAC5Bi2P,EAAex5P,EAAO6xC,EAAMtuC,IAEhCm4G,EAAOA,EAAOx2G,QAAU,CACpBi8T,WAAY,EACZz/T,SAAUmwC,EAAMtuC,GAChBk5H,MAAOA,EACPshM,QAAS,cACTn4P,SAAUA,GAGVA,IACA0xQ,EAAWn/T,KAAKI,IAAIssT,EAASnpN,EAAQ7pE,EAAMtuC,GAAGuS,MAAO4iB,EAAQyoS,EAAWkW,EAAcr3U,EAAOy8H,EAAQ,GAAI66M,KAG9F,WAAX5+S,GAAwBktC,GAAuB,YAAXltC,KACpCgjF,EAAOA,EAAOx2G,QAAU,CACpBi8T,WAAY,EACZz/T,SAAUmwC,EAAMtuC,GAChBw6T,QAAS,cACTthM,MAAOA,EACP72D,SAAUA,GAxBlB,MATI81C,EAAOA,EAAOx2G,QAAU,CACpBi8T,UAAWA,EAAUlpT,MACrBvW,SAAUmwC,EAAMtuC,GAChBw6T,QAAS,OACTthM,MAAOA,EACP72D,cAAoBrvE,IAAVyJ,GAAuBw5P,EAAex5P,EAAO6xC,EAAMtuC,KAEjE49T,EAAUlpT,QA8BlB,OAAOq/T,CACX,CAkCO,SAASlS,EAAYl5N,EAAUqrO,EAAYC,EAAQv9M,QACxC,IAAVA,IAAoBA,EAAQ,GAChC,IAAI55D,EAAU,GACd,IAAK6rC,EACD,MAAO,GAEPA,QAAgC31G,IAApB21G,EAAShnG,SACrBgnG,EAAW,CAACA,IAEhBA,EAASl6F,SAAQ,SAAUylU,EAAax/T,GACpCw/T,EAAcA,EAAYl2U,MAAQk2U,EAAYl2U,MAAQk2U,EACtD,IAAIC,EAAYH,EAAWt/T,IAAU,KACjCnhB,EAAWsuU,EAAYqS,EAAY3gV,SAAU4gV,GAAaA,EAAU5gV,UAAY,GAAI0gV,EAAQv9M,EAAQ,GACxG55D,EAAQh8C,KAAKre,OAAO2mB,OAAO,CAAEstG,MAAOA,GAAS71H,EAAAA,EAAWsoB,aAAe51B,EAASoO,OAAU,CAAEb,KAAM,WAAc,OAAO,IAAM,EAAG0hE,WAAY,WAAc,OAAO,IAAM,GAAM,CAAC,EAAG2xQ,EAAY,CAAEh6U,MAAOg6U,EAAUh6U,MAAOkoU,WAAY8R,EAAU9R,YAAe,CAAC,EAAG6R,EAAa,CACzQhhV,GAAIghV,EAAYhhV,GAAKghV,EAAYhhV,GAAKq5T,EAAAA,GAAgBltD,sBAAsB,GAAGr7P,OAAOiwU,EAAOjS,UAAWiS,EAAO10E,SAAU,UACzH61D,iBAAkBt4P,EAAQn7D,OAC1BpO,SAAUA,EACVswN,QAAS,EACT9oM,QAAS,EACTm6S,cAAc,EACd1lT,KAAM2kU,GAAav/T,KAAK4M,MAAM2yT,EAAU3kU,MACxC7V,MAAOw6U,GAAav/T,KAAK4M,MAAM2yT,EAAUx6U,SAEjD,IAOA,GADAmjE,EAAQl/C,MALS,SAAU/gB,EAAGqpB,GAC1B,OAAOrpB,EAAEwlU,aAAen8S,EAAEm8S,WACtBxlU,EAAEu4T,iBAAmBlvS,EAAEkvS,kBACrBv4T,EAAEwlU,YAAc,IAAMn8S,EAAEm8S,YAAc,EAChD,IAEc,IAAV3rM,EAAa,CACb,IAAI09M,EAAQ,GACRC,EAAS,SAAU15T,EAAM25T,GACzB,OAAO35T,EAAKlM,SAAQ,SAAU5B,GAC1BA,EAAE4+K,YAAc6oJ,EAChBD,EAAOxnU,EAAEtZ,SAAU6gV,EAAMtzT,KAAKjU,GAAK,EACvC,GACJ,EAEA,OADAwnU,EAAOv3Q,GAAU,GACVs3Q,CACX,CACA,OAAOt3Q,CACX,CAIO,SAASmrQ,EAAoB5vU,EAAMgpE,EAAOa,EAAa+xQ,GAC1D,IAAIM,EAAW,GACXz8T,MAAMC,QAAQ1f,GACdk8U,EAAWl8U,EAENA,IACLk8U,EAAWl8U,EAAKA,MAEpB,IAAIykE,EAAU,GACd,GAAIy3Q,EAAS5yU,OAAS,EAAG,CACrB,IAAI6yU,EAAoBD,EAAS,GACjC,GAAIlzQ,EACA,IAAK,IAAIrhE,EAAI,EAAGA,EAAIqhE,EAAM1/D,OAAQ3B,IAC9Bw0U,EAAoBA,EAAkBjiU,OAASiiU,EAAkBjiU,MAAM,GAGlE9P,OAAOm0C,oBAAoB49R,GACjC/lU,SAAQ,SAAUhS,GACjBA,IAAUylE,GACVpF,EAAQh8C,KAAKre,OAAO2mB,OAAO,CACvBl2B,GAAIq5T,EAAAA,GAAgBltD,sBAAsB,GAAGr7P,OAAOiwU,EAAOjS,UAAWiS,EAAO10E,SAAU,UACvF61D,kBAAmB,EACnB3pI,aAAc,EACd/0D,MAAO,EACP37G,QAAS,EACT8oM,QAAS,EACTnvM,MAAO,EACPlF,KAAM,EACN7V,MAAO,EACPojQ,aAAa,EACbxpQ,SAAU,GACVgpQ,gBAAiB,EACjB24D,cAAc,GACfr0T,EAAAA,EAAWsoB,aAAc,CAAE1sB,MAAOA,IAE7C,GACJ,CACA,OAAOqgE,CACX,CACA,IAaW2gQ,EAAgB,SAAU3gQ,GACjC,OAAOA,EAAQl6D,QAAO,SAAUgiN,GAC5B,OAfkB,SAAU9nJ,EAAS8nJ,GAEzC,IADA,IAAIvqE,EAASv9E,EAAQ8nJ,EAAOn5B,aACrBpxC,GAAQ,CACX,GAAIA,EAAOmjL,WACP,OAAO,EAEXnjL,EAASv9E,EAAQu9E,EAAOoxC,YAC5B,CACA,OAAO,CACX,CAMYgpJ,CAAoB33Q,EAAS8nJ,KAG1Bl6L,QAAQk6L,EAAO44G,eAAiB54G,EAAOrxN,UAAYqxN,EAAOrxN,SAASoO,OAAS,GACvF,GACJ,EAIWq6P,EAAiB,SAAUp3C,GAClC,YAAwB5xN,IAAjB4xN,EAAOzqN,MACRya,KAAK4M,MAAMoyD,WAAWgxI,EAAOzqN,MAAM66C,aAAe,UAClDhiD,CACV,EAIWowU,EAAkB,SAAUtmQ,GAInC,OAHAA,EAAQl/C,MAAK,SAAU/gB,EAAGqpB,GACtB,OAAOrpB,EAAEu4T,iBAAmBlvS,EAAEkvS,gBAClC,IACOt4P,EAAQ/8D,KAAI,SAAU6kN,GACFA,EAAOwwG,iBAAgCxwG,EAAOn5B,YAAqBm5B,EAAOluF,MAAiBkuF,EAAO7pM,QAAmB6pM,EAAOf,QAAiBe,EAAOlwM,MAAgBkwM,EAAO03C,OAAlM,IAA0M/oQ,EAAWqxN,EAAOrxN,SAAUyK,EAAQsc,EAAOsqM,EAAQ,CAAC,mBAAoB,cAAe,QAAS,UAAW,UAAW,QAAS,SAAU,aACnV,OAAOrxN,EAASoO,OAASgT,EAAS,CAAEphB,SAAU6vU,EAAgB7vU,IAAayK,GAASA,CACxF,GACJ,EAIWgkS,EAA4B,qBAAXnpS,QACxB,UAAU00B,KAAK10B,OAAOu1C,UAAUC,WAIzBsxR,EAAmB,SAInBtJ,EAAe,SAAUqe,EAAWC,GAC3C,GAAKD,GAAcC,EAGnB,OAAKA,EAGAD,EAGE//T,EAASA,EAASA,EAAS,CAAC,EAAG+/T,GAAYC,GAAc,CAAEptS,OAAQ5yB,EAASA,EAAS,CAAC,EAAI+/T,EAAUntS,QAAU,CAAC,GAAMotS,EAAYptS,QAAU,CAAC,GAAKyiS,UAAWr1T,EAASA,EAAS,CAAC,EAAI+/T,EAAU1K,WAAa,CAAC,GAAM2K,EAAY3K,WAAa,CAAC,GAAK3oQ,MAAO1sD,EAASA,EAAS,CAAC,EAAI+/T,EAAUrzQ,OAAS,CAAC,GAAMszQ,EAAYtzQ,OAAS,CAAC,GAAKmnQ,KAAM7zT,EAASA,EAAS,CAAC,EAAI+/T,EAAUlM,MAAQ,CAAC,GAAMmM,EAAYnM,MAAQ,CAAC,KAF1YmM,EAHAD,CAMf,wHCpPW7hU,EAAQxf,EAAAA,YAAiB,SAAU2K,EAAOkc,IACjD8b,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAI1iC,EAAWyK,EAAMzK,SAAUI,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MACtEmhP,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACH10B,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,IACJ,IAAIhkO,GAAMs+N,EAAAA,EAAAA,GAAOpF,EAAY32O,EAAMyd,KAC/BpiB,EAAOhG,EAAAA,SAAc,WACrB,OAAmB,OAAf2K,EAAM3E,KACC,KAGA2E,EAAM3E,MAAQ8vB,EAAa9vB,IAE1C,GAAG,CAAC2E,EAAM3E,OACN4K,EAAW5Q,EAAAA,SAAc,WACzB,OAAuB,OAAnB2K,EAAMiG,UAGc,OAAfjG,EAAMw+F,KAFJ,KAMAx+F,EAAMw+F,MAAQx+F,EAAMiG,UAAYklB,EAAallB,QAE5D,GAAG,CAACjG,EAAMiG,SAAUjG,EAAMw+F,OACtB3iG,EAAaxG,EAAAA,SAAc,WAAc,OAAO2K,EAAMnE,YAAcsvB,EAAatvB,UAAY,GAAG,CAACmE,EAAMnE,aACvGu9B,EAAU/jC,EAAAA,SAAc,WACxB,QAAsBL,IAAlBgL,EAAMo5B,QACN,OAAOp5B,EAAMo5B,SAAW,SAEvB,QAAoBpkC,IAAhBgL,EAAM8U,MACX,OAAQ9U,EAAM8U,OACV,IAAK,UACD,MAAO,KACX,IAAK,YACD,OAAO,KACX,QACI,MAAO,OAGnB,MAAO,QACX,GAAG,CAAC9U,EAAMo5B,QAASp5B,EAAM8U,QACrBvb,EAAKyG,EAAM42U,aAAcA,OAAsB,IAAPr9U,EAAgB4xB,EAAayrT,aAAer9U,EAAII,EAAKqG,EAAMvE,SAAUA,OAAkB,IAAP9B,EAAgBwxB,EAAa1vB,SAAW9B,EAAIK,EAAKgG,EAAMgiN,MAAOA,OAAe,IAAPhoN,EAAgBmxB,EAAa62L,MAAQhoN,EACnO68U,EAAexhV,EAAAA,SAAc,WAC7B,IAAIkE,EACJ,OAAO23B,EAAAA,EAAAA,GAAW,YAAY33B,EAAK,CAC3B,aAAuB,UAAT8B,EACd,aAAuB,WAATA,EACd,aAAuB,UAATA,IAEf,WAAW2K,OAAOC,IAAaA,EAClC1M,EAAG,WAAWyM,OAAOC,EAAU,KAAKD,OAAOnK,IAAe6wB,QAAQzmB,GAAYpK,GAC9EtC,EAAG,aAAayM,OAAOk0B,EAAAA,EAAeE,WAAWhB,IAAYA,IAAYA,EACzE7/B,EAAG,yBAA2Bq9U,EAC9Br9U,EAAG,WAAWyM,OAAOvK,IAAaA,EAClClC,EAAG,eAAoC,QAAnByoN,EAAMhnL,UAA2C,UAArBgnL,EAAMjnL,WACtDxhC,EAAG,aAAkC,QAAnByoN,EAAMhnL,UAA2C,QAArBgnL,EAAMjnL,WACpDxhC,EAAG,kBAAuC,WAAnByoN,EAAMhnL,UAA8C,UAArBgnL,EAAMjnL,WAC5DxhC,EAAG,gBAAqC,WAAnByoN,EAAMhnL,UAA8C,QAArBgnL,EAAMjnL,WAC1DxhC,GAAK5D,EACb,GAAG,CACC0F,EAAM4K,EAAUpK,EAChBu9B,EAASw9S,EAAc50H,EACvBvmN,EAAU9F,IAEd,OAAQN,EAAAA,cAAoB,OAAQ,CAAEM,UAAWkhV,EAAcrhV,MAAOA,EAAOioB,IAAKA,GAAOloB,EAC7F,IACAsf,EAAMiZ,UAAY,CACdn4B,UAAWo4B,EAAAA,OACXtQ,IAAKsQ,EAAAA,OACLv4B,MAAOu4B,EAAAA,OACPi0L,MAAOj0L,EAAAA,MAAgB,CACnBiN,SAAUjN,EAAAA,MAAgB,CAAC,MAAO,WAClCgN,WAAYhN,EAAAA,MAAgB,CAAC,QAAS,UAE1C1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChD9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,YAC1CywE,KAAMzwE,EAAAA,MAAgB,CAAC,KAAM,QAAS,YACtClyB,WAAYkyB,EAAAA,MAAgB,CAAC,KACzB,UAAW,YAAa,WACxB,OAAQ,UAAW,UACnB,QAAS,OAAQ,QAAS,UAAW,YAEzCjZ,MAAOiZ,EAAAA,MAAgB,CAAC,SAAU,YAAa,UAAW,MAAO,SACjEqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5DtyB,SAAUsyB,EAAAA,MAAgB,CAAC,OAAQ,UAAW,WAC9C6oT,aAAc7oT,EAAAA,MAElB,IAAI5C,EAAe,CACf9vB,KAAM,SACN4K,SAAU,QACVpK,WAAY,UACZJ,SAAU,OACVumN,MAAO,CAAEhnL,SAAU,MAAOD,WAAY,OACtC67S,cAAc,GAElB/hU,EAAMsW,aAAeA,EACrBtW,EAAM+mB,YAAc,uGC3HhBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAsBW5Z,EAAiBvf,EAAAA,YAAiB,SAAU2K,EAAOkc,GAC1D,IAAI3mB,EAAWyK,EAAMzK,SAAUI,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MACtEmhP,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACH10B,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,IACJ,IAAIhkO,GAAMs+N,EAAAA,EAAAA,GAAOpF,EAAY32O,EAAMyd,KAC/Bq5T,EAAmBzhV,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,oBAAqBv7B,EAAY,GAAG,CAACA,IACtGohV,EAAkB1hV,EAAAA,SAAc,WAAc,OAAQshB,EAAS,CAAE+uF,QAAS,gBAAkBlwG,EAAS,GAAG,CAACA,IAC7G,OAAQH,EAAAA,cAAoB,OAAQ,CAAEM,UAAWmhV,EAAkBthV,MAAOuhV,EAAiBt5T,IAAKA,GAAOloB,EAC3G,IACAqf,EAAekZ,UAAY,CACvBn4B,UAAWo4B,EAAAA,OACXtQ,IAAKsQ,EAAAA,OACLv4B,MAAOu4B,EAAAA,QAEXnZ,EAAegnB,YAAc,wHCjDzBo7S,EAAgB,CAChB,QAAW,EACX,mBAAoB,EACpB,qBAAsB,GAEtBC,EAAe,CACf,QAAW,qBACX,mBAAoB,qBACpB,qBAAsB,sBAef77U,EAAS/F,EAAAA,YAAiB,SAAU2K,EAAOkc,IAClD8b,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAItiC,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MAC3CmhP,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACH10B,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,IACJ,IAAIpmP,EAAOhG,EAAAA,SAAc,WAAc,OAAO2K,EAAM3E,MAAQ8vB,EAAa9vB,IAAM,GAAG,CAAC2E,EAAM3E,OACrFQ,EAAaxG,EAAAA,SAAc,WAAc,OAAO2K,EAAMnE,YAAcsvB,EAAatvB,UAAY,GAAG,CAACmE,EAAMnE,aACvGP,EAAOjG,EAAAA,SAAc,WAAc,OAAO2K,EAAM1E,MAAQ6vB,EAAa7vB,IAAM,GAAG,CAAC0E,EAAM1E,OACrF47U,EAAgB7hV,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,WAAY,CAC1E,cAAwB,UAAT71B,EACf,cAAwB,WAATA,EACf,cAAwB,UAATA,EACf,mBAAmC,YAAfQ,EACpB,qBAAqC,cAAfA,EACtB,oBAAoC,aAAfA,EACrB,gBAAgC,SAAfA,EACjB,mBAAmC,YAAfA,EACpB,mBAAmC,YAAfA,EACpB,iBAAiC,UAAfA,EAClB,gBAAgC,SAAfA,EACjB,iBAAiC,UAAfA,EAClB,mBAAmC,YAAfA,GACrBlG,EAAWshV,EAAa37U,GAAQ,GAAG,CAClCD,EAAMQ,EAAYlG,EAAW2F,IAE7BylM,EAAQ,IAAIjnL,MAAMk9T,EAAc17U,IAEpC,OADAylM,EAAMviG,KAAK,EAAG,EAAGw4O,EAAc17U,IACvBjG,EAAAA,cAAoB,MAAO,CAAEM,UAAWuhV,EAAe1hV,MAAOA,GAClEH,EAAAA,cAAoB,MAAO,CAAEM,UAAW,mBAAqBorM,EAAMh/L,KAAI,SAAU2gB,EAAG1gB,GAAK,OAAO3M,EAAAA,cAAoB,OAAQ,CAAE+3B,IAAKprB,EAAGrM,UAAW,oBAAuB,KAChL,IACAyF,EAAO0yB,UAAY,CACfn4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPzyB,KAAMyyB,EAAAA,MAAgB,CAClB,UACA,mBACA,uBAEJ1yB,KAAM0yB,EAAAA,MAAgB,CAAC,QAAS,SAAU,UAC1ClyB,WAAYkyB,EAAAA,MAAgB,CACxB,UAAW,YAAa,WACxB,OAAQ,UAAW,UACnB,QAAS,OAAQ,QAAS,aAGlC,IAAI5C,EAAe,CACf9vB,KAAM,SACNQ,WAAY,UACZP,KAAM,WAEVF,EAAO+vB,aAAeA,EACtB/vB,EAAOwgC,YAAc,+MCrEVu7S,EAAW9hV,EAAAA,YAAiB,SAAU2K,EAAOkc,IACpD8b,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAItiC,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MAC3CmhP,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACH10B,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,IACJ,IAAI3sO,EAAQzf,EAAAA,SAAc,WAAc,OAAO2K,EAAM8U,OAASqW,EAAarW,KAAO,GAAG,CAAC9U,EAAM8U,QACxFlT,EAAYvM,EAAAA,SAAc,WAC1B,OAAwB,IAApB2K,EAAM4B,YAIC5B,EAAM4B,WAAaupB,EAAavpB,UAE/C,GAAG,CAAC5B,EAAM4B,YACNw1U,EAAkB/hV,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,aAAc,CAC9E,oBAA+B,WAAVpc,EACrB,kBAA6B,cAAVA,EACnB,kBAA6B,SAAVA,EACnB,mBAA0C,kBAAdlT,GAA6C,UAAnBA,EAAUtG,KAChE,kBAAyC,kBAAdsG,GAA6C,SAAnBA,EAAUtG,OAAmC,IAAdsG,GACrFjM,EAAY,GAAG,CAACmf,EAAOlT,EAAWjM,IACrC,OAAQN,EAAAA,cAAoB,OAAQ,CAAEQ,IAAK8gP,EAAYhhP,UAAWyhV,EAAiB5hV,MAAOA,GAC9F,IACA2hV,EAASrpT,UAAY,CACjBn4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPnsB,UAAWmsB,EAAAA,MAAgB,CACvBzyB,KAAMyyB,EAAAA,MAAgB,CAAC,OAAQ,YAEnCjZ,MAAOiZ,EAAAA,MAAgB,CAAC,SAAU,YAAa,UAEnD,IAAI5C,EAAe,CACfrW,MAAO,OACPlT,UAAW,CAAEtG,KAAM,UAEvB67U,EAAShsT,aAAeA,EACxBgsT,EAASv7S,YAAc,8DC3DhB,IAAI3D,EAAkB,CACzBrgC,KAAM,mCACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,wWCTlBpjD,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAcW24U,GAAuBj7S,EAAAA,EAAAA,KAcvBohC,EAAWnoE,EAAAA,YAAiB,SAAU08R,EAAa71Q,GAC1D,IAAI3iB,GACJy+B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAIj4B,GAAQ8nP,EAAAA,EAAAA,GAAgBuvF,EAAsBtlD,GAC9Cp4R,EAAKqG,EAAOu5B,EAAkB5/B,EAAG4/B,gBAAiBD,EAAiB3/B,EAAG2/B,eAAgBioE,EAAU5nG,EAAG4nG,QAAS5rG,EAAYgE,EAAGhE,UAAW+nE,EAAiB/jE,EAAG+jE,eAAgBnoE,EAAWoE,EAAGpE,SAAU65S,EAAiBz1S,EAAGy1S,eAAgBpzS,EAAWrC,EAAGqC,SAAU3D,EAAesB,EAAGtB,aAAcnD,EAAKyE,EAAGzE,GAAImG,EAAO1B,EAAG0B,KAAM+9B,EAAUz/B,EAAGy/B,QAASzhC,EAAQgC,EAAGhC,MAAO2/U,EAAiB39U,EAAG29U,eAAgB1/U,EAAO+B,EAAG/B,KAAM6lE,EAAgB9jE,EAAG8jE,cAAen2D,EAAW3N,EAAG2N,SAAUokB,EAAU/xB,EAAG+xB,QAASE,EAASjyB,EAAGiyB,OAAQyB,EAAW1zB,EAAG0zB,SAAU9lB,EAAQ5N,EAAG4N,MAAOkxB,EAAW9+B,EAAG8+B,SAAUC,EAAQ/+B,EAAG++B,MAAOF,EAAoB7+B,EAAG6+B,kBAAmBM,EAAiBn/B,EAAGm/B,eAE5kByV,GAA1D50C,EAAGsjE,QAAmBtjE,EAAG8iE,QAAoB9iE,EAAGujE,SAAmB5gD,EAAO3iB,EAAI,CAAC,kBAAmB,iBAAkB,UAAW,YAAa,iBAAkB,WAAY,iBAAkB,WAAY,eAAgB,KAAM,OAAQ,UAAW,QAAS,iBAAkB,OAAQ,gBAAiB,WAAY,UAAW,SAAU,WAAY,QAAS,WAAY,QAAS,oBAAqB,iBAAkB,UAAW,UAAW,cACnbg9O,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACC23N,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,QAAI7pP,GAAS,OAAO++O,EAAWxgP,SAAWwgP,EAAWxgP,QAAQyB,IAAM,EACnE,GAAG,CAAC6pP,IACRpsP,EAAAA,oBAA0B6mB,EAAQwlO,GAClC,IAAI1nP,EAAK3E,EAAAA,SAAe+5S,GAAiBmoC,EAAev9U,EAAG,GAAIw9U,EAAkBx9U,EAAG,GAChFG,EAAK9E,EAAAA,SAAegD,GAAeksC,GAAapqC,EAAG,GAAI0lS,GAAgB1lS,EAAG,GAC1Es9U,GAAmC,mBAAVlwU,GAAiC,OAAVA,EAChDmwU,QAAkC1iV,IAAZusG,EACtBo2O,GAAoBF,GACpBt7T,GAAew7T,GAAoBpwU,EAAQg9B,GAC3CqzS,GAAiBF,GAAsBn2O,EAAUo2O,QAAoB3iV,EAAYuiV,EACjFM,QAAuC7iV,IAAnB4iV,IAAgCz7T,GACpD27T,GAAcD,GAAoB17T,GAAey7T,GACjDG,GAAaF,IAAqBF,GAAgC,OAAVpwU,EAAiBA,OAAQvS,EAAauS,GAAS4U,GACvG67T,GAAoC,OAAhBF,IAAsC,OAAdC,GAC5Cx4C,GAAelqS,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IAC7D9E,IAAsBwvP,EAAAA,EAAAA,KACtBs3D,GAAkB,SAAUxnS,GAC5B,OAAOtf,GAAoBG,iBAAiBmf,EAASjf,EAAAA,GAASif,GAClE,EACIynS,GAA2BD,GAAgBE,EAAAA,IAC3CC,GAAkBH,GAAgBI,EAAAA,IAClCpiV,QAAoBjB,IAAV0jC,EACVA,GACCD,KAEGm/S,GACRviV,EAAAA,WAAgB,WACRshP,EAAWxgP,SAAWwgP,EAAWxgP,QAAQg+Q,mBACzCx9B,EAAWxgP,QAAQg+Q,kBAAkBl+Q,GAC/B,GACCuiC,GAAqB0/S,GAEpC,GAAG,CAACjiV,GAASuiC,EAAmB0/S,KAChC,IAAIpmE,GAAWz8Q,EAAAA,aAAkB,SAAUmG,EAAGw8C,GACrC2/R,IAAsB37U,IACvB6jS,GAAc7nP,GACT0/R,IAAwB17U,GACzBw7U,EAAgBx/R,IAGpB1wC,IAAatL,IACb0sM,EAAAA,EAAAA,GAAcphM,EAAU9L,EAAGmb,EAASA,EAAS,CAAC,EAAG+qO,KAAwB,CAAEn6O,MAAOywC,IAAQ,CAAEzwC,MAAOywC,GAE3G,GAAG,CAAC0/R,GAAqB17U,EAAUsL,EAAUqwU,GAAmBj2F,IAC5Dl2N,GAAen2B,EAAAA,aAAkB,SAAUmG,GAC3C,IAAI40K,EAAW50K,EAAE0gB,OAAOqlF,QACxBuwK,GAASt2Q,EAAG40K,EAChB,GAAG,CAAC0hG,GAAUvqQ,IACV2kB,GAAgB72B,EAAAA,aAAkB,SAAUmG,GAC5C,IAAIQ,EAAJ,CAGA,IAAImwB,EAAU3wB,EAAE2wB,QACZmsT,EAAa98U,EAAEonQ,cAAcrhK,QAC7Bp1E,IAAYtD,EAAAA,EAAKytB,QACjB96C,EAAEub,iBACFvb,EAAE84B,kBACFw9O,GAASt2Q,GAAI88U,GANjB,CAQJ,GAAG,CAACt8U,EAAU81Q,KACVymE,GAAcljV,EAAAA,aAAkB,SAAUmG,GACtCQ,GAGUR,EAAE2wB,UACAtD,EAAAA,EAAKytB,OACjB96C,EAAEub,gBAEV,GAAG,CAAC/a,IACAyvB,GAAcp2B,EAAAA,aAAkB,SAAUmG,GACtCkwB,IAAY1vB,IACZ0sM,EAAAA,EAAAA,GAAch9K,EAASlwB,EAAGkmP,SAAuB1sP,EAEzD,GAAG,CAAC02B,EAAS1vB,EAAU0lP,IACnB/1N,GAAat2B,EAAAA,aAAkB,SAAUmG,GACrCowB,IAAW5vB,IACX0sM,EAAAA,EAAAA,GAAc98K,EAAQpwB,EAAGkmP,SAAuB1sP,EAExD,GAAG,CAAC42B,EAAQ5vB,EAAU0lP,IAClBjkO,IAAMs+N,EAAAA,EAAAA,GAAOpF,EAAY32O,EAAMyd,KAC/B+6T,IAAkBtnT,EAAAA,EAAAA,GAAW,kBAAmBv7B,GAChD8iV,GAAa9hU,EAASA,EAAS,CAAErb,KAAM,WAAY3F,WAAWu7B,EAAAA,EAAAA,GAAW,cAAe33B,EAAK,CAAC,EAC1FA,EAAG,cAAcyM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EACjE9B,EAAG,aAAayM,OAAOk0B,EAAAA,EAAeE,WAAWhB,IAAYA,IAAYA,EACzE7/B,EAAG,mBAAqBy+U,GACxBz+U,EAAG,cAAgByC,EACnBzC,EAAG,yBAA2BtD,SAA8BjB,IAAnB8jC,IAAmD,IAAnBA,GACzEv/B,IAAM1D,IAAK8gP,EAAY/+O,KAAMA,EAAM1C,GAAIA,GAAMqqS,GAAc,kBAAmBjmQ,EAAgB,mBAAoBC,EAAiBgoE,QAAS70E,QAAQorT,IAAc97U,SAAUA,EAAUqxB,UAAUkvC,EAAAA,EAAAA,GAAYlvC,EAAUrxB,GAAWnC,KAAM,WAAY4+B,cAAuBzjC,IAAbyjC,GAAyBA,EAAkB,kBAAgBm/S,KAAkBE,OAE1UE,IACI,QACO,gBAAiBh8U,QAAYhH,GAAau5C,GAAS,CAAEjnC,SAAUkkB,GAAc+B,UAAWrB,GAAewsT,QAASH,GAAa7sT,QAASD,GAAaG,OAAQD,KAC1KgtT,GAAiBtjV,EAAAA,cAAoBA,EAAAA,SAAgB,UAG3CL,IAAd+iV,GAA2B1iV,EAAAA,cAAoB,QAASshB,EAAS,CAAC,EAAG8hU,KAAiBpjV,EAAAA,cAAoB,QAASshB,EAAS,CAAC,EAAG8hU,GAAY,CAAElxU,MAAOkwU,QAAiBziV,EAA0B,OAAd+iV,GAAqB,GAAKA,OACxMa,GAAiBvjV,EAAAA,cAAoBA,EAAAA,SAAgB,UAAgBL,IAAV2C,EAAuBtC,EAAAA,cAAoB,QAAS,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,mBAAoBwsC,GAAiBo/N,QAAS5nS,GAAMqqS,GAAc/pS,MAAO,CAAE05S,WAAY,SAC9Nv3S,EACA8lE,GAAiBpoE,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,oBAAsByiV,KAAqB,MACzG,OAAQ/iV,EAAAA,cAAoBA,EAAAA,SAAgB,KAA0B,WAAnBiiV,EAAgCjiV,EAAAA,cAAoB,OAAQ,CAAEM,UAAW6iV,GAAiB/6T,IAAK,OAC9Ik7T,GACAC,GACArjV,GAAcF,EAAAA,cAAoB,OAAQ,CAAEM,UAAW6iV,GAAiB/6T,IAAKA,IAC7Ek7T,GACAC,GACArjV,GACR,IACAioE,EAAS1vC,UAAY,CACjByzE,QAASxzE,EAAAA,KACTp4B,UAAWo4B,EAAAA,OACXqhR,eAAgBrhR,EAAAA,KAChB11B,aAAc01B,EAAAA,IACdtQ,IAAKsQ,EAAAA,OACL/xB,SAAU+xB,EAAAA,KACV74B,GAAI64B,EAAAA,OACJ1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UACnDuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjBp2B,MAAOo2B,EAAAA,IACPupT,eAAgBvpT,EAAAA,OAChB0vC,cAAe1vC,EAAAA,KACfn2B,KAAMm2B,EAAAA,OACNV,SAAUU,EAAAA,OACVxmB,MAAOwmB,EAAAA,IACPyK,kBAAmBzK,EAAAA,OACnB0K,SAAU1K,EAAAA,KACVgO,SAAUhO,EAAAA,KACV2K,MAAO3K,EAAAA,KACPzmB,SAAUymB,EAAAA,KACVrC,QAASqC,EAAAA,KACTnC,OAAQmC,EAAAA,MAMZyvC,EAASryC,aAJU,CACf9vB,KAAM,SACN+9B,QAAS,UAGbokC,EAAS5hC,YAAc,sNC3MnBub,EAAQ,CAAC,uDCATpvB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAwBzC01T,EAAqC,SAAUvvT,GAE/C,SAASuvT,IACL,OAAkB,OAAXvvT,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAoCA,OAvCAiG,EAAU8wT,EAAqBvvT,GAI/BuvT,EAAoB72T,UAAUnrB,OAAS,WACnC,IAAIs6B,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjDg3T,EAAuB3nT,EAAoBG,iBAAiBynT,EAAAA,GAA4BvnT,EAAAA,GAASunT,EAAAA,KACjGC,EAAiB7nT,EAAoBG,iBAAiB2nT,EAAAA,GAAsBznT,EAAAA,GAASynT,EAAAA,KACrFC,EAAkB/nT,EAAoBG,iBAAiB6nT,EAAAA,GAAuB3nT,EAAAA,GAAS2nT,EAAAA,KACvFC,EAAcjoT,EAAoBG,iBAAiB+nT,EAAAA,GAAmB7nT,EAAAA,GAAS6nT,EAAAA,KAC/EC,EAAcnoT,EAAoBG,iBAAiBioT,EAAAA,GAAmB/nT,EAAAA,GAAS+nT,EAAAA,KAC/EC,GAAWC,EAAAA,EAAAA,IAAwB33T,KAAK9hB,MAAM05U,KAAM53T,KAAK9hB,MAAM25U,SAC/DC,EAAsB,IAAK5lU,QAAQ,GACnC6lU,EAAuB,GAAK7lU,QAAQ,GACpC8lU,EAAe,GAAG9zU,OAAO8yU,EAAsB,MAAM9yU,OAAOwzU,EAASxlU,QAAQ,IAC7E+lU,EAAS,GAAG/zU,OAAOgzU,EAAgB,MAAMhzU,OAAO4zU,GAChDI,EAAU,GAAGh0U,OAAOkzU,EAAiB,MAAMlzU,OAAO6zU,GAClDI,EAAW5kV,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,wCACpDyjV,EACA,IACA/jV,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,QAASV,KAAMw7C,EAAAA,OACrDh8C,EAASrB,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,sCAClD2jV,EACA,IACAjkV,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,IAAKV,KAAMi2C,EAAAA,OACrD,OAAQ93C,EAAAA,cAAoB,MAAO,CAAEM,UAAW,yCAC5CN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBACpCN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,yBAA2BmkV,GACpEN,GAAY,IAAOnkV,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,wCACxDN,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,QAASV,KAAMw7C,EAAAA,MACrD8mS,GAAY,GAAKnkV,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,QAASV,KAAMw7C,EAAAA,OAAkBr9C,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,sCACjIN,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,IAAKV,KAAMi2C,EAAAA,QACzD93C,EAAAA,cAAoB,MAAO,KACvBA,EAAAA,cAAoB,OAAQ,KAAM0kV,GAClCP,GAAY,IAAMS,EAAUvjV,GAChCrB,EAAAA,cAAoB,MAAO,KACvBA,EAAAA,cAAoB,OAAQ,KAAM2kV,GAClCR,GAAY,EAAIS,EAAUvjV,GACtC,EACOmiV,CACX,CAzCyC,CAyCvCxjV,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwBqmT,GCtDjB,IAAIqB,EAAU,SAAUvlP,EAAQiwD,GACnC,GAAsB,IAAlBjwD,EAAOhxF,OACP,MAAO,GAGX,IAAIskB,EAAI0sE,EAAOp2F,QAAO,SAAU4wB,EAAKknE,EAAOr0F,EAAGnD,GAC3C,OAAa,IAANmD,EAEH,KAAKgE,OAAOqwF,EAAM,GAAI,KAAKrwF,OAAOqwF,EAAM,IAExC,GAAGrwF,OAAOmpB,EAAK,KAAKnpB,OAAO4+I,EAAQvuD,EAAOr0F,EAAGnD,GACrD,GAAG,IACH,MAAO,YAAamH,OAAOiiB,EAAG,kDAClC,EAUWy+B,EAAO,SAAUyzR,EAAQC,GAChC,IAAIC,EAAUD,EAAO,GAAKD,EAAO,GAC7BG,EAAUF,EAAO,GAAKD,EAAO,GACjC,MAAO,CACHx2U,OAAQiT,KAAK+3E,KAAK/3E,KAAKg4E,IAAIyrP,EAAS,GAAKzjU,KAAKg4E,IAAI0rP,EAAS,IAC3DpnP,MAAOt8E,KAAKo8E,MAAMsnP,EAASD,GAEnC,EC3CItyT,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAyBzCo3T,EAAkC,SAAUjxT,GAE5C,SAASixT,IACL,OAAkB,OAAXjxT,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAwDA,OA3DAiG,EAAUwyT,EAAkBjxT,GAI5BixT,EAAiBv4T,UAAUw4T,mBAAqB,WAC5C,IDiE6BC,EApCDC,EC7BxBl2T,EAAQ1C,KACR64T,EAAsB74T,KAAK9hB,MAAMihH,QACjC25N,EAAY,SAAUpB,EAAUqB,EAAYrrN,EAAKsrN,EAAM94P,GACvD,IAAIgzG,GAAOxlE,EAAMsrN,GAAQ,EACrBC,EAAOt2U,OAAO2mB,OAAO,CAAC,EAAG5G,EAAMxkB,MAAM+6U,KAAM,CAAExsT,EAAGssT,EAAaF,EAAoBx+U,MAAO6yF,EAAG,EAAIgmG,EAAM2lJ,EAAoBx9U,SACzH69U,GAAkBvB,EAAAA,EAAAA,KAAwBwB,EAAAA,EAAAA,KAAQC,EAAAA,EAAAA,GAAgBH,KAAQE,EAAAA,EAAAA,IAAQz2T,EAAMxkB,MAAMkC,iBAAmB,KACrH,OAAIstH,EAAM,GAAMsrN,EACRE,EAAkBxB,EAAW,GAAKwB,EAAkBxB,EAAW,EACxDxkJ,EAGA,KAGXhzG,EAASg5P,EAAiBxB,GACnBoB,EAAUpB,EAAUqB,EAAYrrN,EAAKsrN,GAAQA,EAAOtrN,GAAO,EAAGxtC,GAElE44P,EAAUpB,EAAUqB,EAAYrrN,GAAOsrN,EAAOtrN,GAAO,EAAGsrN,EAAM94P,EACzE,EACIm5P,EAAW,SAAU3B,EAAU4B,EAAWC,QACzB,IAAbA,IAAuBA,GAAW,GAEtC,IADA,IAAI1mP,EAAS,GACJ3yF,EAAI,EAAGA,GAAK24U,EAAoBx+U,MAAO6F,GAAK24U,EAAoBx+U,MAAQi/U,EAAW,CACxF,IAAI7zU,EAAQqzU,EAAUpB,EAAUx3U,EAAG,EAAG24U,EAAoBx9U,OAAQk+U,EAAY,SAAUx8U,EAAGqpB,GAAK,OAAOrpB,EAAIqpB,CAAG,EAAM,SAAUrpB,EAAGqpB,GAAK,OAAOrpB,EAAIqpB,CAAG,GACtI,OAAV3gB,GACAotF,EAAO7xE,KAAK,CAAC9gB,EAAGuF,GAExB,CACA,OAAOotF,CACX,EACI2mP,GDDwBZ,ECCuBh0R,EDmCtB+zR,EAnC1B,SAAUtkV,EAASkvJ,EAAU11H,EAAM1M,GAItC,IAIIy1B,EAAIgiS,EAJAr1L,GAAYlvJ,EACZw5B,GAAQx5B,GAKZ+8F,EAAQx6C,EAAEw6C,OAASjwE,EAAUrM,KAAKqnF,GAAK,GACvCt6F,EALS,GAKA+0C,EAAE/0C,OAIf,MAAO,CAFCxN,EAAQ,GAAKygB,KAAKi8E,IAAIK,GAASvvF,EAC/BxN,EAAQ,GAAKygB,KAAKk8E,IAAII,GAASvvF,EAE3C,EAmB4D,SAAU0yF,EAAOr0F,EAAGnD,GAEhF,IAAItF,EAAKkhV,EAAiB57U,EAAEmD,EAAI,GAAInD,EAAEmD,EAAI,GAAIq0F,GAAQklP,EAAOhiV,EAAG,GAAIiiV,EAAOjiV,EAAG,GAE1EI,EAAK8gV,EAAiBpkP,EAAOx3F,EAAEmD,EAAI,GAAInD,EAAEmD,EAAI,IAAI,GAAOy5U,EAAO9hV,EAAG,GAAI+hV,EAAO/hV,EAAG,GACpF,MAAO,KAAKqM,OAAOu1U,EAAM,KAAKv1U,OAAOw1U,EAAM,KAAKx1U,OAAOy1U,EAAM,KAAKz1U,OAAO01U,EAAM,KAAK11U,OAAOqwF,EAAM,GAAI,KAAKrwF,OAAOqwF,EAAM,GAC3H,GCxCQ,OAAO6jP,EAAQiB,EA5CL,IAED,IA0CyCG,GAC9CpB,EAAQiB,EA7CF,IAED,IA2CqC,GAAOG,GACjDpB,EAAQiB,EA7CD,EACF,IA4CuCG,GAC5CpB,EAAQiB,EA9CD,EACF,IA6CsC,GAAOG,EAC1D,EACAf,EAAiBv4T,UAAUypP,sBAAwB,SAAU3tO,GACzD,OAAIA,EAAUi9S,KAAKj7U,IAAMgiB,KAAK9hB,MAAM+6U,KAAKj7U,GACrCg+B,EAAUi9S,KAAKl8U,IAAMijB,KAAK9hB,MAAM+6U,KAAKl8U,GACrCijB,KAAK9hB,MAAMkC,kBAAoB47B,EAAU57B,eAIjD,EACAq4U,EAAiBv4T,UAAUnrB,OAAS,WAChC,OAAQxB,EAAAA,cAAoB,MAAO,CAAEy9P,MAAO,6BAA8Bn9P,UAAW,uBAAwB4K,wBAAyB,CAAEC,OAAQshB,KAAK04T,sBAAwBhlV,MAAO,CAC5KiG,SAAU,WACVhG,SAAU,UACVooQ,cAAe,OACfrsP,KAAM,EACN9V,IAAK,EACLE,OAAQ,IAEpB,EACO2+U,CACX,CA7DsC,CA6DpCllV,EAAAA,WCtFE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA8BzCw4T,EAAyB,yBAEzBC,EAA6C,SAAUtyT,GAEvD,SAASsyT,EAA4B57U,GACjC,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAIxC0C,EAAMmD,QAAU,KAIhBnD,EAAMq3T,YAAc,SAAUzsP,EAAK7nF,EAAOvR,GACtC,GAAIwuB,EAAMs3T,eAAgB,CACtB,IAAIf,GAAOgB,EAAAA,EAAAA,IAAOx0U,GAClBid,EAAM6L,SAAS,CAAE0qT,KAAMA,EAAM74U,iBAAiB85U,EAAAA,EAAAA,IAAgBjB,EAAKj7U,GAAI45U,MAAMuB,EAAAA,EAAAA,IAAQ1zU,GAAQ6nF,IAAKA,GACtG,MJ/BL,SAAkBoyM,EAAej6R,EAAO6nF,GAC3Cj4C,EAAMqqP,GAAiB,CAAEj6R,MAAOA,EAAO6nF,IAAKA,EAChD,CI+BgB6sP,CAASz3T,EAAM3vB,MAAMohC,KAAM1uB,EAAO6nF,GAEtC5qE,EAAM03T,oBAAoB30U,EAAOvR,EAAOA,EAAMi+B,YAClD,EAIAzP,EAAM23T,aAAe,SAAUzC,EAAM1jV,GACjC,IAAIuR,GAAQ60U,EAAAA,EAAAA,IAAiB1C,GAC7B,GAAIl1T,EAAMs3T,eAAgB,CACtB,IAAIf,GAAOgB,EAAAA,EAAAA,IAAOx0U,GACd6nF,GAAMf,EAAAA,EAAAA,IAAW9mF,EAAO,OAC5Bid,EAAM6L,SAAS,CAAE0qT,KAAMA,EAAM74U,iBAAiB85U,EAAAA,EAAAA,IAAgBjB,EAAKj7U,GAAI45U,KAAMA,EAAMtqP,IAAKA,GAC5F,MJpDL,SAAmBoyM,EAAej6R,EAAOmyU,GAC5CviS,EAAMqqP,GAAiB,CAAEj6R,MAAOA,EAAOmyU,KAAMA,EACjD,CIoDgB2C,CAAU73T,EAAM3vB,MAAMohC,KAAM1uB,EAAOmyU,GAEvCl1T,EAAM03T,oBAAoB30U,EAAOvR,EAAMk+B,eAAgBl+B,EAAMi+B,YACjE,EAIAzP,EAAM83T,oBAAsB,SAAUtmV,GAClCwuB,EAAM+3T,iBAAiB93U,OAAO2mB,OAAO,CAAC,EAAG5G,EAAM3vB,MAAMkmV,KAAM,CAAEl8U,EAAG7I,EAAMuR,MAAQ,MAAQvR,EAAMk+B,eAAgBl+B,EAAMi+B,YACtH,EAIAzP,EAAMg4T,kBAAoB,SAAUxmV,GAChCwuB,EAAM+3T,iBAAiB93U,OAAO2mB,OAAO,CAAC,EAAG5G,EAAM3vB,MAAMkmV,KAAM,CAAEj7U,EAAG9J,EAAMuR,QAAUvR,EAAMk+B,eAAgBl+B,EAAMi+B,YAChH,EAIAzP,EAAMihO,OAAS,SAAUjqP,GACrBgpB,EAAMi4T,gBAAgBp9S,UAAUE,IAAI,cACpC/a,EAAMk4T,eAAelhV,EAAExF,MAC3B,EAIAwuB,EAAM6gO,UAAY,WACd7gO,EAAMi4T,gBAAgBp9S,UAAUC,OAAO,aAC3C,EAIA9a,EAAMm4T,uBAAyB,SAAU3mV,GACrCwuB,EAAMk4T,eAAe1mV,EACzB,EAIAwuB,EAAMk4T,eAAiB,SAAU1mV,GAC7B,IAAI2kV,EAAsBn2T,EAAMo4T,yBAC5BC,EAAS7mV,EAAMujM,QAAUohJ,EAAoBnpU,KAC7CikQ,EAASz/Q,EAAMwjM,QAAUmhJ,EAAoBj/U,IAC7C8V,GAAOsrU,EAAAA,EAAAA,GAAcD,EAAQ,EAAGlC,EAAoBx+U,OACpDT,GAAMohV,EAAAA,EAAAA,GAAcrnE,EAAQ,EAAGklE,EAAoBx9U,QACnD49U,EAAOt2U,OAAO2mB,OAAO,CAAC,EAAG5G,EAAM3vB,MAAMkmV,KAAM,CAAExsT,EAAG/c,EAAOmpU,EAAoBx+U,MAAO6yF,EAAG,EAAItzF,EAAMi/U,EAAoBx9U,SACvHqnB,EAAM+3T,iBAAiBxB,EAAM/kV,EAAOA,EAAMi+B,YAC9C,EAIAzP,EAAMkH,QAAU,SAAUuI,GAClBzP,EAAMxkB,MAAM0rB,SACZlH,EAAMxkB,MAAM0rB,QAAQnD,UAAKvzB,EAAW,CAAEi/B,YAAaA,EAAa/X,OAAQsI,GAEhF,EAIAA,EAAMuF,MAAQ,YACVm9N,EAAAA,EAAAA,GAAyB1iO,EAAMmD,QACnC,GACAqQ,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAI1wB,EAAQvH,EAAMuH,OAASvH,EAAM3H,eAAgBg2F,EAAAA,EAAAA,IAAWstP,EAjGvD,QAmGL,OADAn3T,EAAM3vB,MAAQ4P,OAAO2mB,OAAO,CAAC,EAAGwwT,EAA4BmB,kBAAkBx1U,GAAQ,CAAEy1U,eAAe,EAAM/mT,MAAMA,EAAAA,EAAAA,OAC5GzR,CACX,CA8JA,OA9PAuD,EAAU6zT,EAA6BtyT,GAoGvCsyT,EAA4BxoG,yBAA2B,SAAUpzO,EAAOnL,GACpE,OAAImL,EAAMuH,QAAU1S,EAAMmoV,cAEfpB,EAA4BmB,kBAAkB/8U,EAAMuH,MAAO1S,EAAMohC,MAErE,IACX,EAIA2lT,EAA4B55T,UAAU4K,kBAAoB,WACtD9K,KAAKm7T,yBAAyBn7T,KAAKjtB,MAAMqN,iBACrC4f,KAAKjtB,MAAMmoV,eACXl7T,KAAKuO,SAAS,CAAE2sT,eAAe,GAEvC,EAIApB,EAA4B55T,UAAU6O,qBAAuB,WJlI1D,IAA2B2wQ,IImIR1/Q,KAAKjtB,MAAMohC,YJlI1BkhB,EAAMqqP,EImIb,EAIAo6C,EAA4B55T,UAAU8K,mBAAqB,SAAUpK,EAAGmlL,GAChEA,EAAU3lM,kBAAoB4f,KAAKjtB,MAAMqN,iBACzC4f,KAAKm7T,yBAAyBn7T,KAAKjtB,MAAMqN,gBAEjD,EAIA05U,EAA4B55T,UAAUk7T,0BAA4B,WAC9D,IAAI1nV,EAAQ,CAAC,EACb,IAAKssB,KAAKjtB,MAAMmoV,cAAe,CAC3B,IAAIrC,EAAsB74T,KAAK86T,yBAC3Bv0H,GAAS,EAAIvmM,KAAKjtB,MAAMkmV,KAAK/rP,GAAK2rP,EAAoBx9U,OACtDqU,EAAOsQ,KAAKjtB,MAAMkmV,KAAKxsT,EAAIosT,EAAoBx+U,MACnD3G,EAAMkG,IAAM,GAAGsK,OAAOqiN,EAAO,MAC7B7yN,EAAMgc,KAAO,GAAGxL,OAAOwL,EAAM,KACjC,CACA,OAAQnc,EAAAA,cAAoB,MAAO,CAAEwE,KAAM,SAAUwzB,UAAUkvC,EAAAA,EAAAA,GAAYz6C,KAAK9hB,MAAMqtB,SAAUvL,KAAK9hB,MAAMhE,UAAW,iBAAkB8lB,KAAK9hB,MAAMm9U,cAAe,gBAAiB1tP,SAAS3tE,KAAKjtB,MAAMu6F,IAAIvmF,UAAU,GAAI,IAAK,aAAciZ,KAAK9hB,MAAMo9U,aAAc,wBAAoBpoV,EAAW,gBAAiB8sB,KAAK9hB,MAAMhE,SAAW,YAAShH,EAAWW,UAAW,gCAAiCH,MAAOA,GACtZ,EAIAomV,EAA4B55T,UAAUu6T,iBAAmB,SAAUxB,EAAM7mT,EAAgBD,GACrF,IAAI1sB,GAAQ2zU,EAAAA,EAAAA,GAAgBH,GAC5B,GAAIj5T,KAAKg6T,eAAgB,CACrB,IAAI1sP,GAAMf,EAAAA,EAAAA,IAAW9mF,EAAO,OAC5Bua,KAAKuO,SAAS,CAAE0qT,KAAMA,EAAM74U,iBAAiB85U,EAAAA,EAAAA,IAAgBjB,EAAKj7U,GAAI45U,MAAMuB,EAAAA,EAAAA,IAAQ1zU,GAAQ6nF,IAAKA,GACrG,MJrLD,SAAmBoyM,EAAej6R,EAAOwzU,GAC5C5jS,EAAMqqP,GAAiB,CAAEj6R,MAAOA,EAAOwzU,KAAMA,EACjD,CIqLYsC,CAAUv7T,KAAKjtB,MAAMohC,KAAM1uB,EAAOwzU,GAEtCj5T,KAAKo6T,oBAAoB30U,EAAO2sB,EAAgBD,EACpD,EAIA2nT,EAA4B55T,UAAUk6T,oBAAsB,SAAU30U,EAAO2sB,EAAgBD,GACrFnS,KAAK9hB,MAAMsH,UACXwa,KAAK9hB,MAAMsH,SAASihB,UAAKvzB,EAAW,CAAEk/B,eAAgBA,EAAgBD,YAAaA,EAAa/X,OAAQ4F,KAAMva,MAAOA,GAE7H,EAIAq0U,EAA4BmB,kBAAoB,SAAUx1U,EAAOi6R,IACxDlsN,EAAAA,EAAAA,IAAU+Y,EAAAA,EAAAA,IAAW9mF,EAAO,UAE7BA,EAAQo0U,GAEZ,IAAIZ,EJvKL,SAAuBv5C,EAAej6R,GACzC,GAAIi6R,EAAe,CACf,IAAI87C,EAAcnmS,EAAMqqP,GACxB,OAAO87C,GAAeA,EAAY/1U,QAAUA,EAAQ+1U,EAAYvC,UAAO/lV,CAC3E,CAIJ,CI+JmBuoV,CAAc/7C,EAAej6R,KAAUw0U,EAAAA,EAAAA,IAAOx0U,GACrDmyU,EJ5JL,SAAuBl4C,EAAej6R,GACzC,GAAIi6R,EAAe,CACf,IAAI87C,EAAcnmS,EAAMqqP,GACxB,OAAO87C,GAAeA,EAAY/1U,QAAUA,EAAQ+1U,EAAY5D,UAAO1kV,CAC3E,CAIJ,CIoJmBwoV,CAAch8C,EAAej6R,KAAU0zU,EAAAA,EAAAA,IAAQ1zU,GACtD6nF,EJrLL,SAAsBoyM,EAAej6R,GACxC,GAAIi6R,EAAe,CACf,IAAI87C,EAAcnmS,EAAMqqP,GACxB,OAAO87C,GAAeA,EAAY/1U,QAAUA,EAAQ+1U,EAAYluP,SAAMp6F,CAC1E,CAIJ,CI6KkByoV,CAAaj8C,EAAej6R,KAAU8mF,EAAAA,EAAAA,IAAW9mF,EAAO,OAElE,MAAO,CAAEwzU,KAAMA,EAAM74U,iBADC85U,EAAAA,EAAAA,IAAgBjB,EAAKj7U,GACY45U,KAAMA,EAAMtqP,IAAKA,EAC5E,EAIAwsP,EAA4B55T,UAAUi7T,yBAA2B,SAAU/6U,GACnE4f,KAAK9hB,MAAMkX,SAAW4K,KAAK47T,aAAe57T,KAAK47T,YAAYC,cAC3D77T,KAAK47T,YAAYC,YAAYnoV,MAAMs9G,WAAa,wCAAwC9sG,OAAO9D,EAAiB,KAExH,EACAuC,OAAO6nB,eAAesvT,EAA4B55T,UAAW,iBAAkB,CAI3EuK,IAAK,WACD,YAA4Bv3B,IAArB8sB,KAAK9hB,MAAMuH,KACtB,EACAilB,YAAY,EACZC,cAAc,IAKlBmvT,EAA4B55T,UAAU46T,uBAAyB,WAC3D,OAAO96T,KAAK26T,gBAAgBh5O,uBAChC,EAIAm4O,EAA4B55T,UAAUnrB,OAAS,WAC3C,IAAI2tB,EAAQ1C,KACR87T,GAAKxsT,EAAAA,EAAAA,IAA2BtP,MAChCnsB,GAAYu7B,EAAAA,EAAAA,GAAW,kBAAmB,CAAE,aAAcpP,KAAK9hB,MAAMhE,UAAY8lB,KAAK9hB,MAAMrK,WAChG,OAAQN,EAAAA,cAAoB,MAAO,CAAEH,GAAI4sB,KAAK9hB,MAAM9K,GAAI2E,KAAMioB,KAAK9hB,MAAMnG,KAAMlE,UAAWA,EAAW,gBAAiBmsB,KAAK9hB,MAAMhE,SAAW,YAAShH,EAAWQ,MAAOssB,KAAK9hB,MAAMxK,MAAOK,IAAK,SAAUy3B,GAAM,OAAO9I,EAAMmD,QAAU2F,CAAI,EAAGD,UAAUkvC,EAAAA,EAAAA,GAAYz6C,KAAK9hB,MAAMqtB,SAAUvL,KAAK9hB,MAAMhE,UAAW,aAAc8lB,KAAK9hB,MAAMi9O,UAAW,kBAAmBn7N,KAAK9hB,MAAMs5B,eAAgB,mBAAoBxX,KAAK9hB,MAAMu5B,gBAAiB7N,QAAS5J,KAAK4J,SACzbr2B,EAAAA,cAAoB,MAAO,CAAEM,UAAW,mCACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,kBAAmBH,MAAO,CAAEs9G,WAAYhxF,KAAKjtB,MAAMqN,kBACvF7M,EAAAA,cAAoB0vP,EAAAA,EAAW,CAAEU,OAAQ3jO,KAAK2jO,OAAQJ,UAAWvjO,KAAKujO,UAAWxvP,IAAK,SAAUy3B,GAAM,OAAO9I,EAAMi4T,gBAAkBnvT,EAAKA,EAAGnD,aAAUn1B,CAAW,GAC9JK,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iBAAkBH,MAAO,CAAEq7P,YAAa,QAAU15P,QAAS2qB,KAAK66T,wBAA0B76T,KAAKo7T,8BAC3Ip7T,KAAK9hB,MAAMkC,kBAAoB4f,KAAKjtB,MAAMmoV,eACtC3nV,EAAAA,cAAoBklV,EAAkB,CAAEt5N,QAASn/F,KAAK26T,gBAAkB36T,KAAK86T,8BAA2B5nV,EAAW+lV,KAAMj5T,KAAKjtB,MAAMkmV,KAAM74U,gBAAiB4f,KAAK9hB,MAAMkC,mBAC9K7M,EAAAA,cAAoB,MAAO,CAAEM,UAAW,2BACpCN,EAAAA,cAAoB8oE,EAAAA,GAAQ,CAAE52D,MAAOua,KAAKjtB,MAAMkmV,KAAKj7U,EAAG07L,SAAS,EAAOxgK,UAAU,EAAMnkB,IAAK,EAAGG,IAAK,IAAKrB,KAAM,EAAGrO,SAAUwa,KAAK06T,kBAAmB7mV,UAAW,sCAAuCqG,SAAU8lB,KAAK9hB,MAAMhE,SAAUihP,UAAW2gG,EAAGtsT,iBAAiBusT,EAAAA,GAA6BrsT,EAAAA,GAASqsT,EAAAA,OAC3S/7T,KAAK9hB,MAAMkX,SACP7hB,EAAAA,cAAoB8oE,EAAAA,GAAQ,CAAE52D,OAAO+tE,EAAAA,EAAAA,GAAUxzD,KAAKjtB,MAAMkmV,KAAKl8U,GAAyB,IAApBijB,KAAKjtB,MAAMkmV,KAAKl8U,EAAU,IAAK28L,SAAS,EAAOxgK,UAAU,EAAMnkB,IAAK,EAAGG,IAAK,IAAKrB,KAAM,EAAGsnO,UAAW2gG,EAAGtsT,iBAAiBwsT,EAAAA,GAA+BtsT,EAAAA,GAASssT,EAAAA,KAAiCx2U,SAAUwa,KAAKw6T,oBAAqB3mV,UAAW,wCAAyCqG,SAAU8lB,KAAK9hB,MAAMhE,SAAUnG,IAAK,SAAUy3B,GAAM,OAAO9I,EAAMk5T,YAAcpwT,CAAI,MAC7bj4B,EAAAA,cAAoB0oV,EAAAA,EAAY,CAAErE,KAAM53T,KAAKjtB,MAAM6kV,KAAMyC,aAAcr6T,KAAKq6T,aAAc/sP,IAAKttE,KAAKjtB,MAAMu6F,IAAKysP,YAAa/5T,KAAK+5T,YAAa3kU,QAAS4K,KAAK9hB,MAAMkX,QAASlb,SAAU8lB,KAAK9hB,MAAMhE,SAAUgiV,iBAAkBl8T,KAAK9hB,MAAM2E,SACvOmd,KAAK9hB,MAAMkC,iBAAoB7M,EAAAA,cAAoBwjV,EAAqB,CAAEc,SAASsB,EAAAA,EAAAA,IAAQn5T,KAAK9hB,MAAMkC,iBAAkBw3U,KAAM53T,KAAKjtB,MAAM6kV,OACjJ,EACAkC,EAA4BhgT,YAAc,gBAI1CggT,EAA4B9tT,UAAY,CACpCz1B,aAAc01B,EAAAA,OACdxmB,MAAOwmB,EAAAA,OACPzmB,SAAUymB,EAAAA,KACVrC,QAASqC,EAAAA,KACT7W,QAAS6W,EAAAA,KACT7rB,gBAAiB6rB,EAAAA,OACjBppB,OAAQopB,EAAAA,IACR/xB,SAAU+xB,EAAAA,KACVv4B,MAAOu4B,EAAAA,IACP74B,GAAI64B,EAAAA,OACJl0B,KAAMk0B,EAAAA,OACNkvN,UAAWlvN,EAAAA,OACXuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjBp4B,UAAWo4B,EAAAA,QAKf6tT,EAA4BzwT,aAAe,CACvCjU,SAAS,EACTrd,KAAM,UACN8K,OAAQ,OAELi3U,CACX,CAhQiD,CAgQ/CvmV,EAAAA,WAQS4oV,GAA4B7hT,EAAAA,EAAAA,KAkB5B8hT,GAAgB5hT,EAAAA,EAAAA,GAAiB2hT,EAA2BrC,GACvEsC,EAActiT,YAAc,8HC3TxB7T,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAqD7C,QA/B8B,SAAUmG,GAEpC,SAAS60T,EAASn+U,GACd,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAexC,OAdA0C,EAAMld,SAAW,SAAUtR,GACvB,IAAIo5F,EAAMp5F,EAAMkmB,OAAO3U,MACnBA,GAAQ8mF,EAAAA,EAAAA,IAAWe,EAAK,QAC5B5qE,EAAM6L,SAAS,CAAE++D,IAAKA,KAClB9Z,EAAAA,EAAAA,GAAU/tE,IACVid,EAAMxkB,MAAM67U,YAAYzsP,EAAK7nF,EAAOvR,EAE5C,EACAwuB,EAAMoH,OAAS,YACN0pD,EAAAA,EAAAA,IAAU+Y,EAAAA,EAAAA,IAAW7pE,EAAM3vB,MAAMu6F,IAAK,UACvC5qE,EAAM6L,SAAS,CAAE++D,IAAK5qE,EAAM3vB,MAAMupV,aAE1C,EACA55T,EAAM3vB,MAAQ,CAAEu6F,IAAK5qE,EAAMxkB,MAAMovF,IAAKgvP,YAAa55T,EAAMxkB,MAAMovF,KACxD5qE,CACX,CAUA,OA5BAuD,EAAUo2T,EAAU70T,GAmBpB60T,EAASn8T,UAAUnrB,OAAS,WACxB,OAAQxB,EAAAA,cAAoBkI,EAAAA,GAAO,CAAEgK,MAAOua,KAAKjtB,MAAMu6F,IAAK9nF,SAAUwa,KAAKxa,SAAUskB,OAAQ9J,KAAK8J,OAAQ5vB,SAAU8lB,KAAK9hB,MAAMhE,UACnI,EACAmiV,EAAS/qG,yBAA2B,SAAUpzO,EAAOnL,GACjD,OAAImL,EAAMovF,MAAQv6F,EAAMupV,YACb,CAAEhvP,IAAKpvF,EAAMovF,IAAKgvP,YAAap+U,EAAMovF,KAEzC,IACX,EACO+uP,CACX,CA9B8B,CA8B5B9oV,EAAAA,gECpDE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAYI6vT,EAAQ,CAAC,OAAQ,MAAO,OAIxBN,EAA4B,SAAUz0T,GAEtC,SAASy0T,EAAW/9U,GAChB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAcxC,OAbA0C,EAAM85T,cAAgB,SAAUtoV,GAC5BwuB,EAAM+5T,mBAAmB,CAAEvoQ,EAAGhgF,EAAMuR,OAASvR,EACjD,EACAwuB,EAAMg6T,cAAgB,SAAUxoV,GAC5BwuB,EAAM+5T,mBAAmB,CAAEpwP,EAAGn4F,EAAMuR,OAASvR,EACjD,EACAwuB,EAAMi6T,cAAgB,SAAUzoV,GAC5BwuB,EAAM+5T,mBAAmB,CAAEr2T,EAAGlyB,EAAMuR,OAASvR,EACjD,EACAwuB,EAAMk6T,cAAgB,SAAU1oV,GAC5BwuB,EAAM+5T,mBAAmB,CAAE1/U,EAAG7I,EAAMuR,OAASvR,EACjD,EACAwuB,EAAM3vB,MAAQ,CAAE8pV,UAAW3+U,EAAMg+U,kBAAoBK,EAAM,IACpD75T,CACX,CA6DA,OA9EAuD,EAAUg2T,EAAYz0T,GAkBtBy0T,EAAW/7T,UAAUnrB,OAAS,WAC1B,IAAIs6B,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjD88T,EAAaztT,EAAoBG,iBAAiButT,EAAAA,GAAgBrtT,EAAAA,GAASstT,EAAAA,KAC3EC,EAAW5tT,EAAoBG,iBAAiButT,EAAAA,GAAgBrtT,EAAAA,GAASqtT,EAAAA,KACzEG,EAAW7tT,EAAoBG,iBAAiButT,EAAAA,GAAgBrtT,EAAAA,GAASytT,EAAAA,KACzEC,EAAW/tT,EAAoBG,iBAAiButT,EAAAA,GAAgBrtT,EAAAA,GAAS2tT,EAAAA,KACzEC,EAAWjuT,EAAoBG,iBAAiButT,EAAAA,GAAgBrtT,EAAAA,GAAS6tT,EAAAA,KACzEC,EAAsBnuT,EAAoBG,iBAAiBiuT,EAAAA,GAAiC/tT,EAAAA,GAAS+tT,EAAAA,KACzG,OAAQlqV,EAAAA,cAAoB,MAAO,CAAEM,UAAW,mCAC5CN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YACpCN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAE,aAAcqoV,EAAqBr5U,SAAU,OAAQ/O,KAAM,mBAAoBujC,QAAS+kT,EAAAA,IAAoB7pV,UAAW,4CAA6CwB,QAAS2qB,KAAK29T,mBAAmB9uT,KAAK7O,SACnN,QAAzBA,KAAKjtB,MAAM8pV,WACPtpV,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBACpCN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,iCACrCN,EAAAA,cAAoB8oV,EAAU,CAAE/uP,IAAKttE,KAAK9hB,MAAMovF,IAAKysP,YAAa/5T,KAAK9hB,MAAM67U,YAAa7/U,SAAU8lB,KAAK9hB,MAAMhE,YACnH3G,EAAAA,cAAoBiI,EAAAA,EAAO,CAAE3H,UAAW,+BAAiCipV,KACvD,QAAzB98T,KAAKjtB,MAAM8pV,WAAgD,SAAzB78T,KAAKjtB,MAAM8pV,YAC1CtpV,EAAAA,cAAoBA,EAAAA,SAAgB,KAChCA,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YACpCN,EAAAA,cAAoBkoE,EAAAA,EAAgB,CAAE0gI,UAAW,SAAU12L,MAAOua,KAAK9hB,MAAM05U,KAAK1jQ,EAAGinK,UAAWx0N,OAAO3G,KAAK9hB,MAAM05U,KAAK1jQ,GAAIn/D,IAAK,EAAGG,IAAK,IAAKy/P,UAAU,EAAO9xQ,OAAQ,IAAK2C,SAAUwa,KAAKw8T,cAAetiV,SAAU8lB,KAAK9hB,MAAMhE,WAC9N3G,EAAAA,cAAoBiI,EAAAA,EAAO,CAAE3H,UAAW,+BAAiCopV,IAC7E1pV,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YACpCN,EAAAA,cAAoBkoE,EAAAA,EAAgB,CAAE0gI,UAAW,SAAU12L,MAAOua,KAAK9hB,MAAM05U,KAAKvrP,EAAG8uJ,UAAWx0N,OAAO3G,KAAK9hB,MAAM05U,KAAKvrP,GAAIt3E,IAAK,EAAGG,IAAK,IAAKy/P,UAAU,EAAO9xQ,OAAQ,IAAK2C,SAAUwa,KAAK08T,cAAexiV,SAAU8lB,KAAK9hB,MAAMhE,WAC9N3G,EAAAA,cAAoBiI,EAAAA,EAAO,CAAE3H,UAAW,+BAAiCqpV,IAC7E3pV,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YACpCN,EAAAA,cAAoBkoE,EAAAA,EAAgB,CAAE0gI,UAAW,SAAU12L,MAAOua,KAAK9hB,MAAM05U,KAAKxxT,EAAG+0N,UAAWx0N,OAAO3G,KAAK9hB,MAAM05U,KAAKxxT,GAAIrR,IAAK,EAAGG,IAAK,IAAKy/P,UAAU,EAAO9xQ,OAAQ,IAAK2C,SAAUwa,KAAK28T,cAAeziV,SAAU8lB,KAAK9hB,MAAMhE,WAC9N3G,EAAAA,cAAoBiI,EAAAA,EAAO,CAAE3H,UAAW,+BAAiCupV,KAC5D,SAAzBp9T,KAAKjtB,MAAM8pV,WACPtpV,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YACpCmsB,KAAK9hB,MAAMkX,SACP7hB,EAAAA,cAAoBkoE,EAAAA,EAAgB,CAAE0gI,UAAW,SAAU12L,MAAOua,KAAK9hB,MAAM05U,KAAK76U,EAAGo+O,UAAWx0N,OAAO3G,KAAK9hB,MAAM05U,KAAK76U,GAAIgY,IAAK,EAAGG,IAAK,EAAGrB,KAAM,IAAM8gQ,UAAU,EAAO9xQ,OAAQ,KAAM2C,SAAUwa,KAAK48T,cAAe1iV,SAAU8lB,KAAK9hB,MAAMhE,WAC7O8lB,KAAK9hB,MAAMkX,SAAY7hB,EAAAA,cAAoBiI,EAAAA,EAAO,CAAE3H,UAAW,+BAAiCypV,IAChH,EACArB,EAAW/7T,UAAUu8T,mBAAqB,SAAUnuK,EAAUp6K,GAC1D,IAAI0jV,EAAO/iU,EAAS,CAAC,EAAGmL,KAAK9hB,MAAM05U,WAChB1kV,IAAfo7K,EAASp6F,IACT0jQ,EAAK1jQ,EAAIo6F,EAASp6F,QAEHhhF,IAAfo7K,EAASjiF,IACTurP,EAAKvrP,EAAIiiF,EAASjiF,QAEHn5F,IAAfo7K,EAASloJ,IACTwxT,EAAKxxT,EAAIkoJ,EAASloJ,QAEHlzB,IAAfo7K,EAASvxK,IACT66U,EAAK76U,EAAIuxK,EAASvxK,GAEtBijB,KAAK9hB,MAAMm8U,aAAazC,EAAM1jV,EAClC,EAEA+nV,EAAW/7T,UAAUy9T,mBAAqB,WACtC,IAAI/oU,EAAQ2nU,EAAM16U,OAAS,IAAM06U,EAAMthT,QAAQjb,KAAKjtB,MAAM8pV,WAAa,EAAIN,EAAMthT,QAAQjb,KAAKjtB,MAAM8pV,WAAa,EACjH,GAAK78T,KAAK9hB,MAAMkX,QAKZ4K,KAAKuO,SAAS,CAAEsuT,UAAWN,EAAM3nU,SALZ,CACrB,IAAI2/B,EAA6B,SAAjBgoS,EAAM3nU,GAAoBA,EAAQ,EAAIA,EACtDoL,KAAKuO,SAAS,CAAEsuT,UAAWN,EAAMhoS,IACrC,CAIJ,EACO0nS,CACX,CAhFgC,CAgF9B1oV,EAAAA,WACF,WACAg5B,EAAAA,EAAAA,IAAgB0vT,IAChBvrT,EAAAA,EAAAA,IAAwBurT,kICvHpB2B,EAAqC,WACrC,SAASA,IACL59T,KAAK69T,UAAY,EACrB,CAiEA,OAhEAD,EAAoB19T,UAAU49T,eAAiB,SAAUC,EAAS/gR,GAE9D,GADAh9C,KAAK69T,UAAY,IACXrqQ,EAAAA,EAAAA,GAAUuqQ,IAAYA,EAAQl8U,OAApC,CAGAm7D,EAAUA,GAAW+gR,EAAQl8U,OAC7B,IAAK,IAAIkhB,EAAQ,EAAGA,EAAQg7T,EAAQl8U,OAAQkhB,GAASi6C,EAAS,CAC1D,IAAIjiD,EAAMgjU,EAAQnvU,MAAMmU,EAAOi6C,EAAUj6C,GACzC/C,KAAK69T,UAAU78T,KAAKjG,EACxB,CALA,CAMJ,EACA6iU,EAAoB19T,UAAU89T,iBAAmB,SAAU1/U,GACvD,IAAIokB,EAAQ1C,KACZ,IAAKwzD,EAAAA,EAAAA,GAAUl1E,GAAf,CAGA,IAAI2/U,EAAc3/U,GAAQiuF,EAAAA,EAAAA,IAAWjuF,GAAO,GAAQA,EAChD6wI,EAAS,CAAC7wI,IACVk1E,EAAAA,EAAAA,GAAUyqQ,IACV9uM,EAAOnuH,KAAKi9T,EAAY/xP,QAAS+xP,EAAY9xP,aAejD,IAbA,IAAIgoF,EAAU,SAAUp5J,GAMpB,IALA,IAAImjU,EAAU,SAAUljU,GACpB,GAAIm0H,EAAOvwF,MAAK,SAAU7xC,GAAK,OAAOA,IAAM2V,EAAMm7T,UAAU9iU,GAAKC,EAAM,IACnE,MAAO,CAAEvV,MAAO,CAAEsV,IAAKA,EAAKC,IAAKA,GAEzC,EACSA,EAAM,EAAGA,EAAMmxT,EAAO0R,UAAU9iU,GAAKlZ,OAAQmZ,IAAO,CACzD,IAAImjU,EAAUD,EAAQljU,GACtB,GAAuB,kBAAZmjU,EACP,OAAOA,CACf,CACJ,EACIhS,EAASnsT,KACJjF,EAAM,EAAGA,EAAMiF,KAAK69T,UAAUh8U,OAAQkZ,IAAO,CAClD,IAAIqxT,EAAUj4J,EAAQp5J,GACtB,GAAuB,kBAAZqxT,EACP,OAAOA,EAAQ3mU,KACvB,CAvBA,CAwBJ,EACAm4U,EAAoB19T,UAAUk+T,WAAa,SAAUC,GACjD,IAAM7qQ,EAAAA,EAAAA,GAAU6qQ,KAAe7qQ,EAAAA,EAAAA,GAAUxzD,KAAK69T,UAAUQ,EAAWtjU,MAGnE,OAAOiF,KAAK69T,UAAUQ,EAAWtjU,KAAKsjU,EAAWrjU,IACrD,EACA4iU,EAAoB19T,UAAUo+T,YAAc,SAAUjqV,EAASkqV,EAAgBC,GAC3E,MAAMhrQ,EAAAA,EAAAA,GAAUn/E,KAAYm/E,EAAAA,EAAAA,GAAUn/E,EAAQ0mB,OAAQy4D,EAAAA,EAAAA,GAAUn/E,EAAQ2mB,MACpE,MAAO,CAAED,IAAK,EAAGC,IAAK,GAE1B,IAAID,EAAMiF,KAAKy+T,WAAWpqV,EAAQ0mB,IAAMyjU,EAAcx+T,KAAK69T,UAAUh8U,OAAS,GAE9E,MAAO,CAAEkZ,IAAKA,EAAKC,IADTgF,KAAKy+T,WAAWpqV,EAAQ2mB,IAAMujU,EAAgBv+T,KAAK69T,UAAU9iU,GAAKlZ,OAAS,GAEzF,EACA+7U,EAAoB19T,UAAUu+T,WAAa,SAAU7pU,EAAOM,GAExD,OAAIN,EADgB,IAIhBA,EAAQM,EACDA,EAEJN,CACX,EACOgpU,CACX,CArEyC,sGCLrC33T,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA2BlCq9T,EAAoB,GAQpBC,EAAiB,SAExBC,EAA4C,SAAUp3T,GAEtD,SAASo3T,EAA2B1gV,GAChC,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA+DxC,OA3DA0C,EAAMmD,QAAU,KAChBnD,EAAMm8T,eAAiB,KACvBn8T,EAAMyR,MAAOA,EAAAA,EAAAA,KAIbzR,EAAMuF,MAAQ,WACNvF,EAAMmD,SACNnD,EAAMmD,QAAQoC,OAEtB,EACAvF,EAAM+I,UAAY,SAAUv3B,GACxB,OAAQA,EAAMm2B,SACV,KAAKtD,EAAAA,EAAKI,KACNzE,EAAMo8T,qBAAqB,EAAG,GAC9B,MACJ,KAAK/3T,EAAAA,EAAKG,GACNxE,EAAMo8T,qBAAqB,GAAI,GAC/B,MACJ,KAAK/3T,EAAAA,EAAKltB,MACN6oB,EAAMo8T,qBAAqB,EAAG,GAC9B,MACJ,KAAK/3T,EAAAA,EAAKrX,KACNgT,EAAMo8T,sBAAsB,EAAG,GAC/B,MACJ,KAAK/3T,EAAAA,EAAK8L,MACNnQ,EAAMq8T,YAAY7qV,GAClB,MACJ,QAAS,OAEbA,EAAM+gB,gBACV,EACAyN,EAAMs8T,aAAe,SAAU1gV,EAAOpK,GAC9BwuB,EAAMs3T,eACNt3T,EAAM6L,SAAS,CAAE0wT,cAAe3gV,EAAO4gV,aAAc5gV,IAGrDokB,EAAM6L,SAAS,CAAE2wT,aAAc5gV,IAEnCokB,EAAM03T,oBAAoB97U,EAAOpK,EACrC,EACAwuB,EAAMkH,QAAU,SAAUuI,GACjBzP,EAAMm8T,iBAGXn8T,EAAM6L,SAAS,CAAE2wT,aAAcx8T,EAAM3vB,MAAMksV,eAAiBv8T,EAAMm8T,eAAehB,UAAU,GAAG,KAC1Fn7T,EAAMxkB,MAAM0rB,SACZlH,EAAMxkB,MAAM0rB,QAAQnD,UAAKvzB,EAAWi/B,GAE5C,EACAzP,EAAMoH,OAAS,WACXpH,EAAM6L,SAAS,CAAE2wT,kBAAchsV,GACnC,GACAgjC,EAAAA,EAAAA,GAAgBC,EAAAA,GAEhBzT,EAAM3vB,MAAQ,CACVksV,mBAAqC/rV,IAAtBwvB,EAAMxkB,MAAMuH,MAAsBid,EAAMxkB,MAAMuH,MAAQid,EAAMxkB,MAAM3H,aACjF2kV,eAAe,GAEZx4T,CACX,CAoJA,OAtNAuD,EAAU24T,EAA4Bp3T,GAsEtCo3T,EAA2B1+T,UAAUnrB,OAAS,WAC1C,IAAI2tB,EAAQ1C,KACRm/T,EAAcn/T,KAAKo/T,iBACnBC,EAAMr/T,KAAK6+T,eAAiB,IAAIjB,EACpCyB,EAAIvB,eAAeqB,EAAYhwM,OAAQgwM,EAAYniR,SACnD,IAAIsiR,EAAqBD,EAAIrB,iBAAiBh+T,KAAKjtB,MAAMksV,eACrDM,EAAoBF,EAAIrB,iBAAiBh+T,KAAKjtB,MAAMmsV,cACpDrrV,GAAYu7B,EAAAA,EAAAA,GAAW,iBAAkB,CAAE,aAAcpP,KAAK9hB,MAAMhE,UAAY8lB,KAAK9hB,MAAMrK,WAC/F,OAAIsrV,EAAYhwM,OAAOttI,OACXtO,EAAAA,cAAoB,MAAO,CAAEH,GAAI4sB,KAAK9hB,MAAM9K,GAAI2E,KAAM,OAAQlE,UAAWA,EAAW+1B,QAAS5J,KAAK4J,QAASE,OAAQ9J,KAAK8J,OAAQ2B,UAAWzL,KAAKyL,UAAW,gBAAiBzL,KAAK9hB,MAAMshV,eAAiBx/T,KAAK9hB,MAAMhE,SAAW,YAAShH,GAAY,kBAAmB8sB,KAAK9hB,MAAMs5B,eAAgB,mBAAoBxX,KAAK9hB,MAAMu5B,gBAAiBlM,UAAUkvC,EAAAA,EAAAA,GAAYz6C,KAAK9hB,MAAMqtB,SAAUvL,KAAK9hB,MAAMhE,UAAWnG,IAAK,SAAUy3B,GAAM,OAAO9I,EAAMmD,QAAU2F,CAAI,GACtcj4B,EAAAA,cAAoB,QAAS,CAAEM,UAAW,uBAAwBkE,KAAM,gBACpExE,EAAAA,cAAoB,QAAS,CAAEwE,KAAM,YAAcioB,KAAKy/T,WAAWJ,EAAIxB,UAAWyB,EAAoBC,MAKvG,EAEf,EAIAX,EAA2BttG,yBAA2B,SAAUpzO,EAAOnL,GACnE,GAAKA,EAAMmoV,oBAAiChoV,IAAhBgL,EAAMuH,OAU7B,GAAI1S,EAAMmoV,cACX,MAAO,CAAEA,eAAe,OAX2B,CAEnD,GAAoB,KAAhBh9U,EAAMuH,YAAwCvS,IAAxBH,EAAMksV,cAE5B,MAAO,CAAEA,mBAAe/rV,GAEvB,GAAoB,KAAhBgL,EAAMuH,OAAgBvH,EAAMuH,QAAU1S,EAAMksV,cACjD,MAAO,CAAEA,cAAe/gV,EAAMuH,MAEtC,CAIA,OAAO,IACX,EACAm5U,EAA2B1+T,UAAU4+T,qBAAuB,SAAUP,EAAgBC,GAClF,GAAKx+T,KAAK6+T,eAGV,GAAI7+T,KAAK0/T,yBAA0B,CAC/B,IAAIC,EAAY3/T,KAAK6+T,eAAeP,YAAYt+T,KAAK0/T,yBAA0BnB,EAAgBC,GAC/Fx+T,KAAKuO,SAAS,CAAE2wT,aAAcl/T,KAAK6+T,eAAeT,WAAWuB,IACjE,MAEI3/T,KAAKuO,SAAS,CAAE2wT,aAAcl/T,KAAK6+T,eAAehB,UAAU,GAAG,IAEvE,EACAe,EAA2B1+T,UAAU6+T,YAAc,SAAU7qV,GACrD8rB,KAAKg6T,gBACLh6T,KAAKuO,SAAS,CAAE0wT,cAAej/T,KAAKjtB,MAAMmsV,eAE9Cl/T,KAAKo6T,oBAAoBp6T,KAAKjtB,MAAMmsV,aAAchrV,EACtD,EACA0qV,EAA2B1+T,UAAUk6T,oBAAsB,SAAU30U,EAAOvR,IACxE0yM,EAAAA,EAAAA,GAAc5mL,KAAK9hB,MAAMsH,SAAUtR,EAAO8rB,KAAM,CAAEva,MAAOA,EAAOm6U,WAAWrzP,EAAAA,EAAAA,IAAW9mF,EAAO,SACjG,EACA9C,OAAO6nB,eAAeo0T,EAA2B1+T,UAAW,2BAA4B,CACpFuK,IAAK,WACD,OAAOzK,KAAKjtB,MAAMmsV,cAAgBl/T,KAAK6+T,eAAiB7+T,KAAK6+T,eAAeb,iBAAiBh+T,KAAKjtB,MAAMmsV,mBAAgBhsV,CAC5H,EACAw3B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo0T,EAA2B1+T,UAAW,iBAAkB,CAC1EuK,IAAK,WACD,YAA4Bv3B,IAArB8sB,KAAK9hB,MAAMuH,KACtB,EACAilB,YAAY,EACZC,cAAc,IAElBi0T,EAA2B1+T,UAAUk/T,eAAiB,WAClD,GAAkC,kBAAvBp/T,KAAK9hB,MAAM6/U,QAAsB,CACxC,IAAI8B,EAASC,EAAAA,EAAe9/T,KAAK9hB,MAAM6/U,SACvC,OAAIvqQ,EAAAA,EAAAA,GAAUqsQ,GACH,CACH1wM,OAAQ0wM,EAAO1wM,OACfnyE,QAASh9C,KAAK9hB,MAAM8+D,SAAW6iR,EAAO7iR,SA5JvB,IAgKZ,CAAEmyE,OAAQ,GAAInyE,QAAS,EAEtC,CAEI,MAAO,CAAEmyE,OAAQnvH,KAAK9hB,MAAM6/U,SAAW,GAAI/gR,QAASh9C,KAAK9hB,MAAM8+D,SApKxC,GAsK/B,EACA4hR,EAA2B1+T,UAAUu/T,WAAa,SAAU7kU,EAAM0kU,EAAoBC,GAClF,IAAI78T,EAAQ1C,KACZ,OAAOpF,EAAK3a,KAAI,SAAU8a,EAAK7a,GAC3B,OAAO3M,EAAAA,cAAoB,KAAM,CAAEwE,KAAM,MAAOuzB,IAAKprB,GAAKwiB,EAAMq9T,cAAchlU,EAAK7a,EAAGo/U,EAAoBC,GAC9G,GACJ,EACAX,EAA2B1+T,UAAU6/T,cAAgB,SAAU/iR,EAASmnJ,EAAUm7H,EAAoBC,GAClG,IAAI78T,EAAQ1C,KACRggU,OAAuC9sV,IAAvBosV,GAAoCA,EAAmBvkU,MAAQopM,EAC/Ey9C,EAAiB09E,GAAsBA,EAAmBtkU,IAC1DilU,OAAqC/sV,IAAtBqsV,GAAmCA,EAAkBxkU,MAAQopM,EAC5E+7H,EAAgBX,GAAqBA,EAAkBvkU,IACvDmlU,EAA0C,kBAAxBngU,KAAK9hB,MAAMiiV,SAC7BngU,KAAK9hB,MAAMiiV,SAAW,CAAE9lV,MAAO2lB,KAAK9hB,MAAMiiV,SAAU9kV,OAAQ2kB,KAAK9hB,MAAMiiV,UACvE9lV,EAAQ8lV,EAAS9lV,MAAQ,KACzBgB,EAAS8kV,EAAS9kV,OAAS,KAC/B,OAAO2hE,EAAQ/8D,KAAI,SAAU3B,EAAO4B,GAChC,IAAIgqQ,EAAa81E,GAAiBp+E,IAAmB1hQ,EACjDrM,GAAYu7B,EAAAA,EAAAA,GAAW,sBAAuB,CAC9C,aAAc86O,EACd,UAAW+1E,GAAgBC,IAAkBhgV,IAEjD,OAAQ3M,EAAAA,cAAoB,KAAM,CAAEwE,KAAM,WAAYlE,UAAWA,EAAW,aAAcyK,EAAO,kBAAiB4rQ,KAAoBxnP,EAAMxkB,MAAMhE,eAAWhH,EAAmBQ,MAAO,CAAE0M,gBAAiB9B,EAAOjE,MAAOA,EAAOgB,OAAQA,EAAQ43M,SAAU54M,GAAShF,QAAS,SAAUnB,GAAS,OAAOwuB,EAAMs8T,aAAa1gV,EAAOpK,EAAQ,EAAGd,GAAIsvB,EAAM09T,aAAa,CAAErlU,IAAKopM,EAAUnpM,IAAK9a,IAAMorB,IAAKprB,GACtY,GACJ,EACA0+U,EAA2B1+T,UAAUkgU,aAAe,SAAU/B,GAC1D,MAAO,GAAGn6U,OAAO8b,KAAKmU,KAAM,KAAKjwB,OAAOm6U,EAAWtjU,IAAK,KAAK7W,OAAOm6U,EAAWrjU,IACnF,EACA4jU,EAA2B9kT,YAAc,eAIzC8kT,EAA2B5yT,UAAY,CACnC+xT,QAAS9xT,EAAAA,UAAoB,CAACA,EAAAA,QAAkBA,EAAAA,OAAiBoY,YAAapY,EAAAA,SAC9E+wC,QAAS/wC,EAAAA,OACTk0T,SAAUl0T,EAAAA,IACV11B,aAAc01B,EAAAA,OACdxmB,MAAOwmB,EAAAA,OACP/xB,SAAU+xB,EAAAA,KACVV,SAAUU,EAAAA,OACVzmB,SAAUymB,EAAAA,KACVrC,QAASqC,EAAAA,KACT74B,GAAI64B,EAAAA,OACJuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjBp4B,UAAWo4B,EAAAA,QAKf2yT,EAA2Bv1T,aAAe,CACtC00T,QAASY,EACTwB,SAAUzB,GAEPE,CACX,CAxNgD,CAwN9CrrV,EAAAA,WAQS8sV,GAA2B/lT,EAAAA,EAAAA,KAiB3BgmT,GAAe9lT,EAAAA,EAAAA,GAAiB6lT,EAA0BzB,GACrE0B,EAAaxmT,YAAc,8NCvRvBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAeW6zT,EAAS,SAAUriV,GAC1B,IAAI67B,EAAgB77B,EAAM67B,eAAiB,CAAC,EACxCymT,EAAgC,QAAdtiV,EAAMyd,IAAgB,QAAU,OAClDqd,EAAczlC,EAAAA,SAAc,WAAc,MAAQ,CAAE0lC,WAAYunT,EAAiBtnT,SAX7D,SAWiG,GAAG,CAACsnT,IACzHrnT,EAAa5lC,EAAAA,SAAc,WAAc,MAAQ,CAAE0lC,WAAYunT,EAAiBtnT,SAR7D,MAQgG,GAAG,CAACsnT,IAC3H,OAAQjtV,EAAAA,cAAoBA,EAAAA,SAAgB,KACxC2K,EAAMswC,MACNtwC,EAAMk6L,OACN7kM,EAAAA,cAAoBqkC,EAAAA,EAAO/iB,EAAS,CAAEnhB,MAAOmhB,EAASA,EAAS,CAAC,GAAIklB,GAAiB,CAAC,GAAGrmC,OAAQ,CAAE29B,UAAWnzB,EAAMyd,OAAUoe,EAAe,CAAEjB,OAAQ56B,EAAMuiV,YAAaznT,YAAaA,EAAaG,WAAYA,EAAYjP,KAAMhsB,EAAMqQ,KAAMirB,OAAQt7B,EAAMs7B,OAAQ1vB,QAAS5L,EAAM4L,QAASjW,WAAWu7B,EAAAA,EAAAA,GAAW,UAAW2K,EAAclmC,aAAeqK,EAAM07C,SACxW,EACA2mS,EAAOzmT,YAAc,sFCnCjBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAsBIg0T,EAA2B,CAC3B3C,QAASY,EAAAA,GACTwB,SAAUzB,EAAAA,IAKVhlR,EAAe,SAAUttC,GACzB,YAAgBl5B,IAATk5B,CACX,EAOWu0T,GAA0BrmT,EAAAA,EAAAA,KAc1B6hC,EAAc5oE,EAAAA,YAAiB,SAAU08R,EAAa71Q,GAC7D,IAAI3iB,GACJy+B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAIj4B,GAAQ8nP,EAAAA,EAAAA,GAAgB26F,EAAyB1wD,GACjDrwP,GAAei/O,EAAAA,EAAAA,KACfhnR,EAAKqG,EAAM3E,KAAMA,OAAc,IAAP1B,EAAgBwxB,EAAa9vB,KAAO1B,EAAIK,EAAKgG,EAAMo5B,QAASA,OAAiB,IAAPp/B,EAAgBmxB,EAAaiO,QAAUp/B,EAAIG,EAAK6F,EAAMiG,SAAUA,OAAkB,IAAP9L,EAAgBgxB,EAAallB,SAAW9L,EAAI0hC,EAAgB77B,EAAM67B,cAAe6mT,EAAmB1iV,EAAM0iV,iBAAkBC,EAAkB3iV,EAAM2iV,gBAAiBjqT,EAAQ14B,EAAM04B,MAAO18B,EAAWgE,EAAMhE,SAAUqxB,EAAWrtB,EAAMqtB,SAAUmW,EAAOxjC,EAAMwjC,KAAMtsC,EAAO8I,EAAM9I,KAAMujC,EAAUz6B,EAAMy6B,QAASyyP,EAAgBltR,EAAMktR,cAAe5lR,EAAWtH,EAAMsH,SAAUokB,EAAU1rB,EAAM0rB,QAASE,EAAS5rB,EAAM4rB,OAAQymR,EAAqBryS,EAAMqyS,mBAAoB18S,EAAYqK,EAAMrK,UACzoBitV,EAAsBvtV,EAAAA,OAAa,MACnCwtV,EAAcxtV,EAAAA,OAAa,MAC3BytV,EAAaztV,EAAAA,OAAa,MAC1B0tV,EAAiB1tV,EAAAA,SACjB2tV,EAAY3tV,EAAAA,OAAa,MACzBkF,EAAKlF,EAAAA,UAAe,GAAQsiC,EAAUp9B,EAAG,GAAIsoP,GAAatoP,EAAG,GAC7DE,GAAKpF,EAAAA,SAAe2K,EAAM3H,cAAeksC,GAAa9pC,GAAG,GAAIolS,GAAgBplS,GAAG,GAChF0G,GAAK9L,EAAAA,UAAe,GAAQ4tV,GAAY9hV,GAAG,GAAI+hV,GAAe/hV,GAAG,GACjEw2U,GAAoBn8Q,EAAax7D,EAAMuH,OACvC47U,GAAmB3nR,EAAax7D,EAAMqQ,MACtC9I,GAAQowU,GAAoB33U,EAAMuH,MAAQg9B,GAC1Cl0B,GAAO8yU,GAAmBnjV,EAAMqQ,KAAO4yU,GACvCxhG,GAAepsP,EAAAA,aAAkB,WAC7ButV,EAAoBzsV,SACpBysV,EAAoBzsV,QAAQ4zB,OAEpC,GAAG,IACH10B,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CAEpDiO,QAASy4T,EAAoBzsV,QAC7B86C,cAAe+xS,EAAU7sV,QACzBoR,MAAOA,GACPwiB,MAAO03N,GACP,GAAG,CAACl6O,GAAOk6O,KACf,IAAInC,GAAUjqP,EAAAA,aAAkB,SAAU+tV,EAAUC,GAC3CF,MACIC,IAAaC,GAAUT,GAAuBA,EAAoBzsV,SACnEysV,EAAoBzsV,QAAQ4zB,QAEhCm5T,GAAaE,GAErB,GAAG,CAACD,KACA5X,GAAmBl2U,EAAAA,aAAkB,SAAUW,GAC/C,IAAI0+B,EAAS1+B,EAAM0+B,OAAQvI,EAAUn2B,EAAMm2B,QAC3C,GAAIA,IAAYtD,EAAAA,EAAKiP,IAIrB,OAAI3L,IAAYtD,EAAAA,EAAK8L,OAAUwuT,SAM3BzuT,GAAWvI,IAAYtD,EAAAA,EAAKG,IAAMmD,IAAYtD,EAAAA,EAAKI,OACnDjzB,EAAM+gB,iBACN/gB,EAAMs+B,kBACFnI,IAAYtD,EAAAA,EAAKG,IAAM45T,GAAuBA,EAAoBzsV,UAClEysV,EAAoBzsV,QAAQ4zB,QAC5Bu1N,IAAQ,IAERnzN,IAAYtD,EAAAA,EAAKI,MACjBq2N,IAAQ,MAbZtpP,EAAM+gB,iBACN/gB,EAAMs+B,uBACNgrN,IAASjvO,KANTivO,IAAQ,EAoBhB,GAAG,CAACjvO,GAAM8yU,KACNnwD,GAAgB39R,EAAAA,aAAkB,WAE7B8tV,KACGN,EAAY1sV,QACZ0sV,EAAY1sV,QAAQ4zB,QAEf+4T,EAAW3sV,SAChB2sV,EAAW3sV,QAAQ4zB,QAG/B,GAAG,CAACo5T,KACAG,GAAiBjuV,EAAAA,aAAkB,WACnCiqP,IAASjvO,IAAM,EACnB,GAAG,CAACA,KACAkzU,GAA4BluV,EAAAA,aAAkB,SAAUW,GACpDq8S,GACAA,EAAmB9pR,UAAKvzB,EAAW,CAC/Bk/B,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB1sB,MAAOA,IAGnB,GAAG,CAAC8qS,EAAoB9qS,KACpB2rR,GAAiB79R,EAAAA,aAAkB,SAAUW,GACzC+sV,EAAe5sV,SACfo6B,aAAawyT,EAAe5sV,SAC5B4sV,EAAe5sV,aAAUnB,GAOzB6tP,IAAW,GAEXn3N,GACAA,EAAQnD,UAAKvzB,EAAW,CACpBi/B,YAAaj+B,EAAMi+B,YACnBC,eAAgBl+B,GAG5B,GAAG,CAAC01B,IACA+qB,GAAgBphD,EAAAA,aAAkB,WAClCiqP,IAAQ,GAAO,GACfuD,IAAW,GACXkgG,EAAe5sV,aAAUnB,CAC7B,GAAG,IACCm+R,GAAgB99R,EAAAA,aAAkB,SAAUW,GAC5Cu6B,aAAawyT,EAAe5sV,SAC5B4sV,EAAe5sV,QAAU0E,OAAOi3B,WAAW2kB,IACvC7qB,GACAA,EAAOrD,UAAKvzB,EAAW,CACnBi/B,YAAaj+B,EAAMi+B,YACnBC,eAAgBl+B,GAG5B,GAAG,CAAC41B,IACAi6P,GAAkBxwR,EAAAA,aAAkB,SAAUW,EAAOwtV,GACrD,IAAIrnU,EAAeqnU,EAAYxtV,EAAM0rV,UAAY1rV,EAAMuR,MAClDowU,IACD93C,GAAc1jR,GAEdqnU,GACAlkG,IAAQ,GAERh4O,GACAA,EAASihB,UAAKvzB,EAAW,CACrBuS,MAAO4U,EACP8X,YAAaj+B,EAAMi+B,YACnBC,eAAgBl+B,EAAMk+B,gBAGlC,GAAG,CAACyjT,GAAmBrwU,IACnBm8U,GAAyBpuV,EAAAA,aAAkB,SAAUW,GAAS,OAAO6vR,GAAgB7vR,GAAO,EAAO,GAAG,CAACwlE,EAAcqqN,KACrHpoQ,IAAMs+N,EAAAA,EAAAA,GAAO6mG,EAAqB5iV,EAAMyd,KACxCxnB,IAAoB,IAAVyiC,EACd,OAAQrjC,EAAAA,cAAoB,OAAQ,CAAEH,GAAI8K,EAAM9K,GAAI2E,KAAM,WAAY,aAAcmG,EAAMi9O,UAAW,kBAAmBj9O,EAAMs5B,eAAgB,mBAAoBt5B,EAAMu5B,gBAAiB,gBAAiB,SAAU,gBAAiBlpB,GAAM,gBAAiBrU,EAAW,YAAShH,EAAWW,WAAWu7B,EAAAA,EAAAA,GAAW,gBAAiB,WAAY,iBAAkB33B,EAAK,CAAC,EAC9VA,EAAG,YAAYyM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EAC/D9B,EAAG,YAAYyM,OAAOC,IAAaA,EACnC1M,EAAG,aAAayM,OAAOk0B,EAAAA,EAAeE,WAAWhB,IAAYA,IAAYA,EACzE7/B,EAAG,cAAgBtD,GACnBsD,EAAG,cAAgByC,EACnBzC,EAAG,WAAao+B,EAChBp+B,EAAG5D,UAAYA,EACf4D,IAAM1D,IAAK+sV,EAAqBv1T,UAAUkvC,EAAAA,EAAAA,GAAYlvC,EAAUrxB,GAAW8F,MAAO9B,EAAM8B,MAAOyrB,UAAWg+S,GAAkB7/S,QAASwnQ,GAAgBtnQ,OAAQunQ,GAAe11Q,IAAKA,IACrLpoB,EAAAA,cAAoBgtV,EAAQ,CAAE5kU,IAAKA,GAAKpN,KAAMA,GAAMirB,OAAQ03P,GAAeuvD,YAAaK,EAAoBzsV,cAAWnB,EAAW6mC,cAAellB,EAAS,CAAC,EAAGklB,GAAgByU,MAAQj7C,EAAAA,cAAoB,OAAQ,CAAE8B,QAASosV,GAA2B5tV,UAAW,iBAC3PN,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,eAAgB,kBAAmB,CAC/E,cAAe3pB,GACf,uBAAyBrQ,GAAQujC,GAAWyyP,KAEhDA,GAAiB73R,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,uBAAwBg8P,MAC5FA,IAAkBh2R,GAAQujC,IAAYplC,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAMV,EAAMA,KAAMujC,IACzFplC,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,uBAAwBH,MAAO,CAAE0M,gBAAiBqF,QAAe2yL,OAAS7kM,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,UAAW,EAAG/xB,KAAM,SAAUnE,QAASmsV,GAAgB3tV,UAAW,iBAAkByjC,QAAS,KAAMliC,KAAM,iBAAkBujC,QAASymN,EAAAA,IAAkB,aAAcx/M,EAAapQ,iBAAiBoyT,EAAAA,GAAoClyT,EAAAA,GAASkyT,EAAAA,OAA0ChoS,QAAUrmD,EAAAA,cAAoBA,EAAAA,SAAgB,MACld,UAATmuC,GAA6B,aAATA,IAAyBnuC,EAAAA,cAAoB6oV,EAAAA,GAAevnU,EAAS,CAAC,EAAG+rU,EAAkB,CAAEr1T,SAAU,EAAGx3B,IAAKgtV,EAAat7U,MAAOA,GAAOD,SAAUu+Q,OAC/J,UAATriP,GAA6B,YAATA,IAAwBnuC,EAAAA,cAAoB+sV,EAAAA,GAAczrU,EAAS,CAAC,EAAGgsU,EAAiB,CAAE9sV,IAAKitV,EAAYv7U,MAAOA,GAAOD,SAAUm8U,SACxK,IACAxlR,EAAYnwC,UAAY,CACpBvmB,MAAOwmB,EAAAA,OACP11B,aAAc01B,EAAAA,OACd/xB,SAAU+xB,EAAAA,KACVyV,KAAMzV,EAAAA,MAAgB,CAAC,WAAY,UAAW,UAC9CtQ,IAAKsQ,EAAAA,OACL74B,GAAI64B,EAAAA,OACJ72B,KAAM62B,EAAAA,OACN0M,QAAS8gN,EAAAA,GACTjiN,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjB1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5D9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,OAAQ,YAClDp4B,UAAWo4B,EAAAA,QAEf,IAAI5C,EAAe,CACf9vB,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,QACVu9B,KAAM,UACNk/S,iBAvN4B,CAC5BxrU,SAAS,GAuNTyrU,gBAAiBH,GAErBvkR,EAAY9yC,aAAeA,EAC3B8yC,EAAYriC,YAAc,iECjPnB,IAAIgmT,EAAiB,CACxB+B,MAAO,CACH1yM,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAC1NnyE,QAAS,IAEb8kR,OAAQ,CACJ3yM,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClpBnyE,QAAS,IAEb+kR,KAAM,CACF5yM,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClpBnyE,QAAS,IAEbglR,OAAQ,CACJ7yM,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClpBnyE,QAAS,IAEbilR,QAAS,CACL9yM,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClpBnyE,QAAS,IAEbklR,WAAY,CACR/yM,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClpBnyE,QAAS,IAEbmlR,MAAO,CACHhzM,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClpBnyE,QAAS,IAEbolR,KAAM,CACFjzM,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClpBnyE,QAAS,IAEbqlR,UAAW,CACPlzM,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClpBnyE,QAAS,IAEbslR,KAAM,CACFnzM,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClpBnyE,QAAS,IAEbulR,MAAO,CACHpzM,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClpBnyE,QAAS,IAEbwlR,WAAY,CACRrzM,OAAQ,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAClInyE,QAAS,0IC7CbylR,EAAS,SAAU52P,GACnB,SAAS42P,EAAMh9U,GACX,IAAIihH,EAAS1mG,KAIb,GAFA6rE,EAAMplE,KAAKzG,MAEc,IAArB0M,UAAU7qB,OAIV,IAHA,IAAIi5N,EAAU2nH,EAAM3nH,QAChB4nH,EAAgB1iU,KAAK2iU,aAAal9U,GAE7B3B,EAAM,EAAGA,EAAMg3N,EAAQj5N,OAAQiC,IAAO,CAC3C,IAAI8+U,EAAc9nH,EAAQh3N,GAAKw1J,GAC3BupL,EAAY/nH,EAAQh3N,GAAK89D,QACzBwtB,EAAQwzP,EAAY7nS,KAAK2nS,GAE7B,GAAItzP,EAAO,CACP,IAAI0zP,EAAWD,EAAUzzP,GACzBs3B,EAAOxyC,EAAI4uQ,EAAS,GACpBp8N,EAAOr6B,EAAIy2P,EAAS,GACpBp8N,EAAOtgG,EAAI08T,EAAS,EACxB,CACJ,MAEA9iU,KAAKk0D,EAAIxnD,UAAU,GACnB1M,KAAKqsE,EAAI3/D,UAAU,GACnB1M,KAAKoG,EAAIsG,UAAU,GAGvB1M,KAAKk0D,EAAIl0D,KAAK+iU,cAAc/iU,KAAKk0D,GACjCl0D,KAAKqsE,EAAIrsE,KAAK+iU,cAAc/iU,KAAKqsE,GACjCrsE,KAAKoG,EAAIpG,KAAK+iU,cAAc/iU,KAAKoG,EACrC,CA2EA,OAzEKylE,IAAQ42P,EAAMn8T,UAAYulE,GAC/B42P,EAAMviU,UAAYvd,OAAOkkB,OAAQglE,GAASA,EAAM3rE,WAChDuiU,EAAMviU,UAAU0G,YAAc67T,EAE9BA,EAAMviU,UAAU8rE,MAAQ,WACpB,IAAIwB,EAAMxtE,KAAKgjU,SACX9uQ,EAAIl0D,KAAKk0D,EAAEh/B,SAAS,IACpBm3C,EAAIrsE,KAAKqsE,EAAEn3C,SAAS,IACpB9uB,EAAIpG,KAAKoG,EAAE8uB,SAAS,IAExB,MAAO,IAAMs4C,EAAItZ,GAAKsZ,EAAInB,GAAKmB,EAAIpnE,EACvC,EAEAq8T,EAAMviU,UAAUyiU,aAAe,SAAuBl9U,GAClD,IAAInH,EAAQmH,GAAS,QAUrB,MARwB,MAApBnH,EAAMmqD,OAAO,KACbnqD,EAAQA,EAAM+oG,OAAO,EAAG,IAI5B/oG,GADAA,EAAQA,EAAM4O,QAAQ,KAAM,KACdsoC,cACdl3C,EAAQmkV,EAAM/2P,YAAYptF,IAAUA,CAGxC,EAEAmkV,EAAMviU,UAAU6iU,cAAgB,SAAwBt9U,GACpD,OAAIA,EAAQ,GAAKouE,MAAMpuE,GACZ,EAGJA,EAAQ,IAAM,IAAMA,CAC/B,EAEAg9U,EAAMviU,UAAU8iU,SAAW,SAAmBv9U,GAC1C,OAAyB,IAAjBA,EAAM5D,OAAgB,IAAM4D,EAAQA,CAChD,EAEAg9U,EAAMviU,UAAU+iU,WAAa,SAAqBx9U,GAC9C,IAAI4jD,EAAQv0C,KAAKu0C,MAMjB,OAJArpC,KAAKk0D,EAAI7qB,EAAMrpC,KAAK+iU,cAAc/iU,KAAKk0D,EAAIzuE,IAC3Cua,KAAKqsE,EAAIhjC,EAAMrpC,KAAK+iU,cAAc/iU,KAAKqsE,EAAI5mF,IAC3Cua,KAAKoG,EAAIijC,EAAMrpC,KAAK+iU,cAAc/iU,KAAKoG,EAAI3gB,IAEpCua,IACX,EAEAyiU,EAAMviU,UAAUgjU,eAAiB,WAC7B,OAAOpuU,KAAK+3E,KAAK,KAAQ7sE,KAAKk0D,EAAIl0D,KAAKk0D,EAAI,KAAQl0D,KAAKqsE,EAAIrsE,KAAKqsE,EAAI,KAAQrsE,KAAKoG,EAAIpG,KAAKoG,EAC/F,EAEAq8T,EAAMviU,UAAUijU,OAAS,WACrB,OAAOnjU,KAAKkjU,iBAzFA,GA0FhB,EAEAT,EAAMW,UAAY,SAAoBlvQ,EAAGmY,EAAGjmE,EAAGrpB,GAC3C,OAAO,IAAIgwF,EAAAA,GAAM7Y,EAAGmY,EAAGjmE,EAAQ,MAALrpB,EAAYA,EAAI,EAC9C,EAEA0lV,EAAMY,QAAU,SAAkBnvQ,EAAGmY,EAAGjmE,EAAGrpB,GACvC,OAAO,IAAIiwF,EAAAA,GAAI9Y,EAAGmY,EAAGjmE,EAAQ,MAALrpB,EAAYA,EAAI,EAC5C,EAEA0lV,EAAMa,QAAU,SAAkBtlV,EAAGyuB,EAAGygE,EAAGnwF,GACvC,OAAO,IAAIowF,EAAAA,GAAInvF,EAAGyuB,EAAGygE,EAAQ,MAALnwF,EAAYA,EAAI,EAC5C,EAEA0lV,EAAMc,QAAU,SAAkBvlV,EAAGyuB,EAAGmqB,EAAG75C,GACvC,OAAO,IAAIswF,EAAAA,GAAIrvF,EAAGyuB,EAAGmqB,EAAQ,MAAL75C,EAAYA,EAAI,EAC5C,EAEO0lV,CACX,CA3Ga,CA2GX52P,EAAAA,GAEF42P,EAAM3nH,QAAU,CAAE,CACdxhE,GAAI,+CACJ13F,QAAS,SAASwtB,GACd,MAAO,CACHzB,SAASyB,EAAM,GAAI,IAAKzB,SAASyB,EAAM,GAAI,IAAKzB,SAASyB,EAAM,GAAI,IAE3E,GACD,CACCkqE,GAAI,0BACJ13F,QAAS,SAASwtB,GACd,MAAO,CACHzB,SAASyB,EAAM,GAAI,IAAKzB,SAASyB,EAAM,GAAI,IAAKzB,SAASyB,EAAM,GAAI,IAE3E,GACD,CACCkqE,GAAI,0BACJ13F,QAAS,SAASwtB,GACd,MAAO,CACHzB,SAASyB,EAAM,GAAKA,EAAM,GAAI,IAC9BzB,SAASyB,EAAM,GAAKA,EAAM,GAAI,IAC9BzB,SAASyB,EAAM,GAAKA,EAAM,GAAI,IAEtC,IAGJqzP,EAAM/2P,YAAcA,EAAAA,EAEpB,wBCvIWa,EAAa,SAAU9mF,EAAO5C,EAAQo3E,QAChC,IAATA,IAAmBA,GAAO,GAG9B,IAAwC,IAFnB,CAAC,MAAO,QAEVh/C,QAAQp4B,GACvB,MAAM,IAAIwpB,MAAM,oCAAoCnoB,OAAOrB,EAAQ,kDAEvE,IAAK2wE,EAAAA,EAAAA,GAAU/tE,GAAf,CAGA,IAAIw4U,GAAcp7R,EAAAA,EAAAA,IAAMp9C,EAAMi0C,OAAQugC,GACtC,IAAKzG,EAAAA,EAAAA,GAAUyqQ,GAGf,MAAkB,QAAXp7U,EAAmBo7U,EAAY/xP,QAAU+xP,EAAY9xP,WAL5D,CAMJ,EAMW8tP,EAAS,SAAUx0U,EAAOw0E,QACpB,IAATA,IAAmBA,GAAO,GAC9B,IAAIt1B,GAAS9B,EAAAA,EAAAA,IAAMp9C,EAAOw0E,GAC1B,OAAKzG,EAAAA,EAAAA,GAAU7uB,GAGRA,EAAOmnC,QAFH,CAAC,CAGhB,EAMWqtP,EAAU,SAAU1zU,EAAOw0E,QACrB,IAATA,IAAmBA,GAAO,GAC9B,IAAIt1B,GAAS9B,EAAAA,EAAAA,IAAMp9C,EAAOw0E,GAC1B,OAAKzG,EAAAA,EAAAA,GAAU7uB,GAGRA,EAAOsnC,UAFH,CAAC,CAGhB,EAMWmtP,EAAkB,SAAUH,GACnC,IAAIuK,GAAMxI,EAAAA,EAAAA,GAAc/B,EAAKj7U,EAAG,EAAG,OAC/B+6U,GAAaiC,EAAAA,EAAAA,GAAc/B,EAAKxsT,EAAG,EAAG,GACtChnB,GAAQu1U,EAAAA,EAAAA,GAAc/B,EAAK/rP,EAAG,EAAG,GACjCK,GAAQytP,EAAAA,EAAAA,GAAc/B,EAAKl8U,EAAG,EAAG,GACrC,OAAO0lV,EAAMa,QAAQE,EAAKzK,EAAYtzU,EAAO8nF,GAAOpB,WACxD,EAOW+tP,EAAkB,SAAUsJ,GACnC,OAAOpK,EAAgB,CAAEp7U,EAAGwlV,EAAK/2T,EAAG,EAAGygE,EAAG,EAAGnwF,EAAG,GACpD,EAMWu9U,EAAmB,SAAU1C,GACpC,IAAIluP,GAAMsxP,EAAAA,EAAAA,GAAcpD,EAAK1jQ,EAAG,EAAG,KAC/BwR,GAAQs1P,EAAAA,EAAAA,GAAcpD,EAAKvrP,EAAG,EAAG,KACjCzJ,GAAOo4P,EAAAA,EAAAA,GAAcpD,EAAKxxT,EAAG,EAAG,KAChCmnE,GAAQytP,EAAAA,EAAAA,GAAcpD,EAAK76U,EAAG,EAAG,GACrC,OAAO0lV,EAAMW,UAAU15P,EAAKhE,EAAO9C,EAAM2K,GAAOpB,WACpD,EAMWs3P,EAAiB,SAAU74C,EAAiBxqS,GACnD,IAAI8tI,GAAK8sM,EAAAA,EAAAA,GAAcpwC,EAAgB12N,EAAG,EAAG,KACzC+H,GAAK++P,EAAAA,EAAAA,GAAcpwC,EAAgBv+M,EAAG,EAAG,KACzCoqB,GAAKukO,EAAAA,EAAAA,GAAcpwC,EAAgBxkR,EAAG,EAAG,KACzCnd,GAAK+xU,EAAAA,EAAAA,GAAcpwC,EAAgB7tS,EAAG,EAAG,GACzCoxI,GAAK6sM,EAAAA,EAAAA,GAAc56U,EAAgB8zE,EAAG,EAAG,KACzCk6D,GAAK4sM,EAAAA,EAAAA,GAAc56U,EAAgBisF,EAAG,EAAG,KACzCwqB,GAAKmkO,EAAAA,EAAAA,GAAc56U,EAAgBgmB,EAAG,EAAG,KAC7C,MAAO,CACH8tD,EAAGp/D,KAAKu0C,OAAQ,EAAIpgD,GAAMklI,EAAOllI,EAAKilI,GACtC7hD,EAAGv3E,KAAKu0C,OAAQ,EAAIpgD,GAAMmlI,EAAOnlI,EAAKgzE,GACtC71D,EAAGtR,KAAKu0C,OAAQ,EAAIpgD,GAAM4tG,EAAO5tG,EAAKwtG,GAE9C,EAMWitO,EAAe,SAAUt3P,GAChC,IAAIrvF,EAAI,CAACqvF,EAAIlY,GAAK,EAAGkY,EAAIC,GAAK,EAAGD,EAAIhmE,GAAK,GAAGnmB,KAAI,SAAUitF,GAEvD,OADAA,GAAK,MACO,OACNA,EAAI,MACJp4E,KAAKg4E,KAAKI,EAAI,MAAS,MAAO,IACxC,IACA,MAAc,MAAPnwF,EAAE,GAAqB,MAAPA,EAAE,GAAqB,MAAPA,EAAE,EAC7C,EAiBW46U,EAA0B,SAAU56U,EAAGqpB,GAC9C,OAZ+Bu9T,EAYZD,EAAaD,EAAe1mV,EAAGqpB,IAZPw9T,EAYYF,EAAaD,EAAer9T,EAAG,CAAE8tD,EAAG,EAAGmY,EAAG,EAAGjmE,EAAG,EAAGrpB,EAAG,MAX7F+X,KAAKI,IAAIyuU,EAAYC,GAEjB,MADN9uU,KAAKC,IAAI4uU,EAAYC,GAElB,KAJI,IAAUD,EAAYC,CAa/C,wDClIO,IAAIpwQ,EAAY,SAAU/tE,GAAS,OAAiB,OAAVA,QAA4BvS,IAAVuS,CAAqB,EAW7Eu1U,EAAgB,SAAU6I,EAAW9uU,EAAKG,GACjD,OAAKs+D,EAAUqwQ,IAAchwQ,MAAMgwQ,IAG5BA,GAAa9uU,EAFTA,EAEqB8uU,GAAa3uU,EAAMA,EAAM2uU,CAC7D,qJCnBI59T,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAQIknV,EAAqC,SAAUt8T,GAE/C,SAASs8T,EAAoB5lV,GACzB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA+DxC,OA9DA0C,EAAM0rB,OAAS,KACf1rB,EAAMwvP,UAAW/9O,EAAAA,EAAAA,KAIjBzR,EAAMuF,MAAQ,WACNvF,EAAM0rB,QACN1rB,EAAM0rB,OAAOnmB,OAErB,EACAvF,EAAMqhU,UAAY,SAAUhxV,GACxB,IAAI2J,GAAS,EACb,IAAK,IAAI0vB,KAAQr5B,EACTA,EAAMyzB,eAAe4F,KACrB1vB,EAASA,GAAUkuB,QAAQ73B,EAAMq5B,KAGzC,OAAO1vB,CACX,EAIAgmB,EAAM0vP,YAAc,WACZ1vP,EAAM0rB,QAAU1rB,EAAM0rB,OAAOikO,oBAC7B3vP,EAAMmV,SAASjB,QAAUlU,EAAMsU,eACzBtU,EAAM0rB,OAAO7Q,UAAUC,OAAO,aAC9B9a,EAAM0rB,OAAO7Q,UAAUE,IAAI,aACjC/a,EAAM0rB,OAAOikO,kBAAkB3vP,EAAMmV,SAASjB,MACxC,GACAlU,EAAMxkB,MAAMw4B,mBAAqB,IAE/C,EACAhU,EAAMgH,aAAe,SAAUx1B,GAC3BwuB,EAAM6L,SAAS,CACX9oB,MAAOvR,EAAMkmB,OAAO3U,QAExBid,EAAMiT,oBAAsBzhC,EAAMkmB,OAAO3U,MACrCid,EAAMxkB,MAAMsH,UACZkd,EAAMxkB,MAAMsH,SAASihB,UAAKvzB,EAAW,CACjCk/B,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB1sB,MAAOvR,EAAMkmB,OAAO3U,MACpB2U,OAAQsI,IAGhBA,EAAMiT,yBAAsBziC,CAChC,EAIAwvB,EAAMshU,eAAiB,SAAUtqV,GAC7B,GAAwB,kBAApBA,EAAEuqV,cAAmC,CACrC,IAAIC,EAAWxqV,EAAE0gB,OAAOykF,WACpBqlP,GAAYA,EAAS3mT,UAAUg7C,SAAS,YACxC2rQ,EAAS3mT,UAAUC,OAAO,UAElC,CACJ,GACAtH,EAAAA,EAAAA,GAAgBC,EAAAA,GAChBzT,EAAM3vB,MAAQ,CACV0S,MAAOid,EAAMxkB,MAAM3H,cAAgButV,EAAoBz6T,aAAa9yB,cAEjEmsB,CACX,CAgIA,OAlMAuD,EAAU69T,EAAqBt8T,GAmE/B7kB,OAAO6nB,eAAes5T,EAAoB5jU,UAAW,UAAW,CAI5DuK,IAAK,WACD,OAAOzK,KAAKouB,MAChB,EACA1jB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAes5T,EAAoB5jU,UAAW,QAAS,CAI1DuK,IAAK,WACD,YAAoCv3B,IAA7B8sB,KAAK2V,oBACN3V,KAAK2V,yBACgBziC,IAArB8sB,KAAK9hB,MAAMuH,MACPua,KAAK9hB,MAAMuH,MACXua,KAAKjtB,MAAM0S,KACzB,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAes5T,EAAoB5jU,UAAW,OAAQ,CAIzDuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMpI,IACtB,EACA40B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAes5T,EAAoB5jU,UAAW,WAAY,CAI7DuK,IAAK,WACD,IAAI/tB,EAAS,CACTynV,WAAUnkU,KAAKouB,QAASpuB,KAAKouB,OAAOvW,SAASssT,SAC7CC,kBAAiBpkU,KAAKouB,QAChBpuB,KAAKouB,OAAOvW,SAASusT,gBAE3BvtT,gBAAe7W,KAAKouB,QAASpuB,KAAKouB,OAAOvW,SAAShB,cAClDC,iBAAgB9W,KAAKouB,QAASpuB,KAAKouB,OAAOvW,SAASf,eACnDutT,eAAcrkU,KAAKouB,QAASpuB,KAAKouB,OAAOvW,SAASwsT,aACjDC,UAAStkU,KAAKouB,QAASpuB,KAAKouB,OAAOvW,SAASysT,QAC5CC,eAAcvkU,KAAKouB,QAASpuB,KAAKouB,OAAOvW,SAAS0sT,aACjDxtT,eAAc/W,KAAKouB,QAASpuB,KAAKouB,OAAOvW,SAASd,cAErD,OAAOliB,EAASA,EAAS,CAAC,EAAGnY,GAAS,CAAE+5B,iBAA8CvjC,IAAjC8sB,KAAK9hB,MAAMw4B,kBAAiCE,WAA4B1jC,IAArB8sB,KAAK9hB,MAAM04B,MACzG5W,KAAK9hB,MAAM04B,OACX5W,KAAKouB,SACApuB,KAAK+jU,UAAUrnV,IAElC,EACAguB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAes5T,EAAoB5jU,UAAW,iBAAkB,CAInEuK,IAAK,WACD,YAAqCv3B,IAA9B8sB,KAAK9hB,MAAM84B,eACZhX,KAAK9hB,MAAM84B,eACX8sT,EAAoBz6T,aAAa2N,cAC3C,EACAtM,YAAY,EACZC,cAAc,IAKlBm5T,EAAoB5jU,UAAU4K,kBAAoB,WAC9C9K,KAAK+K,aACT,EAIA+4T,EAAoB5jU,UAAU8K,mBAAqB,WAC/ChL,KAAKoyP,aACT,EAIA0xE,EAAoB5jU,UAAUnrB,OAAS,WACnC,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOrK,EAAY4D,EAAG5D,UAAWgC,EAAQ4B,EAAG5B,MAAO+lE,EAAiBnkE,EAAGmkE,eAAgBxoE,EAAKqE,EAAGrE,GAEzCokC,GAFiE//B,EAAGi/B,kBAAkCj/B,EAAGlB,aAAsBkB,EAAGm/B,MAE5Ln/B,EAAG0jE,QAAmB1jE,EAAGkjE,QAAoBljE,EAAG2jE,SAA2B3jE,EAAG+/B,gBAAgBC,EAAkBhgC,EAAGggC,gBAAqD/jC,GAAnB+D,EAAGu/B,eAAwBv/B,EAAG/D,OAAOynP,EAAY1jP,EAAG0jP,UAAWj9O,EAAQsc,EAAO/iB,EAAI,CAAC,YAAa,QAAS,iBAAkB,KAAM,oBAAqB,eAAgB,QAAS,UAAW,UAAW,WAAY,iBAAkB,kBAAmB,iBAAkB,QAAS,cAC5a08Q,EAAU/gR,GAAM4sB,KAAKkyP,SACrB/9Q,GAAW6rB,KAAKgX,gBAAkBhX,KAAK6X,SAASjB,MAChD4tT,GAAiBp1T,EAAAA,EAAAA,GAAWv7B,EAAW,iDACvC4wV,EAAWlxV,EAAAA,cAAoB,QAASshB,EAAS,CAAE,kBAAmB2iB,EAAgB,mBAAoBC,EAAiB,gBAAiBzX,KAAK9hB,MAAMhE,eAAYhH,EAAW,gBAAiBiB,QAAWjB,EAAW,aAAcioP,QAAajoP,GAAagL,EAAO,CAAExK,MAAQmC,OAExQ3C,EADAQ,EACW+R,MAAOua,KAAKva,MAAOrS,GAAI+gR,EAAStgR,UAAW2wV,EAAgBh/U,SAAUwa,KAAK0J,aAAcg7T,iBAAkB1kU,KAAKgkU,eAAgBjwV,IAAK,SAAUy3B,GAC3J9I,EAAM0rB,OAAS5iB,CACnB,KACJ,OAAO31B,EACFtC,EAAAA,cAAoBkqE,EAAAA,EAAe,CAAE5nE,MAAOA,EAAO+lE,eAAgBA,EAAgBviC,SAAU86O,EAASz2M,YAAa/2C,OAAO3G,KAAKva,OAAQ6zB,YAAanlC,EAASolC,eAAgBr7B,EAAMhE,SAAUqlS,kBAAmBrhS,EAAMX,YAAa9J,SAAUgxV,EAAS/wV,MAAOA,EAAOioB,IAAKzd,EAAMyd,MAC9Q8oU,CACV,EACAX,EAAoBhqT,YAAc,QAIlCgqT,EAAoB93T,UAAY,CAC5Bn2B,MAAOo2B,EAAAA,OACP2vC,eAAgB3vC,EAAAA,OAChByK,kBAAmBzK,EAAAA,OACnB0K,SAAU1K,EAAAA,KACVgO,SAAUhO,EAAAA,KACV74B,GAAI64B,EAAAA,OACJuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjBkvN,UAAWlvN,EAAAA,QAKf63T,EAAoBz6T,aAAe,CAC/B9yB,aAAc,GACdogC,UAAU,EACVK,gBAAgB,GAEb8sT,CACX,CApMyC,CAoMvCvwV,EAAAA,WAQSoxV,GAAoBrqT,EAAAA,EAAAA,KASpB7+B,GAAQ++B,EAAAA,EAAAA,GAAiBmqT,EAAmBb,GACvDroV,EAAMq+B,YAAc,wFClQhBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAMWqrQ,EAAcxkS,EAAAA,YAAiB,SAAU2K,EAAOnK,GACvD,IAAIqmB,EAAS7mB,EAAAA,OAAa,MACtB80B,EAAU90B,EAAAA,OAAa,MAG3B,OAFAA,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CAAEiO,QAASA,EAAQh0B,QAAY,IACvFd,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IAC5Dd,EAAAA,cAAoB,OAAQshB,EAAS,CAAC,EAAG3W,EAAO,CAAErK,WAAWu7B,EAAAA,EAAAA,GAAW,iBAAkBlxB,EAAMrK,aAC5G,IACAkkS,EAAYj+P,YAAc,g3ECbtB8qT,EAAe,yBAiBRC,EAAkBtxV,EAAAA,YAAiB,SAAU2K,EAAOnK,IAC3DmiC,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAI/b,EAAS7mB,EAAAA,OAAa,MACtBuxV,EAAqBvxV,EAAAA,OAAa,MAClCwxV,EAAmBxxV,EAAAA,OAAa,MAChCkE,EAAKyG,EAAM3H,aAAcA,OAAsB,IAAPkB,EAAgBmtV,EAAentV,EAAII,EAAKqG,EAAM8mV,YAAaA,OAAqB,IAAPntV,GAAuBA,EAAIK,EAAKgG,EAAM+mV,YAAaA,OAAqB,IAAP/sV,GAAuBA,EAAIG,EAAK6F,EAAMgnV,gBAAiBA,OAAyB,IAAP7sV,GAAuBA,EAClRI,EAAKlF,EAAAA,SAAmD,mBAAnC2K,EAAMwjC,MAAQ,kBAAuCyjT,EAAoB1sV,EAAG,GAAI2sV,EAAuB3sV,EAAG,GAC/HE,EAAKpF,EAAAA,SAAe2K,EAAMuH,OAASlP,GAAe8uV,EAAa1sV,EAAG,GAAI2sV,EAAgB3sV,EAAG,GACzF0G,EAAK9L,EAAAA,SAAe2K,EAAMuH,OAASlP,GAAey4I,EAAY3vI,EAAG,GAAIkmV,EAAelmV,EAAG,GACvFoG,OAAwBvS,IAAhBgL,EAAMuH,MAAsBvH,EAAMuH,MAAQupI,EACtDz7I,EAAAA,WAAgB,WACZ+xV,EAAcpnV,EAAMuH,OAASlP,EACjC,GAAG,CAAC2H,EAAMuH,MAAOlP,IACjB,IAAI84B,GAAsBwvP,EAAAA,EAAAA,KACtB52P,EAAQ10B,EAAAA,aAAkB,WACtB6mB,EAAO/lB,SACP+lB,EAAO/lB,QAAQ4zB,OAEvB,GAAG,CAAC7N,IACJ7mB,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASy8T,EAAmBzwV,QAC5B4zB,MAAOA,EACP/pB,MAAOA,EACPuH,MAAOA,EACP,GAAG,CAACA,EAAOwiB,EAAO/pB,IACtB3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAAIotC,EAAmBluC,EAAAA,aAAkB,SAAUizQ,IAC7B,kBAAbA,IAAiC2+E,GAAoC,iBAAb3+E,GAA+B2+E,IACxFC,GAAsBD,EAE9B,GAAG,CAACA,IACAK,EAAmBjyV,EAAAA,aAAkB,SAAUW,GAE/C,GADAoxV,EAAc/uV,GACV2H,EAAMunV,gBAAiB,CACvB,IAAIjhI,EAAK,CACL/+M,MAAOlP,EACP47B,YAAaj+B,EAAMi+B,YACnBC,eAAgBl+B,GAEpBgK,EAAMunV,gBAAgBh/T,UAAKvzB,EAAWsxN,EAC1C,CACJ,GAAG,CAACjuN,EAAc2H,EAAMunV,kBACpBC,EAAoBnyV,EAAAA,aAAkB,SAAUW,GAEhD,GADAoxV,EAAcpxV,EAAMuR,OAChBvH,EAAMunV,gBAAiB,CACvB,IAAIjhI,EAAK,CACL/+M,MAAOvR,EAAMuR,MACb0sB,YAAaj+B,EAAMi+B,YACnBC,eAAgBl+B,EAAMk+B,gBAE1Bl0B,EAAMunV,gBAAgBh/T,UAAKvzB,EAAWsxN,EAC1C,CACJ,GAAG,CAACtmN,EAAMunV,kBACNE,EAAsBpyV,EAAAA,aAAkB,SAAUW,GAElD,GADAqxV,EAAaF,GACTnnV,EAAMsH,SAAU,CAChB,IAAIg/M,EAAK,CACL/+M,MAAO4/U,EACPlzT,YAAaj+B,EAAMi+B,YACnBC,eAAgBl+B,GAEpBgK,EAAMsH,SAASihB,UAAKvzB,EAAWsxN,EACnC,CACJ,GAAG,CAAC6gI,EAAYnnV,EAAMsH,WAClBogV,EAAuBryV,EAAAA,aAAkB,WACzCgyV,EAAaX,EACjB,GAAG,IACCiB,EAAuBtyV,EAAAA,aAAkB,SAAUW,GAEnD,GADAoxV,EAAct2M,GACV9wI,EAAMunV,gBAAiB,CACvB,IAAIjhI,EAAK,CACL/+M,MAAOupI,EACP78G,YAAaj+B,EAAMi+B,YACnBC,eAAgBl+B,GAEpBgK,EAAMunV,gBAAgBh/T,UAAKvzB,EAAWsxN,EAC1C,CACJ,GAAG,CAACx1E,EAAW9wI,EAAMunV,kBACjB97T,EAAcp2B,EAAAA,aAAkB,SAAUW,GACtC4wV,EAAmBzwV,SAAWH,EAAMi+B,YAAY/X,kBAAkBirO,oBAAqB,GACvFy/F,EAAmBzwV,QAAQ4zB,OAEnC,GAAG,CAAC68T,IACAgB,EAA4BvyV,EAAAA,aAAkB,SAAUW,GACxD,IAAIuD,EAEJ,KADgBvD,EAAM+nM,iBAAyD,QAArCxkM,EAAKqtV,EAAmBzwV,eAA4B,IAAPoD,OAAgB,EAASA,EAAG8gF,SAASrkF,EAAM+nM,mBAI7H+oJ,GACDO,EAAaF,IAEZL,GAAe9mV,EAAMsH,UAAU,CAChC,IAAIg/M,EAAK,CACL/+M,MAAO4/U,EACPlzT,YAAaj+B,EAAMi+B,YACnBC,eAAgBl+B,GAEpBgK,EAAMsH,SAASihB,UAAKvzB,EAAWsxN,EACnC,CACJ,GAAG,CAAC6gI,EAAYL,EAAa9mV,EAAMsH,WACnC,OAAQjS,EAAAA,cAAoB,MAAO,CAAEH,GAAI8K,EAAM9K,GAAI2E,KAAM,UAAW,aAAcmG,EAAMi9O,UAAW,kBAAmBj9O,EAAMs5B,eAAgB,gBAAiBt5B,EAAMhE,SAAW,YAAShH,EAAWQ,MAAOwK,EAAMxK,MAAOK,IAAK+wV,EAAoBv5T,UAAUkvC,EAAAA,EAAAA,GAAYv8D,EAAMqtB,SAAUrtB,EAAMhE,UAAWrG,WAAWu7B,EAAAA,EAAAA,GAAW,kCAAmC,CACvV,aAAclxB,EAAMhE,UACrBgE,EAAMrK,WAAYi2B,OAAQg8T,GAC7BvyV,EAAAA,cAAoBA,EAAAA,SAAgB,KAChC2K,EAAMkF,QACF7P,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iCACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,yCACpCN,EAAAA,cAAoBkG,EAAAA,EAAa,CAAE5F,UAAW,uBAC1CN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEqE,KAAM,SAAU,aAAc61B,EAAoBG,iBAAiBu2T,EAAAA,GAAiCr2T,EAAAA,GAASq2T,EAAAA,KAAmCzyT,WAAW,EAAMnvB,SAAU,OAAQ1E,SAAU0lV,EAAmB9vV,QAAS,WAAc,OAAOosC,EAAiB,gBAAkB,EAAGrsC,KAAM,iBAAkBujC,QAASqtT,EAAAA,MACnVzyV,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEqE,KAAM,SAAU,aAAc61B,EAAoBG,iBAAiBy2T,EAAAA,GAAgCv2T,EAAAA,GAASu2T,EAAAA,KAAkC3yT,WAAW,EAAMnvB,SAAU,OAAQ1E,UAAW0lV,EAAmB9vV,QAAS,WAAc,OAAOosC,EAAiB,eAAiB,EAAGrsC,KAAM,UAAWujC,QAASutT,EAAAA,QAClV3yV,EAAAA,cAAoB,MAAO,CAAEM,UAAW,aACxCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,yCACpCqxV,GACI3xV,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEqE,KAAM,SAAU2K,SAAU,OAAQ9O,QAASmwV,EAAkB,aAAcn2T,EAAoBG,iBAAiB22T,EAAAA,GAAyBz2T,EAAAA,GAASy2T,EAAAA,KAA2B/wV,KAAM,gBAAiBujC,QAASytT,EAAAA,MAC/OnB,GACI1xV,EAAAA,cAAoB,MAAO,CAAEM,UAAW,kCACpCN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,8CAA+CH,MAAO,CAAEs9G,WAAYq0O,KAC7G9xV,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,8CAA+CH,MAAO,CAAEs9G,WAAYg+B,GAAa35I,QAASwwV,OACvJtyV,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gCAAkCsxV,EACpE5xV,EAAAA,cAAoB6oV,EAAAA,GAAe,CAAEroV,IAAKgxV,EAAkBhtV,KAAM,OAAQwzB,UAAW,EAAG4vN,eAAWjoP,EAAWuS,MAAO4/U,EAAY7/U,SAAUkgV,EAAmB97T,QAASD,EAAavU,QAASlX,EAAMkX,QAASvS,OAAQ3E,EAAM2E,SAC1NtP,EAAAA,cAAoB+sV,EAAAA,GAAc,CAAEd,cAAc,EAAMhoT,eAAgB,iBAAkB/xB,MAAO4/U,EAAY7/U,SAAUkgV,EAAmB97T,QAASD,KACzJq7T,GACIzxV,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gDACpCN,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEqE,KAAM,SAAU3F,UAAW,uBAAwBwB,QAASuwV,GAAwBl2T,EAAAA,GAAS22T,EAAAA,KAC3H9yV,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEqE,KAAM,SAAU3F,UAAW,gCAAiCwB,QAASswV,GAAuBj2T,EAAAA,GAAS42T,EAAAA,OACvJ,IACIt6T,EAAY,CACZ54B,GAAI64B,EAAAA,OACJv4B,MAAOu4B,EAAAA,IACPp4B,UAAWo4B,EAAAA,OACXxmB,MAAOwmB,EAAAA,OACP11B,aAAc01B,EAAAA,OACdw5T,gBAAiBx5T,EAAAA,KACjBzmB,SAAUymB,EAAAA,KACV7W,QAAS6W,EAAAA,KACTppB,OAAQopB,EAAAA,IACRV,SAAUU,EAAAA,OACVkvN,UAAWlvN,EAAAA,OACXuL,eAAgBvL,EAAAA,OAChB/xB,SAAU+xB,EAAAA,KACVyV,KAAMzV,EAAAA,IACN7oB,OAAQ6oB,EAAAA,IACRi5T,gBAAiBj5T,EAAAA,KACjBg5T,YAAah5T,EAAAA,KACb+4T,YAAa/4T,EAAAA,MAEjB44T,EAAgB/qT,YAAc,uBAC9B+qT,EAAgB74T,UAAYA,MC3KjBu6T,uLACX,SAAWA,GACPA,EAAWA,EAAoB,QAAI,GAAK,UACxCA,EAAWA,EAAiB,KAAI,GAAK,OAErCA,EAAWA,EAAsB,UAAI,GAAK,WAC7C,CALD,CAKGA,IAAeA,EAAa,CAAC,IAIhC,IAAIC,EAAwB,WACxB,SAASA,EAAO/gV,EAAO48J,EAAM7oK,QACZ,IAATA,IAAmBA,EAAO+sV,EAAWE,WACzCzmU,KAAKva,MAAQA,EACbua,KAAKqiJ,KAAOA,EACZriJ,KAAKxmB,KAAOA,CAChB,CAkBA,OAhBAgtV,EAAOtmU,UAAUjgB,IAAM,SAAU+0C,GAC7B,OAAO,IAAIwxS,EAAOxxS,EAAGh1B,KAAKva,OAAQua,KAAKqiJ,KAC3C,EAEAmkL,EAAOtmU,UAAUuwC,MAAQ,SAAUzb,GAC/B,OAAOA,EAAGh1B,KAAKva,MAAOua,KAAKqiJ,KAC/B,EACAmkL,EAAOtmU,UAAUwmU,KAAO,SAAUj6T,EAAG7L,GACjC,OAAO6L,EAAEzM,KAAKva,MAAOua,KAAKqiJ,KAC9B,EACAmkL,EAAOtmU,UAAUhc,OAAS,SAAUgwE,GAChC,OAAOl0D,KAAK/f,KAAI,SAAU2pR,EAAIhpQ,GAAK,OAAOszD,EAAEzjB,OAAM,SAAUy8B,EAAG7rE,GAAM,OAAOuoQ,EAAG1lR,OAAO,CAACgpF,GAAK,GAAI,GACpG,EACAs5P,EAAOtmU,UAAUg1B,SAAW,WACxB,MAAO,oBAAsBl1B,KAAKva,MAAQ,YAAcua,KAAKqiJ,KAAO,KACxE,EACOmkL,CACX,CAzB4B,GCVxBG,EAAwB,WACxB,SAASA,EAAOn4S,EAAOo4S,QACL,IAAVp4S,IAAoBA,EAAQ,SAChB,IAAZo4S,IAAsBA,EAAU,IACpC5mU,KAAKwuB,MAAQA,EACbxuB,KAAK4mU,QAAUA,EACf5mU,KAAK6mU,YAAc,EACnB7mU,KAAK8mU,cAAgB,CACzB,CA2BA,OA1BAH,EAAOzmU,UAAUy5F,IAAM,WACnB,OAAO35F,KAAK6mU,aAAe7mU,KAAKwuB,MAAM3sC,MAC1C,EAEA8kV,EAAOzmU,UAAU2N,KAAO,WACpB,MAAO,CACH23B,KAAMxlC,KAAKwuB,MAAMxuB,KAAK6mU,eACtBD,QAAS5mU,KAAK4mU,QAAQ5mU,KAAK8mU,iBAEnC,EACAH,EAAOzmU,UAAU6mU,KAAO,WACpB,MAAO,CACHvhS,KAAMxlC,KAAKwuB,MAAMxuB,KAAK6mU,aACtBD,QAAS5mU,KAAK4mU,QAAQ5mU,KAAK8mU,eAEnC,EACAH,EAAOzmU,UAAU8mU,UAAY,WACzBhnU,KAAK6mU,aACT,EACAF,EAAOzmU,UAAU+mU,YAAc,WAC3BjnU,KAAK8mU,eACT,EACAH,EAAOzmU,UAAUwyI,IAAM,WACnB1yI,KAAK6mU,cACL7mU,KAAK8mU,eACT,EACOH,CACX,CApC4B,GCDxBnsS,EAAU,SAAU/0C,GAAS,OAAQA,GAAS,IAAIuD,MAAM,GAAK,EAK7Dk+U,EAAwB,WACxB,SAASA,EAAOrkS,GACZ7iC,KAAK6iC,MAAQA,CACjB,CAuBA,OAtBAqkS,EAAOhnU,UAAU0tM,IAAM,SAAUp/K,EAAOo4S,GAEpC,YADgB,IAAZA,IAAsBA,EAAU,IAChCp4S,aAAiBm4S,EACV3mU,KAAK6iC,MAAMrU,GAGXxuB,KAAK6iC,MAAM,IAAI8jS,EAAOnsS,EAAQhM,GAAQgM,EAAQosS,IAE7D,EAEAM,EAAOhnU,UAAUjgB,IAAM,SAAU8vB,GAC7B,IAAIrN,EAAQ1C,KACZ,OAAO,IAAIknU,GAAO,SAAUxtO,GAAU,OAAOh3F,EAAMmgC,MAAM62D,GAAQz5G,IAAI8vB,EAAI,GAC7E,EAEAm3T,EAAOhnU,UAAUuwC,MAAQ,SAAU1gC,GAC/B,IAAIrN,EAAQ1C,KACZ,OAAO,IAAIknU,GAAO,SAAUxtO,GAAU,OAAOh3F,EAAMmgC,MAAM62D,GAAQjpD,OAAM,SAAUy8B,EAAGzgE,GAAK,OAAOsD,EAAEm9D,GAAG0gI,IAAInhM,EAAI,GAAI,GACrH,EACAy6T,EAAOhnU,UAAUinU,UAAY,SAAUp6U,GACnC,OAAOiT,KAAK4tM,IAAI7gN,GAAGvT,OAAS+sV,EAAWa,OAC3C,EACOF,CACX,CA3B4B,GAgHjBvpS,EAAQ,SAAUi8B,EAAO29D,GAAW,OAAO,IAAI2vM,GAAO,SAAUxtO,GACvE,IAAIl0D,EAAOk0D,EAAO7rF,OAAO23B,KACrBq7C,EAAOjnB,EAAMp0B,GACjB,MAvHmB,OAuHfA,GACAA,EAAOk0D,EAAO7rF,OAAO23B,KACd,IAAIghS,EAAOjvM,EAAQuqF,QAAQt8K,GAAOk0D,IAKtC,IAAI8sO,EAHN3lP,EAGa02C,EAAQ5pB,KAAK9sB,GAFT02C,EAAQuqF,QAAQt8K,GAEAk0D,EAC1C,GAAI,EAIO2tO,EAAU,SAAU5vV,GAC3B,IAAI6vV,EAAS7vV,EAAG6vV,OAAQC,EAAoB9vV,EAAG8vV,kBAC/C,OAAO,IAAIL,GAAO,SAAUxtO,GACxB,IAAIl0D,EAAOk0D,EAAO7rF,OAAO23B,KACzB,OACW,IAAIghS,EADXhhS,IAAS8hS,EACSC,EAEJ/hS,EAFuBk0D,EAG7C,GACJ,EAIW8tO,EAAa,SAAUC,GAAmB,OAAO,IAAIP,GAAO,SAAUxtO,GAC7E,IAAIl0D,EAAOk0D,EAAO7rF,OAAO23B,KACzB,OACW,IAAIghS,EADXiB,EACkBjiS,EAEJ,GAFUk0D,EAGhC,GAAI,EC5IOguO,EAAW,SAAUt8T,GAAQ,OAAOA,EAAK3uB,QAAO,SAAU4wB,EAAKu1B,GAAU,OAJzDlH,EAI4EkH,EAALv1B,EAJvDojC,OAAM,SAAUm5N,GAAM,OAAOluO,EAAGz7C,KAAI,SAAUitF,GAAK,OAAO08L,EAAG1lR,OAAO,CAACgpF,GAAK,GAAI,IAA5G,IAAcxxC,CAIqF,IARzFj2C,EAQmG,GARnF,IAAIyhV,GAAO,SAAUxtO,GAAU,OAAO,IAAI8sO,EAAO/gV,EAAOi0G,EAAS,MAA3F,IAAUj0G,CAQyG,EAIrHkiV,EAAS,SAAU/kS,GAAU,OAAO,IAAIskS,GAAO,SAAUxtO,GAEhE,IADA,IAAIh9G,EAAS,IAAI8pV,EAAO,GAAI9sO,IACpBA,EAAOC,OACXj9G,EAASA,EAAOwH,OAAO0+C,EAAOgrK,IAAIl0G,IAEtC,OAAOh9G,CACX,GAAI,KClBgC,WAChC,SAASkrV,IACL5nU,KAAK45D,MAAQ,CAAC,EACd55D,KAAKsnU,OAAS,IACdtnU,KAAK2tG,KAAO,GACZ3tG,KAAKunU,kBAAoB,IACzBvnU,KAAKynU,iBAAkB,EACvBznU,KAAK6nU,WAAa,GAClB7nU,KAAK8nU,aAAe,GACpB9nU,KAAK+nU,UAAY,GACjB/nU,KAAKgoU,iBAAmB,EAC5B,CACAJ,EAAe1nU,UAAU+mI,OAAS,SAAUxvJ,GACxC,IAAII,EAAKJ,EAAGk2H,KAAMA,OAAc,IAAP91H,EAAgB,GAAKA,EAAIK,EAAKT,EAAG6vV,OAAQA,OAAgB,IAAPpvV,EAAgB,GAAKA,EAAIG,EAAKZ,EAAG8vV,kBAAmBA,OAA2B,IAAPlvV,EAAgB,IAAMA,EAAII,EAAKhB,EAAGmiF,MAAOA,OAAe,IAAPnhF,EAAgB,CAAC,EAAIA,EAAIE,EAAKlB,EAAGgwV,gBAAiBA,OAAyB,IAAP9uV,GAAwBA,EAChSqnB,KAAK2tG,KAAOA,EACZ3tG,KAAKsnU,OAASA,EACdtnU,KAAKunU,kBAAoBA,EACzBvnU,KAAK45D,MAAQA,EACb55D,KAAKynU,gBAAkBA,EACvBznU,KAAKioU,UACT,EACAL,EAAe1nU,UAAUgoU,gBAAkB,SAAUC,QAC7B,IAAhBA,IAA0BA,EAAc,IAC5C,IAAI1iV,EAAQ0iV,EAMZ,OALAT,EAAS1nU,KAAKgoU,kBACTp6H,IAAIu6H,GACJzB,MAAK,SAAU0B,GAChB3iV,EAAQ2iV,EAASxqS,KAAK,GAC1B,IACOn4C,CACX,EACAmiV,EAAe1nU,UAAUyiC,SAAW,SAAUwlS,QACtB,IAAhBA,IAA0BA,EAAc,IAC5C,IAAI1iV,EAAQ0iV,EACZ,OAAKnoU,KAAK+nU,UAAUlmV,QAGpB6lV,EAAS1nU,KAAK+nU,WACTn6H,IAAIu6H,GACJzB,MAAK,SAAU0B,GAChB3iV,EAAQ2iV,EAASxqS,KAAK,GAC1B,IACOn4C,GAPIA,CAQf,EAIAmiV,EAAe1nU,UAAUmoU,QAAU,SAAU1lS,QACxB,IAAbA,IAAuBA,EAAW,IACtC,IAAIl9C,EAAQk9C,EACZ,OAAK3iC,KAAK6nU,WAAWhmV,QAGrB6lV,EAAS1nU,KAAK6nU,YACTj6H,IAAIjrK,GACJ+jS,MAAK,SAAU4B,GAChB7iV,EAAQ6iV,EAAO1qS,KAAK,GACxB,IACOn4C,GAPIA,CAQf,EACAmiV,EAAe1nU,UAAUqoU,UAAY,SAAU/5S,EAAOo4S,EAAS4B,GAC3D,OAAIh6S,EAAM3sC,OAAS+kV,EAAQ/kV,OAChBme,KAAKyoU,YAAYj6S,EAAOo4S,EAAS4B,GAErCxoU,KAAK0oU,aAAal6S,EAAOo4S,EAAS4B,EAC7C,EACAZ,EAAe1nU,UAAUyoU,YAAc,SAAUC,EAAQ5+J,EAAUjnK,EAAOiE,GACtE,IAAIvhB,EAAQ,GACRq/G,EAAY99F,EACZ6hU,EAAe7+J,EAAShhL,MAAM,IAAI4F,MAAM,EAAGmU,GAC3C+lU,EAAc9+J,EAAShhL,MAAM,IAAI4F,MAAMoY,GAS3C,OARA0gU,EAAS1nU,KAAK6nU,WAAWj5U,MAAMmU,EAAOiE,IACjC4mM,IAAIg7H,GACJlC,MAAK,SAAU4B,GAChB7iV,EAAQojV,EACH3kV,OAAOokV,GACPpkV,OAAO4kV,GACPlrS,KAAK,GACd,IACO,CACHknE,UAAWA,EACXr/G,MAAOA,EAEf,EACAmiV,EAAe1nU,UAAUuoU,YAAc,SAAUj6S,EAAOo4S,EAAS4B,GAC7D,IAAI9lU,EAAQ1C,KACRva,EAAQ,GACRq/G,EAAY0jO,EACZO,EAAYv6S,EAAMxlC,MAAM,IAAI4F,MAAM45U,GAClC9wM,EAAUlpG,EAAMxlC,MAAM,IAAI4F,MAAM,EAAG45U,GAAY5qS,KAAK,IACpD7xB,EAAO/L,KAAK6nU,WAAWhmV,QAAU2sC,EAAM3sC,OAAS2mV,GAOpD,OANAd,EAAS1nU,KAAK6nU,WAAWj5U,MAAM,EAAGmd,IAC7B6hM,IAAIl2E,EAASkvM,GACbF,MAAK,SAAU4B,GAChBxjO,EAAYpiG,EAAMsmU,eAAeV,EAAQxjO,GACzCr/G,EAAQ6iV,EAAOpkV,OAAO6kV,GAAWnrS,KAAK,GAC1C,IACO,CACHknE,UAAWA,EACXr/G,MAAOA,EAEf,EACAmiV,EAAe1nU,UAAU8oU,eAAiB,SAAUx6S,EAAOs2E,GACvD,IAAImkO,EAAYz6S,EAAMs2E,GAEtB,OADgB9kG,KAAK6nU,WAAW/iO,GAAWqiO,UAAU8B,IACnCA,IAAcjpU,KAAKsnU,OAG9BxiO,EAFIA,EAAY,CAG3B,EACA8iO,EAAe1nU,UAAUwoU,aAAe,SAAUl6S,EAAOo4S,EAAS4B,GAC9D,IAAI9lU,EAAQ1C,KACRva,EAAQ,GACRq/G,EAAY0jO,EACZ9wM,EAAUlpG,EAAM5/B,MAAM,EAAG45U,GAY7B,OAXAd,EAAS1nU,KAAK8nU,cACTl6H,IAAIl2E,EAASkvM,GACbn2R,OAAM,SAAU23R,GACjBtjO,EAAYsjO,EAASxqS,KAAK,IAAI/7C,OAC9B,IAAIknV,EAAYnC,EAAQh4U,MAAMk2G,GAC9B,OAAO4iO,EAAShlU,EAAMmlU,YACjBj6H,IAAIw6H,EAASxqS,KAAK,IAAMmrS,EAAWnC,EAC5C,IACKF,MAAK,SAAU4B,GAChB7iV,EAAQ6iV,EAAO1qS,KAAK,GACxB,IACO,CACHknE,UAAWA,EACXr/G,MAAOA,EAEf,EACA9C,OAAO6nB,eAAeo9T,EAAe1nU,UAAW,mBAAoB,CAChEuK,IAAK,WACD,IAAe68T,EAANtnU,KAAkBsnU,OAAQC,EAA1BvnU,KAAiDunU,kBAC1D,MAAO,CACHzlH,QAAS,SAAUjhI,GAAQ,OF3EZqoP,EE2E2BroP,EF3EV,IAAIqmP,GAAO,SAAUxtO,GAGjE,OADWA,EAAOqtO,OAAOvhS,OACZ0jS,GACTxvO,EAAOg5C,MACA,IAAI8zL,EAAO0C,EAAQxvO,EAAQ6sO,EAAWa,UAY1C,IAAIZ,EAAO0C,EAAQxvO,EAAQ6sO,EAAWa,QACjD,IAlBqB,IAAU8B,CE2EkC,EACjDv7N,KAAM,SAAU9sB,GAAQ,OFtGtB,SAAUppG,GACxB,IAAI6vV,EAAS7vV,EAAG6vV,OAAQC,EAAoB9vV,EAAG8vV,kBAC/C,OAAO,SAAU1mP,GAAQ,OAAO,IAAIqmP,GAAO,SAAUxtO,GACjD,MAAQA,EAAOC,OAAO,CAClB,IAAIliH,EAAKiiH,EAAOqtO,OAAQvhS,EAAO/tD,EAAG+tD,KAAMohS,EAAUnvV,EAAGmvV,QACrD,GAAIphS,IAASohS,GAAWA,IAAYU,EAEhC,OADA5tO,EAAOg5C,MACA,IAAI8zL,EAAOc,EAAQ5tO,EAAQ6sO,EAAWj3E,MAEjD,GAAIzuK,EAAKpzE,KAAK+3B,GAEV,OADAk0D,EAAOg5C,MACA,IAAI8zL,EAAOhhS,EAAMk0D,EAAQ6sO,EAAWj3E,MAE/C,GAAI9pN,IAAS+hS,EAET,OADA7tO,EAAOg5C,MACA,IAAI8zL,EAAOc,EAAQ5tO,EAAQ6sO,EAAWj3E,MAEjD51J,EAAOstO,WACX,CAEA,OADAttO,EAAOg5C,MACA,IAAI8zL,EAAOc,EAAQ5tO,EAAQ6sO,EAAWj3E,KACjD,GAAI,CACR,CEgF+C65E,CAAW,CAAE7B,OAAQA,EAAQC,kBAAmBA,GAAhD4B,CAAqEtoP,EAAO,EAEnH,EACAn2E,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo9T,EAAe1nU,UAAW,qBAAsB,CAClEuK,IAAK,WACD,IAAI/H,EAAQ1C,KACZ,MAAO,CACH8hN,QAAS,SAAUjhI,GAAQ,OF7CVqoP,EE6C2BroP,EF7CV,IAAIqmP,GAAO,SAAUxtO,GACnE,OAAIA,EAAOC,MACA,IAAI6sO,EAAO,GAAI9sO,IAEfA,EAAOqtO,OAAOvhS,OACZ0jS,GACTxvO,EAAOg5C,MAEJ,IAAI8zL,EAAO0C,EAAQxvO,GAC9B,IATuB,IAAUwvO,CE6CkC,EACnDv7N,KAAM,SAAU9sB,GAAQ,OFjEVymP,EEiEwB5kU,EAAM4kU,OFjEb,SAAUzmP,GAAQ,OAAO,IAAIqmP,GAAO,SAAUxtO,GACzF,MAAQA,EAAOC,OAAO,CAClB,IAAIliH,EAAKiiH,EAAOqtO,OAAQvhS,EAAO/tD,EAAG+tD,KAAMohS,EAAUnvV,EAAGmvV,QACrD,GAAIphS,IAAS8hS,GAAUV,IAAYU,EAE/B,OADA5tO,EAAOg5C,MACA,IAAI8zL,EAAOhhS,EAAMk0D,GAE5B,GAAI7Y,EAAKpzE,KAAK+3B,GAEV,OADAk0D,EAAOg5C,MACA,IAAI8zL,EAAOhhS,EAAMk0D,GAE5BA,EAAOstO,WACX,CAEA,OADAttO,EAAOg5C,MACA,IAAI8zL,EAAO,GAAI9sO,EAC1B,GAAI,GEkDgE7Y,GFjEhD,IAAUymP,CEiE6C,EAEnE,EACA58T,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo9T,EAAe1nU,UAAW,kBAAmB,CAC/DuK,IAAK,WACD,IAAIhzB,EAAKuoB,KAAMsnU,EAAS7vV,EAAG6vV,OAAQC,EAAoB9vV,EAAG8vV,kBAAmBE,EAAkBhwV,EAAGgwV,gBAClG,MAAO,CACH3lH,QAAS,SAAUlhN,GAAK,OAAO4mU,EAAWC,EAAkB,EAC5D95N,KAAM,SAAU/sG,GAAK,OAAOymU,EAAQ,CAAEC,OAAQA,EAAQC,kBAAmBA,GAAsB,EAEvG,EACA78T,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo9T,EAAe1nU,UAAW,yBAA0B,CACtEuK,IAAK,WACD,IAAI68T,EAAStnU,KAAKsnU,OAClB,MAAO,CACHxlH,QAAS,SAAUlhN,GAAK,OAAO4mU,GAAW,EAAQ,EAClD75N,KAAM,SAAU/sG,GAAK,OAAOymU,EAAQ,CAAEC,OAAQA,EAAQC,kBAAmB,IAAO,EAExF,EACA78T,YAAY,EACZC,cAAc,IAElBi9T,EAAe1nU,UAAU+nU,SAAW,WAChC,IAAIvlU,EAAQ1C,KACZ2nU,EAAOhqS,EAAM39B,KAAK45D,MAAO55D,KAAKopU,mBACzBx7H,IAAI5tM,KAAK2tG,MACT+4N,MAAK,SAAU5hS,EAAQlkC,GACxB8B,EAAMmlU,WAAa/iS,CACvB,IACA6iS,EAAOhqS,EAAM39B,KAAK45D,MAAO55D,KAAKqpU,qBACzBz7H,IAAI5tM,KAAK2tG,MACT+4N,MAAK,SAAU5hS,EAAQlkC,GACxB8B,EAAMolU,aAAehjS,CACzB,IACA6iS,EAAOhqS,EAAM39B,KAAK45D,MAAO55D,KAAKspU,kBACzB17H,IAAI5tM,KAAK2tG,MACT+4N,MAAK,SAAU5hS,EAAQlkC,GACxB8B,EAAMqlU,UAAYjjS,CACtB,IACA6iS,EAAOhqS,EAAM39B,KAAK45D,MAAO55D,KAAKupU,yBACzB37H,IAAI5tM,KAAK2tG,MACT+4N,MAAK,SAAU5hS,EAAQlkC,GACxB8B,EAAMslU,iBAAmBljS,CAC7B,GACJ,CAEJ,CAvMoC,2ECJhC0kS,GAAc,SAAU39P,GACxB,SAAS29P,IACL39P,EAAMplE,KAAKzG,MAEXA,KAAKypU,QAAU,CAAC,CACpB,CAmHA,OAjHK59P,IAAQ29P,EAAWljU,UAAYulE,GACpC29P,EAAWtpU,UAAYvd,OAAOkkB,OAAQglE,GAASA,EAAM3rE,WACrDspU,EAAWtpU,UAAU0G,YAAc4iU,EAEnCA,EAAWtpU,UAAU2O,KAAO,SAAe66T,EAAW1pS,EAAU6vG,GAC5D,IAAIx3D,EAAc3rE,UACdg6F,EAAS1mG,KAET2pU,EAAaC,GAASF,GACtBG,EAAqB/zS,GAAWkK,GAChCn+C,EAAS8nV,EAAW9nV,OAExB,QAAiB3O,IAAb8sD,EAAwB,CACxB,IAAK,IAAIrjD,KAAS+sV,EACdhjO,EAAO73F,KAAKlyB,EAAO+sV,EAAU/sV,IAEjC,OAAOqjB,IACX,CAqBA,IAnBA,IAAI4sH,EAAO,SAAW9oI,GAClB,IAAIgmV,EAAcH,EAAW7lV,GAEzB+0I,EAAUgxM,EAAqB7pS,EAAWA,EAAS8pS,GAEvD,GAAIjxM,EAAS,CACT,GAAIgX,EAAK,CACL,IAAIk6L,EAAWlxM,GACfA,EAAU,WACNnyB,EAAOsjO,OAAOF,EAAajxM,GAC3BkxM,EAAS5pU,MAAMumG,EAAQruB,EAC3B,GACQ0xP,SAAWA,CACvB,EACarjO,EAAO+iO,QAAQK,GAAepjO,EAAO+iO,QAAQK,IAAgB,IACnE9oU,KAAK63H,EAChB,CACJ,EAES/0I,EAAM,EAAGA,EAAMjC,EAAQiC,IAAO8oI,EAAM9oI,GAE7C,OAAOkc,IACX,EAEAwpU,EAAWtpU,UAAU2vI,IAAM,SAAc85L,EAAY3pS,GACjD,OAAOhgC,KAAK6O,KAAK86T,EAAY3pS,GAAU,EAC3C,EAEAwpS,EAAWtpU,UAAU2lC,MAAQ,SAAgB6jS,EAAW1pS,GAMpD,IALA,IAEI2pS,EAAaC,GAASF,GACtBG,EAAqB/zS,GAAWkK,GAE3Bl8C,EAAM,EAAGjC,EAAS8nV,EAAW9nV,OAAQiC,EAAMjC,EAAQiC,IAAO,CAC/D,IAAIgmV,EAAcH,EAAW7lV,GAEzB+0I,EAAUgxM,EAAqB7pS,EAAWA,EAAS8pS,GAEvD,GAAIjxM,GAVK74H,KAWeypU,QAAQK,GAXvB9pU,KAW6CypU,QAAQK,IAAgB,IACnEx5R,QAAQuoF,EAEvB,CAEA,OAAO74H,IACX,EAEAwpU,EAAWtpU,UAAU6tD,QAAU,SAAkB27Q,EAAWhwV,QAE7C,IAANA,IAAeA,EAAI,CAAC,GAEzB,IAAIgyN,EAAS1rM,KAAKypU,QAAQC,GAE1B,GAAIh+H,EAAQ,CACR,IAAI7pN,EAAS6pN,EAAO7pN,OAEpBnI,EAAEuwV,OAASjqU,KACXtmB,EAAEwwV,mBAAoB,EACtBxwV,EAAEub,eAAiBA,GACnBvb,EAAEynQ,mBAAqBA,GAEvBz1C,EAASA,EAAO98M,QAEhB,IAAK,IAAI9K,EAAM,EAAGA,EAAMjC,EAAQiC,IAC5B4nN,EAAO5nN,GAAK2iB,KAhBPzG,KAgBoBtmB,GAG7B,OAA+B,IAAxBA,EAAEwwV,iBACb,CAEA,OAAO,CACX,EAEAV,EAAWtpU,UAAU8pU,OAAS,SAAiBN,EAAW7wM,GACtD,IAAI6yE,EAAS1rM,KAAKypU,QAAQC,GAE1B,QAAkBx2V,IAAdw2V,EACA1pU,KAAKypU,QAAU,CAAC,OACb,GAAI/9H,EACP,GAAI7yE,EACA,IAAK,IAAI/0I,EAAM4nN,EAAO7pN,OAAS,EAAGiC,GAAO,EAAGA,IACpC4nN,EAAO5nN,KAAS+0I,GAAW6yE,EAAO5nN,GAAKimV,WAAalxM,GACpD6yE,EAAO5nM,OAAOhgB,EAAK,QAI3Bkc,KAAKypU,QAAQC,GAAa,GAIlC,OAAO1pU,IACX,EAEOwpU,CACX,CAzHkB,CAyHhB39P,GAAAA,GAEF,SAAS/1C,GAAWrwC,GAChB,MAAwB,oBAAVA,CAClB,CAEA,SAASmkV,GAASnkV,GACd,MAAwB,kBAAVA,EAAqB,CAAEA,GAAUA,CACnD,CAEA,SAASwP,KACL+K,KAAKkqU,mBAAoB,CAC7B,CAEA,SAAS/oF,KACL,OAAkC,IAA3BnhP,KAAKkqU,iBAChB,CAEA,YC7Ie,SAASC,GAAc9hU,EAASi2E,GAK3C,IAJA,IAAI5hG,EAAS,CAAC,EACVhJ,EAAQqF,OAAO46C,iBAAiBtrB,IAAY,CAAC,EAC7C+hU,EAAcpyU,MAAMC,QAAQqmF,GAAUA,EAAS,CAAEA,GAE5Cx6F,EAAM,EAAGA,EAAMsmV,EAAYvoV,OAAQiC,IAAO,CAC/C,IAAInH,EAAQytV,EAAYtmV,GACxBpH,EAAOC,GAASjJ,EAAMiJ,EAC1B,CAEA,OAAOD,CACX,gBCRA,SAAS2tV,GAAU5kV,GACf,OAAIouE,MAAMpuE,GACCA,EAEJA,EAAQ,IACnB,CAEe,SAAS6kV,GAAYjiU,EAAS9uB,GACzC,IAAIA,EAYG,CACH,IAAIgxV,EAASJ,GAAc9hU,EAAS,CAAE,QAAS,WAE/C,MAAO,CACHhuB,MAAOszF,SAAS48P,EAAOlwV,MAAO,IAC9BgB,OAAQsyF,SAAS48P,EAAOlvV,OAAQ,IAExC,CAlBI,IAAIhB,EAAQd,EAAKc,MACbgB,EAAS9B,EAAK8B,QAEdu0F,EAAAA,GAAAA,GAAQv1F,KACRguB,EAAQ30B,MAAM2G,MAAQgwV,GAAUhwV,KAGhCu1F,EAAAA,GAAAA,GAAQv0F,KACRgtB,EAAQ30B,MAAM2H,OAASgvV,GAAUhvV,GAW7C,CC/Be,SAASmvV,GAAa9wV,GAGjC,YAFW,IAANA,IAAeA,EAAI,CAAC,GAElBA,EAAE+wV,MAAQ/wV,EAAE+wV,MAAMC,aAAehxV,EAAE0gB,MAC9C,CCFe,SAASuwU,GAAetiU,GACnC,IAAIt0B,EAAMo2V,GAAc9hU,EAAS,CAAE,cAAe,eAC9CzV,EAAc7e,EAAI6e,YAClBvV,EAAatJ,EAAIsJ,WACrB,MAAO,CACHzD,IAAKk6E,WAAWz2E,GAChBqS,KAAMokE,WAAWlhE,GAEzB,CCVe,SAASg4U,GAAcviU,GAClC,IAAIy9E,EAAMz9E,EAAQs5E,wBAEd6R,EAAkBhlG,SAASglG,gBAE/B,MAAO,CACH55G,IAAKksG,EAAIlsG,KAAOb,OAAOgvN,aAAev0G,EAAgB5zG,YAAc4zG,EAAgBq3O,WAAa,GACjGn7U,KAAMo2F,EAAIp2F,MAAQ3W,OAAO+uN,aAAet0G,EAAgBR,aAAeQ,EAAgBs3O,YAAc,GAE7G,CCPe,SAASC,GAAiBrxV,GACrC,OAAIk2F,EAAAA,GAAAA,IAASl2F,EAAEywE,GAAK,CAAC,GAAG5lE,UACb,CACH4lE,EAAGzwE,EAAEywE,EAAE5lE,SACP8rF,EAAG32F,EAAE22F,EAAE9rF,UAIR,CACH4lE,EAAGzwE,EAAE4uP,OAAS5uP,EAAE+9L,SAAW,EAC3BpnG,EAAG32F,EAAE8uP,OAAS9uP,EAAEg+L,SAAW,EAEnC,gBCZIszJ,GAAe,iBAYnB,SAASC,GAAgB5iU,GACrB,IAAI8C,EAAYwoB,iBAAiBtrB,GAAS8C,UAE1C,MAAkB,SAAdA,EACO4rE,GAAAA,EAAOM,OAdtB,SAAqB6zP,GACjB,IAAIv9U,EAAQu9U,EAAav9U,MAAMq9U,IAC/B,GAAc,OAAVr9U,GAAmC,IAAjBA,EAAM9L,OACxB,OAAOk1F,GAAAA,EAAOM,OAGlB,IAAIynG,EAAUnxL,EAAM,GAAG3E,MAAM,KAAK/I,KAAI,SAAUkqE,GAAK,OAAO2J,WAAW3J,EAAI,IAC3E,OAAO,IAAK0lE,SAAS3vH,UAAU2O,KAAK1O,MAAO42E,GAAAA,EAAQ,CAAE,MAAO7yF,OAAQ46L,IACxE,CASWqsJ,CAAYhgU,EACvB,CAEe,SAASigU,GAAa/iU,GACjC,IAAKA,EACD,OAAO0uE,GAAAA,EAAOM,OAKlB,IAFA,IAAInE,EAAS+3P,GAAgB5iU,GACzBkyH,EAASlyH,EAAQ49K,cACd1rD,GAAQ,CACX,IAAID,EAAe2wM,GAAgB1wM,GACnCrnD,EAASA,EAAO8D,aAAasjD,GAC7BC,EAASA,EAAO0rD,aACpB,CAGA,OADA/yG,EAAO9sE,EAAI8sE,EAAOnmF,EAAImmF,EAAOx5F,EAAIw5F,EAAOnjE,EAAI,EACrCmjE,CACX,CClCA,IAAIw4H,GAAS,CACT,QACA,aACA,aACA,YACA,UAGA2/H,GAAW,SAAU7B,GACrB,SAAS6B,EAAQhjU,EAAS01B,GACtByrS,EAAW/iU,KAAKzG,MAEhBA,KAAK+9B,QAAUp7C,OAAO2mB,OAAO,CAAC,EAAGy0B,GACjC/9B,KAAKqI,QAAUA,EACfrI,KAAKqI,QAAQy3E,mBAAqB9/E,KAAK+vF,aAAalhF,KAAK7O,MAEzDA,KAAKsrU,OAAStrU,KAAKurU,SAAS,SAC5BvrU,KAAKwrU,YAAcxrU,KAAKurU,SAAS,cACjCvrU,KAAKyrU,YAAczrU,KAAKurU,SAAS,cACjCvrU,KAAK0rU,WAAa1rU,KAAKurU,SAAS,aAEhCvrU,KAAK2rU,QAAU,IAAIjqP,GAAAA,EAEnB4oP,GAAYjiU,EAASrI,KAAK+9B,SAE1B/9B,KAAK6O,KAAK68L,GAAQ1rM,KAAK+9B,SAEvB/9B,KAAK4rU,iBACT,CAyIA,OAvIKpC,IAAa6B,EAAQ/kU,UAAYkjU,GACtC6B,EAAQnrU,UAAYvd,OAAOkkB,OAAQ2iU,GAAcA,EAAWtpU,WAC5DmrU,EAAQnrU,UAAU0G,YAAcykU,EAEhCA,EAAQnrU,UAAU2rU,KAAO,SAAexjU,GACpCrI,KAAK2rU,QAAQl4V,SAASutB,KAAKqH,EAC/B,EAEAgjU,EAAQnrU,UAAUqgC,MAAQ,WACtBvgC,KAAK2rU,QAAQl4V,SAAW,EAC5B,EAEA43V,EAAQnrU,UAAU2nK,QAAU,WACxB7nK,KAAK2rU,QAAU,KACf3rU,KAAKqI,QAAQy3E,mBAAqB,KAClC9/E,KAAKgqU,QACT,EAEAqB,EAAQnrU,UAAU4rU,YAAc,SAAsBpyV,GAMlD,IALA,IAGImmG,EADA2vF,EAAUg7J,GAAa9wV,IAGnBmmG,GAAQ2vF,IACZ3vF,EAAO2vF,EAAQu8J,WACXv8J,IAPKxvK,KAOcqI,UAIvBmnK,EAAUA,EAAQyW,cAGtB,GAAIpmG,EACA,OAAOA,EAAKmsP,UAEpB,EAEAX,EAAQnrU,UAAU6vF,aAAe,WAC7B,OAAO/vF,KAAK2rU,OAChB,EAEAN,EAAQnrU,UAAUk5E,QAAU,WACxB,OAAOkxP,GAAYtqU,KAAKqI,QAC5B,EAEAgjU,EAAQnrU,UAAU+rU,YAAc,SAAsB1yV,GAClD,IAAIA,EAGA,OAAOymB,KAAKkkI,MAFZlkI,KAAKkkI,MAAQ3qJ,CAIrB,EAEA8xV,EAAQnrU,UAAU64E,QAAU,SAAkBx/F,GAC1C+wV,GAAYtqU,KAAKqI,QAAS9uB,GAE1BymB,KAAKisU,YAAY1yV,GACjBymB,KAAKksU,SACT,EAEAb,EAAQnrU,UAAUkiM,OAAS,SAAiBr5B,GACxC,IAAIxvL,EAAOymB,KAAKo5E,UACZ6yP,EAAcjsU,KAAKisU,eAEnBljK,IAAUxvL,EAAKc,MAAQ,GAAKd,EAAK8B,OAAS,MAAQ4wV,GAAe1yV,EAAKc,QAAU4xV,EAAY5xV,OAASd,EAAK8B,SAAW4wV,EAAY5wV,WACjI2kB,KAAKisU,YAAY1yV,GACjBymB,KAAKksU,QAAQ3yV,EAAMwvL,GACnB/oK,KAAK+tD,QAAQ,SAAUx0E,GAE/B,EAEA8xV,EAAQnrU,UAAU3mB,KAAO,SAAekM,GACpC,IAAKA,EACD,OAAOua,KAAKo5E,UAGhBp5E,KAAK+4E,QAAQtzF,EACjB,EAEA4lV,EAAQnrU,UAAUisU,gBAAkB,WAChCnsU,KAAKosU,oBAAqB,CAC9B,EAEAf,EAAQnrU,UAAUmsU,eAAiB,WAC/BrsU,KAAKosU,oBAAqB,CAC9B,EAEAf,EAAQnrU,UAAU0rU,gBAAkB,WAA6B,EAEjEP,EAAQnrU,UAAUgsU,QAAU,WAAqB,EAEjDb,EAAQnrU,UAAUqrU,SAAW,SAAmB7B,GAC5C,IAAIhjO,EAAS1mG,KAEb,OAAO,SAAUtmB,GACb,IAAImmG,EAAO6mB,EAAOolO,YAAYpyV,GAC1BmmG,IAAS6mB,EAAO0lO,oBAChB1lO,EAAO34C,QAAQ27Q,EAAW,CACtBrhU,QAASw3E,EACTipJ,cAAepvP,EACfF,KAAMkwV,GAGlB,CACJ,EAEA2B,EAAQnrU,UAAUosU,eAAiB,WAC/B,IAAIjkU,EAAUrI,KAAKqI,QACf3kB,EAAUinV,GAAetiU,GACzBt0B,EAAM62V,GAAcviU,GACpB3Y,EAAO3b,EAAI2b,KACX9V,EAAM7F,EAAI6F,IAEd,MAAO,CACH8V,KAAMA,EAAOhM,EAAQgM,KACrB9V,IAAKA,EAAM8J,EAAQ9J,IAE3B,EAEAyxV,EAAQnrU,UAAUqsU,cAAgB,SAAwB7yV,GACtD,IAAI+uB,EAASzI,KAAKssU,iBACdnvF,EAAQ4tF,GAAiBrxV,GACzBywE,EAAIgzL,EAAMhzL,EAAI1hD,EAAO/Y,KACrB2gF,EAAI8sK,EAAM9sK,EAAI5nE,EAAO7uB,IAErB4yV,EAAmBpB,GAAaprU,KAAKqI,SAAS4uE,SAMlD,OALY,IAAIxG,EAAAA,EACZtmB,EACAkmB,GACFllE,UAAUqhU,EAGhB,EAEOnB,CACX,CA9Je,CA8Jb7B,IAEF,YC7Ke,SAASiD,GAAWpkU,EAASqjM,GACxC,IAAK,IAAIg+H,KAAah+H,EAElB,IADA,IAAIi+H,EAAaD,EAAUhwS,OAAO1wC,MAAM,KAC/BlF,EAAM,EAAGA,EAAM6lV,EAAW9nV,OAAQiC,IACvCukB,EAAQnvB,iBAAiBywV,EAAW7lV,GAAM4nN,EAAOg+H,IAAY,EAGzE,CCPe,SAASgD,GAAarkU,EAASqjM,GAG1C,IAAK,IAAI51N,UAFO,IAAX41N,IAAoBA,EAAS,CAAC,GAElBA,EAEb,IADA,IAAIi+H,EAAa7zV,EAAK4jD,OAAO1wC,MAAM,KAC1BlF,EAAM,EAAGA,EAAM6lV,EAAW9nV,OAAQiC,IACvCukB,EAAQ+pB,oBAAoBu3S,EAAW7lV,GAAM4nN,EAAO51N,IAAO,EAGvE,gBCTe,SAAS62V,GAAWh3R,GAC/B,OAAOxtC,QAAQoF,IAAIooC,EACvB,CCAA,IAAIi3R,GAAY,SAAU/gQ,GACtB,SAAS+gQ,EAASZ,GACdngQ,EAAMplE,KAAKzG,MAEXA,KAAKq7I,WAAa,GAClBr7I,KAAKu6H,OAAS,KAEVyxM,IACAhsU,KAAKgsU,WAAaA,EAClBhsU,KAAKoX,UAEb,CAkFA,OAhFKy0D,IAAQ+gQ,EAAStmU,UAAYulE,GAClC+gQ,EAAS1sU,UAAYvd,OAAOkkB,OAAQglE,GAASA,EAAM3rE,WACnD0sU,EAAS1sU,UAAU0G,YAAcgmU,EAEjCA,EAAS1sU,UAAU2nK,QAAU,WAGrB7nK,KAAKgsU,YACLhsU,KAAKgsU,WAAWv9P,eAAezuE,MAInC,IADA,IAAIvsB,EAAWusB,KAAKq7I,WACXn7J,EAAI,EAAGA,EAAIzM,EAASoO,OAAQ3B,IAPxB8f,KAQFq7I,WAAWn7J,GAAG2nL,UAGzB7nK,KAAKu6H,OAAS,IAClB,EAEAqyM,EAAS1sU,UAAUy8M,KAAO,WAAkB,EAE5CiwH,EAAS1sU,UAAUkX,QAAU,WACrBpX,KAAKgsU,YACLhsU,KAAKgsU,WAAWx9P,YAAYxuE,KAEpC,EAEA4sU,EAAS1sU,UAAUxU,OAAS,SAAiBm0F,GACzC7/E,KAAKq7I,WAAWr6I,KAAK6+E,GACrBA,EAAK06C,OAASv6H,IAClB,EAEA4sU,EAAS1sU,UAAUu7H,SAAW,SAAmB57C,EAAM/C,GACnD98E,KAAKq7I,WAAWv3I,OAAOg5E,EAAK,EAAG+C,GAC/BA,EAAK06C,OAASv6H,IAClB,EAEA4sU,EAAS1sU,UAAUsd,OAAS,SAAiB5oB,EAAOypE,GAIhD,IAHA,IAEIr3D,EAAMpS,EAAQypE,EACTn+E,EAAI0U,EAAO1U,EAAI8mB,EAAK9mB,IAHhB8f,KAIFq7I,WAAWn7J,GAAG2sV,aAEzB7sU,KAAKq7I,WAAWv3I,OAAOlP,EAAOypE,EAClC,EAEAuuQ,EAAS1sU,UAAU2sU,WAAa,WAC5B7sU,KAAKugC,QACLvgC,KAAK6nK,SACT,EAEA+kK,EAAS1sU,UAAUqgC,MAAQ,WACvBvgC,KAAKwd,OAAO,EAAGxd,KAAKq7I,WAAWx5J,OACnC,EAEA+qV,EAAS1sU,UAAU4sU,WAAa,WACxB9sU,KAAKu6H,QACLv6H,KAAKu6H,OAAOuyM,YAEpB,EAEAF,EAAS1sU,UAAU2uE,eAAiB,WAChC7uE,KAAK8sU,YACT,EAEAF,EAAS1sU,UAAU0uE,cAAgB,WAC/B5uE,KAAK8sU,YACT,EAEAF,EAAS1sU,UAAUq7H,eAAiB,SAAyB7hJ,GACxC,QAAbA,EAAE2Y,OACF2N,KAAK28M,KAAKjjO,EAAE+Y,MAAO/Y,EAAEkb,OACD,WAAblb,EAAE2Y,QACT2N,KAAKwd,OAAO9jC,EAAEkb,MAAOlb,EAAE+Y,MAAM5Q,QAGjCme,KAAK8sU,YACT,EAEOF,CACX,CA9FgB,CA8Fd/gQ,GAAAA,GAEF,YChGA,SAFe,CAAC,ECIhB,IAAI8iE,GAAQ,SAAUi+L,GAClB,SAASj+L,EAAKq9L,GACVY,EAASnmU,KAAKzG,KAAMgsU,GAChBA,GACAhsU,KAAK+sU,UAEb,CA6GA,OA3GKH,IAAWj+L,EAAKroI,UAAYsmU,GACjCj+L,EAAKzuI,UAAYvd,OAAOkkB,OAAQ+lU,GAAYA,EAAS1sU,WACrDyuI,EAAKzuI,UAAU0G,YAAc+nI,EAE7BA,EAAKzuI,UAAU6sU,SAAW,WACtB,IAAI/hP,EAAOhrF,KAAKgsU,WAAWhhP,OACvBA,IACAhrF,KAAKgrF,KAAOA,EACZA,EAAKxc,YAAYxuE,MAEzB,EAEA2uI,EAAKzuI,UAAUqgC,MAAQ,WACfvgC,KAAKgsU,YACLhsU,KAAKgsU,WAAWv9P,eAAezuE,MAGnCA,KAAKgtU,YAELJ,EAAS1sU,UAAUqgC,MAAM95B,KAAKzG,KAClC,EAEA2uI,EAAKzuI,UAAU8sU,UAAY,WACnBhtU,KAAKgrF,OACLhrF,KAAKgrF,KAAKvc,eAAezuE,aAClBA,KAAKgrF,KAEpB,EAEA2jD,EAAKzuI,UAAU+sU,QAAU,SAAkBxoN,GACnCzkH,KAAKgrF,OACLy5B,EAAIyoN,YAEW,IAAIC,GAASntU,KAAKgrF,KAAKxP,UAAUx7E,KAAKgrF,MAC5CoiP,aAAa3oN,EAAKzkH,KAAKgrF,MAEhCy5B,EAAIz5B,KAAK,WAEjB,EAEA2jD,EAAKzuI,UAAU0uE,cAAgB,SAAwBl1F,GACnC,SAAZA,EAAEiD,QACFqjB,KAAKgtU,YACLhtU,KAAK+sU,YAGTH,EAAS1sU,UAAU0uE,cAAcnoE,KAAKzG,KAAMtmB,EAChD,EAEAi1J,EAAKzuI,UAAU0hF,aAAe,SAAuB6iC,GACjD,GAAIzkH,KAAKgsU,WAAY,CACjB,IAAI7gU,EAAYnL,KAAKgsU,WAAW7gU,YAC5BA,GACAs5G,EAAIt5G,UAAUhL,MAAMskH,EAAKt5G,EAAU+nE,SAAS14C,QAAQ,GAE5D,CACJ,EAEAm0G,EAAKzuI,UAAUmtU,aAAe,SAAuBxkP,EAAU/L,EAAKwwP,GAGhE,IAFA,IAESptV,EAAI,EAAGA,EAAI2oG,EAAShnG,OAAQ3B,IAAK,CACtC,IAAI8rV,EAAanjP,EAAS3oG,GACtBzM,EAAWu4V,EAAWv4V,SAEtBsqM,EAAY,IAAIovJ,GAASnB,EAAWxwP,UAAUwwP,EAAYsB,GAE1D75V,GAAYA,EAASoO,OAAS,GAC9Bk8L,EAAU4+B,KAAKlpO,EAAUqpG,EAAKwwP,IAG9B19P,EAAAA,GAAAA,GAAQkN,GAZH98E,KAaEy7H,SAASsiD,EAAWjhG,GAbtB98E,KAeEtU,OAAOqyL,EAEtB,CACJ,EAEApvC,EAAKzuI,UAAUy8M,KAAO,SAAe9zH,EAAU/L,EAAKwwP,GAChDttU,KAAKqtU,aAAaxkP,EAAU/L,EAAKwwP,GAEjCttU,KAAK8sU,YACT,EAEAn+L,EAAKzuI,UAAUgzH,WAAa,SAAqBzO,GAC7C,GAAIzkH,KAAKgsU,WAAY,CACjB,IAAI52U,EAAU4K,KAAKgsU,WAAW52U,WAC1Bw6E,EAAAA,GAAAA,GAAQx6E,IACR4K,KAAKutU,YAAY9oN,EAAKrvH,EAE9B,CACJ,EAEAu5I,EAAKzuI,UAAUqtU,YAAc,SAAsB9oN,EAAKh/H,GACpD,IAAI+nV,EAAW/nV,EACX+nV,GAAY/oN,EAAI8oN,cAChBC,GAAY/oN,EAAI8oN,aAEpB9oN,EAAI8oN,YAAcC,CACtB,EAEA7+L,EAAKzuI,UAAU63H,QAAU,WACrB,IAAIvrI,EAAMwT,KAAKgsU,WACf,OAAQx/U,GAAQA,IAA+B,IAAxBA,EAAIuxC,QAAQg6F,OACvC,EAEO4W,CACX,CApHY,CAoHVi+L,IAEF,2BCpFA,SAlCiB,SAAUt7P,GACvB,SAASm8P,IACLn8P,EAAWnxE,MAAMH,KAAM0M,UAC3B,CA4BA,OA1BK4kE,IAAam8P,EAAUnnU,UAAYgrE,GACxCm8P,EAAUvtU,UAAYvd,OAAOkkB,OAAQyqE,GAAcA,EAAWpxE,WAC9DutU,EAAUvtU,UAAU0G,YAAc6mU,EAElCA,EAAUvtU,UAAUwtU,SAAW,SAAmBjpN,GAC9C,GAAKzkH,KAAK+3H,UAAV,CAIAtT,EAAIj1H,OAEJwQ,KAAK4hF,aAAa6iC,GAClBzkH,KAAKitU,QAAQxoN,GACbzkH,KAAKkzH,WAAWzO,GAGhB,IADA,IAAI42B,EAAar7I,KAAKq7I,WACbn7J,EAAI,EAAGA,EAAIm7J,EAAWx5J,OAAQ3B,IAAK,CACxC,IAAIs3G,EAAQ6jD,EAAWn7J,GACnBs3G,EAAMugC,WACNvgC,EAAMk2O,SAASjpN,EAEvB,CAEAA,EAAIgP,SAhBJ,CAiBJ,EAEOg6M,CACX,CAhCiB,EAgCf3xM,EAAAA,GAAAA,GAAY6S,GAAM,eChCpB,SAJU1xJ,KAAK2yB,KAAO,WAClB,OAAO,IAAI3yB,MAAOgV,SACtB,ECFA,IAAI07U,GAAsB,SAAU93R,GAChC,IAAI+3R,EAAwB,qBAAX70V,OAAyBA,OAAS,CAAC,EAChD80V,EAAiBD,EAAI54E,uBACL44E,EAAIE,6BACJF,EAAIG,0BACJH,EAAII,wBACJJ,EAAIK,yBACJ,SAASp4R,GAAY7lC,WAAW6lC,EAAU,IAAO,GAAK,EAE1E83R,GAAsB,SAAU93R,GAAY,OAAOg4R,EAAepnU,KAAKmnU,EAAK/3R,EAAW,EACvF83R,GAAoB93R,EACxB,EAEA,YCwDA,SA9DgB,SAAUy7B,GACtB,SAAS48P,EAASluP,EAAQzmG,GACtB+3F,EAAW7qE,KAAKzG,MAEhBA,KAAKggF,OAASA,EACdhgF,KAAKzmB,KAAOA,EACZymB,KAAKykH,IAAMzkC,EAAOV,WAAW,MAE7B,IAAI6uP,EAAoBnuU,KAAKouU,YAAYv/T,KAAK7O,MAC9CA,KAAK8sU,WCdE,SAAkB93S,EAAI+kJ,GACjC,IACI52I,EADAkrS,EAAe,EAGnB,IAAKt0J,GAASA,GAAS,EACnB,OAAO/kJ,EAGX,IAAIs5S,EAAY,WACZ,IAAIC,EAAU3+T,KAAQy+T,EAClBnmU,EAAOwE,UAEPquB,EAAO,WACP/F,EAAG70B,MAAM,KAAM+H,GACfmmU,EAAez+T,IACnB,EAGA,IAAKy+T,EACD,OAAOtzS,IAGPoI,GACA10B,aAAa00B,GAGborS,EAAUx0J,EACVh/I,IAEAoI,EAAUnzB,WAAW+qB,EAAMg/I,EAAQw0J,EAE3C,EAMA,OAJAD,EAAU78T,OAAS,WACfhD,aAAa00B,EACjB,EAEOmrS,CACX,CDxB0BE,EAAS,WACvBX,GAAeM,EACnB,GAbU,mBAcd,CA+CA,OA7CK78P,IAAa48P,EAAS5nU,UAAYgrE,GACvC48P,EAAShuU,UAAYvd,OAAOkkB,OAAQyqE,GAAcA,EAAWpxE,WAC7DguU,EAAShuU,UAAU0G,YAAcsnU,EAEjCA,EAAShuU,UAAU2nK,QAAU,WACzBv2F,EAAWpxE,UAAU2nK,QAAQphK,KAAKzG,MAClCA,KAAKggF,OAAS,KACdhgF,KAAKykH,IAAM,IACf,EAEAypN,EAAShuU,UAAUy8M,KAAO,SAAe9zH,EAAU/L,EAAKwwP,GACpDttU,KAAKqtU,aAAaxkP,EAAU/L,EAAKwwP,GACjCttU,KAAKouU,aACT,EAEAF,EAAShuU,UAAUuuU,SAAW,SAAmB5+U,GAC7C,IACImwF,EADMhgF,KACOggF,OACbzmG,EAFMymB,KAEKzmB,KACfymG,EAAO3lG,MAAQd,EAAKc,MAAQwV,EAC5BmwF,EAAO3kG,OAAS9B,EAAK8B,OAASwU,EAC9BmQ,KAAKykH,IAAI50H,MAAMA,EAAOA,EAC1B,EAEAq+U,EAAShuU,UAAUwuU,kBAAoB,WACnC,MAAuC,kBAA5B31V,OAAO41V,iBACP51V,OAAO41V,iBAGX,CACX,EAEAT,EAAShuU,UAAUkuU,YAAc,SAAsBrwS,GACnD,GAAK/9B,KAAKykH,IAAV,CAIA,IACI50H,EADakuC,GAAWA,EAAQ6wS,WACX,EAAI5uU,KAAK0uU,oBAClC1uU,KAAKyuU,SAAS5+U,GAEdmQ,KAAKykH,IAAIoqN,UAAU,EAAG,EAAG7uU,KAAKggF,OAAO3lG,MAAO2lB,KAAKggF,OAAO3kG,QACxD2kB,KAAK0tU,SAAS1tU,KAAKykH,IAPnB,CAQJ,EAEOypN,CACX,CA5DgB,EA4DdpyM,EAAAA,GAAAA,GAAY2xM,GAAW,eEfzB,SAlDgB,SAAU5hQ,GACtB,SAASijQ,IACLjjQ,EAAMplE,KAAKzG,MAEXA,KAAK+uU,OAAS,EAClB,CA0CA,OAxCKljQ,IAAQijQ,EAASxoU,UAAYulE,GAClCijQ,EAAS5uU,UAAYvd,OAAOkkB,OAAQglE,GAASA,EAAM3rE,WACnD4uU,EAAS5uU,UAAU0G,YAAckoU,EAEjCA,EAAS5uU,UAAUg7H,KAAO,SAAeloI,EAAOigF,GAC5CjzE,KAAK+uU,OAAO/tU,KAAK,CACbiyE,KAAMA,EACNjgF,MAAOA,IAEXA,EAAMg8U,UAAYhvU,IACtB,EAEA8uU,EAAS5uU,UAAU+uU,YAAc,SAAsB16P,GAInD,IAHA,IAAIw6P,EAAS/uU,KAAK+uU,OACdltV,EAASktV,EAAOltV,OAChBnF,EAAS,GACJoH,EAAM,EAAGA,EAAMjC,EAAQiC,IACxBirV,EAAOjrV,GAAKmvF,KAAKqB,cAAcC,IAC/B73F,EAAOskB,KAAK+tU,EAAOjrV,GAAKkP,OAGhC,OAAOtW,CACX,EAEAoyV,EAAS5uU,UAAUo2F,OAAS,SAAiBtjG,EAAOigF,GAChDjzE,KAAKk7H,KAAKloI,EAAOigF,EACrB,EAEA67P,EAAS5uU,UAAUsd,OAAS,SAAiBxqB,GAIzC,IAHA,IAAI+7U,EAAS/uU,KAAK+uU,OACdltV,EAASktV,EAAOltV,OAEXiC,EAAM,EAAGA,EAAMjC,EAAQiC,IAC5B,GAAIirV,EAAOjrV,GAAKkP,QAAUA,EAAO,CAC7B+7U,EAAOjrU,OAAOhgB,EAAK,GACnB,KACJ,CAER,EAEOgrV,CACX,CAhDgB,CAgDdjjQ,GAAAA,kBC9CEqjQ,GAAY,SAAUJ,GACtB,SAASI,EAASryP,GACdiyP,EAASroU,KAAKzG,MACdA,KAAKvsB,SAAW,GAChBusB,KAAK68E,KAAOA,CAChB,CAsEA,OApEKiyP,IAAWI,EAAS5oU,UAAYwoU,GACrCI,EAAShvU,UAAYvd,OAAOkkB,OAAQioU,GAAYA,EAAS5uU,WACzDgvU,EAAShvU,UAAU0G,YAAcsoU,EAEjCA,EAAShvU,UAAUivU,SAAW,SAAmBtyP,GAC7C,IAAI4qH,EAAWznM,KAAK68E,KAChBuyP,EAAkB3nI,EAASnuH,cAC3BA,EAAcuD,EAAKvD,cACnB61P,EAAW1nI,EAAS9vH,OAAOxtB,GAAK0yB,EAAKlF,OAAOxtB,GAAKs9I,EAAS9vH,OAAOtH,GAAKwM,EAAKlF,OAAOtH,GAAKiJ,EAAYnvB,GAAKilR,EAAgBjlR,GACxHmvB,EAAYjJ,GAAK++P,EAAgB/+P,EACrC,OAAO8+P,CACX,EAEAD,EAAShvU,UAAU+uU,YAAc,SAAsB16P,GAInD,IAHA,IAAI9gG,EAAWusB,KAAKvsB,SAChBoO,EAASpO,EAASoO,OAClBnF,EAASoyV,EAAS5uU,UAAU+uU,YAAYxoU,KAAKzG,KAAMu0E,GAC9CzwF,EAAM,EAAGA,EAAMjC,EAAQiC,KAC5B4H,EAAAA,GAAAA,GAAOhP,EAAQjJ,EAASqQ,GAAKmrV,YAAY16P,IAE7C,OAAO73F,CACX,EAEAwyV,EAAShvU,UAAUo2F,OAAS,SAAiBtjG,EAAOigF,GAChD,IAAIx/F,EAAWusB,KAAKvsB,SAChB6tK,GAAW,EAEf,GAAIthJ,KAAKmvU,SAASl8P,GAAO,CACrB,GAAIjzE,KAAK+uU,OAAOltV,OAAS,EACrBme,KAAKk7H,KAAKloI,EAAOigF,OACd,CACEx/F,EAASoO,QACVme,KAAKqvU,gBAGT,IAAK,IAAIvrV,EAAM,EAAGA,EAAMrQ,EAASoO,OAAQiC,IACrC,GAAIrQ,EAASqQ,GAAKwyG,OAAOtjG,EAAOigF,GAAO,CACnCquE,GAAW,EACX,KACJ,CAGCA,GACDthJ,KAAKk7H,KAAKloI,EAAOigF,EAEzB,CACAquE,GAAW,CACf,CAEA,OAAOA,CACX,EAEA4tL,EAAShvU,UAAUmvU,cAAgB,WAC/B,IACIxyP,EADM78E,KACK68E,KACXppG,EAFMusB,KAESvsB,SACf+9F,EAASqL,EAAKrL,SACd89P,EAAYzyP,EAAKxiG,QAAU,EAC3Bk1V,EAAa1yP,EAAKxhG,SAAW,EAEjC5H,EAASutB,KACL,IAAIkuU,EAAS,IAAIl7P,EAAAA,EAAK,CAAE6I,EAAKlF,OAAOxtB,EAAG0yB,EAAKlF,OAAOtH,GAAK,CAAEi/P,EAAWC,KACrE,IAAIL,EAAS,IAAIl7P,EAAAA,EAAK,CAAExC,EAAOrnB,EAAG0yB,EAAKlF,OAAOtH,GAAK,CAAEi/P,EAAWC,KAChE,IAAIL,EAAS,IAAIl7P,EAAAA,EAAK,CAAE6I,EAAKlF,OAAOxtB,EAAGqnB,EAAOnB,GAAK,CAAEi/P,EAAWC,KAChE,IAAIL,EAAS,IAAIl7P,EAAAA,EAAK,CAAExC,EAAOrnB,EAAGqnB,EAAOnB,GAAK,CAAEi/P,EAAWC,KAEnE,EAEOL,CACX,CA5EgB,CA4EdJ,IAEF,YC5EA,IAAIU,GAAY,IAoMhB,SAASC,GAAep6P,EAAIE,GACxB,OAAIF,EAAGq6P,QAAUn6P,EAAGm6P,QACT,EAEPr6P,EAAGq6P,QAAUn6P,EAAGm6P,SACR,EAGL,CACX,CAEA,SA3MsB,SAAU7jQ,GAC5B,SAAS8jQ,IACL9jQ,EAAMplE,KAAKzG,MAEXA,KAAK4vU,WACT,CAwLA,OAtLK/jQ,IAAQ8jQ,EAAerpU,UAAYulE,GACxC8jQ,EAAezvU,UAAYvd,OAAOkkB,OAAQglE,GAASA,EAAM3rE,WACzDyvU,EAAezvU,UAAU0G,YAAc+oU,EAEvCA,EAAezvU,UAAU0vU,UAAY,WACjC5vU,KAAK6vU,QAAU,CAAC,EAChB7vU,KAAKguG,KAAO,IAAI8gO,GAChB9uU,KAAK8vU,aAAe,EACxB,EAEAH,EAAezvU,UAAUqgC,MAAQ,WAI7B,IAHA,IAEIuvS,EAAe9vU,KAAK8vU,aACfhsV,EAAM,EAAGA,EAAMgsV,EAAajuV,OAAQiC,IAHhCkc,KAIFwd,OAAOsyT,EAAahsV,IAE/Bkc,KAAK4vU,WACT,EAEAD,EAAezvU,UAAU6vU,WAAa,SAAqBx7P,GACvD,IAAIy7P,GAAehwU,KAAK6vU,QAAS/6U,KAAK4M,MAAO6yE,EAAMpqB,EAAIqlR,MAAiB,CAAC,GAAK16U,KAAK4M,MAAO6yE,EAAMlE,EAAIm/P,KAChG9yV,EAASsjB,KAAKguG,KAAKihO,YAAY16P,GAE/By7P,IACAtzV,EAASA,EAAOwH,OAAO8rV,EAAWf,YAAY16P,KAGlDv0E,KAAKiwU,aAAavzV,GAElBA,EAAOohB,KAAK2xU,IACZ,IAAK,IAAI3rV,EAAM,EAAGA,EAAMpH,EAAOmF,OAAQiC,IACnC,GAAIpH,EAAOoH,GAAKwwF,cAAcC,GAC1B,OAAO73F,EAAOoH,EAG1B,EAEA6rV,EAAezvU,UAAU+vU,aAAe,SAAuBpnP,GAG3D,IAFA,IAES/kG,EAAM,EAAGA,EAAM+kG,EAAShnG,OAAQiC,IAAO,CAM5C,IALA,IAAIukB,EAAUwgF,EAAS/kG,GACnBhK,EAAS,EACTo2V,EAAcp7U,KAAKg4E,IAtDlB,IACD,IAsDAw0M,EAAU,GAEPj5Q,GACHi5Q,EAAQtgR,KAAKqH,GACbA,EAAUA,EAAQkyH,OAGtB,KAAO+mJ,EAAQz/R,QAEX/H,MADAuuB,EAAUi5Q,EAAQtiP,OACEu7F,OAASlyH,EAAQkyH,OAAO9mJ,SAfvCusB,KAeyD8vU,cAAc70T,QAAQ5S,GAAW,GAAK6nU,EACpGA,GAjEC,IAoELrnP,EAAS/kG,GAAK4rV,QAAU51V,CAC5B,CACJ,EAEA61V,EAAezvU,UAAU0uE,cAAgB,SAAwBl1F,GAC7C,cAAZA,EAAEiD,OAAqC,iBAAZjD,EAAEiD,OAC7BqjB,KAAKmwU,WAAWz2V,EAAE2uB,QAE1B,EAEAsnU,EAAezvU,UAAU2uE,eAAiB,SAAyBn1F,GAC/DsmB,KAAKmwU,WAAWz2V,EAAE2uB,QACtB,EAEAsnU,EAAezvU,UAAUiwU,WAAa,SAAqB9nU,GAGvD,GAAyB,UAArBA,EAAQmzE,SACR,IAAK,IAAI13F,EAAM,EAAGA,EAAMukB,EAAQ50B,SAASoO,OAAQiC,IAHxCkc,KAIEmwU,WAAW9nU,EAAQ50B,SAASqQ,SAGnCukB,EAAQ2mU,WACR3mU,EAAQ2mU,UAAUxxT,OAAOnV,GAE7BrI,KAAKowU,aAAa/nU,EAE1B,EAEAsnU,EAAezvU,UAAUud,IAAM,SAAcorE,GACzC,IAAI80K,EAAgB3lQ,MAAMC,QAAQ4wF,GAAYA,EAASj6F,MAAM,GAAK,CAAEi6F,IAEpEn9F,EAAAA,GAAAA,GAAOsU,KAAK8vU,aAAcnyE,GAC1B39P,KAAKqwU,QAAQ1yE,EACjB,EAEAgyE,EAAezvU,UAAUq7H,eAAiB,SAAyB7hJ,GAG/D,GAAiB,WAAbA,EAAE2Y,OACF,IAAK,IAAIvO,EAAM,EAAGA,EAAMpK,EAAE+Y,MAAM5Q,OAAQiC,IAH/Bkc,KAIEwd,OAAO9jC,EAAE+Y,MAAM3O,SAG1Bkc,KAAKqwU,QAAQr4U,MAAMkI,UAAUtR,MAAM6X,KAAK/sB,EAAE+Y,MAAO,GAEzD,EAEAk9U,EAAezvU,UAAUmwU,QAAU,SAAkBxnP,GAKjD,IAJA,IAEIxgF,EAEGwgF,EAAShnG,OAAS,IACrBwmB,EAAUwgF,EAAS7pD,OACXwvC,YANCxuE,MAOgB,UAArBqI,EAAQmzE,UACR9vF,EAAAA,GAAAA,GAAOm9F,EAAUxgF,EAAQ50B,UARpBusB,KAUEowU,aAAa/nU,EAGhC,EAEAsnU,EAAezvU,UAAUkwU,aAAe,SAAuBp9U,GAC3D,IAAIigF,EAAOjgF,EAAMigF,OACjB,GAAIA,EAAM,CACN,IAAIq9P,EAAUtwU,KAAKuwU,WAAWt9P,GAC1B9oB,EAAImmR,EAAQ,GAAG,GACfjgQ,EAAIigQ,EAAQ,GAAG,GAEnB,GAAItwU,KAAKwwU,OAAOF,GACZtwU,KAAKguG,KAAK1X,OAAOtjG,EAAOigF,OACrB,CACH,IAAI48P,EAAU7vU,KAAK6vU,QACdA,EAAQ1lR,KACT0lR,EAAQ1lR,GAAK,CAAC,GAGb0lR,EAAQ1lR,GAAGkmB,KACZw/P,EAAQ1lR,GAAGkmB,GAAK,IAAI6+P,GAChB,IAAIl7P,EAAAA,EAAK,CAAE7pB,EAAIqlR,GAAWn/P,EAAIm/P,IAAa,CAAEA,GAAWA,OAIhEK,EAAQ1lR,GAAGkmB,GAAGimB,OAAOtjG,EAAOigF,EAChC,CACJ,CACJ,EAEA08P,EAAezvU,UAAUsd,OAAS,SAAiBnV,GAK/C,GAFAA,EAAQomE,eAAezuE,MAEE,UAArBqI,EAAQmzE,SAER,IADA,IAAI/nG,EAAW40B,EAAQ50B,SACdqQ,EAAM,EAAGA,EAAMrQ,EAASoO,OAAQiC,IANhCkc,KAOEwd,OAAO/pC,EAASqQ,SAEpBukB,EAAQ2mU,YACf3mU,EAAQ2mU,UAAUxxT,OAAOnV,UAClBA,EAAQ2mU,UAEvB,EAEAW,EAAezvU,UAAUswU,OAAS,SAAiBF,GAC/C,OAAOA,EAAQ,GAAGzuV,OAAS,GAAKyuV,EAAQ,GAAGzuV,OAAS,CACxD,EAEA8tV,EAAezvU,UAAUqwU,WAAa,SAAqB1zP,GAKvD,IAJA,IAAIvD,EAAcuD,EAAKvD,cACnBm3P,EAAU37U,KAAK4M,MAAM43E,EAAYnvB,EAAIqlR,IACrCkB,EAAU57U,KAAK4M,MAAM43E,EAAYjJ,EAAIm/P,IACrCc,EAAU,CAAE,GAAI,IACXnmR,EAAIr1D,KAAK4M,MAAMm7E,EAAKlF,OAAOxtB,EAAIqlR,IAAYrlR,GAAKsmR,EAAStmR,IAC9DmmR,EAAQ,GAAGtvU,KAAKmpD,GAEpB,IAAK,IAAIkmB,EAAIv7E,KAAK4M,MAAMm7E,EAAKlF,OAAOtH,EAAIm/P,IAAYn/P,GAAKqgQ,EAASrgQ,IAC9DigQ,EAAQ,GAAGtvU,KAAKqvE,GAEpB,OAAOigQ,CACX,EAEOX,CACX,CA9LsB,CA8LpB9jQ,GAAAA,GCtMF,IAAI8kQ,GAAgB,SAAuBC,GACvCA,EAAQ/hU,KAAK,aAAc7O,KAAKwrU,YAAY38T,KAAK7O,OACjD4wU,EAAQ/hU,KAAK,aAAc7O,KAAKyrU,YAAY58T,KAAK7O,OAEjDA,KAAKqI,QAAUuoU,EAAQvoU,OAC3B,EAEAsoU,GAAczwU,UAAUqgC,MAAQ,WAC5BvgC,KAAK6wU,cACT,EAEAF,GAAczwU,UAAU2nK,QAAU,WAC9B7nK,KAAK6wU,sBACE7wU,KAAKqI,OAChB,EAEAsoU,GAAczwU,UAAUsrU,YAAc,SAAsB9xV,GACxD,IAAIoiQ,EAAS97O,KAAK8wU,aAAap3V,GAE1BoiQ,GAGI97O,KAAK+wU,WACN/wU,KAAKgxU,eAAiBhxU,KAAKixU,cAG/BjxU,KAAKkxU,WAAWp1F,IANhB97O,KAAK6wU,cAQb,EAEAF,GAAczwU,UAAUurU,YAAc,WAClCzrU,KAAK6wU,cACT,EAEAF,GAAczwU,UAAU4wU,aAAe,SAAuBp3V,GAG1D,IAFA,IAAIsZ,EAAQtZ,EAAE2uB,QAEPrV,KAAU48E,EAAAA,GAAAA,GAAQ58E,EAAM+qC,QAAQ+9M,SACnC9oP,EAAQA,EAAMunI,OAGlB,GAAIvnI,EACA,OAAOA,EAAM+qC,QAAQ+9M,MAE7B,EAEA60F,GAAczwU,UAAU+wU,WAAa,WACjC,GAAIjxU,KAAKqI,QACL,OAAOrI,KAAKqI,QAAQ30B,MAAMooQ,MAElC,EAEA60F,GAAczwU,UAAUgxU,WAAa,SAAqBp1F,GAClD97O,KAAKqI,UACLrI,KAAKqI,QAAQ30B,MAAMooQ,OAASA,EAC5B97O,KAAK+wU,SAAWj1F,EAExB,EAEA60F,GAAczwU,UAAU2wU,aAAe,WAC/B7wU,KAAK+wU,WACL/wU,KAAKkxU,WAAWlxU,KAAKgxU,gBAAkB,WAChChxU,KAAK+wU,SAEpB,EAEA,uECpEII,GAAc,CACd96M,IAAK,CAAE,IAAK,KACZF,KAAM,CAAE,EAAG,KACXi7M,SAAU,CAAE,EAAG,KACfC,QAAS,CAAE,IAAK,IAAK,IAAK,KAC1BC,YAAa,CAAE,EAAG,IAAK,IAAK,KAC5BC,eAAgB,CAAE,EAAG,IAAK,IAAK,IAAK,IAAK,MAGzCC,GAAQ,QACRC,GAAO,OCTI,SAASC,GAAWjtN,EAAKhnF,GACpC,IAAI86F,EAAW96F,EAAK86F,SAEpB,GAAwB,IAApBA,EAAS12I,OAAb,CAIA,IAAIk9I,EAAUxG,EAAS,GACnBz/G,EAASimH,EAAQjmH,SACrB2rG,EAAI33B,OAAOh0E,EAAOqxC,EAAGrxC,EAAOu3D,GAE5B,IAAK,IAAInwF,EAAI,EAAGA,EAAIq4I,EAAS12I,OAAQ3B,IAAK,CAEtC44B,GADAimH,EAAUxG,EAASr4I,IACF44B,SAEjB,IACIghH,EADUvB,EAASr4I,EAAI,GACL65I,aAClBJ,EAAYoF,EAAQpF,YAEpBG,GAAWH,EACXlV,EAAIktN,cAAc73M,EAAQ3vE,EAAG2vE,EAAQzpD,EACjCspD,EAAUxvE,EAAGwvE,EAAUtpD,EACvBv3D,EAAOqxC,EAAGrxC,EAAOu3D,GAErBo0C,EAAI13B,OAAOj0E,EAAOqxC,EAAGrxC,EAAOu3D,EAEpC,CAEI5yC,EAAKM,QAAQqzB,QACbqzD,EAAIoe,WAxBR,CA0BJ,CCbA,IAAI+uM,GAAY,SAAUjjM,GACtB,SAASijM,IACLjjM,EAAKxuI,MAAMH,KAAM0M,UACrB,CAoIA,OAlIKiiI,IAAOijM,EAAStrU,UAAYqoI,GACjCijM,EAAS1xU,UAAYvd,OAAOkkB,OAAQ8nI,GAAQA,EAAKzuI,WACjD0xU,EAAS1xU,UAAU0G,YAAcgrU,EAEjCA,EAAS1xU,UAAUwtU,SAAW,SAAmBjpN,GAC7CA,EAAIj1H,OAEJwQ,KAAK4hF,aAAa6iC,GAClBzkH,KAAKitU,QAAQxoN,GACbzkH,KAAKkzH,WAAWzO,GAEhBA,EAAIyoN,YAEJltU,KAAKotU,aAAa3oN,EAAKzkH,KAAKgsU,YAE5BhsU,KAAK6xU,YAAYptN,GACjBzkH,KAAK8zH,WAAWrP,GAChBzkH,KAAKg0H,YAAYvP,GAEjBzkH,KAAK8xU,QAAQrtN,GACbzkH,KAAK+xU,UAAUttN,GAEfA,EAAIgP,SACR,EAEAm+M,EAAS1xU,UAAU4xU,QAAU,SAAkBrtN,GAC3C,IAAI/nC,EAAO18E,KAAKgsU,WAAWjuS,QAAQ2+C,KAC/Bs1P,GAAU,EAkBd,OAhBIt1P,IACsB,aAAlBA,EAAKlB,UACLx7E,KAAKiyU,gBAAgBxtN,EAAK/nC,GAC1Bs1P,GAAU,IACFj3M,EAAAA,GAAAA,GAAcr+C,EAAKp+F,SAC3BmmI,EAAIytN,UAAYx1P,EAAKp+F,MAErBmmI,EAAIj1H,OACJwQ,KAAKutU,YAAY9oN,EAAK/nC,EAAKtnF,SAC3BqvH,EAAI/nC,OACJ+nC,EAAIgP,UAEJu+M,GAAU,IAIXA,CACX,EAEAJ,EAAS1xU,UAAU+xU,gBAAkB,SAA0BxtN,EAAK/nC,GAChE,IACIuU,EADAhe,EAAOjzE,KAAKgsU,WAAW/uP,UAG3B,GAAIP,aAAgBd,GAAAA,EAAgB,CAChC,IAAI74E,EAAQ25E,EAAK35E,QACbiE,EAAM01E,EAAK11E,MACfiqF,EAAWwzB,EAAI0tN,qBAAqBpvU,EAAMonD,EAAGpnD,EAAMstE,EAAGrpE,EAAImjD,EAAGnjD,EAAIqpE,EACrE,MAAO,GAAIqM,aAAgBZ,GAAAA,EAAgB,CACvC,IAAItK,EAASkL,EAAKlL,SAClByf,EAAWwzB,EAAI2tN,qBAAqB5gQ,EAAOrnB,EAAGqnB,EAAOnB,EAAG,EAAGmB,EAAOrnB,EAAGqnB,EAAOnB,EAAGqM,EAAKxD,SACxF,EA3ER,SAA0B+X,EAAU/V,GAChC,IAAK,IAAIp3F,EAAM,EAAGA,EAAMo3F,EAAMr5F,OAAQiC,IAAO,CACzC,IAAI63F,EAAOT,EAAMp3F,GACbxF,GAAQiuF,EAAAA,GAAAA,IAAWoP,EAAKr9F,SAE5BA,EAAMvB,GAAK4+F,EAAKvmF,UAEhB67F,EAASohP,aAAa12P,EAAKlzE,SAAUnqB,EAAM6tF,YAC/C,CACJ,CAoEQmmQ,CAAiBrhP,EAAUvU,EAAKxB,OAEhCupC,EAAIj1H,OAECktF,EAAKrB,aACNopC,EAAIt5G,UAAU8nE,EAAK54F,QAAS,EAAG,EAAG44F,EAAK53F,SAAU43F,EAAK0E,OAAOxtB,EAAG8oB,EAAK0E,OAAOtH,GAEhFo0C,EAAIytN,UAAYjhP,EAChBwzB,EAAI/nC,OAEJ+nC,EAAIgP,SACR,EAEAm+M,EAAS1xU,UAAU6xU,UAAY,SAAoBttN,GAC/C,IAAIlnC,EAASv9E,KAAKgsU,WAAWjuS,QAAQw/C,OACrC,GAAIA,KAAWw9C,EAAAA,GAAAA,GAAcx9C,EAAOj/F,QAAUi/F,EAAOljG,MAAQ,EASzD,OARAoqI,EAAI8tN,YAAch1P,EAAOj/F,MACzBmmI,EAAI1uB,WAAYv5B,EAAAA,GAAAA,GAAe+gB,EAAOljG,MAAO,GAE7CoqI,EAAIj1H,OACJwQ,KAAKutU,YAAY9oN,EAAKlnC,EAAOnoF,SAC7BqvH,EAAIlnC,SACJknC,EAAIgP,WAEG,CAEf,EAEAm+M,EAAS1xU,UAAU64H,SAAW,WAC1B,IAAIx7C,EAASv9E,KAAKgsU,WAAWjuS,QAAQw/C,OACrC,GAAIA,GAAUA,EAAOw7C,SACjB,OAAOx7C,EAAOw7C,SAASvjG,aAE/B,EAEAo8S,EAAS1xU,UAAU2xU,YAAc,SAAsBptN,GACnD,IAAIsU,EAAW/4H,KAAK+4H,WACpB,GAAIA,GAAYA,IAAay4M,GAAO,CAChC,IAAI79M,EAAYw9M,GAAYp4M,GACxBtU,EAAIotN,YACJptN,EAAIotN,YAAYl+M,IAEhBlP,EAAI+tN,QAAU7+M,EACdlP,EAAIguN,eAAiB9+M,EAE7B,CACJ,EAEAi+M,EAAS1xU,UAAU4zH,WAAa,SAAqBrP,GACjD,IAAIsU,EAAW/4H,KAAK+4H,WAChBx7C,EAASv9E,KAAKgsU,WAAWjuS,QAAQw/C,OACjCw7C,GAAYA,IAAay4M,GACzB/sN,EAAIsP,QAAU09M,GACPl0P,GAAUA,EAAOw2C,UACxBtP,EAAIsP,QAAUx2C,EAAOw2C,QAE7B,EAEA69M,EAAS1xU,UAAU8zH,YAAc,SAAsBvP,GACnD,IAAIlnC,EAASv9E,KAAKgsU,WAAWjuS,QAAQw/C,OACjCA,GAAUA,EAAO02C,WACjBxP,EAAIwP,SAAW12C,EAAO02C,SAE9B,EAEA29M,EAAS1xU,UAAUktU,aAAe,SAAuB3oN,EAAKhnF,GAC1Di0S,GAAWjtN,EAAKhnF,EACpB,EAEOm0S,CACX,CAxIgB,CAwIdjjM,IAEF,YC1JA,IAAI+jM,GAAW,SAAUd,GACrB,SAASc,IACLd,EAASzxU,MAAMH,KAAM0M,UACzB,CAWA,OATKklU,IAAWc,EAAQpsU,UAAYsrU,GACpCc,EAAQxyU,UAAYvd,OAAOkkB,OAAQ+qU,GAAYA,EAAS1xU,WACxDwyU,EAAQxyU,UAAU0G,YAAc8rU,EAEhCA,EAAQxyU,UAAUktU,aAAe,SAAuB3oN,GAEpDitN,GAAWjtN,EADAzkH,KAAKgsU,WAAW2G,SAE/B,EAEOD,CACX,CAfe,CAebd,IAEF,YClBA,IAAIgB,GAAc,SAAUhB,GACxB,SAASgB,IACLhB,EAASzxU,MAAMH,KAAM0M,UACzB,CAcA,OAZKklU,IAAWgB,EAAWtsU,UAAYsrU,GACvCgB,EAAW1yU,UAAYvd,OAAOkkB,OAAQ+qU,GAAYA,EAAS1xU,WAC3D0yU,EAAW1yU,UAAU0G,YAAcgsU,EAEnCA,EAAW1yU,UAAUktU,aAAe,SAAuB3oN,GACvD,IAAI1wI,EAAMisB,KAAKgsU,WAAW3uP,WACtB7L,EAASz9F,EAAIy9F,OACb0H,EAASnlG,EAAImlG,OAEjBurC,EAAIye,IAAI1xD,EAAOrnB,EAAGqnB,EAAOnB,EAAG6I,EAAQ,EAAa,EAAVpkF,KAAKqnF,GAChD,EAEOy2P,CACX,CAlBkB,CAkBhBhB,IAEF,YCnBA,IAAIiB,GAAa,SAAUjB,GACvB,SAASiB,EAAU7G,EAAYsB,GAC3BsE,EAASnrU,KAAKzG,KAAMgsU,GAEpBhsU,KAAKgkR,OAAShkR,KAAKgkR,OAAOn1Q,KAAK7O,MAC/BA,KAAK8yU,QAAU9yU,KAAK8yU,QAAQjkU,KAAK7O,MAEjCA,KAAKpB,SAAUuhF,EAAAA,GAAAA,KAEf,IAAI4I,EAAM/oF,KAAK+oF,IAAM,IAAII,MACrB38F,EAAMw/U,EAAWx/U,MAEjB8gV,IAAU,UAAU7/T,KAAKjhB,KACzBu8F,EAAIK,YAAckkP,GAGlB9gV,IACAu8F,EAAIv8F,IAAMA,GAGVu8F,EAAIC,SACJhpF,KAAKgkR,UAELj7L,EAAI55F,OAAS6Q,KAAKgkR,OAClBj7L,EAAIr9C,QAAU1rC,KAAK8yU,QAE3B,CAiDA,OA/CKlB,IAAWiB,EAAUvsU,UAAYsrU,GACtCiB,EAAU3yU,UAAYvd,OAAOkkB,OAAQ+qU,GAAYA,EAAS1xU,WAC1D2yU,EAAU3yU,UAAU0G,YAAcisU,EAElCA,EAAU3yU,UAAUwtU,SAAW,SAAmBjpN,GACjB,aAAzBzkH,KAAKpB,QAAQ7rB,UACb0xI,EAAIj1H,OAEJwQ,KAAK4hF,aAAa6iC,GAClBzkH,KAAKitU,QAAQxoN,GAEbzkH,KAAKu/E,UAAUklC,GAEfA,EAAIgP,UAEZ,EAEAo/M,EAAU3yU,UAAU0uE,cAAgB,SAAwBl1F,GACxC,QAAZA,EAAEiD,OACFqjB,KAAKpB,SAAUuhF,EAAAA,GAAAA,KACfngF,KAAK+oF,IAAIv8F,IAAMwT,KAAKgsU,WAAWx/U,OAE/BolV,EAAS1xU,UAAU0uE,cAAcnoE,KAAKzG,KAAMtmB,EAEpD,EAEAm5V,EAAU3yU,UAAU8jR,OAAS,WACzBhkR,KAAKpB,QAAQwJ,UACbpI,KAAK8sU,YACT,EAEA+F,EAAU3yU,UAAU4yU,QAAU,WAC1B9yU,KAAKpB,QAAQsrC,OAAO,IAAI79B,MACpB,yBAA2BrM,KAAK+oF,IAAIv8F,IACpC,sDAER,EAEAqmV,EAAU3yU,UAAUq/E,UAAY,SAAoBklC,GAChD,IAAI5nC,EAAO78E,KAAKgsU,WAAWnvP,OACvBxD,EAAUwD,EAAKxD,UAEnBorC,EAAIllC,UACAv/E,KAAK+oF,IAAK1P,EAAQlvB,EAAGkvB,EAAQhJ,EAAGwM,EAAKxiG,QAASwiG,EAAKxhG,SAE3D,EAEOw3V,CACX,CA5EiB,CA4EfjB,IAEF,YC9EA,IAAImB,GAAiB,SAAUnB,GAC3B,SAASmB,IACLnB,EAASzxU,MAAMH,KAAM0M,UACzB,CAaA,OAXKklU,IAAWmB,EAAczsU,UAAYsrU,GAC1CmB,EAAc7yU,UAAYvd,OAAOkkB,OAAQ+qU,GAAYA,EAAS1xU,WAC9D6yU,EAAc7yU,UAAU0G,YAAcmsU,EAEtCA,EAAc7yU,UAAUktU,aAAe,SAAuB3oN,GAE1D,IADA,IAAI+T,EAAQx4H,KAAKgsU,WAAWxzM,MACnBt4I,EAAI,EAAGA,EAAIs4I,EAAM32I,OAAQ3B,IAC9BwxV,GAAWjtN,EAAK+T,EAAMt4I,GAE9B,EAEO6yV,CACX,CAjBqB,CAiBnBnB,IAEF,YCnBA,IAAIoB,GAAY,SAAUpB,GACtB,SAASoB,IACLpB,EAASzxU,MAAMH,KAAM0M,UACzB,CAqBA,OAnBKklU,IAAWoB,EAAS1sU,UAAYsrU,GACrCoB,EAAS9yU,UAAYvd,OAAOkkB,OAAQ+qU,GAAYA,EAAS1xU,WACzD8yU,EAAS9yU,UAAU0G,YAAcosU,EAEjCA,EAAS9yU,UAAUktU,aAAe,SAAuB3oN,GACrD,IAAIpnC,EAAWr9E,KAAKgsU,WAAW3uP,WAC3BtpG,EAAMspG,EAASzE,aACf/H,EAAK98F,EAAI,GACT+8F,EAAK/8F,EAAI,GAEb,GAAW,IAAP88F,GAAmB,IAAPC,EAAU,CACtB,IAAI6G,EAAS0F,EAAS1F,OAClBp+F,EAAO8jG,EAAS9jG,KACpBkrI,EAAI5nC,KAAKlF,EAAOxtB,EAAGwtB,EAAOtH,EAAG92F,EAAKc,MAAOd,EAAK8B,OAClD,MACIu2V,EAAS1xU,UAAUktU,aAAa3mU,KAAKzG,KAAMykH,EAAK53B,GAAAA,EAAK0E,SAASlU,GAEtE,EAEO21P,CACX,CAzBgB,CAyBdpB,IAEF,YC5BA,IAAIvhM,GAAY,SAAUuhM,GACtB,SAASvhM,IACLuhM,EAASzxU,MAAMH,KAAM0M,UACzB,CAkCA,OAhCKklU,IAAWvhM,EAAS/pI,UAAYsrU,GACrCvhM,EAASnwI,UAAYvd,OAAOkkB,OAAQ+qU,GAAYA,EAAS1xU,WACzDmwI,EAASnwI,UAAU0G,YAAcypI,EAEjCA,EAASnwI,UAAUwtU,SAAW,SAAmBjpN,GAC7C,IAAI1mI,EAAOiiB,KAAKgsU,WACZlvP,EAAM/+F,EAAKpE,WACXJ,EAAOwE,EAAK4+F,UAEhB8nC,EAAIj1H,OAEJwQ,KAAK4hF,aAAa6iC,GAClBzkH,KAAKitU,QAAQxoN,GACbzkH,KAAKkzH,WAAWzO,GAEhBA,EAAIyoN,YAEJzoN,EAAIhoC,KAAO1+F,EAAKggD,QAAQ0+C,KACxBgoC,EAAI16H,UAAY,OAEZiW,KAAK8xU,QAAQrtN,IACbA,EAAIwuN,SAASl1V,EAAK67C,UAAWkjD,EAAI3yB,EAAG2yB,EAAIzM,EAAI92F,EAAKwrJ,UAGjD/kI,KAAK+xU,UAAUttN,KACfzkH,KAAK6xU,YAAYptN,GACjBA,EAAIyuN,WAAWn1V,EAAK67C,UAAWkjD,EAAI3yB,EAAG2yB,EAAIzM,EAAI92F,EAAKwrJ,WAGvDtgB,EAAIgP,SACR,EAEO4c,CACX,CAtCgB,CAsCduhM,IAGF,YC3BAzE,GAAS57P,IAAMmhQ,GACfvF,GAAS/wP,OAASw2P,GAClBzF,GAASzrP,MAAQ+rP,GACjBN,GAAShkP,MAAQ0pP,GACjB1F,GAAS70M,UAAYy6M,GACrB5F,GAAStgP,KAAO+kP,GAChBzE,GAASn5P,KAAOg/P,GAChB7F,GAAS3wP,KAAO6zD,GAGhB,IAAIg7L,GAAW,SAAU8H,GACrB,SAAS9H,EAAQhjU,EAAS01B,GACtBo1S,EAAY1sU,KAAKzG,KAAMqI,EAAS01B,GAEhC/9B,KAAKqI,QAAQ86E,UAAYnjF,KAAKozU,UAAUpzU,MAExC,IAAIggF,EAAShgF,KAAKqI,QAAQ+6E,kBAC1BpD,EAAOtsG,MAAM2G,MAAQ,OACrB2lG,EAAOtsG,MAAM2H,OAAS,OAEtB,IAAI9B,EAAO+wV,GAAYjiU,GAEvB23E,EAAO3lG,MAAQd,EAAKc,MACpB2lG,EAAO3kG,OAAS9B,EAAK8B,OAErB2kB,KAAKqzU,aAAerzP,EAEpBhgF,KAAKi+E,MAAQ,IAAIiwP,GAASluP,EAAQzmG,GAElCymB,KAAKszU,mBAAqBtzU,KAAKuzU,YAAY1kU,KAAK7O,MAEhDysU,GAAWzsU,KAAKqI,QAAS,CACrB+mB,MAAOpvB,KAAKszU,mBACZ5/I,UAAW1zL,KAAKszU,oBAExB,CAEKH,IAAc9H,EAAQ/kU,UAAY6sU,GACvC9H,EAAQnrU,UAAYvd,OAAOkkB,OAAQssU,GAAeA,EAAYjzU,WAC9DmrU,EAAQnrU,UAAU0G,YAAcykU,EAEhC,IAAI9vP,EAAqB,CAAE/hG,KAAM,CAAEmxB,cAAc,IA6KjD,OA3KA4wE,EAAmB/hG,KAAKixB,IAAM,WAC1B,MAAO,QACX,EAEA4gU,EAAQnrU,UAAU2nK,QAAU,WACxBsrK,EAAYjzU,UAAU2nK,QAAQphK,KAAKzG,MAE/BA,KAAKi+E,QACLj+E,KAAKi+E,MAAM4pF,UACX7nK,KAAKi+E,MAAQ,MAGbj+E,KAAKwzU,cACLxzU,KAAKwzU,YAAYjzS,eACVvgC,KAAKwzU,aAGZxzU,KAAKyzU,UACLzzU,KAAKyzU,QAAQ5rK,iBACN7nK,KAAKyzU,SAGhB/G,GAAa1sU,KAAKqI,QAAS,CACvB+mB,MAAOpvB,KAAKszU,mBACZ5/I,UAAW1zL,KAAKszU,oBAExB,EAEAjI,EAAQnrU,UAAU2rU,KAAO,SAAexjU,GACpC8qU,EAAYjzU,UAAU2rU,KAAKplU,KAAKzG,KAAMqI,GACtCrI,KAAKi+E,MAAM0+H,KAAK,CAAEt0M,QAAWn1B,EAAW8sB,KAAK+9B,QAAQuvS,MAEjDttU,KAAKwzU,aACLxzU,KAAKwzU,YAAY/1T,IAAI,CAAEpV,GAE/B,EAEAgjU,EAAQnrU,UAAUqgC,MAAQ,WACtB4yS,EAAYjzU,UAAUqgC,MAAM95B,KAAKzG,MACjCA,KAAKi+E,MAAM19C,QAEPvgC,KAAKwzU,aACLxzU,KAAKwzU,YAAYjzS,QAGjBvgC,KAAKyzU,SACLzzU,KAAKyzU,QAAQlzS,OAErB,EAEA8qS,EAAQnrU,UAAU4rU,YAAc,SAAsBpyV,GAClD,GAAIsmB,KAAKwzU,YAAa,CAClB,IAAIj/P,EAAQv0E,KAAKusU,cAAc7yV,GAE/B,OADYsmB,KAAKwzU,YAAYzD,WAAWx7P,EAE5C,CACJ,EAEA82P,EAAQnrU,UAAUmyF,MAAQ,WACtB,IACI2b,EADMhuG,KACKi+E,MACXy1P,EAFM1zU,KAEYqzU,aAClBM,EAAgB,GAEpB3lO,EAAKzW,UAAS,SAAUwmF,GAChBA,EAAUn/K,SACV+0U,EAAc3yU,KAAK+8K,EAAUn/K,QAErC,IAEA,IAAI4xC,GAAU2vC,EAAAA,GAAAA,KACVyzP,EAAiB,WACjB5lO,EAAKogO,YAAY,CAAEQ,YAAY,IAE/B,IACI,IAAIr2V,EAAOm7V,EAAY//O,YACvBnjD,EAAQpoC,QAAQ7vB,EACpB,CAAE,MAAOmB,GACL82D,EAAQtG,OAAOxwD,EACnB,CACJ,EAIA,OAFAizV,GAAWgH,GAAel/V,KAAKm/V,EAAgBA,GAExCpjS,CACX,EAEA66R,EAAQnrU,UAAUisU,gBAAkB,WAChCgH,EAAYjzU,UAAUisU,gBAAgB1lU,KAAKzG,MACvCA,KAAKwzU,cACLxzU,KAAKwzU,YAAYjzS,eACVvgC,KAAKwzU,YAEpB,EAEAnI,EAAQnrU,UAAUmsU,eAAiB,WAE/B,GADA8G,EAAYjzU,UAAUmsU,eAAe5lU,KAAKzG,OACrCA,KAAKwzU,YAAa,CACnBxzU,KAAKwzU,YAAc,IAAI7D,GAIvB,IAFA,IAAIt0L,EAAar7I,KAAKi+E,MAAMo9D,WACxBy0L,EAAe,GACVhsV,EAAM,EAAGA,EAAMu3J,EAAWx5J,OAAQiC,IACvCgsV,EAAa9uU,KAAKq6I,EAAWv3J,GAAKkoV,YAEtChsU,KAAKwzU,YAAY/1T,IAAIqyT,EACzB,CACJ,EAEAzE,EAAQnrU,UAAUgsU,QAAU,WACxBlsU,KAAKqzU,aAAah5V,MAAQ2lB,KAAKkkI,MAAM7pJ,MACrC2lB,KAAKqzU,aAAah4V,OAAS2kB,KAAKkkI,MAAM7oJ,OAEtC2kB,KAAKi+E,MAAM1kG,KAAOymB,KAAKkkI,MACvBlkI,KAAKi+E,MAAM6uP,YACf,EAEAzB,EAAQnrU,UAAUkzU,UAAY,WAC1B,MAAO,mBACX,EAEA/H,EAAQnrU,UAAU0rU,gBAAkB,WAChC5rU,KAAKwzU,YAAc,IAAI7D,GACvB3vU,KAAKyzU,QAAU,IAAI9C,GAAc3wU,MAEjCmzU,EAAYjzU,UAAU0rU,gBAAgBnlU,KAAKzG,KAC/C,EAEAqrU,EAAQnrU,UAAUqzU,YAAc,SAAsB75V,GAClD,IAAIsmB,KAAKosU,mBAAT,CAIA,IAAIp5U,EAAQgN,KAAK8rU,YAAYpyV,GAE7B,GAAe,UAAXA,EAAEF,KAAkB,CACpB,IAAIq6V,EAAe7zU,KAAK8zU,cACpBD,GAAgBA,IAAiB7gV,GACjCgN,KAAK+tD,QAAQ,aAAc,CACvB1lD,QAASwrU,EACT/qG,cAAepvP,EACfF,KAAM,eAIVwZ,GAAS6gV,IAAiB7gV,GAC1BgN,KAAK+tD,QAAQ,aAAc,CACvB1lD,QAASrV,EACT81O,cAAepvP,EACfF,KAAM,eAIdwmB,KAAK+tD,QAAQ,YAAa,CACtB1lD,QAASrV,EACT81O,cAAepvP,EACfF,KAAM,cAGVwmB,KAAK8zU,cAAgB9gV,CACzB,MAAWA,GACPgN,KAAK+tD,QAAQ,QAAS,CAClB1lD,QAASrV,EACT81O,cAAepvP,EACfF,KAAM,SAjCd,CAoCJ,EAEAmJ,OAAOy1C,iBAAkBizS,EAAQnrU,UAAWq7E,GAErC8vP,CACX,CA7Me,CA6Mb8H,IAEF,YCvOe,SAASY,GAAWj+V,EAAM2P,GACrC,OAAQmqF,EAAAA,GAAAA,GAAQnqF,IAAoB,OAAVA,EAAmB,IAAM3P,EAAO,KAAQ2P,EAAQ,KAAS,EACvF,CCFe,SAASuuV,GAAc9pM,GAElC,IADA,IAAI7xC,EAAS,GACJn4G,EAAI,EAAGA,EAAIgqJ,EAAMroJ,OAAQ3B,IAC9Bm4G,GAAU07O,GAAW7pM,EAAMhqJ,GAAG,GAAIgqJ,EAAMhqJ,GAAG,IAG/C,OAAOm4G,CACX,CCPe,SAAS47O,GAAY/pM,GAEhC,IADA,IAAI7xC,EAAS,GACJn4G,EAAI,EAAGA,EAAIgqJ,EAAMroJ,OAAQ3B,IAAK,CACnC,IAAIuF,EAAQykJ,EAAMhqJ,GAAG,IACjB0vF,EAAAA,GAAAA,GAAQnqF,KACR4yG,GAAU6xC,EAAMhqJ,GAAG,GAAK,IAAMuF,EAAQ,IAE9C,CAEA,GAAe,KAAX4yG,EACA,OAAOA,CAEf,CCZA,SAFe,CAAC,ECAhB,IAAI67O,GAAS,6BACTC,GAAO,OCMPrkL,GAAY,aACZM,GAAmB,SAAUjyK,GAAQ,OAAOA,EAAK+O,QAAQ,YAAa,IAAM4iK,GAAY,IAAM,EAC9FskL,GAAmB,SAAUjvU,GAC7BnN,MAAMklC,KAAK/3B,EAAUw5E,iBAAiB,IAAMmxE,GAAW,MAAMnhK,SAAQ,SAAU0Z,GAC3E,IAAI8mJ,EAAc9mJ,EAAQm8E,aAAasrE,IACvCznJ,EAAQm3E,gBAAgBswE,IAVf,SAAUX,EAAa9mJ,GAAkB8mJ,EAAYnmK,MAAM,KAAKlG,QAAO,SAAU2pB,GAAK,MAAa,KAANA,CAAU,IAAG9d,SAAQ,SAAU8d,GACrI,IAAI2iE,EAAQ3iE,EAAEzjB,MAAM,KACpBqf,EAAQ30B,MAAM07F,EAAM,GAAG11C,QAAU01C,EAAM,GAAG11C,MAC9C,GAAI,CAQA22H,CAAWlB,EAAa9mJ,EAC5B,GACJ,EAEIgsU,GAAY,SAASlvU,EAAWkuF,GAChCluF,EAAUg+E,UAAYitE,GAAiB/8D,GACvC+gP,GAAiBjvU,EACrB,EAEA,GAAwB,qBAAb3W,SAA0B,CACjC,IAAI8lV,GAAe,eAAiBJ,GAAS,WACzCK,GAAgB/lV,SAASrV,cAAc,OACvCq7V,GAAiC,qBAAdlhP,UAEvBihP,GAAcpxP,UAAYmxP,GAEtBE,IAAaD,GAAc70P,WAAWi2D,eAAiBu+L,KACvDG,GAAY,SAASlvU,EAAWkuF,GAC5B,IACIohP,GADS,IAAInhP,WACKC,gBAAgB68D,GAAiB/8D,GAAM,YAC7D+gP,GAAiBK,GACjB,IAAIC,EAAclmV,SAASmmV,UAAUF,EAASjhP,iBAE9CruF,EAAUg+E,UAAY,GACtBh+E,EAAUW,YAAY4uU,EAC1B,EAER,CAEA,2BChCIE,GAAY,YACZC,GAAgB,CAChB7pP,KAAM,YACNtO,KAAM,QAGV,SAASo4P,GAAat7V,EAAMiM,GACxB,MAAgB,SAATjM,GAA6B,SAATA,KAAqBiM,GAA4B,aAAnBA,EAAM+1F,SACnE,CAmBA,IAAImzD,GAAQ,SAAUi+L,GAClB,SAASj+L,EAAKq9L,EAAYjuS,GACtB6uS,EAASnmU,KAAKzG,KAAMgsU,GACpBhsU,KAAK+0U,YAAc,CAAC,EAEpB/0U,KAAK+9B,QAAUA,CACnB,CA0ZA,OAxZK6uS,IAAWj+L,EAAKroI,UAAYsmU,GACjCj+L,EAAKzuI,UAAYvd,OAAOkkB,OAAQ+lU,GAAYA,EAAS1sU,WACrDyuI,EAAKzuI,UAAU0G,YAAc+nI,EAE7BA,EAAKzuI,UAAU2nK,QAAU,WACjB7nK,KAAKqI,UACLrI,KAAKqI,QAAQ0jU,WAAa,KAC1B/rU,KAAKqI,QAAU,MAGnBrI,KAAKg1U,mBACLpI,EAAS1sU,UAAU2nK,QAAQphK,KAAKzG,KACpC,EAEA2uI,EAAKzuI,UAAUy8M,KAAO,SAAe9zH,EAAU/L,GAG3C,IAFA,IAAI4pB,EAAS1mG,KAEJ9f,EAAI,EAAGA,EAAI2oG,EAAShnG,OAAQ3B,IAAK,CACtC,IAAI8rV,EAAanjP,EAAS3oG,GACtBzM,EAAWu4V,EAAWv4V,SAEtBsqM,EAAY,IAAIovJ,GAASnB,EAAWxwP,UAAUwwP,EAAYtlO,EAAO3oE,UAEjE6xC,EAAAA,GAAAA,GAAQkN,GACR4pB,EAAO+0B,SAASsiD,EAAWjhG,GAE3B4pB,EAAOh7G,OAAOqyL,GAGlBA,EAAUk3J,oBAENxhW,GAAYA,EAASoO,OAAS,GAC9Bk8L,EAAU4+B,KAAKlpO,GAGnB,IAAI40B,EAAUq+F,EAAOr+F,QACjBA,GACA01K,EAAUm3J,SAAS7sU,EAASy0E,EAEpC,CACJ,EAEA6xD,EAAKzuI,UAAU8tG,KAAO,WAGlB,IAFA,IAAIA,EAAOhuG,KAEJguG,EAAKusB,QACRvsB,EAAOA,EAAKusB,OAGhB,OAAOvsB,CACX,EAEA2gC,EAAKzuI,UAAUg1U,SAAW,SAAmBC,EAAYr4P,GACrD,IAAI33E,EAAY3W,SAASrV,cAAc,OACvCk7V,GAAUlvU,EACN,eAAiB+uU,GAAS,mBACtBl0U,KAAKjrB,SACT,UAGJ,IAAIszB,EAAUlD,EAAUu6E,WAAWA,WAC/Br3E,KACIunE,EAAAA,GAAAA,GAAQkN,GACRq4P,EAAWrxP,aAAaz7E,EAAS8sU,EAAW95L,WAAWv+D,IAAQ,MAE/Dq4P,EAAWrvU,YAAYuC,GAE3BrI,KAAKo1U,WAAW/sU,GAExB,EAEAsmI,EAAKzuI,UAAUk1U,WAAa,SAAqB/sU,GACzCrI,KAAKqI,UACLrI,KAAKqI,QAAQ0jU,WAAa,MAG9B/rU,KAAKqI,QAAUA,EACfrI,KAAKqI,QAAQ0jU,WAAa/rU,KAG1B,IADA,IAAIiqI,EAAQjqI,KAAKq7I,WACRn7J,EAAI,EAAGA,EAAI+pJ,EAAMpoJ,OAAQ3B,IAAK,CACnC,IAAIm1V,EAAehtU,EAAQgzI,WAAWn7J,GACtC+pJ,EAAM/pJ,GAAGk1V,WAAWC,EACxB,CACJ,EAEA1mM,EAAKzuI,UAAUqgC,MAAQ,WACnBvgC,KAAKg1U,mBAEDh1U,KAAKqI,UACLrI,KAAKqI,QAAQ86E,UAAY,IAI7B,IADA,IAAI1vG,EAAWusB,KAAKq7I,WACXn7J,EAAI,EAAGA,EAAIzM,EAASoO,OAAQ3B,IACjCzM,EAASyM,GAAG2nL,UAGhB7nK,KAAKq7I,WAAa,EACtB,EAEA1M,EAAKzuI,UAAU2sU,WAAa,WACxB,GAAI7sU,KAAKqI,QAAS,CACd,IAAIw2E,EAAa7+E,KAAKqI,QAAQw2E,WAC1BA,GACAA,EAAW74E,YAAYhG,KAAKqI,SAEhCrI,KAAKqI,QAAU,IACnB,CAEAukU,EAAS1sU,UAAU2sU,WAAWpmU,KAAKzG,KACvC,EAEA2uI,EAAKzuI,UAAU+iF,SAAW,WACtB,OAAOjjF,KAAKs1U,gBAChB,EAEA3mM,EAAKzuI,UAAUnrB,OAAS,WACpB,OAAOirB,KAAKijF,UAChB,EAEA0rD,EAAKzuI,UAAUo1U,eAAiB,WAI5B,IAHA,IAAIrrM,EAAQjqI,KAAKq7I,WACbhjD,EAAS,GAEJn4G,EAAI,EAAGA,EAAI+pJ,EAAMpoJ,OAAQ3B,IAC9Bm4G,GAAU4xC,EAAM/pJ,GAAGnL,SAGvB,OAAOsjH,CACX,EAEAs2C,EAAKzuI,UAAU0uE,cAAgB,SAAwBl1F,GACnD,IAAIiD,EAAQjD,EAAEiD,MACV8I,EAAQ/L,EAAE+L,MAEA,YAAV9I,EACAqjB,KAAK4oF,IAAI,UAAWnjG,EAAQ,GAAK0uV,IAC1BU,GAAcl4V,IAAUm4V,GAAan4V,EAAO8I,GACnDua,KAAKu1U,iBAAiB54V,EAAO8I,GACZ,YAAV9I,EACPqjB,KAAK2vF,KAAK,UAAWlqG,GACJ,WAAV9I,EACPqjB,KAAK4oF,IAAI,SAAUnjG,GACF,OAAV9I,IACH8I,EACAua,KAAK2vF,KAAK,KAAMlqG,GAEhBua,KAAKw1U,WAAW,OAIxB5I,EAAS1sU,UAAU0uE,cAAcnoE,KAAKzG,KAAMtmB,EAChD,EAEAi1J,EAAKzuI,UAAUu1U,2BAA6B,SAAqC/7V,GAC7E,IAAIiD,EAAQjD,EAAEiD,MACV8I,EAAQ/L,EAAE+L,MAGA,SAAV9I,EACI8I,EACAua,KAAK2vF,KAAK,OAAQlqG,GAElBua,KAAKw1U,WAAW,QAEH,cAAV74V,EACH8I,EACAua,KAAK2vF,KAAK,aAAclqG,GAExBua,KAAKw1U,WAAW,cAEH,wBAAV74V,EACH8I,EACAua,KAAK2vF,KAAK,uBAAwBlqG,GAElCua,KAAKw1U,WAAW,wBAEH,gBAAV74V,GACHizF,EAAAA,GAAAA,GAAQnqF,GACRua,KAAK2vF,KAAK,eAAgBlqG,GAE1Bua,KAAKw1U,WAAW,gBAEH,cAAV74V,GACPqjB,KAAKnsB,UAAU4R,EAEvB,EAEAkpJ,EAAKzuI,UAAUyvF,KAAO,SAAe75G,EAAM2P,GACnCua,KAAKqI,SACLrI,KAAKqI,QAAQ6/B,aAAapyD,EAAM2P,EAExC,EAEAkpJ,EAAKzuI,UAAUw1U,QAAU,SAAkBxrM,GAGvC,IAFA,IAEShqJ,EAAI,EAAGA,EAAIgqJ,EAAMroJ,OAAQ3B,IAFrB8f,KAGF2vF,KAAKu6C,EAAMhqJ,GAAG,GAAIgqJ,EAAMhqJ,GAAG,GAE1C,EAEAyuJ,EAAKzuI,UAAUy1U,WAAa,SAAqB7/V,EAAM2P,GAC/CA,EACAua,KAAK2vF,KAAK75G,EAAM2P,GAEhBua,KAAKw1U,WAAW1/V,EAExB,EAEA64J,EAAKzuI,UAAU0oF,IAAM,SAAc9yG,EAAM2P,GACjCua,KAAKqI,UACLrI,KAAKqI,QAAQ30B,MAAMoC,GAAQ2P,EAEnC,EAEAkpJ,EAAKzuI,UAAU01U,OAAS,SAAiBt3P,GAGrC,IAFA,IAESp+F,EAAI,EAAGA,EAAIo+F,EAAOz8F,OAAQ3B,IAFtB8f,KAGF4oF,IAAItK,EAAOp+F,GAAG,GAAIo+F,EAAOp+F,GAAG,GAE3C,EAEAyuJ,EAAKzuI,UAAUrsB,UAAY,SAAoB4R,GAC3C,IAQI1R,EARA2yH,EAAS1mG,KAETA,KAAKqI,WACJt0B,EAAMisB,KAAKqI,QAAQkV,WAAWC,OAAOrd,MAAMpsB,EAAKisB,KAAKqI,QAAQkV,WAC9D93B,EAAMuD,MAAM,KAAK2F,SAAQ,SAAUnL,GAC/BkjH,EAAOr+F,QAAQkV,UAAUE,IAAIj6B,EACjC,IAGR,EAEAmrJ,EAAKzuI,UAAUs1U,WAAa,SAAqB1/V,GACzCkqB,KAAKqI,SACLrI,KAAKqI,QAAQm3E,gBAAgB1pG,EAErC,EAEA64J,EAAKzuI,UAAU21U,aAAe,SAAuB1qU,GACjD,IAAI++H,EAAQ,GAQZ,OAPI/+H,GACA++H,EAAMlpI,KAAK,CACP4zU,GACA,UAAYzpU,EAAU+nE,SAASh+C,SAAS,GAAK,MAI9Cg1G,CACX,EAEAyE,EAAKzuI,UAAU41U,gBAAkB,WAC7B,OAAO9B,GACHh0U,KAAK61U,aAAa71U,KAAKgsU,WAAW7gU,aAE1C,EAEAwjI,EAAKzuI,UAAU61U,gBAAkB,SAA0BtwV,GACnDA,EACAua,KAAK01U,QAAQ11U,KAAK61U,aAAapwV,IAE/Bua,KAAKw1U,WAAWZ,GAExB,EAEAjmM,EAAKzuI,UAAU81U,SAAW,WACtB,IAAIj4S,EAAU/9B,KAAKgsU,WAAWjuS,QAC1BrqD,EAAQ,CAAE,CAAE,SAAUqqD,EAAQ+9M,SAMlC,OAJwB,IAApB/9M,EAAQg6F,SACRrkJ,EAAMstB,KAAK,CAAE,UAAWmzU,KAGrBzgW,CACX,EAEAi7J,EAAKzuI,UAAU+zU,YAAc,WACzB,OAAOF,GAAW,QAASE,GAAYj0U,KAAKg2U,UAAS,IACzD,EAEArnM,EAAKzuI,UAAU+1U,cAAgB,WAC3B,OAAOlC,GAAW,UAAW/zU,KAAKgsU,WAAWjuS,QAAQ3oC,QACzD,EAEAu5I,EAAKzuI,UAAUg2U,SAAW,WACtB,OAAOnC,GAAW,KAAM/zU,KAAKgsU,WAAWjuS,QAAQ3qD,GACpD,EAEAu7J,EAAKzuI,UAAUi2U,gBAAkB,WAC7B,OAAOpC,GAAW,QAAS/zU,KAAKgsU,WAAWjuS,QAAQlqD,UACvD,EAEA86J,EAAKzuI,UAAUk2U,WAAa,WACxB,OAAOrC,GAAW,OAAQ/zU,KAAKgsU,WAAWjuS,QAAQhmD,KACtD,EAEA42J,EAAKzuI,UAAUm2U,gBAAkB,WAC7B,OAAOtC,GAAW,aAAc/zU,KAAKgsU,WAAWjuS,QAAQo9L,UAC5D,EAEAxsF,EAAKzuI,UAAUo2U,0BAA4B,WACvC,OAAOvC,GAAW,uBAAwB/zU,KAAKgsU,WAAWjuS,QAAQw4S,oBACtE,EAEA5nM,EAAKzuI,UAAUs2U,kBAAoB,WAC/B,OAAOzC,GAAW,eAAgB/zU,KAAKgsU,WAAWjuS,QAAQu8O,YAC9D,EAEA3rI,EAAKzuI,UAAU+0U,kBAAoB,WAC/B,IAAIjJ,EAAahsU,KAAKgsU,WAClB+I,EAAc/0U,KAAK+0U,YACvB,GAAI/I,EAAY,CACZ,IACIyK,EADA14S,EAAUiuS,EAAWjuS,QAGzB,IAAK,IAAIphD,KAASk4V,GAAe,CAC7B,IAAIxkR,EAAatyB,EAAQtzB,IAAI9tB,GACzB0zE,GAAcykR,GAAan4V,EAAO0zE,KAClC0kR,EAAYp4V,GAAS0zE,EACrBomR,GAAiB,EAEzB,CACIA,GACAz2U,KAAK02U,iBAAiB,CAClBrkV,OAAQ,MACR0iV,YAAaA,GAGzB,CACJ,EAEApmM,EAAKzuI,UAAUw2U,iBAAmB,SAA2Bh9V,GACrDsmB,KAAKu6H,QACLv6H,KAAKu6H,OAAOm8M,iBAAiBh9V,EAErC,EAEAi1J,EAAKzuI,UAAUq1U,iBAAmB,SAA2B/7V,EAAMiM,GAC/D,IAAIsvV,EAAc/0U,KAAK+0U,YACnB1gW,EAAU0gW,EAAYv7V,GACtBm2G,EAAOklP,GAAcr7V,GACrB62E,EAAa,CAAC,EACdh8E,IACAg8E,EAAW72E,GAAQnF,EACnB2rB,KAAK02U,iBAAiB,CAClBrkV,OAAQ,SACR0iV,YAAa1kR,WAEV0kR,EAAYv7V,IAGlBiM,GAKD4qE,EAAW72E,GAAQiM,EACnBua,KAAK02U,iBAAiB,CAClBrkV,OAAQ,MACR0iV,YAAa1kR,IAEjB0kR,EAAYv7V,GAAQiM,EACpBua,KAAK2vF,KAAKA,EAAM3vF,KAAK22U,OAAOlxV,EAAMrS,MAV9BiB,GACA2rB,KAAKw1U,WAAW7lP,EAW5B,EAEAg/C,EAAKzuI,UAAU80U,iBAAmB,WAC9B,IAAID,EAAc/0U,KAAK+0U,YAEvB/0U,KAAK02U,iBAAiB,CAClBrkV,OAAQ,SACR0iV,YAAaA,IAEjB/0U,KAAK+0U,YAAc,CAAC,CACxB,EAEApmM,EAAKzuI,UAAU02U,kBAAoB,WAC/B,OAAO5C,GAAch0U,KAAK62U,iBAC9B,EAEAloM,EAAKzuI,UAAU22U,eAAiB,WAC5B,IAEI9B,EAAc/0U,KAAK+0U,YACnB7qM,EAAQ,GAEZ,IAAK,IAAIvtJ,KAASo4V,EACd7qM,EAAMlpI,KAAK,CAAE6zU,GAAcl4V,GANlBqjB,KAMiC22U,OAAO5B,EAAYp4V,GAAOvJ,MAGxE,OAAO82J,CACX,EAEAyE,EAAKzuI,UAAUy2U,OAAS,SAAiBvjW,GACrC,IAAI0jW,GAAgB92U,KAAK+9B,SAAW,CAAC,GAAG+4S,aACpCC,EAAW/2U,KAAK6wD,UAAU3jE,QAAQ,KAAM,OAE5C,MAAQ,QADG4pV,EAAe,GAAKC,GACP,IAAM3jW,EAAK,GACvC,EAEAu7J,EAAKzuI,UAAU2wD,QAAU,WACrB,OA9aR,WACI,IAAIu9C,EAAO5/G,SAASwoV,qBAAqB,QAAQ,GAC7C/qV,EAAOuC,SAASjK,SAAS0H,KACzB0zC,EAAM,GAEV,GAAIyuE,KAAU7iC,GAAAA,EAAQD,SAAW,CAAC,GAAGxjC,KAAM,CACvC,IAAImvS,EAAYhrV,EAAKgvB,QAAQ,MACV,IAAfg8T,IACAhrV,EAAOA,EAAKlF,UAAU,EAAGkwV,IAG7Bt3S,EAAM1zC,CACV,CAEA,OAAO0zC,CACX,CA+ZekxB,EACX,EAEO89E,CACX,CAjaY,CAiaVi+L,IAEF,YCrcA,IAAIsK,GAAoB,SAAUvoM,GAC9B,SAASuoM,IACLvoM,EAAKxuI,MAAMH,KAAM0M,UACrB,CA8BA,OA5BKiiI,IAAOuoM,EAAiB5wU,UAAYqoI,GACzCuoM,EAAiBh3U,UAAYvd,OAAOkkB,OAAQ8nI,GAAQA,EAAKzuI,WACzDg3U,EAAiBh3U,UAAU0G,YAAcswU,EAEzCA,EAAiBh3U,UAAU+iF,SAAW,WAClC,MAAQ,SAAYjjF,KAAKm3U,eAAkB,IAAOn3U,KAAKi0U,cAAiB,KAC5E,EAEAiD,EAAiBh3U,UAAUi3U,aAAe,WACtC,OAAOpD,GAAW,SAAU/zU,KAAKgsU,WAAWvjU,SAChD,EAEAyuU,EAAiBh3U,UAAU81U,SAAW,WAClC,IAAIhK,EAAahsU,KAAKgsU,WACtB,MAAO,CACH,CAAE,aAAcA,EAAW1tV,SAC3B,CAAE,eAAgB0tV,EAAW52U,WAErC,EAEA8hV,EAAiBh3U,UAAU0uE,cAAgB,SAAwBl1F,GAC/C,WAAZA,EAAEiD,MACFqjB,KAAK2vF,KAAKj2G,EAAEiD,MAAOjD,EAAE+L,OACF,UAAZ/L,EAAEiD,OAAiC,YAAZjD,EAAEiD,OAChCqjB,KAAK4oF,IAAI,QAAUlvG,EAAEiD,MAAOjD,EAAE+L,MAEtC,EAEOyxV,CACX,CAlCwB,CAkCtBvoM,IAEF,YClCA,IAAIyoM,GAAgB,SAAUzoM,GAC1B,SAASyoM,EAAapL,GAClBr9L,EAAKloI,KAAKzG,KAAMgsU,GAEhBhsU,KAAK5sB,GAAK44V,EAAW54V,GAErB4sB,KAAKq3U,WACT,CAsCA,OApCK1oM,IAAOyoM,EAAa9wU,UAAYqoI,GACrCyoM,EAAal3U,UAAYvd,OAAOkkB,OAAQ8nI,GAAQA,EAAKzuI,WACrDk3U,EAAal3U,UAAU0G,YAAcwwU,EAErCA,EAAal3U,UAAUm3U,UAAY,WAM/B,IALA,IAEIn8P,EAAQl7E,KAAKgsU,WAAW9wP,MACxB7yE,EAAUrI,KAAKqI,QAEVvkB,EAAM,EAAGA,EAAMo3F,EAAMr5F,OAAQiC,IAAO,CACzC,IAAIwzV,EAAW,IAAIJ,GAAiBh8P,EAAMp3F,IANjCkc,KAOFtU,OAAO4rV,GACVjvU,GACAivU,EAASpC,SAAS7sU,EAE1B,CACJ,EAEA+uU,EAAal3U,UAAU0uE,cAAgB,SAAwBl1F,GAC3C,mBAAZA,EAAEiD,OACFiwV,GAAS1sU,UAAUqgC,MAAM95B,KAAKzG,MAC9BA,KAAKq3U,aACc,aAAZ39V,EAAEiD,OACTqjB,KAAK01U,QAAQ11U,KAAKu3U,iBAE1B,EAEAH,EAAal3U,UAAUs3U,kBAAoB,WACvC,OAAOxD,GAAch0U,KAAKu3U,iBAC9B,EAEAH,EAAal3U,UAAUu3U,SAAW,WAC9B,MAAO,CAAE,gBAAiBz3U,KAAKgsU,WAAW3wP,YAAc,iBAAmB,oBAC/E,EAEO+7P,CACX,CA9CoB,CA8ClBzoM,IAEF,YCnDA,IAAI+oM,GAAsB,SAAUN,GAChC,SAASM,IACLN,EAAaj3U,MAAMH,KAAM0M,UAC7B,CAyBA,OAvBK0qU,IAAeM,EAAmBpxU,UAAY8wU,GACnDM,EAAmBx3U,UAAYvd,OAAOkkB,OAAQuwU,GAAgBA,EAAal3U,WAC3Ew3U,EAAmBx3U,UAAU0G,YAAc8wU,EAE3CA,EAAmBx3U,UAAU+iF,SAAW,WACpC,MAAQ,uBAA0BjjF,KAAK5sB,GAAM,KAAQ4sB,KAAKw3U,oBAAuB,IAAOx3U,KAAKs1U,iBAAoB,mBACrH,EAEAoC,EAAmBx3U,UAAUq3U,eAAiB,WAC1C,IAAIvL,EAAahsU,KAAKgsU,WAClBjpU,EAAQipU,EAAWjpU,QACnBiE,EAAMglU,EAAWhlU,MASrB,MARY,CACR,CAAE,KAAMjE,EAAMonD,GACd,CAAE,KAAMpnD,EAAMstE,GACd,CAAE,KAAMrpE,EAAImjD,GACZ,CAAE,KAAMnjD,EAAIqpE,GACZrwE,KAAKy3U,WAIb,EAEOC,CACX,CA7B0B,CA6BxBN,IAEF,YC/BA,IAAIO,GAAsB,SAAUP,GAChC,SAASO,IACLP,EAAaj3U,MAAMH,KAAM0M,UAC7B,CAuBA,OArBK0qU,IAAeO,EAAmBrxU,UAAY8wU,GACnDO,EAAmBz3U,UAAYvd,OAAOkkB,OAAQuwU,GAAgBA,EAAal3U,WAC3Ey3U,EAAmBz3U,UAAU0G,YAAc+wU,EAE3CA,EAAmBz3U,UAAU+iF,SAAW,WACpC,MAAQ,uBAA0BjjF,KAAK5sB,GAAM,KAAQ4sB,KAAKw3U,oBAAuB,IAAOx3U,KAAKs1U,iBAAoB,mBACrH,EAEAqC,EAAmBz3U,UAAUq3U,eAAiB,WAC1C,IAAIvL,EAAahsU,KAAKgsU,WAClBx6P,EAASw6P,EAAWx6P,SACpB0H,EAAS8yP,EAAW9yP,SAOxB,MANY,CACR,CAAE,KAAM1H,EAAOrnB,GACf,CAAE,KAAMqnB,EAAOnB,GACf,CAAE,IAAK6I,GACPl5E,KAAKy3U,WAGb,EAEOE,CACX,CA3B0B,CA2BxBP,IAEF,YC5BA,IAAIQ,GAAY,SAAUjpM,GACtB,SAASipM,EAAS5L,GACdr9L,EAAKloI,KAAKzG,MAEVA,KAAKgsU,WAAaA,EAClBhsU,KAAK5sB,GAAK44V,EAAW54V,GAErB4sB,KAAK28M,KAAK,CAAEqvH,GAChB,CAaA,OAXKr9L,IAAOipM,EAAStxU,UAAYqoI,GACjCipM,EAAS13U,UAAYvd,OAAOkkB,OAAQ8nI,GAAQA,EAAKzuI,WACjD03U,EAAS13U,UAAU0G,YAAcgxU,EAEjCA,EAAS13U,UAAU23U,eAAiB,WAChC,OAAO9D,GAAW,YAAa,UACnC,EACA6D,EAAS13U,UAAU+iF,SAAW,WAC1B,MAAQ,aAAgBjjF,KAAK63U,iBAAoB,QAAW73U,KAAK5sB,GAAM,KAAQ4sB,KAAKs1U,iBAAoB,aAC5G,EAEOsC,CACX,CAtBgB,CAsBdjpM,IAEF,YCpBA,IAAImpM,GAAkB,SAAUnpM,GAC5B,SAASmpM,IACLnpM,EAAKloI,KAAKzG,MACVA,KAAK+3U,cAAgB,CAAC,CAC1B,CA0FA,OAxFKppM,IAAOmpM,EAAexxU,UAAYqoI,GACvCmpM,EAAe53U,UAAYvd,OAAOkkB,OAAQ8nI,GAAQA,EAAKzuI,WACvD43U,EAAe53U,UAAU0G,YAAckxU,EAEvCA,EAAe53U,UAAUg1U,SAAW,SAAmBC,GACnDn1U,KAAKqI,QAAU8sU,CACnB,EAEA2C,EAAe53U,UAAU+iF,SAAW,WAChC,MAAQ,SAAYjjF,KAAKs1U,iBAAoB,SACjD,EAEAwC,EAAe53U,UAAUw2U,iBAAmB,SAA2Bh9V,GACnE,IAAIq7V,EAAcr7V,EAAEq7V,YAChB1iV,EAAS3Y,EAAE2Y,OAEA,QAAXA,EACA2N,KAAKg4U,eAAejD,GACF,WAAX1iV,GACP2N,KAAKi4U,kBAAkBlD,EAE/B,EAEA+C,EAAe53U,UAAUg4U,iBAAmB,SAA2B1+V,EAAMgK,GACzE,IAAIg4F,EAUJ,MATa,SAAThiG,EACAgiG,EAAWo8P,GACK,SAATp+V,IACHgK,aAAgBo4F,GAAAA,EAChBJ,EAAWk8P,GACJl0V,aAAgBs4F,GAAAA,IACvBN,EAAWm8P,KAGZ,IAAIn8P,EAASh4F,EACxB,EAEAs0V,EAAe53U,UAAU83U,eAAiB,SAAyBjD,GAG/D,IAAK,IAAIp4V,KAASo4V,EAFL/0U,KAGFm4U,cAAcx7V,EAAOo4V,EAAYp4V,GAEhD,EAEAm7V,EAAe53U,UAAUi4U,cAAgB,SAAwB3+V,EAAMwyV,GACnE,IACI3jU,EADMrI,KACQqI,QACd0vU,EAFM/3U,KAEc+3U,cACpB3kW,EAAK44V,EAAW54V,GAChBinQ,EAAU09F,EAAc3kW,GAC5B,GAAKinQ,EAWDA,EAAQh8K,YAXE,CACV,IAAIwhB,EAAO7/E,KAAKk4U,iBAAiB1+V,EAAMwyV,GACvC+L,EAAc3kW,GAAM,CAChBi1B,QAASw3E,EACTxhB,MAAO,GAEXr+D,KAAKtU,OAAOm0F,GACRx3E,GACAw3E,EAAKq1P,SAASl1U,KAAKqI,QAE3B,CAGJ,EAEAyvU,EAAe53U,UAAU+3U,kBAAoB,SAA4BlD,GAGrE,IAAK,IAAIp4V,KAASo4V,EAFL/0U,KAGFo4U,iBAAiBrD,EAAYp4V,GAE5C,EAEAm7V,EAAe53U,UAAUk4U,iBAAmB,SAA2BpM,GACnE,IAAI+L,EAAgB/3U,KAAK+3U,cACrB3kW,EAAK44V,EAAW54V,GAChBinQ,EAAU09F,EAAc3kW,GAExBinQ,IACAA,EAAQh8K,QACc,IAAlBg8K,EAAQh8K,QACRr+D,KAAKwd,OAAOxd,KAAKq7I,WAAWpgI,QAAQo/N,EAAQhyO,SAAU,UAC/C0vU,EAAc3kW,IAGjC,EAEO0kW,CACX,CA/FsB,CA+FpBnpM,IAEF,YCpGA,IAAIu/L,GAAY,SAAUv/L,GACtB,SAASu/L,EAASnwS,GACd4wG,EAAKloI,KAAKzG,MACVA,KAAK+9B,QAAUA,EACf/9B,KAAKq4U,KAAO,IAAIP,EACpB,CAuBA,OArBKnpM,IAAOu/L,EAAS5nU,UAAYqoI,GACjCu/L,EAAShuU,UAAYvd,OAAOkkB,OAAQ8nI,GAAQA,EAAKzuI,WACjDguU,EAAShuU,UAAU0G,YAAcsnU,EAEjCA,EAAShuU,UAAUg1U,SAAW,SAAmBC,GAC7Cn1U,KAAKqI,QAAU8sU,EACfn1U,KAAKq4U,KAAKnD,SAASC,EAAW/xP,kBAClC,EAEA8qP,EAAShuU,UAAUqgC,MAAQ,WACvBqsS,GAAS1sU,UAAUqgC,MAAM95B,KAAKzG,KAClC,EAEAkuU,EAAShuU,UAAU+iF,SAAW,WAC1B,OAAOjjF,KAAKq4U,KAAKtjW,SAAWirB,KAAKs1U,gBACrC,EAEApH,EAAShuU,UAAUw2U,iBAAmB,SAA2Bh9V,GAC7DsmB,KAAKq4U,KAAK3B,iBAAiBh9V,EAC/B,EAEOw0V,CACX,CA7BgB,CA6Bdv/L,IAEF,YC5BA,IAAI2pM,GAAgB,CAChB,eAAgB,eAChB,eAAgB,SAChB,eAAgB,eAChB,iBAAkB,kBAGlB1G,GAAY,SAAUjjM,GACtB,SAASijM,IACLjjM,EAAKxuI,MAAMH,KAAM0M,UACrB,CA+IA,OA7IKiiI,IAAOijM,EAAStrU,UAAYqoI,GACjCijM,EAAS1xU,UAAYvd,OAAOkkB,OAAQ8nI,GAAQA,EAAKzuI,WACjD0xU,EAAS1xU,UAAU0G,YAAcgrU,EAEjCA,EAAS1xU,UAAU2uE,eAAiB,WAChC7uE,KAAK2vF,KAAK,IAAK3vF,KAAKu4U,cACpBv4U,KAAK8sU,YACT,EAEA8E,EAAS1xU,UAAU0uE,cAAgB,SAAwBl1F,GACvD,OAAQA,EAAEiD,OACV,IAAK,OACGjD,EAAE+L,MACFua,KAAK01U,QAAQ11U,KAAKw4U,QAAQ9+V,EAAE+L,QAE5Bua,KAAKw1U,WAAW,QAEpB,MAEJ,IAAK,aACDx1U,KAAK01U,QAAQ11U,KAAKw4U,QAAQ,CAAEl6V,MAAO5E,EAAE+L,SACrC,MAEJ,IAAK,SACG/L,EAAE+L,MACFua,KAAK01U,QAAQ11U,KAAKy4U,UAAU/+V,EAAE+L,QAE9Bua,KAAKw1U,WAAW,UAEpB,MAEJ,IAAK,YACDx1U,KAAK+1U,gBAAgBr8V,EAAE+L,OACvB,MAEJ,QACI,IAAI3P,EAAOwiW,GAAc5+V,EAAEiD,OACvB7G,GACAkqB,KAAK2vF,KAAK75G,EAAM4D,EAAE+L,OAK1Bua,KAAKy1U,2BAA2B/7V,GAEhCi1J,EAAKzuI,UAAU0uE,cAAcnoE,KAAKzG,KAAMtmB,EAC5C,EAEAk4V,EAAS1xU,UAAU05B,QAAU,WACrB55B,KAAKqI,UACLrI,KAAKqI,QAAQylF,YAAc9tF,KAAKgsU,WAAWpyS,UAEnD,EAEAg4S,EAAS1xU,UAAUq4U,WAAa,WAC5B,OAAOv4U,KAAKgsU,WAAW92S,SVxEZ,SUwEsChiD,CACrD,EAEA0+V,EAAS1xU,UAAUu4U,UAAY,SAAoBl7P,GAC/C,IAAI2sD,EAAQ,GAmBZ,OAjBI3sD,KAAWw9C,EAAAA,GAAAA,GAAcx9C,EAAOj/F,QAChC4rJ,EAAMlpI,KAAK,CAAE,SAAUu8E,EAAOj/F,QAC9B4rJ,EAAMlpI,KAAK,CAAE,eAAgBu8E,EAAOljG,QACpC6vJ,EAAMlpI,KAAK,CAAE,iBAAkBhB,KAAK04U,cAAcn7P,KAClD2sD,EAAMlpI,KAAK,CAAE,kBAAmBu8E,EAAO02C,YAEnCrkD,EAAAA,GAAAA,GAAQ2N,EAAOnoF,UACf80I,EAAMlpI,KAAK,CAAE,iBAAkBu8E,EAAOnoF,WAGtCw6E,EAAAA,GAAAA,GAAQ2N,EAAOw7C,WACfmR,EAAMlpI,KAAK,CAAE,mBAAoBhB,KAAK24U,eAAep7P,MAGzD2sD,EAAMlpI,KAAK,CAAE,SAAUmzU,KAGpBjqM,CACX,EAEA0nM,EAAS1xU,UAAU04U,aAAe,WAC9B,OAAO5E,GACHh0U,KAAKy4U,UAAUz4U,KAAKgsU,WAAWjuS,QAAQw/C,QAE/C,EAEAq0P,EAAS1xU,UAAUy4U,eAAiB,SAAyBp7P,GACzD,IAAIw7C,EAAWx7C,EAAOw7C,SAClB1+I,EAAQkjG,EAAOljG,MAEnB,QAFyC,IAAVA,IAAmBA,EAAQ,GAEtD0+I,GAAYA,IAAay4M,GAAO,CAIhC,IAHA,IAAI79M,EAAYw9M,GAAYp4M,EAASvjG,eACjC94C,EAAS,GAEJwD,EAAI,EAAGA,EAAIyzI,EAAU9xI,OAAQ3B,IAClCxD,EAAOskB,KAAK2yH,EAAUzzI,GAAK7F,GAG/B,OAAOqC,EAAOkhD,KAAK,IACvB,CACJ,EAEAg0S,EAAS1xU,UAAUw4U,cAAgB,SAAwBn7P,GACvD,IAAIw7C,EAAWx7C,EAAOw7C,SAClBhF,EAAUx2C,EAAOw2C,QAErB,OAAQgF,GAAyB,UAAbA,EAAwB04M,GAAO19M,CACvD,EAEA69M,EAAS1xU,UAAUs4U,QAAU,SAAkB97P,GAC3C,IAAIwtD,EAAQ,GAaZ,OAZMxtD,GAA0B,aAAlBA,EAAKlB,WACXkB,KAASq+C,EAAAA,GAAAA,GAAcr+C,EAAKp+F,QAC5B4rJ,EAAMlpI,KAAK,CAAE,OAAQ07E,EAAKp+F,SAEtBsxF,EAAAA,GAAAA,GAAQ8M,EAAKtnF,UACb80I,EAAMlpI,KAAK,CAAE,eAAgB07E,EAAKtnF,WAGtC80I,EAAMlpI,KAAK,CAAE,OAAQmzU,MAItBjqM,CACX,EAEA0nM,EAAS1xU,UAAU24U,WAAa,WAC5B,OAAO7E,GACHh0U,KAAKw4U,QAAQx4U,KAAKgsU,WAAWjuS,QAAQ2+C,MAE7C,EAEAk1P,EAAS1xU,UAAU+iF,SAAW,WAC1B,MAAO,SAAYjjF,KAAKk2U,WAAc,IAAOl2U,KAAKi0U,cAAiB,IAAOj0U,KAAKi2U,gBAAmB,IAAOlC,GAAW,IAAK/zU,KAAKu4U,cAChHv4U,KAAK44U,eAAmB54U,KAAK64U,aAAiB74U,KAAK42U,oBAAwB52U,KAAK81U,kBACrF91U,KAAKm2U,kBAAqB,IAAOn2U,KAAKo2U,aACtCp2U,KAAKq2U,kBAAqB,IAAOr2U,KAAKs2U,4BACtCt2U,KAAKw2U,oBAAuB,WACzC,EAEO5E,CACX,CAnJgB,CAmJdjjM,IAEF,YChKA,IAAI+jM,GAAW,SAAUd,GACrB,SAASc,IACLd,EAASzxU,MAAMH,KAAM0M,UACzB,CAUA,OARKklU,IAAWc,EAAQpsU,UAAYsrU,GACpCc,EAAQxyU,UAAYvd,OAAOkkB,OAAQ+qU,GAAYA,EAAS1xU,WACxDwyU,EAAQxyU,UAAU0G,YAAc8rU,EAEhCA,EAAQxyU,UAAUq4U,WAAa,WAC3B,OAAOv4U,KAAKgsU,WAAW2G,SAASz9S,SXXrB,EWYf,EAEOw9S,CACX,CAde,CAcbd,IAEF,YCjBA,IAAIgB,GAAc,SAAUhB,GACxB,SAASgB,IACLhB,EAASzxU,MAAMH,KAAM0M,UACzB,CA+BA,OA7BKklU,IAAWgB,EAAWtsU,UAAYsrU,GACvCgB,EAAW1yU,UAAYvd,OAAOkkB,OAAQ+qU,GAAYA,EAAS1xU,WAC3D0yU,EAAW1yU,UAAU0G,YAAcgsU,EAEnCA,EAAW1yU,UAAU2uE,eAAiB,WAClC,IAAI2C,EAASxxE,KAAKwxE,SAClBxxE,KAAK2vF,KAAK,KAAMne,EAAOrnB,GACvBnqD,KAAK2vF,KAAK,KAAMne,EAAOnB,GACvBrwE,KAAK2vF,KAAK,IAAK3vF,KAAKk5E,UACpBl5E,KAAK8sU,YACT,EAEA8F,EAAW1yU,UAAUsxE,OAAS,WAC1B,OAAOxxE,KAAKgsU,WAAW3uP,WAAW7L,MACtC,EAEAohQ,EAAW1yU,UAAUg5E,OAAS,WAC1B,OAAOl5E,KAAKgsU,WAAW3uP,WAAWnE,MACtC,EAEA05P,EAAW1yU,UAAU+iF,SAAW,WAC5B,MAAO,WAAcjjF,KAAKk2U,WAAc,IAAOl2U,KAAKi0U,cAAiB,IAAOj0U,KAAKi2U,gBACrE,OAAUj2U,KAAKwxE,SAASrnB,EAAK,SAAYnqD,KAAKwxE,SAASnB,EAAK,QAAWrwE,KAAKk5E,SAAY,IACvFl5E,KAAK44U,eAAkB,IAAO54U,KAAK64U,aAAgB,IAAO74U,KAAK42U,oBAC/D52U,KAAKm2U,kBAAqB,IAAOn2U,KAAKo2U,aACtCp2U,KAAKq2U,kBAAqB,IAAOr2U,KAAKs2U,4BACtCt2U,KAAKw2U,oBAAuB,IAAOx2U,KAAK81U,kBAAqB,aAC9E,EAEOlD,CACX,CAnCkB,CAmChBhB,IAEF,YCpCA,IAAInE,GAAa,SAAU9+L,GACvB,SAAS8+L,IACL9+L,EAAKxuI,MAAMH,KAAM0M,UACrB,CAgCA,OA9BKiiI,IAAO8+L,EAAUnnU,UAAYqoI,GAClC8+L,EAAUvtU,UAAYvd,OAAOkkB,OAAQ8nI,GAAQA,EAAKzuI,WAClDutU,EAAUvtU,UAAU0G,YAAc6mU,EAElCA,EAAUvtU,UAAU+iF,SAAW,WAC3B,MAAQ,MAAQjjF,KAAKk2U,WACjBl2U,KAAK81U,kBACL91U,KAAKm2U,kBACLn2U,KAAKi0U,cACLj0U,KAAKi2U,gBACLj2U,KAAKo2U,aACLp2U,KAAKq2U,kBACLr2U,KAAKs2U,4BACLt2U,KAAKw2U,oBACLx2U,KAAK42U,qBAAuB,IAAO52U,KAAKs1U,iBAAoB,MACpE,EAEA7H,EAAUvtU,UAAU0uE,cAAgB,SAAwBl1F,GACxD,IAAIiD,EAAQjD,EAAEiD,MACV8I,EAAQ/L,EAAE+L,MAEA,cAAV9I,GACAqjB,KAAK+1U,gBAAgBtwV,GAGzBua,KAAKy1U,2BAA2B/7V,GAEhCi1J,EAAKzuI,UAAU0uE,cAAcnoE,KAAKzG,KAAMtmB,EAC5C,EAEO+zV,CACX,CApCiB,CAoCf9+L,IAEF,YCzCA,IAAI3mH,GAAY,KACZC,GAAW,KACXC,GAAc,KACdC,GAAa,KACbC,GAAW,KAEA,SAASC,GAAW5iC,GAC/B,OAAOkhB,OAAOlhB,GAAOyH,QAAQ86B,GAAW,SAAS96B,QAAQ+6B,GAAU,QAAQ/6B,QAAQk7B,GAAU,QAAQl7B,QAAQg7B,GAAa,UAAUh7B,QAAQi7B,GAAY,QAC5J,CCJA,IAAI0qT,GAAa,SAAUjB,GACvB,SAASiB,IACLjB,EAASzxU,MAAMH,KAAM0M,UACzB,CA0DA,OAxDKklU,IAAWiB,EAAUvsU,UAAYsrU,GACtCiB,EAAU3yU,UAAYvd,OAAOkkB,OAAQ+qU,GAAYA,EAAS1xU,WAC1D2yU,EAAU3yU,UAAU0G,YAAcisU,EAElCA,EAAU3yU,UAAU2uE,eAAiB,WACjC7uE,KAAK01U,QAAQ11U,KAAK84U,eAClB94U,KAAK8sU,YACT,EAEA+F,EAAU3yU,UAAU0uE,cAAgB,SAAwBl1F,GACxC,QAAZA,EAAEiD,OACFqjB,KAAK01U,QAAQ11U,KAAK+4U,aAGtBnH,EAAS1xU,UAAU0uE,cAAcnoE,KAAKzG,KAAMtmB,EAChD,EAEAm5V,EAAU3yU,UAAU44U,YAAc,WAC9B,IAAIj8P,EAAO78E,KAAKgsU,WAAWnvP,OACvBpD,EAAKoD,EAAKxD,UAEd,MAAO,CACH,CAAE,IAAKI,EAAGtvB,GACV,CAAE,IAAKsvB,EAAGpJ,GACV,CAAE,QAASwM,EAAKxiG,QAAU,MAC1B,CAAE,SAAUwiG,EAAKxhG,SAAW,MAEpC,EAEAw3V,EAAU3yU,UAAU84U,eAAiB,WACjC,OAAOhF,GAAch0U,KAAK84U,cAC9B,EAEAjG,EAAU3yU,UAAU64U,UAAY,SAAoB95S,GAChD,IAAIzyC,EAAMwT,KAAKgsU,WAAWx/U,MAM1B,OAJIyyC,IACAzyC,EAAM67B,GAAW77B,IAGd,CAAE,CAAE,aAAcA,GAC7B,EAEAqmV,EAAU3yU,UAAU+4U,aAAe,WAC/B,OAAOjF,GAAch0U,KAAK+4U,WAAU,GACxC,EAEAlG,EAAU3yU,UAAU+iF,SAAW,WAC3B,MAAO,qCAAwCjjF,KAAKk2U,WAAc,IAAOl2U,KAAKi0U,cAAiB,IAAOj0U,KAAK81U,kBAAqB,IAAO91U,KAAKi2U,gBACpIj2U,KAAKg5U,iBAAoB,IAAOh5U,KAAKi5U,eAAkB,IAAOj5U,KAAK42U,oBACnE52U,KAAKm2U,kBAAqB,IAAOn2U,KAAKo2U,aACrCp2U,KAAKq2U,kBAAqB,IAAOr2U,KAAKs2U,4BACtCt2U,KAAKw2U,oBAJP,YAMX,EAEO3D,CACX,CA9DiB,CA8DfjB,IAEF,YCjEA,IAAImB,GAAiB,SAAUnB,GAC3B,SAASmB,IACLnB,EAASzxU,MAAMH,KAAM0M,UACzB,CAUA,OARKklU,IAAWmB,EAAczsU,UAAYsrU,GAC1CmB,EAAc7yU,UAAYvd,OAAOkkB,OAAQ+qU,GAAYA,EAAS1xU,WAC9D6yU,EAAc7yU,UAAU0G,YAAcmsU,EAEtCA,EAAc7yU,UAAUq4U,WAAa,WACjC,OAAOv4U,KAAKgsU,WAAW92S,ShBXZ,IgBWsC,WACrD,EAEO69S,CACX,CAdqB,CAcnBnB,IAEF,YCjBA,IAAIoB,GAAY,SAAUpB,GACtB,SAASoB,IACLpB,EAASzxU,MAAMH,KAAM0M,UACzB,CA2CA,OAzCKklU,IAAWoB,EAAS1sU,UAAYsrU,GACrCoB,EAAS9yU,UAAYvd,OAAOkkB,OAAQ+qU,GAAYA,EAAS1xU,WACzD8yU,EAAS9yU,UAAU0G,YAAcosU,EAEjCA,EAAS9yU,UAAU2uE,eAAiB,WAChC,IAAIwO,EAAWr9E,KAAKgsU,WAAW3uP,WAC/Br9E,KAAK2vF,KAAK,IAAKtS,EAAS1F,OAAOxtB,GAC/BnqD,KAAK2vF,KAAK,IAAKtS,EAAS1F,OAAOtH,GAC/BrwE,KAAK2vF,KAAK,QAAStS,EAAS9jG,KAAKc,OACjC2lB,KAAK2vF,KAAK,SAAUtS,EAAS9jG,KAAK8B,QAClC2kB,KAAK2vF,KAAK,KAAMtS,EAASzE,aAAa,IACtC54E,KAAK2vF,KAAK,KAAMtS,EAASzE,aAAa,IACtC54E,KAAK8sU,YACT,EAEAkG,EAAS9yU,UAAU3mB,KAAO,WACtB,OAAOymB,KAAKgsU,WAAW3uP,WAAW9jG,IACtC,EAEAy5V,EAAS9yU,UAAUy3E,OAAS,WACxB,OAAO33E,KAAKgsU,WAAW3uP,WAAW1F,MACtC,EAEAq7P,EAAS9yU,UAAU2wE,GAAK,WACpB,OAAO7wE,KAAKgsU,WAAW3uP,WAAWzE,aAAa,EACnD,EAEAo6P,EAAS9yU,UAAU4wE,GAAK,WACpB,OAAO9wE,KAAKgsU,WAAW3uP,WAAWzE,aAAa,EACnD,EAEAo6P,EAAS9yU,UAAU+iF,SAAW,WAC1B,MAAO,SAAYjjF,KAAKk2U,WAAc,IAAOl2U,KAAKi0U,cAAiB,IAAOj0U,KAAKi2U,gBAAmB,OAAUj2U,KAAK23E,SAASxtB,EAAK,QAAWnqD,KAAK23E,SAAStH,EAAjJ,SACerwE,KAAK6wE,KAAQ,SAAY7wE,KAAK8wE,KAD7C,YAEkB9wE,KAAKzmB,OAAOc,MAAS,aAAgB2lB,KAAKzmB,OAAO8B,OAAU,KAAQ2kB,KAAK44U,eAAkB,IACtG54U,KAAK64U,aAAgB,IAAO74U,KAAK42U,oBAAuB,IAAO52U,KAAK81U,kBACpE91U,KAAKm2U,kBAAqB,IAAOn2U,KAAKo2U,aACtCp2U,KAAKq2U,kBAAqB,IAAOr2U,KAAKs2U,4BACtCt2U,KAAKw2U,oBAAuB,KAC7C,EAEOxD,CACX,CA/CgB,CA+CdpB,IAEF,2BC7CIsH,GAAe,wBAEnB,SAASC,GAAep7V,GACpB,IAAKA,GAAwB,kBAATA,IAAsBm7V,GAAazrU,KAAK1vB,GACxD,OAAOA,EAGX,IAAIsqB,EAAU8wU,GAAex5V,SAG7B,OAFAu5V,GAAa3+S,UAAY,EAElBx8C,EAAKmP,QAAQgsV,IAAc,SAAUvrV,GAGxC,OAFA0a,EAAQ86E,UAAYx1F,EAEb0a,EAAQylF,aAAezlF,EAAQ8yL,SAC1C,GACJ,CAEwB,qBAAb3sM,WACP2qV,GAAex5V,SAAW6O,SAASrV,cAAc,SAGrD,IAAIk3J,GAAY,SAAUuhM,GACtB,SAASvhM,IACLuhM,EAASzxU,MAAMH,KAAM0M,UACzB,CAsEA,OApEKklU,IAAWvhM,EAAS/pI,UAAYsrU,GACrCvhM,EAASnwI,UAAYvd,OAAOkkB,OAAQ+qU,GAAYA,EAAS1xU,WACzDmwI,EAASnwI,UAAU0G,YAAcypI,EAEjCA,EAASnwI,UAAU2uE,eAAiB,WAChC,IAAIiO,EAAM98E,KAAK88E,MACf98E,KAAK2vF,KAAK,IAAK7S,EAAI3yB,GACnBnqD,KAAK2vF,KAAK,IAAK7S,EAAIzM,GACnBrwE,KAAK8sU,YACT,EAEAz8L,EAASnwI,UAAU0uE,cAAgB,SAAwBl1F,GACvC,SAAZA,EAAEiD,OACFqjB,KAAK2vF,KAAK,QAASskP,GAAYj0U,KAAKg2U,aACpCh2U,KAAK6uE,kBACc,YAAZn1F,EAAEiD,OACTi1V,EAAS1xU,UAAU05B,QAAQnzB,KAAKzG,KAAMA,KAAKgsU,WAAWpyS,WAG1Dg4S,EAAS1xU,UAAU0uE,cAAcnoE,KAAKzG,KAAMtmB,EAChD,EAEA22J,EAASnwI,UAAU81U,SAAW,SAAmB/2S,GAC7C,IAAIvrD,EAAQk+V,EAAS1xU,UAAU81U,SAASvvU,KAAKzG,KAAMi/B,GAC/Cw9C,EAAOz8E,KAAKgsU,WAAWjuS,QAAQ0+C,KAQnC,OANIx9C,IACAw9C,EAAOp0D,GAAWo0D,IAGtB/oG,EAAMstB,KAAK,CAAE,OAAQy7E,GAAQ,CAAE,cAAe,QAEvC/oG,CACX,EAEA28J,EAASnwI,UAAU48E,IAAM,WACrB,IAAIA,EAAM98E,KAAKgsU,WAAWryV,WACtBJ,EAAOymB,KAAKgsU,WAAWrvP,UAC3B,OAAOG,EAAIr9E,QAAQ25U,KAAKt8P,EAAIzM,EAAI92F,EAAKwrJ,SACzC,EAEAsL,EAASnwI,UAAUm5U,cAAgB,WAC/B,IAAIz/S,EAAU55B,KAAKgsU,WAAWpyS,UAI9B,OAFAA,EAAUvR,GADVuR,EAAUu/S,GAAev/S,KAGlB2rG,EAAAA,GAAAA,IAAc3rG,EACzB,EAEAy2G,EAASnwI,UAAUo5U,iBAAmB,WAClC,IAAIxgU,EAMJ,QAJK9Y,KAAK+9B,SAAW,CAAC,GAAG87L,KAAStuJ,GAAAA,EAAQD,QAAQxjC,MAAQyjC,GAAAA,EAAQD,QAAQuC,OACtE/0D,EAAS,OAGNi7T,GAAW,cAAej7T,EACrC,EAEAu3H,EAASnwI,UAAU+iF,SAAW,WAC1B,MAAO,SAAYjjF,KAAKk2U,WAAc,IAAOl2U,KAAKs5U,mBAAsB,IAAOt5U,KAAKi0U,cAAiB,IAAOj0U,KAAKi2U,gBACrG,MAASj2U,KAAK88E,MAAM3yB,EAAK,QAAWnqD,KAAK88E,MAAMzM,EAAK,KAAQrwE,KAAK44U,eAAkB,IAAO54U,KAAK81U,kBAAqB,IAAO91U,KAAK42U,oBAC1H52U,KAAK64U,aACV74U,KAAKm2U,kBAAqB,IAAOn2U,KAAKo2U,aACtCp2U,KAAKq2U,kBAAqB,IAAOr2U,KAAKs2U,4BACtCt2U,KAAKw2U,oBAAuB,IAAOx2U,KAAKq5U,gBAAmB,SAC5E,EAEOhpM,CACX,CA1EgB,CA0EduhM,IAEF,YCrFAzE,GAAS57P,IAAMmhQ,GACfvF,GAAS/wP,OAASw2P,GAClBzF,GAASzrP,MAAQ+rP,GACjBN,GAAShkP,MAAQ0pP,GACjB1F,GAAS70M,UAAYy6M,GACrB5F,GAAStgP,KAAO+kP,GAChBzE,GAASn5P,KAAOg/P,GAChB7F,GAAS3wP,KAAO6zD,GAuBhB,IAAIg7L,GAAW,SAAU8H,GACrB,SAAS9H,EAAQhjU,EAAS01B,GACtBo1S,EAAY1sU,KAAKzG,KAAMqI,EAAS01B,GAEhC/9B,KAAKi+E,MAAQ,IAAIiwP,GAASvrV,OAAO2mB,OAAO,CACpCuwN,IA1BF,QA0BOswG,GAAc9hU,EAAS,aAAagJ,WAC1CrR,KAAK+9B,UAERs2S,GAAUr0U,KAAKqI,QAASrI,KAAKozU,UAAU,KAEvCpzU,KAAKqzU,aAAerzU,KAAKqI,QAAQ+6E,kBACjCpjF,KAAKqzU,aAAa3/V,MAAM2G,MAAQ,OAChC2lB,KAAKqzU,aAAa3/V,MAAM2H,OAAS,OACjC2kB,KAAKqzU,aAAa3/V,MAAMC,SAAW,SAhC3C,SAAuB00B,GACnB,IAAIkxU,EAEJ,IACIA,EAAMlxU,EAAQmxU,aAAenxU,EAAQmxU,eAAiB,IAC1D,CAAE,MAAO9/V,GAAK,CAEd,GAAI6/V,EAAK,CACL,IAAI7pV,GAAS6pV,EAAI7/V,EAAI,EACjBE,GAAQ2/V,EAAIxpU,EAAI,EAChBr8B,EAAQ20B,EAAQ30B,MAEP,IAATgc,GAAsB,IAAR9V,IACdlG,EAAMgc,KAAOA,EAAO,KACpBhc,EAAMkG,IAAMA,EAAM,KAE1B,CACJ,CAiBQ6/V,CAAcz5U,KAAKqzU,cAEnBrzU,KAAKi+E,MAAMi3P,SAASl1U,KAAKqzU,cAEzB5G,GAAWzsU,KAAKqI,QAAS,CACrB+mB,MAAOpvB,KAAKsrU,OACZoO,UAAW15U,KAAKwrU,YAChBmO,SAAU35U,KAAKyrU,YACf/3I,UAAW1zL,KAAK0rU,aAGpB1rU,KAAKoiM,QACT,CAEK+wI,IAAc9H,EAAQ/kU,UAAY6sU,GACvC9H,EAAQnrU,UAAYvd,OAAOkkB,OAAQssU,GAAeA,EAAYjzU,WAC9DmrU,EAAQnrU,UAAU0G,YAAcykU,EAEhC,IAAI9vP,EAAqB,CAAE/hG,KAAM,CAAEmxB,cAAc,IA4EjD,OA1EA4wE,EAAmB/hG,KAAKixB,IAAM,WAC1B,MAAO,KACX,EAEA4gU,EAAQnrU,UAAU2nK,QAAU,WACpB7nK,KAAKi+E,QACLj+E,KAAKi+E,MAAM4pF,UACX7nK,KAAKi+E,MAAQ,KACbj+E,KAAKqzU,aAAe,KACpB3G,GAAa1sU,KAAKqI,QAAS,CACvB+mB,MAAOpvB,KAAKsrU,OACZoO,UAAW15U,KAAKwrU,YAChBmO,SAAU35U,KAAKyrU,YACf/3I,UAAW1zL,KAAK0rU,cAIxByH,EAAYjzU,UAAU2nK,QAAQphK,KAAKzG,KACvC,EAEAqrU,EAAQnrU,UAAUk3E,UAAY,SAAoB3uE,GAC9C,IAAIkoO,EAAW77O,KAAKu0C,MAAM5gC,EAAO0hD,GAAM,IAAOr1D,KAAKu0C,MAAM5gC,EAAO4nE,GAAM,IAAOrwE,KAAKkkI,MAAM7pJ,MAAS,IAAO2lB,KAAKkkI,MAAM7oJ,OAEnH2kB,KAAK0lH,QAAUj9G,EACfzI,KAAKqzU,aAAanrS,aAAa,UAAWyoM,EAC9C,EAEA06F,EAAQnrU,UAAU2rU,KAAO,SAAexjU,GACpC8qU,EAAYjzU,UAAU2rU,KAAKplU,KAAKzG,KAAMqI,GACtCrI,KAAKi+E,MAAM0+H,KAAK,CAAEt0M,GACtB,EAEAgjU,EAAQnrU,UAAUqgC,MAAQ,WACtB4yS,EAAYjzU,UAAUqgC,MAAM95B,KAAKzG,MACjCA,KAAKi+E,MAAM19C,OACf,EAEA8qS,EAAQnrU,UAAUmzF,IAAM,WACpB,MAAO,yBAA2BrzF,KAAKozU,WAC3C,EAEA/H,EAAQnrU,UAAU6vF,aAAe,WAC7B,IACIL,EADM1vF,KACO2rU,QACbljU,EAFMzI,KAEO0lH,QAEjB,GAAIj9G,EAAQ,CACR,IAAIunF,EAAO,IAAItO,GAAAA,EACfsO,EAAKv8G,SAASutB,KAAK0uF,GAEnBM,EAAK7kF,WACDA,EAAAA,EAAAA,KAAYisE,WAAW3uE,EAAO0hD,GAAI1hD,EAAO4nE,IAG7Cqf,EAASM,CACb,CAEA,OAAON,CACX,EAEA27O,EAAQnrU,UAAUgsU,QAAU,WACpBlsU,KAAK0lH,SACL1lH,KAAKo3E,UAAUp3E,KAAK0lH,QAE5B,EAEA2lN,EAAQnrU,UAAUkzU,UAAY,SAAoBwG,GAG9C,MAAQ,SAF0B,kBAAdA,EAAyBA,EACzC,yDACuB,UAAY1F,GAAS,8DAAiEl0U,KAAKi+E,MAAMlpG,SAAY,QAC5I,EAEA4N,OAAOy1C,iBAAkBizS,EAAQnrU,UAAWq7E,GAErC8vP,CACX,CA9Ge,CA8Gb8H,IAEF,YC5JA,IAAI19R,GACA81B,GAEAsuQ,GAAc,WAAc,MAA2B,qBAAbrrV,QAA0B,EA0ExE,SAlEsB,SAAUq9E,GAC5B,SAASiuQ,IACLjuQ,EAAMplE,KAAKzG,MAEXA,KAAK+5U,OAAS,CAAE,CACZjkW,KAAM,MACN0D,KAAMwgW,IACP,CACClkW,KAAM,SACN0D,KAAMygW,IAEd,CAEKpuQ,IAAQiuQ,EAAexzU,UAAYulE,GACxCiuQ,EAAe55U,UAAYvd,OAAOkkB,OAAQglE,GAASA,EAAM3rE,WACzD45U,EAAe55U,UAAU0G,YAAckzU,EAEvC,IAAIriQ,EAAkB,CAAElM,QAAS,CAAE5gE,cAAc,GAAOt2B,QAAS,CAAEs2B,cAAc,IA8CjF,OA5CA8sE,EAAgBlM,QAAQ9gE,IAAM,WAQ1B,OAPK8gE,KACDA,GAAU,CACNyU,OA5B0B65P,MACtCrrV,SAASrV,cAAc,UAAUmmG,WA4BrB+T,IA1BuBwmP,MACnCrrV,SAASknL,eAAewkK,WAAW,oDAAqD,SA6B7E3uQ,EACX,EAEAkM,EAAgBpjG,QAAQo2B,IAAM,WAK1B,OAJKgrC,KACDA,GAAW,IAAIqkS,GAGZrkS,EACX,EAEAqkS,EAAe55U,UAAU2G,OAAS,SAAiBwB,EAAS01B,GACxD,IAAItrC,EAAQuN,KAAK+5U,OACbpsV,EAAQ8E,EAAM,GAElB,GAAIsrC,GAAWA,EAAQvkD,KAEnB,IADA,IAAI2gW,EAAYp8S,EAAQvkD,KAAKg8C,cACpBt1C,EAAI,EAAGA,EAAIuS,EAAM5Q,OAAQ3B,IAC9B,GAAIuS,EAAMvS,GAAGpK,OAASqkW,EAAW,CAC7BxsV,EAAQ8E,EAAMvS,GACd,KACJ,CAIR,GAAIyN,EACA,OAAO,IAAIA,EAAMnU,KAAK6uB,EAAS01B,IClE5B,SAAsBpP,GACjC,IAAI95C,EAAUkE,OAAOlE,QAEE,oBAAZA,GAA2BA,EAAQC,KAC1CD,EAAQC,IAAI65C,EAEpB,CD+DQyrT,CACI,oIACiE9rT,UAAUC,UACnF,EAEA5rC,OAAOy1C,iBAAkB0hT,EAAgBriQ,GAElCqiQ,CACX,CAhEsB,CAgEpBjuQ,GAAAA,GE5EF,IAAIw/P,GAAW,SAAU8H,GACrB,SAAS9H,IACL8H,EAAYhzU,MAAMH,KAAM0M,UAC5B,CAEKymU,IAAc9H,EAAQ/kU,UAAY6sU,GACvC9H,EAAQnrU,UAAYvd,OAAOkkB,OAAQssU,GAAeA,EAAYjzU,WAC9DmrU,EAAQnrU,UAAU0G,YAAcykU,EAEhC,IAAI5zP,EAAkB,CAAElM,QAAS,CAAE5gE,cAAc,IAYjD,OAVA8sE,EAAgBlM,QAAQ9gE,IAAM,WAC1B,OAAOqvU,GAAevuQ,OAC1B,EAEA8/P,EAAQxkU,OAAS,SAAiBwB,EAAS01B,GACvC,OAAO+7S,GAAezlW,QAAQwyB,OAAOwB,EAAS01B,EAClD,EAEAp7C,OAAOy1C,iBAAkBizS,EAAS5zP,GAE3B4zP,CACX,CAtBe,CAsBb8H,IAEF,2JC1BuBvI,GAAdyP,EAAiCzP,cAAejnM,GAAhD02M,EAAgE12M,WCCrElzD,GAAQ4M,EAAAA,EAAgBrJ,GAAOqJ,EAAAA,EAAelyE,GAAYkyE,EAAAA,EAC1D/yE,GAAO,WAAc,EAYrBgwU,GAA8B,WAC9B,SAASA,EAAajyU,EAAS01B,QACX,IAAZA,IAAsBA,EAAU,CAAC,GACrC/9B,KAAKqI,QAAUA,EACfrI,KAAKu6U,aAAe,EACpBv6U,KAAK+9B,QAAUp7C,OAAO2mB,OAAO,CACzBzZ,MATQ,EAURsnF,UAfY,EAgBZqjQ,aAfgB,IAgBhBC,QAA2B,IAAnB18S,EAAQ08S,OAChBn8V,MAAOy/C,EAAQz/C,OApBP,OAqBR8B,gBAAiB29C,EAAQ39C,iBApBN,OAqBnBg3G,YAlBe,EAmBf5xG,SAAU8kB,GACVowU,OAAQpwU,GACRqwU,UAAWrwU,IACZyzB,GACH/9B,KAAK46U,YAAc,CACfr9P,OAAQ,CACJj/F,MAAO0hB,KAAK+9B,QAAQz/C,MACpBjE,MAAO2lB,KAAK+9B,QAAQq5D,YACpB28B,QAAS,QACTE,SAAU,UAGlBj0H,KAAK66U,cACL76U,KAAK86U,cACT,CAiLA,OAhLAR,EAAap6U,UAAU2nK,QAAU,WAC7B7nK,KAAK+6U,cACT,EACAT,EAAap6U,UAAUqgC,MAAQ,WAC3BvgC,KAAKg7U,UAAUz6S,QACfvgC,KAAKy9B,KAAO,IAChB,EACA96C,OAAO6nB,eAAe8vU,EAAap6U,UAAW,YAAa,CACvDuK,IAAK,WACD,OAAOG,QAAQ5K,KAAK6yE,OACxB,EACAnoE,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe8vU,EAAap6U,UAAW,WAAY,CACtDuK,IAAK,WACD,IAAIhzB,EACJ,OAA4B,QAApBA,EAAKuoB,KAAKy9B,YAAyB,IAAPhmD,OAAgB,EAASA,EAAGy9C,SAxDvD,EAyDb,EACAvjB,IAAK,SAAUlsB,GACXua,KAAKugC,QACLvgC,KAAKy9B,KAAO66F,GAAAA,EAAUz1F,MAAMp9C,EAAOua,KAAK46U,aACxC56U,KAAKg7U,UAAUtvV,OAAOsU,KAAKy9B,KAC/B,EACA/yB,YAAY,EACZC,cAAc,IAElB2vU,EAAap6U,UAAUglH,UAAY,SAAU3sI,EAAMgB,GAE/C,QADa,IAATA,IAAmBA,EAAO,IACzBhB,EAAL,CAIA,IAAId,EAAKuoB,KAAKzmB,KAAMc,EAAQ5C,EAAG,GAAI4D,EAAS5D,EAAG,GAC3C4vI,EAAehtI,EAAQ2lB,KAAK+9B,QAAQluC,MACpCy3H,EAAgBjsI,EAAS2kB,KAAK+9B,QAAQluC,MACtCorV,EAAc1hW,EAAK,IAjEJ,EAiEU8tI,EACzB6zN,EAAe3hW,EAAK,IAlEL,EAkEW+tI,EAC1BhwC,EAAS+vC,EAAe4zN,EACxB1jQ,EAAS+vC,EAAgB4zN,EACzBrrV,EAAQiF,KAAKC,IAAIuiF,EAAQC,GACzBwR,EAAM,IAAII,GAAAA,EAAM5wG,EAAM,IAAI8kG,EAAAA,EAAc,CAAC,EAAG,GAAI,CAAC49P,EAAaC,KAClEnyP,EAAI59E,UAAUA,KAAYtb,MAAMA,EAAOA,IACvCmQ,KAAKugC,QACLvgC,KAAKg7U,UAAUtvV,OAAOq9F,EAZtB,MAFI/oF,KAAKugC,OAeb,EACA+5S,EAAap6U,UAAUi7U,YAAc,SAAUp9S,GAC3C,IAAItmD,EACAI,EAAKmoB,KAAKzmB,KAAMc,EAAQxC,EAAG,GAAIwD,EAASxD,EAAG,GAC3CwvI,EAAehtI,EAAQ2lB,KAAK+9B,QAAQluC,MACpCy3H,EAAgBjsI,EAAS2kB,KAAK+9B,QAAQluC,MACtCurV,GAA2B,OAAZr9S,QAAgC,IAAZA,OAAqB,EAASA,EAAQ1jD,QAhF1D,EAgFoEgtI,EACnFg0N,GAA4B,OAAZt9S,QAAgC,IAAZA,OAAqB,EAASA,EAAQ1iD,SAjF3D,EAiFsEisI,EACrFhwC,EAAS8jQ,EAAc/zN,EACvB9vC,EAAS8jQ,EAAe/zN,EACxBz3H,EAAQiF,KAAKC,IAAIuiF,EAAQC,GACzB+jQ,EAAa,IAAItnQ,GAAK,CAAC,EAAG,GAAI,CAAConQ,EAAaC,IAC5CE,EAAc,IAAI75P,GAAAA,EAAM,CACxBsJ,KAAM6B,GAAAA,EAAK0E,SAAS+pP,KAEpBE,EAAe,IAAI95P,GAAAA,EAAM,CACzBv2E,UAAWA,KAAYtb,MAAMA,EAAOA,KAEpC4rV,EAAQ5uP,GAAAA,EAAK0E,SAAS+pP,EAAY,CAClC5+P,KAAM,CACFp+F,MAAO0hB,KAAK+9B,QAAQ39C,mBAM5B,OAHAm7V,EAAY7vV,OAAO+vV,GACnBF,EAAY7vV,OAAO8vV,IAClB/jW,EAAK+jW,EAAa/nW,UAAUutB,KAAKb,MAAM1oB,EAAIuoB,KAAKg7U,UAAUvnW,UC7GpD,SAAqB8tE,EAAOxjB,GACvC,IAAI30B,EAAW,CACX/uB,MAAO,QAASgB,OAAQ,QACxBiyV,KAAM,aAGNoO,EAAan6R,EACb0xB,EAAO1xB,EAAMm5E,cAGjB,GAAIznD,EAAM,CACN,IAAI0E,EAAS1E,EAAKgG,aAClByiQ,EAAa,IAAIh6P,GAAAA,GACNv2E,WAAUA,EAAAA,EAAAA,KAAYisE,WAAWO,EAAOxtB,GAAIwtB,EAAOtH,IAC9DqrQ,EAAWjoW,SAASutB,KAAKugD,GAEzB,IAAIhoE,EAAO05F,EAAKmG,UAChBhwE,EAAS/uB,MAAQd,EAAKc,MAAQ,KAC9B+uB,EAAS/tB,OAAS9B,EAAK8B,OAAS,IACpC,CAEA,IAAIsgW,EAAiBh5V,OAAO2mB,OAAOF,EAAU20B,GAEzC54B,EAAY3W,SAASrV,cAAc,OACnCzF,EAAQyxB,EAAUzxB,MAEtBA,EAAMkwG,QAAU,OAChBlwG,EAAM2G,MAAQshW,EAAethW,MAC7B3G,EAAM2H,OAASsgW,EAAetgW,OAC9BmT,SAASa,KAAKyW,YAAYX,GAE1B,IAAIyrU,EAAU,IAAIvF,GAAQlmU,EAAWw2U,GACrC/K,EAAQzE,kBACRyE,EAAQ/E,KAAK6P,GAEb,IAAIlrS,EAAUogS,EAAQv+O,QAClBw1E,EAAU,WACV+oK,EAAQ/oK,UACRr5K,SAASa,KAAK2W,YAAYb,EAC9B,EAGA,OAFAqrC,EAAQ/7D,KAAKozL,EAASA,GAEfr3H,CACX,CDmEe2qS,CAAYI,EAAa54V,OAAO2mB,OAAO,CAC1CjvB,MAAO+gW,EACP//V,OAAQggW,GACTt9S,GACP,EACAu8S,EAAap6U,UAAUkiM,OAAS,WAC5BpiM,KAAK4wU,QAAQxuI,QAAO,EACxB,EACAk4I,EAAap6U,UAAU07U,WAAa,SAAU79S,GAC1Cp7C,OAAO2mB,OAAOtJ,KAAK+9B,QAASA,GAC5B/9B,KAAK46U,YAAYr9P,OAAOj/F,MAAQ0hB,KAAK+9B,QAAQz/C,MAC7C0hB,KAAK46U,YAAYr9P,OAAOljG,MAAQ2lB,KAAK+9B,QAAQq5D,YACzCp3F,KAAKy9B,OACLz9B,KAAKy9B,KAAKM,QAAQpsB,IAAI,eAAgB3R,KAAK+9B,QAAQz/C,OACnD0hB,KAAKy9B,KAAKM,QAAQpsB,IAAI,eAAgB3R,KAAK+9B,QAAQq5D,cAEvDp3F,KAAKgxF,WAAWjzD,QAAQpsB,IAAI,aAAc3R,KAAK+9B,QAAQ39C,gBAC3D,EACAk6V,EAAap6U,UAAU26U,YAAc,WACjC76U,KAAK4wU,QAAUvF,GAAQxkU,OAAO7G,KAAKqI,QAAS,CAAE7uB,KAAM,WACpDwmB,KAAKqI,QAAQ30B,MAAMq7P,YAAc,OACjC,IAAIl/O,EAAQmQ,KAAK+9B,QAAQluC,MACzBmQ,KAAKg7U,UAAY,IAAIt5P,GAAAA,EAAM,CACvBv2E,UAAWA,KAAYtb,MAAMA,EAAOA,KAGxC,IAAIxV,EAAQ2lB,KAAKqI,QAAQm9H,aAlIb,IAmIRnqJ,EAAS2kB,KAAKqI,QAAQtC,cAlIb,IAmIb/F,KAAKzmB,KAAO,CAACc,EAAOgB,GACpB2kB,KAAKgxF,WAAanE,GAAAA,EAAK0E,SAAS,IAAIvd,GAAK,CAAC,EAAG,GAAIh0E,KAAKzmB,MAAO,CACzDmjG,KAAM,CACFp+F,MAAO0hB,KAAK+9B,QAAQ39C,mBAG5B4f,KAAK4wU,QAAQ/E,KAAK7rU,KAAKgxF,YACvBhxF,KAAK4wU,QAAQ/E,KAAK7rU,KAAKg7U,UAC3B,EACAV,EAAap6U,UAAU46U,aAAe,WAClC96U,KAAKm9N,cAAgBn9N,KAAKm9N,cAActuN,KAAK7O,MAC7CA,KAAK67U,cAAgB77U,KAAK67U,cAAchtU,KAAK7O,MAC7CA,KAAK87U,YAAc97U,KAAK87U,YAAYjtU,KAAK7O,MACzCA,KAAKqI,QAAQnvB,iBAAiB,cAAe8mB,KAAKm9N,eAClDn9N,KAAKqI,QAAQnvB,iBAAiB,cAAe8mB,KAAK67U,eAClD77U,KAAKqI,QAAQnvB,iBAAiB,YAAa8mB,KAAK87U,YACpD,EACAxB,EAAap6U,UAAU66U,aAAe,WAClC/6U,KAAKqI,QAAQ+pB,oBAAoB,cAAepyB,KAAKm9N,eACrDn9N,KAAKqI,QAAQ+pB,oBAAoB,cAAepyB,KAAK67U,eACrD77U,KAAKqI,QAAQ+pB,oBAAoB,YAAapyB,KAAK87U,YACvD,EACAxB,EAAap6U,UAAU67U,WAAa,SAAUriW,GAC1C,IAAI+uB,EAASmiU,GAAc5qU,KAAKqI,SAC5BigO,EAAQ5uP,EAAE4uP,MACVE,EAAQ9uP,EAAE8uP,MACV34O,EAAQ,EAAImQ,KAAK+9B,QAAQluC,MAC7B,OAAO,IAAI4gF,GAAM63J,EAAQ7/N,EAAO/Y,KAAM84O,EAAQ//N,EAAO7uB,KAAKiW,MAAMA,EAAOA,EAC3E,EACAyqV,EAAap6U,UAAUi9N,cAAgB,SAAUzjP,GAC7C,IAAIsmB,KAAK+9B,QAAQrlB,UAAah/B,EAAE2vP,WAkDxC,SAAsB3vP,GAClB,MAA6B,kBAAdA,EAAE0+L,QAAqC,IAAb1+L,EAAE0+L,MAC/C,CApDsD4jK,CAAatiW,GAA3D,CAGKsmB,KAAKy9B,OACNz9B,KAAKy9B,KAAO,IAAI66F,GAAAA,EAAUt4H,KAAK46U,aAC/B56U,KAAKg7U,UAAUtvV,OAAOsU,KAAKy9B,OAE/Bz9B,KAAK+9B,QAAQ28S,SACb16U,KAAKqI,QAAQ4zU,kBAAkBviW,EAAEwiW,WACjC,IAAI3nQ,EAAQv0E,KAAK+7U,WAAWriW,GAC5BsmB,KAAK6yE,OAAS,CAAC0B,GACfv0E,KAAKy9B,KAAKqvD,OAAOvY,EATjB,CAUJ,EACA+lQ,EAAap6U,UAAU27U,cAAgB,SAAUniW,GAC7C,GAAKsmB,KAAK6yE,QAAWn5F,EAAE2vP,UAAvB,CAGA,IAAIz5N,GAAO,IAAI3yB,MAAQgV,UAGvB,KAFc2d,EAAM5P,KAAKu6U,aACN,IAAO52M,GAAW3jI,KAAK+9B,QAAQy8S,aAAc,EAAG,MACnE,CAIIx6U,KAAKu6U,aAAe3qU,EAExB,IAAI2kE,EAAQv0E,KAAK+7U,WAAWriW,GACxByiW,EAAYn8U,KAAK6yE,OAAO7yE,KAAK6yE,OAAOhxF,OAAS,GAC7Cu6V,EAAW,EAAIz4M,GAAW3jI,KAAK+9B,QAAQo5C,UAAW,IAAM,KACxD5C,EAAMC,WAAW2nQ,GAAaC,IAGlCp8U,KAAK6yE,OAAO7xE,KAAKuzE,GACjBv0E,KAAKy9B,KAAKsvD,OAAOxY,GARjB,CATA,CAkBJ,EACA+lQ,EAAap6U,UAAU47U,YAAc,SAAUpiW,GAC3C,GAAKA,EAAE2vP,WAAcrpO,KAAKy9B,MAASz9B,KAAK6yE,SAAU7yE,KAAK+9B,QAAQrlB,SAA/D,CAGA,GAAI1Y,KAAK+9B,QAAQ08S,OAAQ,CACrB,IAAIliN,EAAW1rC,GAAAA,EAAK+2C,gBAAgB5jI,KAAK6yE,QACzC7yE,KAAKy9B,KAAK+6F,MAAM10H,OAAO9D,KAAKy9B,KAAK+6F,MAAM32I,OAAS,EAAG,EAAG02I,EAC1D,CACAv4H,KAAK6yE,OAAS,KACd7yE,KAAK+9B,QAAQ48S,YACb36U,KAAK+9B,QAAQv4C,SAASwa,KAAKq8U,SAP3B,CAQJ,EACO/B,CACX,CA7MkC,oFEflC,IAAIzlV,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACI4vU,GAAwC,SAAUrnT,EAASsnT,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAIr0U,WAAU,SAAUC,EAAS8hC,GAC/C,SAAShK,EAAUz6C,GAAS,IAAMoO,EAAK4oV,EAAU5uU,KAAKpoB,GAAS,CAAE,MAAO/L,GAAKwwD,EAAOxwD,EAAI,CAAE,CAC1F,SAASymD,EAAS16C,GAAS,IAAMoO,EAAK4oV,EAAiB,MAAEh3V,GAAS,CAAE,MAAO/L,GAAKwwD,EAAOxwD,EAAI,CAAE,CAC7F,SAASma,EAAKnX,GAJlB,IAAe+I,EAIa/I,EAAOi+C,KAAOvyB,EAAQ1rB,EAAO+I,QAJ1CA,EAIyD/I,EAAO+I,MAJhDA,aAAiB+2V,EAAI/2V,EAAQ,IAAI+2V,GAAE,SAAUp0U,GAAWA,EAAQ3iB,EAAQ,KAIjBhR,KAAKyrD,EAAWC,EAAW,CAC7GtsC,GAAM4oV,EAAYA,EAAUt8U,MAAM80B,EAASsnT,GAAc,KAAK1uU,OAClE,GACJ,EACI6uU,GAA4C,SAAUznT,EAAS5lC,GAC/D,IAAsG0gB,EAAGsgE,EAAGzzF,EAAGyvF,EAA3GzrE,EAAI,CAAE/qB,MAAO,EAAG8mW,KAAM,WAAa,GAAW,EAAP//V,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGggW,KAAM,GAAIC,IAAK,IAChG,OAAOxwQ,EAAI,CAAEx+D,KAAMivU,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAX3mT,SAA0Bk2C,EAAEl2C,OAAOE,UAAY,WAAa,OAAOr2B,IAAM,GAAIqsE,EACvJ,SAASywQ,EAAKr8V,GAAK,OAAO,SAAUysF,GAAK,OACzC,SAAczN,GACV,GAAI1vD,EAAG,MAAM,IAAIrJ,UAAU,mCAC3B,KAAO9F,OACH,GAAImP,EAAI,EAAGsgE,IAAMzzF,EAAY,EAAR6iF,EAAG,GAAS4Q,EAAU,OAAI5Q,EAAG,GAAK4Q,EAAS,SAAOzzF,EAAIyzF,EAAU,SAAMzzF,EAAE6pB,KAAK4pE,GAAI,GAAKA,EAAExiE,SAAWjxB,EAAIA,EAAE6pB,KAAK4pE,EAAG5Q,EAAG,KAAK9kC,KAAM,OAAO/9C,EAE3J,OADIyzF,EAAI,EAAGzzF,IAAG6iF,EAAK,CAAS,EAARA,EAAG,GAAQ7iF,EAAE6I,QACzBg6E,EAAG,IACP,KAAK,EAAG,KAAK,EAAG7iF,EAAI6iF,EAAI,MACxB,KAAK,EAAc,OAAX7+D,EAAE/qB,QAAgB,CAAE4P,MAAOg6E,EAAG,GAAI9kC,MAAM,GAChD,KAAK,EAAG/5B,EAAE/qB,QAASw6F,EAAI5Q,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAK7+D,EAAEi8U,IAAI79S,MAAOp+B,EAAEg8U,KAAK59S,MAAO,SACxC,QACI,KAAkBpiD,GAAZA,EAAIgkB,EAAEg8U,MAAY/6V,OAAS,GAAKjF,EAAEA,EAAEiF,OAAS,MAAkB,IAAV49E,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAE7+D,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAV6+D,EAAG,MAAc7iF,GAAM6iF,EAAG,GAAK7iF,EAAE,IAAM6iF,EAAG,GAAK7iF,EAAE,IAAM,CAAEgkB,EAAE/qB,MAAQ4pF,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAY7+D,EAAE/qB,MAAQ+G,EAAE,GAAI,CAAEgkB,EAAE/qB,MAAQ+G,EAAE,GAAIA,EAAI6iF,EAAI,KAAO,CACpE,GAAI7iF,GAAKgkB,EAAE/qB,MAAQ+G,EAAE,GAAI,CAAEgkB,EAAE/qB,MAAQ+G,EAAE,GAAIgkB,EAAEi8U,IAAI77U,KAAKy+D,GAAK,KAAO,CAC9D7iF,EAAE,IAAIgkB,EAAEi8U,IAAI79S,MAChBp+B,EAAEg8U,KAAK59S,MAAO,SAEtBygC,EAAKpwE,EAAKoX,KAAKwuB,EAASr0B,EAC5B,CAAE,MAAOlnB,GAAK+lF,EAAK,CAAC,EAAG/lF,GAAI22F,EAAI,CAAG,CAAE,QAAUtgE,EAAInzB,EAAI,CAAG,CACzD,GAAY,EAAR6iF,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEh6E,MAAOg6E,EAAG,GAAKA,EAAG,QAAK,EAAQ9kC,MAAM,EAC9E,CAtBgD9mC,CAAK,CAACpT,EAAGysF,GAAK,CAAG,CAuBrE,EAsBIxzB,GAAe,SAAUttC,GACzB,YAAgBl5B,IAATk5B,CACX,EAOW2wU,IAAwBziU,EAAAA,GAAAA,KAIxB0iU,GAAYzpW,EAAAA,YAAiB,SAAU08R,EAAa71Q,GAC3D,IAAI3iB,GACJy+B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAIj4B,GAAQ8nP,EAAAA,GAAAA,GAAgB+2G,GAAuB9sE,GAC/C5gQ,GAAsBwvP,EAAAA,EAAAA,KACtBhqC,EAAathP,EAAAA,OAAa,MAC1B0pW,EAAY1pW,EAAAA,OAAa,MACzB2pW,EAAY3pW,EAAAA,OAAa,MACzB4pW,EAAoB5pW,EAAAA,OAAa,MACjC6pW,EAAoB7pW,EAAAA,OAAa,MACjCsE,EAAKtE,EAAAA,WAAkBkiE,EAAW59D,EAAG,GAAIwlW,EAAcxlW,EAAG,GAC1DK,EAAK3E,EAAAA,UAAe,GAAQsiC,EAAU39B,EAAG,GAAI6oP,EAAa7oP,EAAG,GAC7DG,EAAK9E,EAAAA,UAAe,GAAQ+pW,EAAYjlW,EAAG,GAAIklW,EAAellW,EAAG,GACjEI,EAAKlF,EAAAA,WAAkBkvC,EAAahqC,EAAG,GAAIslS,EAAgBtlS,EAAG,GAC9DE,EAAKpF,EAAAA,WAAkBiqW,EAAa7kW,EAAG,GAAI8kW,EAAgB9kW,EAAG,GAE9D8M,EADoBi0D,GAAax7D,EAAMuH,OACXvH,EAAMuH,MAAQg9B,EAC1CpjC,EAAK9L,EAAAA,UAAe,GAAQ4tV,EAAY9hV,EAAG,GAAI+hV,EAAe/hV,EAAG,GACjEgiV,EAAmB3nR,GAAax7D,EAAMqQ,MACtCA,EAAO8yU,EAAmBnjV,EAAMqQ,KAAO4yU,EACvCuc,IAAiBx/V,EAAMy/V,WAAaL,IAAcp/V,EAAM0/V,aAAe1/V,EAAMhE,UAC7E2jW,EAAe3/V,EAAMy/V,YAAcL,EAEnCQ,MADY5/V,EAAMuH,OAASg9B,IACF66T,GAAap/V,EAAMyC,UAAYzC,EAAMhE,UAC9D6jW,EAAgB1uU,EAAoBG,iBAAiBwuU,EAAAA,GAAmBtuU,EAAAA,GAASsuU,EAAAA,KACjFC,EAAgB5uU,EAAoBG,iBAAiB0uU,EAAAA,GAAmBxuU,EAAAA,GAASwuU,EAAAA,KACjFC,EAAa9uU,EAAoBG,iBAAiB4uU,EAAAA,GAAgB1uU,EAAAA,GAAS0uU,EAAAA,KAC3EC,EAAangW,EAAMmgW,YA/CD,EAgDlBC,EAAcpgW,EAAMogW,aA/CD,EAgDnBC,EAAgB,SAAUxiU,GAC1BgiQ,EAAchiQ,GACV79B,EAAMsH,UACNtH,EAAMsH,SAAS,CAAEC,MAAOs2B,GAEhC,EAKAxoC,EAAAA,WAAgB,WACR2K,EAAMuH,QAAUg9B,IAChBs7P,EAAc7/R,EAAMuH,OACP,OAAbgwD,QAAkC,IAAbA,GAA+BA,EAASyvE,UAAUhnI,EAAMuH,OAErF,GAAG,CAACvH,EAAMuH,QACV,IAII+3O,EAAUjqP,EAAAA,aAAkB,SAAU+tV,GACjCD,GACDD,EAAaE,EAErB,GAAG,CAACD,IAMAmd,EAAcjrW,EAAAA,aAAkB,WAChC,IAAIqxV,EA9EQ,UAkFZ,OAHK1mV,EAAMI,OAA6B,qBAAbkQ,UAA4BqmO,EAAWxgP,UAC9DuwV,EAAejxS,iBAAiBkhM,EAAWxgP,SAASiK,OAEjDJ,EAAMI,OAASsmV,CAC1B,GAAG,CAAC1mV,EAAMI,QACNmgW,EAAwBlrW,EAAAA,aAAkB,WAC1C,IAAImrW,EApFmB,UAwFvB,OAHKxgW,EAAMkC,iBAAuC,qBAAboO,UAA4BqmO,EAAWxgP,UACxEqqW,EAAyB/qT,iBAAiBkhM,EAAWxgP,SAAS+L,iBAE3DlC,EAAMkC,iBAAmBs+V,CACpC,GAAG,CAACxgW,EAAMkC,kBACNu+V,EAAa,WACb,MAAO,CACH9uV,MAAO3R,EAAMy/V,UAAYz/V,EAAMmgW,WAAa,EAC5C//V,MAAOkgW,IACPp+V,gBAAiBq+V,IACjBrnP,YAAal5G,EAAMk5G,YACnBqjP,OAAQv8V,EAAMu8V,OACd/hU,SAAUx6B,EAAMyC,SAExB,EACIw6V,EAAc,SAAUyD,GAAc,OAAOtC,QAAU,OAAQ,OAAQ,GAAQ,WAC/E,IAAIjiW,EAAOgB,EACX,OAAOqhW,GAAY18U,MAAM,SAAUvoB,GAC/B,OAAQA,EAAG5B,OACP,KAAK,EAED,OADAwE,EAAQukW,EAAWvkW,MAAOgB,EAASujW,EAAWvjW,OACvC,CAAC,EAA2B,OAAbo6D,QAAkC,IAAbA,OAAsB,EAASA,EAAS0lS,YAAY,CACvF9gW,MAAOA,EAAQikW,EACfjjW,OAAQA,EAASijW,KAE7B,KAAK,EAAG,MAAO,CAAC,EAAc7mW,EAAGklW,QAEzC,GACJ,GAAI,EACJppW,EAAAA,WAAgB,WACZ,IAAIysG,EAASi9P,EAAU5oW,QACnBm5F,EAAM,IAAI8sQ,GAAat6P,EAAQ2+P,KAKnC,OAJIl5V,GACA+nF,EAAI03C,UAAUz/H,GAElB43V,EAAY7vQ,GACL,WAAc,OAAOA,EAAIq6F,SAAW,CAC/C,GAAG,IACHt0L,EAAAA,WAAgB,WACC,OAAbkiE,QAAkC,IAAbA,GAA+BA,EAASmmS,WAAW,CACpEp2V,SAAU,WAAc,OAAO82V,QAAU,OAAQ,OAAQ,GAAQ,WAAc,IAAI7kW,EAAI,OAAOilW,GAAY18U,MAAM,SAAUnoB,GACtH,OAAQA,EAAGhC,OACP,KAAK,EAED,OADA4B,EAAK8mW,EACE,CAAC,EAAapD,EAAY7Q,OACrC,KAAK,EAAG,MAAO,CAAC,EAAc7yV,EAAG0oB,WAAM,EAAQ,CAACtoB,EAAG8kW,UAE3D,GAAI,GAAI,EACRjC,OAAQ,WAAc,OAAO6C,GAAa,EAAO,EACjD5C,UAAW,WAAc,OAAO4C,GAAa,EAAQ,GAE7D,GAAG,CAAC9nS,IACJliE,EAAAA,iBAAsB,WAAc,OAAoB,OAAbkiE,QAAkC,IAAbA,OAAsB,EAASA,EAASmmS,WAAW+C,IAAe,GAAG,CAACzgW,EAAMyC,SAAUzC,EAAMI,MAAOJ,EAAMkC,gBAAiBlC,EAAMk5G,YAAal5G,EAAMu8V,SACnNlnW,EAAAA,WAAgB,WACZ,IAAIkE,EAAII,EACJgnW,EAA8F,QAAnFhnW,EAAkC,QAA5BJ,EAAKylW,EAAU7oW,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,eAA4B,IAAPxwB,OAAgB,EAASA,EAAG+tB,cAAc,cACpJ,GAAKi5U,EAAL,CAGA,IAAIC,EAAiB,WAAc,OAAOthH,GAAQ,EAAQ,EAE1D,OADAqhH,EAAQ3lW,iBAAiB,QAAS4lW,GAC3B,WAAc,OAAOD,EAAQzsT,oBAAoB,QAAS0sT,EAAiB,CAHlF,CAIJ,GAAG,CAACvwV,IACJhb,EAAAA,WAAgB,WACZ,GAAKgb,GAA4B,qBAAbC,SAApB,CAGA,IAAIuwV,EAAoB,SAAUrlW,GAC1BA,EAAE2wB,UAAYtD,GAAAA,EAAKiP,KACnBwnN,GAAQ,EAEhB,EAEA,OADAhvO,SAAStV,iBAAiB,UAAW6lW,GAC9B,WAAc,OAAOvwV,SAAS4jC,oBAAoB,UAAW2sT,EAAoB,CAPxF,CAQJ,GAAG,CAACxwV,IACJhb,EAAAA,WAAgB,WACZ,IAAIkE,EAAII,EACHqG,EAAMy/V,YAGiF,QAA3F9lW,EAA0C,QAApCJ,EAAK0lW,EAAkB9oW,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,eAA4B,IAAPxwB,GAAyBA,EAAGowB,QACpI,GAAG,IACH,IAAI03N,GAAepsP,EAAAA,aAAkB,WAAc,IAAIkE,EAAI,OAAoC,QAA5BA,EAAKwlW,EAAU5oW,eAA4B,IAAPoD,OAAgB,EAASA,EAAGwwB,OAAS,GAAG,IAC3IriB,GAAcrS,EAAAA,aAAkB,WAAc,OAAO2K,EAAMuH,KAAO,GAAG,CAACvH,EAAMuH,QAC5Eu5V,GAAazrW,EAAAA,aAAkB,WAAc,OAAO2K,EAAMpI,IAAM,GAAG,CAACoI,EAAMpI,OAC1EmpW,GAAiB1rW,EAAAA,aAAkB,WAAc,OAAO2K,EAAMy4B,QAAU,GAAG,CAACz4B,EAAMy4B,WAClFuoU,GAAiB3rW,EAAAA,aAAkB,WACnC,IAAIkjC,OAA0CvjC,IAA5BgL,EAAMw4B,kBAEpBK,GADenxB,KAKnB,MAAO,CACH6wB,YAAaA,EACbG,WALwB1jC,IAAhBgL,EAAM04B,MACd14B,EAAM04B,OACJqoU,OAAqBloU,EAIvBA,aAAcA,EAEtB,GAAG,CAAC74B,EAAMw4B,kBAAmBx4B,EAAM04B,MAAOhxB,GAAaq5V,KACnDE,GAAuB5rW,EAAAA,aAAkB,WACzC,OAAO2K,EAAM84B,cACjB,GAAG,CAAC94B,EAAM84B,iBACNooU,GAAc7rW,EAAAA,aAAkB,WAChC,OAAO2K,CACX,GAAG,CAACA,IACA0hP,GAAsBrsP,EAAAA,aAAkB,WACxC,IAAIwqD,EAAU,CACV11B,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,IAUX,OARAh9O,OAAO6nB,eAAeuzB,EAAS,OAAQ,CAAEtzB,IAAKu0U,KAC9Cr8V,OAAO6nB,eAAeuzB,EAAS,QAAS,CAAEtzB,IAAK7kB,KAC/CjD,OAAO6nB,eAAeuzB,EAAS,WAAY,CAAEtzB,IAAKy0U,KAClDv8V,OAAO6nB,eAAeuzB,EAAS,iBAAkB,CAAEtzB,IAAK00U,KACxDx8V,OAAO6nB,eAAeuzB,EAAS,WAAY,CAAEtzB,IAAKw0U,KAClDt8V,OAAO6nB,eAAeuzB,EAAS,QAAS,CAAEtzB,IAAK20U,KAC/Cz8V,OAAO6nB,eAAeuzB,EAAS,QAAS,CAAEtzB,IAAK+zU,IAC/C77V,OAAO6nB,eAAeuzB,EAAS,kBAAmB,CAAEtzB,IAAKg0U,IAClD1gT,CACX,GAAG,CAACihT,GAAYp5V,GAAas5V,GAAgBC,GAAsBF,GAAgBt/G,GAAcy/G,GAAaZ,EAAaC,IAC3HlrW,EAAAA,oBAA0B6mB,EAAQwlO,IAClC,IAAIh2N,GAAUr2B,EAAAA,aAAkB,SAAUW,GAClC2hC,GAAW33B,EAAMy/V,YAGrB58G,GAAW,IACXn6C,EAAAA,GAAAA,GAAc1oM,EAAM0rB,QAAS11B,EAAO0rP,KAAuB,CAAC,GAChE,GAAG,CAAC/pN,EAAS33B,EAAM0rB,QAASg2N,KACxB91N,GAASv2B,EAAAA,aAAkB,SAAUW,IClRtC,SAAmBm0B,EAASkyH,GAE/B,IADA,IAAIlmJ,EAAUg0B,EACPh0B,GAAWA,IAAYkmJ,GAC1BlmJ,EAAUA,EAAQwqG,WAEtB,QAAOxqG,CACX,ED6Q4BgrW,CAAUnrW,EAAM+nM,cAAe44C,EAAWxgP,WAI9D0sP,GAAW,IACXn6C,EAAAA,GAAAA,GAAc1oM,EAAM4rB,OAAQ51B,EAAO0rP,KAAuB,CAAC,GAC/D,GAAG,CAAC/pN,EAAS33B,EAAM4rB,OAAQ81N,KACvB0/G,GAAkB/rW,EAAAA,aAAkB,SAAUW,GAAS,OAAOooW,QAAU,OAAQ,OAAQ,GAAQ,WAChG,IAAI7kW,EACJ,OAAOilW,GAAY18U,MAAM,SAAUnoB,GAC/B,OAAQA,EAAGhC,OACP,KAAK,EAED,OADA4B,EAAKgmW,EACE,CAAC,EAAatC,EAAYoE,OACrC,KAAK,EAID,OAHA9nW,EAAG0oB,WAAM,EAAQ,CAACtoB,EAAG8kW,SACrBn/G,GAAQ,IACR52C,EAAAA,GAAAA,GAAc1oM,EAAMs7B,OAAQtlC,EAAO0rP,KAAuB,CAAC,GACpD,CAAC,GAEpB,GACJ,GAAI,GAAG,CAACrxO,EAAM8yU,EAAkBnjV,EAAMs7B,OAAQt7B,EAAMuH,MAAOg9B,EAAYm9M,KACnE4/G,GAAkBjsW,EAAAA,aAAkB,SAAUW,GAC9CspP,GAAQ,IACR52C,EAAAA,GAAAA,GAAc1oM,EAAM4L,QAAS5V,EAAO0rP,KAAuB,CAAC,EAChE,GAAG,CAACrxO,EAAM8yU,EAAkBnjV,EAAM4L,QAAS81O,KAKvC0qG,GAAc,WACd,IAAI7yV,EAAII,EAGR,MAAO,CACHwC,MAHQ6D,EAAM7D,QAAwC,QAA7B5C,EAAKo9O,EAAWxgP,eAA4B,IAAPoD,OAAgB,EAASA,EAAG+tJ,cA3PlF,IA+PRnqJ,OAHS6C,EAAM7C,SAAyC,QAA7BxD,EAAKg9O,EAAWxgP,eAA4B,IAAPwD,OAAgB,EAASA,EAAGkuB,eA3PnF,GAgQjB,EACIw5U,GAAY,WACZ,IAAI9nW,EAAK6yV,KAAejwV,EAAQ5C,EAAG4C,MAAOgB,EAAS5D,EAAG4D,OACtD,MAAO,CACHhB,MAAOA,EAAQgkW,EACfhjW,OAAQA,EAASgjW,EAEzB,EACIlqW,IAAWgrW,MAA0BD,KAAiBtoU,MAC1D,OAAQrjC,EAAAA,cAAoB,MAAO,CAAEQ,IAAK8gP,EAAYl5N,IAAKzd,EAAMyd,IAAKjoB,MAAOmhB,GAAS,CAAExa,MAAO6D,EAAM7D,MAAOgB,OAAQ6C,EAAM7C,QAAU6C,EAAMxK,OAAQG,WAAWu7B,EAAAA,EAAAA,GAAW,UAAW,eAAgB33B,EAAK,CAC5L,wBAAyByG,EAAMy/V,WAEnClmW,EAAG,eAAeyM,OAAOk0B,GAAAA,EAAeC,QAAQn6B,EAAM3E,OAAS2E,EAAM3E,OAAS2E,EAAM3E,KACpF9B,EAAG,WAAWyM,OAAOhG,EAAMiG,WAAajG,EAAMiG,SAC9C1M,EAAG,aAAayM,OAAOk0B,GAAAA,EAAeE,WAAWp6B,EAAMo5B,UAAYp5B,EAAMo5B,UAAYp5B,EAAMo5B,QAC3F7/B,EAAG,cAAgBtD,GACnBsD,EAAG,cAAgByG,EAAMy4B,SACzBl/B,EAAG,cAAgByG,EAAMhE,SACzBzC,EAAG,WAAao+B,EAChBp+B,GAAKyG,EAAMrK,WAAY+1B,QAASA,GAASE,OAAQA,IACrDv2B,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBAAsBE,IAAKkpW,EAAW1xU,UAAUkvC,EAAAA,EAAAA,GAAYv8D,EAAMqtB,SAAUrtB,EAAMhE,UAAWnC,KAAM,MAAO3E,GAAI8K,EAAM9K,GAAI,aAAc8K,EAAMi9O,UAAW,kBAAmBj9O,EAAMs5B,eAAgB,mBAAoBt5B,EAAMu5B,gBAAiB,gBAAiBv5B,EAAMhE,SAAW,YAAShH,IAC9TK,EAAAA,cAAoB,MAAO,CAAEM,UAAW,+CACpC6pW,GAAiBnqW,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEtB,UAAW,0CAA2CE,IAAKqpW,EAAmBhoW,KAAM,iBAAkBujC,QAAS8mU,EAAAA,IAAmBt7V,SAAU,OAAQ5K,KAAM2E,EAAM3E,KAAMlE,QAASiqW,GAAiB,aAAcvB,EAAe/9V,MAAO+9V,IACnRF,GAAiBtqW,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEtB,UAAW,uDAAwDE,IAAKopW,EAAmB/nW,KAAM,iBAAkBujC,QAAS8mU,EAAAA,IAAmBt7V,SAAU,OAAQ5K,KAAM2E,EAAM3E,KAAMlE,QAASmqW,GAAiB,aAAcvB,EAAej+V,MAAOi+V,MACnS//V,EAAMwhW,UAAansW,EAAAA,cAAoB,MAAO,CAAEM,UAAW,mBAAoBH,MAAO,CAAEoG,OAAQ,EAAGiiQ,cAAe,UACnHxoQ,EAAAA,cAAoB,MAAO,CAAEM,UAAW,kDAAoDiqW,GAAcvqW,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEtB,UAAW,uCAAwCuB,KAAM,IAAKujC,QAAS0S,EAAAA,IAAOlnC,SAAU,OAAQ5K,KAAM2E,EAAM3E,KAAMlE,QArChP,WAjLG,OAAbogE,QAAkC,IAAbA,GAA+BA,EAASlV,QAC7Dg+S,IAkLA5+G,IACJ,EAkCgR,aAAcw+G,EAAYn+V,MAAOm+V,KAC7S5vV,GAAShb,EAAAA,cAAoB4G,GAAAA,EAAQ,CAAEpG,IAAKmpW,GACxC3pW,EAAAA,cAAoBypW,GAAWnoV,GAAS,CAAC,EAAG3W,EAAOqhW,KAAa,CAAE95V,MAAO+3V,EAAYG,WAAW,EAAMW,YAAc,EAAID,EAAcC,EAAa/vV,MAAM,EAAO/I,SAnOnJ,SAAU9L,GACd,OAAb+7D,QAAkC,IAAbA,GAA+BA,EAASyvE,UAAUxrI,EAAE+L,OACzE84V,EAAc7kW,EAAE+L,MACpB,EAgOkMqE,QAhN9K,SAAU5V,GAC1B,IAAIuD,EAAII,EACR2nW,GAAgBtrW,GACqG,QAApH2D,GAA4C,QAApCJ,EAAK2lW,EAAkB/oW,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,UAAY40U,EAAU5oW,eAA6B,IAAPwD,GAAyBA,EAAGowB,OAC7J,MA6MJ,IACA+0U,GAAUhxU,UAAY,CAClBvmB,MAAOwmB,EAAAA,OACP5xB,MAAO4xB,EAAAA,OACP5wB,OAAQ4wB,EAAAA,OACRV,SAAUU,EAAAA,OACVtQ,IAAKsQ,EAAAA,OACLwL,gBAAiBxL,EAAAA,OACjBuL,eAAgBvL,EAAAA,OAChBkvN,UAAWlvN,EAAAA,OACXtrB,SAAUsrB,EAAAA,KACV/xB,SAAU+xB,EAAAA,KACVyK,kBAAmBzK,EAAAA,OACnB0K,SAAU1K,EAAAA,KACVzmB,SAAUymB,EAAAA,KACVrC,QAASqC,EAAAA,KACTnC,OAAQmC,EAAAA,KACRuN,OAAQvN,EAAAA,KACRniB,QAASmiB,EAAAA,KACT1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UACnD9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,OAAQ,aAEtD+wU,GAAUljU,YAAc,iBACxBkjU,GAAU3zU,aAAe,CACrB+tF,YAAa,EACbqjP,QAAQ,EACR4D,WAtTsB,EAuTtBC,YAtTuB,EAuTvBV,aAAa,EACb1jW,UAAU,EACVy8B,UAAU,EACVK,gBAAgB,EAChBxxB,SAAU,SAAUob,GAAK,OAAO0J,GAAAA,CAAM,EACtCV,QAAS,SAAUhJ,GAAK,OAAO0J,GAAAA,CAAM,EACrCR,OAAQ,SAAUlJ,GAAK,OAAO0J,GAAAA,CAAM,EACpCkP,OAAQ,SAAU5Y,GAAK,OAAO0J,GAAAA,CAAM,EACpCxgB,QAAS,SAAU8W,GAAK,OAAO0J,GAAAA,CAAM,EACrC/wB,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,wBEhYV0Q,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAMWizU,GAAkBpsW,EAAAA,YAAiB,SAAU2K,EAAOnK,GAC3D,IAAIqmB,EAAS7mB,EAAAA,OAAa,MACtB80B,EAAU90B,EAAAA,OAAa,MAG3B,OAFAA,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CAAEiO,QAASA,EAAQh0B,QAAY,IACvFd,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IAC5Dd,EAAAA,cAAoB,OAAQshB,GAAS,CAAC,EAAG3W,EAAO,CAAErK,WAAWu7B,EAAAA,EAAAA,GAAW,gBAAiBlxB,EAAMrK,aAC3G,IACA8rW,GAAgB7lU,YAAc,2CCvB1BjlB,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAMWkzU,GAAiBrsW,EAAAA,YAAiB,SAAU2K,EAAOnK,GAC1D,IAAIqmB,EAAS7mB,EAAAA,OAAa,MACtB80B,EAAU90B,EAAAA,OAAa,MAG3B,OAFAA,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CAAEiO,QAASA,EAAQh0B,QAAY,IACvFd,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IAC5Dd,EAAAA,cAAoB,OAAQshB,GAAS,CAAC,EAAG3W,EAAO,CAAErK,WAAWu7B,EAAAA,EAAAA,GAAW,oBAAqBlxB,EAAMrK,aAC/G,IACA+rW,GAAe9lU,YAAc,2BCvB7B,IAAIjlB,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAMWmzU,GAActsW,EAAAA,YAAiB,SAAU2K,EAAOnK,GACvD,IAAIqmB,EAAS7mB,EAAAA,OAAa,MACtB80B,EAAU90B,EAAAA,OAAa,MAG3B,OAFAA,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CAAEiO,QAASA,EAAQh0B,QAAY,IACvFd,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IAC5Dd,EAAAA,cAAoB,OAAQshB,GAAS,CAAC,EAAG3W,EAAO,CAAErK,WAAWu7B,EAAAA,EAAAA,GAAW,iBAAkBlxB,EAAMrK,aAC5G,IACAgsW,GAAY/lU,YAAc,uCCvBtBjlB,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAMWozU,GAAsBvsW,EAAAA,YAAiB,SAAU2K,EAAOnK,GAC/D,OAAOR,EAAAA,cAAoBszC,GAAAA,EAAUhyB,GAAS,CAAE9gB,IAAKA,GAAOmK,EAAO,CAAErK,WAAWu7B,EAAAA,EAAAA,GAAW,0BAA2BlxB,EAAMrK,aAChI,IACAisW,GAAoBhmU,YAAc,qGChBvBysT,uBACX,SAAWA,GACPA,EAAWA,EAAoB,QAAI,GAAK,UACxCA,EAAWA,EAAiB,KAAI,GAAK,OACrCA,EAAWA,EAAsB,UAAI,GAAK,WAC7C,CAJD,CAIGA,IAAeA,EAAa,CAAC,IAIhC,IAAIC,EAAwB,WACxB,SAASA,EAAO/gV,EAAO48J,EAAM7oK,QACZ,IAATA,IAAmBA,EAAO+sV,EAAWE,WACzCzmU,KAAKva,MAAQA,EACbua,KAAKqiJ,KAAOA,EACZriJ,KAAKxmB,KAAOA,CAChB,CAkBA,OAhBAgtV,EAAOtmU,UAAUjgB,IAAM,SAAU+0C,GAC7B,OAAO,IAAIwxS,EAAOxxS,EAAGh1B,KAAKva,OAAQua,KAAKqiJ,KAC3C,EAEAmkL,EAAOtmU,UAAUuwC,MAAQ,SAAUzb,GAC/B,OAAOA,EAAGh1B,KAAKva,MAAOua,KAAKqiJ,KAC/B,EACAmkL,EAAOtmU,UAAUwmU,KAAO,SAAUj6T,EAAG7L,GACjC,OAAO6L,EAAEzM,KAAKva,MAAOua,KAAKqiJ,KAC9B,EACAmkL,EAAOtmU,UAAUhc,OAAS,SAAUgwE,GAChC,OAAOl0D,KAAK/f,KAAI,SAAU2pR,EAAIhpQ,GAAK,OAAOszD,EAAEzjB,OAAM,SAAUy8B,EAAG7rE,GAAM,OAAOuoQ,EAAG1lR,OAAO,CAACgpF,GAAK,GAAI,GACpG,EACAs5P,EAAOtmU,UAAUg1B,SAAW,WACxB,MAAO,oBAAoBhxC,OAAO8b,KAAKva,MAAO,aAAavB,OAAO8b,KAAKqiJ,KAAM,MACjF,EACOmkL,CACX,CAzB4B,GCTxBG,EAAwB,WACxB,SAASA,EAAOn4S,EAAOo4S,QACL,IAAVp4S,IAAoBA,EAAQ,SAChB,IAAZo4S,IAAsBA,EAAU,IACpC5mU,KAAKwuB,MAAQA,EACbxuB,KAAK4mU,QAAUA,EACf5mU,KAAK6mU,YAAc,EACnB7mU,KAAK8mU,cAAgB,CACzB,CA2BA,OA1BAH,EAAOzmU,UAAUy5F,IAAM,WACnB,OAAO35F,KAAK6mU,aAAe7mU,KAAKwuB,MAAM3sC,MAC1C,EAEA8kV,EAAOzmU,UAAU2N,KAAO,WACpB,MAAO,CACH23B,KAAMxlC,KAAKwuB,MAAMxuB,KAAK6mU,eACtBD,QAAS5mU,KAAK4mU,QAAQ5mU,KAAK8mU,iBAEnC,EACAH,EAAOzmU,UAAU6mU,KAAO,WACpB,MAAO,CACHvhS,KAAMxlC,KAAKwuB,MAAMxuB,KAAK6mU,aACtBD,QAAS5mU,KAAK4mU,QAAQ5mU,KAAK8mU,eAEnC,EACAH,EAAOzmU,UAAU8mU,UAAY,WACzBhnU,KAAK6mU,aACT,EACAF,EAAOzmU,UAAU+mU,YAAc,WAC3BjnU,KAAK8mU,eACT,EACAH,EAAOzmU,UAAUwyI,IAAM,WACnB1yI,KAAK6mU,cACL7mU,KAAK8mU,eACT,EACOH,CACX,CApC4B,GCDxBnsS,EAAU,SAAU/0C,GAAS,OAAQA,GAAS,IAAIuD,MAAM,GAAK,EAK7Dk+U,EAAwB,WACxB,SAASA,EAAOrkS,GACZ7iC,KAAK6iC,MAAQA,CACjB,CAuBA,OAtBAqkS,EAAOhnU,UAAU0tM,IAAM,SAAUp/K,EAAOo4S,GAEpC,YADgB,IAAZA,IAAsBA,EAAU,IAChCp4S,aAAiBm4S,EACV3mU,KAAK6iC,MAAMrU,GAGXxuB,KAAK6iC,MAAM,IAAI8jS,EAAOnsS,EAAQhM,GAAQgM,EAAQosS,IAE7D,EAEAM,EAAOhnU,UAAUjgB,IAAM,SAAU8vB,GAC7B,IAAIrN,EAAQ1C,KACZ,OAAO,IAAIknU,GAAO,SAAUxtO,GAAU,OAAOh3F,EAAMmgC,MAAM62D,GAAQz5G,IAAI8vB,EAAI,GAC7E,EAEAm3T,EAAOhnU,UAAUuwC,MAAQ,SAAU1gC,GAC/B,IAAIrN,EAAQ1C,KACZ,OAAO,IAAIknU,GAAO,SAAUxtO,GAAU,OAAOh3F,EAAMmgC,MAAM62D,GAAQjpD,OAAM,SAAUy8B,EAAGzgE,GAAK,OAAOsD,EAAEm9D,GAAG0gI,IAAInhM,EAAI,GAAI,GACrH,EACAy6T,EAAOhnU,UAAUinU,UAAY,SAAUp6U,GACnC,OAAOiT,KAAK4tM,IAAI7gN,GAAGvT,OAAS+sV,EAAWa,OAC3C,EACOF,CACX,CA3B4B,GA8GjBvpS,EAAQ,SAAUi8B,EAAO29D,GAAW,OAAO,IAAI2vM,GAAO,SAAUxtO,GACvE,IAAIl0D,EAAOk0D,EAAO7rF,OAAO23B,KACrBq7C,EAAOjnB,EAAMp0B,GACjB,MArHmB,OAqHfA,GACAA,EAAOk0D,EAAO7rF,OAAO23B,KACd,IAAIghS,EAAOjvM,EAAQuqF,QAAQt8K,GAAOk0D,IAKtC,IAAI8sO,EAHN3lP,EAGa02C,EAAQ5pB,KAAK9sB,GAFT02C,EAAQuqF,QAAQt8K,GAEAk0D,EAC1C,GAAI,EAIO2tO,EAAU,SAAUn/T,GAAQ,OAAO,IAAIg/T,GAAO,SAAUxtO,GAC/D,IAAI4tO,EAASp/T,EAAKo/T,OAAQC,EAAoBr/T,EAAKq/T,kBAC/C/hS,EAAOk0D,EAAO7rF,OAAO23B,KACzB,OACW,IAAIghS,EADXhhS,IAAS8hS,EACSC,EAEJ/hS,EAFuBk0D,EAG7C,GAAI,EAIO8tO,EAAa,SAAUC,GAAmB,OAAO,IAAIP,GAAO,SAAUxtO,GAC7E,IAAIl0D,EAAOk0D,EAAO7rF,OAAO23B,KACzB,OACW,IAAIghS,EADXiB,EACkBjiS,EAEJ,GAFUk0D,EAGhC,GAAI,ECxIOguO,EAAW,SAAUt8T,GAAQ,OAAOA,EAAK3uB,QAAO,SAAU4wB,EAAKu1B,GAAU,OAJzDlH,EAI4EkH,EAALv1B,EAJvDojC,OAAM,SAAUm5N,GAAM,OAAOluO,EAAGz7C,KAAI,SAAUitF,GAAK,OAAO08L,EAAG1lR,OAAO,CAACgpF,GAAK,GAAI,IAA5G,IAAcxxC,CAIqF,IARzFj2C,EAQmG,GARnF,IAAIyhV,GAAO,SAAUxtO,GAAU,OAAO,IAAI8sO,EAAO/gV,EAAOi0G,EAAS,MAA3F,IAAUj0G,CAQyG,EAIrHkiV,EAAS,SAAU/kS,GAAU,OAAO,IAAIskS,GAAO,SAAUxtO,GAEhE,IADA,IAAIh9G,EAAS,IAAI8pV,EAAO,GAAI9sO,IACpBA,EAAOC,OACXj9G,EAASA,EAAOwH,OAAO0+C,EAAOgrK,IAAIl0G,IAEtC,OAAOh9G,CACX,GAAI,EClBAkrV,EAAgC,WAChC,SAASA,IACL5nU,KAAK45D,MAAQ,CAAC,EACd55D,KAAKsnU,OAAS,IACdtnU,KAAK2tG,KAAO,GACZ3tG,KAAKunU,kBAAoB,IACzBvnU,KAAKynU,iBAAkB,EACvBznU,KAAK6nU,WAAa,GAClB7nU,KAAK8nU,aAAe,GACpB9nU,KAAK+nU,UAAY,GACjB/nU,KAAKgoU,iBAAmB,EAC5B,CA2LA,OA1LAJ,EAAe1nU,UAAU+mI,OAAS,SAAUxvJ,GACxC,IAAII,EAAKJ,EAAGk2H,KAAMA,OAAc,IAAP91H,EAAgB,GAAKA,EAAIK,EAAKT,EAAG6vV,OAAQA,OAAgB,IAAPpvV,EAAgB,GAAKA,EAAIG,EAAKZ,EAAG8vV,kBAAmBA,OAA2B,IAAPlvV,EAAgB,IAAMA,EAAII,EAAKhB,EAAGmiF,MAAOA,OAAe,IAAPnhF,EAAgB,CAAC,EAAIA,EAAIE,EAAKlB,EAAGgwV,gBAAiBA,OAAyB,IAAP9uV,GAAwBA,EAChSqnB,KAAK2tG,KAAOA,EACZ3tG,KAAKsnU,OAASA,EACdtnU,KAAKunU,kBAAoBA,EACzBvnU,KAAK45D,MAAQA,EACb55D,KAAKynU,gBAAkBA,EACvBznU,KAAKioU,UACT,EACAL,EAAe1nU,UAAUgoU,gBAAkB,SAAUC,QAC7B,IAAhBA,IAA0BA,EAAc,IAC5C,IAAI1iV,EAAQ0iV,EAMZ,OALAT,EAAS1nU,KAAKgoU,kBACTp6H,IAAIu6H,GACJzB,MAAK,SAAU0B,GAChB3iV,EAAQ2iV,EAASxqS,KAAK,GAC1B,IACOn4C,CACX,EACAmiV,EAAe1nU,UAAUyiC,SAAW,SAAUwlS,QACtB,IAAhBA,IAA0BA,EAAc,IAC5C,IAAI1iV,EAAQ0iV,EACZ,OAAKnoU,KAAK+nU,UAAUlmV,QAGpB6lV,EAAS1nU,KAAK+nU,WACTn6H,IAAIu6H,GACJzB,MAAK,SAAU0B,GAChB3iV,EAAQ2iV,EAASxqS,KAAK,GAC1B,IACOn4C,GAPIA,CAQf,EAIAmiV,EAAe1nU,UAAUmoU,QAAU,SAAU1lS,QACxB,IAAbA,IAAuBA,EAAW,IACtC,IAAIl9C,EAAQk9C,EACZ,OAAK3iC,KAAK6nU,WAAWhmV,QAGrB6lV,EAAS1nU,KAAK6nU,YACTj6H,IAAIjrK,GACJ+jS,MAAK,SAAU4B,GAChB7iV,EAAQ6iV,EAAO1qS,KAAK,GACxB,IACOn4C,GAPIA,CAQf,EACAmiV,EAAe1nU,UAAUqoU,UAAY,SAAU/5S,EAAOo4S,EAAS4B,GAC3D,OAAIh6S,EAAM3sC,OAAS+kV,EAAQ/kV,OAChBme,KAAKyoU,YAAYj6S,EAAOo4S,EAAS4B,GAErCxoU,KAAK0oU,aAAal6S,EAAOo4S,EAAS4B,EAC7C,EACAZ,EAAe1nU,UAAUyoU,YAAc,SAAUC,EAAQ5+J,EAAUjnK,EAAOiE,GACtE,IAAIvhB,EAAQ,GACRq/G,EAAY99F,EACZ6hU,EAAe7+J,EAAShhL,MAAM,IAAI4F,MAAM,EAAGmU,GAC3C+lU,EAAc9+J,EAAShhL,MAAM,IAAI4F,MAAMoY,GAS3C,OARA0gU,EAAS1nU,KAAK6nU,WAAWj5U,MAAMmU,EAAOiE,IACjC4mM,IAAIg7H,GACJlC,MAAK,SAAU4B,GAChB7iV,EAAQojV,EACH3kV,OAAOokV,GACPpkV,OAAO4kV,GACPlrS,KAAK,GACd,IACO,CACHknE,UAAWA,EACXr/G,MAAOA,EAEf,EACAmiV,EAAe1nU,UAAUuoU,YAAc,SAAUj6S,EAAOo4S,EAAS4B,GAC7D,IAAI9lU,EAAQ1C,KACRva,EAAQ,GACRq/G,EAAY0jO,EACZO,EAAYv6S,EAAMxlC,MAAM,IAAI4F,MAAM45U,GAClC9wM,EAAUlpG,EAAMxlC,MAAM,IAAI4F,MAAM,EAAG45U,GAAY5qS,KAAK,IACpD7xB,EAAO/L,KAAK6nU,WAAWhmV,QAAU2sC,EAAM3sC,OAAS2mV,GAOpD,OANAd,EAAS1nU,KAAK6nU,WAAWj5U,MAAM,EAAGmd,IAC7B6hM,IAAIl2E,EAASkvM,GACbF,MAAK,SAAU4B,GAChBxjO,EAAYpiG,EAAMsmU,eAAeV,EAAQxjO,GACzCr/G,EAAQ6iV,EAAOpkV,OAAO6kV,GAAWnrS,KAAK,GAC1C,IACO,CACHknE,UAAWA,EACXr/G,MAAOA,EAEf,EACAmiV,EAAe1nU,UAAU8oU,eAAiB,SAAUx6S,EAAOs2E,GACvD,IAAImkO,EAAYz6S,EAAMs2E,GAEtB,OADgB9kG,KAAK6nU,WAAW/iO,GAAWqiO,UAAU8B,IACnCA,IAAcjpU,KAAKsnU,OAG9BxiO,EAFIA,EAAY,CAG3B,EACA8iO,EAAe1nU,UAAUwoU,aAAe,SAAUl6S,EAAOo4S,EAAS4B,GAC9D,IAAI9lU,EAAQ1C,KACRva,EAAQ,GACRq/G,EAAY0jO,EACZ9wM,EAAUlpG,EAAM5/B,MAAM,EAAG45U,GAY7B,OAXAd,EAAS1nU,KAAK8nU,cACTl6H,IAAIl2E,EAASkvM,GACbn2R,OAAM,SAAU23R,GACjBtjO,EAAYsjO,EAASxqS,KAAK,IAAI/7C,OAC9B,IAAIknV,EAAYnC,EAAQh4U,MAAMk2G,GAC9B,OAAO4iO,EAAShlU,EAAMmlU,YACjBj6H,IAAIw6H,EAASxqS,KAAK,IAAMmrS,EAAWnC,EAC5C,IACKF,MAAK,SAAU4B,GAChB7iV,EAAQ6iV,EAAO1qS,KAAK,GACxB,IACO,CACHknE,UAAWA,EACXr/G,MAAOA,EAEf,EACA9C,OAAO6nB,eAAeo9T,EAAe1nU,UAAW,mBAAoB,CAChEuK,IAAK,WACD,IAAe68T,EAANtnU,KAAkBsnU,OAAQC,EAA1BvnU,KAAiDunU,kBAC1D,MAAO,CACHzlH,QAAS,SAAUjhI,GAAQ,OF7EZqoP,EE6E2BroP,EF7EV,IAAIqmP,GAAO,SAAUxtO,GAGjE,OADWA,EAAOqtO,OAAOvhS,OACZ0jS,GACTxvO,EAAOg5C,MACA,IAAI8zL,EAAO0C,EAAQxvO,EAAQ6sO,EAAWa,UAY1C,IAAIZ,EAAO0C,EAAQxvO,EAAQ6sO,EAAWa,QACjD,IAlBqB,IAAU8B,CE6EkC,EACjDv7N,KAAM,SAAU9sB,GAAQ,OFtGZ34E,EEsG8B,CAAEo/T,OAAQA,EAAQC,kBAAmBA,GFtGpD,SAAU1mP,GAAQ,OAAO,IAAIqmP,GAAO,SAAUxtO,GAErF,IADA,IAAI4tO,EAASp/T,EAAKo/T,OAAQC,EAAoBr/T,EAAKq/T,mBAC3C7tO,EAAOC,OAAO,CAClB,IAAIliH,EAAKiiH,EAAOqtO,OAAQvhS,EAAO/tD,EAAG+tD,KAAMohS,EAAUnvV,EAAGmvV,QACrD,GAAIphS,IAASohS,GAAWA,IAAYU,EAEhC,OADA5tO,EAAOg5C,MACA,IAAI8zL,EAAOc,EAAQ5tO,EAAQ6sO,EAAWj3E,MAEjD,GAAIzuK,EAAKpzE,KAAK+3B,GAEV,OADAk0D,EAAOg5C,MACA,IAAI8zL,EAAOhhS,EAAMk0D,EAAQ6sO,EAAWj3E,MAE/C,GAAI9pN,IAAS+hS,EAET,OADA7tO,EAAOg5C,MACA,IAAI8zL,EAAOc,EAAQ5tO,EAAQ6sO,EAAWj3E,MAEjD51J,EAAOstO,WACX,CAEA,OADAttO,EAAOg5C,MACA,IAAI8zL,EAAOc,EAAQ5tO,EAAQ6sO,EAAWj3E,KACjD,GAAI,GEkFgHzuK,GFtGlG,IAAU34E,CEsG+F,EAEnH,EACAwC,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo9T,EAAe1nU,UAAW,qBAAsB,CAClEuK,IAAK,WACD,IAAI/H,EAAQ1C,KACZ,MAAO,CACH8hN,QAAS,SAAUjhI,GAAQ,OF/CVqoP,EE+C2BroP,EF/CV,IAAIqmP,GAAO,SAAUxtO,GACnE,OAAIA,EAAOC,MACA,IAAI6sO,EAAO,GAAI9sO,IAEfA,EAAOqtO,OAAOvhS,OACZ0jS,GACTxvO,EAAOg5C,MAEJ,IAAI8zL,EAAO0C,EAAQxvO,GAC9B,IATuB,IAAUwvO,CE+CkC,EACnDv7N,KAAM,SAAU9sB,GAAQ,OFnEVymP,EEmEwB5kU,EAAM4kU,OFnEb,SAAUzmP,GAAQ,OAAO,IAAIqmP,GAAO,SAAUxtO,GACzF,MAAQA,EAAOC,OAAO,CAClB,IAAIliH,EAAKiiH,EAAOqtO,OAAQvhS,EAAO/tD,EAAG+tD,KAAMohS,EAAUnvV,EAAGmvV,QACrD,GAAIphS,IAAS8hS,GAAUV,IAAYU,EAE/B,OADA5tO,EAAOg5C,MACA,IAAI8zL,EAAOhhS,EAAMk0D,GAE5B,GAAI7Y,EAAKpzE,KAAK+3B,GAEV,OADAk0D,EAAOg5C,MACA,IAAI8zL,EAAOhhS,EAAMk0D,GAE5BA,EAAOstO,WACX,CAEA,OADAttO,EAAOg5C,MACA,IAAI8zL,EAAO,GAAI9sO,EAC1B,GAAI,GEoDgE7Y,GFnEhD,IAAUymP,CEmE6C,EAEnE,EACA58T,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo9T,EAAe1nU,UAAW,kBAAmB,CAC/DuK,IAAK,WACD,IAAIhzB,EAAKuoB,KAAMsnU,EAAS7vV,EAAG6vV,OAAQC,EAAoB9vV,EAAG8vV,kBAAmBE,EAAkBhwV,EAAGgwV,gBAClG,MAAO,CACH3lH,QAAS,SAAUlhN,GAAK,OAAO4mU,EAAWC,EAAkB,EAC5D95N,KAAM,SAAU/sG,GAAK,OAAOymU,EAAQ,CAAEC,OAAQA,EAAQC,kBAAmBA,GAAsB,EAEvG,EACA78T,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo9T,EAAe1nU,UAAW,yBAA0B,CACtEuK,IAAK,WACD,IAAI68T,EAAStnU,KAAKsnU,OAClB,MAAO,CACHxlH,QAAS,SAAUlhN,GAAK,OAAO4mU,GAAW,EAAQ,EAClD75N,KAAM,SAAU/sG,GAAK,OAAOymU,EAAQ,CAAEC,OAAQA,EAAQC,kBAAmB,IAAO,EAExF,EACA78T,YAAY,EACZC,cAAc,IAElBi9T,EAAe1nU,UAAU+nU,SAAW,WAChC,IAAIvlU,EAAQ1C,KACZ2nU,EAAOhqS,EAAM39B,KAAK45D,MAAO55D,KAAKopU,mBACzBx7H,IAAI5tM,KAAK2tG,MACT+4N,MAAK,SAAU5hS,EAAQlkC,GACxB8B,EAAMmlU,WAAa/iS,CACvB,IACA6iS,EAAOhqS,EAAM39B,KAAK45D,MAAO55D,KAAKqpU,qBACzBz7H,IAAI5tM,KAAK2tG,MACT+4N,MAAK,SAAU5hS,EAAQlkC,GACxB8B,EAAMolU,aAAehjS,CACzB,IACA6iS,EAAOhqS,EAAM39B,KAAK45D,MAAO55D,KAAKspU,kBACzB17H,IAAI5tM,KAAK2tG,MACT+4N,MAAK,SAAU5hS,EAAQlkC,GACxB8B,EAAMqlU,UAAYjjS,CACtB,IACA6iS,EAAOhqS,EAAM39B,KAAK45D,MAAO55D,KAAKupU,yBACzB37H,IAAI5tM,KAAK2tG,MACT+4N,MAAK,SAAU5hS,EAAQlkC,GACxB8B,EAAMslU,iBAAmBljS,CAC7B,GACJ,EACO8iS,CACX,CAvMoC,qGCLhC3hU,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAUIqzU,EAA6C,SAAUv4U,GAEvD,SAASu4U,EAA4B7hW,GACjC,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAmFxC,OA/EA0C,EAAM3vB,MAAQ,CAAC,EACf2vB,EAAMwvP,SAAW,KAAKhuQ,QAAOiwB,EAAAA,EAAAA,MAC7BzR,EAAMs9U,SAAW,IAAIpY,EACrBllU,EAAMu9U,WAAY,EAClBv9U,EAAMw9U,WAAa,CAAC,KAAM,MAC1Bx9U,EAAM0rB,OAAS,KAIf1rB,EAAMuF,MAAQ,WACNvF,EAAM0rB,QACN1rB,EAAM0rB,OAAOnmB,OAErB,EACAvF,EAAMy9U,aAAe,SAAUjsW,GAC3B,IAAIuD,EAAKvD,EAAMkmB,OAAQ04P,EAAiBr7Q,EAAGq7Q,eAAgBiC,EAAet9Q,EAAGs9Q,aACzEA,IAAiBjC,IAGrBpwP,EAAMu9U,WAAY,EAClBv9U,EAAMw9U,WAAa,CAACptF,GAAkB,EAAGiC,GAAgB,GAC7D,EACAryP,EAAMqhQ,gBAAkB,SAAU7vR,GAC9B,IAAIs6C,EAAQt6C,EAAM4sQ,cACdr7P,EAAQ+oC,EAAM/oC,MACdsd,EAAQL,EAAMw9U,WAAW,IAAM,EAC/Bl5U,EAAMtE,EAAMw9U,WAAW,IAAM,EACjC,IAAKx9U,EAAMxkB,MAAMyvH,KAIb,OAHAjrG,EAAMu9U,WAAY,EAClBv9U,EAAMw9U,WAAa,CAAC,KAAM,WAC1Bx9U,EAAM6gQ,gBAAgB99Q,EAAOvR,GAGjC,IACIwI,EADAyrV,EAAczlU,EAAMjd,MAExB,GAAIid,EAAMu9U,UAAW,CACjBv9U,EAAMu9U,WAAY,EAClB,IAAIG,EAAYjY,EAAYtmV,OAASmlB,EACjCm3C,EAAK14D,EAAM5D,OAASu+V,EACxB1jW,EAASgmB,EAAMs9U,SAASrX,YAAYljV,EAAMmJ,MAAMmU,EAAOo7C,GAAKgqR,EAAaplU,EAAOiE,EACpF,MAEItqB,EAASgmB,EAAMs9U,SAASzX,UAAU9iV,EAAO0iV,EAAa35S,EAAMskO,gBAAkB,GAElFpwP,EAAMw9U,WAAa,CAACxjW,EAAOooH,UAAWpoH,EAAOooH,WAC7CpiG,EAAM6gQ,gBAAgB7mR,EAAO+I,MAAOvR,EACxC,EACAwuB,EAAM29U,aAAe,SAAUnsW,GACtBwuB,EAAM3vB,MAAM8iC,UACbnT,EAAM6L,SAAS,CAAEsH,SAAS,IACtBnT,EAAMxkB,MAAM0rB,SACZlH,EAAMxkB,MAAM0rB,QAAQnD,UAAKvzB,EAAW,CAChCknB,OAAQsI,EACR0P,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,cAInC,EACAzP,EAAM49U,YAAc,SAAUpsW,GACtBwuB,EAAM3vB,MAAM8iC,UACZnT,EAAM6L,SAAS,CAAEsH,SAAS,IACtBnT,EAAMxkB,MAAM4rB,QACZpH,EAAMxkB,MAAM4rB,OAAOrD,UAAKvzB,EAAW,CAC/BknB,OAAQsI,EACR0P,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,cAInC,EACAzP,EAAM0vP,YAAc,WACZ1vP,EAAM2F,SACN3F,EAAM2F,QAAQgqP,kBAAkB3vP,EAAMmV,SAASjB,MACzC,GACAlU,EAAMxkB,MAAMw4B,mBAAqB,GAE/C,GACAR,EAAAA,EAAAA,GAAgBC,EAAAA,GACTzT,CACX,CAqSA,OA3XAuD,EAAU85U,EAA6Bv4U,GAuFvC7kB,OAAO6nB,eAAeu1U,EAA4B7/U,UAAW,UAAW,CAgCpEuK,IAAK,WACD,OAAOzK,KAAKouB,MAChB,EACA1jB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeu1U,EAA4B7/U,UAAW,QAAS,CAIlEuK,IAAK,WACD,YAAkCv3B,IAA9B8sB,KAAK8jQ,qBACE9jQ,KAAK8jQ,0BAEc5wR,IAArB8sB,KAAK9hB,MAAMuH,MACTua,KAAK9hB,MAAMuH,WAEQvS,IAArB8sB,KAAKjtB,MAAM0S,MACTua,KAAKjtB,MAAM0S,WAEevS,IAA5B8sB,KAAK9hB,MAAM3H,aACTypB,KAAK9hB,MAAM3H,aAEf,EACX,EACAm0B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeu1U,EAA4B7/U,UAAW,WAAY,CAIrEuK,IAAK,WACD,OAAOzK,KAAKggV,SAASr9S,SAAS3iC,KAAKva,MACvC,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeu1U,EAA4B7/U,UAAW,WAAY,CAIrEuK,IAAK,WACD,IAAI09T,EAAcnoU,KAAKva,MACnBA,EAAQua,KAAKggV,SAAS9X,gBAAgBC,GAK1C,MAAO,CACH1xT,iBAL+CvjC,IAAjC8sB,KAAK9hB,MAAMw4B,kBAMzBE,WAL8B1jC,IAArB8sB,KAAK9hB,MAAM04B,MACpB5W,KAAK9hB,MAAM04B,QAAW5W,KAAK2W,YAAclxB,MACvCua,KAAK9hB,MAAMqiW,iBAAmBvgV,KAAK9hB,MAAMopV,SAAsD,IAA5Ca,EAAYltT,QAAQjb,KAAK9hB,MAAMopV,SAIpFvwT,cAAetxB,EAEvB,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeu1U,EAA4B7/U,UAAW,iBAAkB,CAI3EuK,IAAK,WACD,YAAqCv3B,IAA9B8sB,KAAK9hB,MAAM84B,eACZhX,KAAK9hB,MAAM84B,eACX+oU,EAA4B12U,aAAa2N,cACnD,EACAtM,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeu1U,EAA4B7/U,UAAW,WAAY,CAIrEuK,IAAK,WACD,YAA+Bv3B,IAAxB8sB,KAAK9hB,MAAMy4B,SACZ3W,KAAK9hB,MAAMy4B,SACXopU,EAA4B12U,aAAasN,QACnD,EACAjM,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeu1U,EAA4B7/U,UAAW,OAAQ,CAIjEuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMpI,IACtB,EACA40B,YAAY,EACZC,cAAc,IAKlBo1U,EAA4B7/U,UAAU8K,mBAAqB,SAAUukB,EAAWw2J,GAC5E,GAAI/lL,KAAKqI,SAAWrI,KAAKjtB,MAAM8iC,SAAWkwK,EAAUlwK,QAAS,CACzD,IAAIp+B,EAAKuoB,KAAKkgV,WAAYn9U,EAAQtrB,EAAG,GAAIuvB,EAAMvvB,EAAG,GAC9C+oW,EAAgBjxT,EAAUu1E,UAC1B27O,EAAgBzgV,KAAK9hB,MAAM4mH,YACzB07O,GAAiBC,GAClBD,GAAiBC,IACbD,EAAcz9U,QAAU09U,EAAc19U,OAASy9U,EAAcx5U,MAAQy5U,EAAcz5U,QACxFjE,EAAQ09U,EAAc19U,MACtBiE,EAAMy5U,EAAcz5U,KAEV,OAAVjE,GAA0B,OAARiE,GAClBhH,KAAKqI,QAAQ4sP,kBAAkBlyP,EAAOiE,EAE9C,EACI05U,EAAAA,EAAAA,IAAenxT,EAAWvvB,KAAK9hB,QAC/B8hB,KAAK2gV,gBAET3gV,KAAKoyP,aACT,EAIA2tF,EAA4B7/U,UAAU4K,kBAAoB,WACtD9K,KAAK2gV,gBACL3gV,KAAKoyP,aACT,EAIA2tF,EAA4B7/U,UAAUnrB,OAAS,WAC3C,IAAI0C,EACAirB,EAAQ1C,KACRnoB,EAAKmoB,KAAK9hB,MAAOhG,EAAKL,EAAG0B,KAAMA,OAAc,IAAPrB,EAAgB6nW,EAA4B12U,aAAa9vB,KAAOrB,EAAIG,EAAKR,EAAGsM,SAAUA,OAAkB,IAAP9L,EAAgB0nW,EAA4B12U,aAAallB,SAAW9L,EAAII,EAAKZ,EAAGy/B,QAASA,OAAiB,IAAP7+B,EAAgBsnW,EAA4B12U,aAAaiO,QAAU7+B,EAC7S07Q,EAAUn0P,KAAK9hB,MAAM9K,IAAM4sB,KAAKkyP,SAChC/9Q,GAAW6rB,KAAKgX,gBAAkBhX,KAAK6X,SAASjB,MAChDljC,EAAQssB,KAAK9hB,MAAMxK,OAAS,CAAC,EAC7BiF,EAAKqnB,KAAK9hB,MAAOmB,EAAK1G,EAAGu2F,OAAQA,OAAgB,IAAP7vF,EAAgB0gW,EAA4B12U,aAAa6lE,OAAS7vF,EAAI4U,EAAKtb,EAAGq4Q,OAAQA,OAAgB,IAAP/8P,EAAgB8rV,EAA4B12U,aAAa2nP,OAAS/8P,EAC3M2sV,GAAS16G,EAAAA,EAAAA,GAAmBh3J,GAAQ,GACpC2xQ,GAAS36G,EAAAA,EAAAA,GAAmB8qB,GAAQ,GACpCj7Q,EAAaxC,EAAAA,cAAoB,OAAQ,CAAEooB,IAAKqE,KAAK9hB,MAAMyd,IAAK9nB,WAAWu7B,EAAAA,EAAAA,GAAW,2BAA4B33B,EAAK,CAAC,EACpHA,EAAG,WAAWyM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EAC9D9B,EAAG,WAAWyM,OAAOC,IAAaA,EAClC1M,EAAG,aAAayM,OAAOk0B,EAAAA,EAAeE,WAAWhB,IAAYA,IAAYA,EACzE7/B,EAAG,cAAgBtD,EACnBsD,EAAG,cAAgBuoB,KAAK2W,SACxBl/B,EAAG,cAAgBuoB,KAAK9hB,MAAMhE,SAC9BzC,GAAKuoB,KAAK9hB,MAAMrK,WAAYH,MAAQssB,KAAK9hB,MAAMrI,MACEnC,EAA/CmhB,EAAS,CAAExa,MAAO2lB,KAAK9hB,MAAM7D,OAAS3G,IAC5CH,EAAAA,cAAoBqtW,EAAQ,MAC5BrtW,EAAAA,cAAoB,QAAS,CAAEiG,KAAM,OAAQs1C,aAAc,MAAOylO,YAAa,MAAOusF,eAAgB,MAAOxsF,YAAY,EAAOzgR,UAAW,gBAAiB4R,MAAOua,KAAKva,MAAOrS,GAAI+gR,EAAS,kBAAmBn0P,KAAK9hB,MAAMs5B,eAAgB,mBAAoBxX,KAAK9hB,MAAMu5B,gBAAiB,mBAAoBzX,KAAK9hB,MAAMyvH,KAAM73H,KAAMkqB,KAAK9hB,MAAMpI,KAAMy1B,UAAUkvC,EAAAA,EAAAA,GAAYz6C,KAAK9hB,MAAMqtB,SAAUvL,KAAK9hB,MAAMhE,UAAU,GAAOukP,UAAWz+N,KAAK9hB,MAAMugP,UAAWz+O,MAAOggB,KAAK9hB,MAAM8B,MAAO9F,SAAU8lB,KAAK9hB,MAAMhE,eAAYhH,EAAWyN,SAAUqf,KAAK9hB,MAAMw6B,eAAYxlC,EAAWqK,YAAayiB,KAAK9hB,MAAMX,YAAaxJ,IAAK,SAAUy6C,GAAS,OAAO9rB,EAAM0rB,OAASI,CAAO,EAAGhpC,SAAUwa,KAAK+jQ,gBAAiBrP,QAAS10P,KAAKmgV,aAAcv2U,QAAS5J,KAAKqgV,aAAcv2U,OAAQ9J,KAAKsgV,YAAa78G,YAAas9G,EAAAA,GAAajvT,OAAQivT,EAAAA,KAChyBxtW,EAAAA,cAAoBstW,EAAQ,OAChC,OAAO7gV,KAAK9hB,MAAMrI,MACXtC,EAAAA,cAAoBkqE,EAAAA,EAAe,CAAE5nE,MAAOmqB,KAAK9hB,MAAMrI,MAAOwjC,SAAU86O,EAASz2M,YAAa19C,KAAKva,MAAO6zB,YAAanlC,EAASolC,eAAgBvZ,KAAK9hB,MAAMhE,SAAUqlS,kBAAmBv/Q,KAAK9hB,MAAMX,YAAa9J,SAAUsC,EAAWrC,MAAO,CAAE2G,MAAO2lB,KAAK9hB,MAAM7D,OAASshB,IAAKqE,KAAK9hB,MAAMyd,MAC1R5lB,CACV,EACAgqW,EAA4B7/U,UAAUqjQ,gBAAkB,SAAU4kE,EAAaj0V,GAI3E,GAHA8rB,KAAKuO,SAAS,CACV9oB,MAAO0iV,IAEPnoU,KAAK9hB,MAAMsH,SAAU,CACrBwa,KAAK8jQ,qBAAuBqkE,EAC5B,IAAI3jI,EAAK,CACLpyL,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB2gP,eAAgB9yP,KAAKkgV,WAAW,GAChCnrF,aAAc/0P,KAAKkgV,WAAW,GAC9B9lV,OAAQ4F,KACRva,MAAOua,KAAKva,OAEhBua,KAAK9hB,MAAMsH,SAASihB,UAAKvzB,EAAWsxN,GACpCxkM,KAAK8jQ,0BAAuB5wR,CAChC,CACJ,EACA6sW,EAA4B7/U,UAAUygV,cAAgB,SAAUx6O,GAC5D,IAAIzpE,EAAS/5C,OAAO2mB,OAAO,CACvBm+T,gBAAiBznU,KAAK9hB,MAAMupV,gBAC5B95N,KAAM3tG,KAAK9hB,MAAMyvH,KACjB25N,OAAQtnU,KAAK9hB,MAAMopV,OACnBC,kBAAmBvnU,KAAK9hB,MAAMqpV,kBAC9B3tQ,MAAO55D,KAAK45D,OACbusC,GACHnmG,KAAKggV,SAAS/4M,OAAOvqG,EACzB,EACA/5C,OAAO6nB,eAAeu1U,EAA4B7/U,UAAW,QAAS,CAClEuK,IAAK,WACD,OAAO9nB,OAAO2mB,OAAO,CAAC,EAAG03U,EAAAA,GAAchhV,KAAK9hB,MAAM07E,MACtD,EACAlvD,YAAY,EACZC,cAAc,IAElBo1U,EAA4BjmU,YAAc,gBAI1CimU,EAA4B/zU,UAAY,CACpCvmB,MAAOwmB,EAAAA,OACP11B,aAAc01B,EAAAA,OACd1uB,YAAa0uB,EAAAA,OACbjsB,MAAOisB,EAAAA,OACPtQ,IAAKsQ,EAAAA,OACL74B,GAAI64B,EAAAA,OACJv4B,MAAOu4B,EAAAA,OACPp4B,UAAWo4B,EAAAA,OACXijE,OAAQjjE,EAAAA,IACR+kP,OAAQ/kP,EAAAA,IACRuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjB5xB,MAAO4xB,EAAAA,UAAoB,CACvBA,EAAAA,OACAA,EAAAA,SAEJV,SAAUU,EAAAA,OACVwyN,UAAWxyN,EAAAA,OACX/xB,SAAU+xB,EAAAA,KACVyM,SAAUzM,EAAAA,KACVq7T,OAAQr7T,EAAAA,OACRs7T,kBAAmBt7T,EAAAA,OACnBw7T,gBAAiBx7T,EAAAA,KACjBs0U,eAAgBt0U,EAAAA,KAChB0hG,KAAM1hG,EAAAA,OACN2tD,MAAO,SAAU17E,EAAOguB,EAAUC,GAC9B,IAAIytD,EAAQ17E,EAAM07E,MAClB,QAAc1mF,IAAV0mF,IACYj3E,OAAO82B,QAAQmgD,GACtBh7B,MAAK,SAAUllD,GAAK,MAAoB,kBAANA,KAAoBkgF,EAAMlgF,aAAckzB,OAAS,IAEpF,OAAO,IAAIP,MAAM,iBAAmBH,EAAnB,kBACNC,EAAgB,yBAGnC,OAAO,IACX,EACA24F,UAAW74F,EAAAA,MAAgB,CACvBlJ,MAAOkJ,EAAAA,OAAiBoY,WACxBrd,IAAKiF,EAAAA,OAAiBoY,aAE1BvuC,KAAMm2B,EAAAA,OACNp2B,MAAOo2B,EAAAA,OACPyK,kBAAmBzK,EAAAA,OACnB0K,SAAU1K,EAAAA,KACV2K,MAAO3K,EAAAA,KACP+K,eAAgB/K,EAAAA,KAChBzmB,SAAUymB,EAAAA,KACV1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5D9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,OAAQ,aAKtD8zU,EAA4B12U,aAAe,CACvCi+T,OAAQ,IACRC,kBAAmB,IACnBE,iBAAiB,EACjB8Y,gBAAgB,EAChB3mR,MAAOonR,EAAAA,GACPrqU,UAAU,EACVK,gBAAgB,EAChBk4D,OAAQ,SAAUtuE,GAAK,OAAO,IAAM,EACpCowP,OAAQ,SAAUpwP,GAAK,OAAO,IAAM,EACpCrnB,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,SAEP47V,CACX,CA7XiD,CA6X/CxsW,EAAAA,WAQS0tW,GAA4B3mU,EAAAA,EAAAA,KAQ5B0hC,GAAgBxhC,EAAAA,EAAAA,GAAiBymU,EAA2BlB,GACvE/jS,EAAcliC,YAAc,2FC9a5B,IAAIknU,EAAe,CACf,IAAK,aACL,IAAK,OACL,EAAK,OACL,EAAK,SACL,IAAK,aACL,EAAK,cACL,EAAK,IACL,EAAK,WACL,EAAK,iBAKLD,EAAc,WAAc,OAAO,CAAO,EAI1CL,EAAiB,SAAU5yU,EAAMD,GACjC,OAAOC,EAAK25T,kBAAoB55T,EAAK45T,iBACjC35T,EAAK6/F,OAAS9/F,EAAK8/F,MACnB7/F,EAAKw5T,SAAWz5T,EAAKy5T,QACrBx5T,EAAKy5T,oBAAsB15T,EAAK05T,oBAC/B2Z,EAAUpzU,EAAK8rD,MAAO/rD,EAAK+rD,MACpC,EAIIsnR,EAAY,SAAUC,EAAQC,GAC9B,KAAMD,MAAaC,EACf,OAAO,EAEX,GAAID,IAAWC,IAAYD,IAAWC,EAClC,OAAO,EAEX,IAAI74M,GAAO,EACX,IAAK,IAAIj9H,KAAO61U,EACZ,GAAIA,EAAO71U,KAAS81U,EAAO91U,GAAM,CAC7Bi9H,GAAO,EACP,KACJ,CAEJ,GAAIA,EACA,IAAK,IAAIj9H,KAAO81U,EACZ,IAAKD,EAAO36U,eAAe8E,GAAM,CAC7Bi9H,GAAO,EACP,KACJ,CAGR,OAAOA,CACX,+BCtDA,IAAI9wJ,2SAIG,IAAI4pW,EAAuB,2BAIvBC,EAAuB,2BAIvBC,EAAsB,mBAItBC,EAAsB,mBAItBC,EAAkB,mBAIlB1kB,EAAiB,kBAIjBI,EAAiB,kBAIjBE,EAAiB,kBAIjBE,EAAiB,kBAIjBP,EAAmB,oBAInB/F,EAA6B,8BAI7BE,EAAuB,qCAIvBE,EAAwB,sCAIxBE,EAAoB,kCAIpBE,EAAoB,kCAIpBsE,EAA8B,+BAI9BC,EAAgC,iCAIhCyB,EAAkC,mCAIlC4I,EAA2B,4BAI3BC,EAA0B,2BAI1BP,EAAkC,mCAIlCE,EAAiC,kCAIjCE,EAA0B,2BAI1B9P,EAAqB,sBAIrBE,EAAuB,wBAQvBmrB,EAAmB,oBAInB9f,EAAqC,sCAIrC+f,EAAkB,mBAIlBvD,EAAiB,kBAIjBJ,EAAoB,qBAIpBE,EAAoB,qBAIpBxuU,IAAYj4B,EAAK,CAAC,GACtB4pW,GAAwB,iBAC3B5pW,EAAG6pW,GAAwB,iBAC3B7pW,EAAG8pW,GAAuB,WAC1B9pW,EAAG+pW,GAAuB,WAC1B/pW,EAAGgqW,GAAmB,OACtBhqW,EAAGslV,GAAkB,IACrBtlV,EAAG0lV,GAAkB,IACrB1lV,EAAG4lV,GAAkB,IACrB5lV,EAAG8lV,GAAkB,IACrB9lV,EAAGulV,GAAoB,MACvBvlV,EAAGw/U,GAA8B,iBACjCx/U,EAAG0/U,GAAwB,KAC3B1/U,EAAG4/U,GAAyB,MAC5B5/U,EAAG8/U,GAAqB,OACxB9/U,EAAGggV,GAAqB,OACxBhgV,EAAGskV,GAA+B,aAClCtkV,EAAGukV,GAAiC,eACpCvkV,EAAGgmV,GAAmC,8BACtChmV,EAAG4uV,GAA4B,SAC/B5uV,EAAG6uV,GAA2B,QAC9B7uV,EAAGsuV,GAAmC,sBACtCtuV,EAAGwuV,GAAkC,qBACrCxuV,EAAG0uV,GAA2B,oBAC9B1uV,EAAG4+U,GAAsB,gDACzB5+U,EAAG8+U,GAAwB,aAC3B9+U,EAtD+B,0BAsDH,+CAC5BA,EAAGiqW,GAAoB,yCACvBjqW,EAAGmqV,GAAsC,SACzCnqV,EAAGkqW,GAAmB,SACtBlqW,EAAG2mW,GAAkB,QACrB3mW,EAAGumW,GAAqB,WACxBvmW,EAAGymW,GAAqB,WACxBzmW,kQCrKAod,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAmBWk1U,GAA6BtnU,EAAAA,EAAAA,KAI7BmhC,EAAiBloE,EAAAA,YAAiB,SAAU08R,EAAa71Q,GAChE,IAAI3iB,GACJy+B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAIj4B,GAAQ8nP,EAAAA,EAAAA,GAAgB47G,EAA4B3xE,GACpDwN,EAAelqS,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IAC7DggP,EAAUj2Q,EAAM9K,IAAMqqS,EACtB0xB,GAAciZ,EAAAA,EAAAA,KACd/4S,GAAsBwvP,EAAAA,EAAAA,KACtBhqC,EAAathP,EAAAA,OAAa,MAC1BsuW,EAAuBtuW,EAAAA,SACvBsE,EAAKtE,EAAAA,UAAe,GAAQw3B,EAAclzB,EAAG,GAAIiqW,EAAiBjqW,EAAG,GACrEkqW,EAAWxuW,EAAAA,QAAayuW,EAAAA,EAAAA,OACxBC,EAAa1uW,EAAAA,QAAa,GAC1B2uW,EAAoB3uW,EAAAA,SACpB4uW,EAAgB5uW,EAAAA,OAAa2K,EAAM3H,cACnC6rW,GAAaC,EAAAA,EAAAA,IAAYN,EAAS1tW,QAAQwhC,UAAY33B,EAAMhE,SAC5D6nW,EAAS1tW,QAAQiuW,mBACjBC,EAAAA,EAAAA,IAAqBrkW,EAAMuH,MAAO08V,EAAc9tW,SAAU6J,EAAM2E,OAAQssT,GAC5E+yC,EAAkB7tW,QAAU+tW,EAC5B,IAAIxB,GAAS16G,EAAAA,EAAAA,GAAmBhoP,EAAMgxF,QAAQ,GAC1C2xQ,GAAS36G,EAAAA,EAAAA,GAAmBhoP,EAAM8yQ,QAAQ,GAC9Cz9Q,EAAAA,WAAgB,WACRshP,EAAWxgP,SAAWwgP,EAAWxgP,QAAQg+Q,mBACzCx9B,EAAWxgP,QAAQg+Q,kBAAkB6sF,IAAiBtoU,MAChD,GACA14B,EAAMw4B,mBApCC,8BAsCrB,IACA,IAAIipN,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACCriB,EAAcrS,EAAAA,aAAkB,WAChC,YAAqCL,IAAjC2uW,EAAqBxtW,QACdwtW,EAAqBxtW,SAGrBkuW,EAAAA,EAAAA,IAAqBrkW,EAAMuH,MAAO08V,EAAc9tW,QAE/D,GAAG,CAAC6J,EAAMuH,QACNu5V,EAAazrW,EAAAA,aAAkB,WAC/B,OAAO2K,EAAMpI,IACjB,GAAG,CAACoI,EAAMpI,OACNmpW,EAAiB1rW,EAAAA,aAAkB,WACnC,OAAO2K,EAAMy4B,QACjB,GAAG,CAACz4B,EAAMy4B,WACNuoU,EAAiB3rW,EAAAA,aAAkB,WACnC,IAAIkjC,OAA0CvjC,IAA5BgL,EAAMw4B,kBACpBrc,EAAezU,IAKnB,MAAO,CACH6wB,YAAaA,EACbG,WANwB1jC,IAAhBgL,EAAM04B,MACd14B,EAAM04B,OACLmrU,EAAS1tW,QAAQmuW,qBACZvD,KAAsC,OAAjB5kV,QAA0CnnB,IAAjBmnB,GAIpD0c,aAA+B,OAAjB1c,QAA0CnnB,IAAjBmnB,EAE/C,GAAG,CAACnc,EAAMw4B,kBAAmBx4B,EAAM04B,MAAOhxB,EAAaq5V,IACnDE,EAAuB5rW,EAAAA,aAAkB,WACzC,OAAO2K,EAAM84B,cACjB,GAAG,CAAC94B,EAAM84B,iBACNooU,EAAc7rW,EAAAA,aAAkB,WAChC,OAAO2K,CACX,GAAG,CAACA,IACA0hP,EAAsBrsP,EAAAA,aAAkB,WACxC,IAAIwqD,EAAU,CACV11B,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,GAQX,OANAh9O,OAAO6nB,eAAeuzB,EAAS,OAAQ,CAAEtzB,IAAKu0U,IAC9Cr8V,OAAO6nB,eAAeuzB,EAAS,QAAS,CAAEtzB,IAAK7kB,IAC/CjD,OAAO6nB,eAAeuzB,EAAS,WAAY,CAAEtzB,IAAKy0U,IAClDv8V,OAAO6nB,eAAeuzB,EAAS,iBAAkB,CAAEtzB,IAAK00U,IACxDx8V,OAAO6nB,eAAeuzB,EAAS,WAAY,CAAEtzB,IAAKw0U,IAClDt8V,OAAO6nB,eAAeuzB,EAAS,QAAS,CAAEtzB,IAAK20U,IACxCrhT,CACX,GAAG,CAACihT,EAAYp5V,EAAas5V,EAAgBC,EAAsBF,EAAgBt/G,EAAcy/G,IACjG7rW,EAAAA,oBAA0B6mB,EAAQwlO,GAClC,IAAI6iH,EAAkBlvW,EAAAA,aAAkB,WACpC,MAAO,CACHmvW,YAAYH,EAAAA,EAAAA,IAAqBrkW,EAAMuH,MAAO08V,EAAc9tW,SAC5DsuW,eAAgBT,EAAkB7tW,QAClCiuW,kBAAmBztH,EAAWxgP,QAAQoR,MACtCqtQ,eAAgBj+B,EAAWxgP,QAAQy+Q,eACnCiC,aAAclgC,EAAWxgP,QAAQ0gR,aACjC6tF,eAAe,EACfC,kBAAkB,EAClBL,mBAAmB,EACnBM,QAASb,EAAW5tW,QACpBwhC,QAASksU,EAAS1tW,QAAQwhC,QAElC,GAAG,CAAC33B,EAAMuH,QACN8sQ,EAAgBh/Q,EAAAA,aAAkB,SAAUW,EAAOuO,GACnD,IAAIvE,EAAMhE,SAAV,CAGA2nW,EAAqBxtW,QAAUoO,EAASigW,WACxCP,EAAc9tW,QAAUoO,EAASigW,WACjC,IAAIthI,GAAiBihI,EAAAA,EAAAA,KAAYhjV,EAAAA,EAAAA,IAAW5c,EAASigW,WAAYxkW,EAAM6W,IAAK7W,EAAMgX,KAAMhX,EAAM2E,OAAQssT,GAClG4zC,GAAc1jV,EAAAA,EAAAA,IAAW8vS,EAAY3qF,YAAYpD,EAAgBljO,EAAM2E,QAAS3E,EAAM6W,IAAK7W,EAAMgX,KACjG6tV,IAAgBtgW,EAASigW,aACzBjgW,EAAS+/V,mBAAoB,EAC7B//V,EAASigW,WAAaK,EACtBZ,EAAc9tW,QAAU0uW,GAEN7kW,EAAMuH,QAAUhD,EAASigW,aAE3C97J,EAAAA,EAAAA,GAAc1oM,EAAMsH,SAAUtR,EAAO0rP,IAAuB,CAAEn6O,MAAOhD,EAASigW,aAElFb,EAAqBxtW,aAAUnB,EAC/B6uW,EAAS1tW,QAAUoO,EACnBq/V,GAAe,SAAUkB,GAAM,OAAQA,CAAI,GAhB3C,CAiBJ,GAAG,CAAC9kW,EAAMuH,MAAOvH,EAAMsH,SAAUtH,EAAMhE,SAAU4nW,EAAgBliH,IAC7DmkC,EAAkBxwR,EAAAA,aAAkB,SAAUW,GAC9C,IAAI+uW,EAAiBR,IACrBR,EAAW5tW,SAAU,EACrBk+Q,EAAcr+Q,GAAOgvW,EAAAA,EAAAA,IAAeD,EAAgB/kW,EAAM2E,OAAQssT,GACtE,GAAG,CAACjxT,EAAM2E,OAAQ3E,EAAMsH,SAAU2pT,EAAa58C,EAAekwF,IAC1Dh3U,EAAYl4B,EAAAA,aAAkB,SAAUW,GACxC,IAAIuO,EAAWggW,IACXpoV,EAAe80S,EAAY3qF,YAAY79M,OAAOlkB,EAAS6/V,mBAAoBpkW,EAAM2E,QAErF,GAAIJ,EAASsyQ,aAAetyQ,EAASqwQ,gBACjCrwQ,EAASsyQ,aAAetyQ,EAASqwQ,iBAAmBnsP,OAAOlkB,EAAS6/V,mBAAmBzgW,OAD3F,CAEI,IAAIshW,EAAiBh0C,EAAY9vF,gBAC7B+jI,EAAUD,GAAkBjvW,EAAMo3B,MAAQ63U,EAAe1xI,UACzD4xI,EAAYF,GAAkBjvW,EAAMo3B,MAAQ63U,EAAe7xI,QAC/D2wI,EAAW5tW,SAAW+uW,IAAYC,CAEtC,KAPA,CAQA,OAAQnvW,EAAMm2B,SACV,KAAK,IAEDwqP,EAAAA,EAAAA,IAAcx6P,EAAc5X,EAAUvE,EAAM2V,KAAM3V,EAAM6W,IAAK7W,EAAMgX,IAAKhX,EAAM2E,OAAQssT,GACtF,MACJ,KAAK,IAEDr6C,EAAAA,EAAAA,IAAcz6P,EAAc5X,EAAUvE,EAAM2V,KAAM3V,EAAM6W,IAAK7W,EAAMgX,IAAKhX,EAAM2E,OAAQssT,GACtF,MACJ,KAAK,GAED,IAA2B,IAAvBjxT,EAAMmwU,aACN,OAEJ,IAAIjtG,GAAiBihI,EAAAA,EAAAA,KAAYhjV,EAAAA,EAAAA,IAAWhF,EAAcnc,EAAM6W,IAAK7W,EAAMgX,KAAMhX,EAAM2E,OAAQssT,GAC3F4zC,GAAc1jV,EAAAA,EAAAA,IAAW8vS,EAAY3qF,YAAYpD,EAAgBljO,EAAM2E,QAAS3E,EAAM6W,IAAK7W,EAAMgX,KACrGzS,EAASigW,WAAaK,EACtBtgW,EAAS6/V,mBAAoBD,EAAAA,EAAAA,IAAYU,EAAa7kW,EAAM2E,OAAQssT,GACpE1sT,EAASqwQ,eAAiBrwQ,EAASsyQ,aAAetyQ,EAAS6/V,kBAAkBzgW,OAC7E,MACJ,KAAK,IAED,IAAIwmB,EAAUwsN,EAAWxgP,QACrBg9N,EAAU89F,EAAY9vF,gBACtBh3M,IACA5lB,EAAS6/V,kBAAoB7/V,EAAS6/V,kBAAkB1zV,MAAM,EAAGnM,EAASqwQ,gBACtEzhD,EAAQC,QACR7uN,EAAS6/V,kBAAkB1zV,MAAMnM,EAASsyQ,cAC9CtyQ,EAASqwQ,eAAiBrwQ,EAASsyQ,aAAetyQ,EAASqwQ,eAAiB,EAC5ErwQ,GAAWygW,EAAAA,EAAAA,IAAezgW,EAAUvE,EAAM2E,OAAQssT,IAEtD,MACJ,QACI,OAERj7T,EAAM+gB,iBACNs9P,EAAcr+Q,EAAOuO,EArCrB,CAsCJ,GAAG,CAACvE,EAAM2E,OAAQ3E,EAAM6W,IAAK7W,EAAMgX,IAAKhX,EAAM2V,KAAM3V,EAAMsH,SAAUtH,EAAMmwU,aAAc97D,EAAekwF,IACnGa,EAAiB/vW,EAAAA,aAAkB,WACnC0uW,EAAW5tW,SAAU,CACzB,GAAG,IACCkvW,EAAahwW,EAAAA,aAAkB,SAAUW,GACzC,IAAIgK,EAAMyC,WACNzC,EAAMhE,SADV,CAIA,IAAIuI,EAAWggW,KACf5tF,EAAAA,EAAAA,IAAcs6C,EAAY3qF,YAAY79M,OAAOlkB,EAAS6/V,mBAAoBpkW,EAAM2E,QAASJ,EAAUvE,EAAM2V,KAAM3V,EAAM6W,IAAK7W,EAAMgX,IAAKhX,EAAM2E,OAAQssT,GACnJ58C,EAAcr+Q,EAAOuO,EAHrB,CAIJ,GAAG,CAACvE,EAAM2E,OAAQ3E,EAAM6W,IAAK7W,EAAMgX,IAAKhX,EAAM2V,KAAM3V,EAAMsH,SAAUtH,EAAMyC,SAAUzC,EAAMhE,SAAUq4Q,EAAekwF,IAC/Ge,GAAajwW,EAAAA,aAAkB,SAAUW,GACzC,IAAIgK,EAAMyC,WACNzC,EAAMhE,SADV,CAIA,IAAIuI,EAAWggW,KACf3tF,EAAAA,EAAAA,IAAcq6C,EAAY3qF,YAAY79M,OAAOlkB,EAAS6/V,mBAAoBpkW,EAAM2E,QAASJ,EAAUvE,EAAM2V,KAAM3V,EAAM6W,IAAK7W,EAAMgX,IAAKhX,EAAM2E,OAAQssT,GACnJ58C,EAAcr+Q,EAAOuO,EAHrB,CAIJ,GAAG,CAACvE,EAAM2E,OAAQ3E,EAAM6W,IAAK7W,EAAMgX,IAAKhX,EAAM2V,KAAM3V,EAAMsH,SAAUtH,EAAMyC,SAAUzC,EAAMhE,SAAUq4Q,EAAekwF,IAC/GgB,GAAiBlwW,EAAAA,aAAkB,SAAUW,GAC7C,IAAI81B,GAAgBC,EAAAA,EAAAA,GAAiBzb,UAChCA,UACDwb,IAAkB6qN,EAAWxgP,SAC5BwgP,EAAWxgP,UACZ6J,EAAMyC,WACNzC,EAAMhE,WAGNhG,EAAMi+B,YAAYwhP,OAAS,GAC3B4vF,EAAWrvW,GAEXA,EAAMi+B,YAAYwhP,OAAS,GAC3B6vF,GAAWtvW,GAEnB,GAAG,CAACqvW,EAAYC,GAAYtlW,EAAMhE,SAAUgE,EAAMyC,WAC9CipB,GAAUr2B,EAAAA,aAAkB,SAAUW,GACtC6tW,EAAS1tW,QAAQiuW,kBAAoBJ,EAAkB7tW,QACvD0tW,EAAS1tW,QAAQwhC,SAAU,GAC3B+wK,EAAAA,EAAAA,GAAc1oM,EAAM0rB,QAAS11B,EAAO0rP,IAAuB,CAAC,GAC5DkiH,GAAe,SAAU33R,GAAK,OAAQA,CAAG,GAC7C,GAAG,CAACjsE,EAAM0rB,QAASk4U,EAAgBliH,IAC/B91N,GAASv2B,EAAAA,aAAkB,SAAUW,GACrC6tW,EAAS1tW,SAAU2tW,EAAAA,EAAAA,OACnBp7J,EAAAA,EAAAA,GAAc1oM,EAAM4rB,OAAQ51B,EAAO0rP,IAAuB,CAAC,GAC3DkiH,GAAe,SAAU33R,GAAK,OAAQA,CAAG,GAC7C,GAAG,CAACjsE,EAAM4rB,OAAQg4U,EAAgBliH,IAC9B/vN,GAAct8B,EAAAA,aAAkB,SAAUmG,GAC1C,GAAI8U,UAAYqmO,EAAWxgP,QAAS,CAChC,IAAI21B,GAAgBC,EAAAA,EAAAA,GAAiBzb,UACrC9U,EAAEub,iBACE+U,IAAkB6qN,EAAWxgP,SAC7BwgP,EAAWxgP,QAAQ4zB,OAE3B,CACJ,GAAG,IACH10B,EAAAA,iBAAsB,WAEdshP,EAAWxgP,SAAuC,WAA5BwgP,EAAWxgP,QAAQmF,WACLtG,IAApC6uW,EAAS1tW,QAAQy+Q,qBAAkE5/Q,IAAlC6uW,EAAS1tW,QAAQ0gR,eAClElgC,EAAWxgP,QAAQy+Q,eAAiBivF,EAAS1tW,QAAQy+Q,eACrDj+B,EAAWxgP,QAAQ0gR,aAAegtF,EAAS1tW,QAAQ0gR,aACnDgtF,EAAS1tW,QAAQy+Q,oBAAiB5/Q,EAClC6uW,EAAS1tW,QAAQ0gR,kBAAe7hR,EAExC,GAAG,CAAC63B,IACJ,IAAI52B,IAAWgrW,KAA0BD,IAAiBtoU,MACtD8sU,GAAkBnwW,EAAAA,cAAoB,OAAQ,CAAEooB,IAAKzd,EAAMyd,IAAKjoB,MAAQwK,EAAMrI,MACxBqI,EAAMxK,MAAtDmhB,EAAS,CAAExa,MAAO6D,EAAM7D,OAAS6D,EAAMxK,OAAsBG,WAAWu7B,EAAAA,EAAAA,GAAW,UAAW,oBAAqB33B,EAAK,CAAC,EAC3HA,EAAG,WAAWyM,OAAOk0B,EAAAA,EAAeC,QAAQn6B,EAAM3E,OAAS2E,EAAM3E,OAAS2E,EAAM3E,KAChF9B,EAAG,WAAWyM,OAAOhG,EAAMiG,WAAajG,EAAMiG,SAC9C1M,EAAG,aAAayM,OAAOk0B,EAAAA,EAAeE,WAAWp6B,EAAMo5B,UAAYp5B,EAAMo5B,UAAYp5B,EAAMo5B,QAC3F7/B,EAAG,cAAgBtD,GACnBsD,EAAG,cAAgByG,EAAMy4B,SACzBl/B,EAAG,cAAgByG,EAAMhE,SACzBzC,GAAKyG,EAAMrK,WAAY,gBAAiBqK,EAAMhE,SAAW,YAAShH,GACtEK,EAAAA,cAAoBqtW,EAAQ,MAC5BrtW,EAAAA,cAAoB,QAAS,CAAEwE,KAAM,aAAc0N,MAAsB,OAAf28V,EAAsB,GAAKA,EAAY72U,UAAUkvC,EAAAA,EAAAA,GAAYv8D,EAAMqtB,SAAUrtB,EAAMhE,UAAWukP,UAAWvgP,EAAMugP,UAAWvkP,SAAUgE,EAAMhE,SAAU8F,MAAO9B,EAAM8B,MAAO,gBAAiB9B,EAAMhE,SAAW,YAAShH,EAAW,gBAAiBgL,EAAM6W,IAAK,gBAAiB7W,EAAMgX,IAAK,aAAchX,EAAMi9O,UAAW,kBAAmBj9O,EAAMs5B,eAAgB,mBAAoBt5B,EAAMu5B,gBAAiBl6B,YAAaW,EAAMX,YAAa+2Q,YAAY,EAAOxlO,aAAc,MAAOylO,YAAa,MAAO/6Q,KAAM0E,EAAMi+L,WAAa,MAAOtoM,UAAW,gBAAiBT,GAAI+gR,EAASr+Q,KAAMoI,EAAMpI,KAAM6K,SAAUzC,EAAMyC,SAAUjN,MAAOwK,EAAMylW,WAAYn+V,SAAUu+Q,EAAiBn6P,QAASA,GAASE,OAAQA,GAAQ2B,UAAWA,EAAWipP,QAAS4uF,EAAgB9uF,QAASivF,GAAgB1vW,IAAK8gP,IACvzBthP,EAAAA,cAAoBstW,EAAQ,MAC5B3iW,EAAMzK,SACNyK,EAAMy2Q,UACDphR,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,gCAAiCg8B,YAAaA,IACpFt8B,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,UAAW,EAAG/xB,KAAM,SAAUpE,KAAM,eAAgBujC,QAASi8O,EAAAA,IAAgBt9O,QAAS,KAAMzjC,UAAW,qBAAsB,aAAcw7B,EAAoBG,iBAAiB6xU,EAAAA,GAAsB3xU,EAAAA,GAAS2xU,EAAAA,KAAwBrhW,MAAOqvB,EAAoBG,iBAAiB6xU,EAAAA,GAAsB3xU,EAAAA,GAAS2xU,EAAAA,KAAwBhsW,QAASkuW,IACjXhwW,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEo2B,UAAW,EAAG/xB,KAAM,SAAUpE,KAAM,iBAAkBujC,QAASymN,EAAAA,IAAkB9nN,QAAS,KAAMzjC,UAAW,qBAAsB,aAAcw7B,EAAoBG,iBAAiB8xU,EAAAA,GAAsB5xU,EAAAA,GAAS4xU,EAAAA,KAAwBthW,MAAOqvB,EAAoBG,iBAAiB8xU,EAAAA,GAAsB5xU,EAAAA,GAAS4xU,EAAAA,KAAwBjsW,QAASmuW,OACjY,OAAOtlW,EAAMrI,MACNtC,EAAAA,cAAoBkqE,EAAAA,EAAe,CAAE5nE,MAAOqI,EAAMrI,MAAOwjC,SAAU86O,EAASz2M,YAA4B,OAAf0kS,EAAsB,GAAKA,EAAY9oU,YAAanlC,GAASolC,eAAgBr7B,EAAMhE,SAAUqlS,kBAAmBrhS,EAAMX,YAAa9J,SAAUiwW,GAAgBhwW,MAAO,CAAE2G,MAAO6D,EAAM7D,OAASshB,IAAKzd,EAAMyd,MACjS+nV,EACV,IACAjoS,EAAezvC,UAAY,CACvBvmB,MAAOwmB,EAAAA,OACP11B,aAAc01B,EAAAA,OACdpY,KAAMoY,EAAAA,OACNppB,OAAQopB,EAAAA,UAAoB,CACxBA,EAAAA,OACAA,EAAAA,MAAgB,CACZv4B,MAAOu4B,EAAAA,MAAgB,CAAC,UAAW,WAAY,UAAW,aAAc,eACxEmmM,SAAUnmM,EAAAA,OACVuzM,gBAAiBvzM,EAAAA,MAAgB,CAAC,SAAU,OAAQ,SACpDo1M,YAAap1M,EAAAA,KACbk1M,qBAAsBl1M,EAAAA,OACtBw0M,sBAAuBx0M,EAAAA,OACvBy0M,sBAAuBz0M,EAAAA,WAG/B5xB,MAAO4xB,EAAAA,UAAoB,CACvBA,EAAAA,OACAA,EAAAA,SAEJV,SAAUU,EAAAA,OACVwyN,UAAWxyN,EAAAA,OACXjsB,MAAOisB,EAAAA,OACP1uB,YAAa0uB,EAAAA,OACblX,IAAKkX,EAAAA,OACL/W,IAAK+W,EAAAA,OACL0oP,SAAU1oP,EAAAA,KACV/xB,SAAU+xB,EAAAA,KACVtrB,SAAUsrB,EAAAA,KACVtQ,IAAKsQ,EAAAA,OACLn2B,KAAMm2B,EAAAA,OACNp2B,MAAOo2B,EAAAA,OACPyK,kBAAmBzK,EAAAA,OACnB0K,SAAU1K,EAAAA,KACV74B,GAAI64B,EAAAA,OACJoiT,aAAcpiT,EAAAA,KACduL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjBkvN,UAAWlvN,EAAAA,OACXzmB,SAAUymB,EAAAA,KACVrC,QAASqC,EAAAA,KACTnC,OAAQmC,EAAAA,KACR1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5D9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,OAAQ,aAEtDwvC,EAAe3hC,YAAc,sBAC7B2hC,EAAepyC,aAAe,CAC1B6lE,OAAQ,SAAUtuE,GAAK,OAAO,IAAM,EACpCowP,OAAQ,SAAUpwP,GAAK,OAAO,IAAM,EACpC/M,KAAM,EACN8gQ,UAAU,EACVz6Q,UAAU,EACVy8B,UAAU,EACVK,gBAAgB,EAChBq3S,cAAc,EACd7oU,SAAU,SAAUob,GAAa,EACjCgJ,QAAS,SAAUhJ,GAAa,EAChCkJ,OAAQ,SAAUlJ,GAAa,EAC/BrnB,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,8GCjWd,IAAI0Q,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIk3U,EAAiB,gBAKjBC,EAAe,KAKR7B,EAAkB,WAAc,MAAQ,CAC/CU,WAAY,KACZC,eAAgB,GAChBL,kBAAmB,GACnBzsU,SAAS,EACTi9O,oBAAgB5/Q,EAChB6hR,kBAAc7hR,EACd0vW,eAAe,EACfC,kBAAkB,EAClBL,mBAAmB,EACnB,EAIOD,EAAuB,SAAU98V,EAAOg9B,GAC/C,YAAiBvvC,IAAVuS,EAAsBA,EAAQg9B,CACzC,EAIW4/T,EAAc,SAAU58V,EAAO5C,EAAQssT,GAC9C,OAAc,OAAV1pT,QAA4BvS,IAAVuS,EACX,GAEU,kBAAVA,EACAA,EAEJ0pT,EAAYnrF,aAAav+N,EAAO5C,EAC3C,EAIWihW,EAAiB,SAAUr+V,GAClC,OAAQkhB,OAAOlhB,GAAOuD,MAAM,KAAK,IAAM,IAAInH,MAC/C,EAIIkiW,EAAoB,SAAUC,EAAQC,GACtC,OAAOnvV,KAAKI,IAAI4uV,EAAeE,GAASF,EAAeG,GAC3D,EAQWC,EAAmB,SAAUz+V,EAAO0xF,GAC3C,IAAIgtQ,EALoB,SAAUhtQ,GAAa,OAAOriF,KAAKC,IAAIoiF,EAhD/C,GAgD0E,CAKvEitQ,CAAejtQ,GAClC,OAAOrjB,WAAWruE,EAAMyM,QAAQiyV,GACpC,EAIWtvF,EAAgB,SAAUpvQ,EAAOhD,EAAUoR,EAAMkB,EAAKG,EAAKrS,EAAQssT,GAC1E,IAAIg1C,EAAeJ,EAAkBt+V,GAAS,EAAGoO,GAAQ,GACrDwwV,EAAiBhlV,EAAW6kV,GAAkBz+V,GAAS,IAAMoO,GAAQ,GAAIswV,GAAepvV,EAAKG,GACjGzS,EAASigW,WAAa2B,EACtB5hW,EAAS6/V,kBAAoBD,EAAYgC,EAAgBxhW,EAAQssT,GACjE1sT,EAASqwQ,eAAiBrwQ,EAASsyQ,aAAeuvF,EAAmB7hW,EAAS6/V,kBAAmBuB,EACrG,EAIW/uF,EAAgB,SAAUrvQ,EAAOhD,EAAUoR,EAAMkB,EAAKG,EAAKrS,EAAQssT,GAC1E,IAAIg1C,EAAeJ,EAAkBt+V,GAAS,EAAGoO,GAAQ,GACrD0wV,EAAiBllV,EAAW6kV,GAAkBz+V,GAAS,IAAMoO,GAAQ,GAAIswV,GAAepvV,EAAKG,GACjGzS,EAASigW,WAAa6B,EACtB9hW,EAAS6/V,kBAAoBD,EAAYkC,EAAgB1hW,EAAQssT,GACjE1sT,EAASqwQ,eAAiBrwQ,EAASsyQ,aAAeuvF,EAAmB7hW,EAAS6/V,kBAAmBuB,EACrG,EAIWxkV,EAAa,SAAU5Z,EAAOsP,EAAKG,GAC1C,OAAa,MAATzP,EACOA,EAELA,EAAQ,GAAKA,EAAQ,GAAe,IAAVA,OAIpBvS,IAARgiB,QAA6BhiB,IAAR6hB,GAAqBG,EAAMH,EACzC,WAEC7hB,IAARgiB,GAAqBzP,EAAQyP,IAC7BzP,EAAQyP,QAEAhiB,IAAR6hB,GAAqBtP,EAAQsP,IAC7BtP,EAAQsP,GAELtP,GAXI,IAYf,EAgCW++V,EAAiB,SAAUC,EAAgBC,EAAYjiW,GAC9D,IAAIkiW,EA7B0B,SAAU5oU,EAAW2oU,GACnD,IAAIE,EAAoBF,EAAWpkR,WAAU,SAAU7oF,GAC3CA,EAAG,GAAX,IAAeotW,EAAaptW,EAAG,GAC/B,OAAOmzB,QAAQi6U,IAAe9oU,EAAUd,QAAQ4pU,KAAgB9oU,EAAUl6B,OAASgjW,EAAWhjW,MAClG,IACA,IAA2B,IAAvB+iW,EACA,OAAQ,EAEZ,IAAI5zF,EAAS0zF,EAAWE,GAAmB,GAC3C,OAAO7oU,EAAUl6B,OAASmvQ,EAAOnvQ,MACrC,CAmBsBijW,CAAqBL,EAAgBC,GACvD,IAAqB,IAAjBC,GAAsBliW,EAASqwQ,eAAiB6xF,EAChDliW,EAASqwQ,eAAiBrwQ,EAASsyQ,aAAe4vF,MADtD,CAIIliW,EAASqwQ,eAAiB2xF,EAAe5iW,SACzCY,EAASqwQ,eAAiBrwQ,EAASsyQ,aAAe0vF,EAAe5iW,QAErE,IAAIkjW,EAvB0B,SAAUhpU,EAAW2oU,GACnD,IAAIM,EAAoBN,EAAWpkR,WAAU,SAAU7oF,GACnD,IAAIwtW,EAAaxtW,EAAG,GACpB,OAD4BA,EAAG,GACxBmzB,QAAQq6U,IAAiD,IAAlClpU,EAAUd,QAAQgqU,EACpD,IACA,OAA2B,IAAvBD,GACQ,EAECN,EAAWM,GAAmB,GAC7BnjW,MAClB,CAasBqjW,CAAqBT,EAAgBC,IAClC,IAAjBK,GAAsBtiW,EAASqwQ,eAAiBiyF,IAChDtiW,EAASqwQ,eAAiBrwQ,EAASsyQ,aAAegwF,IAErB,IAA7BtiW,EAASqwQ,iBACTrwQ,EAASqwQ,eAAiBrwQ,EAASsyQ,aAAe,EATtD,CAWJ,EAIW3qG,EAAe,SAAU3nK,EAAUo8J,EAAU4lM,EAAgBC,GACpEjiW,EAASqwQ,eAAiBrwQ,EAASsyQ,aAAel2G,EAClD2lM,EAAeC,EAAgBC,EAAYjiW,EAC/C,EAIW0iW,EAAa,SAAU1iW,EAAUI,EAAQ6hW,EAAYv1C,GAC5D1sT,EAASigW,WAAavzC,EAAY3qF,YAAY/hO,EAASkgW,eAAgB9/V,GACvEJ,EAAS6/V,kBAAoB7/V,EAASkgW,eACtClgW,EAASogW,kBAAmB,EAC5Bz4L,EAAa3nK,EAAUA,EAASqwQ,eAAgBrwQ,EAAS6/V,kBAAmBoC,EAChF,EAqEWU,EAAqB,SAAUX,EAAgBpzI,GACtD,IAAIg0I,EAAcZ,EAAexpU,QAAQo2L,EAAQC,SACjD,OAAI+zI,GAAe,EACRA,EAEJf,EAAmBG,EAAgBZ,EAC9C,EAIWyB,EAAgB,SAAU/vT,GACjC,OAAOA,EAAIvsC,MAAM,IAAImY,UAAUy8B,KAAK,GACxC,EAIW0mT,EAAqB,SAAUhC,EAAmBiD,GACzD,OAAOjD,EAAkBzgW,OAASyjW,EAAchD,GAAmBl6S,OAAOm9S,EAC9E,EAIWC,EAAY,SAAUjwT,GAC7B,OAAOA,EAAIvsC,MAAMusC,EAAIA,EAAI6S,OAAOy7S,KAAgB,EACpD,EAIW4B,EAAY,SAAUlwT,GAC7B,IAAImwT,EAAiBJ,EAAc/vT,GACnC,OAAO+vT,EAAcI,EAAe18V,MAAM08V,EAAeA,EAAet9S,OAAOy7S,KAAgB,GACnG,EAIW8B,EAAsB,SAAUhD,EAAgB4C,GACvD,OAAO5C,EAAev6S,OAAOm9S,EACjC,EAIWK,EAAkB,SAAUngW,EAAO6rN,GAC1C,IAAIu0I,EAAsBpgW,EAAMw1B,QAAQq2L,GACxC,OAAOu0I,GAAuB,EAAIpgW,EAAM5D,OAASgkW,EAAsB,EAAI,CAC/E,EAIWC,EAAuB,SAAUzrV,EAAc0hB,EAAWgqU,EAAmBC,EAAUC,GAC9F,IAAIC,EAAsE,MAA/C7rV,EAAanN,QAAQ+4V,EAAe,IAAI,GAC/DE,EAAgE,MAA5CpqU,EAAU7uB,QAAQ+4V,EAAe,IAAI,GAC7D,GAAIC,IAAyBC,EACzB,OAAOJ,EAAoB,EAE/B,GAAII,GAAqBH,EACrB,OAAOD,EAAoB,EAG/B,IADA,IAAIK,EAAgB,EACXtiW,EAAM,EAAGA,EAAMiiW,EAAmBjiW,IACnC+/V,EAAap2U,KAAKpT,EAAaouC,OAAO3kD,KACtCsiW,IAIR,IADA,IAAIC,EAAe,EACZD,EAAgB,GAAKrqU,EAAUl6B,OAASwkW,GACvCxC,EAAap2U,KAAKsO,EAAU0sB,OAAO49S,KACnCD,IAEJC,IAEJ,OAAOA,CACX,EAIWnD,EAAiB,SAAUnwW,EAAO8P,EAAQssT,GACjD,IAAI1sT,EAAWoS,EAAS,CAAC,EAAG9hB,GACxB4vW,EAAiBlgW,EAASkgW,eAC1BtxI,EAAU89F,EAAY9vF,gBACtBinI,EAjGsB,SAAUzjW,EAAQssT,GAC5C,IAAIo3C,EAAiBp3C,EAAYnrF,aAAa4/H,EAAgB/gW,GAC1D2jW,EAAiBr3C,EAAYnrF,cAAc4/H,EAAgB/gW,GAC3D4jW,EAAat3C,EAAYnrF,aAzNf,EAyNyCnhO,GACnD6jW,EAAYv3C,EAAYnrF,aA3Nf,EA2NwCnhO,GACjDwuN,EAAU89F,EAAY9vF,gBACtB4mI,EAAgB,IAAIr5U,OAAO,SAAS1oB,OAAOmtN,EAAQC,SAASptN,OAAOmtN,EAAQ9vJ,MAAO,KAAM,KAI5F,MAH2B,CAACglS,EAAgBC,EAAgBC,EAAYC,GACnEzmW,KAAI,SAAUvD,GAAU,OAAOA,EAAOwQ,QAAQ+4V,EAAe,GAAK,IAClEroT,KAAK,IAEL50C,MAAM,IACNlG,QAAO,SAAUqnE,EAAG1pE,EAAGgsB,GAAK,OAAOA,EAAEwO,QAAQkvC,KAAO1pE,CAAG,IACvDm9C,KAAK,GACd,CAmF4B+oT,CAAiB9jW,EAAQssT,GAC7Cy3C,EAA4BjgV,OAAOlkB,EAAS6/V,mBAC5CuE,EAAyBlgV,OAAOg8U,GAChCsD,EAAgB,IAAIr5U,OAAO,UAAU1oB,OAAOmtN,EAAQC,QAAS,KAAM,KACnEw1I,EAAqB,IAAIl6U,OAAO,UAAU1oB,OAAOmtN,EAAQC,QAAS,MAAMptN,OAAOmtN,EAAQ9vJ,MAAO,KAAM,KACpGwlS,EAAkB,IAAIn6U,OAAO,SAAS1oB,OAAOmtN,EAAQC,QAAS,MAAMptN,OAAOmtN,EAAQ9vJ,MAAO,MAC1FylS,EAAkBJ,EAA0B15V,QAAQ+4V,EAAe,IACnEgB,EAActB,EAAoBiB,EAA2B/C,GAC7DqD,GAA6B,IAAjBD,GAAsB,EAAI3C,EAAmBsC,EAA2B/C,GACpFnkI,EAAeknI,EAA0B3rU,QAAQo2L,EAAQC,SACzD61I,GAA4BP,EAA0B7/V,UAAU,EAAGkgW,GACnEL,EAA0B7/V,UAAUkgW,EAAaC,GAAWh6V,QAAQ45V,EAAoB,IACxFF,EAA0B7/V,UAAUmgW,EAAWN,EAA0B/kW,SACxEmH,MAAM,IACNlG,QAAO,SAAU2pB,GAAK,OAAyC,IAAlC65U,EAAkBrrU,QAAQxO,KAA4C,IAA/BA,EAAE27B,OAAO2+S,EAAyB,IACtGnpT,KAAK,IACNwpT,EAAej4C,EAAYnrF,aA1UjB,mBA0U2CnhO,GAAQqK,QAAQ+4V,EAAe,IACpFoB,EAAkBD,EAAansU,QAAQo2L,EAAQC,SAC/Cg2I,EAAkBD,GAAmB,EAAID,EAAavlW,OAASwlW,EAAkB,EAAI,EACrFE,EAAep4C,EAAYnrF,aA5UjB,EA4U2CnhO,GAAQqK,QAAQ+4V,EAAe,IACpFuB,EAAkBD,EAAatsU,QAAQo2L,EAAQC,SAC/Cm2I,EAAkBD,GAAmB,EAAID,EAAa1lW,OAAS2lW,EAAkB,EAAI,EACrF/vW,EA9I0B,SAAUoL,EAAQssT,GAChD,IAAIo3C,EAAiBp3C,EAAYnrF,aAAa4/H,EAAgB/gW,GAC1D2jW,EAAiBr3C,EAAYnrF,cAAc4/H,EAAgB/gW,GAC3D4jW,EAAat3C,EAAYnrF,aAlMf,EAkMyCnhO,GACnD6jW,EAAYv3C,EAAYnrF,aApMf,EAoMwCnhO,GACjD6kW,EAAiBlC,EAAUe,GAC3BoB,EAAiBnC,EAAUgB,GAC3BoB,EAAapC,EAAUiB,GACvBoB,EAAYrC,EAAUkB,GAK1B,MAAO,CACHoB,aAAc,CAACJ,EALEjC,EAAUc,IAM3BwB,aAAc,CAACJ,EALElC,EAAUe,IAM3BwB,SAAU,CAACJ,EALEnC,EAAUgB,IAMvBwB,QAAS,CAACJ,EALEpC,EAAUiB,IAO9B,CA2HawB,CAAqBrlW,EAAQssT,GAClCu1C,EAAa,CADkDjtW,EAAGqwW,aAA6BrwW,EAAGswW,aAAyBtwW,EAAGuwW,SAAoBvwW,EAAGwwW,SAErJE,EAAiK,IAAnIzD,EAAWpkR,WAAU,SAAUxiF,GAAQ,OAAkF,IAA3EA,EAAKwiF,WAAU,SAAU8nR,GAAc,OAAOx9U,QAAQw9U,EAAa,GAAW,IAC1JpC,EAAWY,EAA0B/kW,OAAS,GAAK+kW,EAA0B/kW,OAASglW,EAAuBhlW,OAC7GwmW,EAAoC,kBAAXxlW,GACX,MAAdA,EAAO,IACP+jW,IAC4D,IAA5DA,EAA0B3rU,QAAQo2L,EAAQE,aAC9C,IAAK9uN,EAASqgW,QAAS,CAEnB,GAAkC,KAA9B8D,EAGA,OAFAnkW,EAASigW,WAAa,KACtBjgW,EAAS6/V,kBAAoB,GACtB7/V,EAGX,GAAIA,EAAS6/V,oBAAsBjxI,EAAQI,WAAa09F,EAAYnrF,cAAc,EAAGnhO,KAAYgkW,EAI7F,OAHApkW,EAASigW,YAAc,EACvBjgW,EAAS6/V,kBAAoBD,EAAY5/V,EAASigW,WAAY7/V,EAAQssT,GACtE/kJ,EAAa3nK,EAAU2iW,EAAmB3iW,EAAS6/V,kBAAmBjxI,GAAU5uN,EAAS6/V,kBAAmBoC,GACrGjiW,EAGX,GAAIA,EAAS6/V,oBAAsBjxI,EAAQC,QAAS,CAChD7uN,EAASigW,WAAa,EACtB,IAAI4F,EAAiBjG,EAAY5/V,EAASigW,WAAY7/V,EAAQssT,GAC9D,GAAwB,IAApBs4C,GAAyBH,EAAkB,EAAG,CAC9C,IAAIiB,EAAyBjE,EAAmBgE,EAAgBzE,GAChEphW,EAAS6/V,kBAAoBgG,EAAevhW,UAAU,EAAGwhW,GACrDl3I,EAAQC,QACRg3I,EAAevhW,UAAUwhW,EACjC,MAEI9lW,EAAS6/V,kBAAoBgG,EAGjC,OADAl+L,EAAa3nK,EAAU2iW,EAAmB3iW,EAAS6/V,kBAAmBjxI,GAAW,EAAG5uN,EAAS6/V,kBAAmBoC,GACzGjiW,CACX,CAEA,GA7MwB,SAAUA,EAAU4uN,GAChD,IAAI4hD,EAAUtsP,OAAOlkB,EAAS6/V,mBAC1BtvF,EAAUrsP,OAAOlkB,EAASkgW,gBAC9B,OAAQ1vF,EAAQjqQ,MAAMqoN,EAAQI,WAAW5vN,SAAWmxQ,EAAQhqQ,MAAMqoN,EAAQI,WAAW5vN,QACjFoxQ,EAAQpxQ,SAAWmxQ,EAAQnxQ,OAASwvN,EAAQI,UAAU5vN,MAC9D,CAwMY2mW,CAAmB/lW,EAAU4uN,GAAU,CACvC,IAAIt1L,EAAYozR,EAAY3qF,YAAYm+H,EAAgB9/V,GACxDJ,EAASigW,aAA6B,OAAd3mU,EAAqBA,EAAY,GACzDt5B,EAAS6/V,kBAAoBD,EAAY5/V,EAASigW,WAAY7/V,EAAQssT,GACtE,IAAIs5C,EAAqB9C,EAAoBljW,EAAS6/V,kBAAmBuB,GACrE6E,EAAiB/C,EAAoBkB,EAAwBhD,GAEjE,OADAz5L,EAAa3nK,EAAUA,EAASsyQ,aAAe,GAAK0zF,EAAqBC,GAAiBjmW,EAAS6/V,kBAAmBoC,GAC/GjiW,CACX,CACA,GA7M0B,SAAUA,EAAU4uN,GAClD,IAAI4hD,EAAUtsP,OAAOlkB,EAAS6/V,mBAC1BtvF,EAAUrsP,OAAOlkB,EAASkgW,gBAC9B,OAAgD,IAAxC1vF,EAAQh4O,QAAQo2L,EAAQI,aAA6D,IAAxCuhD,EAAQ/3O,QAAQo2L,EAAQI,UACjF,CAyMYk3I,CAAqBlmW,EAAU4uN,GAG/B,OAFA5uN,EAASigW,WAAavzC,EAAY3qF,YAAY/hO,EAAS6/V,kBAAmBz/V,GAC1EunK,EAAa3nK,EAAUA,EAASqwQ,eAAgBrwQ,EAAS6/V,kBAAmBoC,GACrEjiW,EAGX,GA3MyB,SAAUA,EAAU4uN,GAEjD,OADc1qM,OAAOlkB,EAAS6/V,mBACft5V,MAAMqoN,EAAQC,SAASzvN,OAAS,CACnD,CAwMY+mW,CAAoBnmW,EAAU4uN,GAE9B,OADA8zI,EAAW1iW,EAAUI,EAAQ6hW,EAAYv1C,GAClC1sT,EAGX,GAAI4lW,EAGA,OAFA5lW,EAASigW,WAAavzC,EAAY3qF,YAAYoiI,EAA2B/jW,GAAU,IACnFJ,EAAS6/V,kBAAoBD,EAAY5/V,EAASigW,WAAY7/V,EAAQssT,GAC/D1sT,EAIX,GADqBkkB,OAAOlkB,EAAS6/V,mBAAmBp1V,QAAQ,SAAU,IACvDrL,OA7YP,GA+YR,OADAsjW,EAAW1iW,EAAUI,EAAQ6hW,EAAYv1C,GAClC1sT,EAGX,GAAIukW,IAAoBJ,GACpBA,GACAuB,EAA6B,CAC7B,IAAIU,EAAkBnE,EAAWpkR,WAAU,SAAU7oF,GACjD,IAAIy3F,EAASz3F,EAAG,GAAIu5Q,EAASv5Q,EAAG,GAC5BqxW,EAAclC,EAA0B3rU,QAAQi0D,GAChD65Q,EAAcnC,EAA0B3rU,QAAQ+1O,GAChDg4F,EAA8B,IAAhBF,EACdG,EAAcF,IAAgBnC,EAA0B/kW,OAASmvQ,EAAOnvQ,OACxEqnW,EAAYJ,EAAc55Q,EAAOrtF,SAAWolW,IAC3B,IAAjBA,GACAL,EAA0BkC,EAAc55Q,EAAOrtF,UAAYwvN,EAAQC,QACnE63I,EAAYJ,IAAgB7B,IACb,IAAfA,GACAN,EAA0BmC,EAAc,KAAO13I,EAAQC,QAC3D,OAAIpiI,GAAU8hL,GACNk4F,IAAaC,IAGVH,GAAeC,GAEtB/5Q,GACIg6Q,GAGGF,IAEPh4F,KACIm4F,GAGGF,EAGf,IACA,IAAyB,IAArBJ,EAEA,OADA1D,EAAW1iW,EAAUI,EAAQ6hW,EAAYv1C,GAClC1sT,CAEf,CAEA,GAAIukW,EAAgBA,EAAgBnlW,OAAS,KAAOwvN,EAAQC,SAAWg2I,EAAkB,EAGrF,OAFA7kW,EAASigW,WAAavzC,EAAY3qF,YAAYoiI,EAA2B/jW,GACzEJ,EAAS6/V,kBAAoB6E,EACtB1kW,EAGX,GAAIA,EAAS6/V,mBAAqBK,EAe9B,IAd8B2D,EAAoBj1I,EAAQC,QAAUD,EAAQ9vJ,OACvEv4D,MAAM,IACNs3E,WAAU,SAAU7zD,GACrB,OAAIm6U,EAA0B59V,MAAM,IAAIlG,QAAO,SAAUqnE,GAAK,OAAOA,IAAM19C,CAAG,IAAG5qB,OAC7EglW,EAAuB79V,MAAM,IAAIlG,QAAO,SAAUqnE,GAAK,OAAOA,IAAM19C,CAAG,IAAG5qB,QAC1E+kW,EAA0B/kW,OAAS,IAAMglW,EAAuBhlW,SAC5D4qB,IAAM4kM,EAAQC,SAC0E,IAAxFs0I,EAAgBiB,EAAuB35V,QAAQ+4V,EAAe,IAAK50I,EAAQC,SAMvF,KAAM,EAIF,OAFA7uN,EAASigW,WAAavzC,EAAY3qF,YAAYzxO,EAAM4vW,eAAgB9/V,GACpEJ,EAAS6/V,kBAAoBvvW,EAAM4vW,eAC5BlgW,EAGf,IAAI2mW,EAAsBxD,EAAgBoB,EAAiB31I,EAAQC,SAC/D+3I,EAAgE,MAAhDrC,EAAgBA,EAAgBnlW,OAAS,GAE7D,GAAImkW,GAAYqD,GAAiBD,EAAsB3B,EAGnD,OAFAhlW,EAASigW,WAAavzC,EAAY3qF,YAAY/hO,EAAS6/V,kBAAmBz/V,GAC1EJ,EAAS6/V,kBAAoBD,EAAY5/V,EAASigW,WAAY7/V,EAAQssT,GAC/D1sT,EAGX,GAAI2mW,EAAsB,EAAG,CACzB,IAAIE,EAAqB1C,EAA0B7/V,UAAU,EAAG24N,GAChE,GAAI2pI,KAAmBC,GAA6E,IAAvDzC,EAAuB5rU,QAAQquU,IAA4B,CAEpG7mW,EAASigW,WAAavzC,EAAY3qF,YAAY/hO,EAAS6/V,kBAAmBz/V,GAC1E,IAAI4hW,EAAiBpC,EAAY5/V,EAASigW,WAAY7/V,EAAQssT,GAG9D,OAFA/kJ,EAAa3nK,EAAUqjW,EAAqBc,EAA2BnC,EAAgBhiW,EAASsyQ,aAAcixF,EAAUC,GAAgBxB,EAAgBC,GACxJjiW,EAAS6/V,kBAAoBmC,EACtBhiW,CACX,CACA,GAAI2mW,EAAsB9B,EAAiB,CAEvC,IAAIiC,EAAoB3C,EAA0B3rU,QAAQo2L,EAAQC,SAC9D50N,EAASkqW,EAA0B7/V,UAAU,EAAGwiW,GAChD3C,EAA0B7/V,UAAUwiW,EAAmBA,EAAoB,EAAIjC,GAC/EV,EAA0B7/V,UAAUmgW,EAAWvgV,OAAOlkB,EAAS6/V,mBAAmBzgW,QAItF,OAHAY,EAASigW,WAAavzC,EAAY3qF,YAAY9nO,EAAQmG,GACtDJ,EAAS6/V,kBAAoB5lW,EAC7B0tK,EAAa3nK,EAAUA,EAASqwQ,eAAgBp2Q,EAAQgoW,GACjDjiW,CACX,CACA,GAAIglW,IAAoBH,GAAmB8B,GAAuB9B,GAAmB+B,EAIjF,OAFA5mW,EAASigW,WAAavzC,EAAY3qF,YAAY/hO,EAAS6/V,kBAAmBz/V,GAC1EJ,EAAS6/V,kBAAoB6E,EACtB1kW,EAEX,GAAI2mW,EAAsB3B,EAItB,OAFAhlW,EAASigW,WAAavzC,EAAY3qF,YAAY/hO,EAAS6/V,kBAAmBz/V,GAC1EJ,EAAS6/V,kBAAoBD,EAAY5/V,EAASigW,WAAY7/V,EAAQssT,GAC/D1sT,CAEf,CACJ,CAMA,GAJAA,EAASigW,WAAavzC,EAAY3qF,YAAY/hO,EAAS6/V,kBAAmBz/V,GACtEwlW,IACA5lW,EAASigW,WAAajgW,EAASigW,WAAa,KAEb,kBAAxBjgW,EAASigW,WAAyB,CACrC+B,EAAiBpC,EAAY5/V,EAASigW,WAAY7/V,EAAQssT,GAErB,IAArCy3C,EAA0B/kW,OAC1BuoK,EAAa3nK,EAAU2iW,EAAmBX,EAAgBpzI,GAAUozI,EAAgBC,GAGpFt6L,EAAa3nK,EAAUqjW,EAAqBc,EAA2BnC,EAAgBhiW,EAASsyQ,aAAcixF,EAAUC,GAAgBxB,EAAgBC,GAE5JjiW,EAAS6/V,kBAAoBmC,CACjC,MAGIhiW,EAAS6/V,kBAAoBD,EAAYlzC,EAAY3qF,YAAYwiI,GAAkBnkW,EAAQssT,GAE/F,OAAO1sT,CACX,gDCriBO,IAAI0zB,EAAkB,CACzBrgC,KAAM,+BACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,gUCTlBpjD,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAYW4sW,GAA0BlvU,EAAAA,EAAAA,KAO1BmvU,EAAcl2W,EAAAA,YAAiB,SAAU08R,EAAa71Q,GAC7D,IAAI3iB,GACJy+B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAIj4B,GAAQ8nP,EAAAA,EAAAA,GAAgBwjH,EAAyBv5E,GACjDx4P,EAAkBv5B,EAAMu5B,gBAAiBgoE,EAAUvhG,EAAMuhG,QAAShsG,EAAWyK,EAAMzK,SAAUI,EAAYqK,EAAMrK,UAAWqG,EAAWgE,EAAMhE,SAAU9G,EAAK8K,EAAM9K,GAAImG,EAAO2E,EAAM3E,KAAM1D,EAAQqI,EAAMrI,MAAO2/U,EAAiBt3U,EAAMs3U,eAAgB1/U,EAAOoI,EAAMpI,KAAMpC,EAAQwK,EAAMxK,MAAO63B,EAAWrtB,EAAMqtB,SAAU9lB,EAAQvH,EAAMuH,MAAOmxB,EAAQ14B,EAAM04B,MAAOpxB,EAAWtH,EAAMsH,SAAUokB,EAAU1rB,EAAM0rB,QAASE,EAAS5rB,EAAM4rB,OAAQ2iB,EAASjyB,EAAOtc,EAAO,CAAC,kBAAmB,UAAW,WAAY,YAAa,WAAY,KAAM,OAAQ,QAAS,iBAAkB,OAAQ,QAAS,WAAY,QAAS,QAAS,WAAY,UAAW,WACrnB22O,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACC23N,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,GAAG,CAACA,IACRpsP,EAAAA,oBAA0B6mB,EAAQwlO,GAClC,IAAI69C,EAAelqS,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IAC7DzK,EAAen2B,EAAAA,aAAkB,SAAUW,IAC3C0yM,EAAAA,EAAAA,GAAcphM,EAAUtR,EAAO0rP,IAAuB,CAAEn6O,MAAOA,GACnE,GAAG,CAACD,EAAUC,EAAOvL,IACjByvB,EAAcp2B,EAAAA,aAAkB,SAAUW,GACtC01B,IAAY1vB,IACZ0sM,EAAAA,EAAAA,GAAch9K,EAAS11B,EAAO0rP,SAAuB1sP,EAE7D,GAAG,CAAC02B,EAAS1vB,IACT2vB,EAAat2B,EAAAA,aAAkB,SAAUW,GACrC41B,IAAW5vB,IACX0sM,EAAAA,EAAAA,GAAc98K,EAAQ51B,EAAO0rP,SAAuB1sP,EAE5D,GAAG,CAAC42B,EAAQ5vB,IACRy8U,EAAa9hU,EAAS,CAAErb,KAAM,QAASpG,GAAIA,GAAMqqS,EAAc3nS,KAAMA,EAAMjC,WAAWu7B,EAAAA,EAAAA,GAAW,WAAY33B,EAAK,CAAC,EAC/GA,EAAG,WAAWyM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EAC9D9B,EAAG,cAAyB,IAAVm/B,EAClBn/B,GAAK5D,GAAYE,IAAK8gP,EAAY36O,SAAUA,EAAUqxB,UAAUkvC,EAAAA,EAAAA,GAAYlvC,EAAUrxB,GAAWulG,QAASA,EAAS/rG,MAAOA,EAAO,mBAAoB+jC,EAAiBhyB,MAAOA,EAAOD,SAAUkkB,EAAcE,QAASD,EAAaG,OAAQD,GAAc4iB,GAC5Pi9T,EAAoBn2W,EAAAA,cAAoBA,EAAAA,SAAgB,UAAgBL,IAAV2C,EAAuBtC,EAAAA,cAAoB,QAAS,CAAEM,UAAW,gBAAiBmnS,QAAS5nS,GAAMqqS,EAAc/pS,MAAO,CAAE05S,WAAY,QAAU,aAAcv3S,GAASA,GAAU,MAC7O8zW,EAAQp2W,EAAAA,cAAoB,QAASshB,EAAS,CAAC,EAAG8hU,IACtD,MAA2B,WAAnBnB,EACDjiV,EAAAA,cAAoBA,EAAAA,SAAgB,KACnCm2W,EACAC,EACAl2W,GAAcF,EAAAA,cAAoBA,EAAAA,SAAgB,KACtDo2W,EACAD,EACAj2W,EACR,IACAg2W,EAAYz9U,UAAY,CACpByL,gBAAiBxL,EAAAA,OACjBwzE,QAASxzE,EAAAA,KACTp4B,UAAWo4B,EAAAA,OACX/xB,SAAU+xB,EAAAA,KACV74B,GAAI64B,EAAAA,OACJ1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDp2B,MAAOo2B,EAAAA,OACPupT,eAAgBvpT,EAAAA,OAChBn2B,KAAMm2B,EAAAA,OACNv4B,MAAOu4B,EAAAA,OACPV,SAAUU,EAAAA,OACVxmB,MAAOwmB,EAAAA,IACP2K,MAAO3K,EAAAA,KACPzmB,SAAUymB,EAAAA,KACVrC,QAASqC,EAAAA,KACTnC,OAAQmC,EAAAA,MAKZw9U,EAAY3vU,YAAc,mBAC1B2vU,EAAYpgV,aAJO,CACf9vB,KAAM,2LCxGNsb,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAaWk9U,GAAyBtvU,EAAAA,EAAAA,KAOzBihC,EAAahoE,EAAAA,YAAiB,SAAU08R,EAAa71Q,IAC5D8b,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAIj4B,GAAQ8nP,EAAAA,EAAAA,GAAgB4jH,EAAwB35E,GAChDz4P,EAAiBt5B,EAAMs5B,eAAgBC,EAAkBv5B,EAAMu5B,gBAAiB5jC,EAAYqK,EAAMrK,UAAW0E,EAAO2F,EAAM3F,KAAMhC,EAAe2H,EAAM3H,aAAc2D,EAAWgE,EAAMhE,SAAUpE,EAAOoI,EAAMpI,KAAM0/U,EAAiBt3U,EAAMs3U,eAAgBv3D,EAAS//Q,EAAM+/Q,OAAQvqR,EAAQwK,EAAMxK,MAAO+R,EAAQvH,EAAMuH,MAAOmxB,EAAQ14B,EAAM04B,MAAOn/B,EAAKyG,EAAMsF,KAAM6mN,OAAc,IAAP5yN,EAAgB4xB,EAAa7lB,KAAO/L,EAAI+N,EAAWtH,EAAMsH,SAAUokB,EAAU1rB,EAAM0rB,QACzbirN,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,UACX+wP,EAAAA,EAAAA,GAAyBvQ,EAAWxgP,QAE5C,GAAG,IACCurP,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,GAAG,CAACA,IACRpsP,EAAAA,oBAA0B6mB,EAAQwlO,GAClC,IAAI/nP,EAAKtE,EAAAA,SAAegD,GAAek/U,EAAe59U,EAAG,GAAI69U,EAAkB79U,EAAG,GAC9E6hE,OAAyBxmE,IAAVuS,EACfokW,EAAoBnwS,EAAej0D,EAAQgwU,EAC3C/rT,EAAen2B,EAAAA,aAAkB,SAAUW,GAC3C,IAAImmB,EAAenmB,EAAMuR,MACpBi0D,GAAiBx/D,GAClBw7U,EAAgBr7T,GAEhB7U,IAAatL,IACb0sM,EAAAA,EAAAA,GAAcphM,EAAUtR,EAAMk+B,eAAgBwtN,IAAuB,CAAEn6O,MAAO4U,GAEtF,GAAG,CAACq7T,EAAiBlwU,EAAUtL,IAC3ByvB,EAAcp2B,EAAAA,aAAkB,SAAUW,GACtC01B,IAAY1vB,IACZ0sM,EAAAA,EAAAA,GAAch9K,EAAS11B,EAAMk+B,eAAgBwtN,SAAuB1sP,EAE5E,GAAG,CAAC02B,EAAS1vB,IACT4vW,EAAiBv2W,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IAC/D41U,GAAoB36U,EAAAA,EAAAA,GAAW,eAAgB,CAC/C,oBAAgC,eAAX6uP,EACrB,kBAA8B,aAAXA,QAAoC/qR,IAAX+qR,GAC7CpqR,GACC8nB,GAAMk0O,EAAAA,EAAAA,GAAOhb,EAAY32O,EAAMyd,KAC/BquV,EAAgBzxW,GAAQA,EAAK0H,KAAI,SAAUi+C,EAAQtpC,GACnD,IAAIq1V,EAAqBJ,IAAsB3rT,EAAOz4C,MAClDykW,EAAwC,OAAtBL,QAAoD32W,IAAtB22W,EAChDM,EAAmBt1V,EAASA,EAAS,CAAC,EAAGqpC,GAAS,CAAEtnB,MAAOA,EAAO6oE,QAASwqQ,EAAoB/vW,YAAWgkD,EAAOhkD,WAAYA,GAA0Bs7U,eAAgBt3R,EAAOs3R,eAAiBt3R,EAAOs3R,eAAiBA,EAAgBjqT,SAAU2yB,EAAO3yB,SAClP2yB,EAAO3yB,SACN2+U,GAA6B,IAAVt1V,GAAgBq1V,EAChC,GACC,EAAGr1V,MAAOA,EAAO9e,KAAMA,GAAQg0W,EAAgBtkW,SAAUkkB,EAAcE,QAASD,IAC/F,OAAQp2B,EAAAA,cAAoB82N,EAAM,CAAEx2N,WAAWu7B,EAAAA,EAAAA,GAAW,eAAgB,CAAE,aAAc+6U,EAAiBjwW,UAAYA,IAAaoxB,IAAK1W,EAAO7c,KAAM,QAClJxE,EAAAA,cAAoBk2W,EAAAA,EAAa50V,EAAS,CAAC,EAAGs1V,IACtD,IACA,OAAQ52W,EAAAA,cAAoB,KAAM,CAAEwE,KAAM,aAAclE,UAAWk2W,EAAmBh2W,IAAK8gP,EAAYl5N,IAAKA,EAAKjoB,MAAOA,EAAO,kBAAmB8jC,EAAgB,mBAAoBC,GAAmBuyU,EAC7M,IACI3gV,EAAe,CACf7lB,KAAM,SAAUtF,GAAS,OAAO3K,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG3W,GAAS,GAEpFq9D,EAAWvvC,UAAY,CACnBwL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjBp4B,UAAWo4B,EAAAA,OACX1zB,KAAM0zB,EAAAA,QAAkBA,EAAAA,QACxB11B,aAAc01B,EAAAA,IACdtQ,IAAKsQ,EAAAA,OACL/xB,SAAU+xB,EAAAA,KACVupT,eAAgBvpT,EAAAA,OAChBgyP,OAAQhyP,EAAAA,OACRn2B,KAAMm2B,EAAAA,OACNv4B,MAAOu4B,EAAAA,OACPxmB,MAAOwmB,EAAAA,IACPzmB,SAAUymB,EAAAA,KACVrC,QAASqC,EAAAA,MAEbsvC,EAAWlyC,aAAeA,EAC1BkyC,EAAWzhC,YAAc,uNCrGrBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EA6BW09U,GAA0B9vU,EAAAA,EAAAA,KAO1BkiC,EAAcjpE,EAAAA,YAAiB,SAAU08R,EAAal8R,GAC7D,IAAI0D,EAAII,GACRq+B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAIj4B,GAAQ8nP,EAAAA,EAAAA,GAAgBokH,EAAyBn6E,GACjD71Q,EAAS7mB,EAAAA,OAAa,MACtB82W,EAAY92W,EAAAA,OAAa,MACzB+2W,EAAqB/2W,EAAAA,OAAa,MAClCg3W,EAAch3W,EAAAA,OAAa,MAC3Bi3W,EAAYj3W,EAAAA,OAAa,MACzB00B,EAAQ10B,EAAAA,aAAkB,WACtBg3W,EAAYl2W,SACZk2W,EAAYl2W,QAAQ4zB,OAE5B,GAAG,CAACsiV,IACJh3W,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASgiV,EAAUh2W,QACnB4zB,MAAOA,EACP/pB,MAAOA,EACP,IACJ3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAAI0gB,EAAMxhB,EAAAA,SAAc,WAAc,OAAO2K,EAAM6W,GAAK,GAAG,CAAC7W,EAAM6W,MAC9DG,EAAM3hB,EAAAA,SAAc,WAAc,OAAO2K,EAAMgX,GAAK,GAAG,CAAChX,EAAMgX,MAC9DrB,EAAOtgB,EAAAA,SAAc,WAAc,YAAsBL,IAAfgL,EAAM2V,KAAqB3V,EAAM2V,KAAOwV,EAAaxV,IAAM,GAAG,CAAC3V,EAAM2V,KAAMwV,EAAaxV,OAClI8H,GAAMs+N,EAAAA,EAAAA,GAAOowH,EAAWnsW,EAAMyd,KAU9BzjB,EAAK3E,EAAAA,SAAe,IAAKk3W,EAAcvyW,EAAG,GAAIwyW,EAAiBxyW,EAAG,GAClEG,EA1DO,SAAU9B,EAAc2xB,EAAM2tC,GACzC,IAAIp+D,EAAKlE,EAAAA,SAAegD,GAAexD,EAAQ0E,EAAG,GAAI82B,EAAW92B,EAAG,GAChEkzW,EAAuBp3W,EAAAA,aAAkB,SAAU8e,GACnD,IAAI5P,GAAWmoW,EAAAA,EAAAA,GAAa1iV,EAAKn1B,OAASA,EAAO8hB,EAASA,EAAS,CAAC,EAAGxC,GAAS6V,IAC5E2tC,GACAA,EAASpzD,EAAU4P,EAAOne,OAE9Bq6B,EAAS9rB,EACb,GAAG,CAACylB,EAAM2tC,IACV,MAAO,CAAC9iE,EAAO43W,EACnB,CAgDaE,CAAS3sW,EAAM3H,cAAgB8yB,EAAa9yB,aAAc,CAC/Dwe,IAAKA,EACLG,IAAKA,EACLrB,KAAMA,EACN9gB,MAAOmL,EAAMuH,QAdE,SAAU6oK,EAAUp6K,GAC/BgK,EAAMsH,UAAY4U,EAAO/lB,SACzB6J,EAAMsH,SAASihB,UAAKvzB,EAAW,CAC3BuS,MAAO6oK,EACPl0J,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,IAOkBuuC,EAAapqC,EAAG,GAAI6jP,EAAqB7jP,EAAG,GAC1DoN,EAAQlS,EAAAA,SAAc,WAAc,OAAO2K,EAAMuH,OAASg9B,CAAY,GAAG,CAACvkC,EAAMuH,MAAOg9B,IACvFqoU,EAAiBv3W,EAAAA,OAAa,MAC9Bw3W,EAAqBx3W,EAAAA,OAAa,MAClCy3W,EAAez3W,EAAAA,SAAc,WAAc,OAASkS,EAAMsd,MAAQhO,IAAQG,EAAMH,GAAQ,GAAK,GAAG,CAACtP,EAAMsd,MAAOhO,EAAKG,IACnH+1V,EAAa13W,EAAAA,SAAc,WAAc,OAASkS,EAAMuhB,IAAMjS,IAAQG,EAAMH,GAAQ,GAAK,GAAG,CAACtP,EAAMuhB,IAAKjS,EAAKG,IAC7Gg2V,EAAmB33W,EAAAA,SAAc,WAAc,OAAO2K,EAAMg7B,SAAW,CAAE77B,WAAY,EAAGhC,OAAQ,QAAW,CAAC,CAAG,GAAG,CAAC6C,EAAMg7B,WACzHiyU,EAAc53W,EAAAA,SAAc,WAAc,OAAO2K,EAAMg7B,SACrD,CAAE7iC,UAAW,SAAUoH,aAAc,UACrC,CAAE7J,WAAY,SAAU6B,YAAa,SAAY,GAAG,CAACyI,EAAMg7B,WAC7D0G,GAAei/O,EAAAA,EAAAA,KACfusF,EAAkB73W,EAAAA,aAAkB,SAAUW,GAC9C,GAAK62W,EAAmB12W,QAAxB,CAGA,IAAIyxD,EAAWilT,EAAmB12W,QAAQstG,wBACtCj5E,EAAWxqB,EAAMg7B,SACd4sB,EAASq0C,OAASjmG,EAAMwjM,QACjB,QAAR/7K,EACKmqC,EAASjsD,MAAQ3F,EAAMujM,QACvBvjM,EAAMujM,QAAU3xI,EAASp2C,KAChCnW,EAAO2E,EAAMg7B,SAAW4sB,EAASzqD,OAASyqD,EAASzrD,MAGvD,OADe0a,EADG2T,EAAWnvB,GACM2b,EAAMH,EATzC,CAWJ,GAAG,CACCg2V,EACA7sW,EAAMg7B,SACNvd,EACA5G,EACAG,EACAutB,EAAW1f,MACX0f,EAAWzb,IACX9oB,EAAMuH,OAASvH,EAAMuH,MAAMsd,MAC3B7kB,EAAMuH,OAASvH,EAAMuH,MAAMuhB,MAE3BqkV,EAAU93W,EAAAA,aAAkB,SAAUmB,GACtC,OAAIA,GAAW+Q,EAAMsd,MACV,QAEPruB,GAAW+Q,EAAMuhB,IACV,MAEH,EAAItyB,EAAU+Q,EAAMuhB,IAAMvhB,EAAMsd,MAAS,QAAU,KAC/D,GAAG,CACC0f,EAAW1f,MAAO0f,EAAWzb,IAC7B9oB,EAAMuH,OAASvH,EAAMuH,MAAMsd,MAC3B7kB,EAAMuH,OAASvH,EAAMuH,MAAMuhB,MAE3BskV,EAAqB/3W,EAAAA,aAAkB,SAAUW,GACjD,OAAQA,EAAMm2B,SACV,KAAKtD,EAAAA,EAAKltB,MACN3F,EAAM+gB,iBACNinO,EAAmB,CAAE1iP,KAAc,QAARmiB,EAAgB4vV,EAAAA,EAAaC,SAAWD,EAAAA,EAAaE,SAAUngV,IAAK,QAASp3B,MAAOA,IAC/G,MACJ,KAAK6yB,EAAAA,EAAKG,GACNhzB,EAAM+gB,iBACNinO,EAAmB,CAAE1iP,KAAM+xW,EAAAA,EAAaE,SAAUngV,IAAK,QAASp3B,MAAOA,IACvE,MACJ,KAAK6yB,EAAAA,EAAKrX,KACNxb,EAAM+gB,iBACNinO,EAAmB,CAAE1iP,KAAc,QAARmiB,EAAgB4vV,EAAAA,EAAaE,SAAWF,EAAAA,EAAaC,SAAUlgV,IAAK,QAASp3B,MAAOA,IAC/G,MACJ,KAAK6yB,EAAAA,EAAKI,KACNjzB,EAAM+gB,iBACNinO,EAAmB,CAAE1iP,KAAM+xW,EAAAA,EAAaC,SAAUlgV,IAAK,QAASp3B,MAAOA,IACvE,MACJ,KAAK6yB,EAAAA,EAAKE,KACN/yB,EAAM+gB,iBACNinO,EAAmB,CAAE1iP,KAAM+xW,EAAAA,EAAax2V,IAAKuW,IAAK,QAASp3B,MAAOA,IAClE,MACJ,KAAK6yB,EAAAA,EAAKC,IACN9yB,EAAM+gB,iBACNinO,EAAmB,CAAE1iP,KAAM+xW,EAAAA,EAAar2V,IAAKoW,IAAK,QAASp3B,MAAOA,IAK9E,GAAG,CAACgoP,IACAwvH,EAAmBn4W,EAAAA,aAAkB,SAAUW,GAC/C,OAAQA,EAAMm2B,SACV,KAAKtD,EAAAA,EAAKltB,MACN3F,EAAM+gB,iBACNinO,EAAmB,CAAE1iP,KAAc,QAARmiB,EAAgB4vV,EAAAA,EAAaC,SAAWD,EAAAA,EAAaE,SAAUngV,IAAK,MAAOp3B,MAAOA,IAC7G,MACJ,KAAK6yB,EAAAA,EAAKG,GACNhzB,EAAM+gB,iBACNinO,EAAmB,CAAE1iP,KAAM+xW,EAAAA,EAAaE,SAAUngV,IAAK,MAAOp3B,MAAOA,IACrE,MACJ,KAAK6yB,EAAAA,EAAKrX,KACNxb,EAAM+gB,iBACNinO,EAAmB,CAAE1iP,KAAc,QAARmiB,EAAgB4vV,EAAAA,EAAaE,SAAWF,EAAAA,EAAaC,SAAUlgV,IAAK,MAAOp3B,MAAOA,IAC7G,MACJ,KAAK6yB,EAAAA,EAAKI,KACNjzB,EAAM+gB,iBACNinO,EAAmB,CAAE1iP,KAAM+xW,EAAAA,EAAaC,SAAUlgV,IAAK,MAAOp3B,MAAOA,IACrE,MACJ,KAAK6yB,EAAAA,EAAKE,KACN/yB,EAAM+gB,iBACNinO,EAAmB,CAAE1iP,KAAM+xW,EAAAA,EAAax2V,IAAKuW,IAAK,MAAOp3B,MAAOA,IAChE,MACJ,KAAK6yB,EAAAA,EAAKC,IACN9yB,EAAM+gB,iBACNinO,EAAmB,CAAE1iP,KAAM+xW,EAAAA,EAAar2V,IAAKoW,IAAK,MAAOp3B,MAAOA,IAK5E,GAAG,CAACgoP,EAAoBvgO,IACpBgwV,EAAmBp4W,EAAAA,aAAkB,SAAUW,GAC/C,IAAIQ,EAAU02W,EAAgBl3W,GAC1Bo3B,EAAM+/U,EAAQ32W,GAClBg2W,EAAep/U,GACP,QAARA,EAAgBk/U,EAAUn2W,QAAQ4zB,QAAUsiV,EAAYl2W,QAAQ4zB,QAChE,IAAI5V,EAAkB,QAARiZ,EAAgBigV,EAAAA,EAAavkV,IAAMukV,EAAAA,EAAaxoV,MAC9Dm5N,EAAmB,CAAE1iP,KAAM6Y,EAAQ3d,QAASA,EAASR,MAAOA,GAChE,GAAG,CAACgK,EAAMg7B,SAAUnkB,EAAKG,EAAKgnO,IAa9B,OADA4H,EAAAA,EAAAA,GAAainH,EAAoB,CAAE1nH,QAASsoH,EAAkBhoH,OAXxC,SAAUzvP,GAC5B,IAAIQ,EAAU02W,EAAgBl3W,GAC1Bme,EAAyB,QAAhBo4V,EAAwBc,EAAAA,EAAavkV,IAAMukV,EAAAA,EAAaxoV,MACrEm5N,EAAmB,CAAE1iP,KAAM6Y,EAAQ3d,QAASA,EAASR,MAAOA,GAChE,EAOuFqvP,UAN9D,SAAUrvP,GAC/B,IAAIQ,EAAU02W,EAAgBl3W,GAC1Bme,EAAyB,QAAhBo4V,EAAwBc,EAAAA,EAAavkV,IAAMukV,EAAAA,EAAaxoV,MACrEm5N,EAAmB,CAAE1iP,KAAM6Y,EAAQ3d,QAASA,EAASR,MAAOA,IAC5Dw2W,EAAe,GACnB,IAEQn3W,EAAAA,cAAoB,MAAO,CAAEH,GAAI8K,EAAM9K,GAAIM,MAAOwK,EAAMxK,MAAOK,IAAKs2W,EAAW1uV,IAAKA,EAAK9nB,WAAWu7B,EAAAA,EAAAA,GAAW,WAAY,CAC3H,QAAiB,QAARzT,EACT,aAAczd,EAAMhE,SACpB,oBAAqBgE,EAAMg7B,SAC3B,uBAAwBh7B,EAAMg7B,UAC/Bh7B,EAAMrK,YACTN,EAAAA,cAAoB,MAAO,CAAEQ,IAAKg3W,EAAoBl3W,UAAW,sBAAuBH,MAAOmhB,EAAS,CAAE+2V,SAAU,EAAGjyW,SAAU,WAAYo1P,YAAa,QAAUo8G,IAChKjtW,EAAMzK,UAAaF,EAAAA,cAAoB,KAAM,CAAEM,UAAW,yBAA0BH,MAAOmhB,EAAS,CAAC,EAAGq2V,IAAqB33W,EAAAA,SAAe0M,IAAI/B,EAAMzK,UAAU,SAAU+jH,GACtK,OAAOA,GAASjkH,EAAAA,aAAmBikH,EAAO,CACtC79G,SAAU,KAAO69G,EAAMt5G,MAAMvE,SAAWuE,EAAM6W,MACzC7W,EAAMgX,IAAMhX,EAAM6W,KACvBmkB,SAAUh7B,EAAMg7B,UACjBs+E,EAAMt5G,MAAMzK,SACnB,KACAF,EAAAA,cAAoB,MAAO,CAAEQ,IAAK+2W,EAAgBj3W,UAAW,iBAAkBH,MAAOwK,EAAMg7B,SAClF,CAAEihE,OAAQ,EAAG9+F,OAAQ,SACpB5D,EAAK,CAAC,EAAGA,EAAW,QAARkkB,EAAgB,QAAU,QAAU,EAAGlkB,EAAG4C,MAAQ,OAAQ5C,IAC3D,OAAjBuzW,GAAwC,OAAfC,GAAwB13W,EAAAA,cAAoB,MAAO,CAAE,kBAAkB,EAAMQ,IAAKu2W,EAAoBtqW,MAAO,GAAGkE,OAAOuB,EAAMsd,MAAO,OAAO7e,OAAOuB,EAAMuhB,KAAMnzB,UAAW,qBAAsBH,MAAOwK,EAAMg7B,SAC5N,CAAE79B,OAAS4vW,EAAaD,EAAgB,IAAK7wQ,OAAQ6wQ,EAAe,MACnEnzW,EAAK,CAAC,EACLA,EAAW,QAAR8jB,EAAgB,QAAU,QAAUqvV,EAAe,IACtDnzW,EAAGwC,MAAS4wW,EAAaD,EAAgB,IACzCnzW,KACZtE,EAAAA,cAAoB,OAAQ,CAAEQ,IAAKw2W,EAAaxyW,KAAM,SAAUwzB,UAAUkvC,EAAAA,EAAAA,GAAYv8D,EAAM2tW,cAAe3tW,EAAMhE,cAAUhH,GAAY,gBAAiB6hB,EAAK,gBAAiBD,KAAKI,IAAIA,EAAKzP,EAAMuhB,KAAM,gBAAiBvhB,EAAMsd,MAAO,gBAAiB7kB,EAAMhE,SAAW,YAAShH,EAAW,iBAAkB,GAAGgR,OAAOuB,EAAMsd,MAAO,OAAO7e,OAAOuB,EAAMuhB,KAAMnzB,UAAW,eAAgBmM,MAAO4/B,EAAapQ,iBAAiBiyU,EAAAA,GAAiB/xU,EAAAA,GAAS+xU,EAAAA,KAAmB/tW,MAAOwK,EAAMg7B,SAC/c,CAAEihE,OAAQ,QAAU6wQ,EAAe,KAAMlxW,OAAQ,GACzC,QAAR6hB,EAAgB,CAAE9hB,MAAO,QAAUmxW,EAAe,YAAalxW,OAAQ,GACnE,CAAE4V,KAAM,QAAUs7V,EAAe,KAAMlxW,OAAQ,GAAK2xB,UAAW6/U,IAC7E/3W,EAAAA,cAAoB,OAAQ,CAAEQ,IAAKy2W,EAAWzyW,KAAM,SAAUwzB,UAAUkvC,EAAAA,EAAAA,GAAYv8D,EAAM4tW,YAAa5tW,EAAMhE,cAAUhH,GAAY,gBAAiB4hB,KAAKC,IAAIA,EAAKtP,EAAMsd,OAAQ,gBAAiB7N,EAAK,gBAAiBzP,EAAMuhB,IAAK,gBAAiB9oB,EAAMhE,SAAW,YAAShH,EAAW,iBAAkB,GAAGgR,OAAOuB,EAAMsd,MAAO,OAAO7e,OAAOuB,EAAMuhB,KAAMnzB,UAAW,eAAgBmM,MAAO4/B,EAAapQ,iBAAiBiyU,EAAAA,GAAiB/xU,EAAAA,GAAS+xU,EAAAA,KAAmB/tW,MAAOwK,EAAMg7B,SAC3c,CAAEihE,OAAQ,QAAU8wQ,EAAa,KAAMnxW,OAAQ,GACvC,QAAR6hB,EAAgB,CAAE9hB,MAAO,QAAUoxW,EAAa,YAAanxW,OAAQ,GACjE,CAAE4V,KAAM,QAAUu7V,EAAa,KAAMnxW,OAAQ,GAAK2xB,UAAWigV,MAC3F,IACI1/U,EAAY,CACZvmB,MAAO,SAAUvH,EAAOguB,EAAUC,GAC9B,GAAIjuB,EAAMuH,MAAO,CACb,IAAIsd,EAAQ7kB,EAAMuH,MAAMsd,MACpBiE,EAAM9oB,EAAMuH,MAAMuhB,IAClBjS,EAAM7W,EAAM6W,IACZG,EAAMhX,EAAMgX,IAChB,GAAI6N,EAAQiE,GAAOjE,EAAQ7N,GAAO6N,EAAQhO,GAAOiS,EAAM9R,GAAO8R,EAAMjS,GAAOiS,EAAMjE,EAC7E,OAAO,IAAIsJ,MAAM,kBAAkBnoB,OAAOgoB,EAAU,iBAAiBhoB,OAAOioB,EAAe,qJAEnG,CACA,OAAO,IACX,EACA51B,aAAc,SAAU2H,EAAOguB,EAAUC,GACrC,GAAIjuB,EAAM3H,aAAc,CACpB,IAAIwsB,EAAQ7kB,EAAM3H,aAAawsB,MAC3BiE,EAAM9oB,EAAM3H,aAAaywB,IACzBjS,EAAM7W,EAAM6W,IACZG,EAAMhX,EAAMgX,IAChB,GAAI6N,EAAQiE,GAAOjE,EAAQ7N,GAAO6N,EAAQhO,GAAOiS,EAAM9R,GAAO8R,EAAMjS,GAAOiS,EAAMjE,EAC7E,OAAO,IAAIsJ,MAAM,kBAAkBnoB,OAAOgoB,EAAU,iBAAiBhoB,OAAOioB,EAAe,qJAEnG,CACA,OAAO,IACX,EACA3mB,SAAUymB,EAAAA,KACVpY,KAAMoY,EAAAA,OACNlX,IAAK,SAAU7W,EAAOguB,EAAUC,GAC5B,IAAIC,EAAOluB,EAAMguB,GACbnX,EAAM7W,EAAM6W,IACZG,EAAMhX,EAAMgX,IAChB,YAAYhiB,IAAR6hB,EACO,IAAIsX,MAAM,kBAAkBnoB,OAAOgoB,EAAU,iBAAiBhoB,OAAOioB,EAAe,uBAAuBjoB,OAAOgoB,EAAU,mDAEnIE,GAAQrX,GAAOG,EACR,IAAImX,MAAM,kBAAkBnoB,OAAOgoB,EAAU,iBAAiBhoB,OAAOioB,EAAe,uBAAuBjoB,OAAOgoB,EAAU,+EAEhI,IACX,EACAhX,IAAK,SAAUhX,EAAOguB,EAAUC,GAC5B,IAAIC,EAAOluB,EAAMguB,GACbnX,EAAM7W,EAAM6W,IACZG,EAAMhX,EAAMgX,IAChB,YAAYhiB,IAARgiB,EACO,IAAImX,MAAM,kBAAkBnoB,OAAOgoB,EAAU,iBAAiBhoB,OAAOioB,EAAe,uBAAuBjoB,OAAOgoB,EAAU,mDAEnIE,GAAQlX,GAAOH,EACR,IAAIsX,MAAM,kBAAkBnoB,OAAOgoB,EAAU,iBAAiBhoB,OAAOioB,EAAe,uBAAuBjoB,OAAOgoB,EAAU,gFAEhI,IACX,EACAgN,SAAUjN,EAAAA,KACV/xB,SAAU+xB,EAAAA,KACVtQ,IAAKsQ,EAAAA,MAAgB,CAAC,MAAO,SAE7B5C,EAAe,CACfxV,KAAM,EACNtd,aAAc,CACVwsB,MAAO,EACPiE,IAAK,GAETkS,UAAU,EACVh/B,UAAU,GAEdsiE,EAAY1iC,YAAc,wBAE1B0iC,EAAYxwC,UAAYA,EACxBwwC,EAAYnzC,aAAeA,wDCzT3B,IAcWkiV,EAdP12V,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,GAKA,SAAW6+U,GACPA,EAAoB,MAAI,QACxBA,EAAkB,IAAI,MACtBA,EAAkB,IAAI,MACtBA,EAAkB,IAAI,MACtBA,EAAuB,SAAI,WAC3BA,EAAuB,SAAI,UAC9B,CAPD,CAOGA,IAAiBA,EAAe,CAAC,IAI7B,IAAIX,EAAe,SAAU73W,EAAOsf,GACvC,IAAI5P,EACA6rK,EACJ,OAAQj8J,EAAO7Y,MACX,KAAK+xW,EAAaxoV,MACd,QAAuB7vB,IAAnBmf,EAAO3d,QACP,OAAO3B,EAEX0P,EAAW,CACPsgB,MAAO1Q,EAAO3d,QAAU3B,EAAMi0B,IAAMj0B,EAAMi0B,IAAMlS,KAAKI,IAAI7C,EAAO3d,QAAS2d,EAAO0C,KAChFiS,IAAKj0B,EAAMi0B,KAEf,MACJ,KAAKukV,EAAavkV,IACd,QAAuB9zB,IAAnBmf,EAAO3d,QACP,OAAO3B,EAEX0P,EAAW,CACPsgB,MAAOhwB,EAAMgwB,MACbiE,IAAK3U,EAAO3d,QAAU3B,EAAMgwB,MAAQhwB,EAAMgwB,MAAQjO,KAAKC,IAAI1C,EAAO3d,QAAS2d,EAAO6C,MAEtF,MACJ,KAAKq2V,EAAax2V,IAEVtS,EADe,UAAf4P,EAAOiZ,IACIzW,EAASA,EAAS,CAAC,EAAG9hB,GAAQ,CAAEgwB,MAAO1Q,EAAO0C,MAG9CF,EAASA,EAAS,CAAC,EAAG9hB,GAAQ,CAAEi0B,IAAKlS,KAAKI,IAAI7C,EAAO0C,IAAKhiB,EAAMgwB,SAE/E,MACJ,KAAKwoV,EAAar2V,IAEVzS,EADe,UAAf4P,EAAOiZ,IACIzW,EAASA,EAAS,CAAC,EAAG9hB,GAAQ,CAAEgwB,MAAOjO,KAAKC,IAAI1C,EAAO6C,IAAKniB,EAAMi0B,OAGlEnS,EAASA,EAAS,CAAC,EAAG9hB,GAAQ,CAAEi0B,IAAK3U,EAAO6C,MAE3D,MACJ,KAAKq2V,EAAaE,SACd,QAAoBv4W,IAAhBmf,EAAOwB,WAAqC3gB,IAAfmf,EAAOiZ,IACpC,OAAOv4B,EAEXu7K,EAAWv7K,EAAMsf,EAAOiZ,KAAOjZ,EAAOwB,KAG9BpR,EAFW,UAAf4P,EAAOiZ,IACHgjJ,EAAWj8J,EAAO0C,IACPF,EAASA,EAAS,CAAC,EAAG9hB,GAAQ,CAAEgwB,MAAO1Q,EAAO0C,MAG9CF,EAASA,EAAS,CAAC,EAAG9hB,GAAQ,CAAEgwB,MAAOjO,KAAKC,IAAIu5J,EAAUv7K,EAAMi0B,OAI3EsnJ,EAAWj8J,EAAO6C,IACPL,EAASA,EAAS,CAAC,EAAG9hB,GAAQ,CAAEi0B,IAAK3U,EAAO6C,MAG5CL,EAASA,EAAS,CAAC,EAAG9hB,GAAQ,CAAEi0B,IAAKlS,KAAKI,IAAIo5J,EAAUv7K,EAAMgwB,SAGjF,MACJ,KAAKwoV,EAAaC,SACd,QAAoBt4W,IAAhBmf,EAAOwB,WAAqC3gB,IAAfmf,EAAOiZ,IACpC,OAAOv4B,EAEXu7K,EAAWv7K,EAAMsf,EAAOiZ,KAAOjZ,EAAOwB,KAG9BpR,EAFW,UAAf4P,EAAOiZ,IACHgjJ,EAAWj8J,EAAO0C,IACPF,EAASA,EAAS,CAAC,EAAG9hB,GAAQ,CAAEgwB,MAAO1Q,EAAO0C,MAG9CF,EAASA,EAAS,CAAC,EAAG9hB,GAAQ,CAAEgwB,MAAOjO,KAAKC,IAAIu5J,EAAUv7K,EAAMi0B,OAI3EsnJ,EAAWj8J,EAAO6C,IACPL,EAASA,EAAS,CAAC,EAAG9hB,GAAQ,CAAEi0B,IAAK3U,EAAO6C,MAG5CL,EAASA,EAAS,CAAC,EAAG9hB,GAAQ,CAAEi0B,IAAKlS,KAAKI,IAAIo5J,EAAUv7K,EAAMgwB,SAGjF,MACJ,QACItgB,EAAW1P,EAGnB,OAAO0P,CACX,2NCjHIoS,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAaIq/U,EAAY,SAAUx1W,EAAc2xB,EAAM2tC,GAC1C,IAAIp+D,EAAKlE,EAAAA,SAAegD,GAAexD,EAAQ0E,EAAG,GAAI82B,EAAW92B,EAAG,GAQpE,MAAO,CAAC1E,EAPmB,SAAUsf,GACjC,IAAI5P,GAAWupW,EAAAA,EAAAA,GAAc9jV,EAAKn1B,OAASA,EAAO8hB,EAASA,EAAS,CAAC,EAAGxC,GAAS6V,IAC7E2tC,GACAA,EAASpzD,EAAU4P,EAAOne,OAE9Bq6B,EAAS9rB,EACb,EAEJ,EAOWwpW,GAAqB3xU,EAAAA,EAAAA,KAOrBoiC,EAASnpE,EAAAA,YAAiB,SAAU08R,EAAal8R,GACxD,IAAImK,GAAQ8nP,EAAAA,EAAAA,GAAgBimH,EAAoBh8E,GAC5CrwP,GAAei/O,EAAAA,EAAAA,KACfzkQ,EAAS7mB,EAAAA,OAAa,MACtB24W,EAAY34W,EAAAA,OAAa,MACzBooB,GAAMs+N,EAAAA,EAAAA,GAAOiyH,EAAWhuW,EAAMyd,KAClCpoB,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAAS6jV,EAAU73W,QACnB6J,MAAOA,EACP,IACJ3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IA2IpE,IA1IA,IAAIq1B,EAAen2B,EAAAA,aAAkB,SAAU+6K,EAAUp6K,GACjDgK,EAAMsH,UAAY4U,EAAO/lB,SACzB6J,EAAMsH,SAASihB,UAAKvzB,EAAW,CAC3BuS,MAAO6oK,EACPl0J,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACgK,EAAMsH,WACNuP,EAAMxhB,EAAAA,SAAc,WAAc,YAAqBL,IAAdgL,EAAM6W,IAAoB7W,EAAM6W,IAAMsU,EAAatU,GAAK,GAAG,CAAC7W,EAAM6W,MAC3GG,EAAM3hB,EAAAA,SAAc,WAAc,YAAqBL,IAAdgL,EAAMgX,IAAoBhX,EAAMgX,IAAMmU,EAAanU,GAAK,GAAG,CAAChX,EAAMgX,MAC3GiiF,EAAY5jG,EAAAA,SAAc,WAAc,OAAO2K,EAAMi5F,WAAa9tE,EAAa8tE,SAAW,GAAG,CAACj5F,EAAMi5F,YACpGtjF,EAAOtgB,EAAAA,SAAc,WAAc,YAAsBL,IAAfgL,EAAM2V,KAAqB3V,EAAM2V,KAAOwV,EAAaxV,IAAM,GAAG,CAAC3V,EAAM2V,OAC/G6kB,EAAWnlC,EAAAA,SAAc,WAAc,OAAO2K,EAAMw6B,UAAYrP,EAAaqP,QAAU,GAAG,CAACx6B,EAAMw6B,WACjGx+B,EAAW3G,EAAAA,SAAc,WAAc,OAAO2K,EAAMhE,UAAYmvB,EAAanvB,QAAU,GAAG,CAACgE,EAAMhE,WACjGmwN,EAAO92N,EAAAA,SAAc,WAAc,OAAO2K,EAAMsF,MAAQ6lB,EAAa7lB,IAAM,GAAG,CAACtF,EAAMsF,OACrF/L,EAAKs0W,OAAiC74W,IAAvBgL,EAAM3H,aAA6B2H,EAAM3H,aAAe8yB,EAAa9yB,aAAc,CAClGxD,MAAOmL,EAAMuH,MACbsP,IAAKA,EACLG,IAAKA,EACLrB,KAAoB,SAAdsjF,EAAuBtjF,EAAO,EAAIA,GACzC6V,GAAe+Y,EAAahrC,EAAG,GAAIykP,EAAqBzkP,EAAG,GAC1DI,EAAKk0W,EAAU,KAAM,CACrBh5W,MAAOmL,EAAMuH,MACbsP,IAAKA,EACLG,IAAKA,EACLrB,KAAoB,SAAdsjF,EAAuBtjF,EAAO,EAAIA,EACxCsjF,UAAWA,IACXg1Q,EAAat0W,EAAG,GAAIu0W,EAAqBv0W,EAAG,GAC5C4N,EAAQlS,EAAAA,SAAc,WAAc,YAAuBL,IAAhBgL,EAAMuH,MAAsBvH,EAAMuH,MAAQg9B,CAAY,GAAG,CAACvkC,EAAMuH,MAAOg9B,IAClH4pU,EAAe94W,EAAAA,SAAc,WAAc,OAAO44W,CAAY,GAAG,CAACA,IAClErnP,EAAYvxH,EAAAA,SAAc,WAAc,OAAO2K,EAAM4mH,WAAaz7F,EAAay7F,SAAW,GAAG,CAAC5mH,EAAM4mH,YACpGsJ,EAAO76H,EAAAA,SAAc,WAAc,OAAOsgB,GAAsB,SAAdsjF,EAAuB,EAAI,EAAI,GAAG,CAACtjF,EAAMsjF,IAC3FsqJ,EAAkBluP,EAAAA,aAAkB,SAAUW,GAC9C,GAAKA,EAAMkmB,QAAWlmB,EAAMkmB,OAAOiO,UAAWqQ,IAAYx+B,EAA1D,CAGA,GAAkB,SAAdi9F,EAAsB,CACtB,IAAI0F,EAAO3oG,EAAMkmB,OAAOiO,QAAQs5E,wBAE5BjtG,GADc43W,EAAAA,EAAAA,IAAgB3wV,GAAY,MAAOkhF,EAAM3oG,EAAMk+B,eAAeqlK,UACpD80K,EAAAA,EAAAA,IAAQr4W,EAAMkmB,OAAO3U,MAASoO,EAAO,EAAIu6G,GAAQl6H,EAAMkmB,OAAO3U,MAC1Fy2O,EAAmB,CAAE1iP,KAAMgzW,EAAAA,EAAc/kU,OAAQ/yC,QAASA,EAASR,MAAOA,EAAMk+B,gBACpF,MAEI8pN,EAAmB,CAAE1iP,KAAMgzW,EAAAA,EAAc/kU,OAAQ/yC,QAASR,EAAMkmB,OAAO3U,MAAOvR,MAAOA,EAAMk+B,iBAE/F,GAAIl0B,EAAM7I,QAAS,CACf,IAAImvN,EAAK,CACL/+M,MAAOA,EACP2U,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,EAAMk+B,gBAE1Bl0B,EAAM7I,QAAQoxB,UAAKvzB,EAAWsxN,EAClC,CAjBA,CAkBJ,GAAG,CAACtmN,EAAM7I,QAAS6mP,EAAoBz2O,IACnC2kB,EAAgB72B,EAAAA,aAAkB,SAAU6+B,GAC5C,IAAIsG,IAAYx+B,EAAhB,CAGA,OAAQk4B,EAAe/H,SACnB,KAAKtD,EAAAA,EAAKltB,MACNu4B,EAAend,iBACfinO,EAAmB,CACf1iP,KAAc,QAARmiB,EAAgB6wV,EAAAA,EAAchB,SAAWgB,EAAAA,EAAcf,SAAUv3W,MAAOk+B,IAElF,MACJ,KAAKrL,EAAAA,EAAKrX,KACN0iB,EAAend,iBACfinO,EAAmB,CACf1iP,KAAc,QAARmiB,EAAgB6wV,EAAAA,EAAcf,SAAWe,EAAAA,EAAchB,SAAUt3W,MAAOk+B,IAElF,MACJ,KAAKrL,EAAAA,EAAKE,KACNmL,EAAend,iBACfinO,EAAmB,CACf1iP,KAAc,QAARmiB,EAAgB6wV,EAAAA,EAAcz3V,IAAMy3V,EAAAA,EAAct3V,IAAKhhB,MAAOk+B,IAExE,MACJ,KAAKrL,EAAAA,EAAKC,IACNoL,EAAend,iBACfinO,EAAmB,CACf1iP,KAAc,QAARmiB,EAAgB6wV,EAAAA,EAAct3V,IAAMs3V,EAAAA,EAAcz3V,IAAK7gB,MAAOk+B,IAExE,MACJ,KAAKrL,EAAAA,EAAKiP,IACN5D,EAAend,iBACfinO,EAAmB,CACf1iP,KAAMgzW,EAAAA,EAAcC,SAAUv4W,MAAOk+B,IAM7Cl0B,EAAMutB,WACNvtB,EAAMutB,UAAUhF,UAAKvzB,EAAW,CAC5BuS,MAAOA,EACP2U,OAAQA,EAAO/lB,QACf+9B,eAAgBA,GAvCxB,CA0CJ,GAAG,CAACl0B,EAAMutB,UAAWywN,EAAoBz2O,IACrCkkB,EAAcp2B,EAAAA,aAAkB,SAAU6+B,GAC1C,GAAIl0B,EAAM0rB,QAAS,CACf,IAAI46L,EAAK,CACLpqM,OAAQA,EAAO/lB,QACf+9B,eAAgBA,GAEpBl0B,EAAM0rB,QAAQnD,UAAKvzB,EAAWsxN,EAClC,CACJ,GAAG,CAACtmN,EAAM0rB,UACNC,EAAat2B,EAAAA,aAAkB,SAAU6+B,GACzC,GAAIl0B,EAAM4rB,OAAQ,CACd,IAAI06L,EAAK,CACLpqM,OAAQA,EAAO/lB,QACf+9B,eAAgBA,GAEpBl0B,EAAM4rB,OAAOrD,UAAKvzB,EAAWsxN,EACjC,CACJ,GAAG,CAACtmN,EAAM4rB,SACN4iV,EAAsBn5W,EAAAA,aAAkB,SAAUW,GAClD,GAAKA,EAAMkmB,QAAWlmB,EAAMkmB,OAAOiO,QAGnC,GAAkB,SAAd8uE,EAAsB,CACtB,IAAI0F,EAAO3oG,EAAMkmB,OAAOiO,QAAQs5E,wBAE5BjtG,GADc43W,EAAAA,EAAAA,IAAgB3wV,GAAY,MAAOkhF,EAAM3oG,EAAMk+B,eAAeqlK,SACpDvjM,EAAMkmB,OAAO3U,MAASoO,EAAO,EAAK3f,EAAMkmB,OAAO3U,MAC3E2mW,EAAmB,CAAE5yW,KAAMgzW,EAAAA,EAAc/kU,OAAQ/yC,QAASA,EAASR,MAAOA,EAAMk+B,gBACpF,MAEIg6U,EAAmB,CAAE5yW,KAAMgzW,EAAAA,EAAc/kU,OAAQ/yC,QAASR,EAAMkmB,OAAO3U,MAAOvR,MAAOA,EAAMk+B,gBAEnG,GAAG,CAAC+kE,EAAWtjF,EAAM8H,IACjBq4L,EAAmBzgN,EAAAA,aAAkB,SAAUW,GAC/Ck4W,EAAmB,CAAE5yW,KAAMgzW,EAAAA,EAAcl9R,MAAOp7E,MAAOA,EAAMk+B,gBACjE,GAAG,IACC3f,EAAQ,GACRk6V,GAAYC,EAAAA,EAAAA,KAAaL,EAAAA,EAAAA,IAAQr3V,EAAMH,EAAKq5G,GAAOv6G,GAC9C3T,EAAI6U,EAAK7U,GAAKgV,EAAKhV,GAAIqsW,EAAAA,EAAAA,IAAQrsW,EAAI2T,EAAMu6G,GAAO,CACrD,IAAIy+O,GAAYN,EAAAA,EAAAA,IAAQrsW,EAAIysW,EAAWv+O,GACnC0+O,EAAqB,SAAd31Q,IACL41Q,EAAAA,EAAAA,IAAOF,EAA4B,OAAjBR,EAAwBA,EAA0B,OAAV5mW,EAAiBA,EAAQ,EAAIoO,GAEzFiP,GAAgBonP,EAAAA,EAAAA,IAAW2iG,EAAWpnW,EAAOoO,EAAMixG,GACnDrlH,GAAWyqQ,EAAAA,EAAAA,IAAW2iG,EAA4B,OAAjBR,EAAwBA,EAAe5mW,EAAOoO,EAAMixG,GACrFkoP,IAAU9iG,EAAAA,EAAAA,IAAW2iG,EAAWR,EAAcx4V,EAAMixG,GACxDryG,EAAMuO,KAAKztB,EAAAA,cAAoB82N,EAAM,CAAE/+L,IAAKuhV,EAAWpnW,MAAOonW,EAAWlxV,IAAKA,EAAK3b,MAAO2mB,OAAOmmV,GAAOP,EAAAA,EAAAA,IAAQM,EAAah5V,EAAO,EAAIu6G,GAAQy+O,GAAYz3W,KAAM8I,EAAM9I,KAAMujC,QAASz6B,EAAMy6B,QAASm0U,KAAMA,EAAMrtW,SAAUqjB,GAAiBrjB,EAAUutW,QAASA,GAAS33W,QAASosP,EAAiBiO,YAAag9G,EAAqBj9G,aAAcz7C,GAC/U84J,GAASv5W,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,mCAC5CqK,EAAM9I,MAAQ8I,EAAM+uW,iBAClB15W,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,eAAgBV,KAAM83W,EAAAA,IAAiBx5W,MAAO,CAAEq3G,SAAU,GAAG7mG,OAAe,QAARyX,EAAgB,mBAAqB,qBAAuBpiB,KAAM,YAC/K2E,EAAM9I,MAAQ8I,EAAM+uW,iBACjB15W,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,MAAMmlP,EAAAA,EAAAA,IAAW,GAAG/2O,OAAOhG,EAAM9I,KAAM,aAAcA,KAAM8I,EAAM+uW,eAAgB1zW,KAAM,YAC/HuzW,GAASv5W,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,6BAC5CqK,EAAM9I,MAAQ8I,EAAMy6B,UAClBplC,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,OAAQV,KAAM+3W,EAAAA,IAAUz5W,MAAO,CAAEq3G,SAAU,GAAG7mG,OAAe,QAARyX,EAAgB,mBAAqB,qBAAuBpiB,KAAM,YAChK2E,EAAM9I,MAAQ8I,EAAMy6B,UACjBplC,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAMoI,EAAM9I,MAAO6lP,EAAAA,EAAAA,IAAW/8O,EAAM9I,WAAQlC,EAAWkC,KAAM8I,EAAMy6B,QAASp/B,KAAM,YAC1HuzW,GAASv5W,EAAAA,cAAoB,OAAQ,CAAEG,MAAO,CAAE2G,MAAO,OAAQgB,OAAQ,OAAQuoG,QAAS,YACvFkpQ,KACM5uW,EAAM9I,MAAQ8I,EAAMy6B,WAAaq0U,IAAYvtW,IAAautW,KAAaz5W,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,OAAQV,KAAM+3W,EAAAA,IAAU5zW,KAAM,cAC3I2E,EAAM9I,MAAQ8I,EAAMy6B,WAAaq0U,KAAYvtW,GAAYlM,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAM,eAAgBV,KAAM83W,EAAAA,IAAiB3zW,KAAM,aAC7I2E,EAAM9I,MAAQ8I,EAAMy6B,WAAaq0U,IAAYvtW,IAAautW,KAAaz5W,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAMoI,EAAM9I,KAAMA,KAAM8I,EAAMy6B,QAASp/B,KAAM,aACpJ2E,EAAM9I,MAAQ8I,EAAMy6B,WAAaq0U,IAAWz5W,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,MAAMmlP,EAAAA,EAAAA,IAAW,GAAG/2O,OAAOhG,EAAM9I,KAAM,aAAcA,KAAM8I,EAAM+uW,eAAgB1zW,KAAM,YACjL,CACA,OAAQhG,EAAAA,cAAoB,OAAQ,CAAEH,GAAI8K,EAAM9K,GAAIM,MAAOwK,EAAMxK,MAAOK,IAAKm4W,EAAWn0W,KAAM,SAAU4jB,IAAKA,EAAK4P,UAAUkvC,EAAAA,EAAAA,GAAYv8D,EAAMqtB,SAAUrtB,EAAMhE,cAAUhH,GAAYW,WAAWu7B,EAAAA,EAAAA,GAAW,WAAY,CAC9M,QAAiB,QAARzT,EACT,aAAc+c,EACd,aAAcx+B,GACfgE,EAAMrK,WAAY43B,UAAWrB,EAAeR,QAASD,EAAaG,OAAQD,EAAY,gBAAiB9U,EAAK,gBAAiBG,EAAK,gBAA2B,OAAVzP,EAAiBA,OAAQvS,EAAW,gBAAiBgH,EAAW,YAAShH,EAAW,aAAc0sC,EAAapQ,iBAAiBmyU,EAAAA,GAAiBjyU,EAAAA,GAASiyU,EAAAA,KAAmB,kBAAmBzjW,EAAMs5B,eAAgB,mBAAoBt5B,EAAMu5B,iBACtYlkC,EAAAA,cAAoB,QAAS,CAAEH,GAAI,SAAUS,UAAW,WAAY8M,SAAU+3B,EAAUx+B,SAAUA,IAClG3G,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,sBAAwB4e,GACjEvU,EAAMrI,OACFtC,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,kBAAoBqK,EAAMrI,OAC/E,IACIm2B,EAAY,CACZ54B,GAAI64B,EAAAA,OACJtQ,IAAKsQ,EAAAA,MAAgB,CAAC,MAAO,QAC7B64F,UAAW74F,EAAAA,MAAgB,CAAC,YAAa,WACzCkrE,UAAWlrE,EAAAA,MAAgB,CAAC,OAAQ,SACpCxmB,MAAO,SAAUvH,EAAOguB,EAAUC,GAC9B,GAAIjuB,EAAMuH,OAASvH,EAAM6W,KAAO7W,EAAMgX,KAAOhX,EAAM2V,SACR,SAApB3V,EAAMi5F,WACnBi2Q,EAAAA,EAAAA,IAAelvW,EAAM6W,IAAK7W,EAAMgX,IAAKhX,EAAM2V,KAAO,EAAG3V,EAAMuH,QAC3D2nW,EAAAA,EAAAA,IAAelvW,EAAM6W,IAAK7W,EAAMgX,IAAKhX,EAAM2V,KAAM3V,EAAMuH,SACpB,SAApBvH,EAAMi5F,WACvB,OAAO,IAAI9qE,MAAM,kBAAkBnoB,OAAOgoB,EAAU,iBAAiBhoB,OAAOioB,EAAe,+HAGnG,OAAO,IACX,EACA51B,aAAc01B,EAAAA,OACdlX,IAAKkX,EAAAA,OACL/W,IAAK+W,EAAAA,OACLpY,KAAM,SAAU3V,EAAOguB,EAAUC,GAC7B,YAAmBj5B,IAAfgL,EAAM2V,MAAsB3V,EAAM2V,MAAQ,EACnC,IAAIwY,MAAM,kBAAkBnoB,OAAOgoB,EAAU,iBAAiBhoB,OAAOioB,EAAe,2IAExF,IACX,EACA6gV,QAAS/gV,EAAAA,OACTp2B,MAAOo2B,EAAAA,OACPyM,SAAUzM,EAAAA,KACV/xB,SAAU+xB,EAAAA,KACV6gV,KAAM7gV,EAAAA,KACN72B,KAAM62B,EAAAA,OACN0M,QAAS8gN,EAAAA,GACTwzH,eAAgBxzH,EAAAA,GAChBhiN,gBAAiBxL,EAAAA,QAEjB5C,EAAe,CACf1N,IAAK,MACL5G,IAAK,EACLG,IAAK,EACLrB,KAAM,EACNrQ,KAAM6pW,EAAAA,EACN92W,aAAc,KACdmiC,UAAU,EACVx+B,UAAU,EACV4qH,UAAW,YACX3tB,UAAW,QAEfz6B,EAAO5iC,YAAc,mBAErB4iC,EAAO1wC,UAAYA,EACnB0wC,EAAOrzC,aAAeA,4FCpRXgkV,EAAa95W,EAAAA,YAAiB,SAAU2K,EAAOnK,GACtD,IAAIqmB,EAAS7mB,EAAAA,OAAa,MACtB80B,EAAU90B,EAAAA,OAAa,MACvBooB,GAAMs+N,EAAAA,EAAAA,GAAO5xN,EAASnqB,EAAMyd,KAChCpoB,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASA,EAAQh0B,QACjB6J,MAAOA,EACPuH,MAAOvH,EAAMuH,MACb,IACJlS,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAAIysC,EAAcvtC,EAAAA,aAAkB,SAAUW,GACtCgK,EAAM7I,SACN6I,EAAM7I,QAAQoxB,UAAKvzB,EAAW,CAC1BuS,MAAOvH,EAAMuH,MACb2U,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACgK,EAAM7I,QAAS6I,EAAMuH,QACrB2kB,EAAgB72B,EAAAA,aAAkB,SAAUW,GACxCgK,EAAMutB,WACNvtB,EAAMutB,UAAUhF,UAAKvzB,EAAW,CAC5BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACgK,EAAMutB,YACN9B,EAAcp2B,EAAAA,aAAkB,SAAUW,GACtCgK,EAAM0rB,SACN1rB,EAAM0rB,QAAQnD,UAAKvzB,EAAW,CAC1BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACgK,EAAM0rB,UACNC,EAAat2B,EAAAA,aAAkB,SAAUW,GACrCgK,EAAM4rB,QACN5rB,EAAM4rB,OAAOrD,UAAKvzB,EAAW,CACzBknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACgK,EAAM4rB,SACNgqL,EAAkBvgN,EAAAA,aAAkB,SAAUW,GAC1CgK,EAAMwxP,aACNxxP,EAAMwxP,YAAYjpO,UAAKvzB,EAAW,CAC9BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACgK,EAAMwxP,cACNga,EAAmBn2Q,EAAAA,aAAkB,SAAUW,GAC3CgK,EAAMsxP,cACNtxP,EAAMsxP,aAAa/oO,UAAKvzB,EAAW,CAC/BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACgK,EAAMsxP,eACNx7C,EAAmBzgN,EAAAA,aAAkB,SAAUW,GAC3CgK,EAAMuxP,cACNvxP,EAAMuxP,aAAahpO,UAAKvzB,EAAW,CAC/BknB,OAAQA,EAAO/lB,QACf+9B,eAAgBl+B,GAG5B,GAAG,CAACgK,EAAMuxP,eACV,OAAQl8P,EAAAA,cAAoB,OAAQ,CAAEH,GAAI8K,EAAM9K,GAAIW,IAAKs0B,EAAS1M,IAAKA,EAAK,YAAazd,EAAM4uW,KAAMvhV,SAAUrtB,EAAMqtB,SAAUvrB,MAAO9B,EAAM8B,MAAOtM,MAAOwK,EAAMxK,MAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,gBAAiB,CACtM,QAAiB,QAARzT,EACT,aAAczd,EAAMuB,SACpB,UAAWvB,EAAM8uW,SAClB9uW,EAAMrK,WAAYwB,QAASyrC,EAAarV,UAAWrB,EAAeR,QAASD,EAAaG,OAAQD,EAAY2lO,aAAcka,EAAkBja,aAAcz7C,EAAkB07C,YAAa57C,GAAmB51M,EAAMzK,SAC7N,IACIu4B,EAAY,CACZ54B,GAAI64B,EAAAA,OACJ72B,KAAM62B,EAAAA,IACNtQ,IAAKsQ,EAAAA,MAAgB,CAAC,MAAO,QAC7BjsB,MAAOisB,EAAAA,OACPxmB,MAAOwmB,EAAAA,OACP6gV,KAAM7gV,EAAAA,KACNxsB,SAAUwsB,EAAAA,KACV+gV,QAAS/gV,EAAAA,MAKbohV,EAAWvzU,YAAc,uBAEzBuzU,EAAWrhV,UAAYA,EACvBqhV,EAAWhkV,aANQ,CACf1N,IAAK,iECtFE6wV,aACX,SAAWA,GACPA,EAAsB,OAAI,SAC1BA,EAAwB,SAAI,WAC5BA,EAAwB,SAAI,WAC5BA,EAAwB,SAAI,WAC5BA,EAAmB,IAAI,MACvBA,EAAmB,IAAI,MACvBA,EAAqB,MAAI,OAC5B,CARD,CAQGA,IAAkBA,EAAgB,CAAC,IAI/B,IAAIR,EAAgB,SAAUj5W,EAAOsf,GACxC,OAAQA,EAAO7Y,MACX,KAAKgzW,EAAc/kU,OACf,YAAuBv0C,IAAnBmf,EAAO3d,cAAyCxB,IAAhBmf,EAAOwB,KAChC9gB,EAEPsf,EAAO3d,UAAY3B,EACZ,KAEJsf,EAAO3d,SAAW2d,EAAO0C,IAC1B1C,EAAO3d,QAAU2d,EAAO6C,KACpBq3V,EAAAA,EAAAA,IAAQl6V,EAAO3d,QAAS2d,EAAOwB,MAC/BxB,EAAO6C,IACX7C,EAAO0C,IACjB,KAAKy3V,EAAcC,SACf,OAAO,KACX,KAAKD,EAAcf,SACf,YAAoBv4W,IAAhBmf,EAAOwB,KACA9gB,EAEPA,EAAQsf,EAAO0C,IACR1C,EAAO0C,IAEXhiB,EAAQsf,EAAOwB,KAAOxB,EAAO6C,KAC9Bq3V,EAAAA,EAAAA,IAAQx5W,EAAQsf,EAAOwB,KAAMxB,EAAOwB,MACpCxB,EAAO6C,IACjB,KAAKs3V,EAAchB,SACf,YAAoBt4W,IAAhBmf,EAAOwB,KACA9gB,GAEJw5W,EAAAA,EAAAA,IAAQx5W,EAAQsf,EAAOwB,KAAMxB,EAAOwB,OAASxB,EAAO0C,KACrDw3V,EAAAA,EAAAA,IAAQx5W,EAAQsf,EAAOwB,KAAMxB,EAAOwB,MACpCxB,EAAO0C,IACjB,KAAKy3V,EAAcz3V,IACf,YAAoB7hB,IAAhBmf,EAAOwB,KACA9gB,EAEJsf,EAAO0C,IAClB,KAAKy3V,EAAct3V,IACf,OAAO7C,EAAO6C,IAClB,KAAKs3V,EAAcl9R,MACf,OAAO,KACX,QACI,OAAOv8E,EAEnB,8FC3DO,IAAIw5W,EAAU,SAAU3kQ,EAAKwmB,GAChC,GAAIxmB,EAAM,EAAG,CACT,IAAIJ,EAAU1yF,KAAKg4E,IAAI,IAAKshC,EAAKl5E,WAAWlsC,MAAM,KAAK,IAAMolH,EAAKl5E,WAAWlsC,MAAM,KAAK,IAAInH,QAC5F,OAAOiT,KAAKu0C,MAAMu+C,EAAMJ,GAAWA,CACvC,CACA,OAAOI,CACX,EAUWglQ,EAAe,SAAUziS,EAAGkmB,GAAK,OAAOlmB,EAAKkmB,EAAIv7E,KAAK4M,MAAMyoD,EAAIkmB,EAAK,EAIrE08Q,EAAS,SAAUn4V,EAAOnP,EAAOoO,GACxC,OAAQ04V,EAAQ33V,EAAQf,EAAMA,GAAQpO,GAAWA,EAAQmP,CAC7D,EAIWs1P,EAAa,SAAUt1P,EAAOnP,EAAOoO,EAAMixG,GAClD,OAAc,OAAVr/G,IAGc,cAAdq/G,EACOioP,EAAOn4V,EAAOnP,EAAOoO,GACtB04V,EAAQ33V,EAAQf,EAAO,EAAGA,EAAO,IAAMpO,EACvCmP,GAASnP,EAED,WAAdq/G,IACOioP,EAAOn4V,EAAOnP,EAAOoO,GACtB04V,EAAQ33V,EAAQf,EAAO,EAAGA,EAAO,KAAOpO,EACxCmP,IAAUnP,GAGxB,EAIW6mW,EAAkB,SAAU3wV,EAAKkhF,EAAM46F,GAC9C,MAAe,QAAR97K,EACD87K,EAAW56F,EAAK1yB,EAAK0yB,EAAKxiG,MAAQ,EAClCo9L,EAAW56F,EAAK1yB,EAAK0yB,EAAKxiG,MAAQ,CAC5C,EAIW+yW,EAAiB,SAAUr4V,EAAKG,EAAKrB,EAAMpO,GAClD,IAAK,IAAIvF,EAAI6U,EAAK7U,GAAKgV,EAAKhV,GAAK2T,EAC7B,GAAIpO,IAAUvF,EACV,OAAO,EAGf,OAAO,CACX,2NC/DI+lB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAYI4gV,EAAsC,SAAU9lV,GAEhD,SAAS8lV,EAAqBpvW,GAC1B,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAsGxC,OAlGA0C,EAAM3vB,MAAQ,CACV0S,WAAoCvS,IAA7BwvB,EAAMxkB,MAAM3H,aAA6BmsB,EAAMxkB,MAAM6W,IAAM2N,EAAMxkB,MAAM3H,aAC9Es/B,SAAS,EACTla,IAAK+G,EAAMxkB,MAAMyd,KAErB+G,EAAM6qV,aAAe,KACrB7qV,EAAM/iB,SAAW,KAIjB+iB,EAAMg3K,QAAU,SAAUx7L,GACtB,IAAKA,EAAMoE,QACP,OAAOpE,EAAMzK,SAEjB,IAAI+5W,EAAuC,QAApB9qV,EAAM3vB,MAAM4oB,IAAiB+G,EAAMxkB,MAAMg7B,SAAW07O,EAAAA,IAAiB4mB,EAAAA,IAAqB94Q,EAAMxkB,MAAMg7B,SAAW07O,EAAAA,IAAiB6mB,EAAAA,IACrJgyE,EAAuC,QAApB/qV,EAAM3vB,MAAM4oB,IAAiB+G,EAAMxkB,MAAMg7B,SAAWkmN,EAAAA,IAAmBq8C,EAAAA,IAAsB/4Q,EAAMxkB,MAAMg7B,SAAWkmN,EAAAA,IAAmBo8C,EAAAA,IAC1JkyE,EAAwC,QAApBhrV,EAAM3vB,MAAM4oB,IAAiB+G,EAAMxkB,MAAMg7B,SAAW,eAAiB,iBAAqBxW,EAAMxkB,MAAMg7B,SAAW,eAAiB,kBACtJy0U,EAAwC,QAApBjrV,EAAM3vB,MAAM4oB,IAAiB+G,EAAMxkB,MAAMg7B,SAAW,iBAAmB,kBAAsBxW,EAAMxkB,MAAMg7B,SAAW,iBAAmB,iBAC/J,OAAQ3lC,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEtB,UAAW,oBAAqByjC,QAAS,OAAQliC,KAAMu4W,EAAmBh1U,QAAS80U,EAAkBztW,MAAO9B,EAAM0vW,eAAgBv4W,QAAS6I,EAAM2vW,YAC/K3vW,EAAMzK,SACNF,EAAAA,cAAoB4B,EAAAA,EAAQ,CAAEtB,UAAW,oBAAqByjC,QAAS,OAAQliC,KAAMs4W,EAAmB/0U,QAAS60U,EAAkBxtW,MAAO9B,EAAM4vW,eAAgBz4W,QAAS6I,EAAM6vW,YACvL,EAIArrV,EAAMuF,MAAQ,WACNvF,EAAM/iB,UACN+iB,EAAM/iB,SAASsoB,OAEvB,EACAvF,EAAMsrV,QAAU,SAAU5zV,GAEtB,IADA,IAAI0mP,EAAgB1mP,EACb0mP,GAAe,CAClB,GAAIl2O,QAAQk2O,EAAct8J,aAAaypQ,EAAAA,IACnC,OAAO,EAEXntG,EAAgBA,EAAc76D,aAClC,CACA,OAAO,CACX,EACAvjL,EAAMkH,QAAU,WACZlH,EAAM6L,SAAS,CAAEsH,SAAS,GAC9B,EACAnT,EAAMoH,OAAS,WACXpH,EAAM6L,SAAS,CAAEsH,SAAS,GAC9B,EACAnT,EAAM+I,UAAY,SAAU/xB,GACxB,IAAI40K,OAAWp7K,EACXwG,EAAE2wB,UAAYtD,EAAAA,EAAKrX,MAAQhW,EAAE2wB,UAAYtD,EAAAA,EAAKI,KAC9CmnJ,EAAW5rJ,EAAM3vB,MAAM0S,OAASid,EAAMxkB,MAAM2V,MAAQ,GAE/Cna,EAAE2wB,UAAYtD,EAAAA,EAAKltB,OAASH,EAAE2wB,UAAYtD,EAAAA,EAAKG,GACpDonJ,EAAW5rJ,EAAM3vB,MAAM0S,OAASid,EAAMxkB,MAAM2V,MAAQ,GAE/Cna,EAAE2wB,UAAYtD,EAAAA,EAAKE,KACxBqnJ,EAAW5rJ,EAAMxkB,MAAM6W,IAElBrb,EAAE2wB,UAAYtD,EAAAA,EAAKC,MACxBsnJ,EAAW5rJ,EAAMxkB,MAAMgX,UAEVhiB,IAAbo7K,IACA50K,EAAEub,iBACFyN,EAAMm1H,OAAOn+I,EAAG40K,GAExB,EACA5rJ,EAAMmrV,UAAY,SAAUn0W,GACxBA,EAAEub,iBACFyN,EAAMm1H,OAAOn+I,EAAGgpB,EAAM3vB,MAAM0S,OAASid,EAAMxkB,MAAM2V,MAAQ,GAC7D,EACA6O,EAAMqrV,UAAY,SAAUr0W,GACxBA,EAAEub,iBACFyN,EAAMm1H,OAAOn+I,EAAGgpB,EAAM3vB,MAAM0S,OAASid,EAAMxkB,MAAM2V,MAAQ,GAC7D,EACA6O,EAAMwrV,UAAY,SAAUx0W,GACnBgpB,EAAMsrV,QAAQt0W,EAAExF,MAAM40P,cAAc1uO,UACjC1gB,EAAExF,MAAM60P,SACRrvP,EAAExF,MAAM40P,cAAc7zO,iBAE1ByN,EAAMulO,KAAKvuP,GAEnB,EACAgpB,EAAMyrV,SAAW,SAAUz0W,GACvBA,EAAExF,MAAM40P,cAAc7zO,iBACtByN,EAAMulO,KAAKvuP,EACf,EACAgpB,EAAMulO,KAAO,SAAUvuP,GACnB,IAAIosD,EAAWpsD,EAAE2uB,QAAQs5E,wBAOrBysQ,GANW1rV,EAAMxkB,MAAMg7B,SACpB4sB,EAASq0C,OAASzgG,EAAExF,MAAMwjM,QACN,QAApBh1K,EAAM3vB,MAAM4oB,IACTmqC,EAASjsD,MAAQH,EAAExF,MAAMujM,QACzB/9L,EAAExF,MAAMujM,QAAU3xI,EAASp2C,OAC1BgT,EAAMxkB,MAAMg7B,SAAW4sB,EAASzqD,OAASyqD,EAASzrD,OAE7DqoB,EAAMm1H,OAAOn+I,EAAGgpB,EAAMxkB,MAAM6W,IAAMq5V,GAAc1rV,EAAMxkB,MAAMgX,IAAMwN,EAAMxkB,MAAM6W,KAClF,GACAmhB,EAAAA,EAAAA,GAAgBC,EAAAA,GACTzT,CACX,CA6FA,OAtMAuD,EAAUqnV,EAAsB9lV,GA6GhC8lV,EAAqBh8H,yBAA2B,SAAUpzO,EAAOnL,GAC7D,IAAI0S,OAAwBvS,IAAhBgL,EAAMuH,MAAsBvH,EAAMuH,MAAQ1S,EAAM0S,MACxDsP,EAAM7W,EAAM6W,IAAKG,EAAMhX,EAAMgX,IACjC,YAAiBhiB,IAAVuS,EAAsB,KACzB,CAAEA,MAAOqP,KAAKC,IAAID,KAAKI,IAAIzP,EAAOsP,GAAMG,GAChD,EAIAo4V,EAAqBptV,UAAU4K,kBAAoB,WAC/C,IAAK9K,KAAKjtB,MAAM4oB,KAAO5iB,QAAUinB,KAAKrgB,SAAU,CAE5C,IAAI0xB,EAAYt4B,OAAO46C,iBAAiB3zB,KAAKrgB,UAAU0xB,UACnDA,GACArR,KAAKuO,SAAS,CAAE5S,IAAK0V,GAE7B,CACJ,EAIAi8U,EAAqBptV,UAAUnrB,OAAS,WACpC,IAAI0C,EACAirB,EAAQ1C,KACR87T,GAAKxsT,EAAAA,EAAAA,IAA2BtP,MAChCquV,GAAiBruV,KAAKjtB,MAAM0S,MAAQua,KAAK9hB,MAAM6W,MAAQiL,KAAK9hB,MAAMgX,IAAM8K,KAAK9hB,MAAM6W,KAAQ,IAC3Fo2V,EAAcnrV,KAAK9hB,MAAMg7B,SACvB,CAAE7iC,UAAW,SAAUoH,aAAc,UACrC,CAAE7J,WAAY,SAAU6B,YAAa,UACvCy1W,EAAmBlrV,KAAK9hB,MAAMg7B,SAC5B,CAAE77B,WAAY,EAAGhC,OAAQ,QACzB,CAAC,EACP,OAAQ9H,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAUy3B,GAAM,OAAO9I,EAAM/iB,SAAW6rB,CAAI,EAAG7P,IAAKqE,KAAKjtB,MAAM4oB,IAAKvoB,GAAI4sB,KAAK9hB,MAAM9K,GAAIM,MAAOmhB,EAAS,CAAElf,IAAK,GAAKqqB,KAAK9hB,MAAMxK,OAAQk2B,QAAS5J,KAAK4J,QAASE,OAAQ9J,KAAK8J,OAAQ2B,UAAWzL,KAAKyL,UAAW53B,WAAWu7B,EAAAA,EAAAA,GAAW,WAAY,CACjR,UAAWpP,KAAKjtB,MAAM8iC,QACtB,aAAc7V,KAAK9hB,MAAMhE,SACzB,uBAAwB8lB,KAAK9hB,MAAMg7B,SACnC,oBAAqBlZ,KAAK9hB,MAAMg7B,UACjClZ,KAAK9hB,MAAMrK,YACdN,EAAAA,cAAoBysB,KAAK05K,QAAS,CAAEp3L,QAAS0d,KAAK9hB,MAAMw7L,QAASm0K,UAAW7tV,KAAK6tV,UAAWE,UAAW/tV,KAAK+tV,UAAWD,eAAgBhyB,EAAGtsT,iBAAiB+xU,EAAAA,GAAqB7xU,EAAAA,GAAS6xU,EAAAA,KAAuBqM,eAAgB9xB,EAAGtsT,iBAAiBgyU,EAAAA,GAAqB9xU,EAAAA,GAAS8xU,EAAAA,MAC9QjuW,EAAAA,cAAoB0vP,EAAAA,EAAW,CAAEU,OAAQ3jO,KAAKmuV,SAAU9qH,QAASrjO,KAAKkuV,WAClE36W,EAAAA,cAAoB,MAAO,CAAEM,UAAW,sBAAuBH,MAAOmhB,EAAS,CAAE+2V,SAAU,EAAGjyW,SAAU,WAAYo1P,YAAa,QAAUo8G,IACvInrV,KAAK9hB,MAAMzK,UAAaF,EAAAA,cAAoB,KAAM,CAAEM,UAAW,yBAA0BH,MAAOmhB,EAAS,CAAEvZ,OAAQ,GAAK4vW,IAAqB33W,EAAAA,SAAe0M,IAAI+f,KAAK9hB,MAAMzK,UAAU,SAAU+jH,GAC3L,OAAOA,GAASjkH,EAAAA,aAAmBikH,EAAO,CACtC79G,SAAU,KAAO69G,EAAMt5G,MAAMvE,SAAW+oB,EAAMxkB,MAAM6W,MAC/C2N,EAAMxkB,MAAMgX,IAAMwN,EAAMxkB,MAAM6W,KACnCmkB,SAAUxW,EAAMxkB,MAAMg7B,UACvBs+E,EAAMt5G,MAAMzK,SACnB,KACAF,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iBAAkBH,MAAOssB,KAAK9hB,MAAMg7B,SAClE,CAAEihE,OAAQ,EAAG9+F,OAAQ,SACpB5D,EAAK,CAAC,EAAGA,EAAsB,QAAnBuoB,KAAKjtB,MAAM4oB,IAAgB,QAAU,QAAU,EAAGlkB,EAAG4C,MAAQ,OAAQ5C,GAAK1D,IAAK,SAAUy3B,GAAM,OAAO9I,EAAM6qV,aAAe/hV,CAAI,GAClJj4B,EAAAA,cAAoB,MAAO,CAAEM,UAAW,qBAAsBH,MAAOssB,KAAK9hB,MAAMg7B,SACtE,CAAE79B,OAAQgzW,EAAe,KACzB,CAAEh0W,MAAOg0W,EAAe,OAClC96W,EAAAA,cAAoB,OAAQ,CAAEwE,KAAM,SAAU,gBAAiBioB,KAAK9hB,MAAM6W,IAAK,gBAAiBiL,KAAK9hB,MAAMgX,IAAK,gBAAiB8K,KAAKjtB,MAAM0S,MAAO,iBAAkBkhB,OAAO3G,KAAKjtB,MAAM0S,OAAQ,mBAAoBua,KAAK9hB,MAAMg7B,SAAW,gBAAahmC,EAAW,gBAAiB8sB,KAAK9hB,MAAMhE,SAAW,YAAShH,EAAW,kBAAmB8sB,KAAK9hB,MAAMs5B,eAAgB,mBAAoBxX,KAAK9hB,MAAMu5B,gBAAiB,aAAczX,KAAK9hB,MAAMi9O,UAAW5vN,UAAUkvC,EAAAA,EAAAA,GAAYz6C,KAAK9hB,MAAMqtB,SAAUvL,KAAK9hB,MAAMhE,cAAUhH,GAAYW,UAAW,eAAgBmM,MAAO87U,EAAGtsT,iBAAiBiyU,EAAAA,GAAiB/xU,EAAAA,GAAS+xU,EAAAA,KAAmB/tW,MAAOssB,KAAK9hB,MAAMg7B,SACrnB,CAAEihE,OAAQ,QAAUk0Q,EAAe,KAAMv0W,OAAQ,GAC9B,QAAnBkmB,KAAKjtB,MAAM4oB,IAAgB,CAAE9hB,MAAO,QAAUw0W,EAAe,YAAav0W,OAAQ,GAC9E,CAAE4V,KAAM,QAAU2+V,EAAe,KAAMv0W,OAAQ,SACrF,EACA6I,OAAO6nB,eAAe8iV,EAAqBptV,UAAW,cAAe,CAIjEuK,IAAK,WACD,OAAOzK,KAAKutV,YAChB,EACA7iV,YAAY,EACZC,cAAc,IAElB2iV,EAAqBptV,UAAU23H,OAAS,SAAUn+I,EAAG+L,GACjDA,EAAQqP,KAAKC,IAAID,KAAKI,IAAIzP,EAAOua,KAAK9hB,MAAM6W,KAAMiL,KAAK9hB,MAAMgX,KAC7D8K,KAAKuO,SAAS,CAAE9oB,MAAOA,KACvBmhM,EAAAA,EAAAA,GAAc5mL,KAAK9hB,MAAMsH,SAAU9L,EAAGsmB,KAAM,CAAEva,MAAOA,GACzD,EACA6nW,EAAqBxzU,YAAc,SAInCwzU,EAAqBthV,UAAY,CAC7BjX,IAAKkX,EAAAA,OAAiBoY,WACtBnvB,IAAK+W,EAAAA,OAAiBoY,WACtB5+B,MAAOwmB,EAAAA,OACPiN,SAAUjN,EAAAA,KACV74B,GAAI64B,EAAAA,OACJuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjBkvN,UAAWlvN,EAAAA,QAGRqhV,CACX,CAxM0C,CAwMxC/5W,EAAAA,WAQS+6W,GAAqBh0U,EAAAA,EAAAA,KAQrB+hC,GAAS7hC,EAAAA,EAAAA,GAAiB8zU,EAAoBhB,GACzDjxS,EAAOviC,YAAc,oBACrBpJ,EAAAA,EAAAA,IAAwB48U,iFC/PpBz4V,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAMWuhV,EAAyB,oBAIzB3xS,EAAc,SAAUp+D,GAC/B,IAAIzG,EAAII,EACJ02W,EAAiBh7W,EAAAA,OAAa,MAC9BooB,GAAMs+N,EAAAA,EAAAA,GAAOs0H,GACb76W,EAAQwK,EAAMg7B,SACZ,CAAEihE,OAAQ,GAAGj2F,OAAOhG,EAAMvE,SAAU,QACnClC,EAAK,CAAC,GAAc,QAARkkB,EAAgB,QAAU,QAAU,GAAGzX,OAAOhG,EAAMvE,SAAU,KAAMlC,GACnF+2W,EAAYtwW,EAAMg7B,SAAW,kBAAoB,oBACrD,OAAQ3lC,EAAAA,cAAoB,KAAM,CAAEQ,IAAKw6W,EAAgB16W,UAAW,uBAAuBqQ,OAAOsqW,GAAYxuW,MAAO9B,EAAM8B,MAAOtM,MAAOmhB,EAAS,CAAE/a,OAAQ,EAAGH,SAAU,YAAcjG,IAAUwK,EAAMzK,UAAYF,EAAAA,cAAoB,OAAQshB,EAAS,CAAC,IAAIhd,EAAK,CAAC,GAAMo2W,IAA0B,EAAMp2W,GAAK,CAAEhE,UAAW,UAAWwB,QAAS6I,EAAM7I,UAAY6I,EAAMzK,UAC3W,kNC7BIwyB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EASI+hV,EAAsC,SAAUjnV,GAKhD,SAASinV,EAAqBvwW,GAC1B,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA2FxC,OAvFA0C,EAAM0vP,YAAc,WACZ1vP,EAAM0rB,QAAU1rB,EAAM0rB,OAAOikO,mBAC7B3vP,EAAM0rB,OAAOikO,kBAAkB3vP,EAAMmV,SAASjB,MACxC,GACAlU,EAAMxkB,MAAMw4B,mBACVhU,EAAM0zT,yBAAyB5mT,iBAAiBkyU,EAAAA,GAAkBhyU,EAAAA,GAASgyU,EAAAA,KAE3F,EACAh/U,EAAMX,MAAQ,SAAU0G,EAAQw/N,EAAMpiO,GAClC,IAAI6oV,EAAe7oV,EAAQ2/H,YACvBlqJ,EAAS2sP,EAAKziG,YAClB,OAAI/8H,EAAS,EACF,EAEFA,EAASimV,EAAepzW,EACtBozW,EAAepzW,EAEnBmtB,CACX,EACA/F,EAAMmlM,OAAS,SAAUpiN,EAAOvR,GAC5BwuB,EAAM6L,SAAS,CAAEkxE,QAASh6F,IAC1Bid,EAAMiT,oBAAsBlwB,GAC5BmhM,EAAAA,EAAAA,GAAclkL,EAAMxkB,MAAMsH,SAAUtR,EAAOwuB,EAAO,CAAEjd,MAAOA,IAC3Did,EAAMiT,yBAAsBziC,CAChC,EACAwvB,EAAM/iB,SAAW,KACjB+iB,EAAMuvP,SAAW,KACjBvvP,EAAM0rB,OAAS,KACf1rB,EAAMi6P,KAAMxoP,EAAAA,EAAAA,KACZzR,EAAM0zT,0BAA2B9mT,EAAAA,EAAAA,IAA2B5M,GAI5DA,EAAMuF,MAAQ,WACNvF,EAAMysB,eACNzsB,EAAMysB,cAAclnB,OAE5B,EACAvF,EAAMisV,WAAa,SAAUlpW,GAEzB,OAAQlS,EAAAA,cAAoB,QAAS,CAAEiG,KAAM,WAAYimG,QAAS/8E,EAAMxkB,MAAMuhG,QAAS1rG,IAAK,SAAUy3B,GAC9F9I,EAAM0rB,OAAS5iB,CACnB,EAAGD,UAAW,EAAG,eAAe,EAAM9lB,MAAOA,EAAO/R,MAAO,CAAE0hB,QAAS,EAAG/a,MAAO,EAAGoJ,OAAQ,EAAG3J,QAAS,EAAGH,SAAU,WAAY+V,KAAM,OAASlK,SAAU8kB,EAAAA,EAAMx0B,KAAM4sB,EAAM5sB,WAAQ5C,GAC3L,EACAwvB,EAAMoe,YAAc,SAAU5sC,GACtBwuB,EAAMksV,iBAAmB16W,EAAMylM,YAInCj3K,EAAMksV,eAAiB16W,EAAMylM,UAC7Bj3K,EAAMmlM,QAAQnlM,EAAMjd,MAAOvR,GAC/B,EACAwuB,EAAM0H,cAAgB,SAAUl2B,GAC5B,IAAIwuB,EAAMxkB,MAAMhE,SAAhB,CAGA,IAAImwB,EAAUn2B,EAAMm2B,QAChBA,IAAYtD,EAAAA,EAAKytB,OAASnqB,IAAYtD,EAAAA,EAAK8L,QAC3CnQ,EAAMmlM,QAAQnlM,EAAMjd,MAAOvR,GAC3BA,EAAM+gB,iBAJV,CAMJ,EACAyN,EAAMmsV,mBAAqB,SAAU36W,GACjC,IAAIwuB,EAAMxkB,MAAMhE,SAAhB,CAGAwoB,EAAM6L,SAAS,CAAEsH,SAAS,IAC1B,IAAIjM,EAAUlH,EAAMxkB,MAAM0rB,QACtBA,GACAA,EAAQnD,UAAKvzB,EAAWgB,EAJ5B,CAMJ,EACAwuB,EAAMosV,kBAAoB,SAAU56W,GAChC,IAAIwuB,EAAMxkB,MAAMhE,SAAhB,CAGAwoB,EAAM6L,SAAS,CAAEsH,SAAS,IAC1B,IAAI/L,EAASpH,EAAMxkB,MAAM4rB,OACrBA,GACAA,EAAOrD,UAAKvzB,EAAWgB,EAJ3B,CAMJ,GACAgiC,EAAAA,EAAAA,GAAgBC,EAAAA,GAChBzT,EAAM3vB,MAAQ,CACV0sG,QAASvhG,EAAMovS,gBAAkBmhE,EAAqBplV,aAAaikR,eACnEz3Q,SAAS,GAENnT,CACX,CAoLA,OArRAuD,EAAUwoV,EAAsBjnV,GAkGhC7kB,OAAO6nB,eAAeikV,EAAqBvuV,UAAW,QAAS,CAI3DuK,IAAK,WACD,YAAoCv3B,IAA7B8sB,KAAK2V,oBACN3V,KAAK2V,yBACkBziC,IAAvB8sB,KAAK9hB,MAAMuhG,QACPz/E,KAAK9hB,MAAMuhG,QACXz/E,KAAKjtB,MAAM0sG,OACzB,EACA/0E,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeikV,EAAqBvuV,UAAW,UAAW,CAC7DuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeikV,EAAqBvuV,UAAW,gBAAiB,CACnEuK,IAAK,WACD,OAAOzK,KAAKiyP,QAChB,EACAvnP,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeikV,EAAqBvuV,UAAW,OAAQ,CAI1DuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMpI,IACtB,EACA40B,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeikV,EAAqBvuV,UAAW,WAAY,CAI9DuK,IAAK,WACD,IAAIgM,OAA+CvjC,IAAjC8sB,KAAK9hB,MAAMw4B,kBACzBviC,OAA+BjB,IAArB8sB,KAAK9hB,MAAM04B,MACrB5W,KAAK9hB,MAAM04B,OACV5W,KAAK9hB,MAAMy4B,YAER3W,KAAKva,MAEb,MAAO,CACHgxB,YAAaA,EACbG,WAH6B1jC,IAArB8sB,KAAK9hB,MAAM04B,MAAsB5W,KAAK9hB,MAAM04B,MAAQziC,EAI5D4iC,aAA6B,OAAf/W,KAAKva,MAE3B,EACAilB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeikV,EAAqBvuV,UAAW,iBAAkB,CAIpEuK,IAAK,WACD,YAAqCv3B,IAA9B8sB,KAAK9hB,MAAM84B,eACZhX,KAAK9hB,MAAM84B,eACXy3U,EAAqBplV,aAAa2N,cAC5C,EACAtM,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeikV,EAAqBvuV,UAAW,WAAY,CAI9DuK,IAAK,WACD,YAA+Bv3B,IAAxB8sB,KAAK9hB,MAAMy4B,SACZ3W,KAAK9hB,MAAMy4B,SACX83U,EAAqBplV,aAAasN,QAC5C,EACAjM,YAAY,EACZC,cAAc,IAKlB8jV,EAAqBvuV,UAAU4K,kBAAoB,WAC/C9K,KAAKoyP,cAELpyP,KAAK+K,aACT,EAIA0jV,EAAqBvuV,UAAU8K,mBAAqB,WAChDhL,KAAKoyP,aACT,EAIAq8F,EAAqBvuV,UAAUnrB,OAAS,WACpC,IAAI0C,EAAII,EAAIK,EACRwqB,EAAQ1C,KACR6V,EAAU7V,KAAKjtB,MAAM8iC,QACrBx9B,EAAK2nB,KAAK9hB,MAAOyd,EAAMtjB,EAAGsjB,IAAKzhB,EAAW7B,EAAG6B,SAAU60W,EAAe12W,EAAG02W,aAAcC,EAAe32W,EAAG22W,aAAcz1W,EAAOlB,EAAGkB,KAAM01W,EAAW52W,EAAG42W,SAAUC,EAAU72W,EAAG62W,QAAS3jV,EAAWlzB,EAAGkzB,SACvMvL,KAAKrE,IAAMA,GAAQqE,KAAKqI,SAAWsrB,iBAAiB3zB,KAAKqI,SAASgJ,gBAAcn+B,EAChF,IAAIiB,GAAW6rB,KAAKgX,gBAAkBhX,KAAK6X,SAASjB,MAChDu4U,GAAkB//U,EAAAA,EAAAA,GAAW,aAAa33B,EAAK,CAAC,GAC7C,YAAYyM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EAC/D9B,EAAG,aAAayM,OAAOk0B,EAAAA,EAAeE,WAAWy2U,IAAiBA,IAAiBA,EACnFt3W,EAAG,eAAiBuoB,KAAKva,MACzBhO,EAAG,iBAAmBuoB,KAAKva,MAC3BhO,EAAG,WAAao+B,EAChBp+B,EAAG,cAAgByC,EACnBzC,EAAG,cAAgBtD,EACnBsD,GAAKuoB,KAAK9hB,MAAMrK,WAChBu7W,EAAiB,CACjB,eAAgBpvV,KAAKva,MACrB,gBAAiBvL,QAAYhH,EAC7B,kBAAmB8sB,KAAK9hB,MAAMs5B,eAC9B,mBAAoBxX,KAAK9hB,MAAMu5B,gBAC/B,aAAczX,KAAK9hB,MAAMi9O,WAE7B,OAAQ5nP,EAAAA,cAAoB,OAAQshB,EAAS,CAAE9gB,IAAK,SAAUwxB,GACtD7C,EAAMuvP,SAAW1sP,CACrB,EAAGxtB,KAAM,UAAYq3W,EAAgB,CAAEv7W,UAAWs7W,EAAiBxzV,IAAKqE,KAAKrE,IAAK8P,UAAWzL,KAAKoK,cAAe/0B,QAAS2qB,KAAK8gB,YAAahX,OAAQ9J,KAAK8uV,kBAAmBllV,QAAS5J,KAAK6uV,mBAAoBtjV,UAAUkvC,EAAAA,EAAAA,GAAYlvC,EAAUrxB,OAAUhH,GAAYurP,UAAWz+N,KAAK9hB,MAAMugP,UAAWrrP,GAAI4sB,KAAK9hB,MAAM9K,IAAM4sB,KAAK28P,MAC/TppR,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,kBAAmBv3B,EAAK,CAAC,EAAGA,EAAG,aAAaqM,OAAOk0B,EAAAA,EAAeE,WAAWy2U,IAAiBA,IAAiBA,EAAcl3W,IAAM9D,IAAK,SAAUwxB,GAC9L7C,EAAM/iB,SAAW4lB,CACrB,GACAvF,KAAK2uV,WAAW3uV,KAAKva,OACrBlS,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,qBAAuBq7W,GAChE37W,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,sBAAwBo7W,IACrE17W,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,uBACrCN,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,kBAAmBl3B,EAAK,CAAC,EAAGA,EAAG,aAAagM,OAAO8qW,IAAiBA,EAAc92W,OAClJ,EACAu2W,EAAqB30U,YAAc,SAInC20U,EAAqBziV,UAAY,CAC7ByyN,UAAWxyN,EAAAA,OACXwzE,QAASxzE,EAAAA,KACTp4B,UAAWo4B,EAAAA,OACX/xB,SAAU+xB,EAAAA,KACVqhR,eAAgBrhR,EAAAA,KAChB1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChD8iV,aAAc9iV,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SACjE+iV,aAAc/iV,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SACjEtQ,IAAKsQ,EAAAA,OACL74B,GAAI64B,EAAAA,OACJuL,eAAgBvL,EAAAA,OAChBwL,gBAAiBxL,EAAAA,OACjBgjV,SAAUhjV,EAAAA,OACV0K,SAAU1K,EAAAA,KACVV,SAAUU,EAAAA,OACV2K,MAAO3K,EAAAA,KACPgO,SAAUhO,EAAAA,KACVyK,kBAAmBzK,EAAAA,OACnBnC,OAAQmC,EAAAA,IACRzmB,SAAUymB,EAAAA,IACVrC,QAASqC,EAAAA,IACTijV,QAASjjV,EAAAA,QAKbwiV,EAAqBplV,aAAe,CAChCnvB,UAAU,EACVozS,gBAAgB,EAChB/zS,KAAM,SACNw1W,aAAc,OACdC,aAAc,OACdC,SAAU,MACVnlV,OAAQQ,EAAAA,EACRV,QAASU,EAAAA,EACT4kV,QAAS,KACTv4U,UAAU,EACVK,gBAAgB,GAEby3U,CACX,CAvR0C,CAuRxCl7W,EAAAA,WAQS87W,GAAqB/0U,EAAAA,EAAAA,KAQrBwhC,GAASthC,EAAAA,EAAAA,GAAiB60U,EAAoBZ,GACzD3yS,EAAOhiC,YAAc,iLC1UjBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAUW0yW,GAAuBh1U,EAAAA,EAAAA,KAkBvB15B,EAAWrN,EAAAA,YAAiB,SAAU08R,EAAa71Q,GAC1D,IAAI3iB,EACAyG,GAAQ8nP,EAAAA,EAAAA,GAAgBspH,EAAsBr/E,GAC9Cp4R,EAAKqG,EAAO3E,EAAO1B,EAAG0B,KAAM+9B,EAAUz/B,EAAGy/B,QAASnzB,EAAWtM,EAAGsM,SAAUszB,EAAkB5/B,EAAG4/B,gBAAiBD,EAAiB3/B,EAAG2/B,eAAgBy2Q,EAAWp2S,EAAGo2S,SAAUp6S,EAAYgE,EAAGhE,UAAW0C,EAAesB,EAAGtB,aAAc2D,EAAWrC,EAAGqC,SAAUyG,EAAW9I,EAAG8I,SAAUg2B,EAAW9+B,EAAG8+B,SAAU/b,EAAO/iB,EAAG+iB,KAAMxnB,EAAKyE,EAAGzE,GAAI0C,EAAO+B,EAAG/B,KAAMyH,EAAc1F,EAAG0F,YAAa7J,EAAQmE,EAAGnE,MAAO63B,EAAW1zB,EAAG0zB,SAAU9lB,EAAQ5N,EAAG4N,MAAOmxB,EAAQ/+B,EAAG++B,MAAOF,EAAoB7+B,EAAG6+B,kBAAmBM,EAAiBn/B,EAAGm/B,eAAgBxxB,EAAW3N,EAAG2N,SAAUokB,EAAU/xB,EAAG+xB,QAASE,EAASjyB,EAAGiyB,OAE9gB2iB,GAA1D50C,EAAGsjE,QAAmBtjE,EAAG8iE,QAAoB9iE,EAAGujE,SAAmB5gD,EAAO3iB,EAAI,CAAC,OAAQ,UAAW,WAAY,kBAAmB,iBAAkB,WAAY,YAAa,eAAgB,WAAY,WAAY,WAAY,OAAQ,KAAM,OAAQ,cAAe,QAAS,WAAY,QAAS,QAAS,oBAAqB,iBAAkB,WAAY,UAAW,SAAU,UAAW,UAAW,cAChZg9O,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACC/vB,EAAK3E,EAAAA,SAAegD,GAAeksC,EAAavqC,EAAG,GAAI6lS,EAAgB7lS,EAAG,GAC1EwhE,OAAyBxmE,IAAVuS,EACf4U,EAAeq/C,EAAej0D,EAAQg9B,EACtCm9M,EAAsBrsP,EAAAA,aAAkB,WACxC,MAAQ,CACJ80B,QAASwsN,EACT5sN,MAAO03N,EACP,SAAIl6O,GAAU,OAAO4U,CAAc,EACnC,QAAIvkB,GAAS,OAAO++O,EAAWxgP,SAAWwgP,EAAWxgP,QAAQyB,IAAM,EAE3E,GAAG,CAAC6pP,EAActlO,IAClB9mB,EAAAA,oBAA0B6mB,EAAQwlO,GAClC,IAAIvnP,EAAK9E,EAAAA,SAAe,QAASg8W,EAAiBl3W,EAAG,GAAIm3W,EAAoBn3W,EAAG,GAC5EolS,EAAelqS,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IAC7DxY,GAAMs+N,EAAAA,EAAAA,GAAOpF,EAAY32O,EAAMyd,KAC/BxnB,QAAoBjB,IAAV0jC,EACVA,GACCD,KAEGtc,EACR9mB,EAAAA,WAAgB,WACRshP,EAAWxgP,SAAWwgP,EAAWxgP,QAAQg+Q,mBACzCx9B,EAAWxgP,QAAQg+Q,kBAAkBl+Q,GAC/B,GACCuiC,GAAqB,GAEpC,GAAG,CAACviC,GAASuiC,IACbnjC,EAAAA,iBAAsB,WACdshP,EAAWxgP,SACXm7W,EAAkB,GAAGtrW,OAAO2wO,EAAWxgP,QAAQw3P,aAAc,MAErE,GAAG,CAACxxO,IACJ,IAAIqP,GAAen2B,EAAAA,aAAkB,SAAUW,GAC3C,IAAIo6K,EAAWp6K,EAAMkmB,OAAO3U,MAC5B+pW,EAAkB,QACb91S,GAAiBx/D,GAClB6jS,EAAczvH,GAEd9oK,IAAatL,IACb0sM,EAAAA,EAAAA,GAAcphM,EAAUtR,EAAO2gB,EAASA,EAAS,CAAC,EAAG+qO,KAAwB,CAAEn6O,MAAO6oK,IAAa,CAAE7oK,MAAO6oK,GAEpH,GAAG,CAACyvH,EAAev4R,EAAUtL,EAAUw/D,IACnC/vC,GAAcp2B,EAAAA,aAAkB,SAAUW,GACtC01B,IAAY1vB,IACZ0sM,EAAAA,EAAAA,GAAch9K,EAAS11B,EAAO0rP,SAAuB1sP,EAE7D,GAAG,CAAC02B,EAAS1vB,IACT2vB,GAAat2B,EAAAA,aAAkB,SAAUW,GACrC41B,IAAW5vB,IACX0sM,EAAAA,EAAAA,GAAc98K,EAAQ51B,EAAO0rP,SAAuB1sP,EAE5D,GAAG,CAAC42B,EAAQ5vB,IACRu1W,GAAgB56V,EAASA,EAAS,CAAEzhB,GAAIA,GAAMqqS,EAAc1lS,KAAM,UAAWjC,KAAMA,EAAMjC,UAAW,iCAAkCE,IAAK8gP,EAAY36O,SAAUA,EAAU0gB,KAAMA,EAAMrd,YAAaA,EAAaoD,SAAUA,EAAUg2B,SAAUA,EAAUpL,UAAUkvC,EAAAA,EAAAA,GAAYlvC,EAAUrxB,GAAWxG,MAAOu6S,EAAW,CAAE7rF,OAAQ,OAAQzuN,SAAU,SAAU0H,OAAQk0W,GAAmB,CAAC,EAAG,kBAAmB/3U,EAAgB,mBAAoBC,EAAiB,kBAAkB,EAAM,gBAAiBv9B,QAAYhH,EAAWuS,MAAOi0D,EAAej0D,EAAQg9B,GAAcgK,GAAS,CAAEjnC,SAAUkkB,GAAcE,QAASD,GAAaG,OAAQD,KACpnB,OAAQt2B,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,UAAW,cAAe33B,EAAK,CAAC,EACpFA,EAAG,WAAWyM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EAC9D9B,EAAG,WAAWyM,OAAOC,IAAaA,EAClC1M,EAAG,aAAayM,OAAOk0B,EAAAA,EAAeE,WAAWhB,IAAYA,IAAYA,EACzE7/B,EAAG,eAAiBtD,SAA8BjB,IAAnB8jC,IAAmD,IAAnBA,GAC/Dv/B,EAAG,cAAgBk/B,EACnBl/B,EAAG,cAAgByC,EACnBzC,GAAK5D,GAAYH,MAAOA,EAAOioB,IAAKA,GACxCpoB,EAAAA,cAAoB,WAAYshB,EAAS,CAAC,EAAG46V,KACrD,IACA7uW,EAASorB,UAAY,CACjByL,gBAAiBxL,EAAAA,OACjBuL,eAAgBvL,EAAAA,OAChBgiR,SAAUhiR,EAAAA,KACVp4B,UAAWo4B,EAAAA,OACX11B,aAAc01B,EAAAA,OACdtQ,IAAKsQ,EAAAA,OACL/xB,SAAU+xB,EAAAA,KACVtrB,SAAUsrB,EAAAA,KACVrR,KAAMqR,EAAAA,OACN74B,GAAI64B,EAAAA,OACJn2B,KAAMm2B,EAAAA,OACN1uB,YAAa0uB,EAAAA,OACbv4B,MAAOu4B,EAAAA,OACPV,SAAUU,EAAAA,OACVxmB,MAAOwmB,EAAAA,UAAoB,CACvBA,EAAAA,OACAA,EAAAA,QAAkBA,EAAAA,QAClBA,EAAAA,SAEJzmB,SAAUymB,EAAAA,KACVrC,QAASqC,EAAAA,KACTnC,OAAQmC,EAAAA,KACR1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5D9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,OAAQ,aAOtDrrB,EAASk5B,YAAc,gBACvBl5B,EAASyoB,aANU,CACf9vB,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,0IC1JV0Q,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EASWiE,EAAUtN,EAAAA,YAAiB,SAAU2K,EAAOnK,GACnD,IAAI0D,GACJy+B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAI9N,EAAU90B,EAAAA,OAAa,MACvB6mB,EAAS7mB,EAAAA,OAAa,MACtBsuW,EAAuBtuW,EAAAA,SACvBqS,EAAcrS,EAAAA,aAAkB,WAChC,IAAIkE,EACJ,YAAqCvE,IAAjC2uW,EAAqBxtW,QACdwtW,EAAqBxtW,QAGM,QAA1BoD,EAAK4wB,EAAQh0B,eAA4B,IAAPoD,OAAgB,EAASA,EAAGgO,KAE9E,GAAG,IACHlS,EAAAA,oBAA0B6mB,GAAQ,WAM9B,MALa,CACT,WAAIiO,GAAY,OAAOA,EAAQh0B,OAAS,EACxC,QAAIyB,GAAS,OAAOuyB,EAAQh0B,SAAWg0B,EAAQh0B,QAAQyB,IAAM,EAC7D,SAAI2P,GAAU,OAAOG,GAAe,EAG5C,IACArS,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAAIwD,EAAKqG,EAAO3E,EAAO1B,EAAG0B,KAAM4K,EAAWtM,EAAGsM,SAAUmzB,EAAUz/B,EAAGy/B,QAASzjC,EAAYgE,EAAGhE,UAAW8nB,EAAM9jB,EAAG8jB,IAAKjoB,EAAQmE,EAAGnE,MAAOwE,EAAKL,EAAGq3F,OAAQA,OAAgB,IAAPh3F,EAAgBmxB,EAAa6lE,OAASh3F,EAAIG,EAAKR,EAAGm5Q,OAAQA,OAAgB,IAAP34Q,EAAgBgxB,EAAa2nP,OAAS34Q,EAEnMo0F,GAF+M50F,EAAG++B,MAE7Q/+B,EAAGujE,SAAqBvjE,EAAG8iE,QAAoB9iE,EAAGsjE,QAAiB3gD,EAAO3iB,EAAI,CAAC,OAAQ,WAAY,UAAW,YAAa,MAAO,QAAS,SAAU,SAAU,QAAS,WAAY,UAAW,aACvM+oW,GAAS16G,EAAAA,EAAAA,GAAmBh3J,GAAQ,GACpC2xQ,GAAS36G,EAAAA,EAAAA,GAAmB8qB,GAAQ,GACpCv4Q,EAAKlF,EAAAA,UAAe,GAAQsiC,EAAUp9B,EAAG,GAAIsoP,EAAatoP,EAAG,GAO7DixB,EAAen2B,EAAAA,aAAkB,SAAUW,GAC3C2tW,EAAqBxtW,QAAUH,EAAMkmB,OAAO3U,MACxCvH,EAAMsH,UACNtH,EAAMsH,SAASihB,UAAKvzB,EAAW,CAC3Bk/B,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnB1sB,MAAOvR,EAAMkmB,OAAO3U,MACpB2U,OAAQA,EAAO/lB,UAGvBwtW,EAAqBxtW,aAAUnB,CACnC,GAAG,CAACgL,EAAMsH,WACN7M,GAAKmtP,EAAAA,EAAAA,GAAkB,CACvBl8N,QAnBc,SAAUhJ,GACxBmgO,GAAW,EACf,EAkBIj3N,OAjBa,SAAUlJ,GACvBmgO,GAAW,EACf,EAgBI7oN,YAAah6B,EAAM0rB,QACnBuO,WAAYj6B,EAAM4rB,SAClBF,EAAUjxB,EAAGixB,QAASE,EAASnxB,EAAGmxB,OACtC,OAAQv2B,EAAAA,cAAoB,OAAQ,CAAEG,MAAOA,EAAOioB,IAAKA,EAAK9nB,WAAWu7B,EAAAA,EAAAA,GAAW,qBAAsB33B,EAAK,CAAC,EACxGA,EAAG,WAAWyM,OAAOk0B,EAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EAC9D9B,EAAG,WAAWyM,OAAOC,IAAaA,EAClC1M,EAAG,aAAayM,OAAOk0B,EAAAA,EAAeE,WAAWhB,IAAYA,IAAYA,EACzE7/B,GAAK,CACL,UAAWo+B,EACX,aAAc33B,EAAMy4B,SACpB,aAAcz4B,EAAMhE,SACpB,aAA6B,IAAhBgE,EAAM04B,OACpB/iC,GAAY+1B,QAASA,EAASE,OAAQA,GACzCv2B,EAAAA,cAAoBqtW,EAAQ,MAC5BrtW,EAAAA,cAAoB,QAASshB,EAAS,CAAE9gB,IAAKs0B,EAASx0B,UAAW,iBAAmB44F,EAAO,CAAEjnF,SAAUkkB,KACvGn2B,EAAAA,cAAoBstW,EAAQ,MACpC,IACIx3U,EAAe,CACf6lE,OAAQ,SAAUtuE,GAAK,OAAO,IAAM,EACpCowP,OAAQ,SAAUpwP,GAAK,OAAO,IAAM,EACpCrnB,KAAM,SACN+9B,QAAS,SACTnzB,SAAU,SAEdtD,EAAQmrB,UAAY,CAChBzyB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5D9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,OAAQ,aAEtDprB,EAAQi5B,YAAc,6BACtBj5B,EAAQwoB,aAAeA,uEC5GZ8M,EAAkB,CACzBrgC,KAAM,6BACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,yJCFlBmJ,EAA6B,WAM7B,SAASA,EAAYo3J,GAEjB,GADAx4M,KAAKw4M,OAASA,EACW,qBAAdwiC,EACPA,EAAAA,gBAA0B7kO,OAEzB,CACD,IAAIwY,EAAU,iCAAiCzqC,OAAOiyB,EAAgBrgC,KAAM,MAC5E64C,GAAW,wDACXA,GAAW,OAAOzqC,OAAOiyB,EAAgB8hC,iBAAkB,4BAC3DpjE,QAAQw6D,KAAK1gB,EACjB,CAIJ,CAsHA,OA9GAyyB,EAAYlhD,UAAUrd,OAAS,SAAUA,GAErC,IADA,IAAIvO,EAAS,GACJolC,EAAK,EAAGA,EAAKhN,UAAU7qB,OAAQ63B,IACpCplC,EAAOolC,EAAK,GAAKhN,UAAUgN,GAG/B,OAAsB,IAAlBplC,EAAOuN,QAAgBmW,MAAMC,QAAQ3jB,EAAO,IACrCo7W,EAAAA,GAAgB7sW,EAAQvO,EAAO,GAAI0rB,KAAKw4M,QAE5Ck3I,EAAAA,GAAgB7sW,EAAQvO,EAAQ0rB,KAAKw4M,OAChD,EAQAp3J,EAAYlhD,UAAU0C,WAAa,SAAUnd,EAAO5C,GAChD,OAAO6sW,EAAAA,GAAoBjqW,EAAO5C,EAAQmd,KAAKw4M,OACnD,EAQAp3J,EAAYlhD,UAAUg1B,SAAW,SAAUzvC,EAAO5C,GAC9C,OAAO6sW,EAAAA,GAAkBjqW,EAAO5C,EAAQmd,KAAKw4M,OACjD,EAQAp3J,EAAYlhD,UAAUskN,YAAc,SAAU/+N,EAAO5C,GACjD,OAAO6sW,EAAAA,GAAqBjqW,EAAOua,KAAKw4M,OAAQ31N,EACpD,EAQAu+D,EAAYlhD,UAAU0xD,UAAY,SAAUnsE,EAAO5C,GAC/C,OAAO6sW,EAAAA,GAAmBjqW,EAAO5C,EAAQmd,KAAKw4M,OAClD,EAQAp3J,EAAYlhD,UAAU8jN,aAAe,SAAUv+N,EAAO5C,GAClD,OAAO6sW,EAAAA,GAAsBjqW,EAAO5C,EAAQmd,KAAKw4M,OACrD,EAOAp3J,EAAYlhD,UAAU4P,cAAgB,SAAUiuB,GAC5C,OAAO2xT,EAAAA,GAAuB3xT,EAAS/9B,KAAKw4M,OAChD,EAOAp3J,EAAYlhD,UAAUa,gBAAkB,SAAUg9B,GAC9C,OAAO2xT,EAAAA,GAAyB1vV,KAAKw4M,OAAQz6K,EACjD,EAOAqjB,EAAYlhD,UAAUgP,gBAAkB,SAAUrsB,GAC9C,OAAO6sW,EAAAA,GAAyB7sW,EAAQmd,KAAKw4M,OACjD,EAMAp3J,EAAYlhD,UAAUm/M,cAAgB,WAClC,OAAOqwI,EAAAA,GAAuB1vV,KAAKw4M,OACvC,EAMAp3J,EAAYlhD,UAAU23M,SAAW,WAC7B,OAAO63I,EAAAA,GAAkB1vV,KAAKw4M,OAClC,EAIAp3J,EAAYlhD,UAAUu4M,WAAa,WAC/B,OAAOi3I,EAAAA,GAAoB1vV,KAAKw4M,OACpC,EACOp3J,CACX,CA3IiC,+DCH7BuuS,EAAqC,WACrC,SAASA,EAAoBrtP,GACzBtiG,KAAKsiG,SAAWA,CAIpB,CAqBA,OAVAqtP,EAAoBzvV,UAAUsP,iBAAmB,SAAUlE,EAAK/0B,GAC5D,OAAIypB,KAAKsiG,UACL5yF,EAAAA,EAAS1P,KAAKsiG,WACd5yF,EAAAA,EAAS1P,KAAKsiG,UAAU97F,eAAe8E,GAChCoE,EAAAA,EAAS1P,KAAKsiG,UAAUh3F,GAGxB/0B,CAEf,EACOo5W,CACX,CA5ByC,iDCDlC,IAAIjgV,EAAW/sB,OAAOkkB,OAAO,CAAC,kFCC1B+oV,EAAuBr8W,EAAAA,cAAoB,CAClDwsB,KAAM,IAAIqhD,EAAAA,EAAY,MACtBxhC,aAAc,IAAI+vU,EAAAA,0ECDXvnC,EAA0B,WAAc,OAAO70U,EAAAA,WAAiBq8W,EAAAA,GAAsB7vV,IAAM,wECA5F8+P,EAAkB,WAAc,OAAOtrR,EAAAA,WAAiBq8W,EAAAA,GAAsBhwU,YAAc,6GCIhG,SAAS1U,EAAmBn1B,GAI/B,IAAIwhD,EAAUxhD,EAAUwhD,QACxB,OAAOA,GAAWA,EAAQx3B,KACpBw3B,EAAQx3B,KACR,IAAIqhD,EAAAA,EAAY,KAC1B,CAMO,SAAS9xC,EAA2Bv5B,GAIvC,IAAIwhD,EAAUxhD,EAAUwhD,QACxB,OAAOA,GAAWA,EAAQ3X,aACpB2X,EAAQ3X,aACR,IAAI+vU,EAAAA,CACd,CAMO,SAASpjV,EAAgBx2B,GAC5BA,EAAU09O,YAAcm8H,EAAAA,CAC5B,CAMO,SAASl/U,EAAwB36B,GACpCA,EAAU09O,YAAcm8H,EAAAA,CAC5B,+cC/CI3pV,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EASImjV,EAA8B,SAAUroV,GAExC,SAASqoV,IACL,OAAkB,OAAXroV,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAoBA,OAvBAiG,EAAU4pV,EAAcroV,GAOxBqoV,EAAa3vV,UAAU4vV,eAAiB,WACpC,OAAO,IAAI1uS,EAAAA,EAAYphD,KAAK9hB,MAAMs6N,OACtC,EAIAq3I,EAAa3vV,UAAUnrB,OAAS,WAC5B,IAAI2tB,EAAQ1C,KACZ,OAAQzsB,EAAAA,cAAoBq8W,EAAAA,EAAqBG,SAAU,MAAM,SAAUC,GAAQ,OAAQz8W,EAAAA,cAAoBq8W,EAAAA,EAAqBp8H,SAAU,CAAE/tO,MAAOoP,EAASA,EAAS,CAAC,EAAGm7V,GAAO,CAAEjwV,KAAM2C,EAAMotV,oBAAuBptV,EAAMxkB,MAAMzK,SAAY,GACrP,EAIAo8W,EAAa7jV,UAAY,CACrBwsM,OAAQvsM,EAAAA,QAEL4jV,CACX,CAzBkC,CAyBhCt8W,EAAAA,WC3DEkvE,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAEIq6D,EAAW,SAAUi1N,EAAUyjC,EAAU5iV,GACzC,IAAK,IAAI/B,KAAOkhT,EACZ,GAAIA,EAAShmT,eAAe8E,GAAM,CAC9B,IAAI4kV,EAAcztS,EAAc,GAAIp1C,GAAK,GAEzC,GADA6iV,EAAYlvV,KAAKsK,GACY,kBAAlBkhT,EAASlhT,GAChBisF,EAASi1N,EAASlhT,GAAM2kV,EAAUC,OAEjC,CACD,IAAIzqW,EAAQ+mU,EAASlhT,GACrB3oB,OAAO6nB,eAAeylV,EAAUC,EAAYtyT,KAAK,KAAM,CAAEn4C,MAAOA,GACpE,CACJ,CAER,EAOO,SAAS0qW,EAAazgV,EAAU4yF,GACnC,IAAI2tP,EAAW1jP,EAAAA,EAAIjK,GAAYiK,EAAAA,EAAIjK,IAAa,CAAC,EACjD/K,EAAS7nF,EAAUugV,EAAU,GACjC,eClCIhqV,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EASI0jV,EAAsC,SAAU5oV,GAEhD,SAAS4oV,IACL,OAAkB,OAAX5oV,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAoBA,OAvBAiG,EAAUmqV,EAAsB5oV,GAOhC4oV,EAAqBlwV,UAAUmwV,uBAAyB,WACpD,OAAO,IAAIV,EAAAA,EAAoB3vV,KAAK9hB,MAAMokH,SAC9C,EAIA8tP,EAAqBlwV,UAAUnrB,OAAS,WACpC,IAAI2tB,EAAQ1C,KACZ,OAAQzsB,EAAAA,cAAoBq8W,EAAAA,EAAqBG,SAAU,MAAM,SAAUC,GAAQ,OAAQz8W,EAAAA,cAAoBq8W,EAAAA,EAAqBp8H,SAAU,CAAE/tO,MAAOoP,EAASA,EAAS,CAAC,EAAGm7V,GAAO,CAAEpwU,aAAcld,EAAM2tV,4BAA+B3tV,EAAMxkB,MAAMzK,SAAY,GACrQ,EAIA28W,EAAqBpkV,UAAY,CAC7Bs2F,SAAUr2F,EAAAA,QAEPmkV,CACX,CAzB0C,CAyBxC78W,EAAAA,qJC3DEshB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAUWL,EAAQ,SAAUnuB,GACzB,IAAI8/Q,EAAgBnpQ,EAAS,CAAEwc,UAAW,SAAWnzB,IACrDg4B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAIm6U,GAAiBlhV,EAAAA,EAAAA,GAAW,CAC5B,gBAAgB,EAChB,eAA4C,UAA5B4uP,EAAc3sP,UAC9B,aAA0C,QAA5B2sP,EAAc3sP,WAC7B2sP,EAAcnqR,WACjB,OAAQN,EAAAA,cAAoB,MAAO,CAAEH,GAAI4qR,EAAc5qR,GAAI2E,KAAM,QAASrE,MAAOsqR,EAActqR,MAAOG,UAAWy8W,GAAkBtyF,EAAcvqR,SACrJ,EACA44B,EAAML,UAAY,CACd54B,GAAI64B,EAAAA,OACJoF,UAAWpF,EAAAA,MAAgB,CAAC,QAAS,QACrCx4B,SAAUw4B,EAAAA,UAAoB,CAC1BA,EAAAA,QACAA,EAAAA,OAEJv4B,MAAOu4B,EAAAA,OACPp4B,UAAWo4B,EAAAA,QAEfI,EAAMyN,YAAc,uICxChB7T,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA8CzCo8C,EAA+B,SAAUj2C,GAEzC,SAASi2C,EAAcv/D,GACnB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAoBxC,OAhBA0C,EAAM3vB,MAAQ,CACV8iC,SAAS,GAKbnT,EAAMiH,YAAc,SAAU/I,GAC1B8B,EAAM6L,SAAS,CAAEsH,SAAS,GAC9B,EAIAnT,EAAMmH,WAAa,SAAUjJ,GACzB8B,EAAM6L,SAAS,CAAEsH,SAAS,GAC9B,GACAK,EAAAA,EAAAA,GAAgBC,EAAAA,GACTzT,CACX,CAkDA,OAzEAuD,EAAUw3C,EAAej2C,GA2BzBi2C,EAAcv9C,UAAUnrB,OAAS,WAC7B,IAAI0C,EAAKuoB,KAAK9hB,MAAOrI,EAAQ4B,EAAG5B,MAAOwjC,EAAW5hC,EAAG4hC,SAAUxlC,EAAY4D,EAAG5D,UAAW+nE,EAAiBnkE,EAAGmkE,eAAgB8B,EAAcjmE,EAAGimE,YAAa6hO,EAAoB9nS,EAAG8nS,kBAAmBjmQ,EAAc7hC,EAAG6hC,YAAaC,EAAiB9hC,EAAG8hC,eAAgB7lC,EAAQ+D,EAAG/D,MAAON,EAAKqE,EAAGrE,GAAIwnE,EAAWnjE,EAAGmjE,SAC/SvrC,GAAsBC,EAAAA,EAAAA,IAA2BtP,MACjDuwV,EAAoB31S,EAAWvrC,EAC9BG,iBAAiBghV,EAAAA,EAAgB9gV,EAAAA,EAAS8gV,EAAAA,IAAmB,GAC9DC,EAAkBF,GAAsBh9W,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,oBAAsB08W,GACvGG,GAAiBthV,EAAAA,EAAAA,GAAW,CAC5B,8BAA8B,EAC9B,UAAWpP,KAAKjtB,MAAM8iC,QACtB,WAAY0pQ,IAAsB7hO,GAAgC,IAAhBA,EAClD,kBAAmBnkC,EACnB,QAA4B,QAAnBvZ,KAAK9hB,MAAMyd,KACrB9nB,GACC88W,GAAkBvhV,EAAAA,EAAAA,GAAW,CAC7B,WAAW,EACX,gBAAgC,IAAhBkK,EAChB,kBAAmBC,GACpBqiC,GACH,OAAQroE,EAAAA,cAAoB,OAAQ,CAAEH,GAAI4sB,KAAK9hB,MAAM9K,GAAIS,UAAW68W,EAAgB9mV,QAAS5J,KAAK2J,YAAaG,OAAQ9J,KAAK6J,WAAYn2B,MAAOA,EAAOioB,IAAKqE,KAAK9hB,MAAMyd,KAClKqE,KAAK9hB,MAAMzK,SACXoC,EACMwjC,EACI9lC,EAAAA,cAAoB,QAAS,CAAEH,GAAIA,EAAI4nS,QAAS3hQ,EAAUxlC,UAAW88W,GACnE96W,EACA46W,GACFl9W,EAAAA,cAAoB,OAAQ,CAAEH,GAAIA,EAAIS,UAAW88W,GAC/C96W,EACA46W,GACN,KACd,EAIAhzS,EAAczxC,UAAY,CACtBn2B,MAAOo2B,EAAAA,OACPoN,SAAUpN,EAAAA,OACVyxC,YAAazxC,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,KAAgBA,EAAAA,SACpEszQ,kBAAmBtzQ,EAAAA,OACnBqN,YAAarN,EAAAA,KACbsN,eAAgBtN,EAAAA,KAChB74B,GAAI64B,EAAAA,OACJv4B,MAAOu4B,EAAAA,OACPp4B,UAAWo4B,EAAAA,OACX2vC,eAAgB3vC,EAAAA,OAChB2uC,SAAU3uC,EAAAA,MAEPwxC,CACX,CA3EmC,CA2EjClqE,EAAAA,YAEFm9B,EAAAA,EAAAA,IAAwB+sC,qGC3HpB5oD,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAUWuuC,EAAO,SAAU/8D,GACxB,IAAI8/Q,EAAgBnpQ,EAAS,CAAEwc,UAAW,SAAWnzB,IACrDg4B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAIy6U,GAAgBxhV,EAAAA,EAAAA,GAAW,CAC3B,eAAe,EACf,eAA4C,UAA5B4uP,EAAc3sP,UAC9B,aAA0C,QAA5B2sP,EAAc3sP,UAC5B,mBAAoD,IAAjC2sP,EAAczkP,gBAClCykP,EAAcnqR,WACjB,OAAQN,EAAAA,cAAoB,MAAO,CAAEH,GAAI4qR,EAAc5qR,GAAIM,MAAOsqR,EAActqR,MAAOG,UAAW+8W,GAAiB5yF,EAAcvqR,SACrI,EACAwnE,EAAKjvC,UAAY,CACb54B,GAAI64B,EAAAA,OACJoF,UAAWpF,EAAAA,MAAgB,CAAC,QAAS,QACrCx4B,SAAUw4B,EAAAA,UAAoB,CAC1BA,EAAAA,QACAA,EAAAA,OAEJv4B,MAAOu4B,EAAAA,OACPp4B,UAAWo4B,EAAAA,OACXsN,eAAgBtN,EAAAA,MAEpBgvC,EAAKnhC,YAAc,uICLRt+B,EAAQ,SAAU0C,IACzBg4B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAI/iC,EAAK8K,EAAM9K,GAAIimC,EAAWn7B,EAAMm7B,SAAUgiC,EAAYn9D,EAAMm9D,UAAW9hC,EAAiBr7B,EAAMq7B,eAAgB9lC,EAAWyK,EAAMzK,SAAU6lC,EAAcp7B,EAAMo7B,YAAa5lC,EAAQwK,EAAMxK,MAAOG,EAAYqK,EAAMrK,UAAW+mE,EAAW18D,EAAM08D,SAC7OvrC,GAAsBwvP,EAAAA,EAAAA,KACtB0xF,EAAoB31S,EAAWvrC,EAC9BG,iBAAiBghV,EAAAA,EAAgB9gV,EAAAA,EAAS8gV,EAAAA,IAAmB,GAC9DC,EAAkBF,GAAsBh9W,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,oBAAsB08W,GACvGM,EAAet9W,EAAAA,aAAkB,SAAUmG,GAC3C,GAAI2hE,GAAaA,EAAUhnE,UAAYklC,EAAgB,CAC/C8hC,EAAUhnE,QAAQ4zB,QAClBvuB,EAAEub,iBACFomD,EAAUhnE,QAAQ4zB,SAEtB,IAAI6oV,EAAsBz1S,EAAUhnE,QAAQ86C,cACxC2hU,IACAp3W,EAAEub,iBACF67V,EAAoB1hU,QAE5B,CACJ,GAAG,CAACisB,IACAO,GAAiBxsC,EAAAA,EAAAA,GAAW,CAC5B,WAAW,EACX,iBAAkB37B,EAClB,gBAAgC,IAAhB6lC,EAChB,mBAAsC,IAAnBC,GACpB1lC,GACH,OAAQN,EAAAA,cAAoB,QAAS,CAAEH,GAAIA,EAAI4nS,QAAS3hQ,EAAUhkC,QAASw7W,EAAcn9W,MAAOA,EAAOG,UAAW+nE,GAC9GnoE,EACAg9W,EACR,EACAj1W,EAAMwwB,UAAY,CACd54B,GAAI64B,EAAAA,OACJoN,SAAUpN,EAAAA,OACVovC,UAAWpvC,EAAAA,UAAoB,CAC3BA,EAAAA,KACAA,EAAAA,MAAgB,CAAE53B,QAAS43B,EAAAA,QAE/BqN,YAAarN,EAAAA,KACbsN,eAAgBtN,EAAAA,KAChBv4B,MAAOu4B,EAAAA,OACPp4B,UAAWo4B,EAAAA,OACX2uC,SAAU3uC,EAAAA,MAEdzwB,EAAMs+B,YAAc,sMChFpB,IAAIriC,2BAIG,IAAI+4W,EAAiB,kBAIjB9gV,IAAYj4B,EAAK,CAAC,GACtB+4W,GAAkB,aACrB/4W,gDCPG,IAAI0+B,EAAkB,CACzBrgC,KAAM,+BACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,uTCTlBhyC,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,EAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAaIiyN,EAA6B,SAAU3nP,GAGvC,SAAS2nP,EAAYjxQ,GACjB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA2GxC,OA1GA0C,EAAMquV,eAAiBx9W,EAAAA,YACvBmvB,EAAMsuV,sBAAwB,sBAC9BtuV,EAAMuuV,cAAgBvuV,EAAMsuV,sBAAwB,EACpDtuV,EAAMwuV,kBAAoB,IAC1BxuV,EAAMyuV,eAAiB,CAAEh3Q,OAAQ,IAAK9/F,MAAO,QAC7CqoB,EAAM0H,cAAgB,SAAU1wB,GACxBgpB,EAAMxkB,MAAMggQ,aACZx7O,EAAM2Q,WAAW0hO,qBAAqBr7P,EAE9C,EACAgpB,EAAM0uV,MAAQ,SAAUh3V,EAAQumK,EAAK6jC,GACjCA,EAAGvvM,iBACCuvM,EAAG7wB,SACHhT,EAAIm0E,cAAc16O,GAGlBumK,EAAIk0E,UAAUz6O,EAEtB,EACAsI,EAAM2uV,mBAAqB,SAAU7sJ,GAE7B9hM,EAAMxkB,MAAM4gW,gBACZp8U,EAAMxkB,MAAM4gW,eAAer4U,UAAKvzB,EAAWsxN,GAE3C9hM,EAAMxkB,MAAM4L,SACZ4Y,EAAMxkB,MAAM4L,QAAQ2c,UAAKvzB,EAAWsxN,GAEnC9hM,EAAMxkB,MAAM4B,WACb4iB,EAAM4uV,iBAEd,EACA5uV,EAAM++N,gBAAkB,SAAUj9B,GAE1B9hM,EAAMxkB,MAAMwU,aACZgQ,EAAMxkB,MAAMwU,YAAY+T,UAAKvzB,EAAWsxN,GAExC9hM,EAAMxkB,MAAMqzW,cACZ7uV,EAAMxkB,MAAMqzW,aAAa9qV,UAAKvzB,EAAWsxN,GAExC9hM,EAAMxkB,MAAM4B,WACb4iB,EAAM4uV,iBAEd,EACA5uV,EAAM+vN,QAAU,SAAUr4N,EAAQumK,EAAK6jC,GACnC,IAAIpqM,EAAOolU,aAAX,CAGA,IAAIgyB,KAASp3V,EAAOvmB,YAAaumB,EAAOvmB,UAAUonC,WACQ,IAApD7gB,EAAOvmB,UAAUonC,QAAQ,sBAE3Bw2U,EAAW9wL,EAAI93E,SAAS/lG,QAAO,SAAUpJ,GAAK,OAAsD,IAA/CA,EAAE7F,UAAUonC,QAAQ,qBAA8B,IAE3G,GAAIu2U,GAAU9uV,EAAMxkB,MAAMwU,YAAa,CACnC8xM,EAAGvvM,iBACH,IAAIzR,EAAOkf,EAAMxkB,MAAMuU,MAAMg/V,EAASx2U,QAAQ7gB,IAC9CsI,EAAMxkB,MAAMwU,YAAY+T,UAAKvzB,EAAW,CACpCk/B,eAAgBoyL,EAChBhhN,KAAMA,EACNxD,MAAOwD,GAAQA,EAAKxD,OAE5B,CACA,GAAIwxW,GAAU9uV,EAAMxkB,MAAMqzW,aAAc,CACpC/sJ,EAAGvvM,iBACCzR,EAAOkf,EAAMxkB,MAAMuU,MAAMg/V,EAASx2U,QAAQ7gB,IAC9CsI,EAAMxkB,MAAMqzW,aAAa9qV,UAAKvzB,EAAW,CACrCk/B,eAAgBoyL,EAChBhhN,KAAMA,EACNxD,MAAOwD,GAAQA,EAAKxD,OAE5B,CACK0iB,EAAMxkB,MAAM4B,WACb4iB,EAAM4uV,iBAzBV,CA2BJ,EACA5uV,EAAMgvV,SAAW,SAAUC,EAASC,EAAMptJ,GAElC9hM,EAAMxkB,MAAM4gW,iBACZt6I,EAAGvvM,iBACHyN,EAAMxkB,MAAM4gW,eAAer4U,UAAKvzB,EAAWsxN,IAE3C9hM,EAAMxkB,MAAM4L,UACZ06M,EAAGvvM,iBACHyN,EAAMxkB,MAAM4L,QAAQ2c,UAAKvzB,EAAWsxN,IAEnC9hM,EAAMxkB,MAAM4B,WACb4iB,EAAM4uV,iBAEd,EACA5uV,EAAM4uV,gBAAkB,WACpB5uV,EAAM6L,SAAS,CAAErE,MAAM,GAC3B,EACAxH,EAAMjvB,SAAW,SAAUA,GACvB,IAAIo+W,EAAa,CAAC,EAOlB,OANAt+W,EAAAA,SAAeob,QAAQlb,GAAU,SAAU+jH,GACnCA,IACAq6P,EAAWr6P,EAAMh+G,KAAKsgC,aAAe09E,EAG7C,IACOq6P,CACX,EACAnvV,EAAM3vB,MAAQ,CACVm3B,MAAM,EACN4nV,OAAO,IAEX57U,EAAAA,EAAAA,GAAgBC,EAAAA,GACTzT,CACX,CAwGA,OAvNAuD,EAAUkpP,EAAa3nP,GAiHvB2nP,EAAYjvP,UAAU4K,kBAAoB,WAClC9K,KAAK9hB,MAAMi3B,SAAWnV,KAAKjtB,MAAMm3B,MACjClK,KAAKuO,SAAS,CAAErE,MAAM,GAE9B,EAEAilP,EAAYjvP,UAAU8K,mBAAqB,SAAU+4O,EAAYh+D,GAC7D,IAAIrjL,EAAQ1C,KACR+xV,EAAa/xV,KAAK+wV,eAAe18W,QAcrC,GAbI2rB,KAAK9hB,MAAMi3B,SAAWnV,KAAKjtB,MAAMm3B,MACjClK,KAAKuO,SAAS,CAAErE,MAAM,IAEtBlK,KAAK9hB,MAAMi3B,QAAUnV,KAAKjtB,MAAMm3B,OAASlK,KAAKjtB,MAAM++W,OACpD9xV,KAAKuO,SAAS,CAAEujV,OAAO,KAEtB9xV,KAAK9hB,MAAMi3B,QAAUnV,KAAKjtB,MAAMm3B,MAAQlK,KAAKjtB,MAAM++W,OACpD9xV,KAAKuO,SAAS,CAAEujV,OAAO,IAEvB/rK,IAAc/lL,KAAKjtB,OAASitB,KAAKjtB,MAAM++W,OAASC,IAAe/xV,KAAK9hB,MAAMrK,YAC1Ek+W,EAAWr+W,MAAMs2G,YAAY,6BAA8B,QAC3D+nQ,EAAWr+W,MAAMs2G,YAAY,iCAAkC,SAE/D+nQ,GACI/xV,KAAK9hB,MAAMggQ,YAAa,CACxB,IAAI8zG,EAAgB,CAChB,wBACA,yBACA,2BACF/xW,KAAI,SAAUs+F,GACZ,OAAO81J,EAAAA,EAAmBnwP,OAAOwe,EAAMxkB,MAAM8wQ,qBAAqB/uQ,KAAI,SAAUgyW,GAAqB,MAAO,GAAG/tW,OAAOq6F,EAAU,KAAKr6F,OAAO+tW,EAAoB,GACpK,IACI3vH,EAAY7/K,EAAc,CAC1B,uBACDuvS,EAAcE,QAAQ,GACzBlyV,KAAKqT,WAAa,IAAIihO,EAAAA,EAAW,CAC7B/oO,SAAUvL,KAAK9hB,MAAMqtB,UAAY,EACjCyiG,KAAMhuG,KAAK+wV,eACXx8G,gBAAgB,EAChBjS,UAAWA,EACXsS,eAAgB,CACZp8D,QAAS,CACL,IAAOx4K,KAAKoxV,MACZ,MAASpxV,KAAKyyN,QACd,OAAUzyN,KAAK0xV,aAI3B1xV,KAAKqT,WAAWssN,aAAa3/N,KAAKqT,WAAWwyB,MAAO,KACxD,CAER,EAGAspN,EAAYjvP,UAAUnrB,OAAS,WAC3B,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAO8B,EAAQvI,EAAGuI,MAAOmyW,EAAW16W,EAAG06W,SAAUjjG,EAAkBz3Q,EAAGy3Q,gBAAiBpvQ,EAAYrI,EAAGqI,UAAWq1B,EAAS19B,EAAG09B,OAAQ5J,EAAW9zB,EAAG8zB,SAAU9Y,EAAQhb,EAAGgb,MAClL2/V,EAA0B,OAAV3/V,QAA4B,IAAVA,OAAmB,EAASA,EAAM3P,QAAO,SAAUU,GAAQ,OAAQA,EAAK+9D,OAAwB,QAAf/9D,EAAK+9D,KAAiB,IACzI8wS,EAA6B,OAAV5/V,QAA4B,IAAVA,OAAmB,EAASA,EAAM3P,QAAO,SAAUU,GAAQ,MAAsB,WAAfA,EAAK+9D,KAAoB,IAChI+wS,EAAyBF,GAAiBA,EAAcvwW,OAAS,GAAOwwW,GAAoBA,EAAiBxwW,OAAS,EACtHpO,EAAWusB,KAAKvsB,SAASusB,KAAK9hB,MAAMzK,UACpCy9W,EAAoBlxV,KAAK9hB,MAAMgzW,mBAAqBlxV,KAAKkxV,kBACzDqB,EAAmBvyV,KAAKjtB,MAAM++W,OAASv+W,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,gBAAiBpP,KAAK9hB,MAAMrK,UAAW,CAC7H,wBAAyBmsB,KAAK9hB,MAAMrK,YACpCkE,KAAM,SAAU,aAAc,OAAQ,eAAe,EAAO,kBAAmBioB,KAAKixV,cAAel9W,IAAKisB,KAAK+wV,eAAgBtlV,UAAWzL,KAAKoK,eAChJ32B,EAAS++W,EAAAA,KAAuBxyW,IAAUmyW,GAAa1+W,EAAS++W,EAAAA,IAChExyW,GAASmyW,IAAc5+W,EAAAA,cAAoB,MAAO,CAAEM,UAAW,wCAC5DN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,uCACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAWmsB,KAAKgxV,sBAAuB59W,GAAI4sB,KAAKixV,eACzEjxW,GAASzM,EAAAA,cAAoB,MAAO,KAAMyM,GAC1CmyW,GAAY5+W,EAAAA,cAAoB,MAAO,CAAEM,UAAW,0BAA4Bs+W,MAC5F1+W,EAASg/W,EAAAA,IAAuBl/W,EAAAA,cAAoB,MAAO,CAAEM,UAAW,yBACpEN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YAAakE,KAAM,SAAWq6W,GAAiBA,EAAcnyW,KAAI,SAAUuD,EAAMM,GACrH,OAAQvQ,EAAAA,cAAoBm/W,EAAAA,EAAiB79V,EAAS,CAAC,EAAGrR,EAAM,CAAEpQ,GAAI0Q,EAAKwnB,IAAKxnB,EAAKN,KAAMA,EAAM+nB,SAAUA,GAAY,EAAGl2B,QAASqtB,EAAM++N,kBAC7I,KACA6wH,GAAyB/+W,EAAAA,cAAoB,KAAM,CAAEM,UAAW,SAChEN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YAAakE,KAAM,SAAWs6W,GAAoBA,EAAiBpyW,KAAI,SAAUuD,EAAMM,GAC3H,OAAQvQ,EAAAA,cAAoBm/W,EAAAA,EAAiB79V,EAAS,CAAC,EAAGrR,EAAM,CAAEpQ,GAAI0Q,IAA0B,OAAlBsuW,QAA4C,IAAlBA,OAA2B,EAASA,EAAcvwW,SAAW,GAAIypB,IAAKxnB,EAAKN,KAAMA,EAAM+nB,SAAUA,GAAY,EAAGl2B,QAASqtB,EAAM++N,kBAC3O,MACJhuP,EAASk/W,EAAAA,IACb,OAAQp/W,EAAAA,cAAoBA,EAAAA,SAAgB,KAAM4hC,GAAUnV,KAAKjtB,MAAMm3B,KAAQ32B,EAAAA,cAAoBA,EAAAA,SAAgB,KAC/GA,EAAAA,cAAoB,MAAO,CAAEM,UAAW,2BACpCN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YAAawB,QAAS2qB,KAAKqxV,qBACnEvxW,EAAYvM,EAAAA,cAAoB2kP,EAAAA,EAAW,CAAEpD,eAAgB90N,KAAKjtB,MAAM++W,MAAQ,WAAa,aAAc/+H,SAAU/yN,KAAKsxV,gBAAiBv8H,wBAAyBm8H,EAAmBl8H,uBAAwBk8H,EAAmBh8H,uBAAwBg6B,GAAmBlvP,KAAKmxV,eAAgBh8H,sBAAuB+5B,GAAmBlvP,KAAKmxV,eAAgB/7H,sBAAuB85B,GAAmBlvP,KAAKmxV,eAAgBryJ,MAAM,EAAMjsL,OAAO,EAAMk+M,QAAQ,GAASwhI,GACpcA,IACR,KACV,EAGApjG,EAAYr1O,YAAc,wBAE1Bq1O,EAAYnjP,UAAY,CACpBvZ,MAAOwZ,EAAAA,MACPkmV,SAAUlmV,EAAAA,OACVjsB,MAAOisB,EAAAA,OACPiyO,YAAajyO,EAAAA,KACb+iP,oBAAqB/iP,EAAAA,OAGzBkjP,EAAY9lP,aAAe,CACvB60O,aAAa,EACb8Q,oBAAqB,IAElBG,CACX,CAzNiC,CAyN/B57Q,EAAAA,mGClQSk/W,EAAqB,qBAIrBh9U,EAAqB,SAAUv3B,GACtC,OAAQ3K,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,wBAAyBlxB,EAAMrK,YAAcqK,EAAMzK,SAClH,EACAgiC,EAAmBzJ,UAAY,CAC3Bn4B,UAAWo4B,EAAAA,QAKfwJ,EAAmBqE,YAAc24U,EAIjCh9U,EAAmBzJ,UAAY,CAC3Bv4B,SAAUw4B,EAAAA,6FClBH0mV,EAAoB,oBAIpBtjG,EAAoB,SAAUnxQ,GACrC,OAAQ3K,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,uBAAwBlxB,EAAMrK,YAAcqK,EAAMzK,SACjH,EACA47Q,EAAkBrjP,UAAY,CAC1Bn4B,UAAWo4B,EAAAA,QAKfojP,EAAkBv1O,YAAc64U,EAIhCtjG,EAAkBrjP,UAAY,CAC1Bv4B,SAAUw4B,EAAAA,6FClBHumV,EAAoB,oBAIpBpjG,EAAoB,SAAUlxQ,GACrC,OAAQ3K,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,yBAA0BlxB,EAAMrK,YAAcqK,EAAMzK,SACnH,EACA27Q,EAAkBpjP,UAAY,CAC1Bn4B,UAAWo4B,EAAAA,QAKfmjP,EAAkBt1O,YAAc04U,EAIhCpjG,EAAkBpjP,UAAY,CAC1Bv4B,SAAUw4B,EAAAA,qFClBHymV,EAAkB,SAAUx0W,GACnC,IAAI00W,EAAUr/W,EAAAA,OAAa,MACvB8B,EAAU9B,EAAAA,aAAkB,SAAUW,GAClCgK,EAAM7I,SACN6I,EAAM7I,QAAQoxB,UAAKvzB,EAAW,CAC1Bk/B,eAAgBl+B,EAChBsP,KAAMtF,EAAMsF,KACZxD,MAAO9B,EAAM8B,OAGzB,GAAG,CAAC9B,EAAMsF,KAAMtF,EAAM8B,MAAO9B,EAAM7I,UAMnC,OALA9B,EAAAA,WAAgB,WACRq/W,EAAQv+W,SAAW6J,EAAM23B,SACzB+8U,EAAQv+W,QAAQ4zB,OAExB,GAAG,CAAC/pB,EAAM23B,UACFtiC,EAAAA,cAAoB,OAAQ,CAAEG,MAAOwK,EAAMxK,MAAO63B,SAAUrtB,EAAMqtB,SAAU13B,WAAWu7B,EAAAA,EAAAA,GAAW,qBAAsB,mBAAoBlxB,EAAMhE,UAAY,aAAcgE,EAAMrK,WAAYE,IAAK6+W,EAAS76W,KAAM,SAAU,gBAAiBmG,EAAMhE,SAAU7E,QAASA,GAC1Q9B,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,wBACrCqK,EAAM9I,MAAQ7B,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,eAAiBqK,EAAM9I,OAC7E8I,EAAM8B,OAAS9B,EAAM4+C,cAAiBvpD,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,2BAC5EqK,EAAM8B,OAASzM,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,4BAA8BqK,EAAM8B,OAC5F9B,EAAM4+C,aAAevpD,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,kCAAoCqK,EAAM4+C,eACxH,EACA41T,EAAgB1mV,UAAY,CACxBn4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACP6wB,YAAa7wB,EAAAA,OACb/xB,SAAU+xB,EAAAA,KACVs1C,MAAOt1C,EAAAA,MAAgB,CAAC,MAAO,WAC/B72B,KAAM62B,EAAAA,QACNjsB,MAAOisB,EAAAA,+HCGA4mV,EAASt/W,EAAAA,YAAiB,SAAU2K,EAAOkc,IAClD8b,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAI1iC,EAAWyK,EAAMzK,SAAUI,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MAAON,EAAK8K,EAAM9K,GACxFyhP,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,UACX+wP,EAAAA,EAAAA,GAAyBvQ,EAAWxgP,QAE5C,GAAG,IACCurP,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,GAAG,CAACA,IACRpsP,EAAAA,oBAA0B6mB,EAAQwlO,GAClC,IAAI69C,EAAelqS,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IAC7Dp6B,EAAaxG,EAAAA,SAAc,WAAc,OAAO2K,EAAMnE,YAAcsvB,EAAatvB,UAAY,GAAG,CAACmE,EAAMnE,aACvGJ,EAAWpG,EAAAA,SAAc,WAAc,OAAO2K,EAAMvE,UAAY0vB,EAAa1vB,QAAU,GAAG,CAACuE,EAAMvE,WACjG6mP,EAAejtP,EAAAA,SAAc,WAAc,OAAO2K,EAAMsiP,cAAgBn3N,EAAam3N,YAAc,GAAG,CAACtiP,EAAMsiP,eAC7GsyH,EAAgBv/W,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,WAAY,CAC1E,eAA6B,QAAbz1B,EAChB,kBAAgC,WAAbA,EACnB,kBAAoC,WAAjB6mP,EACnB,kBAAoC,WAAjBA,EACnB,iBAAmC,UAAjBA,EAClB,iBAAiC,UAAfzmP,EAClB,gBAAgC,SAAfA,EACjB,mBAAmC,YAAfA,GACrBlG,EAAY,GAAG,CAAC8F,EAAU6mP,EAAczmP,EAAYlG,IACvD,OAAQN,EAAAA,cAAoB,MAAO,CAAEM,UAAWi/W,EAAep/W,MAAOA,EAAON,GAAIA,GAAMqqS,GAAgBhqS,EAC3G,IACAo/W,EAAO7mV,UAAY,CACfv4B,SAAUw4B,EAAAA,IACVp4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACP74B,GAAI64B,EAAAA,OACJlyB,WAAYkyB,EAAAA,OACZtyB,SAAUsyB,EAAAA,MAAgB,CAAC,MAAO,WAClCu0N,aAAcv0N,EAAAA,MAAgB,CAAC,SAAU,SAAU,WAEvD,IAAI5C,EAAe,CACftvB,WAAY,QACZJ,SAAU,MACV6mP,aAAc,UAElBqyH,EAAO/4U,YAAc,uGC/CVi5U,EAAgBx/W,EAAAA,YAAiB,SAAU2K,EAAOkc,GACzD,IAAI3mB,EAAWyK,EAAMzK,SAAUI,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MACtEmhP,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,UACX+wP,EAAAA,EAAAA,GAAyBvQ,EAAWxgP,QAE5C,GAAG,IACCurP,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,GAAG,CAACA,IACRpsP,EAAAA,oBAA0B6mB,EAAQwlO,GAClC,IAAIozH,EAAiBz/W,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,mBAAoBv7B,EAAY,GAAG,CAACA,IACvG,OAAQN,EAAAA,cAAoB,MAAO,CAAEM,UAAWm/W,EAAgBt/W,MAAOA,GAASD,EACpF,IACAs/W,EAAc/mV,UAAY,CACtBv4B,SAAUw4B,EAAAA,IACVp4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,QAEX8mV,EAAcj5U,YAAc,+GCpBjBm5U,EAAe1/W,EAAAA,YAAiB,SAAU2K,EAAOkc,GACxD,IAAI3mB,EAAWyK,EAAMzK,SAAUI,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MACtEmhP,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,UACX+wP,EAAAA,EAAAA,GAAyBvQ,EAAWxgP,QAE5C,GAAG,IACCurP,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,GAAG,CAACA,IACRpsP,EAAAA,oBAA0B6mB,EAAQwlO,GAClC,IAAIszH,EAAgB3/W,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,kBAAmB,CACjF,wBAAyB17B,GAASA,EAAM2G,OAAyB,OAAhB3G,EAAM2G,OACxDxG,EAAY,GAAG,CAACA,EAAWH,IAC1By/W,EAAe5/W,EAAAA,SAAc,WAC7B,MAAO,CACH6/W,UAAW1/W,GAASA,EAAM2G,MAAQ3G,EAAM2G,WAAQnH,EAExD,GAAG,CAACQ,IACJ,OAAQH,EAAAA,cAAoB,OAAQ,CAAEM,UAAWq/W,EAAex/W,MAAOy/W,GAAgB1/W,EAC3F,IACAw/W,EAAajnV,UAAY,CACrBv4B,SAAUw4B,EAAAA,IACVp4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,QAEXgnV,EAAan5U,YAAc,iICjEvBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAQWy2W,EAAO9/W,EAAAA,YAAiB,SAAU2K,EAAOnK,GAChD,IAAI0D,GACJy+B,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAI1iC,EAAWyK,EAAMzK,SAAUkoB,EAAMzd,EAAMyd,IAAKjoB,EAAQwK,EAAMxK,MAAOG,EAAYqK,EAAMrK,UAAW2F,EAAO0E,EAAM1E,KAAM85W,EAAcp1W,EAAMo1W,YAAan2T,EAAc3iC,EAAOtc,EAAO,CAAC,WAAY,MAAO,QAAS,YAAa,OAAQ,gBAChOkc,EAAS7mB,EAAAA,OAAa,MACtBymP,EAAUzmP,EAAAA,OAAa,MAM3B,OALAA,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAAS2xN,EAAQ3lP,QACjB6J,MAAOA,EACP,IACJ3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IAC5Dd,EAAAA,cAAoB,MAAOshB,EAAS,CAAE8G,IAAKA,EAAKjoB,MAAOA,EAAOK,IAAKimP,EAASnmP,WAAWu7B,EAAAA,EAAAA,GAAW,SAAUv7B,GAAY4D,EAAK,CAAC,EAAGA,EAAG,UAAUyM,OAAO1K,IAASA,IAAS+5W,EAAAA,GAAS9zF,QAAShoR,GAAK67W,IAAgBE,EAAAA,GAAgBC,WAAa,kBAAoB,sBAAwBt2T,GAAc1pD,EACjT,IACA4/W,EAAKv5U,YAAc,iBACnBu5U,EAAKrnV,UAAY,CACbv4B,SAAUw4B,EAAAA,KACVp4B,UAAWo4B,EAAAA,OACXtQ,IAAKsQ,EAAAA,OACLqnV,YAAarnV,EAAAA,MAAgB,CAAC,aAAc,aAC5Cv4B,MAAOu4B,EAAAA,OACPzyB,KAAMyyB,EAAAA,MAAgB,CAAC,UAAW,UAAW,OAAQ,UAAW,UAAW,WAE/EonV,EAAKhqV,aAAe,CAChB7vB,KAAM+5W,EAAAA,GAAS9zF,QACf6zF,YAAaE,EAAAA,GAAgBE,0FClDtBC,EAAW,SAAUz1W,GAC5B,OAAQ3K,EAAAA,cAAoB,MAAO,CAAEG,MAAOwK,EAAMxK,MAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,cAAelxB,EAAMrK,YAAcqK,EAAMzK,SAC5H,EACAkgX,EAAS3nV,UAAY,CACjBn4B,UAAWo4B,EAAAA,wFCPXpX,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAIWknV,EAAY,SAAU11W,GAC7B,IAAI8/Q,EAAgBnpQ,EAAS,CAAErI,IAAK,IAAMtO,GAC1C,OAAQ3K,EAAAA,cAAoB,MAAO,CAAEG,MAAOsqR,EAActqR,MAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,eAAgB4uP,EAAcnqR,WAAY2Y,IAAKwxQ,EAAcxxQ,IAAKC,IAAKuxQ,EAAcvxQ,KAChL,EACAmnW,EAAU5nV,UAAY,CAClBn4B,UAAWo4B,EAAAA,OACXzf,IAAKyf,EAAAA,qCCpBF,IAAI4nV,EAMAL,EAKAD,EASAO,+CAnBX,SAAWD,GACPA,EAAiB,KAAI,OACrBA,EAAkB,MAAI,QACtBA,EAAiB,KAAI,MACxB,CAJD,CAIGA,IAAeA,EAAa,CAAC,IAEhC,SAAWL,GACPA,EAA4B,WAAI,aAChCA,EAA0B,SAAI,UACjC,CAHD,CAGGA,IAAoBA,EAAkB,CAAC,IAE1C,SAAWD,GACPA,EAAkB,QAAI,UACtBA,EAAkB,QAAI,UACtBA,EAAe,KAAI,OACnBA,EAAkB,QAAI,UACtBA,EAAkB,QAAI,UACtBA,EAAgB,MAAI,OACvB,CAPD,CAOGA,IAAaA,EAAW,CAAC,IAE5B,SAAWO,GACPA,EAAyB,MAAI,QAC7BA,EAA0B,OAAI,SAC9BA,EAAuB,IAAI,MAC3BA,EAA6B,UAAI,WACpC,CALD,CAKGA,IAAsBA,EAAoB,CAAC,oICYnCC,EAASxgX,EAAAA,YAAiB,SAAU2K,EAAOkc,IAClD8b,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAIosC,EAAWrkE,EAAMqkE,SAAUhgE,EAAOrE,EAAMqE,KAAM5I,EAAWuE,EAAMvE,SAAU9F,EAAYqK,EAAMrK,UAAWJ,EAAWyK,EAAMzK,SAAUC,EAAQwK,EAAMxK,MAAOoM,EAAY5B,EAAM4B,UAAWk0W,EAAO91W,EAAM81W,KAAM35W,EAAQ6D,EAAM7D,MAAO45W,EAAY/1W,EAAM+1W,UAAWxhW,EAAQvU,EAAMuU,MAAOjP,EAAOtF,EAAMsF,KAAM+nB,EAAWrtB,EAAMqtB,SAAUuzU,EAAiB5gW,EAAM4gW,eAAgBp/V,EAAWxB,EAAMwB,SACnXm1O,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACH10B,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,IACJ,IAAIu0H,EAAe3gX,EAAAA,aAAkB,SAAU4gX,EAAY1qV,EAAWv1B,GAClE,GAAIue,GAAS/S,EAAU,CACnB,IAAI8kN,EAAK,CACL2vJ,WAAYA,EACZ1qV,UAAWA,EACX2I,eAAgBl+B,EAChBi+B,YAAaj+B,GAASA,EAAMi+B,YAC5B/X,OA1DJ,WA4DA1a,EAAS+mB,UAAKvzB,EAAWsxN,EAC7B,CACJ,GAAG,CAAC/xM,EAAO/S,IACPic,GAAMs+N,EAAAA,EAAAA,GAAOpF,EAAY32O,EAAMyd,KAC/By4V,GAAmBhlV,EAAAA,EAAAA,GAAW,CAC9B,sBAAsB,EACtB,oBAAqBmzC,EACrB,mBAA6B,YAAThgE,EACpB,gBAA0B,SAATA,EACjB,gBAAiByxW,GAClBngX,GACH,OAAQN,EAAAA,cAAoB8gX,EAAAA,EAAc7gI,SAAU,CAAE/tO,MAAO,CACrD3F,UAAWA,EACXyiE,SAAUA,EACVhgE,KAAMA,EACN5I,SAAUA,EACVq6W,KAAMA,EACNr4V,IAAKA,EACLlJ,MAAOA,EACPjP,KAAMA,EACNnJ,MAAOA,EACP45W,UAAWA,EACXnV,eAAgBA,EAChBp/V,SAAUw0W,IAEd3gX,EAAAA,cAAoB,MAAO,CAAEM,UAAWugX,EAAkBrgX,IAAK8gP,EAAYl5N,IAAKA,EAAKjoB,MAAOA,EAAO63B,SAAUA,GACzG9Y,GAASlf,EAAAA,cAAoB+gX,EAAAA,EAAkB,MAC/C7gX,GACZ,IACAsgX,EAAO/nV,UAAY,CACflsB,UAAWmsB,EAAAA,IACXs2C,SAAUt2C,EAAAA,KACVx4B,SAAUw4B,EAAAA,IACVp4B,UAAWo4B,EAAAA,OACXtQ,IAAKsQ,EAAAA,OACL1pB,KAAM0pB,EAAAA,OACNtyB,SAAUsyB,EAAAA,OACV+nV,KAAM/nV,EAAAA,KACNv4B,MAAOu4B,EAAAA,OACPV,SAAUU,EAAAA,OACV5xB,MAAO4xB,EAAAA,OACPgoV,UAAWhoV,EAAAA,OACXxsB,SAAUwsB,EAAAA,OACVvsB,SAAUusB,EAAAA,KACV6yU,eAAgB7yU,EAAAA,MAYpB8nV,EAAO1qV,aAVY,CACfvpB,WAAW,EACXyiE,UAAU,EACVhgE,KAAM,UACN5I,SAAU,QACVq6W,MAAM,EACNr4V,IAAK,MACLthB,MAAO,IACP45W,UAAW,IAGfF,EAAOj6U,YAAc,8FCpFVy6U,EAAgBhhX,EAAAA,YAAiB,SAAU2K,EAAOkc,GACzD,IAAI3mB,EAAWyK,EAAMzK,SAAUI,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MACtEmhP,EAAathP,EAAAA,OAAa,MAC9BA,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASwsN,EAAWxgP,QACpB,IACJ,IAAImgX,GAAoBplV,EAAAA,EAAAA,GAAW,CAC/B,oBAAoB,GACrBv7B,GACH,OAAQN,EAAAA,cAAoB,MAAO,CAAEM,UAAW2gX,EAAmB9gX,MAAOA,EAAOK,IAAK8gP,GAAcphP,EACxG,IACA8gX,EAAcvoV,UAAY,CACtBv4B,SAAUw4B,EAAAA,IACVp4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,QAEXsoV,EAAcz6U,YAAc,4ICjDxBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAiCW63W,EAAalhX,EAAAA,YAAiB,SAAU2K,EAAOkc,GACtD,IAAIvmB,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MAAOqK,EAAOG,EAAMH,KAAM3I,EAAO8I,EAAM9I,KAAMujC,EAAUz6B,EAAMy6B,QAAS4N,EAAYroC,EAAMqoC,UAAWrsC,EAAWgE,EAAMhE,SAAUuF,EAAWvB,EAAMuB,SAAUC,EAAWxB,EAAMwB,SAAUkV,EAAQ1W,EAAM0W,MAAO2W,EAAWrtB,EAAMqtB,SAAU93B,EAAWyK,EAAMzK,SAAUg5C,EAASjyB,EAAOtc,EAAO,CAAC,YAAa,QAAS,OAAQ,OAAQ,UAAW,YAAa,WAAY,WAAY,WAAY,QAAS,WAAY,aACzbzG,EAAKlE,EAAAA,WAAiB8gX,EAAAA,GAAgB9xS,EAAW9qE,EAAG8qE,SAAUyxS,EAAOv8W,EAAGu8W,KAAMxwW,EAAO/L,EAAG+L,KACxFqxO,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACH10B,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACPzhP,MAAOA,EACP,IACJ,IAAI2hP,GAAiBzwN,EAAAA,EAAAA,GAAW,gBAAiB,CAC7C,aAAc3vB,EACd,aAAcvF,GACfrG,GACCitC,EAAcvtC,EAAAA,aAAkB,SAAUW,GAC1C,GAAIwL,IAAaxF,EAAU,CACvB,IAAIk7M,EAAS,CACT/sL,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACPzhP,MAAOA,GAEXwB,EAAS01M,EAAQxgM,EAAO1gB,EAC5B,CACJ,GAAG,CAACwL,EAAUkV,EAAO1a,IACjBw6W,EAAqBnhX,EAAAA,cAAoBA,EAAAA,SAAgB,MACxD6B,GAAQujC,IAAYplC,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAMV,GAAO6lP,EAAAA,EAAAA,IAAW7lP,GAAQA,EAAMA,KAAMujC,KAChG4pC,GAAYyxS,EAAO,KAAOzgX,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,eAAiBkK,IACzF,OAAQwoC,EACFhzC,EAAAA,cAAoB,KAAM,CAAEM,UAAW,mCAAoCkE,KAAM,cAChFxE,EAAAA,cAAoB,KAAMshB,EAAS,CAAE9gB,IAAK8gP,EAAYhhP,UAAWgsP,EAAgBnsP,MAAOA,EAAOqE,KAAM,WAAY,aAAcgG,EAAM,gBAAiB7D,EAAU7E,QAASyrC,EAAavV,UAAUkvC,EAAAA,EAAAA,GAAYlvC,EAAUrxB,IAAauyC,GAAUjpC,EAA2B/P,EAApBihX,EAC/P,IACAD,EAAWzoV,UAAY,CACnBn4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPluB,KAAMkuB,EAAAA,OACN72B,KAAM62B,EAAAA,OACN0M,QAAS8gN,EAAAA,GACTlzM,UAAWta,EAAAA,KACXxsB,SAAUwsB,EAAAA,KACV/xB,SAAU+xB,EAAAA,KACViuO,WAAYjuO,EAAAA,KAEhBwoV,EAAW36U,YAAc,kJCpGrBjlB,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAmBIioV,EAAoB,CAAEn7W,KAAM,QAASwhR,SAAU,KAI/C45F,EAAe,CAAEp7W,KAAM,QAASwhR,SAAU,GAkCnCs5F,EAAmB/gX,EAAAA,YAAiB,SAAU2K,EAAOkc,GAC5D,IAAI3mB,EAAWyK,EAAMzK,SAAUI,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,OAC1EwiC,EAAAA,EAAAA,GAAgBC,EAAAA,GAChB,IAAI6mP,GAAuB/hB,EAAAA,EAAAA,GAAuB9kO,EAAAA,GAC9C1+B,EAAKlE,EAAAA,WAAiB8gX,EAAAA,GAAgBv0W,EAAYrI,EAAGqI,UAAWyiE,EAAW9qE,EAAG8qE,SAAUhgE,EAAO9K,EAAG8K,KAAM5I,EAAWlC,EAAGkC,SAAUmlW,EAAiBrnW,EAAGqnW,eAAgBkV,EAAOv8W,EAAGu8W,KAAMr4V,EAAMlkB,EAAGkkB,IAAKthB,EAAQ5C,EAAG4C,MAAO45W,EAAYx8W,EAAGw8W,UAAWxhW,EAAQhb,EAAGgb,MAAOjP,EAAO/L,EAAG+L,KAAM9D,EAAWjI,EAAGiI,SAC9Rm1O,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACC4sV,EAAsC,mBAAd/0W,EAA0BA,GAA0B,IAAdA,EAAsB80W,EAAeD,EACnGG,EAAWz6W,GA1DU,IA2DrB06W,EAAed,GAvDE,GAwDrB1gX,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,IACJ,IAAIq1H,EAAuBzhX,EAAAA,SAAc,WAAc,MAAO,sBAAuB67B,EAAAA,EAAAA,GAAW,CAC5F,iBAA+B,UAAbz1B,EAClB,eAA6B,QAAbA,GACjB9F,EAAY,GAAG,CAAC8F,IACfs7W,EAAa,CACb7/V,QAAS,EACTg+V,UAAW0B,EACXI,iBAAkB,QAAUL,GAAkBA,EAAe75F,UAAY,KACzEpf,WAAY,QAAUi5G,GAAkBA,EAAe75F,UAAY,MAEnEm6F,EAAgB,CAChB//V,QAAS,EACT+V,UAAW,kBACX+pV,iBAAkB,QAAUL,GAAkBA,EAAe75F,UAAY,KACzEpf,WAAY,QAAUi5G,GAAkBA,EAAe75F,UAAY,MAEnEo6F,EAAe,CACfhgW,QAAU4+V,EAAW,EAAJ,EACjBZ,UAAYY,EAAWe,EAAJ,EACnBG,iBAAkB,QAAUL,GAAkBA,EAAe75F,UAAY,KACzEpf,WAAY,QAAUi5G,GAAkBA,EAAe75F,UAAY,MAEnEq6F,EAAkB,CAClBjgW,QAAS,EACT+V,UAAW,oBACX+pV,iBAAkB,QAAUL,GAAkBA,EAAe75F,UAAY,KACzEpf,WAAY,QAAUi5G,GAAkBA,EAAe75F,UAAY,MAEnEs6F,EAAqB,CACrBlgW,QAAS,EACT+V,UAAW,mBACX+pV,iBAAkB,QAAUL,GAAkBA,EAAe75F,UAAY,KACzEpf,WAAY,QAAUi5G,GAAkBA,EAAe75F,UAAY,MAEnEu6F,EAAsB,CACtBpqV,UAAW,iBACXqqV,0BAA2BX,GAAkBA,EAAe75F,UAAY,KACxErlC,oBAAqBk/H,GAAkBA,EAAe75F,UAAY,MAElEy6F,EAAkBlzS,EACT,SAAThgE,EAAkB0yW,EAAaE,EACtB,SAAT5yW,EAAkB6yW,EACL,QAARz5V,GAA8B,UAAbhiB,GAAkC,QAARgiB,GAA8B,QAAbhiB,EACzDq6W,EAAOuB,EAAsBF,EAC7BrB,EAAOuB,EAAsBD,EACrCI,EAAejjW,GAAUlf,EAAAA,cAAoB,KAAM,CAAEM,UAAW,iBAAkBkE,KAAM,UAAW,aAAc,cAAe,gBAAiBwqE,GAAY9vD,EAC5JxS,KAAI,SAAUooB,EAASzT,GACxB,IAAI+gW,EAAkB9gW,EAASA,EAAS,CAAED,MAAOA,GAASyT,GAAU,CAAE3oB,SAAUA,IAC5EogP,EAAWt8O,GAAQixW,EAAAA,EACvB,OAAQlhX,EAAAA,cAAoBusP,EAAUjrO,EAAS,CAAEyW,IAAK1W,GAAS+gW,GACnE,KACIC,EAAoBriX,EAAAA,cAAoB,MAAO,CAAEG,MAAOmhX,EAAiBhgW,EAASA,EAAS,CAAC,EAAG4gW,GAAkB/hX,GAASA,EAAOG,UAAWmhX,EAAsBjhX,IAAK8gP,GACvKthP,EAAAA,cAAoB,MAAO,CAAEM,UAAW,mBAAoBH,OAAQ6uE,GAAYyxS,GAAiB,YAATzxW,EAAqB,CAAElI,MAAO06W,GAAiB,CAAE16W,MAAOy6W,IAAcY,GAAejiX,GAC7KupR,GAAwBzpR,EAAAA,cAAoB4nQ,EAAAA,EAAkB,OAClE,MAAiB,YAAT54P,EACHhP,EAAAA,cAAoBA,EAAAA,SAAgB,KACjCgvE,GAAYhvE,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YAAawB,QAASypW,IAC1E8W,GACFA,CACV,IACAtB,EAAiBtoV,UAAY,CACzBv4B,SAAUw4B,EAAAA,IACVp4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPzoB,KAAMyoB,EAAAA,IACNV,SAAUU,EAAAA,QAEdqoV,EAAiBx6U,YAAc,yECzIpBu6U,UAAgB9gX,cAXN,CACjBuM,WAAW,EACXyiE,UAAU,EACVhgE,KAAM,UACN5I,SAAU,QACVq6W,MAAM,EACNr4V,IAAK,MACLthB,MAAO,IACP45W,UAAW,6iDCTJr9G,EAAW,GAIXi/G,EAA0B,IAI1B/+G,EAAY,IAIhB,SAASC,EAAYC,EAAQvkP,GAChC,GAAIwkP,EAAcD,GACd,OAAOvkP,EAAMmpC,OAAOo7M,IAGpB,IAAIE,EAAiBzkP,EAAMmpC,OAAOu7M,EAAgBH,KAClD,OAAOE,EAAezkP,MAClBskP,EAYL,SAAkCC,GACrC,GAAIM,EAAqBN,GACrB,OAAOA,EAGP,IAAIO,EAAsBP,EAAO/7N,QAAQ67N,GACzC,OAAOE,EAAOjwP,UAAUwwP,EAAsB,EAEtD,CApBwBF,CAAyBL,GAASE,EAAezkP,YAASvf,CAElF,CAIO,SAASikQ,EAAgBH,GAC5B,OAAOM,EAAqBN,GAAUA,EAASA,EAAOhuP,MAAM8tP,GAAW,EAC3E,CAgBO,SAASU,EAAgBR,GAC5B,OAAOS,EAAS,IAAKT,EACzB,CAgBO,SAASS,EAASC,EAASC,GAC9B,OAAOA,EAAWA,EAAWb,EAAYY,EAAUA,CACvD,CAIO,SAASE,EAAkBZ,GAC9B,IAAIa,EAAqBb,EAAO53K,YAAY03K,GAC5C,OAAOe,EAAqB,EAAIjB,EAAWI,EAAOjwP,UAAU,EAAG8wP,EACnE,CAIO,SAASP,EAAqBN,GACjC,OAAOA,IAAWJ,GAAYI,EAAO/7N,QAAQ67N,GAAa,CAC9D,CAIO,SAASG,EAAcD,GAC1B,OAAOA,IAAWJ,GAAYI,EAAO/7N,QAAQ67N,GAAa,CAC9D,CAIO,SAASg/G,EAAe9+G,GAC3B,OAA0C,IA0B9C,SAAgCA,GAC5B,OAAOA,EAAOhuP,MAAM8tP,GAAWj1P,OAAS,CAC5C,CA5BWk0W,CAAuB/+G,EAClC,CAUO,SAASe,EAAWf,GACvB,IAAIa,EAAqBb,EAAO53K,YAAY03K,GAC5C,OAAOe,EAAqB,EAAIb,EAASA,EAAOjwP,UAAU8wP,EAAqB,EACnF,CAIO,SAASm+G,EAA+BnoV,EAAMooV,EAAaC,GAC9D,OAAKj/G,EAAcg/G,GAGZpoV,EACH+tB,OAAOq6T,GAAeC,EAAgB,GAAKt6T,OAAOq6T,GAAe,GAAG/gU,WAAa,IACjF0G,OAAOq6T,GAAe,GAAKr6T,OAAOq6T,GAAe,GAAG/gU,YAAcghU,EAAgB,GAAGhhU,WAJ9E+gU,CAKf,CChHA,IAAIE,EAAc,CACdj9U,SAAU,MACVD,WAAY,QAKZm9U,EAAkB,CAClBl9U,SAAU,MACVD,WAAY,SAKZo9U,EAAqB,CACrBn9U,SAAU,OACVD,WAAY,OAKZq9U,EAAuB,CACvBp9U,SAAU,MACVD,WAAY,QAKLs9U,EAAqB,CAC5BC,SAAU,CACNx9U,YAAa,CACTE,SAAU,SACVD,WAAY,SAEhBE,WAAYi9U,EACZK,UAAWJ,GAEfK,SAAU,CACN19U,YAAa,CACTE,SAAU,MACVD,WAAY,QAEhBE,WAAYi9U,EACZK,UAAWH,IAMRK,EAAiB,CACxBH,SAAU,CACNx9U,YAAa,CACTE,SAAU,SACVD,WAAY,QAEhBE,WAAYg9U,EACZM,UAAWJ,GAEfO,UAAW,CACP59U,YAAa,CACTE,SAAU,MACVD,WAAY,SAEhBE,WAAYg9U,EACZM,UAAWH,IClDZ,SAASO,EAAoB7/G,EAAQ8/G,EAAgBx3H,GACxD,OAAI2X,EAAcD,GACV8/G,EACOx3H,EAAyB,WAAa,YAGtC,WAIJA,EAAyB,WAAa,WAErD,CAIO,SAASy3H,EAA6Bz3H,GACzC,OAAOA,EAAyB,MAAQ,KAC5C,CAIO,SAAS03H,EAAgBC,EAAUjgH,GACtC,MAAO,GAAG9yP,OAAO+yW,EAAU,KAAK/yW,OAAO8yP,EAC3C,eCzCI/wO,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAkBzC61V,EAA8B,SAAU1vV,GAExC,SAAS0vV,IACL,OAAkB,OAAX1vV,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAwBA,OA3BAiG,EAAUixV,EAAc1vV,GAOxB0vV,EAAah3V,UAAUnrB,OAAS,WAC5B,OAAIirB,KAAK9hB,MAAMyhD,IACHpsD,EAAAA,cAAoB,IAAK,CAAEM,UAAWmsB,KAAKm3V,uBAAwBp/W,KAAM,eAAgBkU,KAAM+T,KAAK9hB,MAAMyhD,IAAKp0B,UAAW,GAAKvL,KAAK9hB,MAAMzK,UAG1IF,EAAAA,cAAoB,OAAQ,CAAEH,GAAI4sB,KAAK9hB,MAAM9K,GAAIS,WAAWu7B,EAAAA,EAAAA,GAAWpP,KAAKm3V,uBAAwBn3V,KAAK9hB,MAAMrK,WAAYH,MAAOssB,KAAK9hB,MAAMxK,MAAOqE,KAAM,gBAAkBioB,KAAK9hB,MAAMzK,SAEvM,EACAyjX,EAAah3V,UAAUi3V,qBAAuB,WAC1C,OAAO/nV,EAAAA,EAAAA,GAAW,SAAU,cAAe,CACvC,WAAYpP,KAAK9hB,MAAM2I,QAE/B,EAIAqwW,EAAalrV,UAAY,CACrBnlB,OAAQolB,EAAAA,KACR0zB,IAAK1zB,EAAAA,QAEFirV,CACX,CA7BkC,CA6BhC3jX,EAAAA,oBC/CE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EASW0qV,EAAgB,iBAIhBC,EAAiB,kBAIjBC,EAAgB,iBACvBC,EAA+B,SAAU/vV,GAEzC,SAAS+vV,IACL,OAAkB,OAAX/vV,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CA4BA,OA/BAiG,EAAUsxV,EAAe/vV,GAOzB+vV,EAAcr3V,UAAUnrB,OAAS,WAC7B,OAAOxB,EAAAA,cAAoBszC,EAAAA,EAAUhyB,EAAS,CAAE,eAAe,GAAQmL,KAAKw3V,WAChF,EACAD,EAAcr3V,UAAUs3V,QAAU,WAE9B,OADuBX,EAAoB72V,KAAK9hB,MAAM84P,QAAoC,IAA5Bh3O,KAAK9hB,MAAMu5W,aAA0C,QAAnBz3V,KAAK9hB,MAAMyd,MAEvG,IAAK,WACD,MAAO,CAAE7lB,KAAMshX,EAAehiX,KAAMgqP,EAAAA,KACxC,IAAK,YACD,MAAO,CAAEtpP,KAAMuhX,EAAgBjiX,KAAMqmS,EAAAA,KACzC,IAAK,WACD,MAAO,CAAE3lS,KAAMwhX,EAAeliX,KAAMomS,EAAAA,KACxC,QACI,MAAO,CAAC,EAEpB,EAIA+7E,EAAcvrV,UAAY,CACtBgrO,OAAQ/qO,EAAAA,OACRtQ,IAAKsQ,EAAAA,OACLwrV,aAAcxrV,EAAAA,MAEXsrV,CACX,CAjCmC,CAiCjChkX,EAAAA,WC5EE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA0BzCq2V,EAAkC,SAAUlwV,GAE5C,SAASkwV,EAAiBx5W,GACtB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAWxC,OAVA0C,EAAMw4T,eAAgB,EACtBx4T,EAAMgJ,YAAc,SAAUx3B,GAC1BwuB,EAAMxkB,MAAMwtB,YAAYhJ,EAAMxkB,MAAMsF,KAAKpQ,IACzCc,EAAMs+B,iBACV,EACA9P,EAAM+sO,aAAe,SAAUv7P,GAC3BwuB,EAAMxkB,MAAMuxP,aAAa/sO,EAAMxkB,MAAMsF,KAAKpQ,IAC1Cc,EAAMs+B,iBACV,EACA9P,EAAM3vB,MAAQ,CAAE8T,QAAQ,GACjB6b,CACX,CAyHA,OAvIAuD,EAAUyxV,EAAkBlwV,GAe5BkwV,EAAiBx3V,UAAU4K,kBAAoB,WAC3C,IAAI2vQ,EAAgBz6Q,KAAK9hB,MAAMu8R,cAC3BC,EAAgB16Q,KAAK9hB,MAAMsF,KAAKpQ,GAGhCqnS,GAAiBA,IAAkBC,GACnC16Q,KAAKu6Q,YAAYtyQ,QAErBjI,KAAKk7T,eAAgB,CACzB,EACAw8B,EAAiBx3V,UAAU8K,mBAAqB,SAAUukB,GACtD,IAAIkrP,EAAgBz6Q,KAAK9hB,MAAMu8R,cAC3BC,EAAgB16Q,KAAK9hB,MAAMsF,KAAKpQ,GACpC,GAAIqnS,EAAe,CACf,IAAIzwQ,GAAgBC,EAAAA,EAAAA,GAAiBzb,UAGjC+gC,EAAUkrP,gBAAkBA,GACzBA,IAAkBC,GAIjB16Q,KAAKu6Q,YAAYhiN,SAASvuD,IAC9BhK,KAAKu6Q,YAAYtyQ,OAEzB,CACJ,EACAyvV,EAAiBx3V,UAAUnrB,OAAS,WAChC,IAAI2tB,EAAQ1C,KACRxc,EAAOwc,KAAK9hB,MAAMsF,KAClBwzP,EAASxzP,EAAKpQ,GACdukX,EAAaX,EAAgBh3V,KAAK9hB,MAAM+4W,SAAUjgH,GACtD,OAAQzjQ,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB,KAAM,CAAEH,GAAI4jX,EAAgBh3V,KAAK9hB,MAAM+4W,SAAUjgH,GAASnjQ,UAAWmsB,KAAKm3V,qBAAqB3zW,GAAO9P,MAAO8P,EAAKo0W,SAAUrsV,SAAUyrO,IAAWh3O,KAAK9hB,MAAMk9R,eAAiB,GAAK,EAAG1vQ,YAAa1L,KAAK0L,YAAa+jO,aAAczvO,KAAKyvO,aAAc5/N,YAAa,SAAU37B,GAAS,OAAOwuB,EAAMxkB,MAAM2xB,YAAY37B,EAAQ,EAAG41B,OAAQ,SAAUpwB,GAAK,OAAOgpB,EAAMxkB,MAAM4rB,OAAOktO,EAAQt9P,EAAI,EAAGkwB,QAAS,WAAc,OAAOlH,EAAMxkB,MAAM0rB,QAAQotO,EAAS,EAAG3hQ,QAAS,SAAUnB,GAAS,OAAOwuB,EAAMxkB,MAAM7I,QAAQnB,EAAO8iQ,EAAS,EAAGj/P,KAAM,WAAY,kBAAiByL,EAAKtJ,eAAkBhH,EAAW,gBAAiBsQ,EAAKiP,MAAM5Q,OAAS,QAAW3O,EAAW,gBAAiBsQ,EAAKiP,MAAM5Q,OAAS,EAAIme,KAAK63V,YAAS3kX,EAAW,aAAcsQ,EAAKzF,KAAM,YAAaiiB,KAAK63V,OAASF,OAAazkX,EAAWa,IAAK,SAAUy3B,GAAM,OAAO9I,EAAM63Q,YAAc/uQ,CAAI,EAAGF,IAAK,KAAOtL,KAAK83V,cAAgB93V,KAAKq5U,gBAAkBr5U,KAAK+3V,sBAC75B/3V,KAAKg4V,sBACb,EACAN,EAAiBx3V,UAAUm5U,cAAgB,WACvC,IAAIriG,EAASh3O,KAAK9hB,MAAMsF,KAAKy0W,oBAC7B,OAAQ1kX,EAAAA,cAAoB,MAAO,CAAEM,UAAW,YAAakE,KAAM,gBAC/DxE,EAAAA,cAAoBysB,KAAK83V,cAAe,CAAEt0W,KAAMwc,KAAK9hB,MAAMg6W,qBAAqBlhH,GAASA,OAAQA,IACzG,EACA0gH,EAAiBx3V,UAAU63V,mBAAqB,WAC5C,IAAIv0W,EAAOwc,KAAK9hB,MAAMsF,KACtB,GAAIwc,KAAKm4V,WACL,OAAQ5kX,EAAAA,cAAoBysB,KAAKm4V,WAAY,CAAE30W,KAAMwc,KAAK9hB,MAAMg6W,qBAAqB10W,EAAKpQ,IAAK4jQ,OAAQxzP,EAAKpQ,GAAIyT,OAAQmZ,KAAK63V,OAAQl8V,IAAKo7V,EAA6B/2V,KAAK9hB,MAAMohP,0BAGlL,IAAI84H,EAAmBp4V,KAAK++N,WACxBxrP,EAAAA,cAAoBysB,KAAK++N,WAAY,CAAEv7O,KAAMwc,KAAK9hB,MAAMg6W,qBAAqB10W,EAAKpQ,IAAK4jQ,OAAQxzP,EAAKpQ,GAAIk4B,IAAK,MAC7G/3B,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,oBAAsB2P,EAAKzF,MACxE,OAAQxK,EAAAA,cAAoB2jX,EAAc,CAAEv3T,IAAKn8C,EAAKm8C,IAAK94C,OAAQmZ,KAAK63V,QACpE73V,KAAKq4V,6BACLD,EACAp4V,KAAKs4V,0BAEjB,EACAZ,EAAiBx3V,UAAU83V,oBAAsB,WAC7C,GAAIh4V,KAAK63V,OAAQ,CACb,IAAI7gH,EAASh3O,KAAK9hB,MAAMsF,KAAKpQ,GACzBqE,EHhGT,SAA0Bu/P,EAAQ8/G,EAAgBx3H,GACrD,IAAIi5H,EAAmB1B,EAAoB7/G,EAAQ8/G,EAAgBx3H,GACnE,OAAIA,EAC4B,aAArBi5H,EAAkChC,EAAmBC,SAAWD,EAAmBG,SAG9D,aAArB6B,EAAkC5B,EAAeH,SAAWG,EAAeC,SAE1F,CGwFqB3vF,CAAiBjwB,EAAQh3O,KAAK9hB,MAAM44W,eAAgB92V,KAAK9hB,MAAMohP,wBAAyBtmN,EAAcvhC,EAAGuhC,YAAaG,EAAa1hC,EAAG0hC,WAAYs9U,EAAYh/W,EAAGg/W,UAC1K,OAAQljX,EAAAA,cAAoBqkC,EAAAA,EAAO,CAAEkB,OAAQ9Y,KAAKu6Q,YAAarwQ,MAAM,EAAM6O,WAAY/Y,KAAKw4V,oBAAqBx/U,YAAaA,EAAaG,WAAYA,EAAYs9U,UAAWA,EAAWxrV,SAAS,EAAOK,IAAK,KAC1M/3B,EAAAA,cAAoBklX,EAAuB,CAAEt+G,aAAcnD,EAAQvkP,MAAOuN,KAAK9hB,MAAMsF,KAAKiP,MAAOwkW,SAAUj3V,KAAK9hB,MAAM+4W,SAAUx8E,cAAez6Q,KAAK9hB,MAAMu8R,cAAei+E,qBAAsB14V,KAAK9hB,MAAMw6W,qBAAsBt9E,eAAgBp7Q,KAAK9hB,MAAMk9R,eAAgBr8C,WAAY/+N,KAAK9hB,MAAM6gP,WAAYo5H,WAAYn4V,KAAK9hB,MAAMi6W,WAAYrB,eAAgB92V,KAAK9hB,MAAM44W,eAAgBx3H,uBAAwBt/N,KAAK9hB,MAAMohP,uBAAwBzrP,UAAW,+CAAgD63B,YAAa1L,KAAK9hB,MAAMwtB,YAAa+jO,aAAczvO,KAAK9hB,MAAMuxP,aAAc5/N,YAAa7P,KAAK9hB,MAAM2xB,YAAa/F,OAAQ9J,KAAK9hB,MAAM4rB,OAAQF,QAAS5J,KAAK9hB,MAAM0rB,QAASv0B,QAAS2qB,KAAK9hB,MAAM7I,QAAS6iX,qBAAsBl4V,KAAK9hB,MAAMg6W,uBACjuB,CAEI,OAAO,IAEf,EACAR,EAAiBx3V,UAAUm4V,2BAA6B,WACpD,IAAI5gX,EAAKuoB,KAAK9hB,MAAMsF,KAAMpO,EAAOqC,EAAGrC,KAAMujC,EAAUlhC,EAAGkhC,QACvD,OAAOvjC,GAAQujC,EACXplC,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAMV,EAAMA,KAAMujC,EAASrN,IAAK,MAAS,IACjF,EACAosV,EAAiBx3V,UAAUo4V,wBAA0B,WACjD,OAAOt4V,KAAK9hB,MAAMsF,KAAKiP,MAAM5Q,OAAS,EACjCtO,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,sBAAuB,eAAe,GAC5EN,EAAAA,cAAoBgkX,EAAe,CAAEvgH,OAAQh3O,KAAK9hB,MAAMsF,KAAKpQ,GAAIqkX,aAAcz3V,KAAK9hB,MAAM44W,eAAgBn7V,IAAKo7V,EAA6B/2V,KAAK9hB,MAAMohP,wBAAyBh0N,IAAK,OAAW,IAC5M,EACA3oB,OAAO6nB,eAAektV,EAAiBx3V,UAAW,aAAc,CAC5DuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMsF,KAAKzO,QAAUirB,KAAK9hB,MAAM6gP,UAChD,EACAr0N,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAektV,EAAiBx3V,UAAW,aAAc,CAC5DuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMsF,KAAK20W,YAAcn4V,KAAK9hB,MAAMi6W,UACpD,EACAztV,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAektV,EAAiBx3V,UAAW,gBAAiB,CAC/DuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMsF,KAAKy0W,oBAAsBj4V,KAAK9hB,MAAMsF,KAAKs0W,cAAgB,IACjF,EACAptV,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAektV,EAAiBx3V,UAAW,SAAU,CACxDuK,IAAK,WACD,IL1FmBusO,EAAQ0hH,EK0FvBx6W,EAAQ8hB,KAAK9hB,MACjB,OAAOA,EAAMsF,KAAKiP,MAAM5Q,OAAS,IL3Fdm1P,EK4FA94P,EAAMsF,KAAKpQ,GL3FO,KADVslX,EK4FOx6W,EAAMw6W,sBL3FvBz9U,QAAQ+7N,KACtB0hH,EAAqB72W,SAAWm1P,EAAOn1P,QAC1C62W,EAAqBjwT,OAAOuuM,EAAOn1P,UAAYi1P,MK4F1C92O,KAAKk7T,aACd,EACAxwT,YAAY,EACZC,cAAc,IAElB+sV,EAAiBx3V,UAAUs4V,kBAAoB,WAC3C,OAAOppV,EAAAA,EAAAA,GAAW,eAAgB,CAAE,QAASpP,KAAK9hB,MAAMohP,wBAC5D,EACAo4H,EAAiBx3V,UAAUi3V,qBAAuB,SAAU3zW,GACxD,OAAO4rB,EAAAA,EAAAA,GAAW,SAAU,cAAe,CACvC,WL9D4B4nO,EK8DOxzP,EAAKpQ,GL7DzC2kQ,EAAWf,KAAY6+G,GK8DtB,SAAUryW,EAAKm1W,mBACf,aAAcn1W,EAAKtJ,UACpBsJ,EAAKo1W,ULjET,IAAiC5hH,CKkEpC,EACO0gH,CACX,CAzIsC,CAyIpCnkX,EAAAA,WCnKE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAqBzCo3V,EAAuC,SAAUjxV,GAEjD,SAASixV,IACL,IAAI/1V,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAShE,OARA0C,EAAMgJ,YAAc,SAAUx3B,GAC1BwuB,EAAMxkB,MAAMwtB,YAAYhJ,EAAMxkB,MAAMi8P,cACpCjmQ,EAAMs+B,iBACV,EACA9P,EAAM+sO,aAAe,SAAUv7P,GAC3BwuB,EAAMxkB,MAAMuxP,aAAa/sO,EAAMxkB,MAAMi8P,cACrCjmQ,EAAMs+B,iBACV,EACO9P,CACX,CAWA,OAvBAuD,EAAUwyV,EAAuBjxV,GAajCixV,EAAsBv4V,UAAUnrB,OAAS,WACrC,IAAIolQ,EAAen6O,KAAK9hB,MAAMi8P,aAC9B,OAAQ5mQ,EAAAA,cAAoB,KAAM,CAAEM,UAAWmsB,KAAK9hB,MAAMrK,UAAWkE,KAAMioB,KAAK9hB,MAAMnG,KAAOioB,KAAK9hB,MAAMnG,UAAyB7E,IAAjBinQ,EAA6B,OAAS,UAAY/mQ,QAAqBF,IAAjBinQ,EAA6B68G,EAAgBh3V,KAAK9hB,MAAM+4W,SAAU98G,QAAgBjnQ,EAAWw4B,iBAA8Bx4B,IAAjBinQ,EAA6Bn6O,KAAK0L,iBAAcx4B,EAAWu8P,kBAA+Bv8P,IAAjBinQ,EAA6Bn6O,KAAKyvO,kBAAev8P,EAAW,mBAAoB8sB,KAAK9hB,MAAM,qBAAuB8hB,KAAK8+N,mBACpd,EACA25H,EAAsBv4V,UAAU4+N,iBAAmB,WAC/C,IAAIp8N,EAAQ1C,KACZ,OAAOA,KAAK9hB,MAAMuU,MAAM5Q,OAAS,EAAKme,KAAK9hB,MAAMuU,MAAMxS,KAAI,SAAUuD,EAAMoR,GACvE,OAAQrhB,EAAAA,cAAoBmkX,EAAkB,CAAEl0W,KAAMA,EAAMszW,eAAgBp0V,EAAMxkB,MAAM44W,eAAgBx3H,uBAAwB58N,EAAMxkB,MAAMohP,uBAAwBm7C,cAAe/3Q,EAAMxkB,MAAMu8R,cAAei+E,qBAAsBh2V,EAAMxkB,MAAMw6W,qBAAsBt9E,eAAgB14Q,EAAMxkB,MAAMk9R,eAAgBr8C,WAAYr8N,EAAMxkB,MAAM6gP,WAAYo5H,WAAYz1V,EAAMxkB,MAAMi6W,WAAYlB,SAAUv0V,EAAMxkB,MAAM+4W,SAAUvrV,YAAahJ,EAAMxkB,MAAMwtB,YAAa+jO,aAAc/sO,EAAMxkB,MAAMuxP,aAAc5/N,YAAanN,EAAMxkB,MAAM2xB,YAAa/F,OAAQpH,EAAMxkB,MAAM4rB,OAAQF,QAASlH,EAAMxkB,MAAM0rB,QAASv0B,QAASqtB,EAAMxkB,MAAM7I,QAAS6iX,qBAAsBx1V,EAAMxkB,MAAMg6W,qBAAsB5sV,IAAK1W,GACvqB,IAAM,IACV,EACO6jW,CACX,CAzB2C,CAyBzCllX,EAAAA,+BC9CE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAqBzCw3V,EAA6B,SAAUrxV,GAEvC,SAASqxV,EAAY36W,GACjB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAwExC,OAvEA0C,EAAM8hK,UAAY,KAClB9hK,EAAMihO,OAAS,SAAUprP,EAAMssG,EAASvjD,GACpC,IAAIptD,EAAQqE,EAAKrE,MACbuD,EAAKirB,EAAMxkB,MAAOylP,EAASlsP,EAAGksP,OAAQ/uO,EAAQnd,EAAGmd,MACjDyT,EAAU3F,EAAM8hK,WAAa9hK,EAAM8hK,UAAUn8J,QAC7CA,IAAY3F,EAAMo2V,UAAYp2V,EAAMq2V,aACpCp1H,EAAOzvP,EAAOm0B,EAASzT,EAAOiwF,EAASvjD,EAE/C,EACA5+B,EAAMkH,QAAU,WACZlH,EAAM6L,SAAS,CACXsH,SAAS,GAEjB,EACAnT,EAAMoH,OAAS,WACXpH,EAAM6L,SAAS,CACXsH,SAAS,GAEjB,EACAnT,EAAMs2V,SAAW,SAAU9kX,GACvB,IAAIuD,EAAKirB,EAAMxkB,MAAO86W,EAAWvhX,EAAGuhX,SAAUpkW,EAAQnd,EAAGmd,MAAOkZ,EAAOr2B,EAAGq2B,KAAMD,EAAOp2B,EAAGo2B,MACtFC,EAAKmrV,aAAeprV,EAAKorV,cACzBD,EAASlrV,EAAKmrV,YAAcrkW,EAAQA,EAAQ,EAAG1gB,EAEvD,EACAwuB,EAAMw2V,aAAe,SAAUhlX,GAC3B,IAAIuD,EAAKirB,EAAMxkB,MAAO86W,EAAWvhX,EAAGuhX,SAAUpkW,EAAQnd,EAAGmd,MAAcnd,EAAGq2B,KACjEmrV,aACLD,EAASpkW,EAAO1gB,EAExB,EACAwuB,EAAMy2V,aAAe,SAAUjlX,GAC3B,IAAIuD,EAAKirB,EAAMxkB,MAAO86W,EAAWvhX,EAAGuhX,SAAUpkW,EAAQnd,EAAGmd,MAAcnd,EAAGo2B,KACjEorV,aACLD,EAASpkW,EAAQ,EAAG1gB,EAE5B,EACAwuB,EAAM+I,UAAY,SAAUv3B,GACxB,IAAIm2B,EAAUn2B,GAASA,EAAMm2B,QACzBwhP,EAAenpP,EAAMmpP,aACrBj3P,EAAQ8N,EAAMxkB,MAAM0W,MACpByT,EAAU3F,EAAM8hK,WAAa9hK,EAAM8hK,UAAUn8J,QAC7C+wV,EAAmB,SAAU5tV,EAAI1nB,EAAK2kB,GACtCv0B,EAAM+gB,iBACNyN,EAAMxkB,MAAMk7W,iBAAiB5tV,EAAI1nB,EAAK2kB,EAAQv0B,EAClD,EACKm0B,IAGDgC,IAAYtD,EAAAA,EAAK8L,OACjB3+B,EAAM+gB,iBACNyN,EAAMs2V,SAAS9kX,IAEVwuB,EAAMq2V,cACPltG,GAAgBxhP,IAAYtD,EAAAA,EAAKrX,KACjC0pW,EAAiB/wV,EAASzT,GAAQ,IAE7Bi3P,GAAgBxhP,IAAYtD,EAAAA,EAAKltB,MACtCu/W,EAAiB/wV,EAASzT,EAAO,IAE3Bi3P,GAAgBxhP,IAAYtD,EAAAA,EAAKG,GAGjC2kP,GAAgBxhP,IAAYtD,EAAAA,EAAKI,MACvCiyV,EAAiB/wV,EAASzT,EAAO,IAHjCwkW,EAAiB/wV,EAASzT,GAAQ,KAM9C,EACA8N,EAAM3vB,MAAQ,CACV8iC,SAAS,GAENnT,CACX,CAmFA,OA9JAuD,EAAU4yV,EAAarxV,GA4EvB7kB,OAAO6nB,eAAequV,EAAY34V,UAAW,WAAY,CACrDuK,IAAK,WACD,IAAIhzB,EAAKuoB,KAAK9hB,MAAO4vB,EAAOr2B,EAAGq2B,KAAMD,EAAOp2B,EAAGo2B,KAC3CwrV,EAAwBvrV,EAAK7rB,WAAa4rB,EAAK5rB,UAC/Cq3W,EAAsBxrV,EAAKmrV,aAAeprV,EAAKorV,YACnD,OAAQI,IAA0BC,CACtC,EACA5uV,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAequV,EAAY34V,UAAW,cAAe,CACxDuK,IAAK,WACD,IAAIhzB,EAAKuoB,KAAK9hB,MAAO4vB,EAAOr2B,EAAGq2B,KAAMD,EAAOp2B,EAAGo2B,KAC3CwrV,EAAwBvrV,EAAK7rB,WAAa4rB,EAAK5rB,UAC/Cs3W,EAAoBzrV,EAAK82Q,WAAa/2Q,EAAK+2Q,UAC/C,QAASy0E,IAA0BE,CACvC,EACA7uV,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAequV,EAAY34V,UAAW,eAAgB,CACzDuK,IAAK,WACD,MAAkC,eAA3BzK,KAAK9hB,MAAMo1W,WACtB,EACA5oV,YAAY,EACZC,cAAc,IAElBkuV,EAAY34V,UAAUnrB,OAAS,WAC3B,IAAI0C,EACAirB,EAAQ1C,KACR+4V,EAAc/4V,KAAK+4V,YACnBD,EAAW94V,KAAK84V,SAChBjtG,EAAe7rP,KAAK6rP,aACpB2tG,GAAapqV,EAAAA,EAAAA,GAAW,eAAe33B,EAAK,CAAC,GAC1C,WAAauoB,KAAKjtB,MAAM8iC,QAC3Bp+B,EAAG,yBAA2Bo0Q,EAC9Bp0Q,EAAG,wBAA0Bo0Q,EAC7Bp0Q,EAAG,mCAAqCo0Q,GAAgBktG,EACxDthX,EAAG,kCAAoCo0Q,GAAgBktG,EACvDthX,EAAG,gCAAkCo0Q,GAAgBitG,EACrDrhX,EAAG,+BAAiCo0Q,GAAgBitG,EACpDrhX,IACJ,OAAQlE,EAAAA,cAAoB0vP,EAAAA,EAAW,CAAEI,QAAS,SAAUnvP,GAAS,OAAOwuB,EAAMihO,OAAOzvP,GAAO,GAAM,EAAQ,EAAGyvP,OAAQ,SAAUzvP,GAAS,OAAOwuB,EAAMihO,OAAOzvP,GAAO,GAAO,EAAQ,EAAGqvP,UAAW,SAAUrvP,GAAS,OAAOwuB,EAAMihO,OAAOzvP,GAAO,GAAO,EAAO,EAAGH,IAAK,SAAUgC,GAAa2sB,EAAM8hK,UAAYzuL,CAAW,GACxTxC,EAAAA,cAAoB,MAAO,CAAEg4B,SAAUutV,GAAY,EAAI,EAAG/gX,KAAM,YAAa,gBAAiB,EAAG,aAAcioB,KAAK9hB,MAAMi9O,UAAW,mBAAoB0wB,EAAe,gBAAa34Q,EAAWW,UAAW2lX,EAAY9lX,MAAO,CAAEq7P,YAAa,QAAUnlO,QAAS5J,KAAK4J,QAASE,OAAQ9J,KAAK8J,OAAQylO,cAAevvO,KAAKg5V,SAAUvtV,UAAWzL,KAAKyL,WAC7UzL,KAAK9hB,MAAM4vB,KAAKmrV,aAAe1lX,EAAAA,cAAoB,MAAO,CAAEM,UAAW,kBAAmBwB,QAAS2qB,KAAKk5V,cACpG3lX,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAMkqB,KAAK9hB,MAAM4vB,KAAKmrV,YAC5CptG,EACI7rP,KAAK9hB,MAAM4vB,KAAK82Q,UACX5kR,KAAK9hB,MAAM4lC,MAAQ,iBAAmB,kBACtC9jB,KAAK9hB,MAAM4lC,MAAQ,kBAAoB,iBAC5C9jB,KAAK9hB,MAAM4vB,KAAK82Q,UACZ,iBACA,oBACR1xS,EAAWkC,KAAM4qB,KAAK9hB,MAAM4vB,KAAKmrV,YACjCptG,EACI7rP,KAAK9hB,MAAM4vB,KAAK82Q,UACX5kR,KAAK9hB,MAAM4lC,MAAQ03P,EAAAA,IAAmBC,EAAAA,IACtCz7Q,KAAK9hB,MAAM4lC,MAAQ23P,EAAAA,IAAoBD,EAAAA,IAC5Cx7Q,KAAK9hB,MAAM4vB,KAAK82Q,UACZxlD,EAAAA,IACAw1B,EAAAA,SACR1hR,EAAWqG,KAAM,YAC/BhG,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBACxCmsB,KAAK9hB,MAAM2vB,KAAKorV,aAAe1lX,EAAAA,cAAoB,MAAO,CAAEM,UAAW,kBAAmBwB,QAAS2qB,KAAKm5V,cACpG5lX,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAMkqB,KAAK9hB,MAAM2vB,KAAKorV,YAC5CptG,EACI7rP,KAAK9hB,MAAM2vB,KAAK+2Q,UACX5kR,KAAK9hB,MAAM4lC,MAAQ,kBAAoB,iBACvC9jB,KAAK9hB,MAAM4lC,MAAQ,iBAAmB,kBAC3C9jB,KAAK9hB,MAAM2vB,KAAK+2Q,UACZ,eACA,sBACR1xS,EAAWkC,KAAM4qB,KAAK9hB,MAAM2vB,KAAKorV,YACjCptG,EACI7rP,KAAK9hB,MAAM2vB,KAAK+2Q,UACX5kR,KAAK9hB,MAAM4lC,MAAQ23P,EAAAA,IAAoBD,EAAAA,IACvCx7Q,KAAK9hB,MAAM4lC,MAAQ03P,EAAAA,IAAmBC,EAAAA,IAC3Cz7Q,KAAK9hB,MAAM2vB,KAAK+2Q,UACZhwB,EAAAA,IACAx1B,EAAAA,SACRlsP,EAAWqG,KAAM,aAC3C,EACOs/W,CACX,CAhKiC,CAgK/BtlX,EAAAA,+ECrLE0yB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAsBA,IAAI+sV,GAA8B,SAAUjyV,GAExC,SAASiyV,EAAav7W,GAClB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAoBxC,OAnBA0C,EAAM++N,gBAAkB,WACpB,IAAIhqP,EAAKirB,EAAMxkB,MAAOwB,EAAWjI,EAAGiI,SAAUxF,EAAWzC,EAAGyC,SAAU9G,EAAKqE,EAAGrE,GAC1EsM,IAAaxF,GACbwF,EAAS+mB,UAAKvzB,EAAW,CACrBwmX,iBAAkBh3V,EAAMxkB,MAAMw7W,iBAC9BtmX,GAAIA,EACJgnB,OAAQsI,GAGpB,EACAA,EAAMu1N,aAAe,SAAUzgI,GAC3B,OAAI90F,EAAMxkB,MAAMy7W,iBACLpmX,EAAAA,aAAmBikH,EAAO3iG,GAASA,GAAS,CAAC,EAAG2iG,EAAMt5G,OAAQ,CAAEgzO,GAAIxuN,EAAMxkB,MAAMqkE,YAEpFi1C,CACX,EACA90F,EAAM3vB,MAAQ,CACVm3B,KAAMhsB,EAAMqkE,WAAY,GAErB7/C,CACX,CA+EA,OAtGAuD,GAAUwzV,EAAcjyV,GA2BxBiyV,EAAav5V,UAAUnrB,OAAS,WAC5B,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAO9K,EAAKqE,EAAGrE,GAAIK,EAAWgE,EAAGhE,SAAUuM,EAAQvI,EAAGuI,MAAO05W,EAAmBjiX,EAAGiiX,iBAAkBx/W,EAAWzC,EAAGyC,SAAUuF,EAAWhI,EAAGgI,SAAUo2B,EAAUp+B,EAAGo+B,QAAS0sC,EAAW9qE,EAAG8qE,SAAU1uE,EAAY4D,EAAG5D,UAAWulI,EAAQ3hI,EAAG2hI,MAAO47L,EAAkBv9T,EAAGu9T,gBAAiBl1T,EAAYrI,EAAGqI,UAAW65W,EAAmBliX,EAAGkiX,iBAC/UC,EAA6B,CAC7B,KAAQ,WACR,gBAAiB1/W,EACjB,eAAgBA,IAAaqoE,EAC7B,iBAAkBroE,GAAYuF,EAC9B,iBAAkBvF,GAAYqoE,KAAc9uE,GAE5ComX,GAAwBzqV,EAAAA,EAAAA,GAAW,kBAAmB,CACtD,oBAA+B,IAAVgqG,EACrB,aAAc72D,KAAc9uE,EAC5B,aAAcyG,GACf,WAAWgK,OAAOk1H,GAAQvlI,GACzBimX,GAAwB1qV,EAAAA,EAAAA,GAAW,SAAU,CAC7C,cAAel1B,GAAYuF,EAC3B,WAAYvF,GAAY27B,GACzBm/R,GAEC5/T,EA7DZ,SAAqBqC,GACjB,IAAIgY,EAAWhY,EAAGgY,SAAUra,EAAOqC,EAAGrC,KAAMujC,EAAUlhC,EAAGkhC,QAASugN,EAAYzhP,EAAGyhP,UACjF,OAAIzpO,EACQlc,EAAAA,cAAoB,MAAO,CAAEwE,KAAM,eAAgBlE,UAAW,+BAAgC2Y,IAAKiD,IAEtGra,GAAQujC,EACLplC,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,uBAAwBiC,KAAMV,EAAMA,KAAMujC,IAExFugN,EACG3lP,EAAAA,cAAoB,OAAQ,CAAEwE,KAAM,eAAgBlE,UAAW,wBAA0BqlP,IAE9F,IACX,CAiDmBM,CAAYx5N,KAAK9hB,OACxBqyM,GAAUr2M,GAAYzG,EACnBF,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAMysE,EAAW,aAAe,eAAgBntE,KAAMmtE,EAAWw3S,EAAAA,IAAgBC,EAAAA,IAAiBnmX,WAAWu7B,EAAAA,EAAAA,GAAW,oBAAqBmzC,EACtK,sBACA,uBACR,KAEF3oB,GADW1/C,GAAYqoE,GACHo3S,EACjBpmX,EAAAA,cAAoB,KAAM,CAAEwE,KAAM,QAAS,gBAAiBwqE,EAAU,eAAgBA,EAAU1uE,UAAW,mCAAoCH,MAAO,CAAEkwG,QAAS+1Q,EACrJ35V,KAAKjtB,MAAMm3B,KAAO,QAAU,OAC7B,UAAaz2B,GACzB,KACF+jH,OAAwBtkH,IAAd4M,IAA0BA,GAAsB5F,IAAYzG,EAEpEmmD,EADCrmD,EAAAA,cAAoB+kP,GAAAA,EAAQ,CAAEvD,wBAAyB,IAAKC,uBAAwB,IAAK1pN,IAAKouV,EAAmB,aAAchmX,MAdjH,CAAEkwG,QAAS,SAc6HnwG,SAAUmmD,EAASq+L,aAAc0hI,GAAoB35V,KAAKi4N,aAAc9G,eAAgBwoI,EAAkBnhI,cAAe,WAAc,OAAOmhI,GAAoBj3V,EAAM6L,SAAS,CAAErE,MAAM,GAAS,EAAG+qN,cAAe,WAAc,OAAO0kI,GAAoBj3V,EAAM6L,SAAS,CAAErE,MAAM,GAAU,IAE3b,OAAQ32B,EAAAA,cAAoB,KAAMshB,GAAS,CAAEzhB,GAAIA,EAAIS,UAAWgmX,GAAyBD,GACrFrmX,EAAAA,cAAoB,OAAQ,CAAEM,UAAWimX,EAAuBzkX,QAAS2qB,KAAKyhO,iBAC1ErsP,EACA7B,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,wBAA0BmM,GACnEuwM,GACJ/4F,EACR,EAIAiiQ,EAAaztV,UAAY,CACrBlsB,UAAWmsB,EAAAA,KACXx4B,SAAUw4B,EAAAA,IACVp4B,UAAWo4B,EAAAA,OACX72B,KAAM62B,EAAAA,OACNitN,UAAWjtN,EAAAA,OACXxc,SAAUwc,EAAAA,OACV0M,QAAS8gN,EAAAA,GACTl3K,SAAUt2C,EAAAA,KACV/xB,SAAU+xB,EAAAA,KACVvsB,SAAUusB,EAAAA,KACVxsB,SAAUwsB,EAAAA,KACVmtG,MAAOntG,EAAAA,OACPjsB,MAAOisB,EAAAA,UAAoB,CACvBA,EAAAA,OACAA,EAAAA,UAEJ74B,GAAI64B,EAAAA,UAAoB,CACpBA,EAAAA,OACAA,EAAAA,SAEJ4J,QAAS5J,EAAAA,KACT0tV,iBAAkB1tV,EAAAA,MAKtBwtV,EAAapwV,aAAe,CACxBrpB,MAAO,YAEJy5W,CACX,CAxGkC,CAwGhClmX,EAAAA,eCvJEshB,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,GAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAMWo4S,GAAiB,SAAU79V,GAClC,IAAII,EAAKJ,EAAGqI,UAAWA,OAAmB,IAAPjI,GAAuBA,EAAIK,EAAKT,EAAGkiX,iBAAkBA,OAA0B,IAAPzhX,GAAwBA,EAAInF,EAAQ0E,EAAG1E,MAAOwvE,EAAW9qE,EAAG8qE,SAAU2xS,EAAez8W,EAAGy8W,aAAczgX,EAAWgE,EAAGhE,SAAU4E,EAAKZ,EAAGwiX,eAAgBA,OAAwB,IAAP5hX,GAAuBA,EAAII,EAAKhB,EAAG2hI,MAAOA,OAAe,IAAP3gI,EAAgB,EAAIA,EAAIE,EAAKlB,EAAGyiX,iBAAkBA,OAA0B,IAAPvhX,EAAgB,GAAKA,EAC9Z,OAAOpF,EAAAA,SAAe0M,IAAIxM,GAAU,SAAU+jH,EAAO1zG,GACjD,GAAI0zG,GAASA,EAAMh+G,OAASigX,GAAc,CACtC,IAAIU,OAAiB,EACjBC,EAAaC,GAAM7iQ,EAAO0iQ,EAAkBp2W,GAChD,GAAI0zG,EAAMt5G,MAAMzK,SAAU,CACtB,IAAI6mX,EAAc,CACdx6W,UAAWA,EACX65W,iBAAkBA,EAClB5mX,MAAOA,EACPwvE,SAAUA,EACV2xS,aAAcA,EACdzgX,SAAU+jH,EAAMt5G,MAAMzK,SACtBwmX,gBAAiB13S,GAAY,IAAItnC,QAAQm/U,IAAe,EACxDhhP,MAAOA,EAAQ,EACf8gP,iBAAkBz3S,GAAcA,GAAc,GAAIy3S,GAAkB,GAAO,CAACE,IAAa,IAE7FD,EAAiB7kB,GAAeglB,EACpC,CACA,OAAO/mX,EAAAA,aAAmBikH,EAAO3iG,GAASA,GAAS,CAAC,EAAG2iG,EAAMt5G,OAAQ,CAAE4B,eAAqC5M,IAA1BskH,EAAMt5G,MAAM4B,UAA0B03G,EAAMt5G,MAAM4B,UAAYA,EAAW65W,iBAAkBA,EAAkBvmX,GAAIokH,EAAMt5G,MAAM9K,IAAM,2BAA2B8Q,OAAOk2W,GAAaV,iBAAkBU,EAAYG,uBAAwBL,EAAkBD,eAAgBA,EAAgB7gP,MAAOA,EAAO72D,UAAWA,GAAY,IAAItnC,QAAQm/U,IAAe,EAAGvkV,QAAS9iC,EAAM8iC,UAAYukV,GAAcrnX,EAAMynX,eAAgB/6W,SAAU1M,EAAM0M,WAAa26W,EAAY3mX,SAAU0mX,EAAgBz6W,SAAUw0W,IAC/jB,CAEI,OAAO3gX,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gCAAkC2jH,EAEzF,GACJ,EAIWijQ,GAAa,SAAUv8W,GAC9B,IAAIw8W,EAAYnnX,EAAAA,SAAeinD,QAAQt8C,EAAMzK,UAAU,GACvD,OAAIinX,EACOL,GAAMK,EAAW,GAAI,GAEzB,EACX,EAIW1Y,GAAkB,SAAU9jW,EAAOy8W,EAAYj+W,EAAQu9W,EAAgBC,GAiC9E,YAhCe,IAAXx9W,IAAqBA,EAAS,CAC9B6lE,SAAUrkE,EAAMqkE,UAAY,GAC5B9iE,SAAUvB,EAAMuB,UAAY,GAC5Bo2B,QAAS33B,EAAM23B,SAAW,GAC1B2kV,gBAAgB,SAEG,IAAnBP,IAA6BA,GAAiB,QACzB,IAArBC,IAA+BA,EAAmB,IACtD3mX,EAAAA,SAAe0M,IAAI/B,EAAMzK,UAAU,SAAU+jH,EAAO1zG,GAChD,GAAI0zG,GAASA,EAAMh+G,OAASigX,GAAc,CACtC,IAAIW,EAAaC,GAAM7iQ,EAAO0iQ,EAAkBp2W,IAC3C0zG,EAAMt5G,MAAMhE,UAAY+/W,IACrBziQ,EAAMt5G,MAAMuB,WACZ/C,EAAO+C,SAAW26W,GAElB5iQ,EAAMt5G,MAAM23B,UACZn5B,EAAOm5B,QAAUukV,GAEjB5iQ,EAAMt5G,MAAMqkE,WACO,aAAfo4S,EACAj+W,EAAO6lE,SAASvhD,KAAKo5V,GAED,WAAfO,IACLj+W,EAAO6lE,SAAW,CAAC63S,KAGvB5iQ,EAAMt5G,MAAMzK,WACZiJ,EAASslW,GAAgBxqP,EAAMt5G,MAAOy8W,EAAYj+W,IAAU86G,EAAMt5G,MAAMqkE,SAAUE,GAAcA,GAAc,GAAIy3S,GAAkB,GAAO,CAACE,IAAa,KAGrK,CACJ,IACO19W,CACX,EAII29W,GAAQ,SAAU7iQ,EAAO0iQ,EAAkBp2W,GAC3C,OAAO0zG,GAASA,EAAMt5G,OAASs5G,EAAMt5G,MAAM9K,GACrCokH,EAAMt5G,MAAM9K,GACZ8mX,EAAiBr4W,OACbq4W,EAAiBA,EAAiBr4W,OAAS,GAAK,IAAIqC,OAAOJ,GAC3D,IAAII,OAAOJ,EACzB,EAIO,SAAS82W,GAAiBriX,EAAMsiX,GAUnC,YATqB,IAAjBA,IAA2BA,EAAe,KAC7CtiX,GAAQ,IAAIoW,SAAQ,SAAUnL,GACtBA,EAAKtJ,WACN2gX,EAAa75V,KAAKxd,GACdA,EAAK++D,UAAY/+D,EAAK/P,UACtBmnX,GAAiBp3W,EAAK/P,SAAUonX,GAG5C,IACOA,CACX,CAIO,SAASC,GAAarnX,EAAUsnX,GAUnC,YATwB,IAApBA,IAA8BA,EAAkB,IACpDxnX,EAAAA,SAAeob,QAAQlb,GAAU,SAAU+jH,GACnCA,GAASA,EAAMt5G,QAAUs5G,EAAMt5G,MAAMhE,WACrC6gX,EAAgB/5V,KAAKw2F,GACjBA,EAAMt5G,MAAMzK,UACZqnX,GAAatjQ,EAAMt5G,MAAMzK,SAAUsnX,GAG/C,IACOA,CACX,CAKO,SAASC,GAAoBvnX,EAAUwnX,GAU1C,YAT+B,IAA3BA,IAAqCA,EAAyB,IAClE1nX,EAAAA,SAAeob,QAAQlb,GAAU,SAAU+jH,GACnCA,GAASA,EAAMt5G,QAAUs5G,EAAMt5G,MAAMhE,WAAas9G,EAAMt5G,MAAMqkE,UAAYi1C,EAAMt5G,MAAM+7W,kBACtFgB,EAAuBj6V,KAAKw2F,GACxBA,EAAMt5G,MAAMzK,UACZunX,GAAoBxjQ,EAAMt5G,MAAMzK,SAAUwnX,GAGtD,IACOA,CACX,CAKO,IAIIC,GAJA1nS,GAAY,SAAU/tE,GAAS,OAAiB,OAAVA,QAA4BvS,IAAVuS,CAAqB,GAKxF,SAAWy1W,GAqBPA,EAAcC,qBAZd,SAASA,EAAqB1oW,GAC1B,OAAOA,EAAMxS,KAAI,SAAUuD,EAAMM,GAC7B,IAAIrQ,EAOJ,OANI+P,EAAKo2C,UACLnmD,EAAW+P,EAAKo2C,SAEhBp2C,EAAK/P,WACLA,EAAY0nX,EAAqB33W,EAAK/P,WAElCF,EAAAA,cAAoBkmX,GAAc5kW,GAAS,CAAC,EAAGrR,EAAM,CAAE/P,SAAUA,EAAU63B,IAAK9nB,EAAKpQ,IAAM0Q,IACvG,GACJ,CAEH,CAtBD,CAsBGo3W,KAAkBA,GAAgB,CAAC,IAI/B,IC5LIE,GD4LAC,GAAe,SAAUvpC,EAAYC,GAC5C,OAAID,EAAWjwU,SAAWkwU,EAAYlwU,QAG/BiwU,EAAWl+J,OAAM,SAAUlzE,EAAIxgG,GAAK,OAAOwgG,IAAOqxO,EAAY7xU,EAAI,GAC7E,mCChMA,SAAWk7W,GACPA,EAAiBA,EAAyB,OAAI,GAAK,SACnDA,EAAiBA,EAAuB,KAAI,GAAK,OACjDA,EAAiBA,EAA2B,SAAI,GAAK,UACxD,CAJD,CAIGA,KAAqBA,GAAmB,CAAC,ICR5C,IAAIn1V,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACI+1C,GAAgD,SAAUtE,EAAIjhB,EAAM6wH,GACpE,GAAIA,GAA6B,IAArBrhJ,UAAU7qB,OAAc,IAAK,IAA4BmsK,EAAxB9tK,EAAI,EAAG02C,EAAIsG,EAAKr7C,OAAY3B,EAAI02C,EAAG12C,KACxE8tK,GAAQ9tK,KAAKg9C,IACR8wH,IAAIA,EAAKh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,EAAM,EAAGh9C,IAClD8tK,EAAG9tK,GAAKg9C,EAAKh9C,IAGrB,OAAOi+D,EAAGj6D,OAAO8pK,GAAMh2J,MAAMkI,UAAUtR,MAAM6X,KAAKy2B,GACtD,EAQIo+T,GAA0B,SAAU9zV,GAEpC,SAAS8zV,EAASp9W,GACd,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KACxC0C,EAAM/iB,SAAW,KACjB+iB,EAAMs6P,sBAAuB,EAI7Bt6P,EAAMwxV,aAAe,SAAUhgX,GAC3BwuB,EAAMhjB,SAASxL,GACfwuB,EAAMkH,QAAQ11B,EAClB,EAIAwuB,EAAMhjB,SAAW,SAAUxL,GACvB,IACIqnX,EACAC,EAMJ,OARsBV,GAAavnX,EAAAA,SAAeinD,QAAQ93B,EAAMjvB,WAGhDkb,SAAQ,SAAU6oG,GAC1BA,EAAMt5G,MAAMw7W,oBAAsBxlX,EAAMwlX,kBAAoBh3V,EAAM3vB,MAAM8iC,WACxE0lV,EAAgB/jQ,EAExB,IACQ90F,EAAMi4V,YACV,IAAK,SACDa,EAAc/4S,GAAcA,GAAc,GAAI84S,EAAcr9W,MAAMq8W,wBAAwB,GAAO,CAACgB,EAAcr9W,MAAMw7W,mBAAmB,GACrI2B,GAAa34V,EAAM+4V,cAAeD,KAE9BA,EADAD,EAAcr9W,MAAMq8W,uBACN93S,GAAc,GAAI84S,EAAcr9W,MAAMq8W,wBAAwB,GAG9D,IAGtB,MACJ,IAAK,WAED,IAAI3lW,GADJ4mW,EAAc94V,EAAM+4V,cAAc7sW,SACVqsB,QAAQsgV,EAAcr9W,MAAMw7W,mBACzC,IAAX9kW,EAAe4mW,EAAYx6V,KAAKu6V,EAAcr9W,MAAMw7W,kBAAoB8B,EAAY13V,OAAOlP,EAAO,GAClG,MACJ,QACI4mW,EAAc94V,EAAM+4V,cAAc7sW,QAG1C8T,EAAM6L,SAAS,CAAE9uB,SAAU87W,EAAcr9W,MAAMw7W,iBAAkBn3S,SAAUi5S,IACvE94V,EAAMxkB,MAAMwB,UACZgjB,EAAMxkB,MAAMwB,SAAS+mB,UAAKvzB,EAAW,CACjCknB,OAAQmhW,EACRE,cAAeD,GAG3B,EAIA94V,EAAMkH,QAAU,SAAU11B,EAAO2f,QAChB,IAATA,IAAmBA,EAAO,GAC9B,IACI6nW,EADAX,EAAkBC,GAAoBznX,EAAAA,SAAeinD,QAAQ93B,EAAMjvB,WAEvEsnX,EAAgBpsW,SAAQ,SAAU6oG,EAAOmkQ,GACrC,GAAInkQ,EAAMt5G,MAAMw7W,oBAAsBxlX,EAAMwlX,kBAAoBh3V,EAAM3vB,MAAM8iC,SAAU,CAClF,IAAIjhB,EAAQ+mW,EAAM9nW,EAAO,EACnB,EACA8nW,EAAM9nW,EAAOknW,EAAgBl5W,OACzBk5W,EAAgBl5W,OAAS,EACzB85W,EAAM9nW,EAChB6nW,EAAeX,EAAgBnmW,EACnC,CACJ,IACI8mW,IACAh5V,EAAMk5V,iBAAmBF,EAAax9W,MAAM9K,GAC5CsvB,EAAM6L,SAAS,CAAEsH,QAAS6lV,EAAax9W,MAAMw7W,mBAErD,EAIAh3V,EAAMsiQ,WAAa,SAAU9wR,EAAOme,GAChC,IAAIwB,EACJ,OAAQxB,GACJ,KAAK+oW,GAAiBS,SAClBhoW,GAAQ,EACR6O,EAAMkH,QAAQ11B,EAAO2f,GACrB,MACJ,KAAKunW,GAAiBU,KAClBjoW,EAAO,EACP6O,EAAMkH,QAAQ11B,EAAO2f,GACrB,MACJ,KAAKunW,GAAiBW,OAClBr5V,EAAMhjB,SAASxL,GAI3B,EACAwuB,EAAMmsV,mBAAqB,WACvBpgV,aAAa/L,EAAMgM,YACdhM,EAAM3vB,MAAMynX,gBACb93V,EAAM6L,SAAS,CAAEisV,gBAAgB,GAEzC,EACA93V,EAAMosV,kBAAoB,WACtBpsV,EAAM4L,UAAS,WACX5L,EAAM6L,SAAS,CAAEisV,gBAAgB,GACrC,GACJ,EACA93V,EAAM0H,cAAgB,SAAUl2B,GAC5B,IAAI2lP,EAAMn3N,EAAM/iB,UAA4D,QAA/Cg0C,iBAAiBjxB,EAAM/iB,UAAU0xB,YAAwB,EACtF,GAAIn9B,EAAMkmB,SAAWlmB,EAAM4sQ,cAAe,CACtC,IACIzuP,OAAS,EACb,OAFcne,EAAMm2B,SAGhB,KAAKtD,EAAAA,EAAKrX,KACN2C,EAAUwnO,EAAkCuhI,GAAiBU,KAA7CV,GAAiBS,SACjC,MACJ,KAAK90V,EAAAA,EAAKG,GACN7U,EAAS+oW,GAAiBS,SAC1B,MACJ,KAAK90V,EAAAA,EAAKltB,MACNwY,EAAUwnO,EAA8BuhI,GAAiBS,SAAzCT,GAAiBU,KACjC,MACJ,KAAK/0V,EAAAA,EAAKI,KACN9U,EAAS+oW,GAAiBU,KAC1B,MACJ,KAAK/0V,EAAAA,EAAKytB,MACV,KAAKztB,EAAAA,EAAK8L,MACNxgB,EAAS+oW,GAAiBW,OAC1B,MACJ,QACI1pW,EAAS,KAGF,OAAXA,IACAne,EAAM+gB,iBACNyN,EAAMsiQ,WAAW9wR,EAAOme,GAEhC,CACJ,GACA6jB,EAAAA,GAAAA,GAAgBC,GAAAA,GAChBzT,EAAMs6P,sBAAuB/hB,EAAAA,GAAAA,GAAuB9kO,GAAAA,GACpD,IAAIqxC,EAAew6R,GAAgB9jW,EAAOwkB,EAAMi4V,YAKhD,OAJKnzS,EAAa3xC,UACd2xC,EAAa3xC,QAAU4kV,GAAWv8W,IAEtCwkB,EAAM3vB,MAAQy0E,EACP9kD,CACX,CAmGA,OArPAuD,GAAUq1V,EAAU9zV,GAmJpB7kB,OAAO6nB,eAAe8wV,EAASp7V,UAAW,aAAc,CACpDuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMy8W,YAAc,UACpC,EACAjwV,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe8wV,EAASp7V,UAAW,eAAgB,CACtDuK,IAAK,WACD,IAAIhzB,EAAKuoB,KAAK9hB,MAAMuB,SACpB,YADgD,IAAPhI,EAAgBuoB,KAAKjtB,MAAM0M,SAAWhI,CAEnF,EACAizB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe8wV,EAASp7V,UAAW,gBAAiB,CACvDuK,IAAK,WAED,OADezK,KAAK9hB,MAAMw7D,aAAe15C,KAAK9hB,MAAMqkE,UAAY,GAAKviD,KAAKjtB,MAAMwvE,QAEpF,EACA73C,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe8wV,EAASp7V,UAAW,WAAY,CAClDuK,IAAK,WACD,IAAI13B,EAAQ8hB,GAASA,GAAS,CAAC,EAAGmL,KAAKjtB,OAAQ,CAAE0M,SAAUugB,KAAKyqQ,eAC5D6vF,EAAc,CACdx6W,UAAWkgB,KAAK9hB,MAAM4B,UACtB65W,iBAAkB35V,KAAK9hB,MAAMy7W,iBAC7B5mX,MAAOA,EACPwvE,SAAUviD,KAAKy7V,cACfvH,aAAcl0V,KAAKk0V,aACnBzgX,SAAUusB,KAAK9hB,MAAMzK,UAEzB,OAAO6hW,GAAeglB,EAC1B,EACA5vV,YAAY,EACZC,cAAc,IAKlB2wV,EAASp7V,UAAUnrB,OAAS,WACxB,IAAI2tB,EAAQ1C,KACRg8V,EAAY,CACZ,wBAAyBh8V,KAAK47V,kBAE9B/nX,GAAYu7B,EAAAA,EAAAA,GAAW,aAAc,iBAAkBpP,KAAK9hB,MAAMrK,WACtE,OAAQN,EAAAA,cAAoB,KAAMshB,GAAS,CAAE9gB,IAAK,SAAUsxB,GAAO3C,EAAM/iB,SAAW0lB,CAAK,EAAG1J,IAAKqE,KAAK9hB,MAAMyd,IAAK5jB,KAAM,OAAQwzB,SAAU,EAAGE,UAAWzL,KAAKoK,cAAeR,QAAS5J,KAAK6uV,mBAAoB/kV,OAAQ9J,KAAK8uV,kBAAmBj7W,UAAWA,EAAWH,MAAOssB,KAAK9hB,MAAMxK,OAASsoX,GAC1Rh8V,KAAKvsB,SACLusB,KAAKg9P,sBAAwBzpR,EAAAA,cAAoB4nQ,GAAAA,EAAkB,MAC3E,EACAmgH,EAASp7V,UAAUoO,SAAW,SAAUyB,GACpC/P,KAAK0O,WAAa31B,OAAOi3B,YAAW,WAAc,OAAOD,GAAK,GAClE,EAIAurV,EAAStvV,UAAY,CACjBlsB,UAAWmsB,EAAAA,KACXx4B,SAAU,SAAUyK,EAAOguB,GACvB,IAAIE,EAAOluB,EAAMguB,GACjB,GAAIE,EAAM,CACN,GAAIpU,MAAMC,QAAQmU,GACd,IAAK,IAAIsN,EAAK,EAAGuiV,EAAS7vV,EAAMsN,EAAKuiV,EAAOp6W,OAAQ63B,IAAM,CACtD,IAAIj0B,EAAQw2W,EAAOviV,GACnB,IAAKj0B,EAAMjM,MAAQiM,EAAMjM,OAASigX,GAC9B,OAAO,IAAIptV,MAAM,4EAEzB,MAGA,GAAID,EAAK5yB,OAASigX,GACd,OAAO,IAAIptV,MAAM,0EAGzB,OAAO,IACX,CACA,OAAO,IACX,EACA1Q,IAAKsQ,EAAAA,OACLxsB,SAAUwsB,EAAAA,OACVs2C,SAAUt2C,EAAAA,QAAkBA,EAAAA,QAC5B4J,QAAS5J,EAAAA,OACT0uV,WAAY1uV,EAAAA,MAAgB,CAAC,SAAU,aACvCp4B,UAAWo4B,EAAAA,OACX0tV,iBAAkB1tV,EAAAA,KAClBvsB,SAAUusB,EAAAA,KACVv4B,MAAOu4B,EAAAA,QAKXqvV,EAASjyV,aAAe,CACpBsxV,WAAY,WACZ76W,WAAW,EACX65W,kBAAkB,GAEf2B,CACX,CAvP8B,CAuP5B/nX,EAAAA,iCCjSE0yB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAiBzC66V,GAA0B,SAAU10V,GAEpC,SAAS00V,IACL,OAAkB,OAAX10V,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAsBA,OAzBAiG,GAAUi2V,EAAU10V,GAOpB00V,EAASh8V,UAAUnrB,OAAS,WACxB,OAAO,IACX,EAIAmnX,EAASlwV,UAAY,CACjBjuB,KAAMkuB,EAAAA,OACN0zB,IAAK1zB,EAAAA,OACL72B,KAAM62B,EAAAA,OACN/xB,SAAU+xB,EAAAA,KACV2sV,SAAU3sV,EAAAA,OACV2rV,SAAU3rV,EAAAA,OACVl3B,OAAQk3B,EAAAA,IACRksV,WAAYlsV,EAAAA,IACZ6rV,cAAe7rV,EAAAA,IACf1zB,KAAM0zB,EAAAA,KAEHiwV,CACX,CA3B8B,CA2B5B3oX,EAAAA,WCtCK,SAAS4oX,GAAiCC,EAAQC,GACrD,GAAID,GAAUA,EAAOv6W,OAAS,EAC1B,MAAO,CACH4Q,MAAO6pW,GAAuCF,GAC9CG,WAAYH,GAGf,GAAII,GAA2BH,GAAcx6W,OAAS,EAAG,CAC1D,IAAI46W,EAAcC,GAA0CF,GAA2BH,IACvF,MAAO,CAAE5pW,MAAO6pW,GAAuCG,GAAcF,WAAYE,EACrF,CAEI,MAAO,CAAEhqW,MAAO,GAAI8pW,WAAY,GAExC,CACA,SAASI,GAA6BC,EAAYC,GAC9C,IAAIngX,EAAS,CAAC,EACVjF,EAAKmlX,GAA0BC,EAAe3+W,MAAOH,EAAOtG,EAAGsG,KAAM4hD,EAAMloD,EAAGkoD,IAAKvqD,EAAOqC,EAAGrC,KAAMujC,EAAUlhC,EAAGkhC,QAASz+B,EAAWzC,EAAGyC,SAAU0+W,EAAWnhX,EAAGmhX,SAAUhB,EAAWngX,EAAGmgX,SAAU7iX,EAAS0C,EAAG1C,OAAQojX,EAAa1gX,EAAG0gX,WAAYL,EAAgBrgX,EAAGqgX,cAAev/W,EAAOd,EAAGc,KAkCjS,YAjCarF,IAAT6K,IACArB,EAAOqB,KAAOA,QAEN7K,IAARysD,IACAjjD,EAAOijD,IAAMA,QAEJzsD,IAATkC,IACAsH,EAAOtH,KAAOA,QAEFlC,IAAZylC,IACAj8B,EAAOi8B,QAAUA,QAEJzlC,IAAbgH,IACAwC,EAAOxC,SAAWA,QAELhH,IAAb0lX,IACAl8W,EAAOk8W,SAAWA,QAEL1lX,IAAb0kX,IACAl7W,EAAOk7W,SAAWA,QAEP1kX,IAAX6B,IACA2H,EAAO3H,OAASA,QAED7B,IAAfilX,IACAz7W,EAAOy7W,WAAaA,QAEFjlX,IAAlB4kX,IACAp7W,EAAOo7W,cAAgBA,QAEd5kX,IAATqF,IACAmE,EAAOnE,KAAOA,GAEXmE,CACX,CACA,SAAS8/W,GAA2BH,GAChC,OAAO9oX,EAAAA,SAAeinD,QAAQ6hU,GACzBv5W,QAAO,SAAU00G,GAAS,OAAOA,GAASA,EAAMh+G,OAAS0iX,EAAU,GAC5E,CACA,SAASQ,GAA0C7K,GAE/C,IADA,IAAIn1W,EAAS,GACJkY,EAAQ,EAAGA,EAAQi9V,EAAWhwW,OAAQ+S,IAAS,CACpD,IAAIuxO,EAAO0rH,EAAWj9V,GAClBkoW,EAAQH,QAA6BzpX,EAAWizP,GAChD1zO,EAAQiqW,GAA0CF,GAA2Br2H,EAAKjoP,MAAMzK,WACxFgf,EAAM5Q,OAAS,IACfi7W,EAAMrqW,MAAQA,GAElB/V,EAAOskB,KAAK87V,EAChB,CACA,OAAOpgX,CACX,CACA,SAAS4/W,GAAuCG,EAAa9kH,GAEzD,IADA,IAAIj7P,EAAS,GACJkY,EAAQ,EAAGA,EAAQ6nW,EAAY56W,OAAQ+S,IAAS,CACrD,IAAIgoW,EAAaH,EAAY7nW,GACzBmoW,EAAgBJ,GAA6BC,GACjDG,EAAc3pX,GAAKqkQ,EAAS7iP,EAAMsgC,WAAYyiN,GAC9ColH,EAAcpE,mBAAqB/jW,IAAU6nW,EAAY56W,OAAS,EAClEk7W,EAActqW,MAAQuqW,GAA0BJ,EAAYG,GAC5DrgX,EAAOskB,KAAK+7V,EAChB,CACA,OAAOrgX,CACX,CACA,SAASsgX,GAA0BJ,EAAYG,GAC3C,OAAIH,EAAW9E,cACJ,CAAC,CACAG,oBAAqB8E,EAAc3pX,GACnCA,GAAIqkQ,EAASo+G,EAAyBkH,EAAc3pX,IACpDulX,oBAAoB,EACpBb,cAAe8E,EAAW9E,cAC1BrlW,MAAO,KAGVmqW,EAAWnqW,MACT6pW,GAAuCM,EAAWnqW,MAAOsqW,EAAc3pX,IAGvE,EAEf,CCtGA,IAAI6pX,GAAsB,KAMnB,SAASC,GAAmCC,EAAaC,EAAc/yV,EAASiB,EAAKwrV,EAAgBx3H,GACxG,IAAI+9H,EAAatmH,IACjB,OAAQ1sO,GACJ,KAAKtD,EAAAA,EAAKrX,KACN,OAoBAonW,EACOx3H,EAAyBg+H,IAAqCC,IAG9Dj+H,EACHk+H,IAAuCC,IAxB/C,KAAK12V,EAAAA,EAAKltB,MACN,OA2BAi9W,EACOx3H,EAAyBi+H,IAAoCD,IAG7Dh+H,EACHm+H,IAAsCD,IA/B9C,KAAKz2V,EAAAA,EAAKG,GACN,OA+CA4vV,EACO4G,IAGHzmH,EAAcmmH,GACPO,IAGAD,IAtDf,KAAK32V,EAAAA,EAAKI,KACN,OAgCA2vV,EACO8G,IAGH3mH,EAAcmmH,GACPS,IAGAD,IAvCf,KAAK72V,EAAAA,EAAK8L,MACV,KAAK9L,EAAAA,EAAKytB,MACN,OAuDA6oU,EAAWnjX,SACJkjX,EAGA9jI,IAAgBke,EAAgB4lH,GAAgBjmH,EAAgBimH,GA1D3E,KAAKr2V,EAAAA,EAAKE,KACN,OA6DG62V,IAAc,GAAG1qX,GA5DxB,KAAK2zB,EAAAA,EAAKC,IACN,OA6DR,WACI,IAAIwyQ,EAAWskF,IACf,OAAOtkF,EAASA,EAAS33R,OAAS,GAAGzO,EACzC,CAhEemmS,GACX,KAAKxyQ,EAAAA,EAAKiP,IACN,OAgEGihO,EAAcmmH,GAAgBA,EAAexlH,EAAkBwlH,GA/DtE,QACI,OAqHkB,IAAf9xV,EAAIzpB,QAAgBo7W,GAAoBxvV,KAAKnC,GArDxD,WACI,IAAIyyV,EAAazyV,EAAIkqB,cACjBgkP,EAAWskF,IACXE,EAAmBpiU,OAAOm8M,EAAWqlH,IAErCa,EADgBzkF,EAAS5qR,MAAMovW,EAAmB,GAAG95W,OAAOs1R,EAAS5qR,MAAM,EAAGovW,EAAmB,IAClE9vW,MAAK,SAAU1K,GAC9C,OAAQA,EAAKzF,MAAQ,IAAIy3C,cAAclpC,WAAWyxW,EACtD,IACA,OAAOE,EAAiBA,EAAe7qX,GAAKgqX,CAChD,CAzEmCc,GAA0Bd,EA2E7D,SAASK,IACL,OAAIxmH,EAAcmmH,GACPM,IAEF5H,EAAesH,GACbS,EAAyCH,EAAiBvmH,EAAgBimH,KAG1ExlH,EAAkBwlH,EAEjC,CACA,SAASG,IACL,OAAItmH,EAAcmmH,GACPO,IAGA/lH,EAAkBwlH,EAEjC,CAGA,SAASI,IACL,OAAIvmH,EAAcmmH,GACPQ,IAGAC,EAAyCvkI,IAAgB8jI,EAAeQ,EAAiBzmH,EAAgBimH,IAExH,CACA,SAASE,IACL,OAAOO,EAAyC5mH,EAAcmmH,IAAiB9jI,IAC3E8jI,EAAeQ,EAAiBzmH,EAAgBimH,IACxD,CAGA,SAASS,EAAyC7mH,GAC9C,OAAOmnH,GAA+C,EAAMnnH,EAChE,CACA,SAAS2mH,EAAwC3mH,GAC7C,OAAOmnH,GAA+C,EAAOnnH,EACjE,CAIA,SAASD,EAAYC,EAAQvkP,GAOzB,YANevf,IAAX8jQ,IACAA,EAASomH,QAEClqX,IAAVuf,IACAA,EAAQ0qW,GAELiB,EAAgBpnH,EAAQvkP,EACnC,CACA,SAAS6mO,EAAY0d,GACjB,OAAOD,EAAYC,GAAQvkP,MAAM5Q,OAAS,CAC9C,CACA,SAAS67W,EAAiB1mH,GACtB,OAAOqnH,GAAa,EAAOrnH,EAC/B,CACA,SAAS4mH,EAAiB5mH,GACtB,OAAOqnH,GAAa,EAAMrnH,EAC9B,CAKA,SAAS8mH,IACL,OAAO7mH,EAAcmmH,GACjBD,EAAcpmH,EAAYa,EAAkBwlH,GAAeD,GAAa1qW,KAChF,CACA,SAAS0rW,EAA+CG,EAAetnH,QACpD9jQ,IAAX8jQ,IACAA,EAASomH,GAEb,IAAI55W,EAAOuzP,EAAYC,GACvB,OAAI1d,EAAY0d,KAAYxzP,EAAKtJ,SACtBokX,EAAgB9mH,EAAgBR,GAd/C,SAAwBA,GACpB,IAAI8hD,EAAe/hD,EAAYC,GAAQvkP,MACvC,OAAOqmS,EAAaA,EAAaj3S,OAAS,GAAGzO,EACjD,CAWyDmrX,CAAevnH,GAGzDA,CAEf,CACA,SAASqnH,EAAaxwV,EAAMmpO,GAIxB,QAHe9jQ,IAAX8jQ,IACAA,EAASomH,GAETnmH,EAAcD,GACd,OAAOg/G,EAA+BnoV,EAAMmpO,EAAQmmH,EAAYt7W,QAGhE,IAAI28W,EAAiB5mH,EAAkBZ,GAGvC,OAAOS,EAASu+G,EAA+BnoV,EAFjCkqO,EAAWf,GACLD,EAAYynH,GAAgB/rW,MAAM5Q,QACwB28W,EAEtF,CAEJ,CCtMA,ICHI/mX,GDGAgnX,GAAiC,WACjC,SAASA,IAGLz+V,KAAKw0N,MAAQ,aACjB,CAaA,OAZAiqI,EAAgBv+V,UAAUw+V,0BAA4B,WAClD,OAAO1+V,KAAKs/N,sBAChB,EACAm/H,EAAgBv+V,UAAUy+V,0BAA4B,SAAUl5W,GAC5Dua,KAAKw0N,MAAuB,mBAAfx0N,KAAKw0N,MAA6B,cAAgB,mBAC/Dx0N,KAAK4+V,+BAAiC5+V,KAAKs/N,uBAC3Ct/N,KAAKs/N,uBAAyB75O,CAClC,EACAg5W,EAAgBv+V,UAAU2+V,oBAAsB,WAC5C,MAAsB,qBAAf7+V,KAAKw0N,OACRx0N,KAAK4+V,iCAAmC5+V,KAAKs/N,sBACrD,EACOm/H,CACX,CAnBqC,GEAjCK,GAAkC,WAClC,SAASA,EAAiBC,EAAaC,EAAWC,GAC9Cj/V,KAAK++V,YAAcA,EACnB/+V,KAAKg/V,UAAYA,EACjBh/V,KAAKi/V,SAAWA,EAChBj/V,KAAK0wK,WAAY,EACjB1wK,KAAK++V,YAAcA,EACnB/+V,KAAKk/V,oBAAqBH,CAC9B,CAmDA,OAlDAp8W,OAAO6nB,eAAes0V,EAAiB5+V,UAAW,cAAe,CAC7DyR,IAAK,SAAUlsB,GACPmlB,QAAQnlB,KAAWmlB,QAAQ5K,KAAK++V,eAChC/+V,KAAK0wK,WAAY,EACjB1wK,KAAKk/V,oBAAqBz5W,GAE9Bua,KAAK++V,YAAct5W,CACvB,EACAilB,YAAY,EACZC,cAAc,IAElBm0V,EAAiB5+V,UAAUi/V,8BAAgC,WACnDn/V,KAAK++V,cACL/+V,KAAKk/V,oBAAqB,EAC1Bl/V,KAAKg/V,YAEb,EACAr8W,OAAO6nB,eAAes0V,EAAiB5+V,UAAW,qBAAsB,CACpEuK,IAAK,WACD,OAAOzK,KAAKk/V,kBAChB,EACAx0V,YAAY,EACZC,cAAc,IAElBm0V,EAAiB5+V,UAAUk/V,oBAAsB,WAC7Cp/V,KAAK0wK,WAAY,CACrB,EACAouL,EAAiB5+V,UAAUm/V,gBAAkB,WAIrCr/V,KAAK++V,cAAgB/+V,KAAK0wK,YAC1B1wK,KAAKk/V,oBAAqB,GAE9Bl/V,KAAK0wK,WAAY,CACrB,EACAouL,EAAiB5+V,UAAUuhO,gBAAkB,SAAUuV,EAAQsoH,GACvDt/V,KAAK++V,cACD/+V,KAAKk/V,mBACDI,IACAt/V,KAAKk/V,oBAAqB,EAC1Bl/V,KAAKg/V,cAITh/V,KAAKk/V,oBAAqB,EAC1Bl/V,KAAKi/V,SAASjoH,IAG1B,EACO8nH,CACX,CA5DsC,GCHlC74V,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA2BzCk+V,GAAkB,CAClB9kF,cAAe7jC,EACf4oH,cAAe5oH,EACfwkC,eAAgBy6E,GAwBhB4J,GAAsB,SAAUj4V,GAEhC,SAASi4V,EAAKvhX,GACV,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA+FxC,OA9FA0C,EAAMg9V,cAAgB,KACtBh9V,EAAMyR,MAAOA,EAAAA,GAAAA,KACbzR,EAAMi9V,gBAAkB,IAAIlB,GAC5B/7V,EAAM65V,WAAa,GACnB75V,EAAMjQ,MAAQ,GAIdiQ,EAAM4sD,MAAQ,WACV5sD,EAAMk9V,6CACNl9V,EAAM6L,SAASgxV,GACnB,EACA78V,EAAM+I,UAAY,SAAUv3B,GAGxB,GAAIwuB,EAAM3vB,MAAM0nS,gBAAkB7jC,EAAU,CACxC,IAAIyC,EAActC,EAAYr0O,EAAM3vB,MAAM0nS,cAAe/3Q,EAAMjQ,OAC3D+pR,EAAY0gF,GAAmCx6V,EAAMjQ,MAAO4mP,EAAYjmQ,GAAIc,EAAMm2B,QAASn2B,EAAMo3B,IAAK5I,EAAMxkB,MAAMg7B,SAAUxW,EAAMi9V,gBAAgBjB,6BAClJrlH,EAAYjmQ,KAAOopS,IACnBtoS,EAAM+gB,iBACNyN,EAAMm9V,iBAAiBrjF,IAEtBtoS,EAAMm2B,UAAYtD,EAAAA,EAAK8L,OAAS3+B,EAAMm2B,UAAYtD,EAAAA,EAAKytB,OAAW6kN,EAAYn/P,WAC/EwoB,EAAMo9V,iBAAiBX,gCACvBz8V,EAAMq9V,2BAA2B7rX,EAAOmlQ,EAAYjmQ,KAC/Cc,EAAMitQ,sBAAqD,IAA7B9H,EAAY5mP,MAAM5Q,QAAgBw3P,EAAY15M,KAC7E5mD,OAAOwL,SAAS+kB,OAAO+vO,EAAY15M,KAG/C,CACIzrD,EAAMm2B,UAAYtD,EAAAA,EAAKiP,KAAOtT,EAAMxkB,MAAM4L,SAC1C4Y,EAAMxkB,MAAM4L,QAAQ2c,UAAKvzB,EAAWgB,EAE5C,EACAwuB,EAAMs9V,gBAAkB,SAAUhpH,GAC1Bt0O,EAAMo9V,iBAAiBG,qBAGvBv9V,EAAMk9V,6CACNl9V,EAAMw9V,iBAAmBnnX,OAAOi3B,YAAW,WACvCtN,EAAMy9V,iBAAiBnpH,GACvBt0O,EAAMw9V,iBAAmB,IAC7B,GCjGT,SAA2BhiX,GAC9B,YAA6BhL,IAAzBgL,EAAMkiX,eACCliX,EAAMkiX,eAGNliX,EAAM6gX,YAAc,EAAI,GAEvC,CD0FmBsB,CAAkB39V,EAAMxkB,QAEnC,EACAwkB,EAAM49V,iBAAmB,SAAUtpH,GAC3Bt0O,EAAMo9V,iBAAiBG,oBAAsBv9V,EAAM69V,uBAAuBvpH,KAG1Et0O,EAAMk9V,6CACNl9V,EAAM89V,iBAAmBznX,OAAOi3B,YAAW,WACvCtN,EAAMy9V,iBAAiBvpH,GACvBl0O,EAAM89V,iBAAmB,IAC7B,GCjGT,SAA4BtiX,GAC/B,YAAiChL,IAA1BgL,EAAMuiX,gBAAgCviX,EAAMuiX,gBAAkB,GACzE,CD+FmBC,CAAmBh+V,EAAMxkB,QAEpC,EACAwkB,EAAMi+V,gBAAkB,WACpBj+V,EAAMo9V,iBAAiBV,qBAC3B,EACA18V,EAAMk+V,YAAc,SAAU5pH,GAC1Bt0O,EAAMm9V,iBAAiB7oH,GACvBt0O,EAAMo9V,iBAAiBT,iBAC3B,EACA38V,EAAMhQ,YAAc,SAAUxe,EAAO8iQ,GACjC,IAAIxzP,EAAOuzP,EAAYC,EAAQt0O,EAAMjQ,OAChCjP,EAAKtJ,WACNwoB,EAAMm9V,iBAAiB7oH,GACvBt0O,EAAMo9V,iBAAiBr+H,gBAAgBuV,EAAQt0O,EAAM69V,uBAAuBvpH,IAC5Et0O,EAAMq9V,2BAA2B7rX,EAAO8iQ,IACnC9iQ,EAAMitQ,sBAAwB39P,EAAKm8C,KACpC5mD,OAAOwL,SAAS+kB,OAAO9lB,EAAKm8C,KAGxC,EACAj9B,EAAMm+V,WAAa,SAAU7pH,EAAQ9iQ,GAIjC,GAHIwuB,EAAM69V,uBAAuBvpH,IAC7Bt0O,EAAMm9V,iBAAiBjpH,GAEvB1iQ,EAAM+nM,eAAkD,OAAjC/nM,EAAM+nM,cAAcvjC,SAAmB,CAC9D,IAAIooN,EAAkB5sX,EAAM+nM,cAAcz3F,aAAa,MACvD,GAAIs8Q,GAAmBA,EAAgB9oX,SAAS0qB,EAAMyR,MAClD,MAER,CACIzR,EAAMxkB,MAAM4L,SACZ4Y,EAAMxkB,MAAM4L,QAAQ2c,UAAKvzB,EAAWgB,EAE5C,EACAwuB,EAAMq+V,aAAe,SAAU/pH,GAC3B,OAAOD,EAAYC,EAAQt0O,EAAM65V,WACrC,GACArmV,EAAAA,GAAAA,GAAgBC,GAAAA,GAChBzT,EAAMo9V,iBAAmB,IAAIhB,GAAiBp8V,EAAMxkB,MAAM6gX,YAAar8V,EAAM4sD,MAAO5sD,EAAMs9V,iBAC1Ft9V,EAAM3vB,MAAQ4P,OAAO2mB,OAAO,CAAC,EAAGi2V,GAAiB,CAAErkC,eAAe,IAC3Dx4T,CACX,CAyHA,OA3NAuD,GAAUw5V,EAAMj4V,GAmGhB7kB,OAAO6nB,eAAei1V,EAAKv/V,UAAW,UAAW,CAC7CuK,IAAK,WACD,OAAOzK,KAAK0/V,aAChB,EACAh1V,YAAY,EACZC,cAAc,IAKlB80V,EAAKv/V,UAAUnrB,OAAS,WACpB,IAAI2tB,EAAQ1C,KACZA,KAAKghW,eACAhhW,KAAKjtB,MAAMmoV,eACZl7T,KAAK2/V,gBAAgBhB,0BAA0B3+V,KAAKihW,+BAExD,IAAIvI,EAAuB14V,KAAKjtB,MAAMysX,cAClCx/V,KAAKjtB,MAAMysX,cACXx/V,KAAKjtB,MAAM0nS,cAAgB7iC,EAAkB53O,KAAKjtB,MAAM0nS,eAAiB7jC,EAC7E,OAAQrjQ,EAAAA,cAAoB,MAAO,CAAEk4B,UAAWzL,KAAKyL,UAAW/3B,MAAOssB,KAAK9hB,MAAMxK,MAAOG,UAAWmsB,KAAK2/V,gBAAgBjB,4BAA8B,aAAUxrX,EAAWa,IAAK,SAAUy3B,GAAM,OAAO9I,EAAMg9V,cAAgBl0V,CAAI,GAC9Nj4B,EAAAA,cAAoBklX,EAAuB,CAAE5kX,UAAWmsB,KAAKkhW,mBAAoB,mBAAoBlhW,KAAK9hB,MAAMg7B,SAAW,gBAAahmC,EAAWuf,MAAOuN,KAAKvN,MAAOqkW,eAAgB92V,KAAK9hB,MAAMg7B,SAAUomN,uBAAwBt/N,KAAK2/V,gBAAgBjB,4BAA6BjkF,cAAez6Q,KAAKjtB,MAAM0nS,cAAei+E,qBAAsBA,EAAsBt9E,eAAgBp7Q,KAAKjtB,MAAMqoS,eAAgBr8C,WAAY/+N,KAAK9hB,MAAM6gP,WAAYo5H,WAAYn4V,KAAK9hB,MAAMi6W,WAAYlB,SAAUj3V,KAAKmU,KAAMs7N,aAAczvO,KAAKsgW,iBAAkB50V,YAAa1L,KAAKggW,gBAAiBnwV,YAAa7P,KAAK2gW,gBAAiB/2V,QAAS5J,KAAK4gW,YAAavrX,QAAS2qB,KAAKtN,YAAaoX,OAAQ9J,KAAK6gW,WAAY3I,qBAAsBl4V,KAAK+gW,aAAchpX,KAAMioB,KAAK9hB,MAAMnG,OAC5uB,EAIA0nX,EAAKv/V,UAAU4K,kBAAoB,WAC/B9K,KAAKuO,SAAS,CAAE2sT,eAAe,GACnC,EAIAukC,EAAKv/V,UAAU8K,mBAAqB,SAAUukB,IAItC3kB,QAAQ2kB,EAAUrW,YAActO,QAAQ5K,KAAK9hB,MAAMg7B,WACnDlZ,KAAK2/V,gBAAgBd,wBACrB7+V,KAAKsvD,QAETtvD,KAAK8/V,iBAAiBqB,YAAcnhW,KAAK9hB,MAAM6gX,WACnD,EAIAU,EAAKv/V,UAAU6O,qBAAuB,WAClC/O,KAAK4/V,4CACT,EACAH,EAAKv/V,UAAU2/V,iBAAmB,SAAUplF,GACxCz6Q,KAAKuO,UAAS,SAAUw3K,GACpB,IAAIq1F,EAAiBX,IAAkB7jC,EACnC7wD,EAAUq1F,eAAiBjkC,EAAgBsjC,GAI/C,MAAO,CAAE+kF,cAHW/kF,IAAkB7jC,GACjCU,EAAqBvxD,EAAUy5K,gBAAkBloH,EAAqBmjC,GACvE10F,EAAUy5K,cAAgB5oH,EACS6jC,cAAeA,EAAeW,eAAgBA,EACzF,GACJ,EACAqkF,EAAKv/V,UAAUigW,iBAAmB,SAAUX,GACxCx/V,KAAKuO,UAAS,SAAUw3K,GACpB,OAAIuxD,EAAqBkoH,IAAkBloH,EAAqBvxD,EAAU00F,eAC/D,CACH+kF,cAAeA,EACf/kF,cAAe10F,EAAU00F,cACzBW,eAAgBr1F,EAAUq1F,gBAIvB,CAAEokF,cAAeA,EAAe/kF,cAAe7jC,EAAUwkC,eAAgBy6E,EAExF,GACJ,EACA4J,EAAKv/V,UAAUghW,iBAAmB,WAC9B,OAAO9xV,EAAAA,EAAAA,GAAW,UAAW,WAAY,SAAU,CAAE,qBAAsBpP,KAAK9hB,MAAMg7B,UAAY,CAAE,kBAAmBlZ,KAAK9hB,MAAMg7B,UAAYlZ,KAAK9hB,MAAMrK,UAC7J,EACA4rX,EAAKv/V,UAAU0/V,2CAA6C,WACpD5/V,KAAKkgW,mBACLzxV,aAAazO,KAAKkgW,kBAClBlgW,KAAKkgW,iBAAmB,MAExBlgW,KAAKwgW,mBACL/xV,aAAazO,KAAKwgW,kBAClBxgW,KAAKwgW,iBAAmB,KAEhC,EACAf,EAAKv/V,UAAUqgW,uBAAyB,SAAUvpH,GAC9C,OAAQh3O,KAAK9hB,MAAMkjX,qBAAyE,IAAnDphW,KAAK9hB,MAAMkjX,mBAAmBnmV,QAAQ+7N,EACnF,EACAyoH,EAAKv/V,UAAU+gW,4BAA8B,WACzC,OAAOr2V,aAA2B13B,IAAnB8sB,KAAK9hB,MAAMyd,IAAuC,QAAnBqE,KAAK9hB,MAAMyd,IACrDqE,KAAK0/V,eAAoE,QAAnD/rU,iBAAiB3zB,KAAK0/V,eAAeruV,UACnE,EACAouV,EAAKv/V,UAAU8gW,aAAe,WAC1B,IAAIvpX,EAAK0kX,GAAiCn8V,KAAK9hB,MAAMuU,MAAOuN,KAAK9hB,MAAMzK,UAAWgf,EAAQhb,EAAGgb,MAAO8pW,EAAa9kX,EAAG8kX,WACpHv8V,KAAKvN,MAAQA,EACbuN,KAAKu8V,WAAaA,CACtB,EACAkD,EAAKv/V,UAAU6/V,2BAA6B,SAAU7rX,EAAO8iQ,IACzDpwD,EAAAA,GAAAA,GAAc5mL,KAAK9hB,MAAMwB,SAAUxL,EAAO8rB,KAAM,CAAExc,KAAMwc,KAAK+gW,aAAa/pH,GAASA,OAAQA,GAC/F,EAIAyoH,EAAKzzV,UAAY,CACbkN,SAAUjN,EAAAA,KACVxZ,MAAOwZ,EAAAA,QAAkBA,EAAAA,QACzBv4B,MAAOu4B,EAAAA,OACPtQ,IAAKsQ,EAAAA,OACLm0V,eAAgBn0V,EAAAA,OAChBw0V,gBAAiBx0V,EAAAA,OACjB8yV,YAAa9yV,EAAAA,KACb8yN,WAAY9yN,EAAAA,IACZksV,WAAYlsV,EAAAA,IACZm1V,mBAAoBn1V,EAAAA,QAAkBA,EAAAA,QACtCvsB,SAAUusB,EAAAA,KACVl0B,KAAMk0B,EAAAA,QAKVwzV,EAAKp2V,aAAe,CAAE6P,UAAU,GACzBumV,CACX,CA7N0B,CA6NxBlsX,EAAAA,WEnRE0yB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAoBzCggW,GAA8B,SAAU75V,GAExC,SAAS65V,IACL,OAAkB,OAAX75V,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAmBA,OAtBAiG,GAAUo7V,EAAc75V,GAIxB65V,EAAanhW,UAAUnrB,OAAS,WAC5B,IAAI0C,EACAI,EAAKmoB,KAAK9hB,MAAO9K,EAAKyE,EAAGzE,GAAImG,EAAO1B,EAAG0B,KAAMqrS,EAAY/sS,EAAG+sS,UAAWi6D,EAAUhnW,EAAGgnW,QAASyiB,EAAmBzpX,EAAGypX,iBAAkBrI,EAAcphX,EAAGohX,YAAah3W,EAAYpK,EAAGoK,UAAW4qP,EAAah1P,EAAGg1P,WAAY00H,EAAc1pX,EAAG0pX,YAC1OC,EAAYjoX,GAAQA,EAAKsI,OAAS,EAClCnO,EAAQ,CACR0/W,UAAW75W,GAEXkoX,GAAcryV,EAAAA,EAAAA,GAAW,WAAW33B,EAAK,CAAC,GACvC,YAAcmtS,EACjBntS,EAAW,OAAImtS,EACfntS,EAAG,eAAiB6pX,EACpB7pX,EAAG,kBAAoBwK,IAAcg3W,GAAeuI,EACpD/pX,EAAG,gBAAkBo1P,EACrBp1P,IACJ,OAAQlE,EAAAA,cAAoB,MAAO,CAAEH,GAAIA,EAAI2E,KAAM,QAASrE,MAAOA,EAAOG,UAAW4tX,IAChF78E,GAAa28E,EAAcvhW,KAAK9hB,MAAMzK,cAAWP,EAClD2rW,EAAUtrW,EAAAA,cAAoB,MAAO,CAAEM,UAAW,sCAAoCX,EAC9F,EACOmuX,CACX,CAxBkC,CAwBhC9tX,EAAAA,WJxCSmuX,GAAgB,gBAIhBhyV,KAAYj4B,GAAK,CAAC,GACtBiqX,IAAiB,YACpBjqX,eKVAwuB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAYI+kX,GAAgB,CAChB1I,aAAa,EACbr0E,WAAW,EACX3iS,WAAW,EACX4qP,YAAY,GA+BZ+0H,GAA0B,SAAUp6V,GAKpC,SAASo6V,EAAS1jX,GACd,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAyIxC,OAxIA0C,EAAMkwB,WAAa,KACnBlwB,EAAMm/V,cAAgB,SAAUC,GAE5B,IADkBA,EAAah/W,QAAO,SAAUi/W,GAAQ,YAAqB7uX,IAAd6uX,EAAKxoX,IAAoB,IACvEsI,OACb,MAAM,IAAIwqB,MAAM,iEAExB,EACA3J,EAAMs/V,eAAiB,SAAUC,EAAOC,GAIpC,IAHA,IAAI5O,EAAc5wV,EAAM4wV,YACpB77W,EAAKirB,EAAM3vB,MAAOovX,EAAY1qX,EAAG0qX,UAAWriG,EAAaroR,EAAGqoR,WAC5DsiG,EAAc,GACTxtW,EAAQ,EAAGA,EAAQstW,EAAargX,OAAQ+S,IAAS,CACtD,IAAI0sW,GAAmB,EACnBe,EAAcH,EAAattW,GAC3BrhB,EAAAA,eAAqB8uX,KACrBf,EAAoD,aAAjCe,EAAY7oX,KAAKsgC,aAExC,IAAI+kU,GAAU,EACV/+E,QAA4B5sR,IAAdivX,IACdtjB,EAAUsjB,IAAcvtW,GAASutW,EAAY,IAAMvtW,GAEvDwtW,EAAYphW,KAAKnM,GAASA,GAASA,GAAS,CAAC,EAAG8sW,IAAgB,CAAErO,YAAaA,EAAagO,iBAAkBA,EAAkBziB,QAASA,KAAaojB,GAAS,IAAIrtW,IACvK,CACA,OAAOwtW,CACX,EACA1/V,EAAM4/V,iBAAmB,SAAUL,EAAOC,GACtC,IAAI/mI,GAAY7rN,EAAAA,GAAAA,IAA2B5M,GAAO8M,iBAAiBkyV,GAAehyV,GAASgyV,KAC3F,OAAOO,EAAMhiX,KAAI,SAAU8hX,EAAMntW,GAC7B,IAAI2tW,EACAC,EAAkB,EAAR5tW,EACV6tW,EAASD,EAAU,EACvB,GAAI5tW,EAAQ,EAAIqtW,EAAMpgX,OAAQ,CAC1B,IAAIgsB,EAAOo0V,EAAMrtW,EAAQ,GACzB2tW,EAAehvX,EAAAA,cAAoBslX,EAAa,CAAEvtV,IAAKm3V,EAAQ7tW,MAAOA,EAAO0+V,YAAayO,EAAKzO,YAAaxlV,KAAMi0V,EAAMl0V,KAAMA,EAAMstN,UAAWA,EAAWwI,OAAQjhO,EAAMggW,gBAAiB1J,SAAUt2V,EAAMigW,YAAavJ,iBAAkB12V,EAAMkgW,oBAAqB9+U,MAAOphB,EAAMohB,OACpR,CAEA,MAAO,CADavwC,EAAAA,cAAoB8tX,GAAcxsW,GAAS,CAAEyW,IAAKk3V,GAAWT,GAAOG,EAAattW,IAC/E2tW,EAC1B,GACJ,EACA7/V,EAAMigW,YAAc,SAAU/tW,EAAO1gB,GACjC,IACI2uX,EADengW,EAAMo/V,aAAap/V,EAAMw/V,cACZjiX,KAAI,SAAU8hX,EAAMj+W,GAChD,IAAIg/W,EAAYpgW,EAAMqgW,aAAahB,GACnC,OAAIj+W,IAAQ8Q,EACDC,GAASA,GAAS,CAAC,EAAGiuW,GAAY,CAAEl+E,WAAYm9E,EAAKn9E,YAGrD/vR,GAAS,CAAC,EAAGiuW,EAE5B,IACIpgW,EAAMxkB,MAAMsH,UACZkd,EAAMxkB,MAAMsH,SAAS,CACjB/C,SAAUogX,EACVvhU,QAAQ,EACRnvB,YAAaj+B,GAGzB,EACAwuB,EAAMggW,gBAAkB,SAAUxuX,EAAO8uX,EAAYpuW,EAAOiwF,EAASvjD,GACjE,IAAIlxB,GAAO,IAAInzB,MAAOgV,UAClBq2O,EAAQp0P,EAAMo0P,MAAOE,EAAQt0P,EAAMs0P,MACnC/wP,EAAKirB,EAAMugW,gBAAgBD,GAAa7iH,EAAc1oQ,EAAG0oQ,YAAa+iH,EAAczrX,EAAGyrX,YAC3F,GAAK/iH,GAAgB+iH,EAGrB,GAAIr+Q,EACAniF,EAAM6L,SAAS,CACXuxP,YAAY,EACZqiG,UAAWvtW,EACX+9D,UAAWviD,EACX+yV,UAAW76H,EACX86H,UAAW56H,EACX66H,iBAAkB3gW,EAAM4nU,YAAYnqF,GACpCmjH,iBAAkB5gW,EAAM4nU,YAAY44B,SAR5C,CAYA,IAOIj2R,EAPAp1F,EAAK6qB,EAAM3vB,MAAOswX,EAAmBxrX,EAAGwrX,iBAAkBC,EAAmBzrX,EAAGyrX,iBAAkB3wS,EAAY96E,EAAG86E,UAAWwwS,EAAYtrX,EAAGsrX,UAAWC,EAAYvrX,EAAGurX,UACzK,IAAKv+Q,GAAWz0E,EAAOuiD,EA/GN,IAgHTrxB,GACA5+B,EAAM6gW,sBAMVt2R,EADsB,aAAtBvqE,EAAM4wV,YACE9qH,EAAQ46H,EAEX1gW,EAAMohB,MACHq/U,EAAY76H,EAGZA,EAAQ66H,EAEpBzgW,EAAM0/L,OAAOxtM,EAAOA,EAAQ,EAAGyuW,EAAkBC,EAAkBr2R,EAAO3rC,EAAQptD,GAC9EotD,GACA5+B,EAAM6gW,gBApBV,CAsBJ,EACA7gW,EAAMkgW,oBAAsB,SAAUI,EAAYpuW,EAAOq4E,EAAO/4F,GAC5D,IAAIuD,EAAKirB,EAAMugW,gBAAgBD,GAAa7iH,EAAc1oQ,EAAG0oQ,YAAa+iH,EAAczrX,EAAGyrX,YACvFG,EAAmB3gW,EAAM4nU,YAAYnqF,GACrCmjH,EAAmB5gW,EAAM4nU,YAAY44B,GACzCxgW,EAAM0/L,OAAOxtM,EAAOA,EAAQ,EAAGyuW,EAAkBC,EAAkBr2R,GAAO,EAAM/4F,EACpF,EACAwuB,EAAM8gW,cAAgB,WAClB,OAAK9gW,EAAMkwB,WAGJlwB,EAAM4nU,YAAY5nU,EAAMkwB,YAAY,GAFhC,CAGf,EACAlwB,EAAMo/V,aAAe,SAAUI,GAC3B,OAAOx/V,EAAMs/V,eAAet/V,EAAMu/V,MAAOC,EAC7C,EACAx/V,EAAM4nU,YAAc,SAAU9+T,EAAIi4V,GAC9B,IAAIziK,EAAWyiK,EAAc,SAAW,SACxC,MAA0B,aAAtB/gW,EAAM4wV,YACC9nV,EAAG,GAAGtnB,OAAO88M,EAAU,WAGvBx1L,EAAG,GAAGtnB,OAAO88M,EAAU,SAEtC,EACAt+L,EAAMb,MAAQ,SAAU9M,EAAKG,EAAKg4E,GAAK,OAAOp4E,KAAKC,IAAIG,EAAKJ,KAAKI,IAAIH,EAAKm4E,GAAK,EAC/ExqE,EAAM8+V,UAAY,SAAUjoX,GAAQ,OAAOA,GAAQA,EAAKsI,OAAS,CAAG,GACpEq0B,EAAAA,GAAAA,GAAgBC,GAAAA,GAChBzT,EAAM3vB,MAAQ,CACV+sR,YAAY,EACZqiG,eAAWjvX,EACXy/E,UAAW,EACXwwS,UAAW,EACXC,UAAW,EACXC,iBAAkB,EAClBC,iBAAkB,EAClBrB,MAAO/jX,EAAMwlX,cAAgB,IAE1BhhW,CACX,CAyJA,OAxSAuD,GAAU27V,EAAUp6V,GAgJpB7kB,OAAO6nB,eAAeo3V,EAAS1hW,UAAW,oBAAqB,CAC3DuK,IAAK,WACD,YAA4Bv3B,IAArB8sB,KAAK9hB,MAAM+jX,KACtB,EACAv3V,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo3V,EAAS1hW,UAAW,QAAS,CAC/CuK,IAAK,WACD,YAAoCv3B,IAA7B8sB,KAAK2jW,oBACR3jW,KAAK2jW,oBACJ3jW,KAAK4jW,kBAAoB5jW,KAAK9hB,MAAM+jX,MAAQjiW,KAAKjtB,MAAMkvX,KAChE,EACAv3V,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo3V,EAAS1hW,UAAW,cAAe,CACrDuK,IAAK,WACD,OAAOzK,KAAK9hB,MAAMo1W,aAAe,YACrC,EACA5oV,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo3V,EAAS1hW,UAAW,QAAS,CAC/CuK,IAAK,WACD,OAAOzK,KAAK4yB,YAA+D,QAAhDe,iBAAiB3zB,KAAK4yB,YAAYvhB,YAAwB,CACzF,EACA3G,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAeo3V,EAAS1hW,UAAW,eAAgB,CACtDuK,IAAK,WACD,OAAOl3B,EAAAA,SAAeinD,QAAQx6B,KAAK9hB,MAAMzK,UAAUqP,QAAO,SAAUiK,GAAK,OAAOA,CAAG,GACvF,EACA2d,YAAY,EACZC,cAAc,IAKlBi3V,EAAS1hW,UAAUnrB,OAAS,WACxB,IAAI2tB,EAAQ1C,KACRkiW,EAAeliW,KAAKkiW,aACpBJ,EAAe9hW,KAAK8hW,aAAaI,GACjCruX,GAAYu7B,EAAAA,EAAAA,GAAW,WAAY,aAAc,kBAAmB,cAAclrB,OAAO8b,KAAKszV,aAActzV,KAAK9hB,MAAMrK,WAE3H,OADAmsB,KAAK6hW,cAAcC,GACXvuX,EAAAA,cAAoB,MAAO,CAAEG,MAAOssB,KAAK9hB,MAAMxK,MAAOK,IAAK,SAAUA,GAAO,OAAO2uB,EAAMkwB,WAAa7+C,CAAK,EAAGF,UAAWA,GAAamsB,KAAKsiW,iBAAiBR,EAAcI,GACtL,EACAN,EAAS1hW,UAAU+iW,gBAAkB,SAAUD,GAC3C,MAAO,CACH7iH,YAAa6iH,EAAWa,uBACxBX,YAAaF,EAAWnhK,mBAEhC,EACA+/J,EAAS1hW,UAAUukN,UAAY,SAAUlrO,GACrC,MAAO,KAAKk0B,KAAKl0B,EACrB,EACAqoX,EAAS1hW,UAAUwlM,SAAW,SAAUnsN,EAAMuqX,GAC1C,IAAIpnX,EAASixF,SAASp0F,EAAM,IAI5B,OAHIymB,KAAKykN,UAAUlrO,KACfmD,EAAUonX,EAAepnX,EAAS,KAE/BA,CACX,EACAklX,EAAS1hW,UAAUqjW,eAAiB,WAChCvjW,KAAKuO,SAAS,CACVuxP,YAAY,EACZqiG,eAAWjvX,EACXy/E,UAAW,EACXwwS,UAAW,EACXC,UAAW,EACXC,iBAAkB,EAClBC,iBAAkB,GAE1B,EACA1B,EAAS1hW,UAAUkiM,OAAS,SAAU9tK,EAAWC,EAAW8uU,EAAkBC,EAAkBr2R,EAAO3rC,EAAQptD,GAC3G,IA6BI6vX,EACAC,EA9BAthW,EAAQ1C,KACR8hW,EAAe9hW,KAAK8hW,aAAa9hW,KAAKkiW,cACtC+B,EAAcnC,EAAaxtU,GAC3B4vU,EAAcpC,EAAavtU,GAC3BhzB,EAAQ8hW,EAAmBC,EAC3BQ,EAAe9jW,KAAKwjW,gBACpBW,EAAK,SAAU13V,GAAK,OAAO/J,EAAMgjM,SAASj5L,EAAGq3V,EAAe,EAC5DM,EAAgB,CAChBxvW,MAAO0/B,EACP+vU,YAAahB,EACbtuW,IAAKovW,EAAGF,EAAYlvW,MAAQwM,EAAQ4iW,EAAGD,EAAYhvW,MAAQ,EAC3DA,IAAKivW,EAAGF,EAAY/uW,MAAQqM,EAAQ4iW,EAAGD,EAAYnvW,MAAQwM,GAE3D+iW,EAAgB,CAChB1vW,MAAO2/B,EACP8vU,YAAaf,EACbvuW,IAAKovW,EAAGD,EAAYnvW,MAAQwM,EAAQ4iW,EAAGF,EAAY/uW,MAAQ,EAC3DA,IAAKivW,EAAGD,EAAYhvW,MAAQqM,EAAQ4iW,EAAGF,EAAYlvW,MAAQwM,GAE3D6gM,EAAS,SAAUmiK,EAAW1sO,GAC9B,IAAIkqO,EAAOD,EAAayC,EAAU3vW,OAC9BmqJ,EAAUr8I,EAAMb,MAAM0iW,EAAUxvW,IAAKwvW,EAAUrvW,IAAKqvW,EAAUF,YAAcxsO,GAChF,OAAIn1H,EAAM+hN,UAAUs9I,EAAKxoX,MAAQ,IACtB,IAAMwlK,EAAU+kN,EAAe,IAG/B/kN,EAAU,IAEzB,EAGI/+I,KAAKwhW,UAAUyC,EAAY1qX,OAASymB,KAAKwhW,UAAU0C,EAAY3qX,OAC/DwqX,EAAW3hK,EAAOgiK,EAAen3R,GACjC+2R,EAAW5hK,EAAOkiK,GAAgBr3R,IAE7Bi3R,EAAYjL,aAAej5V,KAAKwhW,UAAU0C,EAAY3qX,MAC3DyqX,EAAW5hK,EAAOkiK,GAAgBr3R,GAGlC82R,EAAW3hK,EAAOgiK,EAAen3R,GAErC,IAAI41R,EAAef,EAAa7hX,KAAI,SAAU8hX,EAAMj+W,GAChD,IAAIg/W,EAAYpgW,EAAMqgW,aAAahB,GACnC,OAAIj+W,IAAQwwC,EACDz/B,GAASA,GAAS,CAAC,EAAGiuW,GAAY,CAAEvpX,KAAMwqX,IAE5CjgX,IAAQywC,EACN1/B,GAASA,GAAS,CAAC,EAAGiuW,GAAY,CAAEvpX,KAAMyqX,IAG1CnvW,GAAS,CAAC,EAAGiuW,EAE5B,IACA9iW,KAAK2jW,oBAAsBd,EACtB7iW,KAAK4jW,mBACN5jW,KAAKuO,SAAS,CACV0zV,MAAOY,IAGX7iW,KAAK9hB,MAAMsH,UACXwa,KAAK9hB,MAAMsH,SAAS,CAChB/C,SAAUogX,EACVvhU,OAAQA,EACRnvB,YAAaj+B,IAGrB8rB,KAAK2jW,yBAAsBzwX,CAC/B,EACA0uX,EAAS1hW,UAAU6iW,aAAe,SAAUhB,GACtBA,EAAKzO,YAAuByO,EAAKljB,QAA4BkjB,EAAKT,iBACpF,OAD+G9mW,GAAOunW,EAAM,CAAC,cAAe,UAAW,oBAE3J,EAIAH,EAAS9nV,YAAc,WAChB8nV,CACX,CA1S8B,CA0S5BruX,EAAAA,sBC1XSixX,GAAa,SAAUtmX,GAC9B,OAAQ3K,EAAAA,cAAoB,MAAO,CAAEG,MAAOwK,EAAMxK,MAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,gBAAiBlxB,EAAMrK,YAAcqK,EAAMzK,SAC9H,EACA+wX,GAAWx4V,UAAY,CACnBn4B,UAAWo4B,EAAAA,QCJR,IAAIw4V,GAAY,SAAUvmX,GAC7B,OAAQ3K,EAAAA,cAAoB,MAAO,CAAEG,MAAOwK,EAAMxK,MAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,eAAgBlxB,EAAMrK,YAAcqK,EAAMzK,SAC7H,EACAgxX,GAAUz4V,UAAY,CAClBn4B,UAAWo4B,EAAAA,kCCPXpX,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAKWg4V,GAAc,SAAUxmX,GAC/B,IAAI8/Q,EAAgBnpQ,GAAS,CAAEopQ,OAAQ61F,GAAAA,GAAkBrqH,MAAO6pH,YAAaE,GAAAA,GAAgBC,YAAcv1W,GAC3G,OAAQ3K,EAAAA,cAAoB,MAAO,CAAEG,MAAOsqR,EAActqR,MAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,iBAAkB4uP,EAAcnqR,UAAW,kBAAkBqQ,OAAO85Q,EAAcC,QAASD,EAAcs1F,cAAgBE,GAAAA,GAAgBE,SAAW,4BAA8B,4BAA8B11F,EAAcvqR,SACzT,EACAixX,GAAY14V,UAAY,CACpBiyP,OAAQhyP,EAAAA,MAAgB,CAAC,YAAa,QAAS,SAAU,QACzDqnV,YAAarnV,EAAAA,MAAgB,CAAC,aAAc,6BClBrC04V,GAAe,SAAUzmX,GAChC,OAAQ3K,EAAAA,cAAoB,MAAO,CAAEG,MAAOwK,EAAMxK,MAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,kBAAmBlxB,EAAMrK,YAAcqK,EAAMzK,SAChI,EACAkxX,GAAa34V,UAAY,CACrBn4B,UAAWo4B,EAAAA,QCJR,IAAI24V,GAAa,SAAU1mX,GAC9B,OAAQ3K,EAAAA,cAAoB,MAAO,CAAEG,MAAOwK,EAAMxK,MAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,gBAAiBlxB,EAAMrK,YAAcqK,EAAMzK,SAC9H,EACAmxX,GAAW54V,UAAY,CACnBn4B,UAAWo4B,EAAAA,uBCPXpX,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAOWm4V,GAAS,SAAU3mX,GAC1B,IAAIzG,EACAumR,EAAgBnpQ,GAAS,CAAErb,KAAMq6W,GAAAA,GAAWiR,KAAMvrX,KAAM,SAAU+9B,QAAS,OAAQnzB,SAAU,QAASpK,WAAY,WAAamE,GAEnI,OADAg4B,EAAAA,GAAAA,GAAgBC,GAAAA,GACR5iC,EAAAA,cAAoB,MAAO,CAAEG,MAAOsqR,EAActqR,MAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,YAAa33B,EAAK,CAAC,EAClGA,EAAG,qBAAuBumR,EAAcv6Q,OACxChM,EAAG,aAAayM,OAAOk0B,GAAAA,EAAeE,WAAW0lP,EAAc1mP,UAAY0mP,EAAc1mP,UAAY0mP,EAAc1mP,QACnH7/B,EAAG,YAAYyM,OAAOk0B,GAAAA,EAAeC,QAAQ2lP,EAAczkR,OAASykR,EAAczkR,OAASykR,EAAczkR,KACzG9B,EAAG,YAAYyM,OAAO85Q,EAAc75Q,WAAa65Q,EAAc75Q,SAC/D1M,EAAG,YAAYyM,OAAO85Q,EAAc75Q,SAAU,KAAKD,OAAO85Q,EAAcjkR,aAAe6wB,QAAQozP,EAAc75Q,UAAY65Q,EAAcjkR,YACvItC,GAAKumR,EAAcnqR,YACvBN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,YAAYqQ,OAAO85Q,EAAcxkR,OAASwkR,EAAcvqR,UACzG,EACAoxX,GAAO74V,UAAY,CACfn4B,UAAWo4B,EAAAA,OACXzyB,KAAMyyB,EAAAA,MAAgB,CAAC,OAAQ,QAAS,SACxC1yB,KAAM0yB,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,UAChDqL,QAASrL,EAAAA,MAAgB,CAAC,KAAM,QAAS,SAAU,QAAS,SAC5D9nB,SAAU8nB,EAAAA,MAAgB,CAAC,KAAM,QAAS,YAE1ClyB,WAAYkyB,EAAAA,MAAgB,CAAC,KAAM,OAAQ,OAAQ,QAAS,OAAQ,UAAW,UAAW,QAAS,UAAW,YAAa,UAAW,WAAY,iBCrClJx0B,+CCUOstX,GAAiBxxX,EAAAA,cANP,CACjByxX,QAAQ,EACRziX,KAAM,QACNkD,MAAO,qCDHAw/W,GAAe,uBAIfC,GAAmB,2BAInBx1V,KAAYj4B,GAAK,CAAC,GACtBwtX,IAAgB,aACnBxtX,GAAGytX,IAAoB,cACvBztX,IEfAod,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EACIlS,GAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EA4BWqjK,GAAO1sK,EAAAA,YAAiB,SAAU2K,EAAOkc,GAChD,IAEA3mB,EAAWyK,EAAMzK,SAAUI,EAAYqK,EAAMrK,UAAWQ,EAAU6J,EAAM7J,QAAS6F,EAAWgE,EAAMhE,SAAU27B,EAAU33B,EAAM23B,QAASzgC,EAAO8I,EAAM9I,KAAMujC,EAAUz6B,EAAMy6B,QAAS/jB,EAAQ1W,EAAM0W,MAAOzgB,EAAU+J,EAAM/J,QAAS0B,EAAQqI,EAAMrI,MAAO+kE,EAAW18D,EAAM08D,SAAUlnE,EAAQwK,EAAMxK,MAAO63B,EAAWrtB,EAAMqtB,SAAUxtB,EAAOG,EAAMH,KAAM0uC,EAASjyB,GAAOtc,EAAO,CAAC,WAAY,YAAa,UAAW,WAAY,UAAW,OAAQ,UAAW,QAAS,UAAW,QAAS,WAAY,QAAS,WAAY,SAClfzG,EAAKlE,EAAAA,WAAiBwxX,IAAiB7T,EAAoBz5W,EAAGy5W,kBAAmB5uN,EAAa7qJ,EAAG6qJ,WAAY9+I,EAAO/L,EAAG+L,KAAMwhX,EAASvtX,EAAGutX,OAAQziX,EAAO9K,EAAG8K,KAAM4iX,EAAa1tX,EAAG0tX,WAAY1/W,EAAQhO,EAAGgO,MAAOD,EAAW/N,EAAG+N,SAAUokB,EAAUnyB,EAAGmyB,QAASw7V,EAAc3tX,EAAG2tX,YAAaC,EAAY5tX,EAAG4tX,UAAWC,EAAiB7tX,EAAG6tX,eAAgBC,EAAe9tX,EAAG8tX,aAC3W1wI,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,UACX+wP,EAAAA,GAAAA,GAAyBvQ,EAAWxgP,QAE5C,GAAG,IACCurP,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,GAAG,CAACA,IACRpsP,EAAAA,oBAA0B6mB,EAAQwlO,GAClC,IAGgCjxM,EAH5B62U,GAAcR,GAAWpwW,IAAUnP,EAAQ,GAAKmP,IAAUnP,GAASmP,IAAUnP,EAAQ,EACrFggX,EAAqB,WAATljX,GAAsBqoB,QAAQx1B,IAASw1B,QAAQ/0B,GAC3Dw5B,GAAsBwvP,EAAAA,GAAAA,KAItBy3D,GAH4B3nS,EAGMs2U,GAF3B51V,EAAoBG,iBAAiBmf,EAASjf,GAASif,KAG9D+2U,EAAiD,kBAAtBxU,EACzBA,GACsB,IAAtBA,ECvE8B,IAId,EDsElBpwU,EAAcvtC,EAAAA,aAAkB,SAAUW,GACtCsR,IAAatL,IACb0sM,EAAAA,GAAAA,GAAcphM,EAAUtR,EAAO0rP,IAAuB,CAAEn6O,MAAOmP,GAEvE,GAAG,CAACpP,EAAUC,EAAOvL,IACjByvB,EAAcp2B,EAAAA,aAAkB,SAAUW,GACtC01B,IAAY1vB,IACZ0sM,EAAAA,GAAAA,GAAch9K,EAAS11B,EAAO0rP,SAAuB1sP,EAE7D,GAAG,CAAC02B,EAAS1vB,IACT2lP,EAAiBtsP,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,SAAU,CACzE,eAA0B,IAAVxa,EAChB,cAAeuwW,GAAcvwW,IAAUuwW,EAAa,EACpD,cAAevwW,EAAQnP,EACvB,iBAAkBpR,EAClB,kBAAmBumE,EACnB,oBAA4B1nE,IAAZiB,IAA0BA,EAC1C,iBAAkBA,GACnB,CACC,aAAc+F,EACd,UAAW27B,GACZhiC,EAAY,GAAG,CAAC+gB,EAAOuwW,EAAY1/W,EAAOpR,EAASumE,EAAU1gE,EAAU27B,EAAS1hC,EAASN,IACxF8xX,EAAapyX,EAAAA,SAAc,WAAc,OAAQshB,GAAS,CAAElF,SAAW2yI,OAAsDpvJ,EAAzC,eAAegR,OAAOihX,EAAY,KAAkBzpX,UAAW4mJ,EAAa,eAAep+I,OAAOihX,EAAY,UAAOjyX,EAAW6oQ,cAAgBypH,OAAsBtyX,EAAT,QAAsBQ,EAAS,GAAG,CAAC4uJ,EAAY6iO,EAAYzxX,EAAO8xX,IACnTI,EAAuBzxX,EAAUixX,EAAcC,EAC/CQ,EAAkBD,EAAwBryX,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,yBAA2B+xX,EAAsB,cAAe,SAAcryX,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,wBAAyBiC,KAAM3B,EAAU,eAAiB,qBAAsBiB,KAAMjB,EAAWmxX,GAAkBQ,EAAAA,IAAqBP,GAAgB70U,EAAAA,MACpWq1U,EAAiBxyX,EAAAA,cAAoBA,EAAAA,SAAgB,KAAe,WAATgP,EAC3DhP,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,mBAAoB,eAAe,EAAMH,MAAO,CAAEiiP,mBAAoB+vI,EAAoB,OAAWtwX,GAAQujC,EAC/I8sV,QAAyBvyX,IAAZiB,EAEVZ,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,wBAAyBiC,KAAMV,GAAO6lP,EAAAA,EAAAA,IAAW7lP,GAAQA,EAAMA,KAAMujC,IADhHktV,OAEQ3yX,IAAZiB,EACI0xX,EACAtyX,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,yBAA2BkK,GAAc6W,EAAQ,IACpG,MACAoxW,EAAazyX,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,gBACtDgC,GAAStC,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,eAAiBgC,GACnE4vX,QAAyBvyX,IAAZiB,GAAyB0xX,EACtCjrT,GAAYrnE,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,yBAA2ByiV,IAChF2vC,EAAY1yX,EAAAA,cAAoBA,EAAAA,SAAgB,KAChDwyX,EACAC,GACJ,OAAQzyX,EAAAA,cAAoB,KAAMshB,GAAS,CAAE9gB,IAAK8gP,EAAYhhP,UAAWgsP,EAAgBnsP,MAAOiyX,GAAcl5U,GAC1Gl5C,EAAAA,cAAoB,IAAK,CAAEM,UAAW,cAAemM,MAAOnK,QAAgB3C,EAAWmC,QAASyrC,EAAalX,QAASD,EAAa4B,SAAUA,IAAsBsK,EAAU,GAAK,GAAG,eAAgBxhC,EAAS,gBAAiB6F,IAAasrX,QAActyX,EAAW,oBAA4BA,IAAZiB,IAA0BA,QAAWjB,GAAcsQ,EAAkB/P,EAAXwyX,GACvV,IACAhmN,GAAKj0I,UAAY,CACbv4B,SAAUw4B,EAAAA,IACVp4B,UAAWo4B,EAAAA,OAEX53B,QAAS43B,EAAAA,KACT/xB,SAAU+xB,EAAAA,KACV72B,KAAM62B,EAAAA,OACNrX,MAAOqX,EAAAA,OACP93B,QAAS83B,EAAAA,KACTp2B,MAAOo2B,EAAAA,OACP2uC,SAAU3uC,EAAAA,KACVv4B,MAAOu4B,EAAAA,OACPV,SAAUU,EAAAA,OACVluB,KAAMkuB,EAAAA,QAKVg0I,GAAK52I,aAHc,CACfkC,SAAU,GAGd00I,GAAKnmI,YAAc,2BE5IfjlB,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EA+BWvX,GAAU5hB,EAAAA,YAAiB,SAAU2K,EAAOkc,IACnD8b,EAAAA,GAAAA,GAAgBC,GAAAA,GAChB,IAAI+6U,EAAoBhzW,EAAMgzW,kBAAmBz9W,EAAWyK,EAAMzK,SAAUI,EAAYqK,EAAMrK,UAAWqG,EAAWgE,EAAMhE,SAAUmrX,EAAYnnX,EAAMmnX,UAAWE,EAAernX,EAAMqnX,aAAc/hX,EAAOtF,EAAMsF,KAAMiP,EAAQvU,EAAMuU,MAAOuyW,EAAS9mX,EAAM8mX,OAAQziX,EAAOrE,EAAMqE,KAAM+wW,EAAcp1W,EAAMo1W,YAAa5/W,EAAQwK,EAAMxK,MAAO0xX,EAAclnX,EAAMknX,YAAaE,EAAiBpnX,EAAMonX,eAAgB9/W,EAAWtH,EAAMsH,SAAUokB,EAAU1rB,EAAM0rB,QAE3bs8V,GADsBrnG,EAAAA,GAAAA,KACYrvP,iBAAiB01V,GAAkBx1V,GAASw1V,KAC9ErwI,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,UACX+wP,EAAAA,GAAAA,GAAyBvQ,EAAWxgP,QAE5C,GAAG,IACCurP,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,GAAG,CAACA,IACRpsP,EAAAA,oBAA0B6mB,EAAQwlO,GAClC,IAAIn6O,EAAQvH,EAAMuH,OAAS4jB,GAAa5jB,MACpChO,EAAKlE,EAAAA,SAAekS,GAAQ0gX,EAAa1uX,EAAG,GAAI2uX,EAAgB3uX,EAAG,GACnE0tX,EAAa1yW,EAAQA,EAAM5Q,OAAS,EACpCygJ,EAA6B,aAAhBgxN,EACb33V,GAAMk0O,EAAAA,GAAAA,GAAOhb,EAAY32O,EAAMyd,KAC/B7b,EAAyC,kBAAtBoxW,EACjBA,GACsB,IAAtBA,ED7D8B,IAId,EC4DtB39W,EAAAA,WAAgB,WACZ6yX,EAAc3gX,EAClB,GAAG,CAACA,IACJ,IAAI20U,EAAsB7mV,EAAAA,aAAkB,SAAUW,EAAOgiD,GAKrDzwC,IAAUywC,GAAO1wC,IAAatL,KADhB8qX,GAHJ9uU,IAAQzwC,EAAQ,GAChBywC,IAAQzwC,GACRywC,IAAQzwC,EAAQ,MAG1BmhM,EAAAA,GAAAA,GAAcphM,EAAUtR,EAAO0rP,IAAuB,CAAEn6O,MAAOywC,IAC/DkwU,EAAclwU,GAEtB,GAAG,CAACzwC,EAAOu/W,EAAQx/W,EAAUtL,EAAUksX,IACnC18V,EAAen2B,EAAAA,aAAkB,SAAUW,GAC3C,IAAImmB,EAAenmB,EAAMuR,MACrB4gX,EAAiBnyX,EAAMk+B,eAC3BgoT,EAAoBisC,EAAgBhsW,EACxC,GAAG,CAAC+/T,IACAzwT,EAAcp2B,EAAAA,aAAkB,SAAUW,GACtC01B,IAAY1vB,IACZ0sM,EAAAA,GAAAA,GAAch9K,EAAS11B,EAAMk+B,eAAgBwtN,SAAuB1sP,EAE5E,GAAG,CAAC02B,EAAS1vB,IACT6kV,EAAcxrV,EAAAA,aAAkB,SAAUW,GAC1CkmV,EAAoBlmV,EAAOiyX,EAC/B,GAAG,CAAC/rC,EAAqB+rC,IACrB/7V,EAAgB72B,EAAAA,aAAkB,SAAUW,GAC5C,IAAI4vC,EAAgB,QAARnoB,EACRgmO,EAAYwkI,EACZ/xU,EAAc3hC,EAAM5Q,OAAS,EACjC,OAAQ3N,EAAMm2B,SACV,KAAKtD,EAAAA,EAAKrX,KACNxb,EAAM+gB,kBACD6uB,GAAS69M,EAAY,GACtBykI,EAAczkI,EAAY,GAE1B79M,GAAS69M,EAAYvtM,GACrBgyU,EAAczkI,EAAY,GAE9B,MACJ,KAAK56N,EAAAA,EAAKltB,MACN3F,EAAM+gB,kBACD6uB,GAAS69M,EAAYvtM,GACtBgyU,EAAczkI,EAAY,GAE1B79M,GAAS69M,EAAY,GACrBykI,EAAczkI,EAAY,GAE9B,MACJ,KAAK56N,EAAAA,EAAKG,GACNhzB,EAAM+gB,kBACD6uB,GAAS69M,EAAY,GACtBykI,EAAczkI,EAAY,GAE1B79M,GAAS69M,EAAY,GACrBykI,EAAczkI,EAAY,GAE9B,MACJ,KAAK56N,EAAAA,EAAKI,KACNjzB,EAAM+gB,kBACD6uB,GAAS69M,EAAYvtM,GACtBgyU,EAAczkI,EAAY,GAE1B79M,GAAS69M,EAAYvtM,GACrBgyU,EAAczkI,EAAY,GAE9B,MACJ,KAAK56N,EAAAA,EAAKE,KACN/yB,EAAM+gB,iBACNmxW,EAAc,GACd,MACJ,KAAKr/V,EAAAA,EAAKC,IACN9yB,EAAM+gB,iBACNmxW,EAAchyU,GACd,MACJ,KAAKrtB,EAAAA,EAAKytB,MACNtgD,EAAM+gB,iBACN,MACJ,KAAK8R,EAAAA,EAAK8L,MACN3+B,EAAM+gB,iBACDxC,EAAMkvO,GAAWznP,UAClB6kV,EAAY7qV,GAK5B,GAAG,CAACue,EAAO2zW,EAAeD,EAAYxqW,EAAKojU,IACvCunC,EAAiB/yX,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,YAAa,CAC5E,mBAAoB41V,GACrBnxX,EAAY,GAAG,CAACmxX,EAAQnxX,IACvB0yX,EAAgBhzX,EAAAA,SAAc,WAAc,OAAQshB,GAAS,CAAE+uF,QAAS,OAAQ4iR,oBAAsBlkO,OAAqDpvJ,EAAxC,UAAyB,EAAbiyX,EAAiB,SAAsBsB,iBAAkBnkO,EAAa,UAAY6iO,EAAa,cAAWjyX,GAAaQ,EAAS,GAAG,CAAC4uJ,EAAY6iO,EAAYzxX,IAC3RgzX,EAAcnzX,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,cAAe,CAC3E,0BAA2BkzH,EAC3B,uBAAwBA,GACxB,GAAG,CAACA,IACJqkO,EAAapzX,EAAAA,SAAc,WAAc,MAAQ,CACjDqzX,gBAAkBtkO,OAAiBpvJ,EAAJ,EAC/B2zX,cAAgBvkO,OAAkBpvJ,GAAJ,EAC9B4zX,aAAcxkO,EAAa,OAAIpvJ,EAC/B6zX,WAAYzkO,GAAc,OAAIpvJ,EAC9B,GAAG,CAACovJ,IACJ0kO,EAAoBzzX,EAAAA,SAAc,WAAc,MAAQ,CACxDqzX,gBAAkBtkO,OAAiBpvJ,EAAJ,EAC/B2zX,cAAgBvkO,OAA8BpvJ,EAAJ,EAAbiyX,EAC7B2B,aAAcxkO,EAAa,OAAIpvJ,EAC/B6zX,WAAYzkO,EAAa6iO,OAAajyX,EACtC0G,IAAK0oJ,EAAa,QAAKpvJ,EACvB,GAAG,CAACovJ,EAAY6iO,IAChBjxW,EAASzB,GAAUA,EAAMxS,KAAI,SAAUooB,EAASzT,GAChD,IAAIqyW,EAAYpyW,GAAS,CAAED,MAAOA,EAAO1a,SAAUA,GAAYmuB,EAAQnuB,SAAU27B,QAASjhB,IAAUuxW,EAAY9xX,QAASugB,IAAUnP,GAAS4iB,GACxIy3N,EAAWt8O,GAAQy8J,GACvB,OAAQ1sK,EAAAA,cAAoBusP,EAAUjrO,GAAS,CAAEyW,IAAK1W,GAASqyW,GACnE,IACA,OAAQ1zX,EAAAA,cAAoBwxX,GAAevxI,SAAU,CAAE/tO,MAAO,CACtDyrW,kBAAmBA,EACnB5uN,WAAYA,EACZ9+I,KAAMA,EACNwhX,OAAQA,EACRziX,KAAMA,EACN4iX,WAAYA,EACZ1/W,MAAOA,EACP2/W,YAAaA,EACbE,eAAgBA,EAChBD,UAAWA,EACXE,aAAcA,EACd//W,SAAUkkB,EACVE,QAASD,IAEbp2B,EAAAA,cAAoB,MAAO,CAAEM,UAAWyyX,EAAgB5yX,MAAO6yX,EAAe5qW,IAAKA,EAAK8P,UAAWrB,GAC/F72B,EAAAA,cAAoB,KAAM,CAAEM,UAAW6yX,EAAahzX,MAAOizX,GAAczyW,GAAgBzgB,GACzFF,EAAAA,cAAoBo5C,GAAAA,EAAa,CAAEj5C,MAAOszX,EAAmBlnX,UAAW,CAAEk7Q,SAAUl7Q,GAAaq7O,UAAW+qI,EAAa,eAAe,EAAMhxW,IAAKiwW,EAAa,EAAG+B,cAAc,EAAO5T,YAAaA,EAAanyV,QAAyB,aAAhBmyV,EAA4B7tW,MAAOA,EAAOvL,SAAUA,EAAUqxB,UAAW,KAChT,IACApW,GAAQ6W,UAAY,CAChBklV,kBAAmBjlV,EAAAA,UAAoB,CAACA,EAAAA,KAAgBA,EAAAA,SACxDx4B,SAAUw4B,EAAAA,IACVp4B,UAAWo4B,EAAAA,OACXtQ,IAAKsQ,EAAAA,OACL/xB,SAAU+xB,EAAAA,KACVo5V,UAAWp5V,EAAAA,OACXs5V,aAAc9rI,EAAAA,GACdj2O,KAAMyoB,EAAAA,IACNxZ,MAAOwZ,EAAAA,IACP+4V,OAAQ/4V,EAAAA,KACR1pB,KAAM0pB,EAAAA,MAAgB,CAAC,QAAS,WAChCqnV,YAAarnV,EAAAA,MAAgB,CAAC,aAAc,aAC5Cv4B,MAAOu4B,EAAAA,OACPm5V,YAAan5V,EAAAA,OACbq5V,eAAgB7rI,EAAAA,GAChBh0O,MAAOwmB,EAAAA,OAAiBoY,WACxB7+B,SAAUymB,EAAAA,KACVrC,QAASqC,EAAAA,MAEb,IAAI5C,GAAe,CACf5jB,MAAO,GAEX0P,GAAQkU,aAAeA,GACvBlU,GAAQ2kB,YAAc,8DC/NlB7T,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAMIy6V,GAAS,SAAUjpX,GAAS,OAAQ3K,EAAAA,cAAoB0vP,EAAAA,EAAW,CAAEI,QAASnlP,EAAMmlP,QAASM,OAAQ,SAAUprP,GAAQ2F,EAAMykP,SAASpqP,EAAKrE,OAAO,EAAOgK,EAAMioB,EAAI,EAAGo9N,UAAW,SAAUhrP,GAAQ2F,EAAMykP,SAASpqP,EAAKrE,OAAO,EAAMgK,EAAMioB,EAAI,GAC9O5yB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,4BAA8BqK,EAAMioB,EAAI,UAAWzyB,MAAOmhB,GAAS,CAAEslF,OAAQ,EAAGtgG,MAAO,GAAKqE,EAAMxK,SAAa,EAIvJisR,GAAgC,SAAUn4P,GAE1C,SAASm4P,IACL,IAAIj9P,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAKhE,OAJA0C,EAAM5pB,aAAe,SAAU5E,EAAOkzX,EAAO/1V,GACzCn9B,EAAM40P,cAAc7zO,iBACpByN,EAAMxkB,MAAMykP,SAASzuP,EAAO,CAAE8yB,IAAKogW,EAAO/1V,UAAWA,GACzD,EACO3O,CACX,CAWA,OAnBAuD,GAAU05P,EAAgBn4P,GAS1Bm4P,EAAez/P,UAAUnrB,OAAS,WAC9B,IAAI0C,EAAKuoB,KAAK9hB,MAAO+D,EAAYxK,EAAGwK,UAAWohP,EAAU5rP,EAAG4rP,QAASxJ,EAAMpiP,EAAGoiP,IAC9E,OAAK53O,EAGG1O,EAAAA,cAAoBA,EAAAA,SAAgB,KAC1B,aAAd0O,GAA6B1O,EAAAA,cAAoB4zX,GAAQ,CAAE9jI,QAASA,EAASV,SAAU3iO,KAAKlnB,aAAcqtB,EAAG,KAAMzyB,MAAOmmP,EAAM,CAAEjgP,IAAK,EAAGS,MAAO,EAAGqV,KAAM,EAAG7V,MAAO,IAAO,CAAED,IAAK,EAAGS,MAAO,EAAGR,MAAO,EAAG6V,KAAM,MACjM,eAAdzN,GAA+B1O,EAAAA,cAAoB4zX,GAAQ,CAAE9jI,QAASA,EAASV,SAAU3iO,KAAKlnB,aAAcqtB,EAAG,KAAMzyB,MAAO,CAAEgc,KAAM,EAAGrU,OAAQ,MAChI,IAAd4G,GAAwB1O,EAAAA,cAAoB4zX,GAAQ,CAAE9jI,QAASA,EAASV,SAAU3iO,KAAKlnB,aAAcqtB,EAAG0zN,EAAM,OAAS,OAAQnmP,MAAOmmP,EAAM,CAAEx/O,MAAO,EAAGgB,OAAQ,EAAGxB,MAAO,GAAI6V,KAAM,GAAM,CAAErV,MAAO,EAAGgB,OAAQ,EAAGxB,MAAO,EAAG6V,KAAM,OAL3N,IAMf,EACOiwQ,CACX,CArBoC,CAqBlCpsR,EAAAA,WCzDE0yB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAYI26V,GAA8B,SAAU7/V,GAExC,SAAS6/V,IACL,IAAI3kW,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KA6IhE,OA5IA0C,EAAM3vB,MAAQ,CACV8mP,KAAK,GAETn3N,EAAMo8I,QAAU,CAAC,EACjBp8I,EAAM8hK,UAAY,KAClB9hK,EAAMg5K,UAAW,EACjBh5K,EAAM4kW,UAAW,EACjB5kW,EAAM2F,QAAU,KAChB3F,EAAM6kW,YAAc,KACpB7kW,EAAM8kW,YAAa,EACnB9kW,EAAM+kW,YAAc,CAAEt9S,EAAG,EAAGkmB,EAAG,GAC/B3tE,EAAMglW,QAAU,CAAEv9S,EAAG,EAAGkmB,EAAG,GAC3B3tE,EAAMilW,iBAAmB,CAAEx9S,EAAG,EAAGkmB,EAAG,GACpC3tE,EAAMklW,oBAAiB10X,EACvBwvB,EAAM5pB,aAAe,SAAUY,EAAG8G,GAC9B,GAAIA,EAAEwmB,IACFtE,EAAM4gO,qBAGV,GAAK5gO,EAAM2F,SAAY3F,EAAM6kW,YAA7B,CAGA,IAAIp9S,EAAIzwE,EAAE+9L,QACNpnG,EAAI32F,EAAEg+L,QACVh1K,EAAM4kW,UAAW,EACjB,IAAIzkM,GAAsB,OAAhBriL,EAAE6wB,UAAqB84C,EAAIznD,EAAMglW,QAAQv9S,EAAI,IAAMznD,EAAM3vB,MAAM8mP,KAAO,EAAI,GAChF/2D,EAAqB,OAAhBtiL,EAAE6wB,UAAqBg/D,EAAI3tE,EAAMglW,QAAQr3R,EAAI,EAWtD,GAVI3tE,EAAMmlW,cACFnlW,EAAM3vB,MAAM8mP,IACZn3N,EAAMmlW,YAAYn0X,MAAME,YAAcivL,EAAK,KAG3CngK,EAAMmlW,YAAYn0X,MAAM+B,aAAeotL,EAAK,KAEhDngK,EAAMmlW,YAAYn0X,MAAM2H,OAAS,eAAe6I,OAAO4+K,EAAI,QAE/DpgK,EAAM6kW,YAAYhqV,UAAUE,IAAI,8BAC5B/a,EAAMklW,eAAV,CAGA,IAAI5sW,EAAM,EACND,EAAM,EACN+sW,EAAUplW,EAAM2F,QAAQs5E,wBACxBkhF,EAAKilM,EAAQztX,MAAQqoB,EAAMxkB,MAAM6pX,gBAAgB9sW,QAAU,IAC3DD,EAAM,GAEN6nK,GAAMilM,EAAQztX,MAAQqoB,EAAMxkB,MAAM6pX,gBAAgB9sW,QAAU,OAC5DD,GAAO,GAGP8nK,EAAKglM,EAAQzsX,OAASqnB,EAAMxkB,MAAM6pX,gBAAgBhkK,QAAU,IAC5DhpM,EAAM,GAEN+nK,GAAMglM,EAAQzsX,OAASqnB,EAAMxkB,MAAM6pX,gBAAgBhkK,QAAU,OAC7DhpM,GAAO,GAEC,IAARC,GAAqB,IAARD,GACb2H,EAAMxkB,MAAM+oJ,OAAOvkI,EAAMxkB,MAAM0W,MAAO,EAAG,EAAGmG,EAAKC,EAlBrD,CAlBA,CAsCJ,EACA0H,EAAM0gO,YAAc,SAAU1pP,GAC1B,GAAKgpB,EAAMmlW,YAQX,GALAnlW,EAAMglW,QAAU,CACZv9S,EAAGzwE,EAAExF,MAAMujM,QACXpnG,EAAG32F,EAAExF,MAAMwjM,SAEfh1K,EAAM8kW,YAAa,EACf9kW,EAAMxkB,MAAMspX,YAAc9kW,EAAMxkB,MAAMspX,WAAW9tX,EAAExF,MAAM40P,eACzDpmO,EAAM8kW,YAAa,MADvB,CAII9kW,EAAM2F,SAAW3F,EAAM6kW,cACvB7kW,EAAM2F,QAAQ30B,MAAMoG,OAAS,KAC7B4oB,EAAM6kW,YAAY7zX,MAAMkwG,QAAU,SAEtClhF,EAAMmlW,YAAYtqV,UAAUC,OAAO,iBACnC9a,EAAMmlW,YAAYtqV,UAAUE,IAAI,qBAChC,IAAIsjF,EAAMr+F,EAAMmlW,YAAYlmR,wBAC5Bj/E,EAAM+kW,YAAc,CAChBt9S,EAAGzwE,EAAExF,MAAMujM,QAAU12E,EAAI52C,EACzBkmB,EAAG32F,EAAExF,MAAMwjM,QAAU32E,EAAI1wB,EAV7B,CAYJ,EACA3tE,EAAMghO,WAAa,SAAUhqP,GACzB,IAAIgpB,EAAM8kW,WAAV,CAGA,IAAIK,EAAcnlW,EAAMmlW,YACxB,IAAInuX,EAAExF,MAAM40P,cAAczxD,kBAAqBwwL,EAA/C,CAGAnlW,EAAMg5K,UAAW,EACjBhiM,EAAExF,MAAM40P,cAAc7zO,iBACtB,IAAI8rG,EAAM8mQ,EAAYlmR,wBAOtB,GANAj/E,EAAMilW,iBAAmB,CACrBx9S,EAAGzwE,EAAExF,MAAMujM,QAAU12E,EAAI52C,EAAIznD,EAAM+kW,YAAYt9S,EAAIznD,EAAMilW,iBAAiBx9S,EAC1EkmB,EAAG32F,EAAExF,MAAMwjM,QAAU32E,EAAI1wB,EAAI3tE,EAAM+kW,YAAYp3R,EAAI3tE,EAAMilW,iBAAiBt3R,GAE9Ew3R,EAAYn0X,MAAMy3B,UAAY,aAAajnB,OAAOwe,EAAMilW,iBAAiBx9S,EAAG,QAAQjmE,OAAOwe,EAAMilW,iBAAiBt3R,EAAG,OACrHw3R,EAAYn0X,MAAMkoQ,WAAa,gBAC3Bl5O,EAAMklW,eAAV,CAGA,IAAI5sW,EAAM,EACND,EAAM,EACN2H,EAAMilW,iBAAiBt3R,EAAI,GAAM0wB,EAAI1lH,OAASqnB,EAAMxkB,MAAM6pX,gBAAgBhkK,UAC1EhpM,EAAM,GAEN2H,EAAMilW,iBAAiBt3R,EAAI,IAAO0wB,EAAI1lH,OAASqnB,EAAMxkB,MAAM6pX,gBAAgBhkK,UAC3EhpM,GAAO,GAEP2H,EAAMilW,iBAAiBx9S,EAAI,GAAM42C,EAAI1mH,MAAQqoB,EAAMxkB,MAAM6pX,gBAAgB9sW,UACzED,EAAM,GAEN0H,EAAMilW,iBAAiBx9S,EAAI,IAAO42C,EAAI1mH,MAAQqoB,EAAMxkB,MAAM6pX,gBAAgB9sW,UAC1ED,GAAO,GAEX0H,EAAMxkB,MAAM+oJ,OAAOvkI,EAAMxkB,MAAM0W,MAAOmG,EAAK2H,EAAM3vB,MAAM8mP,KAAO7+N,EAAMA,EAAK,EAAG,EAf5E,CAZA,CAJA,CAgCJ,EACA0H,EAAM4gO,cAAgB,WAClB5gO,EAAMg5K,SAAWh5K,EAAM4kW,UAAW,EAClC5kW,EAAMilW,iBAAmB,CAAEx9S,EAAG,EAAGkmB,EAAG,GAChC3tE,EAAM2F,SAAW3F,EAAM6kW,cACvB7kW,EAAM2F,QAAQ30B,MAAMoG,OAAS,IAC7B4oB,EAAM6kW,YAAYhqV,UAAUC,OAAO,6BACnC9a,EAAM6kW,YAAY7zX,MAAMkwG,QAAU,QAEtC,IAAIikR,EAAcnlW,EAAMmlW,YACpBA,IACAA,EAAYn0X,MAAMy3B,UAAY,sBAC9B08V,EAAYn0X,MAAMkoQ,WAAa,aAAa13P,OA5InC,IA4I8D,oCACvE2jX,EAAYn0X,MAAM+B,YAAc,MAChCoyX,EAAYn0X,MAAME,WAAa,MAC/Bi0X,EAAYn0X,MAAM2H,OAAS,OAC3BwsX,EAAYtqV,UAAUC,OAAO,qBAC7BqqV,EAAYtqV,UAAUE,IAAI,iBAElC,EACO/a,CACX,CAkJA,OAlSAuD,GAAUohW,EAAc7/V,GAiJxB7kB,OAAO6nB,eAAe68V,EAAannW,UAAW,cAAe,CACzDuK,IAAK,WACD,YAAkCv3B,IAA3B8sB,KAAK9hB,MAAMgE,YAA4B8d,KAAK9hB,MAAMgE,YAAcmlX,EAAah+V,aAAannB,WACrG,EACAwoB,YAAY,EACZC,cAAc,IAElBhoB,OAAO6nB,eAAe68V,EAAannW,UAAW,cAAe,CACzDuK,IAAK,WACD,OAAOzK,KAAKwkK,UAAYxkK,KAAKwkK,UAAUn8J,aAAUn1B,CACrD,EACAw3B,YAAY,EACZC,cAAc,IAElB08V,EAAannW,UAAU4K,kBAAoB,WAClC9K,KAAKqI,UAGuC,QAA7CsrB,iBAAiB3zB,KAAKqI,SAASgJ,WAC/BrR,KAAKuO,SAAS,CACVsrN,KAAK,IAGT75N,KAAKunW,cACLvnW,KAAKunW,YAAY7zX,MAAM2H,OAAS2kB,KAAKqI,QAAQtC,aAAe,KAC5D/F,KAAKunW,YAAY7zX,MAAM2G,MAAQ2lB,KAAKqI,QAAQm9H,YAAc,MAElE,EACA6hO,EAAannW,UAAUnrB,OAAS,WAC5B,IAAI2tB,EAAQ1C,KACRyO,cAA0C,oBAAlBA,eACxBA,aAAazO,KAAK4nW,gBAClB5nW,KAAK4nW,eAAiB7uX,OAAOi3B,YAAW,WAActN,EAAMklW,oBAAiB10X,CAAW,GAAG,MAE/F,IAAIyG,EAAWqmB,KAAK9hB,MAAM6pX,gBACtB9lX,OAAqC/O,IAAzB8sB,KAAK9hB,MAAM+D,UAA0B+d,KAAK9hB,MAAM+D,UAAYolX,EAAah+V,aAAapnB,UAClG+lX,EAAiBnzW,GAAS,CAAE+xW,gBAAiBjtX,EAASqhB,IAAK6rW,cAAe,QAAQ3iX,OAAOvK,EAASshB,SAAU6rW,aAAcntX,EAASohB,IAAKgsW,WAAY,QAAQ7iX,OAAOvK,EAASoqN,SAAU83C,QAAS,OAAQtiL,MAAO5/E,EAAS4/E,MAAOqqB,QAAS,QAAU5jF,KAAK9hB,MAAM+pX,WAC5PtC,EAAa,CACbiB,gBAAiBjtX,EAASqhB,IAC1B6rW,cAAe,QAAQ3iX,OAAOvK,EAASshB,SACvC6rW,aAAcntX,EAASohB,IACvBgsW,WAAY,QAAQ7iX,OAAOvK,EAASoqN,SACpCxqI,MAAO5/E,EAAS4/E,OAEhB2uS,EAAQ30X,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAU2F,GAAKgpB,EAAM8hK,UAAY9qL,EAAK,CAAE2uB,QAAS3uB,GAAO,IAAM,EAAG7F,WAAWu7B,EAAAA,EAAAA,GAAW,2BAA4B,CAAE,gBAAiBpP,KAAK9d,aAAe8d,KAAK9hB,MAAMrK,WAAYH,MAAOmhB,GAASA,GAAS,CAAExZ,OAAQ,QAAUsqX,GAAa3lW,KAAK9hB,MAAMxK,QAChSssB,KAAK9hB,MAAMzK,SACXF,EAAAA,cAAoBosR,GAAgB,CAAEt8B,QAASrjO,KAAKojO,YAAaT,SAAU3iO,KAAKlnB,aAAcmJ,UAAWA,EAAW43O,IAAK75N,KAAKjtB,MAAM8mP,OACxI,OAAQtmP,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAU2F,GAAKgpB,EAAM2F,QAAU3uB,CAAG,EAAGhG,MAAOiyX,GAClFpyX,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAU2F,GAAKgpB,EAAM6kW,YAAc7tX,CAAG,EAAGhG,MAAOmhB,GAAS,CAAElb,SAAU,YAAcquX,GAAiBn0X,WAAWu7B,EAAAA,EAAAA,GAAW,qBAAsBpP,KAAK9hB,MAAM0yW,iBAC7Lr9W,EAAAA,cAAoB0vP,EAAAA,EAAW,CAAElvP,IAAK,SAAU2F,GAAKgpB,EAAM8hK,UAAY9qL,CAAG,EAAGiqP,OAAQ3jO,KAAK9hB,MAAMgE,YAAc8d,KAAK0jO,gBAAaxwP,EAAWqwP,UAAWvjO,KAAK9hB,MAAMgE,YAAc8d,KAAKsjO,mBAAgBpwP,EAAWmwP,QAASrjO,KAAK9hB,MAAMgE,YAAc8d,KAAKojO,iBAAclwP,GAAag1X,GACzR,EAIAb,EAAannW,UAAUujT,wBAA0B,SAAU7iT,GAKvD,OAJAZ,KAAK8+I,QAAU,CAAC,EACZ9+I,KAAK6nW,cACL7nW,KAAK8+I,QAAU9+I,KAAK6nW,YAAYlmR,yBAE7B,IACX,EAIA0lR,EAAannW,UAAU8K,mBAAqB,SAAUukB,GAClD,IAAI7sB,EAAQ1C,KACR6nW,EAAc7nW,KAAK6nW,YACvB,GAAKA,EAAL,CAGA,IAAIM,EAASN,EAAYlmR,wBACrBymR,EAASpoW,KAAK8+I,QAClB,GAAI9+I,KAAKsnW,SAAU,CACf,IAAIe,EAAUF,EAAO9tX,MAAQ+tX,EAAO/tX,MACpC,GAAI2lB,KAAKjtB,MAAM8mP,IAAK,CAChB,IAAIyuI,EAAWx0S,WAAW+zS,EAAYn0X,MAAME,YAAc,KAC1Di0X,EAAYn0X,MAAME,WAAc00X,EAAWD,EAAW,IAC1D,KACK,CACGC,EAAWx0S,WAAW+zS,EAAYn0X,MAAM+B,aAAe,KAC3DoyX,EAAYn0X,MAAM+B,YAAe6yX,EAAWD,EAAW,IAC3D,CACAroW,KAAK0nW,QAAQv9S,GAAKnqD,KAAKjtB,MAAM8mP,KAAOwuI,EAAUA,EAC9C,IAAIE,EAAUJ,EAAO9sX,OAAS+sX,EAAO/sX,OACjCmtX,EAAa10S,WAAW+zS,EAAYn0X,MAAM2H,OAAO0L,UAAU,KAC/D8gX,EAAYn0X,MAAM2H,OAAS,eAAe6I,OAAQskX,EAAaD,EAAU,OACzEvoW,KAAK0nW,QAAQr3R,GAAKk4R,CACtB,CACA,IAAIxtC,EAASqtC,EAAO14W,KAAOy4W,EAAOz4W,KAC9BikQ,EAASy0G,EAAOxuX,IAAMuuX,EAAOvuX,IAClB,IAAXmhV,GAA2B,IAAXpnE,IAGhB3zP,KAAK07K,SACAnsJ,EAAUw4U,gBAAgBxuS,QAAUv5D,KAAK9hB,MAAM6pX,gBAAgBxuS,OAChEhqC,EAAUw4U,gBAAgB/sW,MAAQgF,KAAK9hB,MAAM6pX,gBAAgB/sW,MAC7DgF,KAAK2nW,iBAAiBx9S,EAAI,EAC1BnqD,KAAK2nW,iBAAiBt3R,EAAI,EAC1Bw3R,EAAYn0X,MAAMy3B,UAAY,IAIlCrW,KAAK6T,IAAIgrP,GAAU,IAAM7+P,KAAK6T,IAAIoyT,GAAU,IAIhD/lE,uBAAsB,WAClB,IAAIxlF,EAAU9sK,EAAM2F,QACfmnK,IAGLA,EAAQ97L,MAAMy3B,UAAY,aAAajnB,OAAO62U,EAAQ,QAAQ72U,OAAOyvQ,EAAQ,OAC7EnkF,EAAQ97L,MAAMkoQ,WAAa,eAC3BoZ,uBAAsB,WAClBxlF,EAAQ97L,MAAMy3B,UAAY,GAC1BqkK,EAAQ97L,MAAMkoQ,WAAa,aAAa13P,OAzQ/B,IAyQ0D,mCACvE,IACJ,IAhDA,CAiDJ,EAIAmjX,EAAar7V,UAAY,CACrB+7V,gBAAiB97V,EAAAA,OAAiBoY,WAClC3wC,MAAOu4B,EAAAA,OACPp4B,UAAWo4B,EAAAA,OACXg8V,UAAWh8V,EAAAA,OACX2kV,cAAe3kV,EAAAA,OACf7oB,OAAQ6oB,EAAAA,IACR5c,KAAM4c,EAAAA,IACNzoB,KAAMyoB,EAAAA,IACNhqB,UAAWgqB,EAAAA,MAAgB,CAAC,aAAc,YAAY,GAAM,IAC5D/pB,YAAa+pB,EAAAA,MAKjBo7V,EAAavtV,YAAc,sBAI3ButV,EAAah+V,aAAe,CACxBpnB,WAAW,EACXC,aAAa,GAEVmlX,CACX,CApSkC,CAoShC9zX,EAAAA,WCzUE0yB,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EASI+7V,GAAoB,CACpB,OAAU,kBACV,IAAO,kBACP,eAAgB,wBAChB,YAAa,wBACb,MAAS,qBAKTC,GAA4B,SAAUlhW,GAEtC,SAASkhW,EAAWxqX,GAChB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA4DxC,OAxDA0C,EAAM/iB,SAAW,KAIjB+iB,EAAM3vB,MAAQ,CAAE41X,WAAYjmW,EAAMxkB,MAAMuU,OAAS,IAAIxS,KAAI,SAAUsmB,EAAGrmB,GAAK,OAAQyC,OAAO2mB,OAAO,CAAEiwD,MAAOr5E,EAAG6jN,QAAS,EAAG9oM,QAAS,GAAKsL,EAAEwhW,gBAAmB,KAC5JrlW,EAAMs6P,sBAAuB,EAI7Bt6P,EAAMuF,MAAQ,WACNvF,EAAM/iB,UACN+iB,EAAM/iB,SAASsoB,OAEvB,EAIAvF,EAAMukI,OAAS,SAAUryI,EAAOg0W,EAAQC,EAAMC,EAAUC,GAGpD,QAFiB,IAAbD,IAAuBA,EAAW,QACrB,IAAbC,IAAuBA,EAAW,GACvB,IAAXH,GAAyB,IAATC,GAAeE,GAAaD,EAAhD,CAGA,IAAIhyF,GAAe,EACf6xF,EAAYjmW,EAAM3vB,MAAM41X,UAAU1oX,KAAI,SAAUsmB,GAAK,OAAO5jB,OAAO2mB,OAAO,CAAC,EAAG/C,EAAI,IAElFlyB,EAAUs0X,EAAU/zW,GACpB63E,EAAQk8R,EAAUz6W,MAAK,SAAU1K,GAAQ,OAAQA,EAAK+1E,QAAUllF,EAAQklF,MAAQqvS,CAAS,IACzFn8R,GAASA,IAAUp4F,IACnBA,EAAQklF,OAASqvS,EACjBn8R,EAAMlT,QAAUqvS,EAChB9xF,GAAe,GAEnB,IAAIkyF,EAAc30X,EAAQ2mB,IAAM6tW,EACnB,IAATA,GAAcG,GAAe,GAAKA,EAAc30X,EAAQ4mB,UAAYyH,EAAMxkB,MAAM8+D,SAAW,GAAK,IAChG3oE,EAAQ2mB,IAAMguW,EACdlyF,GAAe,GAGnB,IAAImyF,EAAkB50X,EAAQ4mB,QAAU8tW,EACpCA,GAAYE,GAAmB,GAAKA,EAAkB50X,EAAQ2mB,MAAQ0H,EAAMxkB,MAAM8+D,SAAW,GAAK,IAClG3oE,EAAQ4mB,QAAUguW,EAClBnyF,GAAe,GAEnB,IAAIoyF,EAAkB70X,EAAQ0vN,QAAU+kK,EACpCA,GAAYI,GAAmB,IAC/B70X,EAAQ0vN,QAAUmlK,EAClBpyF,GAAe,GAEfA,IACAp0Q,EAAM6L,SAAS,CAAEo6V,UAAWA,KAC5B/hL,EAAAA,GAAAA,GAAclkL,EAAMxkB,MAAMirX,aAAc,CAAC,EAAGzmW,EAAO,CAAEjd,MAAOkjX,IA7BhE,CA+BJ,GACAzyV,EAAAA,GAAAA,GAAgBC,GAAAA,GAChBzT,EAAMs6P,sBAAuB/hB,EAAAA,GAAAA,GAAuB9kO,GAAAA,GAC7CzT,CACX,CAmEA,OAlIAuD,GAAUyiW,EAAYlhW,GAgEtB7kB,OAAO6nB,eAAek+V,EAAWxoW,UAAW,UAAW,CAInDuK,IAAK,WACD,OAAOzK,KAAKrgB,QAChB,EACA+qB,YAAY,EACZC,cAAc,IAKlB+9V,EAAWp3I,yBAA2B,SAAUpzO,EAAOnL,GACnD,OAAImL,EAAMyqX,UAEC,CACHA,UAAWzqX,EAAMyqX,UAAU1oX,KAAI,SAAUsmB,EAAGrmB,GAAK,OAAQyC,OAAO2mB,OAAO,CAAEiwD,MAAOr5E,EAAG6jN,QAAS,EAAG9oM,QAAS,GAAKsL,EAAK,MAGtHroB,EAAMuU,OAAW1f,EAAM41X,WAAczqX,EAAMuU,MAAM5Q,SAAW9O,EAAM41X,UAAU9mX,OAMzE,KAJI,CACH8mX,UAAWzqX,EAAMuU,MAAMxS,KAAI,SAAUsmB,EAAGrmB,GAAK,OAAQyC,OAAO2mB,OAAO,CAAEiwD,MAAOr5E,EAAG6jN,QAAS,EAAG9oM,QAAS,GAAKsL,EAAEwhW,gBAAmB,IAI1I,EACAW,EAAWxoW,UAAUnrB,OAAS,WAC1B,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOrK,EAAY4D,EAAG5D,UAAWgE,EAAKJ,EAAGulE,QAASA,OAAiB,IAAPnlE,EAAgB,EAAIA,EAAIK,EAAKT,EAAG2xX,YAAaA,OAAqB,IAAPlxX,EAAgB,MAAQA,EAAIvC,EAAM8B,EAAG9B,IAAK0C,EAAKZ,EAAG+tN,UAAWA,OAAmB,IAAPntN,EAAgB,MAAQA,EAAI3E,EAAQ+D,EAAG/D,MAAO+E,EAAKhB,EAAG4xX,SAAUA,OAAkB,IAAP5wX,EAAgB,SAAWA,EAAIE,EAAKlB,EAAGgb,MAAOA,OAAe,IAAP9Z,EAAgB,GAAKA,EAChW2wX,EAAW3zX,EACT,GAAGuO,OAA2B,kBAAbvO,EAAIilB,KAAoBjlB,EAAIilB,KAAO,KAAOjlB,EAAIilB,MAAQ,IAAM,GAAG1W,OAA8B,kBAAhBvO,EAAIqnE,QAAuBrnE,EAAIqnE,QAAU,KAAOrnE,EAAIqnE,SAClJ,GACFusT,EAAmB10W,GAAS,CAAE2xW,oBAAqB,UAAUtiX,OAAO84D,EAAS,kBAAkB94D,OAA8B,kBAAhBklX,EAA2BA,EAAc,KAAOA,EAAa,MAAOI,aAAc,eAAetlX,OAA4B,kBAAdshN,EAAyBA,EAAY,KAAOA,EAAW,KAAM7vN,IAAK2zX,EAAU5lX,QAAS4lX,GAAY51X,GACjU,OAAQH,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAUy3B,GAAM9I,EAAM/iB,SAAW6rB,CAAI,EAAG7P,IAAKqE,KAAK9hB,MAAMyd,IAAK9nB,WAAWu7B,EAAAA,EAAAA,GAAW,8BAA+Bq5V,GAAkBY,GAAWx1X,GAAYH,MAAO61X,EAAkBn2X,GAAI4sB,KAAK9hB,MAAM9K,GAAIK,SAAUgf,EAAMxS,KAAI,SAAUwpX,EAAM70W,GAC7Q,OAAQrhB,EAAAA,cAAoBA,EAAAA,SAAgB,CAAE+3B,IAAK5I,EAAMxkB,MAAMiE,aAAcia,EAAAA,GAAAA,GAAOsG,EAAMxkB,MAAMiE,YAAnBia,CAAgCqtW,GAAQ70W,GACjHrhB,EAAAA,cAAoB8zX,GAAc,CAAEpgO,OAAQvkI,EAAMukI,OAAQ8gO,gBAAiBrlW,EAAM3vB,MAAM41X,UAAU/zW,GAAQA,MAAOA,EAAO3S,UAAWwnX,EAAKxnX,UAAWC,YAAaunX,EAAKvnX,YAAaxO,MAAO+1X,EAAK/1X,MAAOG,UAAW41X,EAAK51X,UAAW+8W,cAAe6Y,EAAK7Y,cAAeqX,UAAWwB,EAAKxB,UAAWT,WAAY9kW,EAAMxkB,MAAMspX,YAAciC,EAAKjmX,KAAOimX,EAAKjmX,KAAQjQ,EAAAA,cAAoBA,EAAAA,SAAgB,KAC5XA,EAAAA,cAAoB,MAAO,CAAEM,UAAW,0CAA4CN,EAAAA,eAAqBk2X,EAAKrmX,QAAUqmX,EAAKrmX,OAAS7P,EAAAA,cAAoB,KAAM,CAAEM,UAAW,gBAAkB41X,EAAKrmX,SACpM7P,EAAAA,cAAoB,MAAO,CAAEM,UAAW,sCAAwC41X,EAAKp6W,QACzFqT,EAAMs6P,sBAAwBzpR,EAAAA,cAAoB4nQ,GAAAA,EAAkB,MAC5E,KACR,EAIAutH,EAAW18V,UAAY,CACnB54B,GAAI64B,EAAAA,OACJv4B,MAAOu4B,EAAAA,OACPp4B,UAAWo4B,EAAAA,OACXtQ,IAAKsQ,EAAAA,OACLt2B,IAAKs2B,EAAAA,OACL+wC,QAAS/wC,EAAAA,OACTm9V,YAAan9V,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SACpDu5L,UAAWv5L,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAClD9pB,YAAa8pB,EAAAA,OACbxZ,MAAOwZ,EAAAA,MACP08V,UAAW18V,EAAAA,MACXo9V,SAAUp9V,EAAAA,MAAgB,CAAC,SAAU,MAAO,eAAgB,YAAa,UACzEk9V,aAAcl9V,EAAAA,KACdu7V,WAAYv7V,EAAAA,MAKhBy8V,EAAW5uV,YAAc,kBAClB4uV,CACX,CApIgC,CAoI9Bn1X,EAAAA,sBCvJSm2X,GAAoB,CAC3B,SAAY,kCACZ,WAAc,qCAKPC,GAAwB,CAC/B,MAAS,cACT,OAAU,gBC1BHC,GAAuBr2X,EAAAA,YAAiB,SAAU2K,EAAOnK,IAChEmiC,EAAAA,GAAAA,GAAgBC,GAAAA,GAChB,IAAI0+M,EAAathP,EAAAA,OAAa,MAC9BA,EAAAA,oBAA0BQ,GAAK,WAAc,MAAQ,CACjDs0B,QAASwsN,EAAWxgP,QACpB,IACJ,IAAIR,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MAAO+L,EAAWvB,EAAMuB,SAAUvF,EAAWgE,EAAMhE,SAAUsJ,EAAOtF,EAAMsF,KAAMzO,EAASmJ,EAAMnJ,OAAQsJ,EAAWH,EAAMG,SAAUjJ,EAAO8I,EAAM9I,KAAMujC,EAAUz6B,EAAMy6B,QAAS56B,EAAOG,EAAMH,KAAM3K,EAAK8K,EAAM9K,GAAIsM,EAAWxB,EAAMwB,SAAU+rB,EAAYvtB,EAAMutB,UAAW7W,EAAQ1W,EAAM0W,MAAO2W,EAAWrtB,EAAMqtB,SACzVs+V,EAAct2X,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,oBAAqB,CACjF,aAAc3vB,EACd,aAAcvF,GACfrG,EAAY,GAAG,CAAC4L,EAAUvF,EAAUrG,IACnCitC,EAAcvtC,EAAAA,aAAkB,SAAUW,GACtCwL,QAAsBxM,IAAV0hB,IAAwB1a,GACpCwF,EAASxL,EAAO0gB,EAExB,GAAG,CAAClV,EAAUkV,EAAO1a,IACjBkwB,EAAgB72B,EAAAA,aAAkB,SAAUW,GACxCu3B,QAAuBv4B,IAAV0hB,IAAwB1a,GACrCuxB,EAAUv3B,EAAO0gB,EAEzB,GAAG,CAAC6W,EAAW7W,EAAO1a,IAClBu2R,EAAW17R,EACX+qP,EAAWt8O,EACXsmX,EAAiBv2X,EAAAA,cAAoB,OAAQ,CAAEQ,IAAK8gP,EAAYhhP,UAAWg2X,EAAan2X,MAAOA,EAAOqE,KAAM,OAAQ3E,GAAIA,EAAIm4B,SAAUA,EAAUl2B,QAASyrC,EAAarV,UAAWrB,EAAe,eAAgB3qB,EAAU,gBAAiBvF,GAAY4lP,EAAWvsP,EAAAA,cAAoBusP,EAAU,CAAEr2N,UAAW7U,EAAOpR,KAAMnF,IACzT9K,EAAAA,cAAoBA,EAAAA,SAAgB,MAChC6B,GAAQujC,IAAYplC,EAAAA,cAAoBszC,EAAAA,EAAU,CAAEhzC,UAAW,yBAA0BiC,KAAMV,EAAMA,KAAMujC,EAASp/B,KAAM,WAC3HwE,GAAQxK,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,yBAA0BH,MAAO,CAAE05S,WAAY,SAAYrvS,KACpH,YAAoB7K,IAAbu9R,EAAyBA,EAAShqQ,UAAKvzB,EAAW42X,EAAe5rX,GAAS4rX,CACrF,IAIAF,GAAqB59V,UAAY,CAC7Bn4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACP74B,GAAI64B,EAAAA,OACJ/xB,SAAU+xB,EAAAA,KACVxsB,SAAUwsB,EAAAA,KACV72B,KAAM62B,EAAAA,OACN0M,QAAS8gN,EAAAA,GACT17O,KAAMkuB,EAAAA,OACNV,SAAUU,EAAAA,QAEd29V,GAAqBvgW,aAdF,CACfkC,SAAU,GAcdq+V,GAAqB9vV,YAAc,iCCpDnC,IAAIjlB,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EA6BWq9V,GAAmBx2X,EAAAA,YAAiB,SAAU2K,EAAOnK,IAC5DmiC,EAAAA,GAAAA,GAAgBC,GAAAA,GAChB,IAAI0+M,EAAathP,EAAAA,OAAa,MAC1BosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,UACX+wP,EAAAA,GAAAA,GAAyBvQ,EAAWxgP,QAE5C,GAAG,IACCurP,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB4zB,MAAO03N,EACP,GAAG,CAACA,IACRpsP,EAAAA,oBAA0BQ,EAAK6rP,GAC/B,IAAInoP,EAAKyG,EAAMsiP,aAAcA,OAAsB,IAAP/oP,EAAgB4xB,GAAam3N,aAAe/oP,EAAII,EAAKqG,EAAM8rX,SAAUA,OAAkB,IAAPnyX,EAAgBwxB,GAAa2gW,SAAWnyX,EAAIK,EAAKgG,EAAMuF,OAAQA,OAAgB,IAAPvL,EAAgBmxB,GAAa5lB,OAASvL,EAAIrE,EAAYqK,EAAMrK,UAAW4e,EAAQvU,EAAMuU,MAAOjP,EAAOtF,EAAMsF,KAAMu7O,EAAa7gP,EAAM6gP,WAAY7kP,EAAWgE,EAAMhE,SAAUxG,EAAQwK,EAAMxK,MAAON,EAAK8K,EAAM9K,GAAIsM,EAAWxB,EAAMwB,SAAU+rB,EAAYvtB,EAAMutB,UAC1bw+V,EAAQ12X,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,GAAAA,IAAQ,GAAG,IACtDxY,GAAMs+N,EAAAA,GAAAA,GAAOpF,EAAY32O,EAAMyd,KAC/BxX,EAAW5Q,EAAAA,SAAc,WACzB,OAAuB,OAAnB2K,EAAMiG,UAGc,OAAfjG,EAAMw+F,KAFJ,KAMAx+F,EAAMw+F,MAAQx+F,EAAMiG,UAAYklB,GAAallB,QAE5D,GAAG,CAACjG,EAAMiG,SAAUjG,EAAMw+F,OACtB3iG,EAAaxG,EAAAA,SAAc,WAAc,OAAO2K,EAAMnE,YAAcsvB,GAAatvB,UAAY,GAAG,CAACmE,EAAMnE,aACvGmwX,EAAa32X,EAAAA,SAAc,WAC3B,IAAIkE,EACJ,OAAO23B,EAAAA,EAAAA,GAAW,eAAgBu6V,GAAsBnpI,GAAekpI,GAAkBM,KAAYvyX,EAAK,CAAC,GACpG,gBAAgByM,OAAOC,IAAaA,EACvC1M,EAAG,gBAAgByM,OAAOC,EAAU,KAAKD,OAAOnK,IAAe6wB,QAAQzmB,GAAYpK,GACnFtC,EAAG,uBAAyBgM,EAC5BhM,EAAG,cAAgByC,EACnBzC,GAAK5D,EACb,GAAG,CAAC2sP,EAAczmP,EAAYoK,EAAU6lX,EAAUvmX,EAAQvJ,EAAUrG,IAChEs2X,EAAsB52X,EAAAA,aAAkB,SAAUgrP,EAAiB3pO,GAC9DnC,IAGAA,EAAMmC,GAAO1a,UAAYwF,IAC1BknM,EAAAA,GAAAA,GAAclnM,EAAU6+O,EAAiBqB,IAAuB,CAC5Du0H,WAAY1hW,EAAMmC,GAClB6U,UAAW7U,GAGvB,GAAG,CAACnC,EAAO/S,IACPw0W,EAAe3gX,EAAAA,aAAkB,SAAUW,EAAO+pP,GAClDksI,EAAoBj2X,EAAO+pP,EAC/B,GAAG,CAACksI,IACA//V,EAAgB72B,EAAAA,aAAkB,SAAUW,EAAO+pP,GACnD,OAAQ/pP,EAAMm2B,SACV,KAAKtD,EAAAA,EAAK8L,MACV,KAAK9L,EAAAA,EAAKytB,MACN21U,EAAoBj2X,EAAO+pP,GAC3B/pP,EAAM+gB,kBAKd2xL,EAAAA,GAAAA,GAAcn7K,EAAWv3B,EAAO0rP,SAAuB1sP,EAC3D,GAAG,CAACi3X,EAAqB1+V,IACzB,OAAQl4B,EAAAA,cAAoB,MAAO,CAAEQ,IAAK8gP,EAAYhhP,UAAWq2X,EAAYx2X,MAAOA,EAAON,GAAIA,GAAM62X,EAAOtuW,IAAKA,GAAOlJ,GAAUA,EAAMxS,KAAI,SAAUooB,EAASzT,GAC3J,OAAQrhB,EAAAA,cAAoBq2X,GAAsB/0W,GAAS,CAAC,EAAGwT,EAAS,CAAEiD,IAAK1W,EAAOA,MAAOA,EAAOxhB,GAAI,GAAG8Q,OAAO9Q,GAAM62X,EAAO,KAAK/lX,OAAO0Q,GAAQ1a,SAAUA,GAAYmuB,EAAQnuB,SAAUuF,SAAU4oB,EAAQ5oB,SAAUpB,SAAUgqB,EAAS7kB,KAAMA,EAAMzO,OAAQgqP,EAAYr/O,SAAUw0W,EAAczoV,UAAWrB,IACjT,IACJ,IACIf,GAAe,CACftvB,WAAY,UACZoK,SAAU,OACV6lX,SAAU,WACVxpI,aAAc,QACd/8O,QAAQ,GAEZsmX,GAAiB/9V,UAAY,CACzBn4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACP74B,GAAI64B,EAAAA,OACJtQ,IAAKsQ,EAAAA,OACLlyB,WAAYkyB,EAAAA,MAAgB,CACxB,UAAW,YAAa,WACxB,OAAQ,UAAW,UACnB,QAAS,OAAQ,QAAS,YAE9BywE,KAAMzwE,EAAAA,MAAgB,CAAC,QAAS,SAChC9nB,SAAU8nB,EAAAA,MAAgB,CAAC,QAAS,SACpC+9V,SAAU/9V,EAAAA,MAAgB,CAAC,WAAY,eACvCxoB,OAAQwoB,EAAAA,KACR/xB,SAAU+xB,EAAAA,KACVxsB,SAAUwsB,EAAAA,OACVvsB,SAAUusB,EAAAA,MAEd89V,GAAiB1gW,aAAeA,GAChC0gW,GAAiBjwV,YAAc,uDCpI3BjlB,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAgCW/R,GAAapnB,EAAAA,YAAiB,SAAU2K,EAAOnK,IACtDmiC,EAAAA,GAAAA,iBAAgBC,GAAAA,GAChB,IAAI0+M,EAAathP,EAAAA,OAAa,MAC1BqsP,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB,GAAG,IACPd,EAAAA,oBAA0BQ,EAAK6rP,GAC/B,IAAI/rP,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MAAON,EAAK8K,EAAM9K,GAAIK,EAAWyK,EAAMzK,SAAUkC,EAAMuI,EAAMvI,IACxGy0X,EAAW72X,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,GAAAA,IAAQ,GAAG,IACzD2tN,EAASvuP,EAAAA,SAAc,WAAc,OAAO2K,EAAMgiN,OAAShiN,EAAMgiN,MAAMjnL,WAAa/6B,EAAMgiN,MAAMjnL,WAAa5P,GAAay4N,MAAQ,GAAG,CAAC5jP,EAAMgiN,QAC5ImqK,EAAS92X,EAAAA,SAAc,WAAc,OAAO2K,EAAMgiN,OAAShiN,EAAMgiN,MAAMhnL,SAAWh7B,EAAMgiN,MAAMhnL,SAAW7P,GAAaghW,MAAQ,GAAG,CAACnsX,EAAMgiN,QACxIoqK,EAAoB/2X,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,gBAAiB,CACnF,wBAAoC,UAAX0yN,EACzB,yBAAqC,WAAXA,EAC1B,sBAAkC,QAAXA,EACvB,0BAAsC,YAAXA,EAC3B,sBAAkC,QAAXuoI,EACvB,uBAAmC,WAAXA,EACxB,oBAAgC,WAAXA,EACrB,wBAAoC,YAAXA,GAC1Bx2X,EAAY,GAAG,CAACiuP,EAAQuoI,EAAQx2X,IAC/B02X,EAAW50X,EACT,GAAGuO,OAA2B,kBAAbvO,EAAIilB,KAAoBjlB,EAAIilB,KAAO,KAAOjlB,EAAIilB,MAAQ,IAAM,GAAG1W,OAA2B,kBAAbvO,EAAIklB,KAAoBllB,EAAIklB,KAAO,KAAOllB,EAAIklB,WAC5I3nB,EACFs3X,EAAwBtsX,EAAM0c,MAAQ1c,EAAM0c,KAAK3a,KAAI,SAAU8a,GAAO,MAAO,GAAG7W,OAA6B,kBAAf6W,EAAI1f,OAAsB0f,EAAI1f,OAAS,KAAO0f,EAAI1f,OAAS,IAAGuiD,KAAK,KACjK6sU,EAA2BvsX,EAAM2c,MAAQ3c,EAAM2c,KAAK5a,KAAI,SAAU+a,GAAO,MAAO,GAAG9W,OAA4B,kBAAd8W,EAAI3gB,MAAqB2gB,EAAI3gB,MAAQ,KAAO2gB,EAAI3gB,MAAQ,IAAGujD,KAAK,KACjK8sU,EAAmB71W,GAAS,CAAElf,IAAK40X,EAAU/D,oBAAqBiE,EAA0BhE,iBAAkB+D,GAAyB92X,GAC3I,OAAQH,EAAAA,cAAoB,MAAO,CAAEQ,IAAK8gP,EAAYhhP,UAAWy2X,EAAmB52X,MAAOg3X,EAAkBt3X,GAAIA,GAAMg3X,GAAY32X,EACvI,IACI41B,GAAe,CACfy4N,OAAQ,UACRuoI,OAAQ,UACR10X,SAAKzC,GAETynB,GAAWqR,UAAY,CACnBn4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPx4B,SAAUw4B,EAAAA,IACV74B,GAAI64B,EAAAA,OACJt2B,IAAKs2B,EAAAA,MAAgB,CACjBrR,KAAMqR,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC7C+wC,QAAS/wC,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,WAEpDi0L,MAAOj0L,EAAAA,MAAgB,CACnBiN,SAAUjN,EAAAA,MAAgB,CAAC,MAAO,SAAU,SAAU,YACtDgN,WAAYhN,EAAAA,MAAgB,CAAC,QAAS,SAAU,MAAO,eAG/DtR,GAAW0O,aAAeA,GAC1B1O,GAAWmf,YAAc,uBC3FzB,IAAIjlB,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EA+BW5R,GAAiBvnB,EAAAA,YAAiB,SAAU2K,EAAOnK,IAC1DmiC,EAAAA,GAAAA,iBAAgBC,GAAAA,GAChB,IAAI0+M,EAAathP,EAAAA,OAAa,MAC1BqsP,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB,GAAG,IACPd,EAAAA,oBAA0BQ,EAAK6rP,GAC/B,IAAI/rP,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MAAON,EAAK8K,EAAM9K,GAAIK,EAAWyK,EAAMzK,SAAUsnB,EAAM7c,EAAM6c,IAAKC,EAAM9c,EAAM8c,IAAK+oM,EAAU7lN,EAAM6lN,QAAS9oM,EAAU/c,EAAM+c,QACvK+7O,EAASzjQ,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,GAAAA,IAAQ,GAAG,IACvDw2V,EAAuB91W,GAAS,CAAE+1W,SAAU,GAAG1mX,OAAO6W,GAAO,OAAQ,OAAO7W,OAAO8W,GAAO,OAAQ,OAAO9W,OAAO6/M,EAAU,QAAUA,EAAU,OAAQ,OAAO7/M,OAAO+W,EAAU,QAAUA,EAAU,SAAWvnB,GACjN,OAAQH,EAAAA,cAAoB,MAAO,CAAEQ,IAAK8gP,EAAYhhP,UAAWA,EAAWH,MAAOi3X,EAAsBv3X,GAAIA,GAAM4jQ,GAAUvjQ,EACjI,IACAqnB,GAAekR,UAAY,CACvBn4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPx4B,SAAUw4B,EAAAA,IACV74B,GAAI64B,EAAAA,QAERnR,GAAegf,YAAc,2BCnDtB,IAAI+wV,GAAqBt3X,EAAAA,YAAiB,SAAU2K,EAAOnK,IAC9DmiC,EAAAA,GAAAA,iBAAgBC,GAAAA,GAChB,IAAI/b,EAAS7mB,EAAAA,OAAa,MACtBu3X,EAAkBv3X,EAAAA,OAAa,MAC/B00B,EAAQ10B,EAAAA,aAAkB,WACtBu3X,EAAgBz2X,SAChBy2X,EAAgBz2X,QAAQ4zB,OAEhC,GAAG,CAAC6iW,IAOJ,OANAv3X,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASyiW,EAAgBz2X,QACzB4zB,MAAOA,EACP/pB,MAAOA,EACP,IACJ3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IAC5Dd,EAAAA,cAAoB,KAAM,CAAEQ,IAAK+2X,EAAiB13X,GAAI8K,EAAM9K,GAAIM,MAAOwK,EAAMxK,MAAOG,WAAWu7B,EAAAA,EAAAA,GAAW,oBAAqB,CAC/H,yBAA0BlxB,EAAM6sX,YAChC,yBAA0B7sX,EAAM8sX,YACjC9sX,EAAMrK,YAAcqK,EAAMzK,SACrC,IACIu4B,GAAY,CACZ54B,GAAI64B,EAAAA,OACJp4B,UAAWo4B,EAAAA,OACXx4B,SAAUw4B,EAAAA,IACVv4B,MAAOu4B,EAAAA,QAEX4+V,GAAmB/wV,YAAc,+BACjC+wV,GAAmB7+V,UAAYA,GC1BxB,IAAIi/V,GAAsB13X,EAAAA,YAAiB,SAAU2K,EAAOnK,IAC/DmiC,EAAAA,GAAAA,iBAAgBC,GAAAA,GAChB,IAAI/b,EAAS7mB,EAAAA,OAAa,MACtB23X,EAAyB33X,EAAAA,OAAa,MAS1C,OARAA,EAAAA,oBAA0B6mB,GAAQ,WAC9B,IAAI3iB,EACJ,MAAQ,CACJ4wB,SAAoD,QAAzC5wB,EAAKyzX,EAAuB72X,eAA4B,IAAPoD,OAAgB,EAASA,EAAG4wB,UAAY,KACpGnqB,MAAOA,EAEf,IACA3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IAC5Dd,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE9yC,IAAKm3X,EAAwB93X,GAAI8K,EAAM9K,GAAI,eAAe,EAAMm4B,SAAUrtB,EAAMqtB,SAAU73B,MAAOwK,EAAMxK,MAAOoC,KAAoB,QAAdoI,EAAMyd,IAAgB,eAAiB,gBAAiBvmB,KAAoB,QAAd8I,EAAMyd,IAAgBqoB,EAAAA,IAAkBD,EAAAA,IAAkBlwC,UAAW,8BAA+B0F,KAAM,UACxU,IACIyyB,GAAY,CACZ54B,GAAI64B,EAAAA,OACJp4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPV,SAAUU,EAAAA,OACVtQ,IAAKsQ,EAAAA,QAETg/V,GAAoBnxV,YAAc,gCAClCmxV,GAAoBj/V,UAAYA,kBCwBrBm/V,GAAiB53X,EAAAA,YAAiB,SAAU2K,EAAOnK,IAC1DmiC,EAAAA,GAAAA,iBAAgBC,GAAAA,GAChB,IAAI/b,EAAS7mB,EAAAA,OAAa,MACtB63X,EAAU73X,EAAAA,OAAa,MACvB00B,EAAQ10B,EAAAA,aAAkB,WACtB63X,EAAQ/2X,SACR+2X,EAAQ/2X,QAAQ4zB,OAExB,GAAG,CAACmjW,IACJ73X,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAAS+iW,EAAQ/2X,QACjB4zB,MAAOA,EACP/pB,MAAOA,EACP,IACJ3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAAIgvR,EAAmB9vR,EAAAA,aAAkB,SAAUW,GAC3CgK,EAAM9K,KACNwzM,EAAAA,GAAAA,GAAc1oM,EAAMqzW,aAAcr9W,EAAOA,EAAMkmB,OAAQ,CAAEhnB,GAAI8K,EAAM9K,IAE3E,GAAG,CAAC8K,EAAMqzW,eACNnnV,EAAgB72B,EAAAA,aAAkB,SAAUW,GACxCgK,EAAM9K,KACNwzM,EAAAA,GAAAA,GAAc1oM,EAAMutB,UAAWv3B,EAAOA,EAAMkmB,OAAQ,CAAEhnB,GAAI8K,EAAM9K,IAExE,GAAG,CAAC8K,EAAMutB,YACV,OAAQl4B,EAAAA,cAAoB,OAAQ,CAAE,eAAgB2K,EAAMmtX,YAAcntX,EAAMmtX,YAAcntX,EAAMojD,OAAQvpD,KAAM,OAAQ3E,GAAI8K,EAAM9K,GAAIW,IAAKq3X,EAAS13X,MAAOwK,EAAMxK,MAAOioB,KAAKs+N,EAAAA,GAAAA,GAAOmxI,EAASltX,EAAMyd,KAAM4P,UAAUkvC,EAAAA,GAAAA,GAAYv8D,EAAMqtB,SAAUrtB,EAAMhE,UAAWrG,WAAWu7B,EAAAA,EAAAA,GAAW,CAChR,yBAA0BlxB,EAAM2mG,QAChC,qBAAsB3mG,EAAM2mG,QAC5B,kCAAkD3xG,IAApBgL,EAAMg7O,WAA2Bh7O,EAAMH,KACrE,8BAA8C7K,IAApBgL,EAAMg7O,YAA4Bh7O,EAAMH,KAClE,aAAcG,EAAMhE,WACpB7E,QAASguR,EAAkB53P,UAAWrB,GAC1ClsB,EAAMg7O,UAEE3lP,EAAAA,cAAoB,OAAQ,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,SAAUlxB,EAAMg7O,aACtEh7O,EAAM9I,KAAO8I,EAAM9I,KAAO,GAChC8I,EAAMH,MACFxK,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,0BAA4BqK,EAAMH,MACvF,IACIiuB,GAAY,CACZ54B,GAAI64B,EAAAA,OACJp4B,UAAWo4B,EAAAA,OACXV,SAAUU,EAAAA,OACVv4B,MAAOu4B,EAAAA,OACPtQ,IAAKsQ,EAAAA,OACL/xB,SAAU+xB,EAAAA,KACVluB,KAAMkuB,EAAAA,OACN72B,KAAM62B,EAAAA,KACNitN,UAAWjtN,EAAAA,OACX52B,QAAS42B,EAAAA,KACTo/V,YAAap/V,EAAAA,MAEjBk/V,GAAerxV,YAAc,2BAE7BqxV,GAAen/V,UAAYA,GCrGpB,IAAIs/V,GAAwB/3X,EAAAA,YAAiB,SAAU2K,EAAOnK,IACjEmiC,EAAAA,GAAAA,iBAAgBC,GAAAA,GAChB,IAAI/b,EAAS7mB,EAAAA,OAAa,MACtBg4X,EAAiBh4X,EAAAA,OAAa,MAMlC,OALAA,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASkjW,EAAel3X,QACxB6J,MAAOA,EACP,IACJ3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IAC5Dd,EAAAA,cAAoBA,EAAAA,SAAgB,KAAM2K,EAAMstX,SAAYj4X,EAAAA,cAAoB,KAAM,CAAEH,GAAI8K,EAAM9K,GAAIW,IAAKw3X,EAAgB73X,MAAOwK,EAAMxK,MAAOioB,KAAKs+N,EAAAA,GAAAA,GAAOsxI,EAAgBrtX,EAAMyd,KAAM4P,UAAUkvC,EAAAA,GAAAA,GAAYv8D,EAAMqtB,SAAUrtB,EAAMhE,UAAWrG,WAAWu7B,EAAAA,EAAAA,GAAW,mCAAoC,CACxS,aAAclxB,EAAMhE,UACrBgE,EAAMrK,YAAcqK,EAAMzK,UAExBF,EAAAA,cAAoB,KAAM,CAAEH,GAAI8K,EAAM9K,GAAIW,IAAKw3X,EAAgB73X,MAAOwK,EAAMxK,MAAOioB,KAAKs+N,EAAAA,GAAAA,GAAOsxI,EAAgBrtX,EAAMyd,KAAM4P,UAAUkvC,EAAAA,GAAAA,GAAYv8D,EAAMqtB,SAAUrtB,EAAMhE,UAAWrG,WAAWu7B,EAAAA,EAAAA,GAAW,sCAAuC,CACxO,aAAclxB,EAAMhE,UACrBgE,EAAMrK,YAAcqK,EAAMzK,UAC7C,IACIu4B,GAAY,CACZ54B,GAAI64B,EAAAA,OACJp4B,UAAWo4B,EAAAA,OACXx4B,SAAUw4B,EAAAA,QACVV,SAAUU,EAAAA,OACVv4B,MAAOu4B,EAAAA,OACPtQ,IAAKsQ,EAAAA,OACL/xB,SAAU+xB,EAAAA,MAEdq/V,GAAsBxxV,YAAc,kCACpCwxV,GAAsBt/V,UAAYA,GCnClC,IAAInX,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAaW++V,GAAal4X,EAAAA,YAAiB,SAAU2K,EAAOnK,GACtD,IAAI0D,GACJy+B,EAAAA,GAAAA,iBAAgBC,GAAAA,GAChB,IAAI/b,EAAS7mB,EAAAA,OAAa,MACtBm4X,EAAgBn4X,EAAAA,OAAa,MAC7Bo4X,EAAuBp4X,EAAAA,SAAc,WAAc,OAAO2K,EAAM0tX,uBAAyBN,EAAuB,GAAG,CAACptX,EAAM0tX,wBAC1HC,EAAoBt4X,EAAAA,SAAc,WAAc,OAAO2K,EAAM4tX,oBAAsBjB,EAAoB,GAAG,CAAC3sX,EAAM4tX,qBACjHC,EAAqBx4X,EAAAA,SAAc,WAAc,OAAO2K,EAAM8tX,qBAAuBf,EAAqB,GAAG,CAAC/sX,EAAM8tX,sBACpHC,EAAgB14X,EAAAA,SAAc,WAAc,OAAO2K,EAAMguX,gBAAkBf,EAAgB,GAAG,CAACjtX,EAAMguX,iBACrGjkW,EAAQ10B,EAAAA,aAAkB,WACtBm4X,EAAcr3X,SACdq3X,EAAcr3X,QAAQ4zB,OAE9B,GAAG,CAACyjW,IACAxxX,EAAW3G,EAAAA,SAAc,WAAc,OAAO2K,EAAMhE,WAAY,CAAO,GAAG,CAACgE,EAAMhE,WACrF3G,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASqjW,EAAcr3X,QACvB4zB,MAAOA,EACP/pB,MAAOA,EACP,IACJ3K,EAAAA,oBAA0BQ,GAAK,WAAc,OAAOqmB,EAAO/lB,OAAS,IACpE,IAAIsnB,GAAMs+N,EAAAA,GAAAA,GAAOyxI,EAAextX,EAAMyd,KAClC0nQ,EAAmB,SAAUnvR,GACzBkmB,EAAO/lB,UACPuyM,EAAAA,GAAAA,GAAc1oM,EAAMqzW,aAAcr9W,EAAOA,EAAMkmB,OAAQ,CAAEhnB,GAAIc,EAAMkmB,OAAOhnB,IAElF,EACIg3B,EAAgB,SAAUl2B,GACtBkmB,EAAO/lB,UACPuyM,EAAAA,GAAAA,GAAc1oM,EAAMutB,UAAWv3B,EAAOA,EAAMkmB,OAAQ,CAAEhnB,GAAIc,EAAMkmB,OAAOhnB,IAE/E,EACIyoP,EAAc39O,EAAM29O,YAAcxyN,GAAawyN,WAC/CswI,EAAajuX,EAAMiuX,WAAa9iW,GAAa8iW,UAC7CC,EAAkBluX,EAAMkuX,gBAAkB/iW,GAAa+iW,eACvDvmX,EAAa3H,EAAM2H,WAAawjB,GAAaxjB,UAC7CtM,EAAO2E,EAAM3E,MAAQ,SACzB,OAAQhG,EAAAA,cAAoB,MAAO,CAAE,aAAc2K,EAAMi9O,UAAW/nP,GAAI8K,EAAM9K,GAAIM,MAAOwK,EAAMxK,MAAOK,IAAK23X,EAAe/vW,IAAKA,EAAK9nB,WAAWu7B,EAAAA,EAAAA,GAAW,kCAAmC33B,EAAK,CACtL,QAAiB,QAARkkB,EACT,aAAczhB,EACd,mBAAoBgE,EAAM3E,MAE9B9B,EAAG,gBAAgByM,OAAOk0B,GAAAA,EAAeC,QAAQ9+B,IAASA,IAASA,EACnE9B,GAAKyG,EAAMrK,YACfN,EAAAA,cAAoBo4X,EAAsB,CAAEH,UAAU,GAClDj4X,EAAAA,cAAoBA,EAAAA,SAAgB,KAAM2K,EAAM3F,KAAK0H,KAAI,SAAUuD,EAAMoR,EAAOrc,GAC5E,IAAI+yB,EAAM9nB,EAAKq4O,GACf,GAAc,IAAVjnO,EACA,OAAQrhB,EAAAA,cAAoBs4X,EAAmB,CAAEvgW,IAAKA,EAAKy/V,aAAa,EAAMC,WAAYzyX,EAAKsJ,OAAS,IAAM+S,GAC1GrhB,EAAAA,cAAoB04X,EAAep3W,GAAS,CAAEysC,OAAQ/oD,EAAKsJ,OAAS,IAAM+S,EAAOiwF,SAAS,EAAMzxG,GAAIuzB,OAAO2E,GAAMl2B,KAAMoO,EAAK2oX,SAAcj5X,EAAWgmP,UAAW11O,EAAK4oX,GAAkBzlW,OAAOnjB,EAAK4oX,SAAmBl5X,EAAW6K,KAAMyF,EAAKqC,GAAa8gB,OAAOnjB,EAAKqC,SAAc3S,EAAWgH,SAAUsJ,EAAKtJ,WAAY,EAAOq3W,aAAcluF,EAAkB53P,UAAWrB,GAAiBlsB,IAExY,MACJ3K,EAAAA,cAAoBo4X,EAAsB,CAAEH,UAAU,GAClDj4X,EAAAA,cAAoBA,EAAAA,SAAgB,KAAM2K,EAAM3F,KAAK0H,KAAI,SAAUuD,EAAMoR,EAAOrc,GAC5E,IAAI+yB,EAAM9nB,EAAKq4O,GACf,GAAc,IAAVjnO,EACA,OAAQrhB,EAAAA,cAAoBs4X,EAAmB,CAAEvgW,IAAKA,EAAKy/V,aAAa,EAAOC,WAAYzyX,EAAKsJ,OAAS,IAAM+S,GAC3GrhB,EAAAA,cAAoBw4X,EAAoB,CAAEpwW,IAAKA,IAC/CpoB,EAAAA,cAAoB04X,EAAep3W,GAAS,CAAEysC,OAAQ/oD,EAAKsJ,OAAS,IAAM+S,EAAOiwF,SAAS,EAAOzxG,GAAIuzB,OAAO2E,GAAMl2B,KAAMoO,EAAK2oX,SAAcj5X,EAAWgmP,UAAW11O,EAAK4oX,GAAkBzlW,OAAOnjB,EAAK4oX,SAAmBl5X,EAAW6K,KAAMyF,EAAKqC,GAAa8gB,OAAOnjB,EAAKqC,SAAc3S,EAAWgH,SAAUsJ,EAAKtJ,WAAY,EAAOq3W,aAAcluF,EAAkB53P,UAAWrB,GAAiBlsB,IAEzY,MACZ,IACI8tB,GAAY,CACZ54B,GAAI64B,EAAAA,OACJv4B,MAAOu4B,EAAAA,OACPp4B,UAAWo4B,EAAAA,OACX2/V,sBAAuB3/V,EAAAA,YACvB6/V,mBAAoB7/V,EAAAA,YACpB+/V,oBAAqB//V,EAAAA,YACrBigW,eAAgBjgW,EAAAA,YAChB1zB,KAAM0zB,EAAAA,QAAkBA,EAAAA,MAAgB,CACpC74B,GAAI64B,EAAAA,OACJluB,KAAMkuB,EAAAA,OACN72B,KAAM62B,EAAAA,IACNitN,UAAWjtN,EAAAA,UAEftQ,IAAKsQ,EAAAA,MAAgB,CAAC,MAAO,QAC7B/xB,SAAU+xB,EAAAA,KACV4vN,WAAY5vN,EAAAA,OACZpmB,UAAWomB,EAAAA,OACXkgW,UAAWlgW,EAAAA,OACXmgW,eAAgBngW,EAAAA,OAChBslV,aAActlV,EAAAA,KACdkvN,UAAWlvN,EAAAA,QAEX5C,GAAe,CACfwyN,WAAY,KACZh2O,UAAW,OACXsmX,UAAW,OACXC,eAAgB,aAEpBX,GAAW3xV,YAAc,uBAEzB2xV,GAAWz/V,UAAYA,GACvBy/V,GAAWpiW,aAAeA,wECzGfgjW,GAAe,SAAUnuX,GAChC,IACIzG,EAAKyG,EAAMu6D,UAAWz4D,EAAQvI,EAAGuI,MAAOssX,EAAW70X,EAAG60X,SAAUrkT,EAAUxwE,EAAGwwE,QAAS6gC,EAASrxG,EAAGqxG,OAAQhsD,EAAcrlD,EAAGqlD,YAC3HjlD,EAAKtE,EAAAA,SAAe2K,EAAMu6D,UAAU5xD,SAAU,GAAQ0H,EAAO1W,EAAG,GAAI2lP,EAAU3lP,EAAG,GACjFK,EAAK3E,EAAAA,SAAe2K,EAAMu6D,UAAU5xD,UAAY3I,EAAM+6W,aAAcpyW,EAAS3O,EAAG,GAAIq0X,EAAYr0X,EAAG,GAYnGs0X,EAAc,SAAUt4X,GACxB,GAAIgK,EAAMosC,cAAe,CACrB,IAAImiV,EAAmB,CACnBr6V,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnBsmC,UAAWv6D,EAAMu6D,WAErBv6D,EAAMosC,cAAc7jB,UAAKvzB,EAAWu5X,EACxC,CACJ,EACIC,EAAW,WAAc,OAAQn5X,EAAAA,cAAoBA,EAAAA,SAAgB,KACrEA,EAAAA,cAAoBogX,GAAAA,EAAU,KAC1BpgX,EAAAA,cAAoB,MAAO,CAAEM,UAAW,sBACpCN,EAAAA,cAAoB,IAAK,KAAMupD,GAC/BgsD,GAAUA,EAAO7oG,KAAI,SAAUoyG,EAAOz9F,GAAS,OAAQrhB,EAAAA,cAAoBqgX,GAAAA,EAAW,CAAEtoV,IAAK1W,EAAOpI,IAAK6lG,EAAM7lG,KAAS,MAChIjZ,EAAAA,cAAoBmxX,GAAa,KAAMz8S,GAAWA,EAAQhoE,KAAI,SAAUoS,EAAQuC,GAAS,OAAQrhB,EAAAA,cAAoB,IAAK,CAAE+3B,IAAK1W,EAAO3I,KAAMoG,EAAOstC,IAAK9rD,UAAW,wEAAyEwB,QAASm3X,GAAen6W,EAAOtU,KAAQ,KAAO,EAChS,OAAQxK,EAAAA,cAAoB,MAAO,CAAE,cAAe,kBAAmBM,WAAWu7B,EAAAA,EAAAA,GAAW,kBAAmB,CAAE,cAAelxB,EAAM+6W,aAAepyW,KAClJtT,EAAAA,cAAoB8/W,GAAAA,EAAM,CAAE,YAAa,SAAU,mBAAoBn1W,EAAM9K,GAAI,cAAe,OAAQm4B,SAAUrtB,EAAMyuX,SAAU50X,KAAMmG,EAAM+6B,WAAa,WAAa,SAAU,gBAAiB/6B,EAAM+6W,aAAepyW,GACpNtT,EAAAA,cAAoB,OAAQ,CAAEG,MAAOwK,EAAM0uX,aAAc/4X,WAAWu7B,EAAAA,EAAAA,GAAW,0BAA2B,iBAAkB,CAAE,cAAelxB,EAAM+6B,YAAc,CAAE,cAAe/6B,EAAM2uX,aAAe3uX,EAAM+6B,YAAc,CAAE,eAAgB/6B,EAAM2uX,aAAe3uX,EAAM+6B,eACxQ1lC,EAAAA,cAAoB,MAAO,CAAEM,UAAW,gBACpCN,EAAAA,cAAoBixX,GAAY,KAC5BjxX,EAAAA,cAAoBkxX,GAAW,KAC3BlxX,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,iBAAmBmM,GAC5D9B,EAAM+6W,aAAe1lX,EAAAA,cAAoB,OAAQ,CAAE8B,QAAS,SAAUnB,GAAS,OAlClF,SAAUA,GAEvB,GADAspP,GAASjvO,GACLrQ,EAAMsH,SAAU,CAChB,IAAIsnX,EAAc,CACd16V,eAAgBl+B,EAChBi+B,YAAaj+B,EAAMi+B,YACnBsmC,UAAWv6D,EAAMu6D,WAErBv6D,EAAMsH,SAASihB,UAAKvzB,EAAW45X,EACnC,CACJ,CAwB0GC,CAAW74X,EAAQ,EAAGL,UAAW,qGACnHN,EAAAA,cAAoBi9P,GAAAA,EAAS,CAAEp7P,KAAM2uC,EAAAA,QAC7CuoV,GAAY/4X,EAAAA,cAAoBoxX,GAAc,KAAM2H,IACxDpuX,EAAM+6W,YACA1lX,EAAAA,cAAoB+kP,GAAAA,EAAQ,CAAEvD,wBAAyB72O,EAAMy3O,oBA1CtD,IA0CgGX,uBAAwB92O,EAAMy3O,oBA1C9H,IA0CwK6C,cAAe,WAAc,OAAO+zI,GAAU,EAAQ,EAAGt3I,cAAe,WAAc,OAAOs3I,GAAU,EAAO,GAAKh+W,EAAOm+W,IAAa,MACtTA,MACtB,EACAL,GAAargW,UAAY,CACrBxmB,SAAUymB,EAAAA,KACVqe,cAAere,EAAAA,MCzDZ,IAAI+gW,GAAgB,SAAUC,GAIjC,OAHmBA,EAAUnvW,MAAK,SAAU/gB,EAAGqpB,GAC3C,OAAOrpB,EAAEwiB,KAAKtN,UAAYmU,EAAE7G,KAAKtN,SACrC,GAEJ,EAIWi7W,GAAgB,SAAUC,GACjC,IAAIC,EAWJ,OAVgBD,EAAW1wX,QAAO,SAAUg+C,EAAKge,GAQ7C,OAPI20T,IAAa30T,EAAUl5C,KAAK4hB,eAC5BisV,EAAW30T,EAAUl5C,KAAK4hB,cAC1BsZ,EAAIz5B,KAAK,CAAEosW,SAAUA,GAAY30T,IAGjChe,EAAIz5B,KAAKy3C,GAENhe,CACX,GAAG,GAEP,mCCzBI5lC,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAQW2gW,GAAqB,SAAUnvX,GACtC,IAEI6hB,GAAOqoT,EAAAA,GAAAA,KACP3wU,EAAKlE,EAAAA,UAAe,GAAQ+5X,EAAY71X,EAAG,GAAI81X,EAAe91X,EAAG,GACjEI,EAAKtE,EAAAA,UAAe,GAAOi6X,EAAa31X,EAAG,GAAI41X,EAAgB51X,EAAG,GAClEK,EAAK3E,EAAAA,WAAkBm6X,EAAgBx1X,EAAG,GAAIy1X,EAAmBz1X,EAAG,GACpEG,EAAK9E,EAAAA,SAAe,GAAI6jG,EAAY/+F,EAAG,GAAIu1X,EAAev1X,EAAG,GAC7DI,EAAKlF,EAAAA,WAAkBs6X,EAAcp1X,EAAG,GAAIq1X,EAAiBr1X,EAAG,GAChEE,EAAKpF,EAAAA,SAAe,GAAIw6X,EAAcp1X,EAAG,GAAIq1X,EAAiBr1X,EAAG,GACjE0G,EAAK9L,EAAAA,SAAe,GAAI06X,EAAmB5uX,EAAG,GAAI6uX,EAAsB7uX,EAAG,GAC3E4U,EAAK1gB,EAAAA,SAAe,GAAI46X,EAAel6W,EAAG,GAAIm6W,EAAkBn6W,EAAG,GACnEG,EAAK7gB,EAAAA,WAAkB86X,EAAej6W,EAAG,GAAIk6W,EAAkBl6W,EAAG,GAClEgJ,EAAK7pB,EAAAA,WAAkBg7X,EAAgBnxW,EAAG,GAAIoxW,EAAmBpxW,EAAG,GACpEC,EAAK9pB,EAAAA,SAAe,CAAC,EAAG,EAAG,IAAKk7X,EAAkBpxW,EAAG,GAAIqxW,EAAqBrxW,EAAG,GACjFE,EAAKhqB,EAAAA,SAAe,GAAIo7X,EAAkBpxW,EAAG,GAAIqxW,EAAqBrxW,EAAG,GACzEG,EAAKnqB,EAAAA,SAAe,GAAIs7X,EAAanxW,EAAG,GAAIoxW,EAAgBpxW,EAAG,GAC/DqxW,EAAex7X,EAAAA,OAAa,MAC5By7X,EAAWz7X,EAAAA,OAAa,MACxB07X,EAAe17X,EAAAA,OAAa,MAC5B45X,EAAajvX,EAAMivX,WAAY+B,EAAahxX,EAAMgxX,WAAYhxH,EAAchgQ,EAAMggQ,YAAa5zN,EAAgBpsC,EAAMosC,cACrH6kV,EAAUtB,EAAc,GAAG3pX,OAAO2pX,EAAa,KAAO,GAAG3pX,OApB9B,IAoB+D,MAC1FmvB,EAAa9/B,EAAAA,OAAa,IAAI+gQ,GAAAA,EAAW,CACzC/oO,SAAU,EACVyiG,KAAM+gQ,EACNzsI,UAAW,CAAC,kCAEhB/uP,EAAAA,WAAgB,WACRw7X,EAAa16X,SACT6J,EAAMggQ,cACNluO,YAAW,WACP,IAAIo/V,EAAY/7V,EAAWh/B,QAAQwxD,MAC/BupU,GACAA,EAAUlnU,aAAa,WAAYvhC,OAAO,GAElD,GAAG,GACH0M,EAAWh/B,QAAQugQ,eAAiB,CAChCp8D,QAAS,CACL,WAAc62L,EACd,UAAaC,GACb,IAAO/8P,GACP,KAAQg9P,KAK5B,GAAG,CAACrxX,EAAMggQ,YAAaiwH,EAAcJ,IACrCx6X,EAAAA,WAAgB,WACZ8/B,EAAWh/B,QAAQ4yJ,QACvB,IAMA1zJ,EAAAA,WAAgB,WACZ,IAAIkE,EACAw/B,EAAiB7R,GAAAA,GAAarsB,OAAOm+B,gBAAkB,IAAIn+B,OAAOm+B,eAAes4V,IACjFC,EAAYT,EAAS36X,QACrBq7X,GAAwG,QAA3Fj4X,EAAsB,OAAjBs3X,QAA0C,IAAjBA,OAA0B,EAASA,EAAa16X,eAA4B,IAAPoD,OAAgB,EAASA,EAAG+tJ,cAAgB,EAOhK,OANIvuH,GAAkBw4V,GAClBx4V,EAAeG,QAAQq4V,GAE3BE,KACAH,KACAd,EAAmB,CAACgB,EAAU,GAAIA,IAC3B,WACHz4V,GAAkBA,EAAeI,YACrC,CACJ,GAAG,IACH9jC,EAAAA,WAAgB,WACZ,IAAIk8X,EAAYT,EAAS36X,QACrBu7X,EAAaH,GAAaA,EAAUh8X,SAAS06X,GACjD,GAAIyB,EAAY,CACZ,IAAIC,EAAWD,EAAWpqO,YAG1B,GADA+nO,IADkBn2R,GAAa,IAE3Bm3R,EAAe,CACf,IAAIuB,EAAavB,EAAc1sX,OAASguX,EAAY9B,EAAc8B,KAA4B,EAAbz4R,EAAkB,KAAO,KAC1Gq2R,EAAcqC,EAClB,EACoB,OAAdL,QAAoC,IAAdA,OAAuB,EAASA,EAAUjqO,cAAgBpuD,EAAa,KAAOq4R,EAAUh8X,SAASoO,OAASguX,IAElIF,KACAH,KACA5B,GAAgBgC,EAAWjuK,WAAaiuK,EAAWpqO,cAAgBuoO,EAAc6B,EAAWpqO,aAAgB,KAAQ,IAExHuqO,GAAgBH,EACpB,CACJ,GAAG,CAAC7B,EAAaF,EAAaM,IAC9B,IAAIkB,EAAU,SAAU1d,EAASC,EAAMptJ,GACnC,GAAIwqK,EAAS36X,QAAS,CAClB,IAAI27X,EAAehB,EAAS36X,QAAQZ,SAAS06X,EAAe,GACxD8B,EAAYD,GAAgBA,EAAazyV,UAAUg7C,SAAS,wBAC1D41S,EAAe,EACfA,EAAe,EACrB,GAAII,GAAiBA,EAAc1sX,QAAUouX,EACzC,OAEClC,EAAcE,GAAqBgC,GACpCC,KAEJC,GAAaF,EAAWzrK,EAC5B,CACJ,EACI8qK,GAAS,SAAU3d,EAASC,EAAMptJ,GAClC,GAAIwqK,EAAS36X,QAAS,CAClB,IAAI+7X,EAAepB,EAAS36X,SAAW26X,EAAS36X,QAAQZ,SAAS06X,EAAe,GAC5EkC,EAAYD,GAAgBA,EAAa7yV,UAAUg7C,SAAS,wBAC1D41S,EAAe,EACfA,EAAe,EACrB,GAAIkC,GAAa,EACb,OAEAA,EAAYpC,GACZqC,KAEJH,GAAaE,EAAW7rK,EAC5B,CACJ,EACI+qK,GAAS,SAAU5d,EAASC,EAAMptJ,GAClC,GAAIwqK,EAAS36X,QAAS,CAClB,GAAI85X,GAAgB,EAChB,OAIJoC,IAAS,EAFQ,EAEU,EADL,GAEtBJ,GAHiB,EAGQ3rK,EAC7B,CACJ,EACIjyF,GAAQ,SAAUo/O,EAASC,EAAMptJ,GACjC,GAAIwqK,EAAS36X,QAAS,CAClB,IAAI80J,EAAY6lO,EAAS36X,SAAW26X,EAAS36X,QAAQZ,SAASoO,OAAS,EACvE,GAAIsnJ,GAAaglO,EACb,OAEJ,IAAIqC,EAAmB17W,KAAK4M,MAAMynI,EAAY4kO,GAG9CwC,IAAS,EAAMpnO,EADQqnO,EAAmBzC,GADE,IAArByC,GAGvBL,GAAahnO,EAAWq7D,EAC5B,CACJ,EACImrK,GAAgB,WAChB,IAAIc,EAAYvD,GAAcC,GAC9BqB,EAAiBiC,GACjBnC,EAAgB,CAACmC,EAAUtC,EAAe,GAAIsC,EAAUtC,GAAesC,EAAUtC,EAAe,IACpG,EACImC,GAAkB,WAClB,IAAI74X,EAEJ,GADgBu3X,EAAS36X,SACRk6X,EAAe,CAC5B,IAAImC,EAAmBzC,EAAmBF,EACtC4C,EAAkB1C,EAAmB,EACrC2C,EAAuBrC,EAAcoC,KAA+D,QAAzCl5X,EAAK82X,EAAcoC,UAAqC,IAAPl5X,OAAgB,EAASA,EAAG21X,UACtIuD,EAAkB,EAClBA,EAENJ,IAAS,EAAOK,EAAsBF,EADhBt5R,EAAY,IAAM,EAAI,EAAIA,EAAY,IAEhE,CACJ,EACI84R,GAAkB,WAElB,GADgBlB,EAAS36X,SACRk6X,EAAe,CAC5B,IAAImC,EAAmBzC,EAAmBF,EACtC6C,EAAuBrC,EAAcmC,IAAqBnC,EAAcmC,GAAkBtD,SACxFsD,EAAmB,EACnBA,EAENH,IAAS,EAAMK,EAAsBF,EADft5R,EAAY,IAEtC,CACJ,EACIm5R,GAAW,SAAUl/V,EAAWw/V,EAAeC,EAAUC,GACzDC,GAAW3/V,EAAWw/V,GACtBrB,KACAtB,EAAoB4C,GACpBlD,EAAamD,GACb3C,EAAgByC,EACpB,EACIG,GAAa,SAAUC,EAAS58X,GAChC,IAAIoD,EACJ,GAAI42X,GAAgBE,EAAe,CAC/B,IAAI2C,EAAsBC,GAAcF,EAASpC,GAC7CuC,EAAoBzuX,OAAO2mB,OAAO,GAAI+kW,IAAe52X,EAAK,CAAC,GAAMy5X,GAAuB3C,EAAcl6X,GAAUoD,IACpH62X,EAAgB8C,GAChBtC,EAAcoC,GACdtC,EAAmBqC,GAAW,IAAM,KACpCjhW,YAAW,WACP,IAAIv4B,EAAII,EACJK,EACAw3X,EAA2C,QAA/Bx3X,EAAK62X,EAAa16X,eAA4B,IAAP6D,OAAgB,EAASA,EAAGstJ,YAC/E6rO,EAAkB1uX,OAAO2mB,OAAO,GAAImlW,IAAkBh3X,EAAK,CAAC,GACzDy5X,GAAuB,EAC1Bz5X,EAAG05X,IAAc,EAAMD,IAAwBxB,EAC/Cj4X,EAAG05X,IAAc,EAAOD,IAAwBxB,IAAaA,EAC7Dj4X,IACA65X,EAAmB3uX,OAAO2mB,OAAO,GAAI8nW,IAAoBv5X,EAAK,CAAC,GAC5Ds5X,IAAc,EAAMD,IAAwB,CAAC,EAChDr5X,EAAGs5X,IAAc,EAAOD,IAAwB,CAAC,EACjDr5X,IACJy2X,EAAgBgD,GAChB5C,EAAmB2C,GACnBzC,EAAmB,EACvB,GAAG1wX,EAAMy3O,oBA1MoB,IA2MjC,CACJ,EACIw7I,GAAgB,SAAUF,EAASr8W,GACnC,IAAI28W,EAAYN,EAAUr8W,EAAQ,EAAIA,EAAQ,EAC9C,OAAIy5W,EACiBkD,EAAY,EACvBlD,EAAaxsX,OAAS,EACtB0vX,EAAYlD,EAAaxsX,OAG5B,CACX,EACIkuX,GAAkB,SAAU1nW,GAC5B,IAAI5wB,EACA+5X,GAAgBrD,EAAeF,GAAoB5lW,EAAQm9H,YAC1Dn9H,EAAQm9H,YAAc,IACW,QAA/B/tJ,EAAKw3X,EAAa56X,eAA4B,IAAPoD,OAAgB,EAASA,EAAG+tJ,cAAgB,GAC1FmoO,EAAiB6D,EACrB,EACIrB,GAAe,SAAUv7W,EAAO1gB,GAChCA,EAAM+gB,iBACFL,EAAQu5W,EACR6C,IAAW,EAAMp8W,GAEZA,EAAQu5W,GACb6C,IAAW,EAAOp8W,GAEtBw5W,EAAgBx5W,EACpB,EACI46W,GAAmBj8X,EAAAA,aAAkB,WACrC,IAAIk8X,EAAYT,EAAS36X,QACrBu7X,EAAaH,GAAaA,EAAUh8X,SAAS06X,GACjD,GAAIsB,aAAqBgC,aAAe7B,EAAY,CAChD,IAAI8B,EAAmB58W,KAAKu0C,MAAMomU,EAAUjqO,YA7OrB,KA8OvBuqO,GAAgBH,GAChB9B,EAAe,IAAM4D,GACrB1D,EAAe0D,EACnB,CACJ,GAAG,IAICC,GAAwB,SAAUC,GAAe,MAAQ,CACzDzmW,UAAW,cAAcjnB,OAAO0tX,EAAa,MAAOC,gBAAiB,WACrE,EACJ,OAAQt+X,EAAAA,cAAoBA,EAAAA,SAAgB,KACxCA,EAAAA,cAAoB,MAAO,CAAEM,UAAW,wBAAyBE,IAAKg7X,EAActjW,UAzMpE,SAAU/xB,GACtBwkQ,GAAe7qO,EAAWh/B,SAC1Bg/B,EAAWh/B,QAAQ0gQ,qBAAqBr7P,EAEhD,GAsMQnG,EAAAA,cAAoB,IAAK,CAAEQ,IAAKk7X,EAAc,cAAe,OAAQ55X,QAAS,WAAc,OAAOi4X,GAAagD,IAAmB,EAAGz8X,WAAWu7B,EAAAA,EAAAA,GAAW,mBAAoB,wBAAyB,qFAAsF,CAAE,cAAek+V,KAC5S/5X,EAAAA,cAAoBi9P,GAAAA,EAAS,CAAEp7P,KAAMomS,EAAAA,OACzCjoS,EAAAA,cAAoB,IAAK,CAAE,cAAe,OAAQ8B,QAAS,WAAc,OAAOm4X,GAAc0C,IAAmB,EAAGr8X,WAAWu7B,EAAAA,EAAAA,GAAW,mBAAoB,yBAA0B,qFAAsF,CAAE,cAAeo+V,KAC3Rj6X,EAAAA,cAAoBi9P,GAAAA,EAAS,CAAEp7P,KAAMqmS,EAAAA,OACzCloS,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBACpCN,EAAAA,cAAoB,KAAM,CAAEQ,IAAKi7X,EAAUn7X,UAAW,6BAA8BkE,KAAM,UAAWwzB,SAAU,EAAG73B,MAAO,CAAEy3B,UAAW,cAAcjnB,OAAOkzF,EAAW,QAAWm3R,GAAiBA,EAActuX,KAAI,SAAU/L,EAAO0gB,GAAS,OAAQ1gB,EAAMk5X,SACrP75X,EAAAA,cAAoB,KAAM,CAAEwE,KAAM,OAAQlE,UAAW,6CAA8CH,MAAO,CAAEo+X,KAAM,OAAO5tX,OAAOirX,IAAY7jW,IAAK1W,GAChJrhB,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,mBAAqBK,EAAMk5X,WACrE75X,EAAAA,cAAoB,KAAM,CAAEwE,KAAM,MAAOlE,WAAWu7B,EAAAA,EAAAA,GAAW,wBAAyB,CAAE,UAAWxa,IAAUu5W,IAAiB,gBAAiBv5W,IAAUu5W,EAAcz6X,MAAO,CAAEo+X,KAAM,OAAO5tX,OAAOirX,IAAY7jW,IAAK1W,GACtNrhB,EAAAA,cAAoB,MAAO,CAAEM,UAAW,wBACpCN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,mBAAqBksB,EAAK6C,WAAW1uB,EAAMqrB,KAAM2vW,KAC9F37X,EAAAA,cAAoB,OAAQ,CAAE8B,QAAS,SAAUqE,GAAK,OAAOy2X,GAAav7W,EAAOlb,EAAI,EAAG7F,UAAW,sBAA2B,OAC9IN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,0BACpCN,EAAAA,cAAoB,KAAM,CAAEM,UAAW,6BAA8BH,MAA2B,IAApBi7X,EAClE95W,GAAS,CAAC,EAAG88W,GAAsBhD,IAAoB95W,GAASA,GAAS,CAAC,EAAG88W,GAAsBhD,IAtBjE,CAChDh5I,mBAAoB,GAAGzxO,OAnPU,IAmP6B,SAqBoGmqX,GAAgBA,EAAapuX,KAAI,SAAUw4D,EAAW7jD,GAChN,OAAQrhB,EAAAA,cAAoB,KAAM,CAAE+3B,IAAK1W,EAAO/gB,UAAW,mBAAoBH,MAAO,CAAEy3B,UAAW,eAAejnB,OAAOuqX,EAAgB75W,GAAQ,mBAAsB6jD,GAAallE,EAAAA,cAAoB84X,GAAc,CAAEM,SAAqC,IAA3B8B,EAAgB75W,GAAe,GAAK,EAAG6jD,UAAWA,EAAWnuB,cAAeA,EAAerR,YAAY,EAAMggV,aAAa,EAAO2T,aAAc,CAAEl9W,KAAM,GAAGxL,OAAOwpX,EAAe,SACtZ,MACZ,EACAL,GAAmBrhW,UAAY,CAC3Bse,cAAere,EAAAA,MC3RZ,IAAI8lW,GAAmB,SAAU7zX,GACpC,IAAI6hB,GAAOqoT,EAAAA,GAAAA,KACP3wU,EAAKlE,EAAAA,WAAkBy+X,EAAav6X,EAAG,GAAIw6X,EAAgBx6X,EAAG,GAC9Dy6X,EAAoBh0X,EAAMg0X,kBAAmBv8I,EAAqBz3O,EAAMy3O,mBAAoBw3I,EAAajvX,EAAMivX,WAAY+B,EAAahxX,EAAMgxX,WAAYiD,EAAYj0X,EAAMi0X,UAAWj0H,EAAchgQ,EAAMggQ,YAAa14P,EAAWtH,EAAMsH,SAAU8kC,EAAgBpsC,EAAMosC,cACzQ8nV,EAAe7+X,EAAAA,OAAa,MAC5B8/B,EAAa9/B,EAAAA,OAAa,IAAI+gQ,GAAAA,EAAW,CACzC/oO,SAAU,EACVyiG,KAAMokQ,EACN9vI,UAAW,CAAC,uBAEhB/uP,EAAAA,WAAgB,WACR6+X,EAAa/9X,SACT6J,EAAMggQ,cACNluO,YAAW,WACP,IAAIo/V,EAAY/7V,EAAWh/B,QAAQwxD,MAC/BupU,GACAA,EAAUlnU,aAAa,WAAYvhC,OAAO,GAElD,GAAG,GACH0M,EAAWh/B,QAAQugQ,eAAiB,CAChCp8D,QAAS,CACL,MAASi6C,EACT,MAASA,IAK7B,GAAG,CAACv0O,EAAMggQ,cACV3qQ,EAAAA,WAAgB,WACZ0+X,EAAc/E,GAAcC,GAChC,GAAG,IACH55X,EAAAA,WAAgB,WACZ8/B,EAAWh/B,QAAQ4yJ,QACvB,IACA,IAKIwrF,EAAU,SAAUr4N,EAAQw3V,EAAMptJ,GAClCA,EAAGvvM,iBACH,IAAIoT,EAAUjO,EAAOwL,cAAc,mCAC/ByC,GACAA,EAAQ+mB,OAEhB,EACIijV,EAAkB,EACtB,OAAQ9+X,EAAAA,cAAoB,KAAM,CAAEQ,IAAKq+X,EAAc3mW,UAbnC,SAAU/xB,GACtBwkQ,GAAe7qO,EAAWh/B,SAC1Bg/B,EAAWh/B,QAAQ0gQ,qBAAqBr7P,EAEhD,GASmFs4X,GAAcA,EAAW/xX,KAAI,SAAU/L,EAAO0gB,GAC7H,IAAI09W,GAASn+V,EAAAA,GAAAA,KACTo+V,GAAY39W,EAAQy9W,GAAmB,IAAM,EAIjD,OAHIn+X,EAAMk5X,WACNiF,GAAmB,GAEf9+X,EAAAA,cAAoBA,EAAAA,SAAgB,CAAE+3B,IAAK1W,GAAS1gB,EAAMk5X,SAC3D75X,EAAAA,cAAoB,KAAM,CAAEM,UAAW,wBACtCN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,mBAAqBK,EAAMk5X,WACrE75X,EAAAA,cAAoB,KAAM,CAAEM,WAAWu7B,EAAAA,EAAAA,GAAW,mBAAoB,CAAE,YAAamjW,KACpFh/X,EAAAA,cAAoB,MAAO,CAAEM,UAAW,wBACpCN,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,kBAAmBT,GAAIk/X,GAAUvyW,EAAK6C,WAAW1uB,EAAMqrB,KAAM2vW,KAC1G37X,EAAAA,cAAoB,IAAK,CAAEM,UAAW,sBACtCN,EAAAA,cAAoB84X,GAAc,CAAEj5X,GAAIk/X,EAAQ3F,SAAUzuH,EAAc,GAAK,EAAGzlM,UAAWvkE,EAAO24X,WAAYsF,GAAaI,EAAUtZ,YAAaiZ,EAAmBv8I,mBAAoBA,EAAoBnwO,SAAUA,EAAU8kC,cAAeA,KAC5P,IACJ,EACAynV,GAAiB/lW,UAAY,CACzBse,cAAere,EAAAA,MCtEnB,IAAIpX,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAMW8lW,GAAW,SAAUt0X,GAC5B,IAAI8/Q,EAAgBnpQ,GAAS,CAAEs9W,WAAW,EAAOD,mBAAmB,EAAMhD,WAAY,gBAAkBhxX,GACpGg0X,EAAoBl0G,EAAck0G,kBAAmBv8I,EAAqBqoC,EAAcroC,mBAAoB9hP,EAAYmqR,EAAcnqR,UAAWs+X,EAAYn0G,EAAcm0G,UAAWj0H,EAAc8f,EAAc9f,YAAajlO,EAAa+kP,EAAc/kP,WAAYyyL,EAASsyD,EAActyD,OAAQwjK,EAAalxG,EAAckxG,WAAY1pX,EAAWw4Q,EAAcx4Q,SAAU8kC,EAAgB0zO,EAAc1zO,cAC7Y7yC,EAAKlE,EAAAA,WAAkBk/X,EAAiBh7X,EAAG,GAAIi7X,EAAoBj7X,EAAG,GACtEs3X,EAAex7X,EAAAA,OAAa,MAMhC,OALAA,EAAAA,WAAgB,WACRw7X,EAAa16X,SACbq+X,EAAkB3D,EAAa16X,QAAQmxJ,YAE/C,GAAG,IACKjyJ,EAAAA,cAAoB,MAAO,CAAEQ,IAAKg7X,EAAcl7X,WAAWu7B,EAAAA,EAAAA,GAAW,aAAc,CACpF,yBAA0B8iW,EAC1B,uBAAwBj5V,EACxB,yBAA0Bk5V,EAC1B,wBAAyBl5V,GAC1BplC,GAAYH,MAAO,CAAE2G,MAAO,GAAG6J,OAAOuuX,EAAgB,QAAWx5V,EAAa1lC,EAAAA,cAAoB85X,GAAoB,CAAEnvH,YAAaA,EAAaivH,WAAYzhK,EAAQwjK,WAAYA,EAAYv5I,mBAAoBA,EAAoBrrM,cAAeA,IACtP/2C,EAAAA,cAAoBw+X,GAAkB,CAAE7zH,YAAaA,EAAaivH,WAAYzhK,EAAQwjK,WAAYA,EAAYiD,UAAWA,EAAWD,kBAAmBA,EAAmBv8I,mBAAoBA,EAAoBnwO,SAAUA,EAAU8kC,cAAeA,IAC/P,EACAkoV,GAASxmW,UAAY,CACjBn4B,UAAWo4B,EAAAA,QCnCf,IAAIpX,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAQWimW,GAAc,SAAUz0X,GAC/B,IAAI00X,EAAUr/X,EAAAA,OAAa,MAa3B,OAZAA,EAAAA,WAAgB,WACR2K,EAAMgsB,MACN8F,YAAW,WACP,IAAI3H,EAAUuqW,EAAQv+X,SAAWu+X,EAAQv+X,QAAQg0B,QAC7CwqW,EAAWxqW,GAAWA,EAAQzC,cAAc,gBAC5CoE,GAAgBC,EAAAA,EAAAA,GAAiB4oW,GAAYA,EAASx8V,eACtDw8V,GAAYA,IAAa7oW,GACzB6oW,EAAS5qW,OAEjB,GAER,GAAG,CAAC/pB,EAAMgsB,OACF32B,EAAAA,cAAoBqkC,EAAAA,EAAO,CAAE1N,KAAMhsB,EAAMgsB,KAAMzB,OAAQvqB,EAAMuqB,OAAQsQ,WAAY,eAAgB9N,SAAS,GAC9G13B,EAAAA,cAAoBksX,GAAM5qW,GAAS,CAAEqkB,UAAU,GAAQh7B,EAAO,CAAEnK,IAAK6+X,EAAS/+X,WAAWu7B,EAAAA,EAAAA,GAAW,iBAAkBlxB,EAAMrK,WAAYiW,QAAS5L,EAAM4L,QAAS/R,KAAM,SAAWmG,EAAMzK,UAC/L,EACAk/X,GAAY74V,YAAc,uCC3Bfg5V,GAAiBv/X,EAAAA,YAAiB,SAAU2K,EAAOkc,GAC1D,IAAI3iB,EAAII,GACRq+B,EAAAA,GAAAA,GAAgBC,GAAAA,GAChB,IAAI0+M,EAAathP,EAAAA,OAAa,MAC1B2E,EAAK3E,EAAAA,UAAe,GAAQsiC,EAAU39B,EAAG,GAAI6oP,EAAa7oP,EAAG,GAC7D0nP,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAAE80B,QAASwsN,EAAWxgP,QAAY,GAAG,IACvGd,EAAAA,oBAA0B6mB,EAAQwlO,GAClC,IAAIvnP,EAAK6F,EAAMqkE,SAAUA,OAAkB,IAAPlqE,GAAwBA,EAAI6B,EAAWgE,EAAMhE,SAAU8F,EAAQ9B,EAAM8B,MAAOssX,EAAWpuX,EAAMouX,SAAUyG,EAAW70X,EAAM60X,SAAUC,EAAa90X,EAAM80X,WAAYC,EAAe/0X,EAAM+0X,aAAcC,EAAgBh1X,EAAMg1X,cAAeC,EAAkBj1X,EAAMi1X,gBACjS99X,EAAU9B,EAAAA,aAAkB,SAAUW,IACtC0yM,EAAAA,GAAAA,GAAcmsL,EAAU7+X,EAAO0rP,IAAuB,CAAEr9K,SAAUA,GACtE,GAAG,CAACwwT,EAAUxwT,IACV92C,EAAYl4B,EAAAA,aAAkB,SAAUW,GACpCA,EAAMm2B,UAAYtD,EAAAA,EAAK8L,OAAS3+B,EAAMm2B,UAAYtD,EAAAA,EAAKytB,QACvDtgD,EAAM+gB,kBACN2xL,EAAAA,GAAAA,GAAcmsL,EAAU7+X,EAAO0rP,IAAuB,CAAEr9K,SAAUA,IAE1E,GAAG,CAACwwT,EAAUxwT,IACV54C,EAAcp2B,EAAAA,aAAkB,WAC5B2K,EAAMhE,UAGV6mP,GAAW,EACf,GAAG,CAAC7iP,EAAMhE,WACN2vB,EAAat2B,EAAAA,aAAkB,WAC3B2K,EAAMhE,UAGV6mP,GAAW,EACf,GAAG,CAAC7iP,EAAMhE,WACNzB,GAAKqtP,EAAAA,GAAAA,GAAkB,CAAEl8N,QAASD,EAAaG,OAAQD,IAAeD,EAAUnxB,EAAGmxB,QAASE,EAASrxB,EAAGqxB,OAC5G,OAAQv2B,EAAAA,cAAoB,MAAO,CAAEQ,IAAK8gP,EAAYhhP,WAAWu7B,EAAAA,EAAAA,GAAW,aAAclxB,EAAMrK,UAAW,CACnG,aAAc0uE,EACd,UAAW1sC,IAAY37B,EACvB,aAAcA,IACd0vB,QAASA,EAASE,OAAQA,EAAQp2B,MAAOwK,EAAMxK,MAAON,GAAI8K,EAAM9K,GAAIuoB,KAAKk0O,EAAAA,GAAAA,GAAOhb,EAAY32O,EAAMyd,KAAM8P,UAAWvxB,OAAWhH,EAAYu4B,GAC9Il4B,EAAAA,cAAoB,MAAO,CAAEwE,KAAM,SAAU,gBAAiBmG,EAAMu6B,aAAc,gBAAiB8pC,EAAU,gBAAiBroE,EAAUqxB,UAAUkvC,EAAAA,GAAAA,GAAYv8D,EAAMqtB,SAAUrxB,GAAWrG,UAAW,oBAAqBwB,QAAS6E,OAAWhH,EAAYmC,QAC3OnC,IAAV8M,EAAsBzM,EAAAA,cAAoB,MAAO,CAAEM,UAAW,oBAAsBmM,QAAS9M,EAC7FK,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,kBAC5BX,IAAbo5X,EAAyB/4X,EAAAA,cAAoB,MAAO,CAAEM,UAAW,wBAA0By4X,QAAYp5X,EACvGK,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,wBACrCN,EAAAA,cAAoBszC,EAAAA,EAAU,CAAE/wC,KAAOysE,EAE5B0wT,OAA8B//X,EAAf,aADf8/X,OAA8B9/X,EAAjB,eAC4BkC,KAAOmtE,EAE/C4wT,GAAoBF,EAAgCE,EAAhBpZ,EAAAA,IADpCmZ,GAAkBF,EAAgCE,EAAlBlZ,EAAAA,IACqCnmX,WAAWu7B,EAAAA,EAAAA,GAAWmzC,GAC5F9qE,EAAK,CAAC,EACLA,EAAGkvB,OAAOssW,IAAiBroW,QAAQqoW,GACnCx7X,IAAOI,EAAK,CAAC,EACjBA,EAAG8uB,OAAOqsW,IAAepoW,QAAQooW,GACjCn7X,QAChBqG,EAAMzK,SACd,IACAq/X,GAAe9mW,UAAY,CACvBv4B,SAAUw4B,EAAAA,KACVp4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPtQ,IAAKsQ,EAAAA,OACL74B,GAAI64B,EAAAA,OACJV,SAAUU,EAAAA,OACVjsB,MAAOisB,EAAAA,KACPqgW,SAAUrgW,EAAAA,KACV+mW,WAAY/mW,EAAAA,OACZgnW,aAAchnW,EAAAA,OACds2C,SAAUt2C,EAAAA,KACV/xB,SAAU+xB,EAAAA,KACV8mW,SAAU9mW,EAAAA,MAEd6mW,GAAeh5V,YAAc,2BC3E7B,IAAIjlB,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAMW0mW,GAAwB7/X,EAAAA,YAAiB,SAAU2K,EAAOnK,GACjE,OAAQR,EAAAA,cAAoB,MAAOshB,GAAS,CAAE9gB,IAAKA,GAAOmK,EAAO,CAAErK,WAAWu7B,EAAAA,EAAAA,GAAW,6BAA8BlxB,EAAMrK,aACzHN,EAAAA,cAAoB,MAAO,CAAEM,UAAW,sBAAwBqK,EAAMzK,UAC9E,IACA2/X,GAAsBt5V,YAAc,gFCjB7B,IAAI3D,EAAkB,CACzBrgC,KAAM,+BACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,uQCTlBpjD,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EA8BWh3B,EAAcnC,EAAAA,YAAiB,SAAU2K,EAAOnK,IACvDmiC,EAAAA,EAAAA,iBAAgBC,EAAAA,GAChB,IAAI0+M,EAAathP,EAAAA,OAAa,MAC1BqsP,EAAsBrsP,EAAAA,aAAkB,WAAc,MAAQ,CAC9D80B,QAASwsN,EAAWxgP,QACpB,GAAG,IACPd,EAAAA,oBAA0BQ,EAAK6rP,GAC/B,IAAI/rP,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MAAON,EAAK8K,EAAM9K,GAAIK,EAAWyK,EAAMzK,SAClF22X,EAAW72X,EAAAA,SAAc,WAAc,OAAO4gC,EAAAA,EAAAA,IAAQ,GAAG,IACzDm/U,EAAc//W,EAAAA,SAAc,WAAc,OAAO2K,EAAMo1W,aAAejqV,EAAaiqV,WAAa,GAAG,CAACp1W,EAAMo1W,cAC1GznG,EAA+B,eAAhBynG,EACfxxH,EAASvuP,EAAAA,SAAc,WAAc,OAAO2K,EAAMgiN,OAAShiN,EAAMgiN,MAAMjnL,WAAa/6B,EAAMgiN,MAAMjnL,WAAa5P,EAAay4N,MAAQ,GAAG,CAAC5jP,EAAMgiN,QAC5ImqK,EAAS92X,EAAAA,SAAc,WAAc,OAAO2K,EAAMgiN,OAAShiN,EAAMgiN,MAAMhnL,SAAWh7B,EAAMgiN,MAAMhnL,SAAW7P,EAAaghW,MAAQ,GAAG,CAACnsX,EAAMgiN,QACxImzK,EAAqB9/X,EAAAA,SAAc,WAAc,OAAO67B,EAAAA,EAAAA,GAAW,iBAAkB,CACrF,WAA4B,eAAhBkkV,EACZ,WAA4B,aAAhBA,EACZ,0BAA2BznG,GAA2B,UAAX/pB,IAAuB+pB,GAA2B,QAAXw+G,EAClF,2BAA4Bx+G,GAA2B,WAAX/pB,IAAwB+pB,GAA2B,WAAXw+G,EACpF,wBAAyBx+G,GAA2B,QAAX/pB,IAAqB+pB,GAA2B,WAAXw+G,EAC9E,4BAA6Bx+G,GAA2B,YAAX/pB,IAAyB+pB,GAA2B,YAAXw+G,EACtF,uBAAwBx+G,GAA2B,UAAX/pB,GAAsB+pB,GAA2B,QAAXw+G,EAC9E,wBAAyBx+G,GAA2B,WAAX/pB,GAAuB+pB,GAA2B,WAAXw+G,EAChF,qBAAsBx+G,GAA2B,QAAX/pB,GAAoB+pB,GAA2B,WAAXw+G,EAC1E,yBAA0Bx+G,GAA2B,YAAX/pB,GAAwB+pB,GAA2B,YAAXw+G,GACnFx2X,EAAY,GAAG,CAACy/W,EAAaznG,EAAc/pB,EAAQuoI,EAAQx2X,IAC1Dy/X,EAAoBz+W,EAAS,CAAElf,IAAK,GAAGuO,OAA4B,kBAAdhG,EAAMvI,IAAmBuI,EAAMvI,IAAM,KAAOuI,EAAMvI,MAAQjC,GACnH,OAAQH,EAAAA,cAAoB,MAAO,CAAEQ,IAAK8gP,EAAYhhP,UAAWw/X,EAAoB3/X,MAAO4/X,EAAmBlgY,GAAIA,GAAMg3X,GAAY32X,EACzI,IACI41B,EAAe,CACfiqV,YAAa,aACbxxH,OAAQ,UACRuoI,OAAQ,WAEZ30X,EAAYs2B,UAAY,CACpBn4B,UAAWo4B,EAAAA,OACXv4B,MAAOu4B,EAAAA,OACPx4B,SAAUw4B,EAAAA,IACV74B,GAAI64B,EAAAA,OACJqnV,YAAarnV,EAAAA,MAAgB,CAAC,aAAc,aAC5Ct2B,IAAKs2B,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC5Ci0L,MAAOj0L,EAAAA,MAAgB,CACnBiN,SAAUjN,EAAAA,MAAgB,CAAC,MAAO,SAAU,SAAU,YACtDgN,WAAYhN,EAAAA,MAAgB,CAAC,QAAS,SAAU,MAAO,eAG/Dv2B,EAAY2zB,aAAeA,EAC3B3zB,EAAYokC,YAAc,gKCtFtB7T,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAOIltB,EAA0B,SAAUgoB,GAEpC,SAAShoB,EAAStB,GACd,IAAIzG,EACAirB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KA4HxC,OA3HA0C,EAAM/iB,SAAW,KACjB+iB,EAAMs6P,sBAAuB,EAC7Bt6P,EAAM6wW,aAAc97X,EAAK,CAAC,GACnBsvB,EAAAA,EAAKrX,MAAQ,WAAc,OAAOgT,EAAM8wW,oBAAsB,EACjE/7X,EAAGsvB,EAAAA,EAAKltB,OAAS,WAAc,OAAO6oB,EAAM+wW,oBAAsB,EAClEh8X,EAAGsvB,EAAAA,EAAKI,MAAQ,WAAc,OAAOzE,EAAM+wW,oBAAsB,EACjEh8X,EAAGsvB,EAAAA,EAAKG,IAAM,WAAc,OAAOxE,EAAM8wW,oBAAsB,EAC/D/7X,EAAGsvB,EAAAA,EAAKE,MAAQ,WAAc,OAAO,CAAG,EACxCxvB,EAAGsvB,EAAAA,EAAKC,KAAO,WAAc,OAAQzzB,EAAAA,SAAe8qF,MAAM37D,EAAMxkB,MAAMzK,UAAY,CAAI,EACtFgE,GAIJirB,EAAMhjB,SAAW,SAAUkV,GACnB8N,EAAMxkB,MAAMuB,WAAamV,GACrB8N,EAAMxkB,MAAMwB,UACZgjB,EAAMxkB,MAAMwB,SAAS,CACjBD,SAAUmV,GAI1B,EAIA8N,EAAM+I,UAAY,SAAUv3B,GACxB,IAAI2kJ,EACJ,OAAQ3kJ,EAAMm2B,SACV,KAAKtD,EAAAA,EAAKrX,KACNmpI,EAAUn2H,EAAM6wW,WAAW7wW,EAAMgxW,WAAW3sW,EAAAA,EAAKrX,KAAMqX,EAAAA,EAAKltB,QAC5D,MACJ,KAAKktB,EAAAA,EAAKltB,MACNg/I,EAAUn2H,EAAM6wW,WAAW7wW,EAAMgxW,WAAW3sW,EAAAA,EAAKltB,MAAOktB,EAAAA,EAAKrX,OAC7D,MACJ,KAAKqX,EAAAA,EAAKG,GACN2xH,EAAUn2H,EAAM6wW,WAAWxsW,EAAAA,EAAKG,IAChC,MACJ,KAAKH,EAAAA,EAAKI,KACN0xH,EAAUn2H,EAAM6wW,WAAWxsW,EAAAA,EAAKI,MAChC,MACJ,KAAKJ,EAAAA,EAAKE,KACN4xH,EAAUn2H,EAAM6wW,WAAWxsW,EAAAA,EAAKE,MAChC,MACJ,KAAKF,EAAAA,EAAKC,IACN6xH,EAAUn2H,EAAM6wW,WAAWxsW,EAAAA,EAAKC,KAKpC6xH,IACA3kJ,EAAM+gB,iBACNyN,EAAMhjB,SAASm5I,KAEvB,EACAn2H,EAAM22U,cAAgB,SAAUs6B,GAC5B,IAAIl0X,EAAWk0X,EAASl0X,SAAUhM,EAAWkgY,EAASlgY,SAAUmgY,EAAkBD,EAASC,gBAE3F,OAAIn0X,EADgBlM,EAAAA,SAAe8qF,MAAM5qF,IACTgM,GAAY,EAChClM,EAAAA,cAAoBsgY,EAAAA,EAAiBh/W,EAAS,CAAED,MAAOnV,GAAYk0X,EAAU,CAAEjgY,MAAOkgY,KAE3F,IACX,EACAlxW,EAAMoxW,oBAAsB,WACxB,IAAIrgY,EAAWivB,EAAMjvB,WACjBoO,EAAStO,EAAAA,SAAe8qF,MAAM5qF,GAClC,GAAIA,EACA,IAAK,IAAIyM,EAAI,EAAGA,EAAI2B,EAAQ3B,IACxB,IAAKzM,EAASyM,GAAGhC,MAAMhE,SACnB,OAAOgG,CAIvB,EACAwiB,EAAMqxW,mBAAqB,WACvB,IAAItgY,EAAWivB,EAAMjvB,WACjBoO,EAAStO,EAAAA,SAAe8qF,MAAM5qF,GAClC,GAAIA,EACA,IAAK,IAAIyM,EAAI2B,EAAS,EAAG3B,EAAI,EAAGA,IAC5B,IAAKzM,EAASyM,GAAGhC,MAAMhE,SACnB,OAAOgG,CAIvB,EACAwiB,EAAM8wW,mBAAqB,WACvB,IAAI//X,EAAWivB,EAAMjvB,WACjBgM,EAAWijB,EAAMxkB,MAAMuB,SACvBmV,EAAQnV,EAAWA,EAAW,GAAK,EACvC,GAAImV,EAAQ,EACR,OAAO8N,EAAMqxW,qBAEjB,GAAItgY,EACA,IAAK,IAAIyM,EAAI0U,EAAO1U,GAAK,EAAGA,IAAK,CAC7B,IAAKzM,EAASyM,GAAGhC,MAAMhE,SACnB,OAAOgG,EAEX,GAAU,IAANA,EACA,OAAOwiB,EAAMqxW,oBAErB,CAER,EACArxW,EAAM+wW,mBAAqB,WACvB,IAAIhgY,EAAWivB,EAAMjvB,WACjBgM,EAAWijB,EAAMxkB,MAAMuB,SACvBmV,EAAQnV,EAAWA,EAAW,EAAI,EAClCu0X,EAAgBzgY,EAAAA,SAAe8qF,MAAM5qF,GACzC,GAAImhB,GAASo/W,EACT,OAAOtxW,EAAMoxW,sBAEjB,GAAIrgY,EACA,IAAK,IAAIyM,EAAI0U,EAAO1U,EAAI8zX,EAAe9zX,IAAK,CACxC,IAAKzM,EAASyM,GAAGhC,MAAMhE,SACnB,OAAOgG,EAEX,GAAIA,EAAI,IAAM8zX,EACV,OAAOtxW,EAAMoxW,qBAErB,CAER,GACA59V,EAAAA,EAAAA,GAAgBC,EAAAA,GAChBzT,EAAMs6P,sBAAuB/hB,EAAAA,EAAAA,GAAuB9kO,EAAAA,GAC7CzT,CACX,CAsDA,OAtLAuD,EAAUzmB,EAAUgoB,GAoIpBhoB,EAAS0gB,UAAUnrB,OAAS,WACxB,IAAI2tB,EAAQ1C,KACR2zW,EAAW9+W,EAASA,EAAS,CAAC,EAAGmL,KAAK9hB,OAAQ,CAAEzK,SAAUusB,KAAKvsB,WAAYg4B,UAAWzL,KAAKyL,UAAW/rB,SAAUsgB,KAAKtgB,WACrHu0X,EAAcN,EAASM,YAAax8X,EAAKk8X,EAASpoW,SAAUA,OAAkB,IAAP9zB,EAAgB,EAAIA,EAC3F0iG,EAAyB,WAAhB85R,EACTC,GAAmB9kW,EAAAA,EAAAA,GAAW,4BAA6B,CAC3D,kBAAmC,SAAhB6kW,EACnB,mBAAoC,UAAhBA,EACpB,oBAAqC,WAAhBA,EACrB,iBAAkC,QAAhBA,EAClB,wBAAyBj0W,KAAK9hB,MAAM2uP,YACrC7sO,KAAK9hB,MAAMrK,WACd,OAAQN,EAAAA,cAAoB,MAAO,CAAEH,GAAI4sB,KAAK9hB,MAAM9K,GAAIW,IAAK,SAAUsxB,GAAO,OAAO3C,EAAM/iB,SAAW0lB,CAAK,EAAG1J,IAAKqE,KAAK9hB,MAAMyd,IAAK9nB,UAAWqgY,EAAkBxgY,MAAOssB,KAAK9hB,MAAMxK,QAC7KymG,GAAU5mG,EAAAA,cAAoB4gY,EAAAA,EAAoBt/W,EAAS,CAAC,EAAG8+W,EAAU,CAAEpoW,SAAUA,KACtFvL,KAAKq5U,cAAcs6B,GACnBx5R,GAAU5mG,EAAAA,cAAoB4gY,EAAAA,EAAoBt/W,EAAS,CAAC,EAAG8+W,EAAU,CAAEpoW,SAAUA,KACrFvL,KAAKg9P,sBAAwBzpR,EAAAA,cAAoB4nQ,EAAAA,EAAkB,MAC3E,EACA37P,EAAS0gB,UAAUwzW,WAAa,SAAU3pC,EAAUxrL,GAEhD,OADUv+I,KAAKrgB,UAA2D,QAA9Cg0C,iBAAiB3zB,KAAKrgB,UAAU0xB,YAAwB,EACvEktI,EAAWwrL,CAC5B,EACAvqV,EAAS0gB,UAAUzsB,SAAW,WAC1B,OAAOF,EAAAA,SAAeinD,QAAQx6B,KAAK9hB,MAAMzK,UAAUqP,QAAO,SAAUiK,GAAK,OAAOA,CAAG,GACvF,EAIAvN,EAASwsB,UAAY,CACjBlsB,UAAWmsB,EAAAA,KACXx4B,SAAUw4B,EAAAA,KACVvsB,SAAUusB,EAAAA,KACVxsB,SAAUwsB,EAAAA,OACVv4B,MAAOu4B,EAAAA,OACP2nW,gBAAiB3nW,EAAAA,OACjBgoW,YAAahoW,EAAAA,OACbV,SAAUU,EAAAA,OACVp4B,UAAWo4B,EAAAA,OACXtQ,IAAKsQ,EAAAA,QAKTzsB,EAAS6pB,aAAe,CACpBvpB,WAAW,EACXm0X,YAAa,MACbp0X,iBAAiB,EACjBu0X,kBAAmB,IACnBC,iBAAkB,IAEf70X,CACX,CAxL8B,CAwL5BjM,EAAAA,2FCxNE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EACIlS,EAAkC,SAAUiS,EAAG/yB,GAC/C,IAAIkD,EAAI,CAAC,EACT,IAAK,IAAI2pB,KAAKkG,EAAO9pB,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,IAAM7sB,EAAEuhC,QAAQ1U,GAAK,IAC9E3pB,EAAE2pB,GAAKkG,EAAElG,IACb,GAAS,MAALkG,GAAqD,oBAAjC9pB,OAAOu4B,sBACtB,KAAIh7B,EAAI,EAAb,IAAgBqmB,EAAI5jB,OAAOu4B,sBAAsBzO,GAAIvsB,EAAIqmB,EAAE1kB,OAAQ3B,IAC3DxG,EAAEuhC,QAAQ1U,EAAErmB,IAAM,GAAKyC,OAAOud,UAAUib,qBAAqB1U,KAAKgG,EAAGlG,EAAErmB,MACvEtD,EAAE2pB,EAAErmB,IAAMusB,EAAElG,EAAErmB,IAF4B,CAItD,OAAOtD,CACX,EAKI03X,EAAsB,SAAU9sW,GAEhC,SAAS8sW,IACL,OAAkB,OAAX9sW,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAmCA,OAtCAiG,EAAUquW,EAAM9sW,GAOhB8sW,EAAKp0W,UAAUnrB,OAAS,WACpB,IAAI0C,EAAKuoB,KAAK9hB,MAAOzK,EAAWgE,EAAGhE,SAAUg5F,EAAQjyE,EAAO/iB,EAAI,CAAC,aAIjE,OAAQlE,EAAAA,cAAoB2kP,EAAAA,EAAWrjO,EAAS,CAAC,EAH5B,CACjBigO,eAAgB,QAEgDroJ,GAAQh5F,EAChF,EAIA6gY,EAAKtoW,UAAY,CACbv4B,SAAUw4B,EAAAA,UAAoB,CAC1BA,EAAAA,QAAkBA,EAAAA,MAClBA,EAAAA,OAEJgsN,aAAchsN,EAAAA,IACdp4B,UAAWo4B,EAAAA,OACXl2B,UAAWk2B,EAAAA,OACX74B,GAAI64B,EAAAA,OACJv4B,MAAOu4B,EAAAA,KAKXqoW,EAAKjrW,aAAe,CAChB0nN,QAAQ,EACRl+M,OAAO,EACPisL,MAAM,EACNi2B,wBAAyB,IACzBC,uBAAwB,KAErBs/I,CACX,CAxC0B,CAwCxB/gY,EAAAA,+BCjFE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAKImnW,EAAiC,SAAUrsW,GAE3C,SAASqsW,IACL,IAAInxW,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KAKhE,OAJA0C,EAAMo6P,WAAY3oP,EAAAA,EAAAA,KAClBzR,EAAMu1N,aAAe,SAAUzgI,GAC3B,OAAOjkH,EAAAA,aAAmBikH,EAAO3iG,EAASA,EAAS,CAAC,EAAG2iG,EAAMt5G,OAAQ,CAAEgzO,GAAI15H,EAAMt5G,MAAMzK,SAASyK,MAAM9K,KAAOuzB,OAAOjE,EAAMo6P,UAAYp6P,EAAMxkB,MAAMuB,YACtJ,EACOijB,CACX,CAqDA,OA7DAuD,EAAU4tW,EAAiBrsW,GAY3BqsW,EAAgB3zW,UAAUnrB,OAAS,WAC/B,IAAI0C,EAAKuoB,KAAK9hB,MAAOzK,EAAWgE,EAAGhE,SAAUgM,EAAWhI,EAAGgI,SACvDR,EAAcxL,GAAgC,kBAAbgM,GACjClM,EAAAA,SAAeinD,QAAQ/mD,GAAUgM,GACjC80X,GAAiBnlW,EAAAA,EAAAA,GAAW,qBAAsB,WAAYnwB,GAAeA,EAAYf,MAAMs2X,kBACnG,OAAQjhY,EAAAA,cAAoB,MAAO,CAAEM,UAAW0gY,EAAgB7gY,MAAOssB,KAAK9hB,MAAMxK,OAASssB,KAAKq5U,cAAc5lW,GAClH,EACAogY,EAAgB3zW,UAAUm5U,cAAgB,SAAU5lW,GAChD,IAAIivB,EAAQ1C,KACZ,OAAQA,KAAK9hB,MAAM2B,gBAEbtM,EAAAA,SAAe0M,IAAI+f,KAAK9hB,MAAMzK,UAAU,SAAUy9B,EAAKptB,GACrD,OAAO4e,EAAM+xW,YAAYvjW,EAAKptB,EAClC,IAHEkc,KAAKy0W,YAAYlhY,EAAAA,SAAeinD,QAAQ/mD,GAAUusB,KAAK9hB,MAAMuB,UAAWugB,KAAK9hB,MAAMuB,SAI7F,EACAo0X,EAAgB3zW,UAAUu0W,YAAc,SAAUvjW,EAAKptB,GACnD,IAAIi0I,EAAUj0I,IAAQkc,KAAK9hB,MAAMuB,SAC7Bi1X,EAAe,CACf,KAAQ,WACR,iBAAiB,EACjB,kBAAmB5wX,EAAIoxC,WACvB,MAAS,CACL,QAAW6iG,OAAU7kJ,EAAY,SAGrCuiP,EAAiB,CACjB97O,SAAU,UACViqG,QAASm0C,OAAU7kJ,EAAY,QAEnC,OAAIg+B,EAAIhzB,MAAMhE,SACH,KAEJ8lB,KAAK9hB,MAAM4B,UACXvM,EAAAA,cAAoB+gY,EAAM,CAAEvjJ,QAAQ,EAAMjyB,KAAM9+L,KAAK9hB,MAAM2B,gBAAiBnM,MAAO+hP,EAAgBwC,aAAcj4N,KAAK9hB,MAAM2B,gBAAkBmgB,KAAKi4N,kBAAe/kP,GACjKK,EAAAA,cAAoB,MAAOshB,EAAS,CAAC,EAAG6/W,EAAc,CAAEthY,GAAIuzB,OAAO3G,KAAK88P,UAAYh5Q,GAAMwnB,IAAKxnB,IAAQotB,EAAIhzB,MAAMzK,WAClHF,EAAAA,cAAoB,MAAOshB,EAAS,CAAC,EAAG6/W,EAAc,CAAEppW,IAAKxnB,IAAQotB,EAAIhzB,MAAMzK,SAC1F,EAIAogY,EAAgB7nW,UAAY,CACxBlsB,UAAWmsB,EAAAA,KACXx4B,SAAUw4B,EAAAA,UAAoB,CAC1BA,EAAAA,QACAA,EAAAA,QAAkBA,EAAAA,WAEtBxsB,SAAUwsB,EAAAA,OACVv4B,MAAOu4B,EAAAA,QAEJ4nW,CACX,CA/DqC,CA+DnCtgY,EAAAA,wHC7FE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAWIzX,EAAiB,SAAUvb,GAAK,OAAOA,EAAEub,gBAAkB,EAC3D0/W,EAA0B,SAC1BC,EAAO,OACPC,EAAO,OACPV,EAAoC,SAAU3sW,GAE9C,SAAS2sW,EAAmBj2X,GACxB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAuGxC,OAtGA0C,EAAMoyW,YAAcvhY,EAAAA,YACpBmvB,EAAMohB,MAAQ,WAAc,MAA2B,QAApBphB,EAAMxkB,MAAMyd,GAAe,EAC9D+G,EAAM8xP,QAAU,SAAU96Q,GACtBA,EAAE84B,kBACF,IAAInB,EAAY33B,EAAEi6Q,OAAS,EAAIihH,EAAOC,EACtCnyW,EAAMqyW,qBAAqB1jW,EAAW33B,EAC1C,EACAgpB,EAAMsyW,eAAiB,SAAUt7X,GAC7BgpB,EAAMuyW,iBAAiBL,EAAMl7X,EACjC,EACAgpB,EAAMwyW,eAAiB,SAAUx7X,GAC7BgpB,EAAMuyW,iBAAiBJ,EAAMn7X,EACjC,EACAgpB,EAAMuyW,iBAAmB,SAAU5jW,EAAW33B,GAC1CgpB,EAAMqyW,qBAAqB1jW,EAAW33B,EAC1C,EACAgpB,EAAMqyW,qBAAuB,SAAU1jW,EAAW33B,GAC9C,IAAI0xB,EAAO1I,EAAMoyW,YAAYzgY,QAC7B,GAAK+2B,EAAL,CAGA,IAAI6N,EAAavW,EAAMyyW,mBACnBC,EAAYn8V,EAAa7N,EAAKi5N,YAAcj5N,EAAKo6H,YAAcp6H,EAAKygO,aAAezgO,EAAKrF,aACxFgoV,GAAwB,UAAXr0W,EAAEF,KAAmBkpB,EAAMxkB,MAAMk2X,kBAAoB1xW,EAAMxkB,MAAMm2X,mBAAqB,EACnG16G,EAAiB1gP,EAAa7N,EAAK4nF,WAAa5nF,EAAKxrB,UACrDy1X,EAAqBp8V,EAAa7N,EAAKi5N,YAAcj5N,EAAK4nF,WAAa5nF,EAAKygO,aAAezgO,EAAKxrB,UAChG01X,EAAwBlqW,EAAKi5N,cAAkC,EAAnBj5N,EAAK4nF,WACjDtwF,EAAMohB,SAAWphB,EAAMyyW,oBACnB9jW,IAAcujW,GAAQj7G,EAAiB,IACvCA,GAAkBo0F,EAClBunB,GAAyBvnB,GAEzB18U,IAAcwjW,GAAQl7G,EAAiBy7G,IACvCz7G,GAAkBo0F,EAClBunB,GAAyBvnB,GAE7Bp0F,EAAiB7kQ,KAAKC,IAAI,EAAGD,KAAKC,IAAIqgX,EAAWz7G,MAG7CtoP,IAAcujW,GAAQj7G,EAAiB,IACvCA,GAAkBo0F,EAClBsnB,GAAsBtnB,GAEtB18U,IAAcwjW,GAAQl7G,EAAiBy7G,IACvCz7G,GAAkBo0F,EAClBsnB,GAAsBtnB,GAE1Bp0F,EAAiB7kQ,KAAKI,IAAI,EAAGJ,KAAKC,IAAIqgX,EAAWz7G,KAErD,IAAI47G,EAAmC,IAAnB57G,EAChB67G,EAA4B,UAAX97X,EAAEF,KAAmBm7X,OAA0BzhY,EACpE,GAAI+lC,EAAY,CACZ,IAAIw8V,EAAgB/yW,EAAMohB,QACpBhvB,KAAKu0C,MAAMisU,IAA0BlqW,EAAKyO,aACrC/kB,KAAK4M,MAAM4zW,IAA0BlqW,EAAKyO,YAC/C/kB,KAAKu0C,MAAMgsU,IAAuBjqW,EAAKyO,aAClC/kB,KAAK4M,MAAM2zW,IAAuBjqW,EAAKyO,YAClDnX,EAAM6L,SAAS,CACXmnW,aAAcH,EACdI,aAAcF,IAElBrqW,EAAKo8O,SAAS,CAAE93P,KAAMiqQ,EAAgBi8G,SAAUJ,GACpD,MAEI9yW,EAAM6L,SAAS,CACXmnW,aAAcH,EACdI,aAAc7gX,KAAKu0C,MAAMgsU,IAAuBjqW,EAAKw2J,cAC9C9sK,KAAK4M,MAAM2zW,IAAuBjqW,EAAKw2J,eAElDx2J,EAAKo8O,SAAS,CAAE5tQ,IAAK+/Q,EAAgBi8G,SAAUJ,GAjDnD,CAmDJ,EACA9yW,EAAMmzW,YAAc,SAAUr8X,EAAMU,GAChC,IAAI++B,EAAavW,EAAMyyW,mBACnBt0K,EAAa,CACb/yL,KAAM,CACFgoW,SAAU,kBACVC,SAAU98V,EACNvW,EAAMohB,QAAU,kBAAoB,iBAClC,eACNnL,QAASM,EACLvW,EAAMohB,QAAU23P,EAAAA,IAAoBD,EAAAA,IAClC5mB,EAAAA,KAEV/mP,KAAM,CACFioW,SAAU,kBACVC,SAAU98V,EACNvW,EAAMohB,QAAU,iBAAmB,kBACjC,iBACNnL,QAASM,EACLvW,EAAMohB,QAAU03P,EAAAA,IAAmBC,EAAAA,IACjCr8C,EAAAA,MAGV42I,GAAmBx8X,IAASo7X,EAAOlyW,EAAMxkB,MAAM4kP,WAAapgO,EAAMxkB,MAAM+3X,aAAe9gY,EAAAA,EACvFE,EAAWmE,IAASo7X,EAAOlyW,EAAMsyW,eAAiBtyW,EAAMwyW,eAC5D,OAAQ3hY,EAAAA,cAAoByiY,EAAiB,CAAE97X,SAAUA,EAAUrG,UAAW,GAAGqQ,OAAO28M,EAAWrnN,GAAMs8X,UAAWzgY,QAASA,EAASD,KAAMyrN,EAAWrnN,GAAMu8X,SAAUp9V,QAASkoL,EAAWrnN,GAAMm/B,QAAS9I,YAAa5a,EAAgBsW,UAAW,EAAGpnB,SAAU,QACnQ,EACAue,EAAM3vB,MAAQ,CACV2iY,aAAuC,IAAzBhzW,EAAMxkB,MAAMuB,SAC1Bk2X,aAAcjzW,EAAMxkB,MAAMuB,WAAalM,EAAAA,SAAe8qF,MAAM37D,EAAMxkB,MAAMzK,UAAY,GAEjFivB,CACX,CA2GA,OArNAuD,EAAUkuW,EAAoB3sW,GA8G9B2sW,EAAmBj0W,UAAU4K,kBAAoB,WACzC9K,KAAK9hB,MAAM2uP,YACX7sO,KAAKk2W,kBAEb,EAIA/B,EAAmBj0W,UAAU8K,mBAAqB,SAAUukB,GACxD,IAAI93C,EAAKuoB,KAAK9hB,MAAO2uP,EAAap1P,EAAGo1P,WAAYptP,EAAWhI,EAAGgI,SAC3DotP,GAAct9M,EAAU9vC,WAAaA,IACrCugB,KAAKk2W,mBACLl2W,KAAKuO,SAAS,CACVmnW,aAA2B,IAAbj2X,EACdk2X,aAAcl2X,IAAalM,EAAAA,SAAe8qF,MAAMr+D,KAAK9hB,MAAMzK,UAAY,IAGnF,EAIA0gY,EAAmBj0W,UAAUnrB,OAAS,WAClC,IAGIohY,EA7IU93S,EA0IV5mF,EAAKuoB,KAAK9hB,MAAOuB,EAAWhI,EAAGgI,SAAUw0X,EAAcx8X,EAAGw8X,YAAaxgY,EAAWgE,EAAGhE,SAAUiM,EAAWjI,EAAGiI,SAAU+rB,EAAYh0B,EAAGg0B,UACtI2qW,EAAY7iY,EAAAA,SAAe8qF,MAAM5qF,GACjC4iY,EAAgB9iY,EAAAA,SAAeinD,QAAQ/mD,GAEvCA,IACA0iY,GA/IU93S,EA+IG+3S,EA/Iap+W,MAAMmI,MAAM,KAAMnI,MAAMqmE,KA+I1Bp+E,KAAI,SAAU2gB,EAAGhM,EAAOomI,GAC5C,IAAI24O,EAAW,CACXx4X,OAAQsE,IAAamV,EACrB1a,SAAUm8X,EAAczhX,GAAO1W,MAAMhE,SACrC0a,MAAOA,EACP5U,MAAOq2X,EAAczhX,GAAO1W,MAAM8B,MAClC6lD,MAAiB,IAAVjxC,EACP0O,KAAM1O,IAAUomI,EAAMn5I,OAAS,EAC/BnC,SAAUA,GAEd,OAAOnM,EAAAA,cAAoB+iY,EAAAA,EAAwBzhX,EAAS,CAAEyW,IAAK1W,GAAS++W,GAChF,KAEJ,IAAItjV,GAAiBjhB,EAAAA,EAAAA,GAAW,2BAA4B,CACxD,WAA4B,QAAhB6kW,GAAyC,WAAhBA,EACrC,WAA4B,SAAhBA,GAA0C,UAAhBA,IAEtC/J,GAAa96V,EAAAA,EAAAA,GAAW,mBAAoB,WAChD,OAAQ77B,EAAAA,cAAoB,MAAO,CAAEM,UAAWw8C,GAAkBrwB,KAAK9hB,MAAM2uP,WAAct5P,EAAAA,cAAoBA,EAAAA,SAAgB,KAC3HysB,KAAK61W,YAAYjB,EAAM50W,KAAKjtB,MAAM2iY,cAClCniY,EAAAA,cAAoB,KAAM,CAAEQ,IAAKisB,KAAK80W,YAAajhY,UAAWq2X,EAAYnyX,KAAM,UAAWwzB,SAAUvL,KAAK9hB,MAAMqtB,SAAUE,UAAWA,EAAW+oP,QAASx0P,KAAKw0P,SAAW2hH,GACzKn2W,KAAK61W,YAAYhB,EAAM70W,KAAKjtB,MAAM4iY,eAAmBpiY,EAAAA,cAAoB,KAAM,CAAEM,UAAWq2X,EAAYnyX,KAAM,UAAWwzB,SAAUvL,KAAK9hB,MAAMqtB,SAAUE,UAAWA,GAAa0qW,GACxL,EACAhC,EAAmBj0W,UAAUg2W,iBAAmB,WAC5C,IAAIz+X,EAAII,EAAIK,EAAIG,EACZ+yB,EAAOpL,KAAK80W,YAAYzgY,QACxB68B,EAAM9F,GAAQA,EAAK33B,SAASusB,KAAK9hB,MAAMuB,UAAY,GACvD,GAAIyxB,aAAeugW,aAAermW,aAAgBqmW,YAAa,CAC3D,IAmBQ8E,EAnBJt9V,EAAajZ,KAAKm1W,mBAClBqB,EAAWv9V,EAAa7N,EAAKo6H,YAAcp6H,EAAKrF,aAChD0wW,EAAUx9V,EAAa/H,EAAIs0H,YAAct0H,EAAInL,aAC7C2wW,EAAYz9V,EAAa,OAAS,MAClC09V,EAAsB19V,EAAa7N,EAAK4nF,WAAa5nF,EAAKxrB,UAC1D+5Q,EAAiB,EACrB,GAAI35P,KAAK8jB,QAEL6yV,IAA6C,GADzCJ,EAAYrlW,EAAIywL,YAEJ,GACZg4D,EAAiB48G,EAAYE,EAAUrrW,EAAKu2L,WAC5Cv2L,EAAKo8O,WAAU/vQ,EAAK,CAAC,GAAMi/X,GAAa/8G,EAAgBliR,EAAGm+X,SAAWjB,EAAyBl9X,KAE1F8+X,EAAYE,EAAUD,EAAWG,IACtCh9G,EAAiBg9G,EAAsBJ,EAAYE,EACnDrrW,EAAKo8O,WAAU3vQ,EAAK,CAAC,GAAM6+X,GAAa/8G,EAAgB9hR,EAAG+9X,SAAWjB,EAAyB98X,UAK/F8+X,EAAsBH,GADtBD,EAAYt9V,EAAa/H,EAAIywL,WAAav2L,EAAKu2L,WAAazwL,EAAIu0H,UAAYr6H,EAAKq6H,WACpCgxO,GAC7C98G,EAAiB48G,EAAYE,EAAUD,EACvCprW,EAAKo8O,WAAUtvQ,EAAK,CAAC,GAAMw+X,GAAa/8G,EAAgBzhR,EAAG09X,SAAWjB,EAAyBz8X,KAE1Fy+X,EAAsBJ,IAC3B58G,EAAiB48G,EACjBnrW,EAAKo8O,WAAUnvQ,EAAK,CAAC,GAAMq+X,GAAa/8G,EAAgBthR,EAAGu9X,SAAWjB,EAAyBt8X,IAG3G,CACJ,EACA87X,EAAmBj0W,UAAUi1W,iBAAmB,WAC5C,MAAO,aAAa1nW,KAAKzN,KAAK9hB,MAAM+1X,aAAe,MACvD,EAKAE,EAAmBnoW,UAAY,CAC3Bv4B,SAAUw4B,EAAAA,UAAoB,CAC1BA,EAAAA,QACAA,EAAAA,QAAkBA,EAAAA,WAEtBvsB,SAAUusB,EAAAA,KACVR,UAAWQ,EAAAA,KACXxsB,SAAUwsB,EAAAA,OACVV,SAAUU,EAAAA,QAEPkoW,CACX,CAvNwC,CAuNtC5gY,EAAAA,2FC/PE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAII4pW,EAAwC,SAAU9uW,GAElD,SAAS8uW,IACL,IAAI5zW,EAAmB,OAAX8E,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,KA6BhE,OAzBA0C,EAAMkwV,QAAU,KAIhBlwV,EAAMuF,MAAQ,WACNvF,EAAMkwV,UACNlwV,EAAMkwV,QAAQrnV,SAAW,EACzB7I,EAAMkwV,QAAQ3qV,QAEtB,EACAvF,EAAMs4K,KAAO,WACLt4K,EAAMkwV,UACNlwV,EAAMkwV,QAAQrnV,UAAY,EAC1B7I,EAAMkwV,QAAQ53K,OAEtB,EACAt4K,EAAMrtB,QAAU,WACRqtB,EAAMxkB,MAAMwB,UACZgjB,EAAMxkB,MAAMwB,SAASgjB,EAAMxkB,MAAM0W,OAEjC8N,EAAMkwV,UACNlwV,EAAMkwV,QAAQrnV,SAAW,EACzB7I,EAAMkwV,QAAQ3qV,QAEtB,EACOvF,CACX,CAyCA,OAzEAuD,EAAUqwW,EAAwB9uW,GAoClC8uW,EAAuBp2W,UAAUnrB,OAAS,WACtC,IAAI0C,EACAirB,EAAQ1C,KACRnoB,EAAKmoB,KAAK9hB,MAAO9K,EAAKyE,EAAGzE,GAAI+H,EAAStD,EAAGsD,OAAQjB,EAAWrC,EAAGqC,SAAUhC,EAAKL,EAAGmI,MAAOA,OAAe,IAAP9H,EAAgB,WAAaA,EAAI2tD,EAAQhuD,EAAGguD,MAAOviC,EAAOzrB,EAAGyrB,KAC7JplB,EAAQ,CACR,GAAM9K,EACN,gBAAiB+H,EACjB,gBAAiB/H,EACjB,gBAAiB8G,EACjB,cAAeA,EACf,KAAQ,MACR7E,QAAU6E,OAA0BhH,EAAf8sB,KAAK3qB,SAE1Bw0X,GAAcz6V,EAAAA,EAAAA,GAAW,WAAW33B,EAAK,CAAC,GACvC,WAAaouD,EAChBpuD,EAAG,UAAY6rB,EACf7rB,EAAG,cAAgByC,EACnBzC,EAAG,YAAc0D,EACjB1D,IACJ,OAAQlE,EAAAA,cAAoB,KAAMshB,EAAS,CAAC,EAAG3W,EAAO,CAAErK,UAAWg2X,EAAa91X,IAAK,SAAUy3B,GAAM,OAAO9I,EAAMkwV,QAAUpnV,CAAI,EAAG1B,OAAQ9J,KAAKg7K,OAC5IznM,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,UAAYmM,GAC7D,EAIAs2X,EAAuBtqW,UAAY,CAC/B7wB,OAAQ8wB,EAAAA,KACR/xB,SAAU+xB,EAAAA,KACVrX,MAAOqX,EAAAA,OACPvsB,SAAUusB,EAAAA,KACVjsB,MAAOisB,EAAAA,UAAoB,CACvBA,EAAAA,OACAA,EAAAA,UAEJ45B,MAAO55B,EAAAA,KACP3I,KAAM2I,EAAAA,MAEHqqW,CACX,CA3E4C,CA2E1C/iY,EAAAA,iFCxGE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAiBzCthB,EAA6B,SAAUynB,GAEvC,SAASznB,IACL,OAAkB,OAAXynB,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAuBA,OA1BAiG,EAAUlmB,EAAaynB,GAOvBznB,EAAYmgB,UAAUnrB,OAAS,WAC3B,OAAO,IACX,EAIAgL,EAAYisB,UAAY,CACpB9xB,SAAU+xB,EAAAA,KACVuoW,iBAAkBvoW,EAAAA,OAClBx4B,SAAUw4B,EAAAA,UAAoB,CAC1BA,EAAAA,QACAA,EAAAA,OAEJjsB,MAAOisB,EAAAA,UAAoB,CACvBA,EAAAA,OACAA,EAAAA,QACAA,EAAAA,QAGDlsB,CACX,CA5BiC,CA4B/BxM,EAAAA,iFC0BF,QAhEyC,WACrC,SAASqjY,EAAoB12R,EAASg6C,EAAW+1E,EAAQklI,EAAYp3S,QACjD,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAIr7B,EAAQ1C,KACZA,KAAKkgF,QAAUA,EACflgF,KAAKk6H,UAAYA,EACjBl6H,KAAKiwM,OAASA,EACdjwM,KAAKm1U,WAAaA,EAClBn1U,KAAK+9B,QAAUA,EACf/9B,KAAK62W,0BAA4B,SAAUC,GACvC,IAAIC,EAAsBC,EAAAA,GAAoCzjY,EAAAA,cAAoBmvB,EAAMq7B,QAAQk5U,aAAc,CAC1G5yR,QAASyyR,EAAYzyR,QAASC,WAAYwyR,EAAYxyR,cAE1D,MAAO,SAASpgG,OAAO6yX,EAAqB,UAChD,CACJ,CA+CA,OA9CAH,EAAoB12W,UAAU9Q,QAAU,SAAUymD,GAC9C,IAAInzC,EAAQ1C,KACRk3W,EAAcl3W,KAAKkgF,QAAQlgF,KAAKm1U,WAAYn1U,KAAKm3W,kBAChD1iY,MAAK,SAAU8sE,GAAS,OAAO7+C,EAAMw3H,UAAU34E,EAAO7+C,EAAM00W,gBAAkB,IAC9E3iY,MAAK,SAAU4iY,GAAW,OAAO30W,EAAMutM,OAAOonK,EAAS30W,EAAMq7B,QAAQxuC,UAzB5D,aAyByFmT,EAAM40W,iBAAmB,IAC5HzhU,GACAqhU,EAAYziY,KAAKohE,EAAUA,EAEnC,EACA+gU,EAAoB12W,UAAUi3W,eAAiB,WAC3C,MAAO,CACHn1R,WAAYhiF,KAAK+9B,QAAQikD,WACzBO,eAAgBviF,KAAK+9B,QAAQwkD,eAC7BgC,aAAcvkF,KAAK+9B,QAAQwmD,aAC3BjpG,OAAQ0kB,KAAK+9B,QAAQziD,OACrBgU,UAAW0Q,KAAK+9B,QAAQzuC,UACxBspI,UAAW54H,KAAK+9B,QAAQ66F,UACxBrzC,cAAevlF,KAAK+9B,QAAQwnD,cAC5B11F,MAAOmQ,KAAK+9B,QAAQluC,MACpBozF,SAAUjjF,KAAK+9B,QAAQk5U,cAAgBj3W,KAAK62W,0BAEpD,EACAD,EAAoB12W,UAAUk3W,cAAgB,WAC1C,MAAO,CACHhgP,OAAQp3H,KAAK+9B,QAAQq5F,OACrBG,QAASv3H,KAAK+9B,QAAQw5F,SA7Cb,2BA8CTh4H,KAAMS,KAAK+9B,QAAQx+B,KACnB03H,OAAQj3H,KAAK+9B,QAAQw5U,gBACrBjgP,SAAUt3H,KAAK+9B,QAAQu5F,SACvBsB,UAAW54H,KAAK+9B,QAAQ66F,UACxBt9I,OAAQ0kB,KAAK+9B,QAAQziD,OACrBynG,WAAW,EACXzzF,UAAW0Q,KAAK+9B,QAAQzuC,UACxB6nI,SAAUn3H,KAAK+9B,QAAQo5F,SACvBE,QAASr3H,KAAK+9B,QAAQs5F,QACtBr3I,MAAOggB,KAAK+9B,QAAQ/9C,MAE5B,EACA42X,EAAoB12W,UAAUo3W,eAAiB,WAC3C,MAAO,CACHnnK,WAAYnwM,KAAK+9B,QAAQoyK,WACzBW,UAAW9wM,KAAK+9B,QAAQ+yK,UACxBD,YAAa7wM,KAAK+9B,QAAQ8yK,YAC1BT,SAAUpwM,KAAK+9B,QAAQqyK,SAE/B,EACOwmK,CACX,CA/DyC,qICJ9BzgW,EAAkB,CACzBrgC,KAAM,4BACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,yJCTlBhyC,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GA0BzCzR,EAA2B,SAAU4X,GAErC,SAAS5X,EAAU1R,GACf,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAExC,GADA0C,EAAM80W,aAAe,KACI,qBAAdx8H,EACPA,EAAAA,gBAA0B7kO,OAEzB,CACD,IAAIwY,EAAU,iCAAiCzqC,OAAOiyB,EAAgBrgC,KAAM,MAC5E64C,GAAW,wDACXA,GAAW,OAAOzqC,OAAOiyB,EAAgB8hC,iBAAkB,4BAC3DpjE,QAAQw6D,KAAK1gB,EACjB,CACA,OAAOjsB,CACX,CAmDA,OAjEAuD,EAAUrW,EAAW4X,GAkBrB5X,EAAUsQ,UAAUnrB,OAAS,WACzB,IAAI2tB,EAAQ1C,KACZ,OAAQzsB,EAAAA,cAAoB,MAAO,CAAEQ,IAAK,SAAUy3B,GAAM9I,EAAM80W,aAAehsW,CAAI,GAAKxL,KAAK9hB,MAAMzK,SACvG,EAMAmc,EAAUsQ,UAAU1Q,KAAO,SAAUqmD,GACjC,IAAI+gU,EAAAA,EAAoB12R,EAAAA,GAASg6C,EAAAA,GAAW+1E,EAAAA,EAAQjwM,KAAKw3W,aAAcx3W,KAAK2+U,cAAcvvV,QAAQymD,EACtG,EACAjmD,EAAUsQ,UAAUy+U,WAAa,WAC7B,OAAOh8V,OAAO2mB,OAAO,CAAC,EAAGtJ,KAAK9hB,MAAO,CAAE5C,QAAQm8X,EAAAA,EAAAA,GAAcz3W,KAAK9hB,QACtE,EAIA0R,EAAUoc,UAAY,CAClBorH,OAAQnrH,EAAAA,OACR+1E,WAAY/1E,EAAAA,UAAoB,CAACA,EAAAA,KAAgBA,EAAAA,SACjDs2E,eAAgBt2E,EAAAA,OAChBs4E,aAAct4E,EAAAA,OACdsrH,QAAStrH,EAAAA,OACT1M,KAAM0M,EAAAA,WAAqBhvB,MAC3Bs6X,gBAAiBtrW,EAAAA,OACjB1c,SAAU0c,EAAAA,OACVkkM,WAAYlkM,EAAAA,KACZqrH,SAAUrrH,EAAAA,OACV2sH,UAAW3sH,EAAAA,KACX3wB,OAAQ2wB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,OAAkBA,EAAAA,MAAgB,CACzEvc,KAAMuc,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC7CryB,IAAKqyB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC5CpyB,MAAOoyB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC9CkuE,OAAQluE,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,aAEvDgrW,aAAchrW,EAAAA,IACd3c,UAAW2c,EAAAA,IACXs5E,cAAet5E,EAAAA,KACfpc,MAAOoc,EAAAA,OACP6kM,UAAW7kM,EAAAA,IACXmkM,SAAUnkM,EAAAA,OACV4kM,YAAa5kM,EAAAA,OACbkrH,SAAUlrH,EAAAA,OACVorH,QAASprH,EAAAA,OACTjsB,MAAOisB,EAAAA,QAEJrc,CACX,CAnE+B,CAmE7Brc,EAAAA,+EC7FE0yB,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAoBzCq2W,EAA2B,SAAUlwW,GAErC,SAASkwW,IACL,OAAkB,OAAXlwW,GAAmBA,EAAOrH,MAAMH,KAAM0M,YAAc1M,IAC/D,CAUA,OAbAiG,EAAUyxW,EAAWlwW,GAIrBkwW,EAAUx3W,UAAUnrB,OAAS,WACzB,OAAO,IACX,EACA2iY,EAAU1rW,UAAY,CAClBtc,KAAMuc,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC7CryB,IAAKqyB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC5CpyB,MAAOoyB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC9CkuE,OAAQluE,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,UAE5CyrW,CACX,CAf+B,CAe7BnkY,EAAAA,+ECjCEokY,EAAc,CAAC,SAAU,OAAQ,QAAS,OAMvC,SAASF,EAAcv5X,GAC1B,IAAI05X,EAAcrkY,EAAAA,SACbinD,QAAQt8C,EAAMzK,UACdya,MAAK,SAAUspG,GAAS,OAAOA,GAASA,EAAMh+G,OAASk+X,EAAAA,CAAW,IACvE,OAAOE,EAEX,SAAiCC,GAE7B,IADA,IAAIn7X,EAAS,CAAC,EACLoH,EAAM,EAAGA,EAAM6zX,EAAY91X,OAAQiC,IAAO,CAC/C,IAAIk4E,EAAY27S,EAAY7zX,GACxB2B,EAAQoyX,EAAgB35X,MAAM89E,QACpB9oF,IAAVuS,IACA/I,EAAOs/E,GAAav2E,EAE5B,CACA,OAAO/I,CACX,CAZyBo7X,CAAwBF,GAAe15X,EAAM5C,MACtE,yQCZIy8X,EAAuB,CAAC,EACxBC,EAAc,SAAU5oW,GAAc,OAAOzI,OAAOyI,GAAYsqB,OAAO1wC,MAAM,IAAM,EAW5EivX,EAAiB,SAAU7oW,GAClC,OAAO,SAAU/G,GAAW,OARR,SAAUA,EAAS+G,GACvC,IAAI8oW,EAAYF,EAAY5oW,GAC5B,OAAOxE,QAAQotW,EAAY3vW,EAAQx0B,WAAWqa,MAAK,SAAUra,GAAa,OAAOqkY,EAAUj9V,QAAQpnC,IAAc,CAAG,IACxH,CAKuCskY,CAAW9vW,EAAS+G,EAAa,CACxE,EAIWgpW,EAAkB,SAAU1/N,GAMnC,OALKq/N,EAAqBr/N,KACtBq/N,EAAqBr/N,GAAY,SAAUrwI,GACvC,OAAO1B,OAAO0B,EAAQqwI,UAAUljH,gBAAkBkjH,EAASljH,aAC/D,GAEGuiV,EAAqBr/N,EAChC,EAgEW2/N,EAAc,SAAUx4R,EAAMlrB,EAAW2jT,GAEhD,QADkB,IAAdA,IAAwBA,GAAY,GACnCz4R,EAAL,CAGA,GAAIy4R,GAAa3jT,EAAUkrB,GACvB,OAAOA,EAGX,IADAA,EAAOA,EAAKH,WACLG,GAAM,CACT,GAAsB,IAAlBA,EAAKrE,SAAgB,CACrB,IAAInzE,EAAUgwW,EAAYx4R,EAAMlrB,GAChC,GAAItsD,EACA,OAAOA,CAEf,CACAw3E,EAAOA,EAAKF,WAChB,CAbA,CAcJ,ECxGW44R,EAAe,gBAIfC,EAAe,gBAEtBC,EAAeL,EADP,SAERpnH,EAAS,SAAUthF,GAAU,OAAOA,EAAS,SAAW,MAAQ,EAIhEgpM,EAA2B,WAC3B,SAASA,EAAUrwW,GACfrI,KAAKqI,QAAUA,EACfrI,KAAKoL,KAAOitW,EAAYhwW,EAAS4vW,EAAe,oBACpD,CAeA,OAdAS,EAAUx4W,UAAU05B,QAAU,SAAU81I,GACpC,OAAO2oM,EAAYr4W,KAAKoL,KAAM6sW,EAAe,iBAAiB/zX,OAAOwrL,EAAS,UAAY,KAC9F,EACAgpM,EAAUx4W,UAAU9c,OAAS,SAAUssL,GAEnC,OADA1vK,KAAK4yS,WAAa5yS,KAAK4yS,YAAcylE,EAAYr4W,KAAKqI,QAAS4vW,EAAeM,IACvEF,EAAYr4W,KAAK4yS,WAAYqlE,EAAe,GAAG/zX,OAAOq0X,EAAc,KAAKr0X,OAAO8sQ,EAAOthF,KAClG,EACAgpM,EAAUx4W,UAAUmV,OAAS,SAAUq6J,GAEnC,OADA1vK,KAAK04S,WAAa14S,KAAK04S,YAAc2/D,EAAYr4W,KAAKqI,QAAS4vW,EAAeO,IACvEH,EAAYr4W,KAAK04S,WAAYu/D,EAAe,GAAG/zX,OAAOs0X,EAAc,KAAKt0X,OAAO8sQ,EAAOthF,KAClG,EACAgpM,EAAUx4W,UAAUilF,MAAQ,WACxB,OAAOkzR,EAAYr4W,KAAKqI,QAASowW,EACrC,EACOC,CACX,CApB+B,GCf3BC,EAAc,UAMPC,EAAc,SAAUvwW,EAAS4hI,GAExC,IADA,IAAIpoJ,EAASooJ,EAAMpoJ,OACViC,EAAM,EAAGA,EAAMjC,EAAQiC,IAC5BukB,EAAQvC,YAAYmkI,EAAMnmJ,GAAKo7F,WAAU,GAEjD,EAIW25R,EAAY,SAAU1zR,GAC7B,IAAIt/E,EAAUrX,SAASrV,cAAc,OAGrC,OAFA0sB,EAAQhyB,UAAY,mBACpBgyB,EAAQC,YAAYq/E,GACbt/E,CACX,EAIWizW,EAAqB,SAAU7wQ,GACtC,IAAI8wQ,EAAc9wQ,EAAQpmH,OACtBwmB,EAAU4/F,EAAQ,GAAG/oB,WAAU,GAC/Bi7N,EAAY9xS,EAAQzN,KAAK/Y,OAC7B,GAAIk3X,EAAc,EACd,IAAK,IAAIC,EAAS,EAAGA,EAAS7+D,EAAW6+D,IACrC,IAAK,IAAIC,EAAY,EAAGA,EAAYF,EAAaE,IAC7CL,EAAYvwW,EAAQzN,KAAKo+W,GAAS/wQ,EAAQgxQ,GAAWr+W,KAAKo+W,GAAQxqR,OAI9E,OAAOnmF,CACX,EAkBWumM,EAAc,SAAUw4G,EAAWvlR,EAASq3U,EAAQC,GAG3D,IAFA,IAAIh0R,EAAQ32F,SAASrV,cAAc,SAC/BigY,EAAWhyD,EAAU,GAAGloO,WAAU,GAC7Bp7F,EAAM,EAAGA,EAAMsjU,EAAUvlU,OAAQiC,IACtC80X,EAAYQ,EAAUhyD,EAAUtjU,GAAK66F,iBAAiB,QAE1D,IAAIv7F,EAAS01X,EAAmBj3U,GAC5BxyC,EAAOypX,EAAmBI,GAM9B,GALA91X,EAAOvP,UA7DQ,gBAuCY,SAAUuP,EAAQy+C,GAC7C,GAAIA,EAAQhgD,OAAS,GAAKuB,EAAOwX,KAAK/Y,OAAS,EAC3C,IAAK,IAAIiC,EAAM,EAAGA,EAAMV,EAAOwX,KAAK/Y,OAAQiC,IAAO,CAC/C,IAAIu1X,EAAiBx3U,EAAQ,GAAGjnC,KAAK9W,GAAK0qG,MAAM3sG,OAC5Cb,EAAOoC,EAAOwX,KAAK9W,GAAK0qG,MAAM6qR,IACmB,IAAjD1yW,OAAO3lB,EAAKnN,WAAWonC,QAAQ09V,KAC/B33X,EAAKnN,WAAa,IAAIqQ,OAAOy0X,GAErC,CAER,CAaIW,CAAkBl2X,EAAQy+C,GAC1BsjD,EAAMr/E,YAAYszW,GAClBj0R,EAAMr/E,YAAY1iB,GAClB+hG,EAAMr/E,YAAYzW,GACd8pX,EAAQt3X,OAAQ,CAChB,IAAIwzB,EAASyjW,EAAmBK,GAChC9jW,EAAOxhC,UAnEI,gBAoEXsxG,EAAMr/E,YAAYuP,EACtB,CACA,OAAOwjW,EAAU1zR,EACrB,ECpEWo0R,EAAgB,SAAU1zW,GACjC,IAEInpB,EAFA4zE,EAAQ,IAAIooT,EAAU7yW,GACtB+zB,EAAU02B,EAAM12B,UAEpB,GAAIA,EAAS,CACT,IAAIwtR,EAAY,CAACxtR,EAAQh0B,cAAc,aACnCi8B,EAAU,CAACyuB,EAAMltE,SAASwiB,cAAc,UACxCszW,EAAS,CAACt/U,EAAQh0B,cAAc,UAChCyP,EAASi7C,EAAMj7C,SACf8jW,EAAU9jW,EAAS,CAACA,EAAOzP,cAAc,UAAY,GACzDlpB,EAASkyN,EAAYw4G,EAAWvlR,EAASq3U,EAAQC,EACrD,MAEIz8X,EAASm8X,EAAUvoT,EAAM60B,QAAQjG,WAAU,IAE/C,OAAOxiG,CACX,ECfO,SAAS88X,EAAmBpqX,GAC/B,OAAO,SAAU6P,EAAMw6W,EAAkB5jU,EAAUt9D,EAAMykE,GAErD,YADyB,IAArBy8T,IAA+BA,EAAmB,CAAC,GAI/D,SAAqBrqX,EAAS6P,EAAMw6W,EAAkB5jU,EAAUt9D,EAAMykE,QACzC,IAArBy8T,IAA+BA,EAAmB,CAAC,GAEvD,IAAIC,EACAC,EACAC,EACJ,SAASC,KACLH,EAAmBlrX,SAASrV,cAAc,QACzB+uD,aAAa,QAAS,+CACvCyxU,EAAmBnrX,SAASrV,cAAc,OAC1CugY,EAAiB5zW,YAAY6zW,GAC7BnrX,SAASa,KAAKyW,YAAY4zW,GAC1BxnJ,EAAAA,OAAgB4nJ,IAA2BH,EAAkBI,EACjE,CACA,SAASA,IACL3qX,EAAQ4qX,IAAgCP,EAAkBQ,EAC9D,CACA,SAASA,IACLzrX,SAASa,KAAK2W,YAAY0zW,GAC1BlrX,SAASa,KAAK2W,YAAY4zW,GAC1BF,EAAmBE,OAAiB1mY,EAChC2iE,GACAA,GAER,CACA,SAASmkU,KAILJ,EAAiBprX,SAASrV,cAAc,QACzBtF,UAAY,4BAC3B,IAAI6I,EAAS68X,EAAcI,GAG3B,OAFAC,EAAe9zW,YAAYppB,GAC3B8R,SAASa,KAAKyW,YAAY8zW,GACnBl9X,CACX,CACA,SAASo9X,IACL,IAAII,EAAkB3hY,GAAQ,CAAEA,KAAMA,EAAMgpB,MAAOhpB,EAAKsJ,OAAQ0pR,SAAUhzR,EAAKsJ,OAAQiqB,KAAM,GAGzFquW,EAAkB,CAAEzmY,MAAOiP,OAAO2mB,OAAO,CAAC,EAAGrK,EAAK/gB,MAAMxK,MAAO,CAAE2G,MAAO,YACxE8iD,EAAcx6C,OAAO2mB,OAAO,CAAC,EAAG4wW,EAAiBC,GACrD,GAAIn9T,GAAWA,EAAQn7D,OAAS,EAAG,CAC/B,IAAIu4X,EAQhB,SAAkCn7W,GAC9B,OAAO1rB,EAAAA,SACFinD,QAAQv7B,EAAK/gB,MAAMzK,UACnBqP,QAAO,SAAU00G,GAAS,OAAOA,GAASA,EAAMh+G,MACtB,yBAA3Bg+G,EAAMh+G,KAAKsgC,WAAwC,GAC3D,CAboCugW,CAAyBp7W,GACjD,OAAO1rB,EAAAA,aAAmB0rB,EAAMk+B,EAAa6f,EAAQ94D,OAAOk2X,GAChE,CAEI,OAAO7mY,EAAAA,aAAmB0rB,EAAMk+B,EAExC,CA/CA08U,GAgDJ,CArDeS,CAAYlrX,EAAS6P,EAAMw6W,EAAkB5jU,EAAUt9D,EAAMykE,EACxE,CACJ,CCXA,IAAI/2C,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAuBzClC,EAA+B,SAAUqI,GAEzC,SAASrI,EAAcjhB,GACnB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAExC,OADA0C,EAAM43W,YAAcd,EAAmB92W,EAAM63W,cACtC73W,CACX,CAiEA,OAtEAuD,EAAU9G,EAAeqI,GASzBrI,EAAce,UAAUnrB,OAAS,WAC7B,OAAO,IACX,EASAoqB,EAAce,UAAU1Q,KAAO,SAAUjX,EAAMs9D,GAC3C71C,KAAKs6W,YAAYt6W,KAAKw6W,UAAW73X,OAAO2mB,OAAO,CAAC,EAAGtJ,KAAK9hB,MAAO,CAAE5C,QAAQm8X,EAAAA,EAAAA,GAAcz3W,KAAK9hB,SAAW23D,EAAUt9D,EAAMynB,KAAKy6W,mBAChI,EACAt7W,EAAce,UAAUq6W,WAAa,WACjC,OAAOnrX,EAAAA,CACX,EACA+P,EAAce,UAAUs6W,QAAU,WAC9B,OAAOjnY,EAAAA,SACFinD,QAAQx6B,KAAK9hB,MAAMzK,UACnBya,MAAK,SAAUspG,GAAS,OAAOA,GACL,mBAA3BA,EAAMh+G,KAAKsgC,WAAkC,GACrD,EACA3a,EAAce,UAAUu6W,iBAAmB,WACvC,OAAOlnY,EAAAA,SACFinD,QAAQx6B,KAAK9hB,MAAMzK,UACnBqP,QAAO,SAAU00G,GAAS,OAAOA,GACP,yBAA3BA,EAAMh+G,KAAKsgC,WAAwC,GAC3D,EAIA3a,EAAc6M,UAAY,CACtBorH,OAAQnrH,EAAAA,OACR+1E,WAAY/1E,EAAAA,UAAoB,CAACA,EAAAA,KAAgBA,EAAAA,SACjDs2E,eAAgBt2E,EAAAA,OAChBs4E,aAAct4E,EAAAA,OACdsrH,QAAStrH,EAAAA,OACT1M,KAAM0M,EAAAA,WAAqBhvB,MAC3Bs6X,gBAAiBtrW,EAAAA,OACjB1c,SAAU0c,EAAAA,OACVkkM,WAAYlkM,EAAAA,KACZqrH,SAAUrrH,EAAAA,OACV2sH,UAAW3sH,EAAAA,KACX3wB,OAAQ2wB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,OAAkBA,EAAAA,MAAgB,CACzEvc,KAAMuc,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC7CryB,IAAKqyB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC5CpyB,MAAOoyB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC9CkuE,OAAQluE,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,aAEvDgrW,aAAchrW,EAAAA,IACd3c,UAAW2c,EAAAA,IACXs5E,cAAet5E,EAAAA,KACfpc,MAAOoc,EAAAA,OACP6kM,UAAW7kM,EAAAA,IACXmkM,SAAUnkM,EAAAA,OACV4kM,YAAa5kM,EAAAA,OACbkrH,SAAUlrH,EAAAA,OACVorH,QAASprH,EAAAA,OACTjsB,MAAOisB,EAAAA,QAEJ9M,CACX,CAxEmC,CAwEjC5rB,EAAAA,WC3FSglY,EAAe,gBAIfC,EAAe,gBAEtBC,EAAeL,EADP,SAKRM,EAA2B,WAC3B,SAASA,EAAUrwW,GACfrI,KAAKqI,QAAUA,EACfrI,KAAKoL,KAAOitW,EAAYhwW,EAAS4vW,EAAe,UACpD,CAeA,OAdAS,EAAUx4W,UAAU05B,QAAU,WAC1B,OAAOy+U,EAAYr4W,KAAKoL,KAAM6sW,EAAe,UACjD,EACAS,EAAUx4W,UAAU9c,OAAS,WAEzB,OADA4c,KAAK4yS,WAAa5yS,KAAK4yS,YAAcylE,EAAYr4W,KAAKqI,QAAS4vW,EAAeM,IACvEF,EAAYr4W,KAAK4yS,WAAYqlE,EAAe,GAAG/zX,OAAOq0X,IACjE,EACAG,EAAUx4W,UAAUmV,OAAS,WAEzB,OADArV,KAAK04S,WAAa14S,KAAK04S,YAAc2/D,EAAYr4W,KAAKqI,QAAS4vW,EAAeO,IACvEH,EAAYr4W,KAAK04S,WAAYu/D,EAAe,GAAG/zX,OAAOs0X,IACjE,EACAE,EAAUx4W,UAAUilF,MAAQ,WACxB,OAAOkzR,EAAYr4W,KAAKqI,QAASowW,EACrC,EACOC,CACX,CApB+B,GCTpBa,EAAgB,SAAU1zW,GACjC,IAEInpB,EAFA4zE,EAAQ,IAAIooT,EAAU7yW,GACtB+zB,EAAU02B,EAAM12B,UAEhB8gV,EAAsBpqT,EAAMltE,SAKhC,GAJIs3X,EAAoBr/N,WAAWx5J,OAAS,GACxC64X,EAAoB10W,YAAY00W,EAAoBr/N,WAAW,IAEnEq/N,EAAoBr/N,WAAW,GAAGA,WAAW1sJ,SAAQ,SAAUu+L,GAAc,OAAOA,EAAWx5M,MAAMkG,IAAM,CAAG,IAC1GggD,EAAS,CACT,IAAIwtR,EAAY,CAACxtR,EAAQh0B,cAAc,aACnCi8B,EAAU,CAAC64U,GACXxB,EAAS,CAACt/U,EAAQh0B,cAAc,UAChCyP,EAASi7C,EAAMj7C,SACf8jW,EAAU9jW,EAAS,CAACA,EAAOzP,cAAc,UAAY,GACzDlpB,EAASkyN,EAAYw4G,EAAWvlR,EAASq3U,EAAQC,EACrD,MAEIz8X,EAASm8X,EAAUvoT,EAAM60B,QAAQjG,WAAU,IAE/C,OAAOxiG,CACX,ECpBO,SAASi+X,EAAuBvrX,GACnC,OAAO,SAAUwrX,EAAUnB,EAAkB5jU,EAAUt9D,EAAMykE,GAEzD,YADyB,IAArBy8T,IAA+BA,EAAmB,CAAC,GAI/D,SAAyBrqX,EAASwrX,EAAUnB,EAAkB5jU,EAAUt9D,EAAMykE,QACjD,IAArBy8T,IAA+BA,EAAmB,CAAC,GAEvD,IAAIoB,EACAC,EACAlB,EACJ,SAASmB,KACLF,EAAuBrsX,SAASrV,cAAc,QACzB+uD,aAAa,QAAS,+CAC3C4yU,EAAuBtsX,SAASrV,cAAc,OAC9C0hY,EAAqB/0W,YAAYg1W,GACjCtsX,SAASa,KAAKyW,YAAY+0W,GAC1B3oJ,EAAAA,OAAgB8oJ,IAA+BF,EAAsBG,EACzE,CACA,SAASA,IACL7rX,EAAQ4qX,IAAgCP,EAAkBQ,EAC9D,CACA,SAASA,IACLzrX,SAASa,KAAK2W,YAAY60W,GAC1BrsX,SAASa,KAAK2W,YAAY4zW,GAC1BiB,EAAuBjB,OAAiB1mY,EACpC2iE,GACAA,GAER,CACA,SAASmkU,KAILJ,EAAiBprX,SAASrV,cAAc,QACzBtF,UAAY,gCAC3B,IAAI6I,EAAS68X,EAAcuB,GAG3B,OAFAlB,EAAe9zW,YAAYppB,GAC3B8R,SAASa,KAAKyW,YAAY8zW,GACnBA,CACX,CACA,SAASoB,IACL,IAAId,EAAkBT,EAAiByB,UAAY3iY,EAAO,CAAEA,KAAMA,EAAMwzB,KAAM6vB,OAAOkqG,UAAWh6H,KAAM,GAAM,CAAC,EAGzGquW,EAAkB,CAAEzmY,MAAOiP,OAAO2mB,OAAO,CAAC,EAAGsxW,EAAS18X,MAAMxK,MAAO,CAAE2G,MAAO,YAC5E8iD,EAAcx6C,OAAO2mB,OAAO,CAAC,EAAG4wW,EAAiBC,GACrD,OAAIn9T,GAAWA,EAAQn7D,OAAS,EACrBtO,EAAAA,aAAmBqnY,EAAUj4X,OAAO2mB,OAAO,CAAC,EAAG6zB,EAAa,CAAE6f,QAASA,KAGvEzpE,EAAAA,aAAmBqnY,EAAUz9U,EAE5C,CA9CA49U,GA+CJ,CApDeI,CAAgB/rX,EAASwrX,EAAUnB,EAAkB5jU,EAAUt9D,EAAMykE,EAChF,CACJ,CCXA,IAAI/2C,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAuBzC+5W,EAAmC,SAAU5zW,GAE7C,SAAS4zW,EAAkBl9X,GACvB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAExC,OADA0C,EAAMy4W,gBAAkBR,EAAuBj4W,EAAM63W,cAC9C73W,CACX,CA6DA,OAlEAuD,EAAUm1W,EAAmB5zW,GAS7B4zW,EAAkBl7W,UAAUnrB,OAAS,WACjC,OAAO,IACX,EAUAqmY,EAAkBl7W,UAAU1Q,KAAO,SAAUjX,EAAMykE,EAASnH,GACxD71C,KAAKm7W,gBAAgBn7W,KAAKq7W,cAAe14X,OAAO2mB,OAAO,CAAC,EAAGtJ,KAAK9hB,MAAO,CAAE5C,QAAQm8X,EAAAA,EAAAA,GAAcz3W,KAAK9hB,SAAW23D,EAAUt9D,EAAMykE,GAAW,GAC9I,EACAo+T,EAAkBl7W,UAAUq6W,WAAa,WACrC,OAAOnrX,EAAAA,CACX,EACAgsX,EAAkBl7W,UAAUm7W,YAAc,WACtC,IAAI5nY,EAAWusB,KAAK9hB,MAAMzK,SAC1B,GAAIA,GAAYA,EAASyK,MAAM3F,MAAQ9E,EAASyK,MAAM8+D,QAClD,OAAOh9C,KAAK9hB,MAAMzK,QAE1B,EAIA2nY,EAAkBpvW,UAAY,CAC1BorH,OAAQnrH,EAAAA,OACR+1E,WAAY/1E,EAAAA,UAAoB,CAACA,EAAAA,KAAgBA,EAAAA,SACjDs2E,eAAgBt2E,EAAAA,OAChBs4E,aAAct4E,EAAAA,OACdsrH,QAAStrH,EAAAA,OACT1M,KAAM0M,EAAAA,WAAqBhvB,MAC3Bs6X,gBAAiBtrW,EAAAA,OACjB1c,SAAU0c,EAAAA,OACVkkM,WAAYlkM,EAAAA,KACZqrH,SAAUrrH,EAAAA,OACV2sH,UAAW3sH,EAAAA,KACX3wB,OAAQ2wB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,OAAkBA,EAAAA,MAAgB,CACzEvc,KAAMuc,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC7CryB,IAAKqyB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC5CpyB,MAAOoyB,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,SAC9CkuE,OAAQluE,EAAAA,UAAoB,CAACA,EAAAA,OAAkBA,EAAAA,aAEvDgrW,aAAchrW,EAAAA,IACd3c,UAAW2c,EAAAA,IACXs5E,cAAet5E,EAAAA,KACfpc,MAAOoc,EAAAA,OACP6kM,UAAW7kM,EAAAA,IACXmkM,SAAUnkM,EAAAA,OACV4kM,YAAa5kM,EAAAA,OACbkrH,SAAUlrH,EAAAA,OACVorH,QAASprH,EAAAA,OACTjsB,MAAOisB,EAAAA,OACPivW,SAAUjvW,EAAAA,MAEPmvW,CACX,CApEuC,CAoErC7nY,EAAAA,+GCjFK,SAAS6b,EAAQ+lV,EAAYp3S,EAAS8X,QACzB,IAAZ9X,IAAsBA,EAAU,CAAC,GACrC,IAAI64U,EAAAA,EAAoB12R,EAAAA,GAASg6C,EAAAA,GAAW+1E,EAAAA,EAAQklI,EAAYp3S,GAAS3uC,QAAQymD,EACrF,4FCbIylU,EAAa,SAAUjzW,GACvBA,EAAQ30B,MAAMiiP,mBAAqB,GACnC39N,MAAMklC,KAAK70B,EAAQkV,WAAW5uB,SAAQ,SAAU5B,GACxCA,EAAET,WAAW,aACb+b,EAAQkV,UAAUC,OAAOzwB,EAEjC,GACJ,EACIm1R,EAA4B,qBAAXnpS,QACjB,UAAU00B,KAAK10B,OAAOu1C,UAAUC,kDCTpC,QACc,SADd,EAEc,SAFd,EAGc,SAHd,EAIY,OAJZ,EAKa,QALb,EAMW,MCuDX,QA3DY,SAAUwP,GAClB,IAAIowJ,EAAapwJ,EAAQowJ,WACrBn1K,EAAc+kB,EAAQ/kB,YACtB2tN,EAAc5oM,EAAQ4oM,YACtB40I,EAAex9U,EAAQw9U,aACvBjgY,EAASyiD,EAAQziD,YAAwB,IAAXA,IAAoBA,EAAS,CAAC,GAChE,IAAIkgY,EAAmBxiW,EAAYC,WAC/BwiW,EAAiBziW,EAAYE,SAC7BwiW,EAAoBH,EAAatiW,WACjC0iW,EAAkBJ,EAAariW,SAE/B0iW,EAAmBtgY,EAAO29B,YAAc,EACxC4iW,EAAiBvgY,EAAO49B,UAAY,EAEpCt/B,EAAMu0M,EAAWv0M,IACjB8V,EAAOy+L,EAAWz+L,KAsCtB,OApCI+rX,IAAmBlnS,IACnB36F,GAAOu0M,EAAW9yM,QAGlBogY,IAAmBlnS,GAAgBknS,IAAmBlnS,IACtD36F,GAAOkb,KAAKu0C,MAAM8kJ,EAAW9yM,OAAS,IAGtCsgY,IAAoBpnS,IACpB36F,GAAO+sP,EAAYtrP,OACnBwgY,IAAmB,GAGnBF,IAAoBpnS,GAAgBonS,IAAoBpnS,IACxD36F,GAAOkb,KAAKu0C,MAAMs9L,EAAYtrP,OAAS,GACvCwgY,IAAmB,GAGnBL,IAAqBjnS,IACrB7kF,GAAQy+L,EAAW9zM,OAGnBmhY,IAAqBjnS,GAAgBinS,IAAqBjnS,IAC1D7kF,GAAQoF,KAAKu0C,MAAM8kJ,EAAW9zM,MAAQ,IAGtCqhY,IAAsBnnS,IACtB7kF,GAAQi3O,EAAYtsP,MACpBuhY,IAAqB,GAGrBF,IAAsBnnS,GAAgBmnS,IAAsBnnS,IAC5D7kF,GAAQoF,KAAKu0C,MAAMs9L,EAAYtsP,MAAQ,GACvCuhY,IAAqB,GAGlB,CACHhiY,IAAKA,EAAMiiY,EACXnsX,KAAMA,EAAOksX,EAErB,EC3DA,EACW,MADX,EAEY,OAFZ,EAGY,OCAZ,IAAIx4N,EAAM,SAASzpK,EAAUJ,EAAMuiY,GAC/B,IAAIzjR,EAAS,EAUb,OARI1+G,EAAWJ,EAAOuiY,IAClBzjR,EAASyjR,GAAgBniY,EAAWJ,IAGpCI,EAAW,IACX0+G,GAAU1+G,GAGP0+G,CACX,EAEI03I,EAAO,SAASh8P,GAChB,IAAI00B,EAAS10B,EAAI00B,OACblvB,EAAOxF,EAAIwF,KACXwiY,EAAahoY,EAAIgoY,WACjBD,EAAe/nY,EAAI+nY,aACnBE,EAAmBjoY,EAAIioY,iBACvBC,EAAoBloY,EAAIkoY,kBAGxB5jR,EAAS,EAIT6jR,EAAc,EANLnoY,EAAIuH,OAQjB,GAAI2gY,IAAsBD,KAJDC,IAAsBE,GAAqBF,IAAsBE,MACnEH,IAAqBG,GAAqBH,IAAqBG,GAGE,CACpF,IAAIC,EAAiBJ,IAAqBG,GAAkBH,IAAqBG,EAC7E1zW,EAAS,GAAK2zW,EAEV3zW,GADJ4vF,EAAS9+G,EAAOwiY,EAAaG,GACP3iY,EAAOuiY,IACzBzjR,EAAS,GAEN5vF,GAAU,IAAM2zW,IACnB3zW,EAASlvB,EAAOuiY,IAChBzjR,KAAY0jR,EAAaxiY,EAAO2iY,IAGhCzzW,EAAS4vF,EAAS,IAClBA,EAAS,GAGrB,CAEA,OAAOA,CACX,EAkFA,QAhFqB,SAAUt6D,GAC3B,IAAIowJ,EAAapwJ,EAAQowJ,WACrBn1K,EAAc+kB,EAAQ/kB,YACtB2tN,EAAc5oM,EAAQ4oM,YACtB40I,EAAex9U,EAAQw9U,aACvBc,EAAat+U,EAAQs+U,WACrBC,EAAWv+U,EAAQu+U,SACnBhhY,EAASyiD,EAAQziD,YAAwB,IAAXA,IAAoBA,EAAS,CAAC,GAChE,IAAIihY,EAAa51I,EAAY/sP,IACzB4iY,EAAc71I,EAAYj3O,KAC1B+sX,EAAgB91I,EAAYtrP,OAC5BqhY,EAAe/1I,EAAYtsP,MAC3BsiY,EAAiBL,EAASjhY,OAC1BuhY,EAAgBN,EAASjiY,MACzBuhY,EAAmBtgY,EAAO29B,YAAc,EACxC4iW,EAAiBvgY,EAAO49B,UAAY,EAEpCxpB,EAAO,EACP9V,EAAM,EAENijY,EAAgBR,EAAWnjW,WAAau9U,EACxCqmB,EAAkBT,EAAWpjW,aAAew9U,EAC5CsmB,EAAiBV,EAAWnjW,WAAau9U,EACzCumB,EAAmBX,EAAWpjW,aAAew9U,EAE7ComB,IACAjjY,GAAOwpK,EAAIm5N,EAAYE,EAAeE,IAGtCG,IACAptX,GAAQ0zJ,EAAIo5N,EAAaE,EAAcE,IAGvCG,IACAnjY,GAAOm2P,EAAK,CACRz0P,OAAQugY,EACRpzW,OAAQ8zW,EACRhjY,KAAMkjY,EACNV,WAAY5tL,EAAW9yM,OACvBygY,aAAca,EACdX,iBAAkBhjW,EAAYE,SAC9B+iW,kBAAmBV,EAAariW,YAIpC8jW,IACAttX,GAAQqgP,EAAK,CACTz0P,OAAQsgY,EACRnzW,OAAQ+zW,EACRjjY,KAAMmjY,EACNX,WAAY5tL,EAAW9zM,MACvByhY,aAAcc,EACdZ,iBAAkBhjW,EAAYC,WAC9BgjW,kBAAmBV,EAAatiW,cAIxC,IAAIgkW,EAAkBF,GAA0B,IAARnjY,EACpCsjY,EAAoBF,GAA6B,IAATttX,EACxCytX,EAAiBN,GAAyB,IAARjjY,EAClCwjY,EAAmBN,GAA4B,IAATptX,EAE1C,MAAO,CACH2tX,QAASH,GAAqBD,EAC9BK,OAAQH,GAAkBC,EAC1BrtI,KAAM,CACF92N,WAAYikW,EACZhkW,SAAU+jW,GAEd75N,IAAK,CACDnqI,WAAYmkW,EACZlkW,SAAUikW,GAEd10W,OAAQ,CACJ/Y,KAAMA,EACN9V,IAAKA,GAGjB,EC9EA,IAAI8rP,EAlBJ,SAAiBje,GACb,IAAI/qO,EACA6gY,GAAS,EAEb,OAAO,WAEH,IADA,IAAIr1W,EAAO,GAAI6uB,EAAMrqB,UAAU7qB,OACvBk1C,KAAQ7uB,EAAM6uB,GAAQrqB,UAAWqqB,GAEzC,OAAIwmV,IAIJ7gY,EAAS+qO,EAAItnN,WAAM,EAAQ+H,GAC3Bq1W,GAAS,GAJE7gY,CAMf,CACJ,CAEiC8gY,EAAQ,SAAU73I,GAC/C,IAAKvgO,IAAe,OAAO,EAI3B,IAAIwgO,EAAkBD,EAAgBA,EAActvN,cAAgB7nB,SAEpE,IAAKo3O,IAAoBA,EAAgBv2O,KAAQ,OAAO,EAExD,IACIkrI,EAASqrG,EAAgBzsP,cAAc,OAC3CohJ,EAAO7mJ,MAAMy3B,UAAY,6BACzBovH,EAAOp3C,UAAY,uDAEnByiJ,EAAgBv2O,KAAKyW,YAAYy0H,GAEjC,IAAIsrG,EAPM,KAOQtrG,EAAO9mJ,SAAS,GAAGkuG,wBAAwB/nG,IAI7D,OAFAgsP,EAAgBv2O,KAAK2W,YAAYu0H,GAE1BsrG,CACX,IAEIzgO,EAAY,WAAc,OAAOwF,QAEf,qBAAX7xB,QACPA,OAAOyV,UACPzV,OAAOyV,SAASrV,cACjB,EAECqzC,EAAQ,CACRixV,WAnFa,SAAU5gS,EAAMp0E,GAC7B,OAAKo0E,GACM,CAAExhG,OAAQ,EAAGqU,KAAM+Y,EAAO/Y,KAAM9V,IAAK6uB,EAAO7uB,IAAKS,MAAO,EAIvE,EA8EIqjY,UA5EY,SAAU7gS,EAAMhtF,GAC5B,OAAKgtF,GAAkB,IAAVhtF,EAIN,CACHxU,OAAQwhG,EAAKxhG,OAASwU,EACtBH,KAAMmtF,EAAKntF,KAAOG,EAClBjW,IAAKijG,EAAKjjG,IAAMiW,EAChBxV,MAAOwiG,EAAKxiG,MAAQwV,GAPbgtF,CASf,EAkEI8gS,qBAhEuB,SAAU9gS,EAAM+gS,GACvC,OAAKA,EAEQ,CACTviY,OAAQwhG,EAAKxhG,OACbqU,KAAMmtF,EAAKntF,KAAOkuX,EAAeluX,KACjC9V,IAAKijG,EAAKjjG,IAAMgkY,EAAehkY,IAC/BS,MAAOwiG,EAAKxiG,OANcwiG,CAUlC,EAsDI6oJ,2BAA4BA,EAC5BtgO,UAAWA,GAGf,UC3Fe,SAASiR,EAAchO,GAClC,OAAOA,EAAQgO,eAAiBhO,EAAQ7Z,UAAY6Z,CACxD,CCEA,QAFgB,SAAUA,GAAW,OAAOgO,EAAchO,GAASo6J,WAAa,ECEhF,QAFkB,SAAUp6J,GAAW,OAAOgO,EAAchO,GAASmrF,eAAiB,ECFtF,IAAIqqR,EAAc,EAEH,SAAS1oI,IACpB,IAAK0oI,GAAmC,qBAAbrvX,SAA0B,CACjD,IAAI6W,EAAM7W,SAASrV,cAAc,OAEjCksB,EAAI3xB,MAAMutG,QAAU,oEACpB57E,EAAI89E,UAAY,SAChB30F,SAASa,KAAKyW,YAAYT,GAE1Bw4W,EAAcx4W,EAAImgI,YAAcngI,EAAIg/N,YAEpC71O,SAASa,KAAK2W,YAAYX,EAC9B,CAEA,OAAOw4W,CACX,CCZe,SAASC,EAAez1W,GACnC,IAAIi6L,EAAMsrI,EAAIvlU,GACV7Z,EAAW01O,EAAY77N,GACvB3rB,EAAS,CACTrB,OAAQinN,EAAItpN,YACZqB,MAAOioN,EAAIqoC,YAOf,OAJIn8O,EAASq9O,aAAer9O,EAASozK,aAAe,IAChDllL,EAAOrC,OAAS86P,KAGbz4P,CACX,CCde,SAASi9Q,EAAetxP,GACnC,IAAImrF,EAAkBuqR,EAAW11W,GAC7Bi6L,EAAMsrI,EAAIvlU,GAEd,MAAO,CACH8hD,EAAGm4I,EAAIwF,aAAet0G,EAAgBR,YAAc,EACpD3iB,EAAGiyH,EAAIyF,aAAev0G,EAAgB5zG,WAAa,EAE3D,CCyBA,QAjBa,SAAUyoB,GACnB,IAAIw0E,EAAOx0E,EAAQs5E,wBACfjyF,EAAOmtF,EAAKntF,KACZ9V,EAAMijG,EAAKjjG,IAMf,OAJKijG,EAAKxhG,QAAWwhG,EAAKxiG,QACtBwiG,EAzBkB,SAAUx0E,GAChC,IAAIt0B,EAAMs0B,EAAQ30B,MACdkwG,EAAU7vG,EAAI6vG,QACdl0F,EAAO3b,EAAI2b,KACX/V,EAAW5F,EAAI4F,SAEnB0uB,EAAQ30B,MAAMkwG,QAAU,GACxBv7E,EAAQ30B,MAAMgc,KAAO,WACrB2Y,EAAQ30B,MAAMiG,SAAW,WAEzB,IAAIkjG,EAAOx0E,EAAQs5E,wBAMnB,OAJAt5E,EAAQ30B,MAAMkwG,QAAUA,EACxBv7E,EAAQ30B,MAAMgc,KAAOA,EACrB2Y,EAAQ30B,MAAMiG,SAAWA,EAElBkjG,CACX,CAQemhS,CAAoB31W,IAGxB,CACHzuB,IAAKA,EACL8V,KAAMA,EACNrU,OAAQwhG,EAAKxhG,OACbhB,MAAOwiG,EAAKxiG,MAEpB,EChCe,SAAS,EAACguB,GACrB,OAAIA,KAAaA,EAAQgO,eAAiB,CAAC,GAAGhnB,KACnCsqQ,EAAetxP,GAGnB,CACH8hD,EAAG9hD,EAAQ2qF,WACX3iB,EAAGhoE,EAAQzoB,UAEnB,CCCA,QAVmB,SAAUyoB,GAGzB,IAFA,IAAIu/L,EAAev/L,EAAQu/L,aAEpBA,GAAgD,WAAhCA,EAAal0N,MAAMiG,UACtCiuN,EAAeA,EAAaA,aAGhC,OAAOA,GAAgBp0G,EAAgBnrF,EAC3C,ECPe,SAAS,EAAC41W,EAAqB51W,GAAW,OACrD41W,EAAsBC,EAAsBD,GCDjC,SAA8B51W,GACzC,IAAIkyH,EAASqtE,EAAav/L,GAE1B,OAAOkyH,EAAS2jP,EAAsB3jP,GAAU,CAAEpwE,EAAG,EAAGkmB,EAAG,EAC/D,CDHuE8tS,CAAqB91W,EACzF,CE0BH,QA3Be,SAAUA,EAASkyH,GAC9B,IAAI+nE,EAAMsrI,EAAIvlU,GACV8hU,EAAgB7nI,EAAI3uK,iBAAiBtrB,GACrCI,EAAS21W,EAAW/1W,GACpB49K,EAAgB1rD,GAAUqtE,EAAav/L,GAEvCgO,EAAgBhO,EAAQgO,cACxBgoW,EAAcp4L,IAAkB5vK,EAAchnB,MAAQ42L,IAAkB5vK,EAAcm9E,gBAEtF44C,EAAe,CAAExyJ,IAAK,EAAG8V,KAAM,GAEnC,GAA+B,UAA3By6U,EAAcxwV,UAAwB0kY,EAAa,CACnD,IAAIliF,EAAe75F,EAAI3uK,iBAAiBsyJ,IAExC75C,EAAegyO,EAAWn4L,IACbrsM,KAAO+zF,SAASwuN,EAAamiF,eAAgB,IAC1DlyO,EAAa18I,MAAQi+E,SAASwuN,EAAaliT,gBAAiB,GAChE,CAEA,MAAO,CACHL,IAAK6uB,EAAO7uB,IAAMwyJ,EAAaxyJ,IAC/B8V,KAAM+Y,EAAO/Y,KAAO08I,EAAa18I,KACjCrU,OAAQotB,EAAOptB,OACfhB,MAAOouB,EAAOpuB,MAEtB,EC7Be,SAAS,EAACguB,EAASk2W,GAI9B,IAHA,IAAI7hY,EAAS,GACTmxB,EAAOxF,EAAQw2E,WAEZhxE,IACHnxB,EAAOskB,KAAK6M,GAERA,IAAS0wW,IAEb1wW,EAAOA,EAAKgxE,WAGhB,OAAOniG,CACX,CCbe,SAAS,EAAC2rB,GAKrB,IAJA,IAAI3rB,EAAS,GAET04L,EAAU/sK,EAAQw2E,WAAWuE,kBAE1BgyF,GACCA,IAAY/sK,GACZ3rB,EAAOskB,KAAKo0K,GAGhBA,EAAUA,EAAQysB,mBAEtB,OAAOnlN,CACX,CCCA,IAAI8hY,EAAS,CACT,YACA,cACA,eACA,aACA,cACA,eAUA3zI,EAAY,WACZ,OAAOr+M,EAAMpnB,YAAcrsB,OAAS,IACxC,EA0DI0lY,EAAkB,cAWlBC,EAAgB,SAAUr2W,GAC1B,OAVuB,SAAUA,GACjC,MAAQ,GAAMA,EAAQ30B,MAAMC,SAAa00B,EAAQ30B,MAAM2M,UAAcgoB,EAAQ30B,MAAMirY,SACvF,CAQWC,CAAqBv2W,IANJ,SAAUA,GAClC,IAAIi2E,EAASvlG,OAAO46C,iBAAiBtrB,GACrC,MAAQ,GAAMi2E,EAAO3qG,SAAa2qG,EAAOj+F,UAAci+F,EAAOqgS,SAClE,CAG4CE,CAAsBx2W,EAClE,EAsBIy2W,EAA4B,SAAUtzW,GACtC,IAAKA,IAAOghB,EAAMk5M,6BAAgC,OAAO,KAIzD,IAFA,IAAInrG,EAAS/uH,EAAGy6K,cAET1rD,GAAQ,CACX,GAAkD,SAA9CxhJ,OAAO46C,iBAAiB4mG,GAAQpvH,UAChC,OAAOovH,EAEXA,EAASA,EAAO0rD,aACpB,CAEA,OAAO,IACX,EAoCI84L,EAAY,WACZ,OAAKvyV,EAAMpnB,aAEJ0uD,YAAYtlE,SAASglG,gBAAgB35E,YAAc9gC,OAAO4xP,YAAYz4O,QAAQ,KAFpD,CAGrC,EAyBI8sX,EAAW,CACXC,UArLY,SAAU5qY,EAAS6qY,GAC/B,MAAO,CACHxvX,KAAMrb,EAAQqb,KAAOwvX,EAASxvX,KAC9B9V,IAAKvF,EAAQuF,IAAMslY,EAAStlY,IAEpC,EAiLIulY,UC7MW,SAAmBtiS,EAAMioG,GACpC,MAAO,CACHlrM,IAAKijG,EAAKjjG,IAAMkrM,EAAOz0G,EACvB3gF,KAAMmtF,EAAKntF,KAAOo1L,EAAO36H,EACzB9uE,OAAQwhG,EAAKxhG,OACbhB,MAAOwiG,EAAKxiG,MAEpB,EDuMI6lN,MAAOA,EACPk/K,eE7MiB,SAAU/2W,GAC3B,IAAKA,EAAQs5E,sBAAuB,CAChC,IAAI09R,EAAWvB,EAAez1W,GAC9B,MAAO,CACH8xE,OAAQklS,EAAShkY,OACjBqU,KAAM,EACN7V,MAAOwlY,EAAShlY,MAChBT,IAAK,EAEb,CAEA,IAAI7F,EAAMs0B,EAAQs5E,wBAMlB,MAAO,CACHxH,OANSpmG,EAAIomG,OAObzqF,KANO3b,EAAI2b,KAOX7V,MANQ9F,EAAI8F,MAOZD,IANM7F,EAAI6F,IAQlB,EFuLI0lY,cA9KgB,SAAU9zW,GAC1B,IAAIzyB,EAAS8xP,IAEb,IAAK9xP,IAAWyyB,EAAM,MAAO,GAE7B,IAAIutN,EAAiBhgP,EAAO46C,iBAAiBnoB,GAE7C,OAAOgzW,EAAOv+X,KAAI,SAAUw8F,GAAQ,MAAQ,CAAEnxE,IAAKmxE,EAAMh3F,MAAOszO,EAAet8I,GAAU,GAC7F,EAuKIouJ,UAAWA,EACX00I,gBAtKkB,SAAU/zW,GAC5B,QAAKA,GAEEZ,QAAQY,EAAGo8L,aACtB,EAmKIn/L,OAjKS,SAAU+C,GACnB,OAAKA,EAEEg0W,EAAWh0W,GAFA,IAGtB,EA8JIi0W,cA5JgB,SAAUp3W,EAASq3W,GACnC,IAAKr3W,EAAW,OAAO,KAEvB,IAAIt0B,EAAMs0B,EAAQ30B,MACdgc,EAAO3b,EAAI2b,KACX9V,EAAM7F,EAAI6F,IACVgiQ,EAAa7nQ,EAAI6nQ,WAErBvzO,EAAQ30B,MAAMkoQ,WAAa,OAC3BvzO,EAAQ30B,MAAMgc,KAAQgwX,EAAgBhwX,KAAQ,KAC9C2Y,EAAQ30B,MAAMkG,IAAO8lY,EAAgB9lY,IAAO,KAE5C,IAAI+lY,EAAgBH,EAAWn3W,GAW/B,OATAA,EAAQ30B,MAAMgc,KAAOA,EACrB2Y,EAAQ30B,MAAMkG,IAAMA,EAIpByuB,EAAQtC,aAERsC,EAAQ30B,MAAMkoQ,WAAaA,EAEpB+jI,CACX,EAqIIhmY,SAnIW,SAAU0uB,EAASu3W,EAAc/vX,GAC5C,OAAKwY,GAAYu3W,EG/EN,SAAUv3W,EAASkyH,EAAQ1qI,QACvB,IAAVA,IAAmBA,EAAQ,GAEhC,IAAIouX,EAAsB1jP,EAASqtE,EAAartE,GAAU,KACtDxmJ,EAAM4F,EAAS0uB,EAAS41W,GACxBrkY,EAAM7F,EAAI6F,IACV8V,EAAO3b,EAAI2b,KACXrU,EAAStH,EAAIsH,OACbhB,EAAQtG,EAAIsG,MACZwlY,EAAQC,EAA2B7B,EAAqB51W,GACxD8hD,EAAI01T,EAAM11T,EACVkmB,EAAIwvS,EAAMxvS,EACVh6D,EAAgBhO,EAAQgO,cACxB0pW,EAAgB9B,IAAwB5nW,EAAchnB,MAAQ4uX,IAAwB5nW,EAAcm9E,gBAAkB,EAAI3jG,EAE9H,MAAO,CACHjW,IAAKA,EAAMy2F,EAAI0vS,EACfrwX,KAAMA,EAAOy6D,EAAI41T,EACjB1kY,OAAQA,EACRhB,MAAOA,EAEf,CH8DW2lY,CAAmB33W,EAASu3W,EAFhB/vX,GAAS,GAFY,IAK5C,EA8HIowX,aItNW,SAAsBpjS,EAAMioG,GACvC,MAAO,CACHlrM,IAAKijG,EAAKjjG,IAAMkrM,EAAOz0G,EACvB3gF,KAAMmtF,EAAKntF,KAAOo1L,EAAO36H,EACzB9uE,OAAQwhG,EAAKxhG,OACbhB,MAAOwiG,EAAKxiG,MAEpB,EJgNI6lY,eAAgBA,EAChBvmH,eAAgBA,EAChBwmH,kBAhHoB,SAAU93W,GAC9B,IAAI+3W,EAAiB,GAErB,IAAK5zV,EAAMpnB,YAAe,OAAOg7W,EAIjC,IAFA,IAAI7lP,EAASlyH,EAAQ49K,cAEd1rD,IACCkkP,EAAgBhxW,KAAKixW,EAAcnkP,KAAYA,EAAO08B,aAAa,qBACnEmpN,EAAep/W,KAAKu5H,GAGxBA,EAASA,EAAO0rD,cAKpB,OAFAm6L,EAAep/W,KAAKjoB,QAEbqnY,CACX,EA+FItB,0BAA2BA,EAC3BuB,sBA/EwB,SAAU70W,GAClC,IAAIi3O,EAAyBq8H,EAA0BtzW,GAEvD,OAAKi3O,EAEE+8H,EAAW/8H,GAFoB,IAG1C,EA0EI69H,sBAxEwB,SAAU90W,GAClC,IAAIi3O,EAAyBq8H,EAA0BtzW,GAEvD,OAAKi3O,EAEE,CACHt4L,EAAGs4L,EAAuBzvJ,WAC1B3iB,EAAGoyK,EAAuB7iQ,WAJQ,CAAEuqE,EAAG,EAAGkmB,EAAG,EAMrD,EAgEIkwS,wBA9D0B,SAAU/0W,GACpC,IAAIi3O,EAAyBq8H,EAA0BtzW,GAEvD,OAAKi3O,EAEE,CACHpnQ,OAAQonQ,EAAuB5W,aAC/BxxP,MAAOooQ,EAAuBpe,aAJI,IAM1C,EAsDIm8I,oBApDsB,SAAUh1W,GAChC,OAAOZ,QAAQk0W,EAA0BtzW,GAC7C,EAmDIi1W,eAAgBA,EAChB1B,UAAWA,EACX2B,SA7CW,WACX,OAAO3B,IAAc,CACzB,EA4CIjlY,OA1CS,SAAUg/B,EAAQ3T,GAC3B,IAAK2T,IAAW0T,EAAMpnB,YAAe,OAAO,KAE5C,IAAIgwK,EKtLO,SAAUt8J,EAAQ3T,GAM7B,IALA,IAEIw7W,EACAjkY,EAHA0jY,EAAiB9+F,EAAQxoQ,GACzB8nW,EAAmBz7W,EAIhBy7W,IACHD,EAAkBnnG,EAASonG,KAE3BlkY,EAAS0jY,EAAe3jY,QACpB,SAAU2uB,EAAM7E,GAAK,OAAO6E,EAAKlnB,OAAOy8X,EAAgB79X,QAAO,SAAU2pB,GAAK,OAAOA,IAAMlG,CAAG,IAAK,GACnG,IACF,MAIFq6W,EAAmBA,EAAiB36L,cAGxC,OAAOvpM,CACX,CLkKkBmkY,CAAiB/nW,EAAQ3T,GAEvC,IAAKiwK,EAAW,OAAO,KAEvB,IAAI14L,EAAS,CAAEo8B,GAAS50B,OAAOo9R,EAAQxoQ,EAAQs8J,IAAU34L,QACrD,SAAUmY,EAAO2R,GACb,IAAIu6W,EAAcv6W,EAAE7yB,MAAMoG,QAAUf,OAAO46C,iBAAiBptB,GAAGzsB,OAC3DzF,EAAUs5F,SAASmzS,EAAa,IACpC,OAAOzsY,EAAUugB,EAAQvgB,EAAUugB,CACvC,GACA,GAGJ,OAAOlY,EAAUA,EAAS,EAAK,IACnC,GA4BA,UMhOA,IAkCIwhY,EAAwB,SAAUplW,EAAQzQ,GAC1C,OAAOyQ,EAAS,CAAEqxC,EAAG,EAAGkmB,EAAG,GAAM2uS,EAASrlH,eAAetxP,EAC7D,EA4BA,QA1BmB,SAAU1H,GACzB,IAAImY,EAASnY,EAASmY,OAClBzQ,EAAU1H,EAAS0H,QACnB2Q,EAAcrY,EAASqY,YACvBuiW,EAAe56W,EAAS46W,aACxBjgY,EAASqlB,EAASrlB,OAClBmtB,EAAS9H,EAAS8H,OAClB+3N,EAAe7/N,EAAS6/N,aAGxBugJ,EAFQpgX,EAAS9Q,OAEO,EAExBs+L,EAD6B,UAAjBqyC,IAA6Bw+I,EAASO,gBAAgBl3W,GAjDvD,SAAUyQ,EAAQzQ,EAASI,EAAQ5Y,GAClD,IAAImxX,EAAY9C,EAAsBplW,EAAQzQ,GAC1Cw0E,EAAOrwD,EAAMixV,WAAWuB,EAASv2W,OAAOqQ,GAASrQ,GACjDw4W,EAAa,EAAIpxX,EAEjBqxX,EAAclC,EAASsB,sBAAsBj4W,GACnC,IAAVxY,GAAeqxX,IACfA,EAAY/2T,GAAK82T,EACjBC,EAAY7wS,GAAK4wS,GAGrB,IAAIE,EAAcnC,EAASqB,sBAAsBh4W,GAMjD,OALc,IAAVxY,GAAesxX,IACfA,EAAYzxX,MAAQuxX,EACpBE,EAAYvnY,KAAOqnY,GAGhBjC,EAASiB,aACZjB,EAASG,UACL3yV,EAAMmxV,qBACFnxV,EAAMkxV,UAAU7gS,EAAMhtF,GACtBsxX,GAEJD,GAEJF,EAER,CAuBiCI,CAAatoW,EAAQzQ,EAASI,EAAQs4W,GArBpD,SAAUjoW,EAAQzQ,EAASI,EAAQ5Y,GAClD,IAAIgtF,EAAOrwD,EAAMixV,WAAWuB,EAASrlY,SAASm/B,EAAQzQ,EAASxY,GAAQ4Y,GACvE,OAAO+jB,EAAMkxV,UAAU7gS,EAAMhtF,EACjC,CAkBuFwxX,CAAavoW,EAAQzQ,EAASI,EAAQs4W,GACrHp6I,EAAcn6M,EAAMkxV,UAAUsB,EAASv2W,OAAOJ,GAAU04W,GAU5D,OARa/B,EAAS9+K,MAAM,CACxBlnL,YAAaA,EACbm1K,WAAYA,EACZotL,aAAcA,EACd50I,YAAaA,EACbrrP,OAAQA,GAIhB,ECvBA,QAzCsB,SAAUqlB,GAC5B,IAAImY,EAASnY,EAASmY,OAClB4mW,EAAkB/+W,EAAS++W,gBAC3Br3W,EAAU1H,EAAS0H,QACnB2Q,EAAcrY,EAASqY,YACvBuiW,EAAe56W,EAAS46W,aACxBc,EAAa17W,EAAS07W,WACtB/gY,EAASqlB,EAASrlB,OAGlBylY,EAFQpgX,EAAS9Q,OAEO,EACxB+6U,EAAgBo0C,EAASS,cAAcp3W,EAASq3W,GAChD/4I,EAAcn6M,EAAMkxV,UAAU9yC,EAAem2C,GAC7CxgN,EAAe/zI,EAAMkxV,UAAUsB,EAASv2W,OAAOqQ,GAASioW,GACxD5yL,EAAa3hK,EAAMixV,WAAWl9M,EAAcm/M,GAE5CpD,EAAW37W,EAAS27W,UAAY0C,EAASyB,eAAep4W,GAC5Di0W,EAASjiY,MAAQiiY,EAASjiY,MAAQ0mY,EAClCzE,EAASjhY,OAASihY,EAASjhY,OAAS0lY,EAEpC,IAAIrkY,EAASsiY,EAASkB,eAAe,CACjClnW,YAAaA,EACbm1K,WAAYA,EACZkuL,WAAYA,EACZd,aAAcA,EACd50I,YAAaA,EACbrrP,OAAQA,EACRghY,SAAUA,IAGV7zW,EAASu2W,EAASC,UAAUS,EAAiBhjY,EAAO+rB,QAExD,MAAO,CACHsnO,KAAMrzP,EAAOqzP,KACbstI,QAAS3gY,EAAO2gY,QAChBj6N,IAAK1mK,EAAO0mK,IACZk6N,OAAQ5gY,EAAO4gY,OACf70W,OAAQA,EAEhB,ECvCO,ICAI0N,GAAkB,CACzBrgC,KAAM,8BACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,yJCTlBhyC,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBvjB,OAAO0jB,gBAClB,CAAEC,UAAW,cAAgBtO,OAAS,SAAUmO,EAAGC,GAAKD,EAAEG,UAAYF,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIG,KAAKH,EAAOzjB,OAAOud,UAAUsG,eAAeC,KAAKL,EAAGG,KAAIJ,EAAEI,GAAKH,EAAEG,GAAI,EAC7FL,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAAS/E,IAAOrB,KAAK4G,YAAcT,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAEjG,UAAkB,OAANkG,EAAazjB,OAAOkkB,OAAOT,IAAM/E,EAAGnB,UAAYkG,EAAElG,UAAW,IAAImB,EACnF,CACJ,CAd6C,GAezCxM,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAWA,SAAS40W,GAAavkY,EAAGqpB,GACrB,GAAIrpB,IAAMqpB,EACN,OAAO,EAEX,KAAMrpB,MAAQqpB,EACV,OAAO,EAEX,IAAIm7W,EAAS5+X,OAAOm0C,oBAAoB/5C,GACpCykY,EAAS7+X,OAAOm0C,oBAAoB1wB,GACxC,GAAIm7W,EAAO1/X,SAAW2/X,EAAO3/X,OACzB,OAAO,EAEX,IAAK,IAAI3B,EAAI,EAAGA,EAAIqhY,EAAO1/X,OAAQ3B,IAAK,CACpC,IAAIgsB,EAAWq1W,EAAOrhY,GACtB,GAAInD,EAAEmvB,KAAc9F,EAAE8F,GAClB,OAAO,CAEf,CACA,OAAO,CACX,CACA,IAIIzQ,GAJAukO,GAAiB,CACjBtwO,MAAO,IACP9V,IAAK,IAGT,SAAW6hB,GACPA,EAAe,OAAI,SACnBA,EAAe,OAAI,SACnBA,EAAgB,QAAI,UACpBA,EAAc,MAAI,QAClBA,EAAmB,WAAI,YAC1B,CAND,CAMGA,KAAWA,GAAS,CAAC,IACxB,IACIgmX,GAA4B,8BAM5BC,GAAqC,SAAUl6W,GAE/C,SAASk6W,EAAoBxjY,GACzB,IAAIwkB,EAAQ8E,EAAOf,KAAKzG,KAAM9hB,IAAU8hB,KAwHxC,OApHA0C,EAAM60B,QAAU,EAIhB70B,EAAM3vB,MAAQ,CAAEsB,QAASonB,GAAOgpT,OAAQlhL,SAAU9nI,GAAOgpT,OAAQvmU,MAAO,CAAC,GACzEwkB,EAAMk+Q,OAAS,KACfl+Q,EAAMwH,KAAO,SAAUwN,GACnBhV,EAAMi+Q,YAAYjpQ,GAClBhV,EAAMuI,QAAQyM,EAAMgoE,WAAY,QAASh9E,EAAMi/W,UAC/Cj/W,EAAM6L,SAAS,CAAEl6B,QAASonB,GAAOmmX,MAAOr+O,SAAU7gI,EAAM3vB,MAAMsB,SAClE,EACAquB,EAAMi+Q,YAAc,SAAUjpQ,GAC1B,IAAIjgC,EAAKirB,EAAMxkB,MAAO86B,EAAcvhC,EAAGuhC,YAAaG,EAAa1hC,EAAG0hC,WAAYs9U,EAAYh/W,EAAGg/W,UAAWhuV,EAAShxB,EAAGgxB,OAAQqQ,EAASrhC,EAAGqhC,OAAQx9B,EAAS7D,EAAG6D,OAAQuU,EAAQpY,EAAGoY,MAAO2wO,EAAe/oP,EAAG+oP,aACtM3oP,EAAK6/B,EAAMhkC,MAAO2G,EAAQxC,EAAGwC,MAAOgB,EAASxD,EAAGwD,OAEpDq8B,EAAMhkC,MAAM2G,MAAQq9B,EAAM8tH,YAAc,KACxC9tH,EAAMhkC,MAAM2H,OAASq8B,EAAM3R,aAAe,KAC1C,IAAI87W,EAAgBC,EAAa,CAC7BhpW,OAAQA,EACRE,YAAaA,EACb3Q,QAASqP,EACT6jW,aAAcpiW,EACd1Q,OAAQA,EACRntB,OAAQA,EACRklP,aAAcA,EACd3wO,MAAOA,IAEPlW,EAAWooY,EAAgB,CAC3BjpW,OAAQA,EACRE,YAAaA,EACb3Q,QAASqP,EACT6jW,aAAcpiW,EACdkjW,WAAY5lB,EACZipB,gBAAiBmC,EACjBvmY,OAAQonB,EAAMxkB,MAAM5C,SAYxB,GAVAo8B,EAAMhkC,MAAMkG,IAAMD,EAAS8uB,OAAO7uB,IAAM,KACxC89B,EAAMhkC,MAAMgc,KAAO/V,EAAS8uB,OAAO/Y,KAAO,KAC1CgoB,EAAMhkC,MAAM2G,MAAQA,EACpBq9B,EAAMhkC,MAAM2H,OAASA,EACrBqnB,EAAMs/W,YAAc,CAChB5+N,IAAKzpK,EAASypK,IACdk6N,OAAQ3jY,EAAS2jY,OACjBvtI,KAAMp2P,EAASo2P,KACfstI,QAAS1jY,EAAS0jY,SAElB36W,EAAMxkB,MAAM+jY,WAAY,CACxB,IAAIr5H,EAAU,CACVxuP,OAAQsI,EACR26W,QAAS1jY,EAAS0jY,QAClBC,OAAQ3jY,EAAS2jY,QAErB56W,EAAMxkB,MAAM+jY,WAAWx7W,UAAKvzB,EAAW01Q,EAC3C,CACJ,EACAlmP,EAAMi/W,SAAW,WACb,IAAIt5W,EAAU3F,EAAMk+Q,OACfv4Q,IAGD3F,EAAMxkB,MAAMgsB,MACZ7B,EAAQkV,UAAUE,IAAIgkW,IAE1B/+W,EAAMw/W,yBAAyB75W,GAC3B3F,EAAMxkB,MAAMs7B,QACZ9W,EAAMxkB,MAAMs7B,OAAO/S,UAAKvzB,EAAW,CAAEknB,OAAQsI,IAErD,EACAA,EAAMuI,QAAU,SAAU5C,EAAS7uB,EAAMq8D,GACrC,GAAKnzC,EAAMxkB,MAAMi7B,WAAjB,CAGA,IAAIgpW,EACA1qY,EAAKirB,EAAMxkB,MAAMi7B,WAAYF,EAAaxhC,EAAGwhC,WAAYC,EAAWzhC,EAAGyhC,SAEvEipW,EADe,SAAflpW,GAAsC,WAAbC,EACJ,QAED,UAAfD,GAAuC,WAAbC,EACV,OAEH,QAAbA,EACgB,OAGA,KAQrBxW,EAAMs/W,aAAet/W,EAAMs/W,YAAY3E,UACvC8E,EAPgB,CAChBh7W,KAAM,KACND,GAAI,OACJxX,KAAM,QACN7V,MAAO,QAG4BsoY,I9BlKhC,SAAU95W,EAASgJ,EAAW2pP,EAAUxhR,EAAMq8D,GAC7D,GAAiB,IAAbmlN,EACA,OAAOnlN,IAEX,IAAIusU,EAAa,WAAa/wW,EAAY,IAAM73B,EAC5C6oY,EAAmBD,EAAa,UAChCE,EAAgB,SAAU5oY,GAItBA,EAAE0gB,SAAWiO,IACbA,EAAQ+pB,oBAAoB,gBAAiBkwV,GAC7ChH,EAAWjzW,GAEPA,EAAQ30B,MAAMkwG,QADL,SAATpqG,EACwB,OAGA,GAE5Bq8D,IAER,EACAxtC,EAAQnvB,iBAAiB,gBAAiBopY,GAC1C,IAAIjsW,EAAgBhO,EAAQgO,cAC5B,GAAKA,EAAL,CAGA,IAAIosJ,EAAcpsJ,EAAcosJ,YAChC,GAAKA,EAAL,CAGA,IAAIx3J,EAAU,WACVqwW,EAAWjzW,GACXA,EAAQkV,UAAUE,IAAI2kW,GACtB3/M,EAAYuyF,uBAAsB,WAC9B3sP,EAAQ30B,MAAMiiP,mBAAqBqlC,EAAW,KAC9C3yP,EAAQkV,UAAUE,IAAI4kW,EAC1B,GACJ,EACIngG,EACAz/G,EAAYuyF,sBAAsB/pP,GAGlCA,GAbJ,CAJA,CAmBJ,C8BuHY6mV,CAAMzpV,EAAS85W,EAAoBz/W,EAAMwuV,kBAAkB13W,GAAOA,EAAMq8D,EAxBxE,CAyBJ,EACAnzC,EAAM6/W,UAAY,SAAU7qW,GACnBhV,EAAMxkB,MAAMgsB,MACbwN,EAAM6F,UAAUC,OAAOikW,IAE3B/+W,EAAM8/W,0BACV,EACA9/W,EAAM+/W,SAAW,WACT//W,EAAM3vB,MAAMsB,UAAYonB,GAAOinX,QAAUhgX,EAAM3vB,MAAMwwJ,WAAa9nI,GAAOmmX,OACzEl/W,EAAM6L,SAAS,CAAEl6B,QAASonB,GAAOgpT,OAAQlhL,SAAU7gI,EAAM3vB,MAAMsB,UAE/DquB,EAAMxkB,MAAM4L,SACZ4Y,EAAMxkB,MAAM4L,QAAQ2c,UAAKvzB,EAAW,CAAEknB,OAAQsI,GAEtD,EACAA,EAAM46P,iBAAmB,WACrB,OAAO56P,EAAM60B,QAAU70B,EAAM60B,QA/JjB,EADG,GAiKnB,GACArhB,EAAAA,EAAAA,GAAgBC,IAChBzT,EAAMigX,WFlLQ,SAAUv4R,EAAM4sK,EAAMj5N,GAExC,IAAIoF,EAAS5L,EAASrvB,EAAMxrB,OADZ,IAAZqhD,IAAsBA,EAAU,CAAC,GAErC,IAAIwlG,EAAW,EACfxlG,EAAUA,GAAW,CAAC,EACtB,IAAI6kV,EAAQ,WACRr/O,GAA+B,IAApBxlG,EAAQs5N,QAAoB,GAAI,IAAIp6Q,MAAOgV,UACtDkxC,OAAUjwD,EACVwJ,EAAS0tG,EAAKjqF,MAAMo3B,EAASrvB,GACxBi7B,IACD5L,EAAUrvB,EAAO,KAEzB,EAyBA,OAxBgB,WACZ,IAAI0H,GAAM,IAAI3yB,MAAOgV,UAChBsxI,IAAgC,IAApBxlG,EAAQs5N,UACrB9zH,EAAW3zH,GAEf,IAAIu6L,EAAY6sD,GAAQpnP,EAAM2zH,GAiB9B,OAhBAhsG,OAAUrkD,EACVg1B,EAAOwE,UACHy9L,GAAa,GAAKA,EAAY6sD,GAC1B7zN,IACA10B,aAAa00B,GACbA,OAAUjwD,GAEdqwJ,EAAW3zH,EACXlzB,EAAS0tG,EAAKjqF,MAAMo3B,EAASrvB,GACxBi7B,IACD5L,EAAUrvB,EAAO,OAGfi7B,IAAgC,IAArBpF,EAAQw5N,WACzBp0N,EAAUpqD,OAAOi3B,WAAW4yW,EAAOz4K,IAEhCztN,CACX,CAEJ,CE4I2B8xV,CAAS9rU,EAAMigX,WAAW9zW,KAAKnM,GFtL9B,oBEuLbA,CACX,CA2RA,OAtZAuD,GAAUy7W,EAAqBl6W,GA4H/B7kB,OAAO6nB,eAAek3W,EAAoBxhX,UAAW,UAAW,CAI5DuK,IAAK,WACD,OAAOzK,KAAK4gR,MAChB,EACAl2Q,YAAY,EACZC,cAAc,IAKlB+2W,EAAoBpwJ,yBAA2B,SAAUpzO,EAAOnL,GAC5D,IAAIm3B,EAAOhsB,EAAMgsB,KAAM4O,EAAS56B,EAAM46B,OAAQE,EAAc96B,EAAM86B,YAAagB,EAAW97B,EAAM87B,SAAUy8U,EAAYv4W,EAAMu4W,UAAWt9U,EAAaj7B,EAAMi7B,WAAYtlC,EAAYqK,EAAMrK,UAAWklC,EAAa76B,EAAM66B,WAAYrlC,EAAQwK,EAAMxK,MAAO+0B,EAASvqB,EAAMuqB,OAAQqvQ,EAAa55R,EAAM45R,WAC7R77P,EAAYpnB,GAASA,GAAS,CAAC,EAAG9hB,GAAQ,CAAEmL,MAAO,CAC/CgsB,KAAMA,EACN4O,OAAQA,EACRE,YAAaA,EACbgB,SAAUA,EACVy8U,UAAWA,EACXt9U,WAAYA,EACZtlC,UAAWA,EACXklC,WAAYA,EACZrlC,MAAOA,EACP+0B,OAAQA,EACRqvQ,WAAYA,KAEpB,OAAI55R,EAAMgsB,KACFn3B,EAAMsB,UAAYonB,GAAOgpT,QAAU1xU,EAAMsB,UAAYonB,GAAOinX,OACrD7tX,GAASA,GAAS,CAAC,EAAGonB,GAAY,CAAE5nC,QAASonB,GAAOonX,QAASt/O,SAAUxwJ,EAAMsB,UAEpFtB,EAAMsB,UAAYonB,GAAOonX,QAClBhuX,GAASA,GAAS,CAAC,EAAGonB,GAAY,CAAE5nC,QAASonB,GAAOmmX,MAAOr+O,SAAUxwJ,EAAMsB,UAElFtB,EAAMsB,UAAYonB,GAAOmmX,OACvBN,GAAa74W,EAAQ11B,EAAMmL,MAAMuqB,SAC9B64W,GAAatoW,EAAajmC,EAAMmL,MAAM86B,cACtCsoW,GAAatnW,EAAUjnC,EAAMmL,MAAM87B,WACnCsnW,GAAa7qB,EAAW1jX,EAAMmL,MAAMu4W,YACpC6qB,GAAanoW,EAAYpmC,EAAMmL,MAAMi7B,aACrCmoW,GAAa5tY,EAAOX,EAAMmL,MAAMxK,QACjColC,IAAW/lC,EAAMmL,MAAM46B,QACvBC,IAAehmC,EAAMmL,MAAM66B,YAC3BllC,IAAcd,EAAMmL,MAAMrK,UAG3BooC,EAFIpnB,GAASA,GAAS,CAAC,EAAGonB,GAAY,CAAE5nC,QAASonB,GAAOknX,WAAYp/O,SAAUxwJ,EAAMsB,UAI3FtB,EAAMsB,UAAYonB,GAAOinX,QAAU3vY,EAAMsB,UAAYonB,GAAOgpT,OACrD5vT,GAASA,GAAS,CAAC,EAAGonB,GAAY,CAAE5nC,QAASonB,GAAOgpT,OAAQlhL,SAAUxwJ,EAAMsB,UAEhFwgB,GAASA,GAAS,CAAC,EAAGonB,GAAY,CAAE5nC,QAASonB,GAAOinX,OAAQn/O,SAAUxwJ,EAAMsB,SACvF,EAIAqtY,EAAoBxhX,UAAU8K,mBAAqB,SAAUukB,GACrDvvB,KAAKjtB,MAAMsB,UAAYonB,GAAOonX,SAAW7iX,KAAK4gR,OAC9C5gR,KAAKkK,KAAKlK,KAAK4gR,QAEV5gR,KAAKjtB,MAAMsB,UAAYonB,GAAOinX,QAAU1iX,KAAK4gR,QAClD5gR,KAAKuiX,UAAUviX,KAAK4gR,QACpB5gR,KAAKiL,QAAQjL,KAAK4gR,OAAOlhM,WAAY,OAAQ1/E,KAAKyiX,WAE7CziX,KAAKjtB,MAAMsB,UAAYonB,GAAOknX,YAAc3iX,KAAKjtB,MAAMwwJ,WAAa9nI,GAAOmmX,MAChF5hX,KAAKuO,SAAS,CAAEl6B,QAASonB,GAAOmmX,MAAOr+O,SAAUvjI,KAAKjtB,MAAMsB,UAEvD2rB,KAAKjtB,MAAMsB,UAAYonB,GAAOmmX,OACnCryV,EAAUuoP,aAAe93Q,KAAK9hB,MAAM45R,YAAc93Q,KAAK4gR,QACvD5gR,KAAK2gR,YAAY3gR,KAAK4gR,OAE9B,EAIA8gG,EAAoBxhX,UAAU4K,kBAAoB,WAC1C9K,KAAKjtB,MAAMsB,UAAYonB,GAAOonX,SAAW7iX,KAAK4gR,QAC9C5gR,KAAKkK,KAAKlK,KAAK4gR,OAEvB,EAIA8gG,EAAoBxhX,UAAU6O,qBAAuB,WACjD/O,KAAKwiX,0BACT,EAIAd,EAAoBxhX,UAAUnrB,OAAS,WACnC,IAAI2tB,EAAQ1C,KACRvoB,EAAKuoB,KAAK9hB,MAAOzK,EAAWgE,EAAGhE,SAAUI,EAAY4D,EAAG5D,UAAWklC,EAAathC,EAAGshC,WAAY7O,EAAOzyB,EAAGyyB,KAAM92B,EAAKqE,EAAGrE,GAAIotP,EAAe/oP,EAAG+oP,aAC7IsiJ,EAAqB9iX,KAAK9hB,MAAM87B,SAChCha,KAAK9hB,MAAM87B,SACX5U,EAAAA,EACKpF,KAAK9hB,MAAM46B,QAAU9Y,KAAK9hB,MAAM46B,OAAOzC,cAAgBrW,KAAK9hB,MAAM46B,OAAOzC,cAAchnB,KAAOb,SAASa,UACtGnc,EACN8sB,KAAKjtB,MAAMsB,UAAYonB,GAAOknX,YAAc3iX,KAAKjtB,MAAMwwJ,WAAa9nI,GAAOmmX,OAAS5hX,KAAK4gR,QACzF5gR,KAAK2gR,YAAY3gR,KAAK4gR,QAE1B,IAAIltS,EAAQiP,OAAO2mB,OAAO,CAAC,EAAG,CAAE3vB,SAAU6mP,EAAc5mP,IAAK,EAAG8V,MAAO,KAASsQ,KAAK9hB,MAAMxK,OAAS,CAAC,GACjGkgS,EAAU5zQ,KAAKjtB,MAAMsB,UAAYonB,GAAOinX,OAC5C,IAAKx4W,GAAQ0pQ,IAAYkvG,EAAoB,CACzC,IAAIjiJ,EAAgB7gO,KAAKs9P,mBACrBsiH,EAAgBrsY,EAAAA,cAAoB4uP,EAAAA,EAAc3O,SAAU,CAAE/tO,MAAOo7O,GACrEttP,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GA9O9B,wBA8O8Dv7B,GAAYT,GAAIA,EAAIW,IAAK,SAAU2F,GAAK,OAAOgpB,EAAMk+Q,OAASlnS,CAAG,EAAGhG,MAAOmhB,GAAS,CAAE/a,OAAQ+mP,GAAiBntP,IACnLH,EAAAA,cAAoB,MAAO,CAAEM,WAAWu7B,EAAAA,EAAAA,GA7O5B,+BA6OmE17B,MAAO,CAAE8hP,gBAAiB,QACrGjiP,EAAAA,cAAoB,MAAO,CAAEwE,KAAMioB,KAAK9hB,MAAMnG,KAAMlE,WAAWu7B,EAAAA,EAAAA,GA7OzE,UA6O6F2J,IAAetlC,MAC9G,OAA+B,OAAxBusB,KAAK9hB,MAAM87B,SACdk4M,EAAAA,aAAsB0tJ,EAAckD,GACpClD,CACR,CACA,OAAO,IACX,EACAj9X,OAAO6nB,eAAek3W,EAAoBxhX,UAAW,oBAAqB,CACtEuK,IAAK,WACD,IAAIQ,EAAUjL,KAAK9hB,MAAM+sB,QACrB4H,EAAQ,EACRisL,EAAO,EAUX,OATI7zL,KACgB,IAAZA,EACA4H,EAAQisL,EAAO,KAGfjsL,EAAQ5H,EAAQksQ,cAAgB,EAChCr4E,EAAO7zL,EAAQmsQ,eAAiB,IAGjC,CAAEvkQ,MAAOA,EAAOisL,KAAMA,EACjC,EACAp0L,YAAY,EACZC,cAAc,IAElB+2W,EAAoBxhX,UAAUgiX,yBAA2B,SAAU75W,GAC/D,IAAI3F,EAAQ1C,KACZA,KAAKwiX,2BACLxiX,KAAK+iX,mBAAqB/D,EAASmB,kBAAkBngX,KAAK9hB,MAAM46B,QAAUzQ,GACtErI,KAAK+iX,oBACL/iX,KAAK+iX,mBAAmB9iY,KAAI,SAAUsmB,GAAK,OAAOA,EAAErtB,iBAAiB,SAAUwpB,EAAMigX,WAAa,IAEtG5pY,OAAOG,iBAAiB,SAAU8mB,KAAK2iX,WAC3C,EACAjB,EAAoBxhX,UAAUsiX,yBAA2B,WACrD,IAAI9/W,EAAQ1C,KACRA,KAAK+iX,qBACL/iX,KAAK+iX,mBAAmB9iY,KAAI,SAAUsmB,GAAK,OAAOA,EAAE6rB,oBAAoB,SAAU1vB,EAAMigX,WAAa,IACrG3iX,KAAK+iX,wBAAqB7vY,GAE9B6F,OAAOq5C,oBAAoB,SAAUpyB,KAAK2iX,WAC9C,EACAjB,EAAoBxhX,UAAUyiX,WAAa,WACvC3iX,KAAKuO,SAAS,CAAEl6B,QAASonB,GAAOknX,WAAYp/O,SAAUvjI,KAAKjtB,MAAMsB,SACrE,EAIAqtY,EAAoB11W,UAAY,CAC5B8M,OAAQ,SAAU56B,GACd,IAAI46B,EAAS56B,EAAM46B,OACnB,OAAIA,GAAqC,kBAApBA,EAAO0iE,SACjB,IAAInvE,MAAM,6EAEd,IACX,EACA2N,SAAU,SAAU97B,GAChB,IAAImqB,EAAUnqB,EAAM87B,SACpB,OAAI3R,GAAuC,kBAArBA,EAAQmzE,SACnB,IAAInvE,MAAM,+EAEd,IACX,EACAx4B,UAAWo4B,EAAAA,UAAoB,CAC3BA,EAAAA,OACAA,EAAAA,QAAkBA,EAAAA,QAClBA,EAAAA,SAEJ74B,GAAI64B,EAAAA,OACJ8M,WAAY9M,EAAAA,UAAoB,CAC5BA,EAAAA,OACAA,EAAAA,QAAkBA,EAAAA,QAClBA,EAAAA,SAEJwqV,UAAWxqV,EAAAA,MAAgB,CACvBgN,WAAYhN,EAAAA,MAAgB,CACxB+2W,EACAA,EACAA,IAEJ9pW,SAAUjN,EAAAA,MAAgB,CACtB+2W,EACAA,EACAA,MAGRhqW,YAAa/M,EAAAA,MAAgB,CACzBgN,WAAYhN,EAAAA,MAAgB,CACxBg3W,EACAA,EACAA,IAEJ/pW,SAAUjN,EAAAA,MAAgB,CACtBg3W,EACAA,EACAA,MAGR9pW,WAAYlN,EAAAA,MAAgB,CACxBgN,WAAYhN,EAAAA,MAAgB,CACxBg3W,EACAA,EACAA,IAEJ/pW,SAAUjN,EAAAA,MAAgB,CACtBg3W,EACAA,EACAA,MAGRx6W,OAAQwD,EAAAA,MAAgB,CACpBvc,KAAMuc,EAAAA,OACNryB,IAAKqyB,EAAAA,SAETx4B,SAAUw4B,EAAAA,UAAoB,CAC1BA,EAAAA,QACAA,EAAAA,OAEJ/B,KAAM+B,EAAAA,KACNhB,QAASgB,EAAAA,UAAoB,CACzBA,EAAAA,KACAA,EAAAA,MAAgB,CACZkrQ,aAAclrQ,EAAAA,OACdmrQ,cAAenrQ,EAAAA,WAGvB3wB,OAAQ2wB,EAAAA,MAAgB,CACpBgN,WAAYhN,EAAAA,OACZiN,SAAUjN,EAAAA,SAEdu0N,aAAcv0N,EAAAA,MAAgB,CAC1B,QACA,aAEJpc,MAAOoc,EAAAA,OACPv4B,MAAOu4B,EAAAA,OACPniB,QAASmiB,EAAAA,KACTg2W,WAAYh2W,EAAAA,KACZuN,OAAQvN,EAAAA,MAKZy1W,EAAoBr4W,aAAe,CAC/BotV,UAAW,CACPx9U,WAAY+pW,EACZ9pW,SAAU8pW,GAEdhqW,YAAa,CACTC,WAAYgqW,EACZ/pW,SAAU+pW,GAEd9pW,WAAY,CACRF,WAAYgqW,EACZ/pW,SAAU+pW,GAEdx6W,OAAQu3N,GACR/0N,SAAS,EACTf,MAAM,EACN5uB,OAAQ,CACJ29B,WAAY,EACZC,SAAU,GAEdsnN,aAAc,YAKlBkhJ,EAAoBjuJ,YAAc0O,EAAAA,EAIlCu/I,EAAoB5nW,YAAc,iBAC3B4nW,CACX,CAxZyC,CAwZvCnuY,EAAAA,WCneEshB,GAAsC,WAStC,OARAA,GAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,GAASsL,MAAMH,KAAM0M,UAChC,EAcW+kQ,GAAoBl+R,EAAAA,eAAoB,SAAU2K,GAAS,OAAOA,CAAO,IAIzE05B,GAAQrkC,EAAAA,YAAiB,SAAU2K,EAAOnK,GACjD,IACI6nC,EADuBroC,EAAAA,WAAiBk+R,IACNhrQ,UAAKvzB,EAAWgL,GACtD,OAAQ3K,EAAAA,cAAoBmuY,GAAqB7sX,GAAS,CAAE9gB,IAAKA,GAAO6nC,GAC5E,IACAhE,GAAMkC,YAAc,8EC/BTopW,EAAe,SAAUxmV,EAAQymV,GACxC,IAAI16W,EAASl1B,EAAAA,OAAa,GACtBswM,EAAQtwM,EAAAA,QAAa,GACrBs6V,EAAiBt6V,EAAAA,SA+BrBA,EAAAA,WAAgB,WAEZ,OAhCU,SAAUqoQ,GACpB,IACI74O,EADAi4P,EAAWpf,EAAWof,SAGtBlvP,EAAOrD,EAAOp0B,SAAW,EAAIo0B,EAAOp0B,QACpCunQ,EAAWwnI,SACXxnI,EAAWwnI,UAEf,IAAI3nC,EAAQ,SAAU4nC,GACbtgX,IACDA,EAAQsgX,GAGZ,IAAIt5U,GADOs5U,EAAYtgX,EAAQ,GACTi4P,EAAWlvP,EAC7Bi+B,GAAQ,GACJ6xM,EAAWoyC,UACXpyC,EAAWoyC,SAASjkP,GAExB8jS,EAAex5V,QAAU0E,OAAOi8Q,sBAAsBymF,GACtDhzU,EAAOp0B,QAAU01D,IAGb6xM,EAAWrpI,OACXqpI,EAAWrpI,MAAM,GAErB9pG,EAAOp0B,QAAU,EAEzB,EACAw5V,EAAex5V,QAAU0E,OAAOi8Q,sBAAsBymF,EAC1D,CAEIxwU,CAAQyxB,GACD,WACCmxS,EAAex5V,SACf0E,OAAO8+Q,qBAAqBg2E,EAAex5V,QAEnD,CACJ,GAAG8uY,GACH5vY,EAAAA,WAAgB,WACZswM,EAAMxvM,SAAU,CACpB,GAAG,GACP,gCCpCWivY,EAAsB,SAAUvuX,EAAKG,EAAKzP,GACjD,IAAI89X,EAAazuX,KAAK6T,KAAKzT,EAAMH,GAAO,KACxC,OAAOD,KAAK6T,KAAKljB,EAAQsP,GAAOwuX,EACpC,EAIWC,EAAiB,SAAUC,EAAaC,EAAiBt1B,EAAY9rN,GAC5E,IAAIqhP,EAAqB7uX,KAAKI,IAAIk5V,EAAY,KAC1Cw1B,EAA0B,IAAMD,EAAsB,IACtDF,EAAYpvY,SAAWqvY,EAAgBrvY,UACvCovY,EAAYpvY,QAAQX,MAAM2G,MAASioJ,EAAkD,OAArC,GAAGp+I,OAAOy/X,EAAoB,KAC9ED,EAAgBrvY,QAAQX,MAAM2G,MAASioJ,EAAsD,OAAzC,GAAGp+I,OAAO0/X,EAAwB,KACtFH,EAAYpvY,QAAQX,MAAM2H,OAASinJ,EAAa,GAAGp+I,OAAOy/X,EAAoB,KAAO,OACrFD,EAAgBrvY,QAAQX,MAAM2H,OAASinJ,EAAa,GAAGp+I,OAAO0/X,EAAwB,KAAO,OAErG,WCxBWztW,EAAkB,CACzBrgC,KAAM,qCACNgiE,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbjJ,QAAS,GACTkJ,iBAAkB,yJCTlBpjD,EAAsC,WAStC,OARAA,EAAWlS,OAAO2mB,QAAU,SAAS1sB,GACjC,IAAK,IAAI6vB,EAAGvsB,EAAI,EAAGO,EAAIisB,UAAU7qB,OAAQ3B,EAAIO,EAAGP,IAE5C,IAAK,IAAIqmB,KADTkG,EAAIC,UAAUxsB,GACOyC,OAAOud,UAAUsG,eAAeC,KAAKgG,EAAGlG,KACzD3pB,EAAE2pB,GAAKkG,EAAElG,IAEjB,OAAO3pB,CACX,EACOiY,EAASsL,MAAMH,KAAM0M,UAChC,EAuBWigB,EAAcp5C,EAAAA,YAAiB,SAAU2K,EAAOkc,IACvD8b,EAAAA,EAAAA,GAAgBC,GAChB,IAAIr2B,EAAY5B,EAAM4B,UAAW5F,EAAWgE,EAAMhE,SAAUzC,EAAKyG,EAAMijB,QAASA,OAAiB,IAAP1pB,EAAgB4xB,EAAalI,QAAU1pB,EAAI67W,EAAcp1W,EAAMo1W,YAAa4T,EAAehpX,EAAMgpX,aAAc1xC,EAAiBt3U,EAAMs3U,eAAgB39U,EAAKqG,EAAMgX,IAAKA,OAAa,IAAPrd,EAAgBwxB,EAAanU,IAAMrd,EAAIK,EAAKgG,EAAM6W,IAAKA,OAAa,IAAP7c,EAAgBmxB,EAAatU,IAAM7c,EAAIqzB,EAAWrtB,EAAMqtB,SAAU13B,EAAYqK,EAAMrK,UAAWH,EAAQwK,EAAMxK,MAAOmwY,EAAa3lY,EAAM2lY,WAAYC,EAAiB5lY,EAAM4lY,eAAgBC,EAAgB7lY,EAAM6lY,cAAeC,EAAoB9lY,EAAM8lY,kBACxjBnvJ,EAAathP,EAAAA,OAAa,MAC1B0wY,EAAoB1wY,EAAAA,OAAa,MACjC2wY,EAAwB3wY,EAAAA,OAAa,MACrCosP,EAAepsP,EAAAA,aAAkB,WAC7BshP,EAAWxgP,SACXwgP,EAAWxgP,QAAQ4zB,OAE3B,GAAG,IACH10B,EAAAA,oBAA0B6mB,GAAQ,WAAc,MAAQ,CACpDiO,QAASwsN,EAAWxgP,QACpB8vY,sBAAuBF,EAAkB5vY,QACzC+vY,0BAA2BF,EAAsB7vY,QACjD4zB,MAAO03N,EACP,IACJ,IAAIl6O,EAASvH,EAAMuH,OAAS4jB,EAAa5jB,MACrC+6L,ECjDiB,SAAU/6L,GAC/B,IAAI1R,EAAMR,EAAAA,SAIV,OAHAA,EAAAA,WAAgB,WACZQ,EAAIM,QAAUoR,CAClB,IACO1R,EAAIM,OACf,CD2CoBgwY,CAAY5+X,GACxBywU,EAAoC,OAAhBh4U,EAAMuH,MAC1BkW,GAAMk0O,EAAAA,EAAAA,GAAOhb,EAAY32O,EAAMyd,KAC/B2mI,EAA6B,aAAhBgxN,EACbgxB,EFnDoB,SAAU7+X,GAClC,IAAI8+X,EAAc9+X,EAAMyvC,WAAWlsC,MAAM,KACzC,OAA8B,IAAvBu7X,EAAY1iY,OAAe,GAAGqC,OAAOqgY,EAAY,IAAM,GAAGrgY,OAAOqgY,EAAY,GAAI,KAAKrgY,OAAOqgY,EAAY,GAAGl9R,OAAO,EIClG,GJA5B,CEgDyBm9R,CAAe/+X,GAChCg/X,EAAa,CACbh/X,MAAOA,GAEPi/X,EAAexd,EACbhpX,EAAMrI,MACFtC,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,qBACvCN,EAAAA,cAAoB2K,EAAMrI,MAAOgf,EAAS,CAAC,EAAG4vX,KAChDlxY,EAAAA,cAAoB,OAAQ,CAAEM,UAAW,qBAAuBywY,QACpEpxY,EACFyxY,EAAe,CACf9wY,WAAWu7B,EAAAA,EAAAA,GAAW,gBAAiB,CACnC,4BAA6BkzH,EAC7B,yBAA0BA,EAC1B,wBAAyBnhI,EACzB,8BAA+B+0T,EAC/B,aAAch8U,GACfrG,GACHE,IAAK8gP,EACLl5N,IAAKA,EACL4P,UAAUkvC,EAAAA,EAAAA,GAAYlvC,EAAUrxB,GAChCnC,KAAM,cACN,aAAcmG,EAAMi9O,UACpB,gBAAiBpmO,EACjB,gBAAiBG,EACjB,gBAAiBghU,OAAoBhjV,EAAYuS,EACjD,gBAAiBvL,EACjBxG,MAAOA,GAEPkxY,GAAkBx1W,EAAAA,EAAAA,GAAW,yBAA0B,CACvD,mBAAuC,UAAnBomT,EACpB,oBAAwC,WAAnBA,EACrB,iBAAqC,QAAnBA,QAA+CtiV,IAAnBsiV,IAE9C07B,EAAyC,mBAAdpxW,QAAyC5M,IAAd4M,EACpDA,EAAUk7Q,SACVl7Q,EEhF8B,IAId,EF+ElB+kY,EAActxY,EAAAA,aAAkB,WAChC,IAAI66W,EAAak1B,EAAoBvuX,EAAKG,EAAKsrL,GAC/CgjM,EAAeS,EAAmBC,EAAuB91B,EAAY9rN,EACzE,GAAG,CAACA,EAAYptI,EAAKH,EAAKyrL,IACtBskM,EAAevxY,EAAAA,aAAkB,SAAUs1C,GAC3C,IAAIulU,EAAak1B,EAAoBvuX,EAAKG,EAAKsrL,GAAa/6L,EAAQ+6L,GAAa33J,GACjF26V,EAAeS,EAAmBC,EAAuB91B,EAAY9rN,EACzE,GAAG,CAACvtI,EAAKG,EAAKsrL,EAAW/6L,EAAO68I,IAC5ByiP,EAAYxxY,EAAAA,aAAkB,WAC9B,IAAI66W,EAAak1B,EAAoBvuX,EAAKG,EAAKzP,GAC/C+9X,EAAeS,EAAmBC,EAAuB91B,EAAY9rN,EACzE,GAAG,CAACA,EAAYptI,EAAKH,EAAKtP,IAO1B,OANAy9X,EAAa,CACTloH,SAAUk2F,EACVkyB,QAASyB,EACT72F,SAAU82F,EACVvyQ,MAAOwyQ,GACR,CAACt/X,EAAOyrW,IACH39W,EAAAA,cAAoB,MAAOshB,EAAS,CAAC,EAAG8vX,GAC5CpxY,EAAAA,cAAoB,OAAQ,CAAEM,UAAW+wY,GAAmBd,EAAiB,IAAMA,EAAiB,IAAKpwY,MAAOmwY,GAAca,GAC9HnxY,EAAAA,cAAoB,MAAO,CAAEM,UAAW,iCAAkCH,MAAOqwY,EAAehwY,IAAKkwY,GACjG1wY,EAAAA,cAAoB,OAAQ,CAAEM,UAAW+wY,GAAmBZ,EAAoB,IAAMA,EAAoB,IAAKjwY,IAAKmwY,GAAyBQ,IACzJ,IACA/3V,EAAY3gB,UAAY,CACpBlsB,UAAWmsB,EAAAA,IACXkvN,UAAWlvN,EAAAA,OACX/xB,SAAU+xB,EAAAA,KACV9K,QAAS8K,EAAAA,KACTp2B,MAAOo2B,EAAAA,IACPi7V,aAAcj7V,EAAAA,KACdupT,eAAgBvpT,EAAAA,MAAgB,CAAC,QAAS,SAAU,QACpD/W,IAAK+W,EAAAA,OACLlX,IAAKkX,EAAAA,OACLxmB,MAAOwmB,EAAAA,OACPV,SAAUU,EAAAA,OACV43W,WAAY53W,EAAAA,OACZ63W,eAAgB73W,EAAAA,OAChB83W,cAAe93W,EAAAA,OACf+3W,kBAAmB/3W,EAAAA,QAEvB,IAAI5C,EAAe,CACfvpB,WAAW,EACXiV,IAAK,EACLG,IAAK,IACLzP,MAAO,EACPvL,UAAU,EACVinB,SAAS,EACT+lW,cAAc,GAElBv6U,EAAYtjB,aAAeA,EAC3BsjB,EAAY7S,YAAc,iwCGhJ1B,MAwBM86O,EAAiB,CACnB9+Q,KAAM,eACN8jD,QAAS,6CACT+2M,QAAS,eAGP8qC,EAAoB,CACtB3lS,KAAM,kBACN8jD,QAAS,6CACT+2M,QAAS,eAGPvR,EAAmB,CACrBtpP,KAAM,iBACN8jD,QAAS,6CACT+2M,QAAS,eAGP6qC,EAAmB,CACrB1lS,KAAM,iBACN8jD,QAAS,6CACT+2M,QAAS,eASPigE,EAAsB,CACxB96T,KAAM,qBACN8jD,QAAS,qEACT+2M,QAAS,eASPkgE,EAAqB,CACvB/6T,KAAM,oBACN8jD,QAAS,qEACT+2M,QAAS,eA2BP+sF,EAAqB,CACvB5nV,KAAM,mBACN8jD,QAAS,4EACT+2M,QAAS,eAePopH,EAAgB,CAClBjkX,KAAM,aACN8jD,QAAS,uGACT+2M,QAAS,eAGP5sN,EAAmB,CACrBjuC,KAAM,gBACN8jD,QAAS,wGACT+2M,QAAS,eAGPqpH,EAAkB,CACpBlkX,KAAM,eACN8jD,QAAS,wGACT+2M,QAAS,eAGP3sN,EAAkB,CACpBluC,KAAM,eACN8jD,QAAS,uGACT+2M,QAAS,eAyDP7pN,EAAiB,CACnBhxC,KAAM,cACN8jD,QAAS,oGACT+2M,QAAS,eA2BP28E,EAAY,CACdx3U,KAAM,QACN8jD,QAAS,0GACT+2M,QAAS,eAGP08E,EAAc,CAChBv3U,KAAM,UACN8jD,QAAS,4GACT+2M,QAAS,eA+DPo6E,EAAmB,CACrBj1U,KAAM,gBACN8jD,QAAS,sOACT+2M,QAAS,eAyJPq1F,EAAoB,CACtBlwV,KAAM,iBACN8jD,QAAS,mXACT+2M,QAAS,eAmDPuzD,EAAmB,CACrBpuT,KAAM,iBACN8jD,QAAS,8kCACT+2M,QAAS,eAGPwzD,EAAqB,CACvBruT,KAAM,mBACN8jD,QAAS,4zCACT+2M,QAAS,eAePizD,EAA2B,CAC7B9tT,KAAM,yBACN8jD,QAAS,ueACT+2M,QAAS,eAGPkzD,EAA0B,CAC5B/tT,KAAM,wBACN8jD,QAAS,8IACT+2M,QAAS,eAqEPivD,EAAqB,CACvB9pT,KAAM,kBACN8jD,QAAS,+EACT+2M,QAAS,eAeP+uD,EAAkB,CACpB5pT,KAAM,eACN8jD,QAAS,kFACT+2M,QAAS,eA+JPy5C,EAAW,CACbt0S,KAAM,OACN8jD,QAAS,4GACT+2M,QAAS,eAGP05C,EAAW,CACbv0S,KAAM,OACN8jD,QAAS,yGACT+2M,QAAS,eA2BPxlN,EAAyB,CAC3Br1C,KAAM,wBACN8jD,QAAS,4NACT+2M,QAAS,eAGP5zN,EAAY,CACdjnC,KAAM,QACN8jD,QAAS,uNACT+2M,QAAS,eAGP/3N,EAAe,CACjB9iC,KAAM,WACN8jD,QAAS,+RACT+2M,QAAS,eASPm3C,EAAY,CACdhyS,KAAM,QACN8jD,QAAS,+VACT+2M,QAAS,eA2BPu1C,EAAW,CACbpwS,KAAM,OACN8jD,QAAS,gaACT+2M,QAAS,eAGPw5C,EAAa,CACfr0S,KAAM,SACN8jD,QAAS,grBACT+2M,QAAS,eA2BPvlN,EAAa,CACft1C,KAAM,SACN8jD,QAAS,mcACT+2M,QAAS,eAeP//M,EAAY,CACd96C,KAAM,QACN8jD,QAAS,kFACT+2M,QAAS,eAGPm1H,EAAmB,CACrBhwX,KAAM,gBACN8jD,QAAS,iOACT+2M,QAAS,eASPtlN,EAAQ,CACVv1C,KAAM,IACN8jD,QAAS,+IACT+2M,QAAS,eASPrV,EAAc,CAChBxlP,KAAM,WACN8jD,QAAS,wOACT+2M,QAAS,eAGP2iC,EAAW,CACbx9R,KAAM,OACN8jD,QAAS,qEACT+2M,QAAS,eAePs5E,EAAY,CACdn0U,KAAM,QACN8jD,QAAS,sCACT+2M,QAAS,eAiCPimE,EAAmB,CACrB9gU,KAAM,iBACN8jD,QAAS,4DACT+2M,QAAS,eAGPkmE,EAAoB,CACtB/gU,KAAM,kBACN8jD,QAAS,yDACT+2M,QAAS,eAGPm4E,EAAa,CACfhzU,KAAM,SACN8jD,QAAS,6DACT+2M,QAAS,eAGPu4E,EAAkB,CACpBpzU,KAAM,eACN8jD,QAAS,kJACT+2M,QAAS,eAmDPhgN,EAAa,CACf76C,KAAM,SACN8jD,QAAS,8EACT+2M,QAAS,eAGP8uG,EAAoB,CACtB3pW,KAAM,iBACN8jD,QAAS,iIACT+2M,QAAS,eAePwuB,EAAa,CACfrpR,KAAM,SACN8jD,QAAS,8DACT+2M,QAAS,eAGP2uB,EAAoB,CACtBxpR,KAAM,iBACN8jD,QAAS,6FACT+2M,QAAS,eAGPquB,EAAqB,CACvBlpR,KAAM,kBACN8jD,QAAS,uCACT+2M,QAAS,eA2BPqnC,EAAa,CACfliS,KAAM,SACN8jD,QAAS,8RACT+2M,QAAS,eAmSPu8G,EAAkB,CACpBp3W,KAAM,eACN8jD,QAAS,4OACT+2M,QAAS,eAGPw8G,EAAW,CACbr3W,KAAM,OACN8jD,QAAS,0HACT+2M,QAAS,eA+DPjgN,EAAwB,CAC1B56C,KAAM,qBACN8jD,QAAS,0NACT+2M,QAAS,eASPu3C,EAAY,CACdpyS,KAAM,QACN8jD,QAAS,uQACT+2M,QAAS,eA2EPu1F,GAAc,CAChBpwV,KAAM,UACN8jD,QAAS,m/BACT+2M,QAAS,eAGPo6C,GAAc,CAChBj1S,KAAM,UACN8jD,QAAS,kTACT+2M,QAAS,eA+JPy1F,GAAmB,CACrBtwV,KAAM,gBACN8jD,QAAS,40BACT+2M,QAAS,eA+PP20C,GAAW,CACbxvS,KAAM,OACN8jD,QAAS,oqBACT+2M,QAAS,eAGP60C,GAAa,CACf1vS,KAAM,SACN8jD,QAAS,0GACT+2M,QAAS,eAGP+0C,GAAgB,CAClB5vS,KAAM,YACN8jD,QAAS,iNACT+2M,QAAS,eASPg6C,GAAsB,CACxB70S,KAAM,mBACN8jD,QAAS,iHACT+2M,QAAS,eAePi1C,GAAoB,CACtB9vS,KAAM,gBACN8jD,QAAS,qtDACT+2M,QAAS,eAGPm1C,GAAgB,CAClBhwS,KAAM,YACN8jD,QAAS,6tBACT+2M,QAAS,eAGPq1C,GAAgB,CAClBlwS,KAAM,YACN8jD,QAAS,8rBACT+2M,QAAS,eAmDPm7C,GAAkB,CACpBh2S,KAAM,eACN8jD,QAAS,6rCACT+2M,QAAS,eAGPo7C,GAAoB,CACtBj2S,KAAM,iBACN8jD,QAAS,uSACT+2M,QAAS,eAGPg7C,GAAa,CACf71S,KAAM,SACN8jD,QAAS,6LACT+2M,QAAS,eAGPk7C,GAAc,CAChB/1S,KAAM,UACN8jD,QAAS,6LACT+2M,QAAS,eAuCPu6C,GAAgB,CAClBp1S,KAAM,aACN8jD,QAAS,iJACT+2M,QAAS,eAGP26C,GAAkB,CACpBx1S,KAAM,eACN8jD,QAAS,oJACT+2M,QAAS,eAGPy6C,GAAiB,CACnBt1S,KAAM,cACN8jD,QAAS,oJACT+2M,QAAS,eAGP66C,GAAmB,CACrB11S,KAAM,gBACN8jD,QAAS,6IACT+2M,QAAS,eAGP+6C,GAAkB,CACpB51S,KAAM,eACN8jD,QAAS,0RACT+2M,QAAS,eAGP8nD,GAAe,CACjB3iT,KAAM,YACN8jD,QAAS,iKACT+2M,QAAS,eASPymD,GAAwB,CAC1BthT,KAAM,uBACN8jD,QAAS,sHACT+2M,QAAS,eAGP2mD,GAA0B,CAC5BxhT,KAAM,yBACN8jD,QAAS,4HACT+2M,QAAS,eAGP6mD,GAAyB,CAC3B1hT,KAAM,wBACN8jD,QAAS,yHACT+2M,QAAS,eAGP+mD,GAA2B,CAC7B5hT,KAAM,0BACN8jD,QAAS,wHACT+2M,QAAS,eAGPinD,GAA6B,CAC/B9hT,KAAM,4BACN8jD,QAAS,8HACT+2M,QAAS,eAGPmnD,GAA4B,CAC9BhiT,KAAM,2BACN8jD,QAAS,2HACT+2M,QAAS,eAGPqnD,GAA2B,CAC7BliT,KAAM,0BACN8jD,QAAS,wHACT+2M,QAAS,eAGPunD,GAA6B,CAC/BpiT,KAAM,4BACN8jD,QAAS,8HACT+2M,QAAS,eAGPynD,GAA4B,CAC9BtiT,KAAM,2BACN8jD,QAAS,2HACT+2M,QAAS,eAGP2nD,GAAuB,CACzBxiT,KAAM,qBACN8jD,QAAS,qRACT+2M,QAAS,eAuFPo3C,GAAgB,CAClBjyS,KAAM,aACN8jD,QAAS,+uBACT+2M,QAAS,eA6LPu4C,GAAiB,CACnBpzS,KAAM,aACN8jD,QAAS,gaACT+2M,QAAS,eAGPxjN,GAAW,CACbr3C,KAAM,OACN8jD,QAAS,6NACT+2M,QAAS,eAyDPs3C,GAAe,CACjBnyS,KAAM,YACN8jD,QAAS,kkBACT+2M,QAAS,eAuFPw2C,GAAe,CACjBrxS,KAAM,YACN8jD,QAAS,wQACT+2M,QAAS,eASPguD,GAAsB,CACxB7oT,KAAM,mBACN8jD,QAAS,0cACT+2M,QAAS,eASPomD,GAA0B,CAC5BjhT,KAAM,wBACN8jD,QAAS,+fACT+2M,QAAS,eAGP42C,GAA4B,CAC9BzxS,KAAM,2BACN8jD,QAAS,0LACT+2M,QAAS,eAGP62C,GAA6B,CAC/B1xS,KAAM,4BACN8jD,QAAS,0LACT+2M,QAAS,eAGP02C,GAA0B,CAC5BvxS,KAAM,yBACN8jD,QAAS,8LACT+2M,QAAS,eAGP22C,GAA0B,CAC5BxxS,KAAM,yBACN8jD,QAAS,wLACT+2M,QAAS,eAGP+2C,GAAwB,CAC1B5xS,KAAM,sBACN8jD,QAAS,8XACT+2M,QAAS,eAGP82C,GAAqB,CACvB3xS,KAAM,mBACN8jD,QAAS,qYACT+2M,QAAS,eASPg3C,GAAkB,CACpB7xS,KAAM,eACN8jD,QAAS,ySACT+2M,QAAS,eAGPi3C,GAAiB,CACnB9xS,KAAM,cACN8jD,QAAS,qLACT+2M,QAAS,eAePk3C,GAA4B,CAC9B/xS,KAAM,0BACN8jD,QAAS,0PACT+2M,QAAS,eA2fPvkN,GAAW,CACbt2C,KAAM,OACN8jD,QAAS,0IACT+2M,QAAS,eAGPg2C,GAAc,CAChB7wS,KAAM,WACN8jD,QAAS,kKACT+2M,QAAS,eAGP9kN,GAAc,CAChB/1C,KAAM,WACN8jD,QAAS,mOACT+2M,QAAS,eAiCP7kN,GAAc,CAChBh2C,KAAM,WACN8jD,QAAS,ysCACT+2M,QAAS,eAePzkN,GAAiB,CACnBp2C,KAAM,cACN8jD,QAAS,i2BACT+2M,QAAS,eAePxkN,GAAc,CAChBr2C,KAAM,WACN8jD,QAAS,uYACT+2M,QAAS,eAqBPk4C,GAAW,CACb/yS,KAAM,OACN8jD,QAAS,yMACT+2M,QAAS,eA6LPgoD,GAAsB,CACxB7iT,KAAM,mBACN8jD,QAAS,6uCACT+2M,QAAS,eAeP/kN,GAAgB,CAClB91C,KAAM,aACN8jD,QAAS,26BACT+2M,QAAS,eAGPhlN,GAAgB,CAClB71C,KAAM,aACN8jD,QAAS,0VACT+2M,QAAS,eAGPjlN,GAAgB,CAClB51C,KAAM,aACN8jD,QAAS,+SACT+2M,QAAS,eAGP5kN,GAAuB,CACzBj2C,KAAM,oBACN8jD,QAAS,2lBACT+2M,QAAS,eAGP3kN,GAAe,CACjBl2C,KAAM,YACN8jD,QAAS,iXACT+2M,QAAS,eASP1kN,GAAsB,CACxBn2C,KAAM,mBACN8jD,QAAS,mZACT+2M,QAAS,eAuCPwuD,GAAyB,CAC3BrpT,KAAM,uBACN8jD,QAAS,iMACT+2M,QAAS,eAGP0uD,GAA0B,CAC5BvpT,KAAM,wBACN8jD,QAAS,+LACT+2M,QAAS,eAGP4uD,GAAuB,CACzBzpT,KAAM,qBACN8jD,QAAS,yLACT+2M,QAAS,eAGPqzD,GAAqB,CACvBluT,KAAM,mBACN8jD,QAAS,qXACT+2M,QAAS,eAGPszD,GAAqB,CACvBnuT,KAAM,mBACN8jD,QAAS,irBACT+2M,QAAS,iHC1pHDlmL,EAAAu6T,gkEAAAA,EAAAv6T,IAAAA,EAAA,KACV,cAAgB,gBAChBu6T,EAAA,QAAU,UACVA,EAAA,UAAY,YACZA,EAAA,SAAW,WCnCb,IAAMC,EAAuB,SAACtlV,GAAgB,OAAAA,EAAIzyC,QAAQ,MAAO,GAAnB,EACxCg4X,EAAsB,SAACvlV,GAAgB,OAAAA,EAAIzyC,QAAQ,MAAO,GAAnB,EAEtC,SAAAi4X,EACL/2Q,EACAzuE,GAEA,IAAKyuE,EACH,OAAOzuE,EAET,IAAKA,EACH,OAAOyuE,EAGT,GCVK,SAAuBzuE,GAC5B,OAAO,IAAI/yB,OAAO,WAAWa,KAAKkyB,EAAA,CDS9BylV,CAAczlV,GAChB,OAAOA,EAGT,IAAMtE,EAAY+yE,EAAK/zE,SAAS,OAASsF,EAAIrzC,WAAW,KAAO,IAAM,GAIrE,MAAO,IAHP8hH,EAAO62Q,EAAqB72Q,IAGX/yE,GAFjBsE,EAAMulV,EAAoBvlV,GAEG,CEnBxB,IAAMgqK,EAAU,SAAClvK,GAAwB,SAAGv2C,OAAAic,MAAH,GAAas6B,EAAb,ECFhD,IAAMxE,EAAqCovV,EAAAA,GAGpC,SAAAC,EAAmCC,EAAaC,GACrD,GACED,IAAWC,KAERvvV,EAAcsvV,IAAWtvV,EAAcuvV,IACvCxtX,MAAMC,QAAQstX,IAAWvtX,MAAMC,QAAQutX,IAG1C,OAAOA,EAOT,IALA,IAAMC,EAAU9iY,OAAOC,KAAK4iY,GACtBE,EAAU/iY,OAAOC,KAAK2iY,GAExBI,EAAeF,EAAQ5jY,SAAW6jY,EAAQ7jY,OACxC+jY,EAAgB5tX,MAAMC,QAAQutX,GAAU,GAAK,CAAC,EAClCpxX,EAAA,EAAAyxX,EAAAJ,EAAArxX,EAAAyxX,EAAAhkY,OAAAuS,IAAS,CAA3B,IAAWkX,EAAAu6W,EAAAzxX,GACTwxX,EAASt6W,GAAOg6W,EAA0BC,EAAOj6W,GAAMk6W,EAAOl6W,IAC1Dq6W,IAAcA,EAAeJ,EAAOj6W,KAASs6W,EAASt6W,IAE5D,OAAOq6W,EAAeJ,EAASK,CAAA,CCcjC,IAAME,EAA+B,mBAAA59W,EAAA,GAAA9T,EAAA,EAAAA,EAAAsY,UAAA7qB,OAAAuS,IAAA8T,EAAA9T,GAAAsY,UAAAtY,GAAa,OAAA2xX,MAAA5lX,WAAA,EAAS+H,EAAT,EAE5C89W,EAAwB,SAAC/yY,GAC7B,OAAAA,EAAS2T,QAAU,KAAO3T,EAAS2T,QAAU,GAA7C,EAEIq/X,EAA2B,SAACpkV,GACnB,+BAAyBp0B,KAAKo0B,EAAQp3B,IAAI,iBAAmB,GAA7D,EAmDf,SAAAy7W,EAAwBvvV,GACtB,KAAKwvV,EAAAA,EAAAA,IAAcxvV,GACjB,OAAOA,EAGT,IADA,IAAM4sD,EAA4Bh5B,EAAA,GAAK5zB,GAClBviC,EAAA,EAAAgJ,EAAAza,OAAO82B,QAAQ8pE,GAAfnvF,EAAAgJ,EAAAvb,OAAAuS,IAAsB,CAAhC,IAAAiJ,EAAAD,EAAAhJ,GAAC6b,EAAA5S,EAAA,QACA,IADGA,EAAA,WACekmF,EAAKtzE,GAEnC,OAAOszE,CAAA,CAsFF,SAAA3yB,EAAwBn5E,GAAxB,IAAAirB,EAAA,UAAwB,IAAAjrB,IAAAA,EAAA,QAAAI,EAAAJ,EAC7Bo5E,EAD6Bh5E,EAAAg5E,QAE7Bz8D,EAF6Bvc,EAAAi5E,eAE7BA,OAAA,IAAA18D,EAAiB,SAAC+1D,GAAM,OAAAA,CAAA,EAAA/1D,EACxBgJ,EAH6BvlB,EAAAuuY,QAG7BA,OAAA,IAAAhpX,EAAU0oX,EAAA1oX,EACVguC,EAJ6BvzD,EAAAuzD,iBAK7B/tC,EAL6BxlB,EAAAwuY,kBAK7BA,OAAA,IAAAhpX,EAAoB4oX,EAAA5oX,EACpBE,EAN6B1lB,EAAAyuY,gBAM7BA,OAAA,IAAA/oX,EAAkB,mBAAAA,EAClBgpX,EAP6B1uY,EAAA0uY,aAQpBC,EARoB3uY,EAAAsrD,QASZsjV,EATY5uY,EAAA6uY,gBAUbC,EAVa9uY,EAAA2rD,eAW1BojV,EAAAC,EAX0BhvY,EAW1B,CAVH,UACA,iBACA,UACA,mBACA,oBACA,kBACA,eACA,UACA,kBACA,mBAcA,MALqB,qBAAVkuY,OAAyBK,IAAYN,GAC9CjxY,QAAQw6D,KACN,6HAGG,SAAO2c,EAAKR,GAAQ,OAAAs7T,EAAApkX,EAAA,mJAoBtB,OAnBK8nC,EAAoDghB,EAAAhhB,OAA5CmkB,EAA4CnD,EAAAmD,SAAlCw3C,EAAkC36C,EAAA26C,MAA3B4gR,EAA2Bv7T,EAAAu7T,SAAjBC,EAAiBx7T,EAAAw7T,OAATxtY,EAASgyE,EAAAhyE,KAG1DmmD,GAOEsnV,EAAc,iBAAPj7T,EAAkB,CAAErsB,IAAKqsB,GAAQA,GAAxCrsB,IANFvrC,EAME6yX,EAAAplV,QANFA,OAAA,IAAAztC,EAAU,IAAI8yX,QAAQN,EAAiB/kV,SAAAztC,EACvCgJ,EAKE6pX,EAAA5nV,OALFA,OAAA,IAAAjiC,OAAS,EAAAA,EACTC,EAIE4pX,EAAAP,gBAJFA,OAAA,IAAArpX,EAAkB,MAAAopX,EAAAA,EAA0B,OAAAppX,EAC5CE,EAGE0pX,EAAAzjV,eAHFA,OAAA,IAAAjmC,EAAiB,MAAAopX,EAAAA,EAAwBX,EAAAzoX,EACzCG,EAEEupX,EAAA9jV,QAFFA,OAAA,IAAAzlC,EAAU8oX,EAAA9oX,EACP2kJ,EAAAwkO,EACDI,EADC,CANH,MACA,UACA,SACA,kBACA,iBACA,YAGEvqV,EAAsB6tB,EAAAD,EAAAC,EAAA,GACrBq8T,GADqB,CAExBp8U,OAAAA,IACG63G,GAGLxgH,EAAU,IAAIqlV,QAAQhB,EAAerkV,IACrCk+O,EAAArjP,EACG,GAAMo0B,EAAejvB,EAAS,CAC7B8sB,SAAAA,EACAw3C,MAAAA,EACA4gR,SAAAA,EACAC,OAAAA,EACAxtY,KAAAA,YANJumS,EAAOl+O,QACJq+O,EAAAy8D,QAMM96S,EAGHslV,EAAgB,SAAC93X,GACrB,MAAgB,kBAATA,KACN82X,EAAAA,EAAAA,IAAc92X,IACb2I,MAAMC,QAAQ5I,IACS,oBAAhBA,EAAKwtC,OAHd,GAKGH,EAAOmF,QAAQoD,IAAI,iBAAmBkiV,EAAczqV,EAAOrtC,OAC9DqtC,EAAOmF,QAAQlwB,IAAI,eAAgB20W,GAGjCa,EAAczqV,EAAOrtC,OAASg3X,EAAkB3pV,EAAOmF,WACzDnF,EAAOrtC,KAAOqvC,KAAKC,UAAUjC,EAAOrtC,KAAMk3X,IAGxClnV,IACI+nV,GAAWznV,EAAI1kB,QAAQ,KAAO,IAAM,IACpCq1C,EAAQllB,EACVA,EAAiB/L,GACjB,IAAIwB,gBAAgBqlV,EAAe7mV,IACvCM,GAAOynV,EAAU92T,GAGnB3wB,EAAMwlV,EAASt0T,EAASlxB,GAElBhD,EAAU,IAAI0qV,QAAQ1nV,EAAKjD,GAC3B4qV,EAAe,IAAID,QAAQ1nV,EAAKjD,GACtCmuH,EAAO,CAAEluH,QAAS2qV,GAGhBC,GAAW,EACXC,EACErkV,GACAnzB,YAAW,WACTu3W,GAAW,EACX/7T,EAAIlf,OAAA,GACHnJ,oBAEM,iCAAMijV,EAAQzpV,kBAAzB1pD,EAAWitS,EAAAy8D,oBAEX,kBAAO,CAAP,EAAO,CACL/nW,MAAO,CACLgS,OAAQ2gY,EAAW,gBAAkB,cACrC3yY,MAAO+xB,OAAO8gX,IAEhB58N,KAAAA,kBAGE28N,GAAW/4W,aAAa+4W,cAExBE,EAAgBz0Y,EAASwsB,QAE/BorJ,EAAK53K,SAAWy0Y,EAGZv8U,GAAuB,oBAGzB,iCAAMhjC,QAAQoF,IAAI,CAChBo6W,EAAe10Y,EAAUyzY,GAAiBjyY,MACxC,SAACy/E,GAAO,OAAA0zT,GAAa1zT,CAAb,IACR,SAACx6E,GAAO,OAAAmuY,GAAsBnuY,CAAtB,IAIVguY,EAAc3pY,OAAOtJ,MACnB,SAACy/E,GAAO,OAAA/oB,GAAe+oB,CAAf,IACR,WAAM,cAGV,GAZAgsN,EAAAy8D,OAYIkrC,GAAqB,MAAMA,uBAE/B,mBAAO,CAAP,EAAO,CACLjzY,MAAO,CACLgS,OAAQ,gBACRkhY,eAAgB70Y,EAAS2T,OACzBrO,KAAM4yD,GACNv2D,MAAO+xB,OAAOohX,KAEhBl9N,KAAAA,YAIJ,MAAO,CAAP,EAAOrnH,EAAevwD,EAAU20Y,IAC5B,CACErvY,KAAMqvY,GACN/8N,KAAAA,GAEF,CACEj2K,MAAO,CACLgS,OAAQ3T,EAAS2T,OACjBrO,KAAMqvY,IAER/8N,KAAAA,UAzHmB,EA6H3B,SAAA88N,EACE10Y,EACAyzY,GACA,OAAAI,EAAA,8EACA,MAA+B,oBAApBJ,EACF,CAAP,EAAOA,EAAgBzzY,KAGD,iBAApByzY,IACFA,EAAkBL,EAAkBpzY,EAAS4uD,SAAW,OAAS,QAG3C,SAApB6kV,EAAA,MACW,GAAMzzY,EAAS8K,gBAC5B,MAAO,CAAP,GADMA,EAAOqW,EAAAuoV,QACD96V,OAAS68C,KAAKmE,MAAM9kD,GAAQ,aAG1C,MAAO,CAAP,EAAO9K,EAAS8K,cAAA,ECpWb,IAAAiqY,EACL,SACkBviY,EACAolK,QAAA,IAAAA,IAAAA,OAAA,GADA,KAAAplK,MAAAA,EACA,KAAAolK,KAAAA,CAAA,ECoEpB,Ih0BiIYrhG,EAAAC,Ei0BlMC7/C,GAA0Bq+W,EAAAA,EAAAA,IAAa,kBACvCC,GAA8BD,EAAAA,EAAAA,IAAa,oBAC3CE,GAA2BF,EAAAA,EAAAA,IAAa,iBACxCG,GAA4BH,EAAAA,EAAAA,IAAa,kBAElDI,GAAc,EAkBX,SAAA7/T,EACLxK,EACAsqU,GAiDA,OAAOA,EACHA,EAActqU,EAAU,CAAEp0C,QAAAA,EAASs+W,YAAAA,EAAaE,UAAAA,EAAWD,SAAAA,IAxC/D,WACE,IAAMx+W,EAAc,WAAM,OAAAq0C,EAASp0C,IAAT,EAEpB2+W,EAAe,WAAM,OAAAvqU,EAASmqU,IAAT,EACrBK,EAAgB,WAAM,OAAAxqU,EAASoqU,IAAT,EACtBK,EAAyB,WACW,YAApC1vY,OAAOyV,SAASk6X,gBAClB/+W,IAL0Bq0C,EAASkqU,IAOnC,EA2BJ,OAvBKG,GACmB,qBAAXtvY,QAA0BA,OAAOG,mBAE1CH,OAAOG,iBACL,mBACAuvY,GACA,GAEF1vY,OAAOG,iBAAiB,QAASywB,GAAa,GAG9C5wB,OAAOG,iBAAiB,SAAUqvY,GAAc,GAChDxvY,OAAOG,iBAAiB,UAAWsvY,GAAe,GAClDH,GAAc,GAGE,WAClBtvY,OAAOq5C,oBAAoB,QAASzoB,GACpC5wB,OAAOq5C,oBAAoB,mBAAoBq2V,GAC/C1vY,OAAOq5C,oBAAoB,SAAUm2V,GACrCxvY,OAAOq5C,oBAAoB,UAAWo2V,GACtCH,GAAc,EAET,CAKLM,EAAA,Cj0B+iBC,SAAAC,EACLlvY,GAEA,OAAOA,EAAEF,OAASgwE,EAAe8G,KAAA,CAwF5B,SAAAu4T,EACL/rV,EAGApgD,EACA9H,EACAk0Y,EACAj+N,EACAk+N,GAEA,MAiBoB,oBAjBLjsV,EACNA,EACLpgD,EACA9H,EACAk0Y,EACAj+N,GAEC5qK,IAAI+oY,GACJ/oY,IAAI8oY,GAEL/wX,MAAMC,QAAQ6kC,GACTA,EAAY78C,IAAI+oY,GAAsB/oY,IAAI8oY,GAE5C,GAOF,SAAAC,EACLlsV,GAEA,MAA8B,kBAAhBA,EAA2B,CAAEtjD,KAAMsjD,GAAgBA,CAAA,Ck0B7vB5D,SAAAmsV,EAAyB/7S,GAC9B,OAAY,MAALA,CAAK,El0BuMFzjB,EAAAD,IAAAA,EAAA,KACV,MAAQ,QACRC,EAAA,SAAW,Wm0BrKN,IAAMy/T,EAAqB/yV,OAAO,gBAC5BgzV,EAAgB,SAACn9T,GAC5B,MAAmC,oBAA5BA,EAAIk9T,EAAX,ECgHF,SAAAE,EAAkCC,GAChC,OAAOA,CAAA,CA6fF,SAAAC,EACLj3X,EAGA7Y,EACAizE,EACA88T,GAEA,OAAOV,EACLp8T,EAAoBp6D,EAAOw4J,KAAK7+F,IAAIlD,cAActvE,IAClDgwY,EAAAA,EAAAA,IAAYn3X,GAAUA,EAAO3d,aAAU,GACvC+0Y,EAAAA,EAAAA,IAAoBp3X,GAAUA,EAAO3d,aAAU,EAC/C2d,EAAOw4J,KAAK7+F,IAAI0D,aAChB,kBAAmBr9D,EAAOw4J,KAAOx4J,EAAOw4J,KAAK6+N,mBAAgB,EAC7DH,EAAA,CCrnBJ,SAAAI,EACE52Y,EACA+5E,EACAm6E,GAEA,IAAM2iP,EAAW72Y,EAAM+5E,GACnB88T,GACF3iP,EAAO2iP,EAAA,CAcJ,SAAAC,EACLz2Y,GApEF,IAAAqE,EAyEE,OAAQ,OAAAA,EAAA,QAASrE,EAAKA,EAAG44E,IAAIoD,cAAgBh8E,EAAGg8E,eAAxC33E,EAA0DrE,EAAG25E,SAAA,CAGvE,SAAA+8T,EACE/2Y,EACAK,EAGA6zJ,GAEA,IAAM2iP,EAAW72Y,EAAM82Y,EAAoBz2Y,IACvCw2Y,GACF3iP,EAAO2iP,EAAA,CAIX,IAAMpiU,GAAe,CAAC,EAEf,SAAAuiU,GAAoB31X,OACzBg0D,EAAAh0D,EAAAg0D,YACA4hU,EAAA51X,EAAA41X,WACAC,EAAA71X,EAAA61X,cACA7sX,EAAAhJ,EAAAmjC,QACuBw9S,EAAA33U,EAAAqvD,oBACrBy9T,EAAA9sX,EAAA8sX,OACAC,EAAA/sX,EAAA+sX,uBACAC,EAAAhtX,EAAAgtX,mBAEFb,EAAAn1X,EAAAm1X,cACA7sV,EAAAtoC,EAAAsoC,OAYM6hB,GAAgB8rU,EAAAA,EAAAA,IAAgBjiU,EAAA,kBAChCkiU,GAAa/iU,EAAAA,EAAAA,IAAY,CAC7BzxE,KAASsyE,EAAA,WACTZ,aAAAA,GACAK,SAAU,CACR0iU,kBAAmB,CACjBzyV,QAAA,SACE0yV,EACAp2X,UAEOo2X,EAFMp2X,EAAA1f,QAAAo4E,cAEA,EAEf29T,SAASC,EAAAA,EAAAA,OAEXC,mBAAoB,CAClB7yV,QAAA,SACE0yV,EACAp2X,OACEgJ,EAAAhJ,EAAA1f,QAAWo4E,EAAA1vD,EAAA0vD,cAAe89T,EAAAxtX,EAAAwtX,QAK5BjB,EAA4Ba,EAAO19T,GAAe,SAAC88T,GACjDA,EAASrxY,MAAOsyY,EAAAA,EAAAA,IAAajB,EAASrxY,KAAaqyY,EAAQ1mY,SAAA,KAG/DumY,SAASC,EAAAA,EAAAA,QAKbI,cAAA,SAAc95T,GACZA,EACG+5T,QAAQf,EAAWt/T,SAAS,SAAC8/T,EAAOp2X,OApJ7C3c,EAoJ+CozK,EAAAz2J,EAAAy2J,KAAc7+F,EAAA53D,EAAAy2J,KAAA7+F,IAC7Cg/T,EAAY7B,EAAcn9T,IAC5BA,EAAIzf,WAAay+U,KAEnB,MAAAR,EAAA/yY,EAAMu0E,EAAIc,iBAAV09T,EAAA/yY,GAA6B,CAC3BmP,OAAQ6jE,EAAYwgU,cACpBniU,aAAckD,EAAIlD,gBAItB6gU,EAA4Ba,EAAOx+T,EAAIc,eAAe,SAAC88T,GACrDA,EAAShjY,OAAS6jE,EAAYC,QAE9Bk/T,EAAS78T,UACPi+T,GAAapB,EAAS78T,UAElB68T,EAAS78T,UAET89F,EAAK99F,eACc,IAArBf,EAAI0D,eACNk6T,EAASl6T,aAAe1D,EAAI0D,cAE9Bk6T,EAASsB,iBAAmBrgO,EAAKqgO,gBAAA,OAGpCH,QAAQf,EAAW9pV,WAAW,SAACsqV,EAAOp2X,OAAEy2J,EAAAz2J,EAAAy2J,KAAMn2K,EAAA0f,EAAA1f,QAC7Ci1Y,EACEa,EACA3/N,EAAK7+F,IAAIc,eACT,SAAC88T,GAjLb,IAAAnyY,EAkLc,GACEmyY,EAAS78T,YAAc89F,EAAK99F,WAC3Bo8T,EAAct+N,EAAK7+F,KAFtB,CAKQ,IAAA3yB,EAAU07S,EAChBlqL,EAAK7+F,IAAIlD,cAAAzvB,MAIX,GAFAuwV,EAAShjY,OAAS6jE,EAAYvqB,UAE1B7G,EACF,QAAsB,IAAlBuwV,EAASrxY,KAAoB,CACvB,IAAA4yY,EACNtgO,EAAAugO,mBAD0BC,EAC1BxgO,EAAA7+F,IAD+Bs/T,EAC/BzgO,EAAA6+N,cAD8C6B,EAC9C1gO,EAAA99F,UAKEqvK,GAAUovJ,EAAAA,EAAAA,IACZ5B,EAASrxY,MACT,SAACkzY,GAEC,OAAOpyV,EAAMoyV,EAAmB/2Y,EAAS,CACvCs3E,IAAKq/T,EAAI37T,aACTg6T,cAAA4B,EACAF,mBAAAD,EACAp+T,UAAAw+T,GAAA,IAIN3B,EAASrxY,KAAO6jP,OAGhBwtJ,EAASrxY,KAAO7D,OAIlBk1Y,EAASrxY,KACP,OAAAd,EAAAs9V,EAAYlqL,EAAK7+F,IAAIlD,cAAc4iU,oBAAnCj0Y,EACI6tY,GACEqG,EAAAA,EAAAA,IAAQ/B,EAASrxY,OACbwxV,EAAAA,EAAAA,IAAS6/C,EAASrxY,MAClBqxY,EAASrxY,KACb7D,GAEFA,SAGDk1Y,EAASh1Y,MAChBg1Y,EAASwB,mBAAqBvgO,EAAKugO,kBA7C3B,CA6C2B,OAIxCL,QACCf,EAAW7pV,UACX,SAACqqV,EAAOp2X,OAAEgJ,EAAAhJ,EAAAy2J,KAAQ+gO,EAAAxuX,EAAAwuX,UAAW5/T,EAAA5uD,EAAA4uD,IAAKe,EAAA3vD,EAAA2vD,UAAan4E,EAAAwf,EAAAxf,MAAOF,EAAA0f,EAAA1f,QACpDi1Y,EACEa,EACAx+T,EAAIc,eACJ,SAAC88T,GACC,GAAIgC,OAEG,CAEL,GAAIhC,EAAS78T,YAAcA,EAAW,OACtC68T,EAAShjY,OAAS6jE,EAAYtqB,SAC9BypV,EAASh1Y,MAAS,MAAAF,EAAAA,EAAWE,EAAA,OAMtCi3Y,WAAWzB,GAAoB,SAACI,EAAOn4X,GAEtC,IADQ,IAAAy5X,EAAY3B,EAAuB93X,GAAAy5X,QAChB13X,EAAA,EAAAgJ,EAAAza,OAAO82B,QAAQqyW,GAAf13X,EAAAgJ,EAAAvb,OAAAuS,IAAyB,CAAzC,IAAAiJ,EAAAD,EAAAhJ,GAACkX,EAAAjO,EAAA,GAAKuc,EAAAvc,EAAA,IAGb,MAAAuc,OAAA,EAAAA,EAAOhzB,UAAW6jE,EAAYvqB,YAC9B,MAAAtmB,OAAA,EAAAA,EAAOhzB,UAAW6jE,EAAYtqB,WAE9BqqV,EAAMl/W,GAAOsO,GAAA,OAMnBmyW,GAAgBxkU,EAAAA,EAAAA,IAAY,CAChCzxE,KAASsyE,EAAA,aACTZ,aAAAA,GACAK,SAAU,CACR8H,qBAAsB,CACpB73B,QAAA,SAAQ0yV,EAAOp2X,OACP4zF,EAAW6hS,EADFz1X,EAAA1f,SAEXszG,KAAYwiS,UACPA,EAAMxiS,EAAA,EAGjByiS,SAASC,EAAAA,EAAAA,QAGbI,cAAA,SAAc95T,GACZA,EACG+5T,QACCd,EAAcv/T,SACd,SAAC8/T,EAAOp2X,OAAEy2J,EAAAz2J,EAAAy2J,KAAMztJ,EAAAhJ,EAAAy2J,KAAQ99F,EAAA3vD,EAAA2vD,UAAWf,EAAA5uD,EAAA4uD,IAAKk/T,EAAA9tX,EAAA8tX,iBACjCl/T,EAAIggU,QAETxB,EAAMX,EAAoBh/N,IAAS,CACjC99F,UAAAA,EACAnmE,OAAQ6jE,EAAYC,QACpB5B,aAAckD,EAAIlD,aAClBoiU,iBAAAA,GAAA,IAILH,QAAQd,EAAc/pV,WAAW,SAACsqV,EAAOp2X,OAAE1f,EAAA0f,EAAA1f,QAASm2K,EAAAz2J,EAAAy2J,KAC9CA,EAAK7+F,IAAIggU,OAEdlC,EAA+BU,EAAO3/N,GAAM,SAAC++N,GACvCA,EAAS78T,YAAc89F,EAAK99F,YAChC68T,EAAShjY,OAAS6jE,EAAYvqB,UAC9B0pV,EAASrxY,KAAO7D,EAChBk1Y,EAASwB,mBAAqBvgO,EAAKugO,mBAAA,OAGtCL,QAAQd,EAAc9pV,UAAU,SAACqqV,EAAOp2X,OAAE1f,EAAA0f,EAAA1f,QAASE,EAAAwf,EAAAxf,MAAOi2K,EAAAz2J,EAAAy2J,KACpDA,EAAK7+F,IAAIggU,OAEdlC,EAA+BU,EAAO3/N,GAAM,SAAC++N,GACvCA,EAAS78T,YAAc89F,EAAK99F,YAEhC68T,EAAShjY,OAAS6jE,EAAYtqB,SAC9BypV,EAASh1Y,MAAS,MAAAF,EAAAA,EAAWE,EAAA,OAGhCi3Y,WAAWzB,GAAoB,SAACI,EAAOn4X,GAEtC,IADQ,IAAAiuL,EAAc6pM,EAAuB93X,GAAAiuL,UAClBlsL,EAAA,EAAAgJ,EAAAza,OAAO82B,QAAQ6mK,GAAflsL,EAAAgJ,EAAAvb,OAAAuS,IAA2B,CAA3C,IAAAiJ,EAAAD,EAAAhJ,GAACkX,EAAAjO,EAAA,GAAKuc,EAAAvc,EAAA,IAGZ,MAAAuc,OAAA,EAAAA,EAAOhzB,UAAW6jE,EAAYvqB,YAC7B,MAAAtmB,OAAA,EAAAA,EAAOhzB,UAAW6jE,EAAYtqB,UAEhC70B,KAAQ,MAAAsO,OAAA,EAAAA,EAAOmzC,aAEfy9T,EAAMl/W,GAAOsO,GAAA,OAOnBqyW,GAAoB1kU,EAAAA,EAAAA,IAAY,CACpCzxE,KAASsyE,EAAA,gBACTZ,aAAAA,GACAK,SAAU,CACRqkU,iBAAkB,CAChBp0V,QAAA,SACE0yV,EACAn4X,GAOA,IAxVV,IAAA5a,EAAAI,EAAAK,EAAAG,EAsVgB+b,EAAkC/B,EAAO3d,QAAvCo4E,EAAA14D,EAAA04D,cAAeq/T,EAAA/3X,EAAA+3X,aAEY/uX,EAAA,EAAAC,EAAA1a,OAAOrO,OAAOk2Y,GAAdptX,EAAAC,EAAAxb,OAAAub,IACjC,IADF,IAAWgvX,EAAA/uX,EAAAD,GACqBG,EAAA,EAAAG,EAAA/a,OAAOrO,OAAO83Y,GAAd7uX,EAAAG,EAAA7b,OAAA0b,IAAqC,CAAnE,IAAW8uX,EAAA3uX,EAAAH,GACH+uX,EAAUD,EAAgBpxW,QAAQ6xC,IACvB,IAAbw/T,GACFD,EAAgBvoX,OAAOwoX,EAAS,GAKtC,IAA2B,IAAAvsG,EAAA,EAAAwsG,EAAAJ,EAAApsG,EAAAwsG,EAAA1qY,OAAAk+R,IAAc,CAA9B,IAAAG,EAAAqsG,EAAAxsG,GAAEvmS,EAAA0mS,EAAA1mS,KAAMpG,EAAA8sS,EAAA9sS,GACXo5Y,EAAsB,OAAAn0Y,GAAAR,EAAA,OAAAJ,EAAA+yY,EAAAhxY,IAAA/B,EAAA+yY,EAAAhxY,GAAgB,CAAC,GAAjBtB,EAC1B9E,GAAM,0BADoBiF,EAAAR,EAAAK,GAEtB,GACoBs0Y,EAAkBx0Y,SAAS80E,IAEnD0/T,EAAkBxrX,KAAK8rD,GAAA,EAI7B29T,SAASC,EAAAA,EAAAA,QAMbI,cAAA,SAAc95T,GACZA,EACG+5T,QACCT,EAAWriU,QAAQsiU,mBACnB,SAACC,EAAOp2X,GACN,QADmB04D,EAAA14D,EAAA1f,QAAAo4E,cACgB1vD,EAAA,EAAAC,EAAA1a,OAAOrO,OAAOk2Y,GAAdptX,EAAAC,EAAAxb,OAAAub,IACjC,IADF,IAAWgvX,EAAA/uX,EAAAD,GACqBG,EAAA,EAAAG,EAAA/a,OAAOrO,OACnC83Y,GAD4B7uX,EAAAG,EAAA7b,OAAA0b,IAE3B,CAFH,IAAW8uX,EAAA3uX,EAAAH,GAGH+uX,EAAUD,EAAgBpxW,QAAQ6xC,IACvB,IAAbw/T,GACFD,EAAgBvoX,OAAOwoX,EAAS,OAMzCT,WAAWzB,GAAoB,SAACI,EAAOn4X,GAEtC,IApYV,IAAA5a,EAAAI,EAAAK,EAAAG,EAmYkBo0Y,EAAatC,EAAuB93X,GAAAo6X,SACTr4X,EAAA,EAAAgJ,EAAAza,OAAO82B,QAAQgzW,GAAfr4X,EAAAgJ,EAAAvb,OAAAuS,IACjC,IADS,IAAAiJ,EAAAD,EAAAhJ,GAAC5a,EAAA6jB,EAAA,GAAMqvX,EAAArvX,EAAA,GACcE,EAAA,EAAAG,EAAA/a,OAAO82B,QAAQizW,GAAfnvX,EAAAG,EAAA7b,OAAA0b,IAI5B,IAJS,IAAAwiR,EAAAriR,EAAAH,GAACnqB,EAAA2sS,EAAA,GAAI4sG,EAAA5sG,EAAA,GACRysG,EAAsB,OAAAn0Y,GAAAR,EAAA,OAAAJ,EAAA+yY,EAAAhxY,IAAA/B,EAAA+yY,EAAAhxY,GAAgB,CAAC,GAAjBtB,EAC1B9E,GAAM,0BADoBiF,EAAAR,EAAAK,GAEtB,GACsBgoS,EAAA,EAAA0sG,EAAAD,EAAAzsG,EAAA0sG,EAAA/qY,OAAAq+R,IAAW,CAAvC,IAAWpzN,EAAA8/T,EAAA1sG,GAEPssG,EAAkBx0Y,SAAS80E,IAE3B0/T,EAAkBxrX,KAAK8rD,GAAA,IAMhC++T,YACCgB,EAAAA,EAAAA,IAAQC,EAAAA,EAAAA,IAAY9C,IAAa+C,EAAAA,EAAAA,IAAoB/C,KACrD,SAACQ,EAAOn4X,GACN,IAAM85X,EAAe7C,EACnBj3X,EACA,eACA0iV,EACAw0C,GAEMz8T,EAAkBz6D,EAAOw4J,KAAK7+F,IAAAc,cAEtCm/T,EAAkBe,aAAad,iBAC7B1B,EACAyB,EAAkBhkU,QAAQikU,iBAAiB,CACzCp/T,cAAAA,EACAq/T,aAAAA,IAAA,OASRc,GAAoB1lU,EAAAA,EAAAA,IAAY,CACpCzxE,KAASsyE,EAAA,iBACTZ,aAAAA,GACAK,SAAU,CACR2F,0BAAA,SACErnD,EACAppB,GAOA,EAGFmwY,uBAAA,SACE/mX,EACAppB,GACA,EAGFowE,2BAAA,SACEhnD,EACAppB,GACA,KAMAowY,GAA6B5lU,EAAAA,EAAAA,IAAY,CAC7CzxE,KAASsyE,EAAA,yBACTZ,aAAAA,GACAK,SAAU,CACRulU,qBAAsB,CACpBt1V,QAAA,SAAQ/kD,EAAOsf,GACb,OAAOw4X,EAAAA,EAAAA,IAAa93Y,EAAOsf,EAAO3d,QAAA,EAEpC+1Y,SAASC,EAAAA,EAAAA,UAKT2C,GAAc9lU,EAAAA,EAAAA,IAAY,CAC9BzxE,KAASsyE,EAAA,UACTZ,aAAc+C,EAAA,CACZ+iU,OCpdwB,qBAAdh/V,gBAEW,IAArBA,UAAUi/V,QAEVj/V,UAAUi/V,ODidV13W,QErdoB,qBAAbrnB,UAIyB,WAA7BA,SAASk6X,gBFkdZ8E,sBAAsB,GACnB9wV,GAELmrB,SAAU,CACR2lU,qBAAA,SAAqBz6Y,EAAOqhB,OAAE1f,EAAA0f,EAAA1f,QAC5B3B,EAAMy6Y,qBAC2B,aAA/Bz6Y,EAAMy6Y,sBAAuCtD,IAAWx1Y,GACpD,UACA,GAGVo2Y,cAAe,SAAC95T,GACdA,EACG+5T,QAAQ5C,GAAU,SAACp1Y,GAClBA,EAAMu6Y,QAAS,KAEhBvC,QAAQ3C,GAAW,SAACr1Y,GACnBA,EAAMu6Y,QAAS,KAEhBvC,QAAQnhX,GAAS,SAAC72B,GACjBA,EAAM8iC,SAAU,KAEjBk1W,QAAQ7C,GAAa,SAACn1Y,GACrBA,EAAM8iC,SAAU,KAIjBg2W,WAAWzB,GAAoB,SAACI,GAAW,OAAAjgU,EAAA,GAAKigU,EAAL,GAAK,IAIjDiD,GAAkBC,EAAAA,EAAAA,IAEtB,CACA5B,QAASxB,EAAWxyV,QACpBwoJ,UAAWyrM,EAAcj0V,QACzB20V,SAAUR,EAAkBn0V,QAC5B61V,cAAeR,EAA2Br1V,QAC1C4E,OAAQ2wV,EAAYv1V,UAkBtB,MAAO,CAAEA,QAf+B,SAAC/kD,EAAOsf,GAC9C,OAAAo7X,EAAgBlvU,EAAc5wD,MAAM0E,QAAU,EAAYtf,EAAOsf,EAAjE,EAcgB41D,QAZFqC,EAAAC,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,GACX8iU,EAAYplU,SACZqiU,EAAWriU,SACXglU,EAAkBhlU,SAClBklU,EAA2BllU,SAC3B8jU,EAAc9jU,SACdgkU,EAAkBhkU,SANP,CAQd2lU,0BAA2B7B,EAAc9jU,QAAQ0H,qBACjDpR,cAAAA,IAGgB,CGteb,IAAMiO,GAA4Br2B,OAAO03V,IAAI,kBA2D9CC,GAAsC,CAC1ClnY,OAAQ6jE,EAAYwgU,eAIhB8C,IAAuCC,EAAAA,EAAAA,IAC3CF,IACA,WAAM,IAEFG,IAA0CD,EAAAA,EAAAA,IAC9CF,IACA,WAAM,IAGD,SAAAI,GAGL95X,OACAq3D,EAAAr3D,EAAAq3D,mBACArD,EAAAh0D,EAAAg0D,YAOM+lU,EAAqB,SAACp7Y,GAAqB,OAAAg7Y,EAAA,EAC3CK,EAAwB,SAACr7Y,GAAqB,OAAAk7Y,EAAA,EAEpD,MAAO,CAAEI,mBAyBT,SACEvlU,EACAD,GAEA,OAAQ,SAACD,GACP,IAAM0lU,EAAiB7iU,EAAmB,CACxC7C,UAAAA,EACAC,mBAAAA,EACAC,aAAAA,IAKIylU,EACJ3lU,IAAc4D,GAAY2hU,EAJA,SAACp7Y,GAzKnC,IAAA0E,EAAAI,EAAAK,EA0KQ,cAAAA,EAAA,OAAAL,EAAA,OAAAJ,EAAA+2Y,EAAoBz7Y,SAApB,EAAA0E,EAA4Bq0Y,cAA5B,EAAAj0Y,EAAsCy2Y,IAAtCp2Y,EACA61Y,EAAA,EAIF,OAAO1/T,EAAAA,EAAAA,IAAekgU,EAA0BE,EAAA,GAzCvBC,sBA6C7B,WACE,OAAQ,SAACt7Y,GApLb,IAAAqE,EAqLUk3Y,EASEC,GAPJD,EADgB,kBAAPv7Y,EACI,OAAAqE,EAAAoyY,EAAoBz2Y,IAApBqE,EAA2B+0E,GAE3Bp5E,KAMEo5E,GACX4hU,EALyB,SAACr7Y,GA3LtC,IAAAk0Y,EAAApvY,EAAAK,EA4LQ,cAAAA,EAAA,OAAAL,EAAA,OAAAovY,EAAAuH,EAAoBz7Y,SAApB,EAAAk0Y,EAA4B3mM,gBAA5B,EAAAzoM,EAAwC82Y,IAAxCz2Y,EACA+1Y,EAAA,EAMF,OAAO5/T,EAAAA,EAAAA,IAAeugU,EAA6BH,EAAA,GA7DHI,oBAiEpD,SACE97Y,EACAoiK,GAQA,IAjNJ,IAAA19J,EA+MUq3Y,EAAW/7Y,EAAMq1E,GACjB2mU,EAAe,IAAIluM,IACPzsL,EAAA,EAAAgJ,EAAA+3I,EAAKl1J,IAAI+oY,GAAT50X,EAAAgJ,EAAAvb,OAAAuS,IAAgC,CAAlD,IAAW/P,EAAA+Y,EAAAhJ,GACHq4X,EAAWqC,EAASrC,SAASpoY,EAAI7K,MACvC,GAAKizY,EAWL,IAPA,IAOyBpvX,EAAA,EAAA2xX,EANtB,OAAAv3Y,OAAW,IAAX4M,EAAIjR,GAEDq5Y,EAASpoY,EAAIjR,IAEbu2N,EAAQhnN,OAAOrO,OAAOm4Y,KAJzBh1Y,EAIwC,GAElB4lB,EAAA2xX,EAAAntY,OAAAwb,IAAyB,CAAlD,IAAWyvU,EAAAkiD,EAAA3xX,GACT0xX,EAAatxW,IAAIqvT,IAIrB,OAAOnjI,EACL3xM,MAAMklC,KAAK6xV,EAAaz6Y,UAAU2L,KAAI,SAAC6sE,GACrC,IAAMmiU,EAAgBH,EAAShD,QAAQh/T,GACvC,OAAOmiU,EACH,CACE,CACEniU,cAAAA,EACAhE,aAAcmmU,EAAcnmU,aAC5B4G,aAAcu/T,EAAcv/T,eAGhC,SAtGV,SAAA++T,EACE7E,GAEA,OAAOr/T,EAAAA,EAAA,GACFq/T,GfrEA,CACLhjY,OAFkCA,EeuEPgjY,EAAShjY,OfpEpCyjE,gBAAiBzjE,IAAW6jE,EAAYwgU,cACxCzyY,UAAWoO,IAAW6jE,EAAYC,QAClCuE,UAAWroE,IAAW6jE,EAAYvqB,UAClC95C,QAASQ,IAAW6jE,EAAYtqB,WAN7B,IAA+Bv5C,CeuEE,CAItC,SAAA4nY,EAA6BU,GAW3B,OAVcA,EAAU9mU,EAUjB,CAkFC,Cz0B1OZ,IAAM/yB,GAA0Cq0B,QAC5C,IAAIA,aACJ,EAESC,GAAqD,SAACv1D,OACjE00D,EAAA10D,EAAA00D,aACAF,EAAAx0D,EAAAw0D,UAEIK,EAAa,GAEXW,EAAS,MAAAv0B,QAAA,EAAAA,GAAO5qB,IAAIm+C,GAE1B,GAAsB,kBAAXgB,EACTX,EAAaW,MACR,CACL,IAAMC,EAAcnrB,KAAKC,UAAUiqB,GAAW,SAACt9C,EAAK7lB,GAClD,OAAA0pY,EAAAA,EAAAA,IAAc1pY,GACV9C,OAAOC,KAAK6C,GACTqY,OACArhB,QAAY,SAAC4wB,EAAKy8C,GAEjB,OADAz8C,EAAIy8C,GAAQrkE,EAAcqkE,GACnBz8C,CAAA,GACN,CAAC,GACN5nB,CAPJ,KASE0pY,EAAAA,EAAAA,IAAcvmU,KAChB,MAAAvzB,IAAAA,GAAO1jB,IAAIi3C,EAAWiB,IAExBZ,EAAaY,EAGf,OAAUf,EAAA,IAAgBG,EAAA,K00BiMrB,SAAA8B,SAAA,IAAAqkU,EAAA,GAAAh7X,EAAA,EAAAA,EAAAsY,UAAA7qB,OAAAuS,IAAAg7X,EAAAh7X,GAAAsY,UAAAtY,GAGL,OAAO,SAAuB2pC,GAC5B,IAAMosV,GAAyBkF,EAAAA,EAAAA,KAAe,SAACh9X,GAxOnD,IAAA5a,EAAAI,EAyOM,cAAAA,EAAAkmD,EAAQosV,6BAAR,EAAAtyY,EAAA4uB,KAAAs3B,EAAiC1rC,EAAQ,CACvC+1D,YAAc,OAAA3wE,EAAAsmD,EAAQqqB,aAAR3wE,EAAuB,WAInC63Y,EAA4DhlU,EAAAC,EAAA,CAChEnC,YAAa,MACbmnU,kBAAmB,GACnBpjU,2BAA2B,EAC3BD,gBAAgB,EAChBD,oBAAoB,GACjBluB,GAN6D,CAOhEosV,uBAAAA,EACA1+T,mBAAA,SAAmB+jU,GACjB,IAAIC,EAA0B9lU,GAC9B,GAAI,uBAAwB6lU,EAAa3mU,mBAAoB,CAC3D,IAAM6mU,EACJF,EAAa3mU,mBAAmB4C,mBAClCgkU,EAA0B,SAACE,GACzB,IAAMC,EAAgBF,EAAYC,GAClC,MAA6B,kBAAlBC,EAEFA,EAIAjmU,GAA0BW,EAAAC,EAAA,GAC5BolU,GAD4B,CAE/B/mU,UAAWgnU,IAAA,OAIR7xV,EAAQ0tB,qBACjBgkU,EAA0B1xV,EAAQ0tB,oBAGpC,OAAOgkU,EAAwBD,EAAA,EAEjCz+T,SAAAtO,EAAA,GAAe1kB,EAAQgzB,UAAY,MAG/Bx5B,EAA2C,CAC/Ck1B,oBAAqB,CAAC,EACtBz5B,MAAA,SAAMgC,GAEJA,GAAA,EAEFk1V,QAAQ2F,EAAAA,EAAAA,MACR1F,uBAAAA,EACAC,oBAAoBiF,EAAAA,EAAAA,KAClB,SAACh9X,GAAW,OAAkC,MAAlC83X,EAAuB93X,EAAvB,KAIVm5D,EAAM,CACVskU,gBA+BF,SACE5rO,GAOA,IALA,IAAM6rO,EAAqB7rO,EAAO53F,UAAU,CAC1CgE,MAAO,SAACnG,GAAO,OAAAG,EAAAC,EAAA,GAAKJ,GAAL,CAAQ3wE,KAAMgwE,EAAe8G,OAA7B,EACfC,SAAU,SAACpG,GAAO,OAAAG,EAAAC,EAAA,GAAKJ,GAAL,CAAQ3wE,KAAMgwE,EAAe+G,UAA7B,IAGqBn8D,EAAA,EAAAgJ,EAAAza,OAAO82B,QAC9Cs2W,GADuC37X,EAAAgJ,EAAAvb,OAAAuS,IAEtC,CAFQ,IAAAiJ,EAAAD,EAAAhJ,GAAC00D,EAAAzrD,EAAA,GAAcgzD,EAAAhzD,EAAA,GAGxB,GACG6mJ,EAAO8rO,oBACRlnU,KAAgBvxB,EAAQk1B,qBAF1B,CAgBAl1B,EAAQk1B,oBAAoB3D,GAAgBuH,EAC5C,IAAgB,IAAA9yD,EAAA,EAAA0yX,EAAAC,EAAA3yX,EAAA0yX,EAAApuY,OAAA0b,IAAoB,CAAzB0yX,EAAA1yX,GACP6yD,eAAetH,EAAcuH,KAInC,OAAO7E,CAAA,EA/DP2kU,iBAAA,SAAiB/7X,OAAEg8X,EAAAh8X,EAAAg8X,YAAa9jU,EAAAl4D,EAAAk4D,UAC9B,GAAI8jU,EACF,IAAiB,IAAAhzX,EAAA,EAAAizX,EAAAD,EAAAhzX,EAAAizX,EAAAxuY,OAAAub,IAAa,CAA9B,IAAWkzX,EAAAD,EAAAjzX,GACJkyX,EAAoBv+T,SAAU/4E,SAASs4Y,IACxChB,EAAoBv+T,SAAmB/vD,KAAKsvX,GAIpD,GAAIhkU,EACF,IAAgD,IAAAjvD,EAAA,EAAAE,EAAA5a,OAAO82B,QACrD6yC,GAD8CjvD,EAAAE,EAAA1b,OAAAwb,IAE7C,CAFQ,IAAAK,EAAAH,EAAAF,GAACyrD,EAAAprD,EAAA,GAAc6yX,EAAA7yX,EAAA,GAGS,oBAAtB6yX,EACTA,EAAkBh5V,EAAQk1B,oBAAoB3D,IAE9CnmE,OAAO2mB,OACLiuB,EAAQk1B,oBAAoB3D,IAAiB,CAAC,EAC9CynU,GAKR,OAAO/kU,CAAA,GAIL0kU,EAAqBd,EAAQnvY,KAAI,SAACu7C,GACtC,OAAAA,EAAE+vB,KAAKC,EAAY8jU,EAA4B/3V,EAA/C,IAuCF,OAAOi0B,EAAIskU,gBAAgB,CAAExjU,UAAWvuB,EAAQuuB,WAAA,ECrT7C,IClCH9b,GDoCSggV,GAAsD,SAACp8X,OAClEg0D,EAAAh0D,EAAAg0D,YACAoD,EAAAp3D,EAAAo3D,IACAj0B,EAAAnjC,EAAAmjC,QACAk5V,EAAAr8X,EAAAq8X,cAEMrzX,EAAgDouD,EAAI0B,gBAAlDq9T,EAAAntX,EAAAmtX,kBAAmB2C,EAAA9vX,EAAA8vX,uBAE3B,SAAAwD,EAAyC5jU,GACvC,IAAM6gU,EAAgB8C,EAAcE,qBAAqB7jU,GACzD,QAAS6gU,IA5Cb,SAAuBh3V,GAGrB,IAAK,IAAI1mB,KAAK0mB,EAEZ,OAAO,EAET,OAAO,EAqCsBi6V,CAAcjD,EAAA,CAG3C,IAAMkD,EAAoD,CAAC,EA2C3D,SAAAC,EACEhkU,EACAhE,EACAioU,EACAr0V,GA5GJ,IAAAjlD,EA8GUoxE,EAAqBtxB,EAAQk1B,oBACjC3D,GAEIymU,EACJ,OAAA93Y,EAAA,MAAAoxE,OAAA,EAAAA,EAAoB0mU,mBAApB93Y,EAAyCilD,EAAO6yV,kBAElD,GAAIA,IAAsBl6R,IAA1B,CAQA,IAAM27R,EAAyBl8X,KAAKI,IAClC,EACAJ,KAAKC,IAAIw6X,EAhFiC,cAmF5C,IAAKmB,EAAgC5jU,GAAgB,CACnD,IAAMmkU,EAAiBJ,EAAuB/jU,GAC1CmkU,GACFxiX,aAAawiX,GAEfJ,EAAuB/jU,GAAiB98C,YAAW,WAC5C0gX,EAAgC5jU,IACnCikU,EAAI/yU,SAASusU,EAAkB,CAAEz9T,cAAAA,YAE5B+jU,EAAwB/jU,EAAA,GACL,IAAzBkkU,IAAyB,CAIhC,OAhF8C,SAC5C3+X,EACA6+X,EACAC,GAlEJ,IAAA15Y,EAoEI,GAAIy1Y,EAAuBv/X,MAAM0E,GAAS,CACxC,IAAMtf,EAAQm+Y,EAAMviU,WAAWvG,GAG/B0oU,EAFQhkU,EAAkBz6D,EAAO3d,QAAAo4E,cAI/B,OAAAr1E,EAAA1E,EAAM+4Y,QAAQh/T,SAAd,EAAAr1E,EAA8BqxE,aAC9BooU,EACAn+Y,EAAM2pD,QAIV,GAAI8uB,EAAIlN,KAAKC,cAAc5wD,MAAM0E,GAC/B,IAA6B,IAAA+B,EAAA,EAAAgJ,EAAAza,OAAO82B,QAAQo3W,GAAfz8X,EAAAgJ,EAAAvb,OAAAuS,IAAwC,CAA1D,IAAAiJ,EAAAD,EAAAhJ,GAACkX,EAAAjO,EAAA,GAAK8lC,EAAA9lC,EAAA,GACX8lC,GAAS10B,aAAa00B,UACnB0tV,EAAuBvlX,GAIlC,GAAIisB,EAAQ6yV,mBAAmB/3X,GAC7B,CAAMtf,EAAQm+Y,EAAMviU,WAAWvG,GAE/B,IAFA,IACQ0jU,EAAYv0V,EAAQ4yV,uBAAuB93X,GAAAy5X,QACTvuX,EAAA,EAAAG,EAAA/a,OAAO82B,QAAQqyW,GAAfvuX,EAAAG,EAAA7b,OAAA0b,IAAyB,CAAxD,IAAAwiR,EAAAriR,EAAAH,GAACuvD,EAAAizN,EAAA,GAAeqxG,EAAArxG,EAAA,GAIzB+wG,EACEhkU,EACA,MAAAskU,OAAA,EAAAA,EAAYtoU,aACZooU,EACAn+Y,EAAM2pD,QAVqB,CAUrB,CA6CP,EElII20V,GAAyD,SAACj9X,OACrEg0D,EAAAh0D,EAAAg0D,YACA7wB,EAAAnjC,EAAAmjC,QACWk1B,EAAAr4D,EAAAmjC,QAAAk1B,oBACXw9T,EAAA71X,EAAA61X,cACAz+T,EAAAp3D,EAAAo3D,IACA+9T,EAAAn1X,EAAAm1X,cACA+H,EAAAl9X,EAAAk9X,aAEQ/G,EAAsB/+T,EAAI0B,gBAAAq9T,kBAC5BgH,GAAwBC,EAAAA,EAAAA,IAC5BC,EAAAA,EAAAA,IAAYxH,IACZyH,EAAAA,EAAAA,IAAoBzH,IA+BtB,SAAA0H,EACEx8O,EACA+7O,GAEA,IAAMhC,EAAYgC,EAAMviU,WAClB57E,EAAQm8Y,EAAU9mU,GAElB2mU,EAAevjU,EAAIlN,KAAKuwU,oBAAoBK,EAAW/5O,GAE7D59G,EAAQvE,OAAM,WAEZ,IAnEN,IAAAv7C,EAmEsC2c,EAAA,EAAAw9X,EADZ55X,MAAMklC,KAAK6xV,EAAaz6Y,UACZ8f,EAAAw9X,EAAA/vY,OAAAuS,IAAa,CAAhC,IAAA04D,EAAA8kU,EAAAx9X,GAAA04D,cACLmiU,EAAgBl8Y,EAAM+4Y,QAAQh/T,GAC9B+kU,EAAuB,OAAAp6Y,EAAA1E,EAAM46Y,cAAc7gU,IAApBr1E,EAAsC,CAAC,EAEhEw3Y,IAC+C,IAA7CtsY,OAAOC,KAAKivY,GAAsBhwY,OACpCqvY,EAAMlzU,SACJusU,EAAkB,CAChBz9T,cAAAA,KAGKmiU,EAAcroY,SAAW6jE,EAAYwgU,eAC9CiG,EAAMlzU,SAASszU,EAAarC,EAAeniU,KAAA,IAOrD,OA1D8C,SAACz6D,EAAQ6+X,GACjDK,EAAsBl/X,IACxBs/X,EACErI,EACEj3X,EACA,kBACAo6D,EACA88T,GAEF2H,GAIA1lU,EAAIlN,KAAKqzU,eAAehkY,MAAM0E,IAChCs/X,EACE9I,EACEx2X,EAAO3d,aACP,OACA,OACA,OACA,EACA60Y,GAEF2H,EAAA,CAmCC,EC3EIY,GAA8C,SAAC19X,OAC1Dg0D,EAAAh0D,EAAAg0D,YACA4hU,EAAA51X,EAAA41X,WACAx+T,EAAAp3D,EAAAo3D,IACA8lU,EAAAl9X,EAAAk9X,aACAb,EAAAr8X,EAAAq8X,cAEMsB,EAID,CAAC,EA6BN,SAAAC,EACE59X,EACA28X,OADEjkU,EAAA14D,EAAA04D,cAIImiU,EADQ8B,EAAIpiU,WAAWvG,GACD0jU,QAAQh/T,GAC9B6gU,EAAgB8C,EAAcE,qBAAqB7jU,GAEzD,GAAKmiU,GAAiBA,EAAcroY,SAAW6jE,EAAYwgU,cAA3D,CAGA,IAAMgH,EAAwBC,EAA0BvE,GACxD,GAAK/xV,OAAOC,SAASo2V,GAArB,CAEA,IAAME,EAAcJ,EAAajlU,IAE7B,MAAAqlU,OAAA,EAAAA,EAAahvV,WACf10B,aAAa0jX,EAAYhvV,SACzBgvV,EAAYhvV,aAAU,GAGxB,IAAMivV,EAAoBn1Y,KAAK2yB,MAAQqiX,EAEjCI,EAAgDN,EACpDjlU,GACE,CACFslU,kBAAAA,EACAhmU,gBAAiB6lU,EACjB9uV,QAASnzB,YAAW,WAClBqiX,EAAiBlvV,aAAU,EAC3B4tV,EAAI/yU,SAASszU,EAAarC,EAAeniU,GAAA,GACxCmlU,GAnB8C,CAH3C,CAsBH,CAIP,SAAAK,EACEl+X,EACA28X,OADEjkU,EAAA14D,EAAA04D,cAIImiU,EADQ8B,EAAIpiU,WAAWvG,GACD0jU,QAAQh/T,GAC9B6gU,EAAgB8C,EAAcE,qBAAqB7jU,GAEzD,GAAKmiU,GAAiBA,EAAcroY,SAAW6jE,EAAYwgU,cAA3D,CAIA,IAAMgH,EAAwBC,EAA0BvE,GAExD,GAAK/xV,OAAOC,SAASo2V,GAArB,CAKA,IAAME,EAAcJ,EAAajlU,GAC3BslU,EAAoBn1Y,KAAK2yB,MAAQqiX,IAElCE,GAAeC,EAAoBD,EAAYC,oBAClDJ,EAAc,CAAEllU,cAAAA,GAAiBikU,QARjCwB,EAAkBzlU,GAQe,CAIrC,SAAAylU,EAA2BjnX,GACzB,IAAMknX,EAAeT,EAAazmX,IAC9B,MAAAknX,OAAA,EAAAA,EAAcrvV,UAChB10B,aAAa+jX,EAAarvV,gBAErB4uV,EAAazmX,EAAA,CAStB,SAAA4mX,EAAmCO,QAAA,IAAAA,IAAAA,EAAA,IACjC,IAAIR,EAAwBr2V,OAAO4iC,kBACnC,IAAK,IAAIlzD,KAAOmnX,EACRA,EAAYnnX,GAAK8gD,kBACrB6lU,EAAwBn9X,KAAKC,IAC3B09X,EAAYnnX,GAAK8gD,gBACjB6lU,IAKN,OAAOA,CAAA,CAET,OApH8C,SAAC5/X,EAAQ6+X,IAEnD1lU,EAAI0B,gBAAgBM,0BAA0B7/D,MAAM0E,IACpDm5D,EAAI0B,gBAAgBggU,uBAAuBv/X,MAAM0E,KAEjDigY,EAAsBjgY,EAAO3d,QAASw8Y,IAItClH,EAAWt/T,QAAQ/8D,MAAM0E,IACxB23X,EAAW7pV,SAASxyC,MAAM0E,IAAWA,EAAOw4J,KAAK+gO,YAElD0G,EAAsBjgY,EAAOw4J,KAAK7+F,IAAKklU,IAIvClH,EAAW9pV,UAAUvyC,MAAM0E,IAC1B23X,EAAW7pV,SAASxyC,MAAM0E,KAAYA,EAAOw4J,KAAK+gO,YAEnDoG,EAAc3/X,EAAOw4J,KAAK7+F,IAAKklU,GAG7B1lU,EAAIlN,KAAKC,cAAc5wD,MAAM0E,IA2EnC,WACE,IAAkB,IAAA+B,EAAA,EAAAgJ,EAAAza,OAAOC,KAAKmvY,GAAZ39X,EAAAgJ,EAAAvb,OAAAuS,IAA2B,CAC3Cm+X,EADSn1X,EAAAhJ,IACS,CA5ElBs+X,EAAA,CA6FG,ECiCHC,GAAqB,IAAItmX,MAC7B,oDAKWumX,GAAqD,SAACx+X,OACjEo3D,EAAAp3D,EAAAo3D,IACApD,EAAAh0D,EAAAg0D,YACA7wB,EAAAnjC,EAAAmjC,QACAyyV,EAAA51X,EAAA41X,WACAC,EAAA71X,EAAA61X,cAGM4I,GAFNz+X,EAAAq8X,eAEqBqC,EAAAA,EAAAA,IAAmB9I,IAClC+I,GAAkBD,EAAAA,EAAAA,IAAmB7I,GACrC+I,GAAmBC,EAAAA,EAAAA,IAAYjJ,EAAYC,GAM3CiJ,EAA+C,CAAC,EAoEtD,SAAAC,EACErqU,EACA4G,EACA5C,EACAokU,EACAnkU,GAEA,IAAMlE,EAAqBtxB,EAAQk1B,oBAAoB3D,GACjDsqU,EAAoB,MAAAvqU,OAAA,EAAAA,EAAoBuqU,kBAC9C,GAAKA,EAAL,CAEA,IAAIC,EAAY,CAAC,EAEXC,EAAoB,IAAInrX,SAAc,SAACC,GAC3CirX,EAAUC,kBAAoBlrX,CAAA,IAE1BmrX,EAGFprX,QAAQqrX,KAAK,CACf,IAAIrrX,SAA0C,SAACC,GAC7CirX,EAAUI,cAAgBrrX,CAAA,IAE5BkrX,EAAkB7+Y,MAAK,WACrB,MAAMk+Y,EAAA,MAKVY,EAAgB5+Y,OAAM,WAAM,IAC5Bu+Y,EAAapmU,GAAiBumU,EAC9B,IAAM90S,EAAY/yB,EAAIc,UAAUxD,GAAsBrhC,OACpDohC,EAAmBrvE,OAASgwE,EAAe8G,MACvCZ,EACA5C,GAGAq5C,EAAQ+qR,EAAMlzU,UAAS,SAACp9C,EAAGS,EAAIqyX,GAAU,OAAAA,CAAA,IACzCC,EAAerpU,EAAAC,EAAA,GAChB2mU,GADgB,CAEnB0C,cAAe,WAAM,OAAAr1S,EAAS2yS,EAAMviU,WAAf,EACrB5B,UAAAA,EACAo5C,MAAAA,EACA0tR,iBAAmBhrU,EAAmBrvE,OAASgwE,EAAe8G,MAC1D,SAACwjU,GACC,OAAA5C,EAAMlzU,SACJwN,EAAIlN,KAAKy1U,gBACPjrU,EACA4G,EACAokU,GAJJ,OAOF,EAEJP,gBAAAA,EACAD,kBAAAA,IAGIU,EAAiBZ,EAAkB1jU,EAAcikU,GAEvDxrX,QAAQC,QAAQ4rX,GAAgBr/Y,OAAM,SAAC+E,GACrC,GAAIA,IAAMi5Y,GACV,MAAMj5Y,CAAA,GArDsB,CAqDtB,CAIV,OApI8C,SAC5C2Y,EACA6+X,EACA+C,GAEA,IAAMjsS,EAmDR,SAAqB31F,GACnB,OAAIwgY,EAAaxgY,GAAgBA,EAAOw4J,KAAK7+F,IAAIc,cAC7CimU,EAAgB1gY,GAAgBA,EAAOw4J,KAAK99F,UAC5CvB,EAAI0B,gBAAgBq9T,kBAAkB58X,MAAM0E,GACvCA,EAAO3d,QAAQo4E,cACpBtB,EAAI0B,gBAAgByC,qBAAqBhiE,MAAM0E,GAC1Cw3X,EAAoBx3X,EAAO3d,SAC7B,GA1DUw/Y,CAAY7hY,GAE7B,GAAI23X,EAAWt/T,QAAQ/8D,MAAM0E,GAAS,CACpC,IAAM26J,EAAWinO,EAAY7rU,GAAa0jU,QAAQ9jS,GAC5Cj1G,EAAQm+Y,EAAMviU,WAAWvG,GAAa0jU,QAAQ9jS,IAC/CglE,GAAYj6K,GACfogZ,EACE9gY,EAAOw4J,KAAK7+F,IAAIlD,aAChBz2D,EAAOw4J,KAAK7+F,IAAI0D,aAChBs4B,EACAkpS,EACA7+X,EAAOw4J,KAAK99F,gBAAA,GAGPk9T,EAAcv/T,QAAQ/8D,MAAM0E,GAAS,EACxCtf,EAAQm+Y,EAAMviU,WAAWvG,GAAak4H,UAAUt4F,KAEpDmrS,EACE9gY,EAAOw4J,KAAK7+F,IAAIlD,aAChBz2D,EAAOw4J,KAAK7+F,IAAI0D,aAChBs4B,EACAkpS,EACA7+X,EAAOw4J,KAAK99F,gBAAA,GAGPimU,EAAiB3gY,GAAS,EAE/B,OADEghY,EAAYH,EAAalrS,SAC3B,EAAAqrS,EAAWI,iBACbJ,EAAUI,cAAc,CACtBl7Y,KAAM8Z,EAAO3d,QACbm2K,KAAMx4J,EAAOw4J,KAAK6+N,uBAEb2J,EAAUI,oBAAA,GAGnBjoU,EAAI0B,gBAAgBq9T,kBAAkB58X,MAAM0E,IAC5Cm5D,EAAI0B,gBAAgByC,qBAAqBhiE,MAAM0E,GAC/C,EACMghY,EAAYH,EAAalrS,aAEtBkrS,EAAalrS,GACpBqrS,EAAUC,0BAAA,GAEH9nU,EAAIlN,KAAKC,cAAc5wD,MAAM0E,GACtC,IAAoC,IAAA+B,EAAA,EAAAgJ,EAAAza,OAAO82B,QAAQy5W,GAAf9+X,EAAAgJ,EAAAvb,OAAAuS,IAA8B,CAAvD,IAAAiJ,EAAAD,EAAAhJ,GAAC+/X,EAAA92X,EAAA,GAAUg2X,EAAAh2X,EAAA,UACb61X,EAAaiB,GACpBd,EAAUC,oBAAA,CAiFT,EC9HIc,GAAqD,SAAChgY,OACjEo3D,EAAAp3D,EAAAo3D,IACAj0B,EAAAnjC,EAAAmjC,QACAyyV,EAAA51X,EAAA41X,WACAC,EAAA71X,EAAA61X,cAEMoK,GAAiBC,EAAAA,EAAAA,IAAUtK,EAAYC,GACvCsK,GAAkBC,EAAAA,EAAAA,IAAWxK,EAAYC,GACzCwK,GAAoBC,EAAAA,EAAAA,IAAY1K,EAAYC,GAM5CiJ,EAA+C,CAAC,EAoEtD,OAlE8C,SAAC7gY,EAAQ6+X,GA3NzD,IAAAz5Y,EAAAI,EAAAK,EA4NI,GAAIm8Y,EAAehiY,GAAS,CACpB,IAAA+B,EAGF/B,EAAOw4J,KAFT99F,EAAA34D,EAAA24D,UACA3vD,EAAAhJ,EAAA43D,IAAO2oU,EAAAv3X,EAAA0rD,aAAc8rU,EAAAx3X,EAAAsyD,aAEjB7G,EAAqBtxB,EAAQk1B,oBAAoBkoU,GACjDE,EAAiB,MAAAhsU,OAAA,EAAAA,EAAoBgsU,eAC3C,GAAIA,EAAgB,CAClB,IAAMC,EAAY,CAAC,EACbC,EACJ,IAAK5sX,SAGH,SAACC,EAAS8hC,GACV4qV,EAAU1sX,QAAUA,EACpB0sX,EAAU5qV,OAASA,CAAA,IAIvB6qV,EAAepgZ,OAAM,WAAM,IAC3Bu+Y,EAAanmU,GAAa+nU,EAC1B,IAAME,EAAYxpU,EAAIc,UAAUqoU,GAAsBltW,OACpDohC,EAAmBrvE,OAASgwE,EAAe8G,MACvCskU,EACA7nU,GAGAo5C,EAAQ+qR,EAAMlzU,UAAS,SAACp9C,EAAGS,EAAIqyX,GAAU,OAAAA,CAAA,IACzCC,EAAerpU,EAAAC,EAAA,GAChB2mU,GADgB,CAEnB0C,cAAe,WAAM,OAAAoB,EAAS9D,EAAMviU,WAAf,EACrB5B,UAAAA,EACAo5C,MAAAA,EACA0tR,iBAAmBhrU,EAAmBrvE,OAASgwE,EAAe8G,MAC1D,SAACwjU,GACC,OAAA5C,EAAMlzU,SACJwN,EAAIlN,KAAKy1U,gBACPY,EACAC,EACAd,GAJJ,OAOF,EACJiB,eAAAA,IAEFF,EAAeD,EAAcjB,SAAA,GAEtBc,EAAkBpiY,GAAS,CAC9B,IAAAgL,EAA+BhL,EAAOw4J,KAAzB6+N,GAAX38T,EAAA1vD,EAAA0vD,UAAW1vD,EAAAqsX,eACnB,OAAAjyY,EAAAy7Y,EAAanmU,KAAbt1E,EAAyB2wB,QAAQ,CAC/B7vB,KAAM8Z,EAAO3d,QACbm2K,KAAM6+N,WAEDwJ,EAAanmU,QAAA,GACXwnU,EAAgBliY,GAAS,CAC5B,IAAAkL,EAAkDlL,EAAOw4J,KAA5CoqO,GAAXloU,EAAAxvD,EAAAwvD,UAAWxvD,EAAA03X,mBAAmBvL,EAAAnsX,EAAAmsX,cACtC,OAAAxxY,EAAAg7Y,EAAanmU,KAAb70E,EAAyBgyD,OAAO,CAC9Bt1D,MAAO,OAAAiD,EAAAwa,EAAO3d,SAAPmD,EAAkBwa,EAAOzd,MAChCsgZ,kBAAmBD,EACnBpqO,KAAM6+N,WAEDwJ,EAAanmU,GAAA,CAIjB,EC3RIooU,GAA+C,SAAC/gY,OAC3Do3D,EAAAp3D,EAAAo3D,IACW0+T,EAAA91X,EAAAmjC,QAAA2yV,OACX91X,EAAAg0D,YAEA,OAAO,SAAC/1D,EAAQ6+X,GACV1lU,EAAIlN,KAAKC,cAAc5wD,MAAM0E,IAE/B6+X,EAAMlzU,SAASwN,EAAI0B,gBAAgBsgU,qBAAqBtD,GAkBhD,GLfRkL,GACsB,oBAAnBC,eACHA,eAAexmX,KACK,qBAAX91B,OACHA,OACkB,qBAAXs+C,EAAAA,EACPA,EAAAA,EACAF,YAGN,SAAC00B,GACE,OAAArb,KAAYA,GAAUroC,QAAQC,YAAY3zB,KAAKo3E,GAAIl3E,OAAM,SAACu2D,GACzD,OAAAl7B,YAAW,WACT,MAAMk7B,CAAA,GACL,EAFH,GADD,EAMIoqV,GAET,SAAClhY,OAAEo3D,EAAAp3D,EAAAo3D,IAAKw+T,EAAA51X,EAAA41X,WAAYyG,EAAAr8X,EAAAq8X,cAChB8E,EAAyB/pU,EAAIpD,YAAA,iBAE/BotU,EACF,KAEEC,GAAiB,EAEfr4X,EACJouD,EAAI0B,gBADEM,EAAApwD,EAAAowD,0BAA2B0/T,EAAA9vX,EAAA8vX,uBAwDnC,OAAO,SAAC76X,EAAQ6+X,GAhGlB,IAAAz5Y,EAAAI,EAwGI,GAPK29Y,IAEHA,EAAwB92V,KAAKmE,MAC3BnE,KAAKC,UAAU8xV,EAAcE,wBAI7BnlU,EAAIlN,KAAKC,cAAc5wD,MAAM0E,GAE/B,OADAmjY,EAAwB/E,EAAcE,qBAAuB,CAAC,EACvD,EAAC,GAAM,GAKhB,GAAInlU,EAAI0B,gBAAgBC,2BAA2Bx/D,MAAM0E,GAAS,CAC1D,IAAA+B,EAA+B/B,EAAO3d,QAApCo4E,EAAA14D,EAAA04D,cAAeC,EAAA34D,EAAA24D,UAGvB,MAAO,EAAC,KADJ,OAAAt1E,EAAAg5Y,EAAcE,qBAAqB7jU,SAAnC,EAAAr1E,EAAoDs1E,KAK1D,IAAM2oU,EA1E4B,SAClCC,EACAtjY,GA/CJ,IAAA5a,EAAAI,EAAAK,EAAAG,EAAAI,EAAAE,EAAA0G,EAAA4U,EAAAylB,EAiDI,GAAI8zC,EAA0B7/D,MAAM0E,GAAS,CACrC,IAAA+B,EAAwC/B,EAAO3d,QAA7Co4E,EAAA14D,EAAA04D,cAAeC,EAAA34D,EAAA24D,UAAWhvB,EAAA3pC,EAAA2pC,QAKlC,OAHI,OAAAtmD,EAAA,MAAAk+Y,OAAA,EAAAA,EAAe7oU,SAAf,EAAAr1E,EAAgCs1E,MAClC4oU,EAAa7oU,GAAgBC,GAAahvB,IAErC,EAET,GAAImvV,EAAuBv/X,MAAM0E,GAAS,CAClC,IAAA+K,EAA+B/K,EAAO3d,QAI5C,OAJQo4E,EAAA1vD,EAAA0vD,cAAeC,EAAA3vD,EAAA2vD,UACnB4oU,EAAa7oU,WACR6oU,EAAa7oU,GAAgBC,IAE/B,EAET,GAAIvB,EAAI0B,gBAAgBq9T,kBAAkB58X,MAAM0E,GAE9C,cADOsjY,EAAatjY,EAAO3d,QAAQo4E,gBAC5B,EAET,GAAIk9T,EAAWt/T,QAAQ/8D,MAAM0E,GAAS,CAElC,IAAAgL,EACEhL,EAAAw4J,KADM7+F,EAAA3uD,EAAA2uD,IAEV,GAFee,EAAA1vD,EAAA0vD,UAEXf,EAAIzf,UAKN,OAJMq9U,EAAY,OAAA1xY,EAAAy9Y,EAAA99Y,EAAam0E,EAAIc,gBAAjB50E,EAAAy9Y,EAAA99Y,GAAoC,CAAC,GAC9Ck1E,GACP,OAAAt0E,EAAA,OAAAJ,EAAA2zE,EAAIuB,qBAAJl1E,EAA2BuxY,EAAS78T,IAApCt0E,EAAkD,CAAC,GAE9C,EAGX,GAAIuxY,EAAW7pV,SAASxyC,MAAM0E,GAAS,CAEnC,IAGMu3X,EAHNrsX,EACElL,EAAAw4J,KADM+gO,EAAAruX,EAAAquX,UAEV,GAFqB5/T,EAAAzuD,EAAAyuD,IAAKe,EAAAxvD,EAAAwvD,UAEtB6+T,GAAa5/T,EAAIzf,UAKnB,OAJMq9U,EAAY,OAAAvqY,EAAAs2Y,EAAAh9Y,EAAaqzE,EAAIc,gBAAjBztE,EAAAs2Y,EAAAh9Y,GAAoC,CAAC,GAC9Co0E,GACP,OAAArzC,EAAA,OAAAzlB,EAAA+3D,EAAIuB,qBAAJt5D,EAA2B21X,EAAS78T,IAApCrzC,EAAkD,CAAC,GAE9C,EAIX,OAAO,EA0BWk8W,CAChBnF,EAAcE,qBACdt+X,GAGF,GAAIqjY,EAAW,CACRD,IACHL,IAAmB,WAEjB,IAAMS,EAAsCn3V,KAAKmE,MAC/CnE,KAAKC,UAAU8xV,EAAcE,uBAGtB/F,GAAWkL,EAAAA,EAAAA,IAClBN,GACA,WAAM,OAAAK,CAAA,IAFC,GAMT3E,EAAMrjX,KAAK29C,EAAI0B,gBAAgBkgU,qBAAqBxC,IAEpD4K,EAAwBK,EACxBJ,GAAiB,KAEnBA,GAAiB,GAGnB,IAAMM,KACF,OAAAl+Y,EAAAwa,EAAO7Y,WAAP,EAAA3B,EAAayU,WAAWipY,IACtBS,EACJhM,EAAW7pV,SAASxyC,MAAM0E,IAC1BA,EAAOw4J,KAAK+gO,aACVv5X,EAAOw4J,KAAK7+F,IAAIzf,UAKpB,MAAO,EAFJwpV,IAA8BC,GAEH,GAGhC,MAAO,EAAC,GAAM,KMxIX,SAAAC,GAILznW,GACQ,IAAA45B,EAA0C55B,EAAA45B,YAA7B4hU,EAA6Bx7V,EAAAw7V,WAAjBx+T,EAAiBh9B,EAAAg9B,IAAZj0B,EAAY/I,EAAA+I,QAC1C2yV,EAAW3yV,EAAA2yV,OAEbjiU,EAAU,CACd0pU,gBAAgBuE,EAAAA,EAAAA,IAEX9tU,EAAA,oBAWD+tU,EAA4C,CAChDhB,GACA3E,GACAa,GACAS,GACAc,GACAwB,IA8EF,MAAO,CAAE/rU,WAvEL,SAAC6oU,GACH,IAAIkF,GAAc,EAMZC,EAAc/rU,EAAAC,EAAA,GACd/7B,GADc,CAMlBiiW,cAV2C,CAC3CE,qBAAsB,CAAC,GAUvBW,aAAAA,IAGItxV,EAAWm2V,EAAgBl2Y,KAAI,SAAC8+C,GAAU,OAAAA,EAAMs3V,EAAN,IAE1CC,EAAwBhB,GAA2Be,GACnDE,ECrEqD,SAACniY,OAC9Dg0D,EAAAh0D,EAAAg0D,YACA7wB,EAAAnjC,EAAAmjC,QACAi0B,EAAAp3D,EAAAo3D,IACA8lU,EAAAl9X,EAAAk9X,aACAb,EAAAr8X,EAAAq8X,cAEQlG,EAAsB/+T,EAAI0B,gBAAAq9T,kBAWlC,SAAAiM,EACEzF,EACAv3Y,GAEA,IAAMzG,EAAQg+Y,EAAIpiU,WAAWvG,GACvB0jU,EAAU/4Y,EAAM+4Y,QAChB6B,EAAgB8C,EAAcE,qBAEpCp5V,EAAQvE,OAAM,WACZ,IAA4B,IAAA5+B,EAAA,EAAAgJ,EAAAza,OAAOC,KAAK+qY,GAAZv5X,EAAAgJ,EAAAvb,OAAAuS,IAA4B,CAAxD,IAAW04D,EAAA1vD,EAAAhJ,GACH66X,EAAgBnD,EAAQh/T,GACxB+kU,EAAuBlE,EAAc7gU,GAEtC+kU,GAAyB5C,IAG5BtsY,OAAOrO,OAAOu9Y,GAAsBjzV,MAClC,SAACktF,GAAQ,OAAc,IAAdA,EAAItyI,EAAJ,KAEVmJ,OAAOrO,OAAOu9Y,GAAsBj+N,OACnC,SAAC9nC,GAAQ,YAAc,IAAdA,EAAItyI,EAAJ,KAETzG,EAAM2pD,OAAOljD,MAGkC,IAA7CmJ,OAAOC,KAAKivY,GAAsBhwY,OACpCkvY,EAAI/yU,SACFusU,EAAkB,CAChBz9T,cAAAA,KAGKmiU,EAAcroY,SAAW6jE,EAAYwgU,eAC9C8F,EAAI/yU,SAASszU,EAAarC,EAAeniU,KAAA,IAOnD,OAhD8C,SAACz6D,EAAQ6+X,GACjDtnX,EAAQjc,MAAM0E,IAChBmkY,EAAoBtF,EAAO,kBAEzB/I,EAASx6X,MAAM0E,IACjBmkY,EAAoBtF,EAAO,sBA2CxB,CDYuBuF,CAAwBJ,GAEpD,OAAO,SAACxoX,GACN,OAAO,SAACxb,GACD+jY,IACHA,GAAc,EAEdlF,EAAMlzU,SAASwN,EAAI0B,gBAAgBsgU,qBAAqBtD,KAG1D,IAUIn0Q,EAVE2gR,EAAgBpsU,EAAAC,EAAA,GAAK2mU,GAAL,CAAYrjX,KAAAA,IAE5BomX,EAAc/C,EAAMviU,WAEpBv6D,EAA0CkiY,EAC9CjkY,EACAqkY,EACAzC,GAHK0C,EAAAviY,EAAA,GAAsBwiY,EAAAxiY,EAAA,GAc7B,GALE2hH,EADE4gR,EACI9oX,EAAKxb,GAELukY,EAGF1F,EAAMviU,WAAWvG,KAIrBmuU,EAAoBlkY,EAAQqkY,EAAezC,GAzEtB,SAAC5hY,GAC5B,QACIA,GACqB,kBAAhBA,EAAO7Y,MACd6Y,EAAO7Y,KAAK8S,WAAc87D,EAAA,KAwEpByuU,CAAqBxkY,IACrBklC,EAAQ6yV,mBAAmB/3X,IAI3B,IAAoB,IAAA+K,EAAA,EAAA05X,EAAA92V,EAAA5iC,EAAA05X,EAAAj1Y,OAAAub,IAAU,EAC5By7H,EADOi+P,EAAA15X,IACC/K,EAAQqkY,EAAezC,GAKrC,OAAOl+Q,CAAA,IAKQ9tD,QAAAA,GAErB,SAAAqpU,EACErC,EAIAniU,EACAy7I,GAEA,YAFA,IAAAA,IAAAA,EAAA,IAEOyhL,EAAWz/T,EAAA,CAChB/wE,KAAM,QACNsvE,aAAcmmU,EAAcnmU,aAC5B4G,aAAcu/T,EAAcv/T,aAC5BnjB,WAAW,EACXkhB,cAAc,EACdX,cAAAA,GACGy7I,GAAA,E90B5IF,SAAA39I,GACLxwD,OAAA,IAAA8N,EAAA,GAAA9T,EAAA,EAAAA,EAAAsY,UAAA7qB,OAAAuS,IAAA8T,EAAA9T,EAAA,GAAAsY,UAAAtY,GAGAzR,OAAO2mB,OAAAnJ,MAAPxd,OAAA8/D,EAAA,CAAcroD,GAAW8N,GAAA,Cg1BwDpB,IAAM6uX,GAAiC5gW,SA0YjC60B,GAAa,WAA2B,OACnDl1E,KAAMihZ,GACNxrU,KAAA,SACEC,EACAp3D,EAUAmjC,OATEo5B,EAAAv8D,EAAAu8D,UAEAvI,GADAh0D,EAAA28D,SACA38D,EAAAg0D,aACAqD,EAAAr3D,EAAAq3D,mBACA8jU,EAAAn7X,EAAAm7X,kBACApjU,EAAA/3D,EAAA+3D,0BACAD,EAAA93D,EAAA83D,eACAD,EAAA73D,EAAA63D,oBAIF+qU,EAAAA,EAAAA,MAIA,IAAMzN,EAAgC,SAACllY,GAWrC,OAAOA,CAAA,EAGT1B,OAAO2mB,OAAOkiD,EAAK,CACjBpD,YAAAA,EACAkE,UAAW,CAAC,EACZY,gBAAiB,CACfi7T,SAAAA,EACAC,UAAAA,EACAx+W,QAAAA,EACAs+W,YAAAA,GAEF5pU,KAAM,CAAC,IAGH,IAAAlhD,EfjSH,SAILhJ,GAJK,IAAAsO,EAAA,KAKL0lD,EAAAh0D,EAAAg0D,YACAuI,EAAAv8D,EAAAu8D,UACWlE,EAAAr4D,EAAAmjC,QAAAk1B,oBACXhB,EAAAr3D,EAAAq3D,mBACAD,EAAAp3D,EAAAo3D,IACA+9T,EAAAn1X,EAAAm1X,cAwHM0N,EAIF,SACFC,EACAC,GASG,OAAArQ,EAAApkX,EAAA,CAVHw0X,EACAC,IASG,SAVHnrU,EACA53D,iCACEo2C,EAAAp2C,EAAAo2C,OACA8B,EAAAl4C,EAAAk4C,MACA8qV,EAAAhjY,EAAAgjY,gBACAC,EAAAjjY,EAAAijY,iBACAr5U,EAAA5pD,EAAA4pD,SACA2Q,EAAAv6D,EAAAu6D,SACAw3C,EAAA/xG,EAAA+xG,wDAGIt9C,EAAqB4D,EAAoBT,EAAIlD,6DAG7C/lB,EAIOqmV,EACP1sY,OAAA,EACE46Y,EAAe,CACnB9sV,OAAAA,EACA8B,MAAAA,EACA0R,SAAAA,EACA2Q,SAAAA,EACAw3C,MAAAA,EACA4gR,SAAU/6T,EAAIlD,aACdtvE,KAAMwyE,EAAIxyE,KACVwtY,OACe,UAAbh7T,EAAIxyE,KAAmB+9Y,EAAcvrU,EAAK2C,UAAc,IAGtD6oU,EACS,UAAbxrU,EAAIxyE,KAAmBwyE,EAAIk9T,QAAsB,IAEjDxsY,EAAS86Y,WADP,oBAEO3uU,EAAmByH,MACnB,GAAMK,EACb9H,EAAmByH,MAAMtE,EAAI0D,cAC7B4nU,EACAzuU,EAAmB4uU,eAJZ,oBACT/6Y,EAAS2jS,EAAAs8D,OAML9zR,EAAmB9lB,oBACrBA,EAAoB8lB,EAAmB9lB,gCAGhC,SAAM8lB,EAAmB6uU,QAChC1rU,EAAI0D,aACJ4nU,EACAzuU,EAAmB4uU,cACnB,SAAClxV,GACC,OAAAoqB,EAAUpqB,EAAK+wV,EAAczuU,EAAmB4uU,aAAhD,YALJ/6Y,EAAS2jS,EAAAs8D,wBAyCX,GAAIjgW,EAAO9H,MAAO,MAAM,IAAIozY,EAAatrY,EAAO9H,MAAO8H,EAAOmuK,MAG5D,OADKttJ,EAAA85X,EACL,GAAMt0V,EAAkBrmD,EAAOnE,KAAMmE,EAAOmuK,KAAM7+F,EAAI0D,sBADxD,MAAO,CAAP,EAAOnyD,EAAA4C,WAAA,GACLkgR,EAAAs8D,QAAsD58D,EAAA,CAEpDqrG,mBAAoBnuY,KAAK2yB,MACzB85W,cAAehtY,EAAOmuK,MAAAk1H,EACrB43G,EAAAA,KAAmB,gCAIpBC,EAAeC,aACS7P,GAAxB,aACE8P,EAIO1O,EAGTvgU,EAAmByH,OACnBzH,EAAmBivU,yBAEnBA,EAAyBjvU,EAAmBivU,yCAI1C,+BADKp6X,EAAA05X,EACL,GAAMU,EACJF,EAAanyY,MACbmyY,EAAa/sO,KACb7+F,EAAI0D,uBAJR,MAAO,CAAP,EAAOhyD,EAAAyC,WAAA,GACLkgR,EAAAs8D,QAGMz8D,EAAA,CAEJwpG,cAAekO,EAAa/sO,MAAAq1H,EAAOy3G,EAAAA,KAAmB,EAAAz3G,gCAG1D03G,EAAeG,iBAenB,MAFEljZ,QAAQD,MAAMgjZ,GAEVA,0BAhIL,EAoIL,SAAAL,EACEvrU,EACAj5E,GAhfJ,IAAA0E,EAAAI,EAAAK,EAAAG,EAkfU2/Y,EAAe,OAAAngZ,EAAA,OAAAJ,EAAA1E,EAAMq1E,SAAN,EAAA3wE,EAAoBq0Y,cAApB,EAAAj0Y,EAA8Bm0E,EAAIc,eACjDmrU,EACJ,OAAA//Y,EAAAnF,EAAMq1E,SAAN,EAAAlwE,EAAoBwkD,OAAOyvB,0BAEvB+rU,EAAe,MAAAF,OAAA,EAAAA,EAAc5M,mBAC7B+M,EACJ,OAAA9/Y,EAAA2zE,EAAIyB,cAAJp1E,EAAqB2zE,EAAIzf,WAAa0rV,EAExC,QAAIE,KAGe,IAAfA,IACCv8V,OAAO,IAAI3+C,MAAU2+C,OAAOs8V,IAAiB,KAAQC,EAGnD,CAGT,IAAMnO,GAAaoO,EAAAA,EAAAA,IAIdhwU,EAAA,gBAA4B6uU,EAAiB,CAChDoB,eAAA,iBACE,OAAAjkY,EAAA,CAAS82X,iBAAkBjuY,KAAK2yB,QAAQ+nX,EAAAA,KAAmB,EAAAvjY,CAAA,EAE7Dw3X,UAAA,SAAU0M,EAAgBlkY,OA5gB9B3c,EAAAI,EAAAK,EA6gBYnF,GAAQ47E,EADYv6D,EAAAu6D,YAGpBqpU,EACJ,OAAAngZ,EAAA,OAAAJ,EAAA1E,EAAMq1E,SAAN,EAAA3wE,EAAoBq0Y,cAApB,EAAAj0Y,EAA8BygZ,EAAexrU,eACzCorU,EAAe,MAAAF,OAAA,EAAAA,EAAc5M,mBAC7BmN,EAAaD,EAAe5oU,aAC5B8oU,EAAc,MAAAR,OAAA,EAAAA,EAActoU,aAC5B7G,EACJ4D,EAAoB6rU,EAAexvU,cAKrC,QAAIqgU,EAAcmP,IAKW,aAAzB,MAAAN,OAAA,EAAAA,EAAcpxY,YAKd2wY,EAAce,EAAgBvlZ,OAKhC61Y,EAAkB//T,MAClB,OAAA3wE,EAAA,MAAA2wE,OAAA,EAAAA,EAAoB4E,mBAApB,EAAAv1E,EAAAuuB,KAAAoiD,EAAmC,CACjC0vU,WAAAA,EACAC,YAAAA,EACAC,cAAeT,EACfjlZ,MAAAA,QAOAmlZ,EAKG,EAETQ,4BAA4B,IAGxBzO,GAAgBmO,EAAAA,EAAAA,IAIjBhwU,EAAA,mBAA+B6uU,EAAiB,CACnDoB,eAAA,iBACE,OAAAjkY,EAAA,CAAS82X,iBAAkBjuY,KAAK2yB,QAAQ+nX,EAAAA,KAAmB,EAAAvjY,CAAA,IAiD/D,SAAAukY,EAAyB7vU,GACvB,OAAO,SAACz2D,GAvnBZ,IAAA5a,EAAAI,EAwnBM,cAAAA,EAAA,OAAAJ,EAAA,MAAA4a,OAAA,EAAAA,EAAQw4J,WAAR,EAAApzK,EAAcu0E,UAAd,EAAAn0E,EAAmBixE,gBAAiBA,CAAA,EAkBxC,MAAO,CACLkhU,WAAAA,EACAC,cAAAA,EACAj6T,SA7DA,SACElH,EACAkD,EACAjuB,GAEF,gBAACigB,EAAwC2Q,GACvC,IAAMo6G,EAbU,SAAChrI,GACnB,gBAAWA,CAAX,CAYgB66V,CAAY76V,IAAYA,EAAQgrI,MACxC8vN,EAZQ,SAChB96V,GAC+C,sBAAiBA,CAAjB,CAU9B+6V,CAAU/6V,IAAYA,EAAQg7V,YAEvCC,EAAc,SAACC,GAClB,YADkB,IAAAA,IAAAA,GAAA,GAClBztU,EAAIc,UAAUxD,GAA6CuD,SAC1DL,EACA,CAAEyB,aAAcwrU,GAFjB,EAIGC,EACJ1tU,EAAIc,UAAUxD,GACdrhC,OAAOukC,EADPR,CACYmD,KAEd,GAAIo6G,EACF/qH,EAASg7U,UAAA,GACAH,EAAQ,CACjB,IAAMM,EAAkB,MAAAD,OAAA,EAAAA,EAAkB9N,mBAC1C,IAAK+N,EAEH,YADAn7U,EAASg7U,MAIRp9V,OAAO,IAAI3+C,MAAU2+C,OAAO,IAAI3+C,KAAKk8Y,KAAqB,KAC3DN,GAEA76U,EAASg7U,UAIXh7U,EAASg7U,GAAY,IA7BzB,EAyDAjF,gBA1XA,SAACjrU,EAAc5gD,EAAM4rX,EAAcsF,GACnC,YADmC,IAAAA,IAAAA,GAAA,GACnC,SAACp7U,EAAU2Q,WAwBL2/F,EArBE9/F,EAFqBhD,EAAIc,UAAUxD,GAEDrhC,OAAOvf,EAA1B2gD,CAEnB8F,KAGEx2B,EAAuB,CACzByyV,QAAS,GACTyO,eAAgB,GAChBhsL,KAAM,WACJ,OAAArvJ,EACEwN,EAAIlN,KAAKg7U,eACPxwU,EACA5gD,EACAiwB,EAAIkhW,eACJD,GALJ,GASJ,GAAI5qU,EAAa5nE,SAAW6jE,EAAYwgU,cACtC,OAAO9yV,EAGT,GAAI,SAAUq2B,EACZ,IAAI+qU,EAAAA,EAAAA,IAAY/qU,EAAaj2E,MAAO,CAC5B,IAAA8kB,GAAmCm8X,EAAAA,EAAAA,IACvChrU,EAAaj2E,KACbu7Y,GAFKruY,EAAA4X,EAAA,GAAOutX,EAAAvtX,EAAA,GAASg8X,EAAAh8X,EAAA,IAIvBjJ,EAAA+jC,EAAIyyV,SAAQ5pX,KAAAb,MAAA/L,EAAQw2X,IACpBxtX,EAAA+6B,EAAIkhW,gBAAer4X,KAAAb,MAAA/C,EAAQi8X,GAC3B/qO,EAAW7oK,OAEX6oK,EAAWwlO,EAAatlU,EAAaj2E,MACrC4/C,EAAIyyV,QAAQ5pX,KAAK,CAAEy+D,GAAI,UAAWhiC,KAAM,GAAIh4C,MAAO6oK,IACnDn2H,EAAIkhW,eAAer4X,KAAK,CACtBy+D,GAAI,UACJhiC,KAAM,GACNh4C,MAAO+oE,EAAaj2E,OAS1B,OAJAylE,EACEwN,EAAIlN,KAAKg7U,eAAexwU,EAAc5gD,EAAMiwB,EAAIyyV,QAASwO,IAGpDjhW,CAAA,CAjDT,EA0XAshW,gBArUA,SAAC3wU,EAAc5gD,EAAMziB,GAAU,gBAACu4D,SAC9B,OAAOA,EAEHwN,EAAIc,UAAUxD,GAIduD,SAASnkD,IAAA9T,EAAA,CACTm4C,WAAW,EACXkhB,cAAc,IACby7T,GAAqB,WAAO,OAC3B3wY,KAAMkN,EADqB,EACrB,KAXiB,EAsU/B6zY,eAjaA,SAACxwU,EAAc5gD,EAAM0iX,EAASwO,GAAmB,gBAACp7U,EAAU2Q,GAC1D,IAAM9F,EAAqB4D,EAAoB3D,GAEzCgE,EAAgBrB,EAAmB,CACvC7C,UAAW1gD,EACX2gD,mBAAAA,EACAC,aAAAA,IAOF,GAJA9K,EACEwN,EAAI0B,gBAAgBy9T,mBAAmB,CAAE79T,cAAAA,EAAe89T,QAAAA,KAGrDwO,EAAL,CAIA,IAAM9qO,EAAW9iG,EAAIc,UAAUxD,GAAcrhC,OAAOvf,EAAnCsjD,CAEfmD,KAGIw9T,EAAetD,EACnBhgU,EAAmB2I,aACnB88F,EAAS/1K,UACT,EACA2vB,EACA,CAAC,EACDqhX,GAGFvrU,EACEwN,EAAI0B,gBAAgBg/T,iBAAiB,CAAEp/T,cAAAA,EAAeq/T,aAAAA,KAAA,CAhCT,EAkajDuN,uBAtBF,SAIEC,EAAc7wU,GACd,MAAO,CACL8wU,cAAcC,EAAAA,EAAAA,KAAQC,EAAAA,EAAAA,IAAUH,GAAQhB,EAAgB7vU,IACxDixU,gBAAgBF,EAAAA,EAAAA,KACdrQ,EAAAA,EAAAA,IAAYmQ,GACZhB,EAAgB7vU,IAElBkxU,eAAeH,EAAAA,EAAAA,KAAQI,EAAAA,EAAAA,IAAWN,GAAQhB,EAAgB7vU,IAAA,EAW5D,Ce/IIoxU,CAAY,CACdvpU,UAAAA,EACAvI,YAAAA,EACA7wB,QAAAA,EACAi0B,IAAAA,EACAC,mBAAAA,EACA89T,cAAAA,IAbAS,EAAA5sX,EAAA4sX,WACAC,EAAA7sX,EAAA6sX,cACAqP,EAAAl8X,EAAAk8X,eACAvF,EAAA32X,EAAA22X,gBACA0F,EAAAr8X,EAAAq8X,gBACAzpU,EAAA5yD,EAAA4yD,SACA0pU,EAAAt8X,EAAAs8X,uBAUIr8X,EAAqC0sX,GAAW,CACpDxyV,QAAAA,EACAyyV,WAAAA,EACAC,cAAAA,EACA7hU,YAAAA,EACAmhU,cAAAA,EACA7sV,OAAQ,CACNwvB,eAAAA,EACAD,mBAAAA,EACAE,0BAAAA,EACAojU,kBAAAA,EACAnnU,YAAAA,KAXItwB,EAAAz6B,EAAAy6B,QAAkBqiW,EAAA98X,EAAA4qD,QAe1B2C,GAAWY,EAAIlN,KAAM,CACnBg7U,eAAAA,EACAvF,gBAAAA,EACA0F,gBAAAA,EACAzpU,SAAAA,EACAzR,cAAe47U,EAAa57U,gBAE9BqM,GAAWY,EAAI0B,gBAAiBitU,GAE1B,IAAA58X,EAA6C04X,GAAgB,CACjE7tU,YAAAA,EACA7wB,QAAAA,EACAyyV,WAAAA,EACAC,cAAAA,EACAz+T,IAAAA,EACA+9T,cAAAA,IANMlhU,EAAA9qD,EAAA8qD,WAAqB+xU,EAAA78X,EAAA0qD,QAQ7B2C,GAAWY,EAAIlN,KAAM87U,GAErBxvU,GAAWY,EAAK,CAAE1zB,QAAAA,EAAyBuwB,WAAAA,IAErC,IAAA3qD,EACJwwX,GAAe,CACbziU,mBAAAA,EACArD,YAAAA,IAHIimU,EAAA3wX,EAAA2wX,mBAAoBK,EAAAhxX,EAAAgxX,sBAAuBG,EAAAnxX,EAAAmxX,oBAMnDjkU,GAAWY,EAAIlN,KAAM,CAAEuwU,oBAAAA,IAEjB,IAAA9uG,EhB5XH,SAAuB3rR,OAC5Bq3D,EAAAr3D,EAAAq3D,mBACAu+T,EAAA51X,EAAA41X,WACAC,EAAA71X,EAAA61X,cACAz+T,EAAAp3D,EAAAo3D,IACAj0B,EAAAnjC,EAAAmjC,QAQM8iW,EAGF,IAAInrN,IACForN,EAGF,IAAIprN,IAEF9xK,EAIFouD,EAAI0B,gBAHNggU,EAAA9vX,EAAA8vX,uBACAv9T,EAAAvyD,EAAAuyD,qBACAnC,EAAApwD,EAAAowD,0BAEF,MAAO,CACL+sU,mBAuGF,SACEzxU,EACAD,GAEA,IAAMmwU,EACJ,SACEhtU,EACA53D,OAAAgJ,OAAA,IAAAhJ,EAKI,CAAC,EAADA,EAJFiJ,EAAAD,EAAAmvC,UAAAA,OAAA,IAAAlvC,GAAYA,EACZowD,EAAArwD,EAAAqwD,aACAF,EAAAnwD,EAAAmwD,oBACsBiqU,EAAAp6X,EAArB8rX,GAGL,gBAAClrU,EAAU2Q,SA5UjBl3E,EA6Ucq1E,EAAgBrB,EAAmB,CACvC7C,UAAWoD,EACXnD,mBAAAA,EACAC,aAAAA,IAGI6wU,EAAQ3P,IAAA51X,EAAA,CACZ5a,KAAM,QACN+yD,UAAAA,EACAkhB,aAAAA,EACAF,oBAAAA,EACAzE,aAAAA,EACA4G,aAAc1D,EACdc,cAAAA,IACCo8T,GAAqBsO,EAAA,IAElBj5S,EACJ/yB,EAAIc,UAAUxD,GACdrhC,OAAOukC,GAEHwuU,EAAcx8U,EAAS27U,GACvBc,EAAal8S,EAAS5vB,KAE5B+rU,EAAkB18U,GAEV,IAAA+O,EAAqBytU,EAAAztU,UAAVzgB,EAAUkuV,EAAAluV,MAEvBquV,EAAuBF,EAAW1tU,YAAcA,EAEhD6tU,EAAe,OAAAnjZ,EAAA4iZ,EAAe5vX,IAAIuzC,SAAnB,EAAAvmE,EAA+Bq1E,GAC9C+tU,EAAkB,WAAM,OAAAt8S,EAAS5vB,IAAT,EAExBmsU,EAA8Cn4Y,OAAO2mB,OACzDkuX,EAGIgD,EAAY/lZ,KAAKomZ,GACjBF,IAAyBC,EAGzBzyX,QAAQC,QAAQqyX,GAGhBtyX,QAAQoF,IAAI,CAACqtX,EAAcJ,IAAc/lZ,KAAKomZ,GAClD,CACE7uU,IAAAA,EACAe,UAAAA,EACAQ,oBAAAA,EACAT,cAAAA,EACAxgB,MAAAA,EACM93D,OAAA,WAAS,OAAAsyY,EAAA,8EACE,SAAMgU,UAErB,IAFMp+Y,EAAS0X,EAAAuoV,QAEJv2V,QACT,MAAM1J,EAAO9H,MAGf,MAAO,CAAP,EAAO8H,EAAOnE,YAAA,EAEhBo1E,QAAS,WACP,OAAA3P,EACEg7U,EAAYhtU,EAAK,CAAEzf,WAAW,EAAOkhB,cAAc,IADrD,EAGFljB,YAAA,WACMgC,GACFyR,EACEkvU,EAAuB,CACrBpgU,cAAAA,EACAC,UAAAA,IAAA,EAIRS,0BAAA,SAA0BzvB,GACxB+8V,EAAavtU,oBAAsBxvB,EACnCigB,EACEwP,EAA0B,CACxB1E,aAAAA,EACAiE,UAAAA,EACAD,cAAAA,EACA/uB,QAAAA,IAAA,IAOV,IAAK68V,IAAiBD,IAAyBnD,EAAc,CAC3D,IAAMuD,EAAUV,EAAe5vX,IAAIuzC,IAAa,CAAC,EACjD+8U,EAAQjuU,GAAiBguU,EACzBT,EAAe1oX,IAAIqsC,EAAU+8U,GAE7BD,EAAarmZ,MAAK,kBACTsmZ,EAAQjuU,GACVnqE,OAAOC,KAAKm4Y,GAASl5Y,QACxBw4Y,EAAe5lW,OAAOupB,EAAA,IAK5B,OAAO88U,CAAA,CApGT,EAsGF,OAAO9B,CAAA,EA1NPgC,sBA6NF,SACElyU,GAEA,OAAO,SAACkD,EAAK53D,OAAAgJ,OAAA,IAAAhJ,EAAkC,CAAC,EAADA,EAAhCiJ,EAAAD,EAAA4uX,MAAAA,OAAA,IAAA3uX,GAAQA,EAAM+xD,EAAAhyD,EAAAgyD,cAC3B,gBAACpR,EAAU2Q,GACT,IAAMgrU,EAAQ1P,EAAc,CAC1BzwY,KAAM,WACNsvE,aAAAA,EACA4G,aAAc1D,EACdggU,MAAAA,EACA58T,cAAAA,IAEIorU,EAAcx8U,EAAS27U,GAC7Be,EAAkB18U,GACV,IAAA+O,EAA6BytU,EAAAztU,UAAlBzgB,EAAkBkuV,EAAAluV,MAAX93D,EAAWgmZ,EAAAhmZ,OAC/BymZ,EAAqBT,EACxBhmZ,SACAC,MAAK,SAAC8D,GAAU,OAAEA,KAAAA,EAAF,IAChB5D,OAAM,SAACC,GAAW,OAAEA,MAAAA,EAAF,IAEf06E,EAAQ,WACZtR,EAAS2R,EAAqB,CAAE5C,UAAAA,EAAWqC,cAAAA,IAAA,EAGvCj3B,EAAMx1C,OAAO2mB,OAAO2xX,EAAoB,CAC5CjvU,IAAKwuU,EAAYxuU,IACjBe,UAAAA,EACAzgB,MAAAA,EACA93D,OAAAA,EACA+1D,YAAa+kB,EACbA,MAAAA,IAGI4rU,EAAUZ,EAAiB7vX,IAAIuzC,IAAa,CAAC,EAqBnD,OApBAs8U,EAAiB3oX,IAAIqsC,EAAUk9U,GAC/BA,EAAQnuU,GAAa50B,EACrBA,EAAI1jD,MAAK,kBACAymZ,EAAQnuU,GACVpqE,OAAOC,KAAKs4Y,GAASr5Y,QACxBy4Y,EAAiB7lW,OAAOupB,EAAA,IAGxBoR,IACF8rU,EAAQ9rU,GAAiBj3B,EACzBA,EAAI1jD,MAAK,WACHymZ,EAAQ9rU,KAAmBj3B,WACtB+iW,EAAQ9rU,GACVzsE,OAAOC,KAAKs4Y,GAASr5Y,QACxBy4Y,EAAiB7lW,OAAOupB,GAAA,KAMzB7lB,CAAA,CAlDT,CAkDS,EAlRXgjW,qBAqCF,SAA8BryU,EAAsBF,GAClD,OAAO,SAAC5K,GA/PZ,IAAAvmE,EAgQYoxE,EAAqBtxB,EAAQk1B,oBAAoB3D,GACjDgE,EAAgBrB,EAAmB,CACvC7C,UAAAA,EACAC,mBAAAA,EACAC,aAAAA,IAEF,OAAO,OAAArxE,EAAA4iZ,EAAe5vX,IAAIuzC,SAAnB,EAAAvmE,EAA+Bq1E,EAAA,GA5CxCsuU,wBAkDF,SAKEC,EACAC,GAEA,OAAO,SAACt9U,GApRZ,IAAAvmE,EAqRM,OAAO,OAAAA,EAAA6iZ,EAAiB7vX,IAAIuzC,SAArB,EAAAvmE,EAAiC6jZ,EAAA,GA1D1CC,uBAgEF,WACE,OAAO,SAACv9U,GACN,OAAAr7D,OAAOrO,OAAO+lZ,EAAe5vX,IAAIuzC,IAAa,CAAC,GAAGl7D,OAAOmmY,EAAzD,CAAyD,EAjE3DuS,yBAoEF,WACE,OAAO,SAACx9U,GACN,OAAAr7D,OAAOrO,OAAOgmZ,EAAiB7vX,IAAIuzC,IAAa,CAAC,GAAGl7D,OAAOmmY,EAA3D,CAA2D,EArE7DwS,4BAcF,WAOI,IAAMC,EAAU,SACdxuT,GAEA,OAAAl1E,MAAMklC,KAAKgwC,EAAE54F,UAAUqnZ,SAAQ,SAACC,GAC9B,OAAAA,EAAkBj5Y,OAAOrO,OAAOsnZ,GAAmB,EAAnD,GADF,EAGF,OAAOn5U,EAAAA,EAAA,GAAIi5U,EAAQrB,IAAoBqB,EAAQpB,IAAmBx3Y,OAChEmmY,EAAA,EA3BJ4S,eAIF,WACE,MAAM,IAAIxvX,MACR,8PAiEJ,SAAAquX,EAA2B18U,GAkB0C,CAoLxD,CgBqFP89U,CAAc,CAChB9R,WAAAA,EACAC,cAAAA,EACAz+T,IAAAA,EACAC,mBAAAA,EACAl0B,QAAAA,IAbAgjW,EAAAx6G,EAAAw6G,mBACAS,EAAAj7G,EAAAi7G,sBACAI,EAAAr7G,EAAAq7G,wBACAI,EAAAz7G,EAAAy7G,yBACAD,EAAAx7G,EAAAw7G,uBACAJ,EAAAp7G,EAAAo7G,qBACAM,GAAA17G,EAAA07G,4BACAI,GAAA97G,EAAA87G,eAkBF,OATAjxU,GAAWY,EAAIlN,KAAM,CACnBm9U,4BAAAA,GACAM,2BAA4BF,GAC5BT,wBAAAA,EACAI,yBAAAA,EACAL,qBAAAA,EACAI,uBAAAA,IAGK,CACLzlZ,KAAMihZ,GACN3mU,eAAA,SAAetH,EAAcuH,GAnlBnC,IAAA54E,EAolBci0E,EAASF,EAOf,OAAA/zE,EAAAi0E,EAAOY,WAAPxD,KAAArxE,EAAAqxE,GAAmC,CAAC,GAChC8/T,EAAkBv4T,GACpBzF,GACEc,EAAOY,UAAUxD,GACjB,CACEhzE,KAAMgzE,EACNrhC,OAAQ4mW,EAAmBvlU,EAAcuH,GACzChE,SAAUkuU,EAAmBzxU,EAAcuH,IAE7CqpU,EAAuB1P,EAAYlhU,IAEPuH,En1BoC7B72E,OAASgwE,EAAe+G,Um1BnCzB3F,GACEc,EAAOY,UAAUxD,GACjB,CACEhzE,KAAMgzE,EACNrhC,OAAQinW,IACRriU,SAAU2uU,EAAsBlyU,IAElC4wU,EAAuBzP,EAAenhU,GAAA,IAlKG,ECzcJkC,yMCAjD,SAASgxU,EAAsBC,GAqB7B,OAlBiB,SAAoBvpZ,GACnC,IAAIsrE,EAAWtrE,EAAKsrE,SAChB2Q,EAAWj8E,EAAKi8E,SACpB,OAAO,SAAU9gD,GACf,OAAO,SAAUxb,GAGf,MAAsB,oBAAXA,EAEFA,EAAO2rD,EAAU2Q,EAAUstU,GAI7BpuX,EAAKxb,EACd,CACF,CACF,CAGF,CAEA,IAAIsnY,EAAQqC,IAGZrC,EAAMuC,kBAAoBF,EAC1B,yzECqMaG,EACO,qBAAXpjZ,QACNA,OAAeqjZ,qCACXrjZ,OAAeqjZ,qCAChB,WACE,GAAyB,IAArB1vX,UAAU7qB,OACd,MAA4B,kBAAjB6qB,UAAU,GAAwBkoD,EAAAA,GACtCA,EAAAA,GAAQz0D,MAAM,KAAMuM,UAAA,EASf,qBAAX3zB,QAA2BA,OAAesjZ,8BAC5CtjZ,OAAesjZ,6BC3OP,SAAApmW,EAAuBxwC,GACpC,GAAqB,kBAAVA,GAAgC,OAAVA,EAAgB,OAAO,EAExD,IAAI62Y,EAAQ35Y,OAAOwyC,eAAe1vC,GAClC,GAAc,OAAV62Y,EAAgB,OAAO,EAG3B,IADA,IAAIC,EAAYD,EAC4B,OAArC35Y,OAAOwyC,eAAeonW,IAC3BA,EAAY55Y,OAAOwyC,eAAeonW,GAGpC,OAAOD,IAAUC,CAAA,CCwJZ,IAAMC,EAAmB,SAC9BtvT,GAEA,OAAOA,GAAiD,oBAApCA,EAA0Bv/E,KAAU,ECqFnD,SAAAs6X,EAAsBzuY,EAAcijZ,GACzC,SAAAC,QAAA,IAAAx0X,EAAA,GAAAwR,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAAxR,EAAAwR,GAAAhN,UAAAgN,GACE,GAAI+iX,EAAe,CACjB,IAAIE,EAAWF,EAAAt8X,WAAA,EAAiB+H,GAChC,IAAKy0X,EACH,MAAM,IAAItwX,MAAM,0CAGlB,OAAOk+C,EAAAA,EAAA,CACL/wE,KAAAA,EACA9E,QAASioZ,EAASjoZ,SACd,SAAUioZ,GAAY,CAAE9xO,KAAM8xO,EAAS9xO,OACvC,UAAW8xO,GAAY,CAAE/nZ,MAAO+nZ,EAAS/nZ,QAGjD,MAAO,CAAE4E,KAAAA,EAAM9E,QAASwzB,EAAK,IAU/B,OAPAw0X,EAAcxnW,SAAW,WAAM,SAAG17C,CAAH,EAE/BkjZ,EAAcljZ,KAAOA,EAErBkjZ,EAAc/uY,MAAQ,SAAC0E,GACrB,OAAAA,EAAO7Y,OAASA,CAAhB,EAEKkjZ,CAAA,CC9PF,IAAAE,EAAA,SAAAp1X,GAIL,SAAAo1X,QAAA,IAAA10X,EAAA,GAAAwR,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAAxR,EAAAwR,GAAAhN,UAAAgN,GAAA,IAAAhX,EAAA8E,EAAArH,MAAA,KACW+H,IAAA,YACTvlB,OAAO0jB,eAAe3D,EAAMk6X,EAAgB18X,YAAA,CA8BH,OAlCnC+F,EAAA22X,EAAAp1X,GAIsC7kB,OAAA6nB,eAAAoyX,EAGlCzmW,OAAOpyC,QAAA,KAH2B,WAI5C,OAAO64Y,CAAA,kCAUTA,EAAA18X,UAAAhc,OAAA,mBAAAu2C,EAAA,GAAA/gB,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAA+gB,EAAA/gB,GAAAhN,UAAAgN,GACE,OAAOlS,EAAAtH,UAAMhc,OAAOic,MAAMH,KAAMy6B,EAAA,EAWlCmiW,EAAA18X,UAAAqnI,QAAA,mBAAA9sG,EAAA,GAAA/gB,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAA+gB,EAAA/gB,GAAAhN,UAAAgN,GACE,OAAmB,IAAf+gB,EAAI54C,QAAgBmW,MAAMC,QAAQwiC,EAAI,IACjC,IAAImiW,EAAA/tX,KAAA1O,MAAAy8X,EAAAn6U,EAAA,SAAmBhoB,EAAI,GAAGv2C,OAAO8b,SAEvC,IAAI48X,EAAA/tX,KAAA1O,MAAAy8X,EAAAn6U,EAAA,SAAmBhoB,EAAIv2C,OAAO8b,QAAA,EAAA48X,CAAA,CApCtC,CAEG5kY,OAyCH6kY,EAAA,SAAAr1X,GAIL,SAAAq1X,QAAA,IAAA30X,EAAA,GAAAwR,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAAxR,EAAAwR,GAAAhN,UAAAgN,GAAA,IAAAhX,EAAA8E,EAAArH,MAAA,KACW+H,IAAA,YACTvlB,OAAO0jB,eAAe3D,EAAMm6X,EAAc38X,YAAA,CA8BH,OAlCjC+F,EAAA42X,EAAAr1X,GAIoC7kB,OAAA6nB,eAAAqyX,EAGhC1mW,OAAOpyC,QAAA,KAHyB,WAI1C,OAAO84Y,CAAA,kCAUTA,EAAA38X,UAAAhc,OAAA,mBAAAu2C,EAAA,GAAA/gB,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAA+gB,EAAA/gB,GAAAhN,UAAAgN,GACE,OAAOlS,EAAAtH,UAAMhc,OAAOic,MAAMH,KAAMy6B,EAAA,EAWlCoiW,EAAA38X,UAAAqnI,QAAA,mBAAA9sG,EAAA,GAAA/gB,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAA+gB,EAAA/gB,GAAAhN,UAAAgN,GACE,OAAmB,IAAf+gB,EAAI54C,QAAgBmW,MAAMC,QAAQwiC,EAAI,IACjC,IAAIoiW,EAAAhuX,KAAA1O,MAAA08X,EAAAp6U,EAAA,SAAiBhoB,EAAI,GAAGv2C,OAAO8b,SAErC,IAAI68X,EAAAhuX,KAAA1O,MAAA08X,EAAAp6U,EAAA,SAAiBhoB,EAAIv2C,OAAO8b,QAAA,EAAA68X,CAAA,CApCpC,CAEG7kY,OAsCH,SAAA8kY,EAA4B5mW,GACjC,OAAOqjW,EAAAA,EAAAA,IAAYrjW,IAAOs1V,EAAAA,EAAAA,IAAgBt1V,GAAK,WAAM,IAAMA,CAAA,CChEtD,SAAA6mW,IAGL,OAAO,SAAqCh/V,GAC1C,OAgBG,SASLA,QAAA,IAAAA,IAAAA,EAAA,IAGE,IAAA7lD,EAIE6lD,EAAA47V,MAJFA,OAAA,IAAAzhZ,GAAQA,EAMN8kZ,GAFAj/V,EAAAk/V,eAAAl/V,EAAAwqB,kBAAAxqB,EAAAm/V,mBAEkB,IAAIN,GAEtBjD,IA5EgB,mBA6EJA,EACZqD,EAAgBh8X,KAAKm8X,GAErBH,EAAgBh8X,KACdm8X,EAAgBjB,kBAAkBvC,EAAMsC,iBAK1Cr6U,EAuCJ,OAAOo7U,CAAA,CArFE10U,CAAqBvqB,EAAA,EC1BhC,IAAMq/V,GAAgBx7U,EAiHf,SAAAuG,EAKLpqB,GACA,IAUIs/V,EAVEC,EAA8BP,IAE9B7kZ,EAMF6lD,GAAW,CAAC,EALd1lD,EAAAH,EAAA4/C,QAAAA,OAAA,IAAAz/C,OAAU,EAAAA,EACVI,EAAAP,EAAAmwE,WAAAA,OAAA,IAAA5vE,EAAa6kZ,IAAA7kZ,EACbE,EAAAT,EAAAqlZ,SAAAA,OAAA,IAAA5kZ,GAAWA,EACX0G,EAAAnH,EAAAslZ,eAAAA,OAAA,IAAAn+Y,OAAiB,EAAAA,EACjB4U,EAAA/b,EAAAulZ,UAAAA,OAAA,IAAAxpY,OAAY,EAAAA,EAKd,GAAuB,oBAAZ6jC,EACTulW,EAAcvlW,MAAA,KACL7B,EAAc6B,GAGvB,MAAM,IAAIzrB,MACR,4HAHFgxX,GAAc3P,EAAAA,EAAAA,IAAgB51V,GAOhC,IAAI4lW,EAAkBr1U,EACtB,GAA+B,oBAApBq1U,IACTA,EAAkBA,EAAgBJ,IAE7BF,IAAkBplY,MAAMC,QAAQylY,IACnC,MAAM,IAAIrxX,MACR,qFAIN,IACG+wX,GACDM,EAAgB9+V,MAAK,SAACp7C,GAAc,MAAgB,oBAATA,CAAP,IAEpC,MAAM,IAAI6oB,MACR,iEAIJ,IAAMsxX,EAAoCC,EAAAA,GAAAz9X,WAAA,EAAmBu9X,GAEzDG,EAAeC,EAAAA,GAEfP,IACFM,EAAe1B,EAAoB5xU,EAAA,CAEjCwzU,OAAQX,GACgB,kBAAbG,GAAyBA,KAIxC,IAAMS,EAAmB,IAAInB,EAAcc,GACvCM,EAA4BD,EAE5BhmY,MAAMC,QAAQwlY,GAChBQ,EAAAx7U,EAAA,CAAkBk7U,GAAuBF,GACX,oBAAdA,IAChBQ,EAAiBR,EAAUO,IAG7B,IAAME,EAAmBL,EAAA19X,WAAA,EAAgB89X,GAEzC,OAAOE,EAAAA,EAAAA,IAAYd,EAAaG,EAAgBU,EAAA,CCxF3C,SAAAE,EACLC,GAMA,IAEIC,EAFEC,EAAmC,CAAC,EACpCC,EAAwD,GAExDxtU,EAAU,CACd+5T,QAAA,SACE0T,EACA3mW,GAmBA,IAAMt+C,EAC2B,kBAAxBilZ,EACHA,EACAA,EAAoBjlZ,KAC1B,IAAKA,EACH,MAAM,IAAI6yB,MACR,gEAGJ,GAAI7yB,KAAQ+kZ,EACV,MAAM,IAAIlyX,MACR,iFAIJ,OADAkyX,EAAW/kZ,GAAQs+C,EACZk5B,CAAA,EAET66T,WAAA,SACE3mV,EACApN,GAUA,OADA0mW,EAAex9X,KAAK,CAAEkkC,QAAAA,EAASpN,QAAAA,IACxBk5B,CAAA,EAET0tU,eAAA,SAAe5mW,GAOb,OADAwmW,EAAqBxmW,EACdk5B,CAAA,GAIX,OADAqtU,EAAgBrtU,GACT,CAACutU,EAAYC,EAAgBF,EAAA,CCyE/B,SAAA/2U,EAKLxpB,GAEQ,IAAAjoD,EAASioD,EAAAjoD,KACjB,IAAKA,EACH,MAAM,IAAIu2B,MAAM,+CAclB,IAqEIsyX,EArEEn3U,EAC2B,mBAAxBzpB,EAAQypB,aACXzpB,EAAQypB,aACRs1U,EAAgB/+V,EAAQypB,cAExBK,EAAW9pB,EAAQ8pB,UAAY,CAAC,EAEhC+2U,EAAej8Y,OAAOC,KAAKilE,GAE3Bg3U,EAAuD,CAAC,EACxDC,EAAuD,CAAC,EACxDC,EAA2C,CAAC,EAuBlD,SAAAC,IAWQ,IAAA9mZ,EAK6B,oBAA1B6lD,EAAQ+sV,cACXsT,EAA8BrgW,EAAQ+sV,eACtC,CAAC/sV,EAAQ+sV,eANbzyY,EAAAH,EAAA,GAAA4yY,OAAA,IAAAzyY,EAAgB,CAAC,EAADA,EAChBI,EAAAP,EAAA,GAAAsmZ,OAAA,IAAA/lZ,EAAiB,GAAAA,EACjBE,EAAAT,EAAA,GAAAomZ,OAAA,IAAA3lZ,OAAqB,EAAAA,EAMjBsmZ,EAAoB10U,EAAAA,EAAA,GAAKugU,GAAkBgU,GAEjD,OCxIG,SACLt3U,EACA03U,EAGAV,EACAF,QADA,IAAAE,IAAAA,EAAA,IAcI,IAMAx8C,EANA9pW,EAC8B,oBAAzBgnZ,EACHd,EAA8Bc,GAC9B,CAACA,EAAsBV,EAAgBF,GAHxCC,EAAArmZ,EAAA,GAAYinZ,EAAAjnZ,EAAA,GAAqBknZ,EAAAlnZ,EAAA,GAOtC,GAtKoB,oBAsKAsvE,EAClBw6R,EAAkB,WAAM,OAAA86C,EAAgBt1U,IAAhB,MACnB,CACL,IAAM63U,EAAqBvC,EAAgBt1U,GAC3Cw6R,EAAkB,WAAM,OAAAq9C,CAAA,EAG1B,SAAAvnW,EAAiB/kD,EAA2Bsf,QAA3B,IAAAtf,IAAAA,EAAQivW,KACvB,IAAIgrC,EAAAvqU,EAAA,CACF87U,EAAWlsY,EAAO7Y,OACf2lZ,EACAr8Y,QAAO,SAAC5K,GAAgB,OAAAgtD,EAAdhtD,EAAAgtD,SAAsB7yC,EAAR,IACxBpS,KAAI,SAAC/H,GAAgB,OAAdA,EAAA4/C,OAAc,KAM1B,OAJiD,IAA7Ck1V,EAAalqY,QAAO,SAACw8Y,GAAO,QAAEA,CAAF,IAAMz9Y,SACpCmrY,EAAe,CAACoS,IAGXpS,EAAavwY,QAAO,SAAC8iZ,EAAeC,GACzC,GAAIA,EAAa,CAKb,IAWM9iZ,EAfR,IAAI+iZ,EAAAA,EAAAA,IAAQF,GAOV,YAAe,KAFT7iZ,EAAS8iZ,EADDD,EACoBltY,IAGzBktY,EAGF7iZ,EAAA,IACGgjZ,EAAAA,EAAAA,IAAYH,GAmBtB,OAAOvR,EAAAA,EAAAA,IAAgBuR,GAAe,SAAC/U,GACrC,OAAOgV,EAAYhV,EAAOn4X,EAAA,IAf5B,QAAe,KAFT3V,EAAS8iZ,EAAYD,EAAsBltY,IAEvB,CACxB,GAAsB,OAAlBktY,EACF,OAAOA,EAET,MAAMlzX,MACJ,qEAIJ,OAAO3vB,EAWX,OAAO6iZ,CAAA,GACNxsZ,EAAA,CAKL,OAFA+kD,EAAQkqT,gBAAkBA,EAEnBlqT,CAAA,CD+CE6nW,CAAcn4U,GAAc,SAACwJ,GAClC,IAAK,IAAI1lD,KAAO2zX,EACdjuU,EAAQ+5T,QAAQz/W,EAAK2zX,EAAkB3zX,IAEzC,IAAc,IAAAoO,EAAA,EAAAkmX,EAAApB,EAAA9kX,EAAAkmX,EAAA/9Y,OAAA63B,IAAgB,CAA9B,IAAS8hB,EAAAokW,EAAAlmX,GACPs3C,EAAQ66T,WAAWrwV,EAAE0J,QAAS1J,EAAE1D,SAE9BwmW,GACFttU,EAAQ0tU,eAAeJ,EAAA,IAO7B,OA1DAM,EAAajwY,SAAQ,SAACkxY,GACpB,IAGIL,EACAM,EAJEC,EAA0Bl4U,EAASg4U,GACnCrmZ,EAAe1D,EAnDb,IAmDmB+pZ,EAKvB,YAAaE,GACfP,EAAcO,EAAwBjoW,QACtCgoW,EAAkBC,EAAwBtV,SAE1C+U,EAAcO,EAGhBlB,EAAwBgB,GAAeL,EACvCV,EAAwBtlZ,GAAQgmZ,EAChCT,EAAec,GAAeC,EAC1B7X,EAAazuY,EAAMsmZ,GACnB7X,EAAazuY,EAAA,IAwCZ,CACL1D,KAAAA,EACAgiD,QAAA,SAAQ/kD,EAAOsf,GAGb,OAFKssY,IAAUA,EAAWK,KAEnBL,EAAS5rZ,EAAOsf,EAAA,EAEzB41D,QAAS82U,EACT/R,aAAc6R,EACd78C,gBAAA,WAGE,OAFK28C,IAAUA,EAAWK,KAEnBL,EAAS38C,iBAAA,GEvXtB,IAOW6tC,EAAS,SAACt2Y,QAAA,IAAAA,IAAAA,EAAA,IAInB,IAHA,IAAInG,EAAK,GAEL8M,EAAI3G,EACD2G,KAEL9M,GAZF,mEAYqC,GAAhB0hB,KAAKknC,SAAiB,GAE3C,OAAO5oD,CAAA,ECqCH4sZ,EAAiD,CACrD,OACA,UACA,QACA,QAGFC,EAME,SACkBvrZ,EACAm2K,GADA,KAAAn2K,QAAAA,EACA,KAAAm2K,KAAAA,CAAA,EAIpBq1O,EAME,SACkBxrZ,EACAm2K,GADA,KAAAn2K,QAAAA,EACA,KAAAm2K,KAAAA,CAAA,EAUPs1O,EAAqB,SAAC16Y,GACjC,GAAqB,kBAAVA,GAAgC,OAAVA,EAAgB,CAE/C,IADA,IAAM26Y,EAA+B,CAAC,EACf1mX,EAAA,EAAA2mX,EAAAL,EAAAtmX,EAAA2mX,EAAAx+Y,OAAA63B,IAAkB,CAAzC,IAAW4mX,EAAAD,EAAA3mX,GACsB,kBAApBj0B,EAAM66Y,KACfF,EAAYE,GAAY76Y,EAAM66Y,IAIlC,OAAOF,EAGT,MAAO,CAAEzxW,QAAShoB,OAAOlhB,GAAA,EA8Wd2yY,EAAoB,WAC/B,SAAAmI,EAKEC,EACAC,EAKA1iW,GAOA,IAAMmC,EAIF+nV,EACFuY,EAAa,cACb,SACE9rZ,EACAq4E,EACAf,EACA6+F,GACI,OACJn2K,QAAAA,EACAm2K,KAAMvgG,EAAAC,EAAA,GACCsgG,GAAgB,CAAC,GADlB,CAEJ7+F,IAAAA,EACAe,UAAAA,EACA2zU,cAAe,cANb,IAWFh2U,EACJu9T,EACEuY,EAAa,YACb,SAACzzU,EAAmBf,EAAe6+F,GAAwB,OACzDn2K,aAAS,EACTm2K,KAAMvgG,EAAAC,EAAA,GACCsgG,GAAgB,CAAC,GADlB,CAEJ7+F,IAAAA,EACAe,UAAAA,EACA2zU,cAAe,YANwC,IAWzDvgW,EACJ8nV,EACEuY,EAAa,aACb,SACE5rZ,EACAm4E,EACAf,EACAt3E,EACAm2K,GACI,OACJn2K,QAAAA,EACAE,OAASmpD,GAAWA,EAAQ4iW,gBAAmBR,GAC7CvrZ,GAAS,YAEXi2K,KAAMvgG,EAAAC,EAAA,GACCsgG,GAAgB,CAAC,GADlB,CAEJ7+F,IAAAA,EACAe,UAAAA,EACAkoU,oBAAqBvgZ,EACrBgsZ,cAAe,WACfl0V,QAAyB,gBAAhB,MAAA53D,OAAA,EAAAA,EAAOkB,MAChB81Y,UAA2B,oBAAhB,MAAAh3Y,OAAA,EAAAA,EAAOkB,QAZhB,IAmBJ8qZ,EACuB,qBAApBC,gBACHA,gBAAA,WACA,SAAAC,IACE,KAAAt2V,OAAS,CACPgC,SAAS,EACTtzD,iBAAA,WAAmB,EACnB0tM,cAAA,WACE,OAAO,GAETp7I,QAAA,WAAU,EACVpZ,oBAAA,WAAsB,EACtB4a,YAAQ,EACR+zV,eAAA,WAAiB,GAOX,OALRD,EAAA5gY,UAAAosC,MAAA,WACMsV,CAIE,EAAAk/U,CAAA,CAlBV,GA6IN,OAAOn+Y,OAAO2mB,QAnHd,SACE0iD,GAEA,OAAO,SAAChO,EAAU2Q,EAAUw3C,GAC1B,IAKI66R,EALEj0U,GAAY,MAAAhvB,OAAA,EAAAA,EAASkjW,aACvBljW,EAAQkjW,YAAYj1U,GACpB6jU,IAEEqR,EAAkB,IAAIN,EAI5B,SAAAt0V,EAAeU,GACbg0V,EAAch0V,EACdk0V,EAAgB50V,OAAA,CAGlB,IAAMkjB,EAAW,WAAkB,OAAAs3T,EAAA,qHAG3Bqa,EAAkB,OAAA1pZ,EAAA,MAAAsmD,OAAA,EAAAA,EAAS6tV,gBAAT,EAAAn0Y,EAAAgvB,KAAAs3B,EAAqBiuB,EAAK,CAAE2C,SAAAA,EAAUw3C,MAAAA,IAkJ1D,QAFM1gH,EA/IO07Y,IAkJN,kBAAV17Y,GACe,oBAAfA,EAAMhR,KAnJD,MACgB,GAAM0sZ,UAAxBA,EAAkBjpZ,EAAAykW,wBAGpB,IAAwB,IAApBwkD,GAA6BD,EAAgB12V,OAAOgC,QAEtD,KAAM,CACJ12D,KAAM,iBACN64C,QAAS,sDAuBC,OApBJ,EAEJyyW,EAAiB,IAAIj5X,SAAe,SAACvH,EAAGspC,GAC5C,OAAAg3V,EAAgB12V,OAAOtxD,iBAAiB,SAAS,WAC/C,OAAAgxD,EAAO,CACLp0D,KAAM,aACN64C,QAASqyW,GAAe,WAF1B,GADF,IAOFhjV,EACE0M,EACEqC,EACAf,EACA,OAAAn0E,EAAA,MAAAkmD,OAAA,EAAAA,EAASs6V,qBAAT,EAAAxgZ,EAAA4uB,KAAAs3B,EACE,CAAEgvB,UAAAA,EAAWf,IAAAA,GACb,CAAE2C,SAAAA,EAAUw3C,MAAAA,MAIJ,GAAMh+F,QAAQqrX,KAAK,CAC/B4N,EACAj5X,QAAQC,QACNq4X,EAAez0U,EAAK,CAClBhO,SAAAA,EACA2Q,SAAAA,EACAw3C,MAAAA,EACAp5C,UAAAA,EACAviB,OAAQ02V,EAAgB12V,OACxB8B,MAAAA,EACA8qV,gBAAkB,SAChB3xY,EACAolK,GAEA,OAAO,IAAIo1O,EAAgBx6Y,EAAOolK,EAAA,EAEpCwsO,iBAAmB,SAAC5xY,EAAgBolK,GAClC,OAAO,IAAIq1O,EAAgBz6Y,EAAOolK,EAAA,KAGtCp2K,MAAK,SAACiI,GACN,GAAIA,aAAkBujZ,EACpB,MAAMvjZ,EAER,OAAIA,aAAkBwjZ,EACbhgW,EAAUxjD,EAAOhI,QAASq4E,EAAWf,EAAKtvE,EAAOmuK,MAEnD3qH,EAAUxjD,EAAeqwE,EAAWf,EAAA,qBA3B/Cq1U,EAAcnpZ,EAAAykW,sCA+Bd0kD,EACEC,aAAerB,EACX9/V,EAAS,KAAM4sB,EAAWf,EAAKs1U,EAAI5sZ,QAAS4sZ,EAAIz2O,MAChD1qH,EAASmhW,EAAYv0U,EAAWf,gBAgBxC,OAREjuB,IACCA,EAAQ26V,4BACTv4V,EAASxyC,MAAM0zY,IACdA,EAAoBx2O,KAAK+gO,WAG1B5tU,EAASqjV,GAEJ,CAAP,EAAOA,GA8DjB,IAAoB57Y,OA9DH,CArFQ,GAuFjB,OAAO9C,OAAO2mB,OAAOkmD,EAAyB,CAC5CljB,MAAAA,EACAygB,UAAAA,EACAf,IAAAA,EACAx3E,OAAA,WACE,OAAOg7E,EAAQ/6E,KAAU8sZ,EAAA,OAY/B,CACE72U,QAAAA,EACAvqB,SAAAA,EACAD,UAAAA,EACAsgW,WAAAA,GAAA,CAMN,OAFAD,EAAiBiB,UAAY,WAAM,OAAAjB,CAAA,EAE5BA,CAAA,CAlPwB,GAmQ1B,SAAAgB,EACLlvY,GAEA,GAAIA,EAAOw4J,MAAQx4J,EAAOw4J,KAAKoqO,kBAC7B,MAAM5iY,EAAO3d,QAEf,GAAI2d,EAAOzd,MACT,MAAMyd,EAAOzd,MAEf,OAAOyd,EAAO3d,OAAA,CC7sBhB,IAAM6zC,EAAU,SAAC2c,EAAuB7yC,GACtC,OAAImqY,EAAiBt3V,GACZA,EAAQv3C,MAAM0E,GAEd6yC,EAAQ7yC,EAAA,EAaZ,SAAAw6X,QAAA,IAAA4U,EAAA,GAAA/nX,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAA+nX,EAAA/nX,GAAAhN,UAAAgN,GAGL,OAAO,SAACrnB,GACN,OAAOovY,EAAS7iW,MAAK,SAACsG,GAAY,OAAA3c,EAAQ2c,EAAS7yC,EAAjB,GAAiB,EAahD,SAAAwnY,QAAA,IAAA4H,EAAA,GAAA/nX,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAA+nX,EAAA/nX,GAAAhN,UAAAgN,GAGL,OAAO,SAACrnB,GACN,OAAOovY,EAAS7tO,OAAM,SAAC1uH,GAAY,OAAA3c,EAAQ2c,EAAS7yC,EAAjB,GAAiB,EAUjD,SAAAqvY,EACLrvY,EACAsvY,GAEA,IAAKtvY,IAAWA,EAAOw4J,KAAM,OAAO,EAEpC,IAAM+2O,EAAqD,kBAA1BvvY,EAAOw4J,KAAK99F,UACvC80U,EACJF,EAAY1mX,QAAQ5oB,EAAOw4J,KAAK61O,gBAAkB,EAEpD,OAAOkB,GAAqBC,CAAA,CAG9B,SAAAC,EAA2B/kZ,GACzB,MACkB,oBAATA,EAAE,IACT,YAAaA,EAAE,IACf,cAAeA,EAAE,IACjB,aAAcA,EAAE,GAwCb,SAAA+8Y,QAAA,IAAAiI,EAAA,GAAAroX,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAAqoX,EAAAroX,GAAAhN,UAAAgN,GAGL,OAA2B,IAAvBqoX,EAAYlgZ,OACP,SAACwQ,GAAgB,OAAAqvY,EAA2BrvY,EAAQ,CAAC,WAApC,EAGrByvY,EAAkBC,GAIhB,SACL1vY,GAGA,IAAMovY,EAA8CM,EAAY9hZ,KAC9D,SAAC+hZ,GAAe,OAAAA,EAAWt3U,OAAX,IAKlB,OAFwBmiU,EAAA1sX,WAAA,EAAWshY,EAE5BQ,CAAgB5vY,EAAA,EAbhBynY,IAAYiI,EAAY,GAaR,CA0CpB,SAAA9H,QAAA,IAAA8H,EAAA,GAAAroX,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAAqoX,EAAAroX,GAAAhN,UAAAgN,GAGL,OAA2B,IAAvBqoX,EAAYlgZ,OACP,SAACwQ,GAAgB,OAAAqvY,EAA2BrvY,EAAQ,CAAC,YAApC,EAGrByvY,EAAkBC,GAIhB,SACL1vY,GAGA,IAAMovY,EAA8CM,EAAY9hZ,KAC9D,SAAC+hZ,GAAe,OAAAA,EAAW7hW,QAAX,IAKlB,OAFwB0sV,EAAA1sX,WAAA,EAAWshY,EAE5BQ,CAAgB5vY,EAAA,EAbhB4nY,IAAa8H,EAAY,GAaT,CA+CpB,SAAAtY,QAAA,IAAAsY,EAAA,GAAAroX,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAAqoX,EAAAroX,GAAAhN,UAAAgN,GAGL,IAAMwoX,EAAU,SAAC7vY,GACf,OAAOA,GAAUA,EAAOw4J,MAAQx4J,EAAOw4J,KAAKoqO,iBAAA,EAG9C,OAA2B,IAAvB8M,EAAYlgZ,QAQXigZ,EAAkBC,GAPd,SAAC1vY,GAGN,OAFwBwnY,EAAQI,EAAA95X,WAAA,EAAc4hY,GAAcG,EAErDD,CAAgB5vY,EAAA,EAKlBo3X,IAAsBsY,EAAY,GAQlB,CA0CpB,SAAAvY,QAAA,IAAAuY,EAAA,GAAAroX,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAAqoX,EAAAroX,GAAAhN,UAAAgN,GAGL,OAA2B,IAAvBqoX,EAAYlgZ,OACP,SAACwQ,GAAgB,OAAAqvY,EAA2BrvY,EAAQ,CAAC,aAApC,EAGrByvY,EAAkBC,GAIhB,SACL1vY,GAGA,IAAMovY,EAA8CM,EAAY9hZ,KAC9D,SAAC+hZ,GAAe,OAAAA,EAAW9hW,SAAX,IAKlB,OAFwB2sV,EAAA1sX,WAAA,EAAWshY,EAE5BQ,CAAgB5vY,EAAA,EAbhBm3X,IAAcuY,EAAY,GAaV,CAiDpB,SAAAjP,QAAA,IAAAiP,EAAA,GAAAroX,EAAA,EAAAA,EAAAhN,UAAA7qB,OAAA63B,IAAAqoX,EAAAroX,GAAAhN,UAAAgN,GAGL,OAA2B,IAAvBqoX,EAAYlgZ,OACP,SAACwQ,GACN,OAAAqvY,EAA2BrvY,EAAQ,CAAC,UAAW,YAAa,YAA5D,EAGCyvY,EAAkBC,GAIhB,SACL1vY,GAKA,IAFA,IAAMovY,EAA8C,GAE3B/nX,EAAA,EAAAyoX,EAAAJ,EAAAroX,EAAAyoX,EAAAtgZ,OAAA63B,IAAa,CAAtC,IAAWsoX,EAAAG,EAAAzoX,GACT+nX,EAASzgY,KACPghY,EAAWt3U,QACXs3U,EAAW7hW,SACX6hW,EAAW9hW,WAMf,OAFwB2sV,EAAA1sX,WAAA,EAAWshY,EAE5BQ,CAAgB5vY,EAAA,EAnBhBygY,IAAqBiP,EAAY,GAmBjB,CC7VRp/Y,OAAA2mB,OCxBZ,ID8BD84X,EAAM,qBA8Mena,EACtBma,EAAA,QAM4Bna,EAAgBma,EAAA,cAKnBna,EACzBma,EAAA,WExSE,IAWH5xV,EAXSmnV,EAAmB,gBAEnBjN,EACX,WACA,gBAACh2Y,SAA+C,OAC9CA,QAAAA,EACAm2K,MAAA3yK,EAAA,GAAMA,EAAGy/Y,IAAmB,EAAAz/Y,GAFkB,CAAhD,EAyBImqZ,IAhBsB,oBAAnBhN,gBACHA,eAAexmX,KACK,qBAAX91B,OACHA,OACkB,qBAAXs+C,EAAAA,EACPA,EAAAA,EACAF,YAUiB,SAACgM,GAC5B,OAAO,SAACm/V,GACNtyX,WAAWsyX,EAAQn/V,EAAA,IAOH,qBAAXpqD,QAA0BA,OAAOi8Q,sBACpCj8Q,OAAOi8Q,sBACPqtI,GAAqB,KClB3BE,EAAAA,EAAAA,2QCjBY34Y,8GAAZ,SAAYA,GAQVA,EAAA,UAOAA,EAAA,YAMAA,EAAA,iBACD,CAtBD,CAAYA,IAAAA,EAsBX,KAqKD,MAAM44Y,EAAoB,WAqKV,SAAAC,EACd1kW,GAoBA,YApBA,IAAAA,IAAAA,EAAiC,CAAC,GAoB3B2kW,GAlBP,SACE3pZ,EACA4pZ,GAEA,IAAI,SAAEn6V,EAAQ,OAAEJ,EAAM,KAAEC,GAAStvD,EAAOwL,SACxC,OAAOq+Y,EACL,GACA,CAAEp6V,WAAUJ,SAAQC,QAEnBs6V,EAAc5vZ,OAAS4vZ,EAAc5vZ,MAAM8vZ,KAAQ,KACnDF,EAAc5vZ,OAAS4vZ,EAAc5vZ,MAAMu4B,KAAQ,UAExD,IAEA,SAA2BvyB,EAAgBolE,GACzC,MAAqB,kBAAPA,EAAkBA,EAAK2kV,EAAW3kV,EAClD,GAKE,KACApgB,EAEJ,CAyGgB,SAAAglW,EAAUt9Y,EAAYkpC,GACpC,IAAc,IAAVlpC,GAA6B,OAAVA,GAAmC,qBAAVA,EAC9C,MAAM,IAAI4mB,MAAMsiB,EAEpB,CAEgB,SAAAq0W,EAAQC,EAAWt0W,GACjC,IAAKs0W,EAAM,CAEc,qBAAZpuZ,SAAyBA,QAAQw6D,KAAK1gB,GAEjD,IAME,MAAM,IAAItiB,MAAMsiB,EAEjB,CAAC,MAAOj1C,GAAI,CACd,CACH,CASA,SAASwpZ,EAAgB3+Y,EAAoBqQ,GAC3C,MAAO,CACLiuY,IAAKt+Y,EAASxR,MACdu4B,IAAK/mB,EAAS+mB,IACdxnB,IAAK8Q,EAET,CAKM,SAAUguY,EACdvuZ,EACA8pE,EACAprE,EACAu4B,GAcA,YAfA,IAAAv4B,IAAAA,EAAa,MAGD68O,EAAA,CACVpnL,SAA6B,kBAAZn0D,EAAuBA,EAAUA,EAAQm0D,SAC1DJ,OAAQ,GACRC,KAAM,IACY,kBAAP8V,EAAkB2lF,EAAU3lF,GAAMA,EAAE,CAC/CprE,QAKAu4B,IAAM6yC,GAAOA,EAAgB7yC,KAAQA,GAjChCxW,KAAKknC,SAAS9G,SAAS,IAAImyD,OAAO,EAAG,IAoC9C,CAKgB,SAAAy7S,EAAUpwZ,GAIV,IAJW,SACzB81D,EAAW,IAAG,OACdJ,EAAS,GAAE,KACXC,EAAO,IACO31D,EAKd,OAJI01D,GAAqB,MAAXA,IACZI,GAAiC,MAArBJ,EAAOK,OAAO,GAAaL,EAAS,IAAMA,GACpDC,GAAiB,MAATA,IACVG,GAA+B,MAAnBH,EAAKI,OAAO,GAAaJ,EAAO,IAAMA,GAC7CG,CACT,CAKM,SAAUs7F,EAAUrmG,GACxB,IAAI0lW,EAA4B,CAAC,EAEjC,GAAI1lW,EAAM,CACR,IAAIw5S,EAAYx5S,EAAKxiB,QAAQ,KACzBg8T,GAAa,IACfksD,EAAW96V,KAAO5K,EAAK4pD,OAAO4vP,GAC9Bx5S,EAAOA,EAAK4pD,OAAO,EAAG4vP,IAGxB,IAAImsD,EAAc3lW,EAAKxiB,QAAQ,KAC3BmoX,GAAe,IACjBD,EAAW/6V,OAAS3K,EAAK4pD,OAAO+7S,GAChC3lW,EAAOA,EAAK4pD,OAAO,EAAG+7S,IAGpB3lW,IACF0lW,EAAW36V,SAAW/K,EAEzB,CAED,OAAO0lW,CACT,CASA,SAAST,EACPW,EACAC,EACAC,EACAxlW,QAAA,IAAAA,IAAAA,EAA6B,CAAC,GAE9B,IAAI,OAAEhlD,EAASyV,SAASi0K,YAAY,SAAE+gO,GAAW,GAAUzlW,EACvD4kW,EAAgB5pZ,EAAOqzN,QACvB/5M,EAASzI,EAAO65Y,IAChBl6V,EAA4B,KAE5B30C,EAAQsoP,IASZ,SAASA,IAEP,OADYylJ,EAAc5vZ,OAAS,CAAE+Q,IAAK,OAC7BA,GACf,CAEA,SAAS4/Y,IACPrxY,EAASzI,EAAO65Y,IAChB,IAAIlvW,EAAY2oN,IACZjwK,EAAqB,MAAb14C,EAAoB,KAAOA,EAAY3/B,EACnDA,EAAQ2/B,EACJgV,GACFA,EAAS,CAAEl3C,SAAQ9N,SAAU6nN,EAAQ7nN,SAAU0oF,SAEnD,CA+CA,SAAS02T,EAAUxlV,GAIjB,IAAIiwD,EACyB,SAA3Br1H,EAAOwL,SAASozF,OACZ5+F,EAAOwL,SAASozF,OAChB5+F,EAAOwL,SAAS0H,KAElBA,EAAqB,kBAAPkyD,EAAkBA,EAAK2kV,EAAW3kV,GAKpD,OAJA4kV,EACE30R,EACsE,sEAAAniH,GAEjE,IAAIi4H,IAAIj4H,EAAMmiH,EACvB,CAhFa,MAATx5G,IACFA,EAAQ,EACR+tY,EAAciB,aAAYh0K,EAAM,GAAA+yK,EAAc5vZ,MAAO,CAAA+Q,IAAK8Q,IAAS,KAgFrE,IAAIw3M,EAAmB,CACrB,UAAI/5M,GACF,OAAOA,GAET,YAAI9N,GACF,OAAO8+Y,EAAYtqZ,EAAQ4pZ,IAE7BkB,MAAAA,CAAO7uW,GACL,GAAIuU,EACF,MAAM,IAAIl9B,MAAM,8CAKlB,OAHAtzB,EAAOG,iBAAiBspZ,EAAmBkB,GAC3Cn6V,EAAWvU,EAEJ,KACLj8C,EAAOq5C,oBAAoBowW,EAAmBkB,GAC9Cn6V,EAAW,IAAI,GAGnB+5V,WAAWnlV,GACFmlV,EAAWvqZ,EAAQolE,GAE5BwlV,YACAG,cAAAA,CAAe3lV,GAEb,IAAIxe,EAAMgkW,EAAUxlV,GACpB,MAAO,CACL3V,SAAU7I,EAAI6I,SACdJ,OAAQzI,EAAIyI,OACZC,KAAM1I,EAAI0I,OAGdrnC,KA9FF,SAAcm9C,EAAQprE,GACpBsf,EAASzI,EAAOm6Y,KAChB,IAAIx/Y,EAAWq+Y,EAAex2L,EAAQ7nN,SAAU45D,EAAIprE,GAChDwwZ,GAAkBA,EAAiBh/Y,EAAU45D,GAEjDvpD,EAAQsoP,IAAa,EACrB,IAAIzwC,EAAey2L,EAAgB3+Y,EAAUqQ,GACzC+qC,EAAMysK,EAAQk3L,WAAW/+Y,GAG7B,IACEo+Y,EAAcqB,UAAUv3L,EAAc,GAAI9sK,GAC1C,MAAO/qD,GAKP,GAAIA,aAAiBqvZ,cAA+B,mBAAfrvZ,EAAMkB,KACzC,MAAMlB,EAIRmE,EAAOwL,SAAS+kB,OAAOq2B,EACxB,CAEG6jW,GAAYj6V,GACdA,EAAS,CAAEl3C,SAAQ9N,SAAU6nN,EAAQ7nN,SAAU0oF,MAAO,GAE1D,EAmEE//E,QAjEF,SAAiBixD,EAAQprE,GACvBsf,EAASzI,EAAOs6Y,QAChB,IAAI3/Y,EAAWq+Y,EAAex2L,EAAQ7nN,SAAU45D,EAAIprE,GAChDwwZ,GAAkBA,EAAiBh/Y,EAAU45D,GAEjDvpD,EAAQsoP,IACR,IAAIzwC,EAAey2L,EAAgB3+Y,EAAUqQ,GACzC+qC,EAAMysK,EAAQk3L,WAAW/+Y,GAC7Bo+Y,EAAciB,aAAan3L,EAAc,GAAI9sK,GAEzC6jW,GAAYj6V,GACdA,EAAS,CAAEl3C,SAAQ9N,SAAU6nN,EAAQ7nN,SAAU0oF,MAAO,GAE1D,EAqDEk3T,GAAG1jZ,GACMkiZ,EAAcwB,GAAG1jZ,IAI5B,OAAO2rN,CACT,CCztBA,IAAYm6H,GAAZ,SAAYA,GACVA,EAAA,YACAA,EAAA,oBACAA,EAAA,oBACAA,EAAA,aACD,CALD,CAAYA,IAAAA,EAKX,KAyOiC,IAAI1lJ,IAAuB,CAC3D,OACA,gBACA,OACA,KACA,QACA,aAoNI,SAAUujN,EAGdC,EACAC,EACAC,QAAQ,IAARA,IAAAA,EAAW,KAEX,IAGI/7V,EAAWg8V,GAFU,kBAAhBF,EAA2BxgQ,EAAUwgQ,GAAeA,GAEvB97V,UAAY,IAAK+7V,GAEvD,GAAgB,MAAZ/7V,EACF,OAAO,KAGT,IAAIi8V,EAAWC,EAAcL,IAkM/B,SAA2BI,GACzBA,EAAS3mY,MAAK,CAAC/gB,EAAGqpB,IAChBrpB,EAAE2pO,QAAUtgN,EAAEsgN,MACVtgN,EAAEsgN,MAAQ3pO,EAAE2pO,MAyCpB,SAAwB3pO,EAAaqpB,GACnC,IAAIozQ,EACFz8R,EAAE8E,SAAWukB,EAAEvkB,QAAU9E,EAAE6R,MAAM,GAAI,GAAGglK,OAAM,CAACnzK,EAAGP,IAAMO,IAAM2lB,EAAElmB,KAElE,OAAOs5R,EAKHz8R,EAAEA,EAAE8E,OAAS,GAAKukB,EAAEA,EAAEvkB,OAAS,GAG/B,CACN,CArDQ8iZ,CACE5nZ,EAAE6nZ,WAAW3kZ,KAAK4qK,GAASA,EAAKg6O,gBAChCz+X,EAAEw+X,WAAW3kZ,KAAK4qK,GAASA,EAAKg6O,kBAG1C,CA1MEC,CAAkBL,GAElB,IAAIl8W,EAAU,KACd,IAAK,IAAIroC,EAAI,EAAc,MAAXqoC,GAAmBroC,EAAIukZ,EAAS5iZ,SAAU3B,EACxDqoC,EAAUw8W,EACRN,EAASvkZ,GAOT8kZ,EAAgBx8V,IAIpB,OAAOjgB,CACT,CAyCA,SAASm8W,EAGPL,EACAI,EACAQ,EACAC,QAF2C,IAA3CT,IAAAA,EAA2C,SAC3C,IAAAQ,IAAAA,EAA4C,SAClC,IAAVC,IAAAA,EAAa,IAEb,IAAIC,EAAeA,CACjB5pP,EACA3mJ,EACAwwY,KAEA,IAAIv6O,EAAmC,CACrCu6O,kBACmBlyZ,IAAjBkyZ,EAA6B7pP,EAAM99G,MAAQ,GAAK2nW,EAClDC,eAAuC,IAAxB9pP,EAAM8pP,cACrBR,cAAejwY,EACf2mJ,SAGEsP,EAAKu6O,aAAa94Y,WAAW,OAC/By2Y,EACEl4O,EAAKu6O,aAAa94Y,WAAW44Y,GAC7B,wBAAwBr6O,EAAKu6O,aAA7B,wBACMF,EADN,4GAKFr6O,EAAKu6O,aAAev6O,EAAKu6O,aAAax2Y,MAAMs2Y,EAAWrjZ,SAGzD,IAAI47C,EAAO6nW,EAAU,CAACJ,EAAYr6O,EAAKu6O,eACnCR,EAAaK,EAAY/gZ,OAAO2mK,GAKhCtP,EAAM9nK,UAAY8nK,EAAM9nK,SAASoO,OAAS,IAC5CkhZ,GAGkB,IAAhBxnP,EAAM3mJ,MACN,4FACuC6oC,EAAI,MAG7CinW,EAAcnpP,EAAM9nK,SAAUgxZ,EAAUG,EAAYnnW,KAKpC,MAAd89G,EAAM99G,MAAiB89G,EAAM3mJ,QAIjC6vY,EAASzjY,KAAK,CACZy8B,OACAipL,MAAO6+K,EAAa9nW,EAAM89G,EAAM3mJ,OAChCgwY,cACA,EAaJ,OAXAP,EAAO11Y,SAAQ,CAAC4sJ,EAAO3mJ,KAAS,IAAA4wY,EAE9B,GAAmB,KAAfjqP,EAAM99G,MAA0B,OAAX+nW,EAACjqP,EAAM99G,OAAN+nW,EAAYxtZ,SAAS,KAG7C,IAAK,IAAIytZ,KAAYC,EAAwBnqP,EAAM99G,MACjD0nW,EAAa5pP,EAAO3mJ,EAAO6wY,QAH7BN,EAAa5pP,EAAO3mJ,EAKrB,IAGI6vY,CACT,CAgBA,SAASiB,EAAwBjoW,GAC/B,IAAI86F,EAAW96F,EAAKz0C,MAAM,KAC1B,GAAwB,IAApBuvI,EAAS12I,OAAc,MAAO,GAElC,IAAKgkD,KAAUw8G,GAAQ9pB,EAGnBotQ,EAAa9/V,EAAMxL,SAAS,KAE5B1jB,EAAWkvB,EAAM34C,QAAQ,MAAO,IAEpC,GAAoB,IAAhBm1J,EAAKxgK,OAGP,OAAO8jZ,EAAa,CAAChvX,EAAU,IAAM,CAACA,GAGxC,IAAIivX,EAAeF,EAAwBrjP,EAAKzkH,KAAK,MAEjDlhD,EAAmB,GAqBvB,OAZAA,EAAOskB,QACF4kY,EAAa3lZ,KAAK4lZ,GACP,KAAZA,EAAiBlvX,EAAW,CAACA,EAAUkvX,GAASjoW,KAAK,QAKrD+nW,GACFjpZ,EAAOskB,QAAQ4kY,GAIVlpZ,EAAOuD,KAAKwlZ,GACjBhoW,EAAKnxC,WAAW,MAAqB,KAAbm5Y,EAAkB,IAAMA,GAEpD,CAaA,MAAMK,EAAU,SACVC,EAAsB,EACtBC,EAAkB,EAClBC,EAAoB,EACpBC,EAAqB,GACrBC,GAAgB,EAChBC,EAAW35X,GAAoB,MAANA,EAE/B,SAAS84X,EAAa9nW,EAAc7oC,GAClC,IAAI2jI,EAAW96F,EAAKz0C,MAAM,KACtBq9Y,EAAe9tQ,EAAS12I,OAS5B,OARI02I,EAAS35F,KAAKwnW,KAChBC,GAAgBF,GAGdvxY,IACFyxY,GAAgBL,GAGXztQ,EACJz1I,QAAQ2pB,IAAO25X,EAAQ35X,KACvBhwB,QACC,CAACiqO,EAAO3nF,IACN2nF,GACCo/K,EAAQr4X,KAAKsxH,GACVgnQ,EACY,KAAZhnQ,EACAknQ,EACAC,IACNG,EAEN,CAiBA,SAAStB,EAIPv5L,EACAhjK,GAEA,IAAI,WAAEo8V,GAAep5L,EAEjB86L,EAAgB,CAAC,EACjBC,EAAkB,IAClBh+W,EAA2D,GAC/D,IAAK,IAAIroC,EAAI,EAAGA,EAAI0kZ,EAAW/iZ,SAAU3B,EAAG,CAC1C,IAAI2qK,EAAO+5O,EAAW1kZ,GAClB8mB,EAAM9mB,IAAM0kZ,EAAW/iZ,OAAS,EAChC2kZ,EACkB,MAApBD,EACI/9V,EACAA,EAAS55C,MAAM23Y,EAAgB1kZ,SAAW,IAC5C8L,EAAQ84Y,EACV,CAAEhpW,KAAMotH,EAAKu6O,aAAcC,cAAex6O,EAAKw6O,cAAer+X,OAC9Dw/X,GAGF,IAAK74Y,EAAO,OAAO,KAEnBhL,OAAO2mB,OAAOg9X,EAAe34Y,EAAM0xC,QAEnC,IAAIk8G,EAAQsP,EAAKtP,MAEjBhzH,EAAQvnB,KAAK,CAEXq+B,OAAQinW,EACR99V,SAAU88V,EAAU,CAACiB,EAAiB54Y,EAAM66C,WAC5Ck+V,aAAcC,EACZrB,EAAU,CAACiB,EAAiB54Y,EAAM+4Y,gBAEpCnrP,UAGyB,MAAvB5tJ,EAAM+4Y,eACRH,EAAkBjB,EAAU,CAACiB,EAAiB54Y,EAAM+4Y,eAEvD,CAED,OAAOn+W,CACT,CAiHgB,SAAAk+W,EAId5jY,EACA2lC,GAEuB,kBAAZ3lC,IACTA,EAAU,CAAE46B,KAAM56B,EAASwiY,eAAe,EAAOr+X,KAAK,IAGxD,IAAKk+B,EAAS0hW,GA4ChB,SACEnpW,EACA4nW,EACAr+X,QADa,IAAbq+X,IAAAA,GAAgB,QACb,IAAHr+X,IAAAA,GAAM,GAENg8X,EACW,MAATvlW,IAAiBA,EAAKpD,SAAS,MAAQoD,EAAKpD,SAAS,MACrD,eAAeoD,EAAf,oCACMA,EAAKvwC,QAAQ,MAAO,MAD1B,qIAGsCuwC,EAAKvwC,QAAQ,MAAO,MAAK,MAGjE,IAAImyC,EAA8B,GAC9BwnW,EACF,IACAppW,EACGvwC,QAAQ,UAAW,IACnBA,QAAQ,OAAQ,KAChBA,QAAQ,qBAAsB,QAC9BA,QAAQ,kBAAkB,CAAC0T,EAAWkmY,EAAmBnB,KACxDtmW,EAAOr+B,KAAK,CAAE8lY,YAAWnB,WAA0B,MAAdA,IAC9BA,EAAa,eAAiB,gBAGvCloW,EAAKpD,SAAS,MAChBgF,EAAOr+B,KAAK,CAAE8lY,UAAW,MACzBD,GACW,MAATppW,GAAyB,OAATA,EACZ,QACA,qBACGz2B,EAET6/X,GAAgB,QACE,KAATppW,GAAwB,MAATA,IAQxBopW,GAAgB,iBAKlB,IAAI3hW,EAAU,IAAIt4B,OAAOi6X,EAAcxB,OAAgBnyZ,EAAY,KAEnE,MAAO,CAACgyD,EAAS7F,EACnB,CA9FkC0nW,CAC9BlkY,EAAQ46B,KACR56B,EAAQwiY,cACRxiY,EAAQmE,KAGNrZ,EAAQ66C,EAAS76C,MAAMu3C,GAC3B,IAAKv3C,EAAO,OAAO,KAEnB,IAAI44Y,EAAkB54Y,EAAM,GACxB+4Y,EAAeH,EAAgBr5Y,QAAQ,UAAW,MAClD85Y,EAAgBr5Y,EAAMiB,MAAM,GAuBhC,MAAO,CACLywC,OAvBmBunW,EAAenqZ,QAClC,CAACwqZ,EAAIv0Z,EAA6BkiB,KAAS,IAApC,UAAEkyY,EAAS,WAAEnB,GAAYjzZ,EAG9B,GAAkB,MAAdo0Z,EAAmB,CACrB,IAAII,EAAaF,EAAcpyY,IAAU,GACzC8xY,EAAeH,EACZ33Y,MAAM,EAAG23Y,EAAgB1kZ,OAASqlZ,EAAWrlZ,QAC7CqL,QAAQ,UAAW,KACvB,CAED,MAAMzH,EAAQuhZ,EAAcpyY,GAM5B,OAJEqyY,EAAKH,GADHnB,IAAelgZ,OACCvS,EAsF1B,SAAkCuS,EAAeqhZ,GAC/C,IACE,OAAOt/V,mBAAmB/hD,GAC1B,MAAO7Q,GAQP,OAPAouZ,GACE,EACA,gCAAgC8D,EAAhC,6CACkBrhZ,EADlB,iFAEqC7Q,EAAK,MAGrC6Q,CACR,CACH,CAjG0B0hZ,CAAyB1hZ,GAAS,GAAIqhZ,GAEnDG,CAAI,GAEb,CAAC,GAKDz+V,SAAU+9V,EACVG,eACA7jY,UAEJ,CAwDA,SAASmiY,EAAgBv/Y,GACvB,IACE,OAAO2hZ,UAAU3hZ,GACjB,MAAO7Q,GAQP,OAPAouZ,GACE,EACA,iBAAiBv9Y,EAAjB,oHAEe7Q,EAAK,MAGf6Q,CACR,CACH,CAoBgB,SAAA++Y,EACdh8V,EACA+7V,GAEA,GAAiB,MAAbA,EAAkB,OAAO/7V,EAE7B,IAAKA,EAAShT,cAAclpC,WAAWi4Y,EAAS/uW,eAC9C,OAAO,KAKT,IAAIu3G,EAAaw3P,EAASlqW,SAAS,KAC/BkqW,EAAS1iZ,OAAS,EAClB0iZ,EAAS1iZ,OACTwlZ,EAAW7+V,EAASC,OAAOskG,GAC/B,OAAIs6P,GAAyB,MAAbA,EAEP,KAGF7+V,EAAS55C,MAAMm+I,IAAe,GACvC,CA2CA,SAASu6P,EACP9hW,EACA7oD,EACA4rH,EACA9qE,GAEA,MACE,qBAAqB+H,EAArB,2CACQ7oD,EAAK,YAAa+hD,KAAKC,UAC7BlB,GAFF,yCAIQ8qE,EAJR,2HAOJ,CAyBM,SAAUg/R,EAEdh/W,GACA,OAAOA,EAAQzlC,QACb,CAAC6K,EAAOiH,IACI,IAAVA,GAAgBjH,EAAM4tJ,MAAM99G,MAAQ9vC,EAAM4tJ,MAAM99G,KAAK57C,OAAS,GAEpE,CAKM,SAAU2lZ,EACdC,EACAC,EACAC,EACAC,GAEA,IAAIzpV,OAFU,IAAdypV,IAAAA,GAAiB,GAGI,kBAAVH,EACTtpV,EAAK2lF,EAAU2jQ,IAEftpV,EAAEyxK,EAAQ,GAAA63K,GAEV1E,GACG5kV,EAAG3V,WAAa2V,EAAG3V,SAASxwD,SAAS,KACtCsvZ,EAAoB,IAAK,WAAY,SAAUnpV,IAEjD4kV,GACG5kV,EAAG3V,WAAa2V,EAAG3V,SAASxwD,SAAS,KACtCsvZ,EAAoB,IAAK,WAAY,OAAQnpV,IAE/C4kV,GACG5kV,EAAG/V,SAAW+V,EAAG/V,OAAOpwD,SAAS,KAClCsvZ,EAAoB,IAAK,SAAU,OAAQnpV,KAI/C,IAGIjhB,EAHA2qW,EAAwB,KAAVJ,GAAgC,KAAhBtpV,EAAG3V,SACjCs/V,EAAaD,EAAc,IAAM1pV,EAAG3V,SAaxC,GAAIo/V,GAAgC,MAAdE,EACpB5qW,EAAOyqW,MACF,CACL,IAAII,EAAqBL,EAAe7lZ,OAAS,EAEjD,GAAIimZ,EAAWx7Y,WAAW,MAAO,CAC/B,IAAI07Y,EAAaF,EAAW9+Y,MAAM,KAKlC,KAAyB,OAAlBg/Y,EAAW,IAChBA,EAAW34T,QACX04T,GAAsB,EAGxB5pV,EAAG3V,SAAWw/V,EAAWpqW,KAAK,IAC/B,CAIDV,EAAO6qW,GAAsB,EAAIL,EAAeK,GAAsB,GACvE,CAED,IAAItqW,WAvJsB0gB,EAAQ8pV,QAAY,IAAZA,IAAAA,EAAe,KACjD,IACEz/V,SAAUs/V,EAAU,OACpB1/V,EAAS,GAAE,KACXC,EAAO,IACS,kBAAP8V,EAAkB2lF,EAAU3lF,GAAMA,EAEzC3V,EAAWs/V,EACXA,EAAWx7Y,WAAW,KACpBw7Y,EAWR,SAAyB1C,EAAsB6C,GAC7C,IAAI1vQ,EAAW0vQ,EAAa/6Y,QAAQ,OAAQ,IAAIlE,MAAM,KAYtD,OAXuBo8Y,EAAap8Y,MAAM,KAEzB2F,SAASowI,IACR,OAAZA,EAEExG,EAAS12I,OAAS,GAAG02I,EAASv5F,MACb,MAAZ+/F,GACTxG,EAASv3H,KAAK+9H,EACf,IAGIxG,EAAS12I,OAAS,EAAI02I,EAAS36F,KAAK,KAAO,GACpD,CAxBQsqW,CAAgBJ,EAAYG,GAC9BA,EAEJ,MAAO,CACLz/V,WACAJ,OAAQ+/V,EAAgB//V,GACxBC,KAAM+/V,EAAc//V,GAExB,CAqIaggW,CAAYlqV,EAAIjhB,GAGvBorW,EACFR,GAA6B,MAAfA,GAAsBA,EAAWztW,SAAS,KAEtDkuW,GACDV,GAA8B,MAAfC,IAAuBH,EAAiBttW,SAAS,KAQnE,OANGoD,EAAK+K,SAASnO,SAAS,OACvBiuW,IAA4BC,IAE7B9qW,EAAK+K,UAAY,KAGZ/K,CACT,OAiBa6nW,EAAa9sQ,GACxBA,EAAM56F,KAAK,KAAK1wC,QAAQ,SAAU,KAKvBy5Y,EAAqBn+V,GAChCA,EAASt7C,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,KAKlCi7Y,EAAmB//V,GAC7BA,GAAqB,MAAXA,EAEPA,EAAO97C,WAAW,KAClB87C,EACA,IAAMA,EAHN,GAQOggW,EAAiB//V,GAC3BA,GAAiB,MAATA,EAAoBA,EAAK/7C,WAAW,KAAO+7C,EAAO,IAAMA,EAAzC,GA+BpB,MAAOmgW,UAA6Bn8X,OAyRpC,SAAUo8X,EAAqB7zZ,GACnC,OACW,MAATA,GACwB,kBAAjBA,EAAMgS,QACe,kBAArBhS,EAAMi8C,YACa,mBAAnBj8C,EAAM8zZ,UACb,SAAU9zZ,CAEd,CCn6BA,MAAM+zZ,EAAgD,CACpD,OACA,MACA,QACA,UAMIC,GAJuB,IAAI/nN,IAC/B8nN,GAG2C,CAC3C,SACGA,IAEuB,IAAI9nN,IAAgB+nN,GAEpB,IAAI/nN,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,MACf,IAAIA,IAAI,CAAC,IAAK,MAs+DlB1qJ,OAAO,yCCxoF7C,IAAI0yW,EAAUpyZ,EAAQ,MAMlBqyZ,EAAgB,CAClBC,mBAAmB,EACnBt1K,aAAa,EACbu1K,cAAc,EACd3/X,cAAc,EACdyQ,aAAa,EACbmvX,iBAAiB,EACjBC,0BAA0B,EAC1B53K,0BAA0B,EAC1B63K,QAAQ,EACRn9X,WAAW,EACXxyB,MAAM,GAEJ4vZ,EAAgB,CAClBtzZ,MAAM,EACN+L,QAAQ,EACRqe,WAAW,EACXmpY,QAAQ,EACRC,QAAQ,EACR58X,WAAW,EACX68X,OAAO,GASLC,EAAe,CACjB,UAAY,EACZtsU,SAAS,EACT7zD,cAAc,EACdyQ,aAAa,EACb9N,WAAW,EACXxyB,MAAM,GAEJiwZ,EAAe,CAAC,EAIpB,SAASC,EAAW3zZ,GAElB,OAAI8yZ,EAAQc,OAAO5zZ,GACVyzZ,EAIFC,EAAa1zZ,EAAoB,WAAM+yZ,CAChD,CAXAW,EAAaZ,EAAQe,YAhBK,CACxB,UAAY,EACZ70Z,QAAQ,EACRs0B,cAAc,EACdyQ,aAAa,EACb9N,WAAW,GAYby9X,EAAaZ,EAAQgB,MAAQL,EAY7B,IAAIh/X,EAAiB7nB,OAAO6nB,eACxBssB,EAAsBn0C,OAAOm0C,oBAC7B5b,EAAwBv4B,OAAOu4B,sBAC/B4uX,EAA2BnnZ,OAAOmnZ,yBAClC30W,EAAiBxyC,OAAOwyC,eACxB40W,EAAkBpnZ,OAAOud,UAsC7B8pY,EAAOxyZ,QArCP,SAASyyZ,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,kBAApBD,EAA8B,CAEvC,GAAIJ,EAAiB,CACnB,IAAIM,EAAqBl1W,EAAeg1W,GAEpCE,GAAsBA,IAAuBN,GAC/CE,EAAqBC,EAAiBG,EAAoBD,EAE9D,CAEA,IAAIxnZ,EAAOk0C,EAAoBqzW,GAE3BjvX,IACFt4B,EAAOA,EAAKsB,OAAOg3B,EAAsBivX,KAM3C,IAHA,IAAIG,EAAgBZ,EAAWQ,GAC3BK,EAAgBb,EAAWS,GAEtBjqZ,EAAI,EAAGA,EAAI0C,EAAKf,SAAU3B,EAAG,CACpC,IAAIorB,EAAM1oB,EAAK1C,GAEf,IAAKkpZ,EAAc99X,MAAU8+X,IAAaA,EAAU9+X,OAAWi/X,IAAiBA,EAAcj/X,OAAWg/X,IAAiBA,EAAch/X,IAAO,CAC7I,IAAI4sB,EAAa4xW,EAAyBK,EAAiB7+X,GAE3D,IAEEd,EAAe0/X,EAAiB5+X,EAAK4sB,EACvC,CAAE,MAAOx+C,GAAI,CACf,CACF,CACF,CAEA,OAAOwwZ,CACT,4BC3Fa,IAAI9jY,EAAE,oBAAoB+vB,QAAQA,OAAO03V,IAAI9gY,EAAEqZ,EAAE+vB,OAAO03V,IAAI,iBAAiB,MAAM1nX,EAAEC,EAAE+vB,OAAO03V,IAAI,gBAAgB,MAAMn0Y,EAAE0sB,EAAE+vB,OAAO03V,IAAI,kBAAkB,MAAM99W,EAAE3J,EAAE+vB,OAAO03V,IAAI,qBAAqB,MAAMxhT,EAAEjmE,EAAE+vB,OAAO03V,IAAI,kBAAkB,MAAM7vY,EAAEooB,EAAE+vB,OAAO03V,IAAI,kBAAkB,MAAM59W,EAAE7J,EAAE+vB,OAAO03V,IAAI,iBAAiB,MAAMj3V,EAAExwB,EAAE+vB,OAAO03V,IAAI,oBAAoB,MAAMryV,EAAEp1B,EAAE+vB,OAAO03V,IAAI,yBAAyB,MAAMptY,EAAE2lB,EAAE+vB,OAAO03V,IAAI,qBAAqB,MAAMtnX,EAAEH,EAAE+vB,OAAO03V,IAAI,kBAAkB,MAAMrtY,EAAE4lB,EACpf+vB,OAAO03V,IAAI,uBAAuB,MAAM35T,EAAE9tD,EAAE+vB,OAAO03V,IAAI,cAAc,MAAMjxY,EAAEwpB,EAAE+vB,OAAO03V,IAAI,cAAc,MAAM3gT,EAAE9mE,EAAE+vB,OAAO03V,IAAI,eAAe,MAAMtoV,EAAEn/B,EAAE+vB,OAAO03V,IAAI,qBAAqB,MAAM1jU,EAAE/jD,EAAE+vB,OAAO03V,IAAI,mBAAmB,MAAMx9S,EAAEjqE,EAAE+vB,OAAO03V,IAAI,eAAe,MAClQ,SAASzkK,EAAErsO,GAAG,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIk2N,EAAEl2N,EAAEy0P,SAAS,OAAOv+B,GAAG,KAAKlmN,EAAE,OAAOhQ,EAAEA,EAAEvD,MAAQ,KAAKo9C,EAAE,KAAK4E,EAAE,KAAK9hD,EAAE,KAAK2yF,EAAE,KAAKt8D,EAAE,KAAKxJ,EAAE,OAAOxpB,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEy0P,UAAY,KAAKvhO,EAAE,KAAKxvB,EAAE,KAAK7D,EAAE,KAAKs3E,EAAE,KAAKl2E,EAAE,OAAOjB,EAAE,QAAQ,OAAOk2N,GAAG,KAAK9sM,EAAE,OAAO8sM,EAAE,CAAC,CAAC,SAASlgF,EAAEh2I,GAAG,OAAOqsO,EAAErsO,KAAKy+C,CAAC,CAAChkD,EAAQgzZ,UAAU5zW,EAAEp/C,EAAQizZ,eAAejvW,EAAEhkD,EAAQkzZ,gBAAgBz6X,EAAEz4B,EAAQmzZ,gBAAgB3sZ,EAAExG,EAAQ4lG,QAAQrwF,EAAEvV,EAAQoyZ,WAAWnpZ,EAAEjJ,EAAQ4B,SAASM,EAAElC,EAAQozZ,KAAKhuZ,EAAEpF,EAAQqyZ,KAAK31U,EAAE18E,EAAQqzZ,OAAO1kY,EAChf3uB,EAAQszZ,SAASz+T,EAAE70F,EAAQuzZ,WAAWh7X,EAAEv4B,EAAQwzZ,SAASzkY,EAAE/uB,EAAQyzZ,YAAY,SAASluZ,GAAG,OAAOg2I,EAAEh2I,IAAIqsO,EAAErsO,KAAK65C,CAAC,EAAEp/C,EAAQ0zZ,iBAAiBn4Q,EAAEv7I,EAAQ2zZ,kBAAkB,SAASpuZ,GAAG,OAAOqsO,EAAErsO,KAAKkzB,CAAC,EAAEz4B,EAAQ4zZ,kBAAkB,SAASruZ,GAAG,OAAOqsO,EAAErsO,KAAKiB,CAAC,EAAExG,EAAQ6zZ,UAAU,SAAStuZ,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEy0P,WAAWzkP,CAAC,EAAEvV,EAAQi6P,aAAa,SAAS10P,GAAG,OAAOqsO,EAAErsO,KAAK0D,CAAC,EAAEjJ,EAAQ8zZ,WAAW,SAASvuZ,GAAG,OAAOqsO,EAAErsO,KAAKrD,CAAC,EAAElC,EAAQ+zZ,OAAO,SAASxuZ,GAAG,OAAOqsO,EAAErsO,KAAKH,CAAC,EAC1dpF,EAAQmyZ,OAAO,SAAS5sZ,GAAG,OAAOqsO,EAAErsO,KAAKm3E,CAAC,EAAE18E,EAAQg0Z,SAAS,SAASzuZ,GAAG,OAAOqsO,EAAErsO,KAAKopB,CAAC,EAAE3uB,EAAQi0Z,WAAW,SAAS1uZ,GAAG,OAAOqsO,EAAErsO,KAAKsvF,CAAC,EAAE70F,EAAQk0Z,aAAa,SAAS3uZ,GAAG,OAAOqsO,EAAErsO,KAAKgzB,CAAC,EAAEv4B,EAAQm0Z,WAAW,SAAS5uZ,GAAG,OAAOqsO,EAAErsO,KAAKwpB,CAAC,EAC1O/uB,EAAQo0Z,mBAAmB,SAAS7uZ,GAAG,MAAM,kBAAkBA,GAAG,oBAAoBA,GAAGA,IAAIrD,GAAGqD,IAAIy+C,GAAGz+C,IAAIsvF,GAAGtvF,IAAIgzB,GAAGhzB,IAAIwpB,GAAGxpB,IAAIyD,GAAG,kBAAkBzD,GAAG,OAAOA,IAAIA,EAAEy0P,WAAW50P,GAAGG,EAAEy0P,WAAWt9K,GAAGn3E,EAAEy0P,WAAWxzP,GAAGjB,EAAEy0P,WAAWvhO,GAAGlzB,EAAEy0P,WAAW/wP,GAAG1D,EAAEy0P,WAAWjsM,GAAGxoD,EAAEy0P,WAAWrnL,GAAGptE,EAAEy0P,WAAWnhK,GAAGtzF,EAAEy0P,WAAWtkK,EAAE,EAAE11F,EAAQq0Z,OAAOziL,+BCXjU4gL,EAAOxyZ,QAAU,EAAjBwyZ,iCCMF,IAAI8B,EAAuBr1Z,EAAQ,MAEnC,SAASs1Z,IAAiB,CAC1B,SAASC,IAA0B,CACnCA,EAAuBC,kBAAoBF,EAE3C/B,EAAOxyZ,QAAU,WACf,SAAS00Z,EAAKhuZ,EAAOguB,EAAUC,EAAe5nB,EAAU4nZ,EAAcC,GACpE,GAAIA,IAAWN,EAAf,CAIA,IAAI5gW,EAAM,IAAI7+B,MACZ,mLAKF,MADA6+B,EAAIp1D,KAAO,sBACLo1D,CAPN,CAQF,CAEA,SAASmhW,IACP,OAAOH,CACT,CAHAA,EAAK7nX,WAAa6nX,EAMlB,IAAII,EAAiB,CACnBtxQ,MAAOkxQ,EACPK,OAAQL,EACR14E,KAAM04E,EACN9hT,KAAM8hT,EACNnvW,OAAQmvW,EACRx8T,OAAQw8T,EACRhmS,OAAQgmS,EACR3wM,OAAQ2wM,EAERM,IAAKN,EACLO,QAASJ,EACThkY,QAAS6jY,EACTQ,YAAaR,EACbS,WAAYN,EACZxsT,KAAMqsT,EACNU,SAAUP,EACVQ,MAAOR,EACPS,UAAWT,EACXr5Y,MAAOq5Y,EACPU,MAAOV,EAEPW,eAAgBhB,EAChBC,kBAAmBF,GAKrB,OAFAO,EAAergY,UAAYqgY,EAEpBA,CACT,kBC/CEtC,EAAOxyZ,QAAUf,EAAQ,IAARA,0BCNnBuzZ,EAAOxyZ,QAFoB,4ECAd,IAAIy1Z,EAAGx2Z,EAAQ,MAAS,SAASmgD,EAAE75C,GAAG,IAAI,IAAIqpB,EAAE,yDAAyDrpB,EAAEgQ,EAAE,EAAEA,EAAE2f,UAAU7qB,OAAOkL,IAAIqZ,GAAG,WAAW+4B,mBAAmBzyB,UAAU3f,IAAI,MAAM,yBAAyBhQ,EAAE,WAAWqpB,EAAE,gHAAgH,CAChW,IAAIG,EAAE5jB,OAAOud,UAAUsG,eAAe0mY,EAAG,8VAA8VC,EAAG,CAAC,EAAEC,EAAG,CAAC,EACjZ,SAASC,EAAGtwZ,GAAG,QAAGwpB,EAAEE,KAAK2mY,EAAGrwZ,KAAewpB,EAAEE,KAAK0mY,EAAGpwZ,KAAemwZ,EAAGz/X,KAAK1wB,GAAUqwZ,EAAGrwZ,IAAG,GAAGowZ,EAAGpwZ,IAAG,GAAS,GAAE,CAAC,SAASm3E,EAAEn3E,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,EAAEr2B,EAAE2yF,GAAGrsE,KAAKstY,gBAAgB,IAAIlnY,GAAG,IAAIA,GAAG,IAAIA,EAAEpG,KAAKuhL,cAAcp7K,EAAEnG,KAAKutY,mBAAmBx9X,EAAE/P,KAAKwtY,gBAAgBzgZ,EAAEiT,KAAK87P,aAAa/+Q,EAAEijB,KAAKxmB,KAAK4sB,EAAEpG,KAAKytY,YAAY/zZ,EAAEsmB,KAAK0tY,kBAAkBrhU,CAAC,CAAC,IAAIzvF,EAAE,CAAC,EAC7U,uIAAuIoM,MAAM,KAAK2F,SAAQ,SAAS5R,GAAGH,EAAEG,GAAG,IAAIm3E,EAAEn3E,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAe4R,SAAQ,SAAS5R,GAAG,IAAIqpB,EAAErpB,EAAE,GAAGH,EAAEwpB,GAAG,IAAI8tD,EAAE9tD,EAAE,GAAE,EAAGrpB,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAAS4R,SAAQ,SAAS5R,GAAGH,EAAEG,GAAG,IAAIm3E,EAAEn3E,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiB7mC,SAAQ,SAAS5R,GAAGH,EAAEG,GAAG,IAAIm3E,EAAEn3E,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8OiM,MAAM,KAAK2F,SAAQ,SAAS5R,GAAGH,EAAEG,GAAG,IAAIm3E,EAAEn3E,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAY7mC,SAAQ,SAAS5R,GAAGH,EAAEG,GAAG,IAAIm3E,EAAEn3E,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAY4R,SAAQ,SAAS5R,GAAGH,EAAEG,GAAG,IAAIm3E,EAAEn3E,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQ4R,SAAQ,SAAS5R,GAAGH,EAAEG,GAAG,IAAIm3E,EAAEn3E,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAAS4R,SAAQ,SAAS5R,GAAGH,EAAEG,GAAG,IAAIm3E,EAAEn3E,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IAAG,IAAIm4W,EAAG,gBAAgB,SAASC,EAAG7wZ,GAAG,OAAOA,EAAE,GAAG07C,aAAa,CACxZ,0jCAA0jCzvC,MAAM,KAAK2F,SAAQ,SAAS5R,GAAG,IAAIqpB,EAAErpB,EAAEmQ,QAAQygZ,EACzmCC,GAAIhxZ,EAAEwpB,GAAG,IAAI8tD,EAAE9tD,EAAE,GAAE,EAAGrpB,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2EiM,MAAM,KAAK2F,SAAQ,SAAS5R,GAAG,IAAIqpB,EAAErpB,EAAEmQ,QAAQygZ,EAAGC,GAAIhxZ,EAAEwpB,GAAG,IAAI8tD,EAAE9tD,EAAE,GAAE,EAAGrpB,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAa4R,SAAQ,SAAS5R,GAAG,IAAIqpB,EAAErpB,EAAEmQ,QAAQygZ,EAAGC,GAAIhxZ,EAAEwpB,GAAG,IAAI8tD,EAAE9tD,EAAE,GAAE,EAAGrpB,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAe4R,SAAQ,SAAS5R,GAAGH,EAAEG,GAAG,IAAIm3E,EAAEn3E,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IACld54C,EAAEixZ,UAAU,IAAI35U,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAcvlE,SAAQ,SAAS5R,GAAGH,EAAEG,GAAG,IAAIm3E,EAAEn3E,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IAC5L,IAAIy9K,EAAE,CAAC66L,yBAAwB,EAAGC,aAAY,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGj6S,aAAY,EAAGp3C,SAAQ,EAAG80T,MAAK,EAAGlmB,UAAS,EAAG0iD,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAG7jC,UAAS,EAAGnlD,SAAQ,EAAGshD,YAAW,EAAG2nC,aAAY,EAAG5nC,cAAa,EAAG6nC,YAAW,EAAG9nC,eAAc,EAAG+nC,gBAAe,EAAGhoC,iBAAgB,EAAGlmX,YAAW,EAAGmuZ,WAAU,EAAG36S,YAAW,EAAG9+F,SAAQ,EAAGmkE,OAAM,EAAGu1U,SAAQ,EAAGr4B,SAAQ,EAAGs4B,QAAO,EAAGj1Z,QAAO,EAAGk1Z,MAAK,EACzfC,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGn4S,aAAY,GAAIo4S,EAAG,CAAC,SAAS,KAAK,MAAM,KAAK7sZ,OAAOC,KAAKqwN,GAAGtkN,SAAQ,SAAS5R,GAAGyyZ,EAAG7gZ,SAAQ,SAASyX,GAAGA,EAAEA,EAAErpB,EAAE0rD,OAAO,GAAGhQ,cAAc17C,EAAEgK,UAAU,GAAGksN,EAAE7sM,GAAG6sM,EAAEl2N,EAAE,GAAE,IAAG,IAAI0yZ,EAAG,UACnS,SAASviU,EAAEnwF,GAAG,GAAG,mBAAmBA,GAAG,kBAAkBA,EAAE,MAAM,GAAGA,EAAEA,EAAE,GAAGA,EAAE,IAAIqpB,EAAEqpY,EAAG10W,KAAKh+C,GAAG,GAAGqpB,EAAE,CAAC,IAASD,EAALpZ,EAAE,GAAKgjB,EAAE,EAAE,IAAI5J,EAAEC,EAAExR,MAAMuR,EAAEppB,EAAE8E,OAAOskB,IAAI,CAAC,OAAOppB,EAAE88C,WAAW1zB,IAAI,KAAK,GAAGC,EAAE,SAAS,MAAM,KAAK,GAAGA,EAAE,QAAQ,MAAM,KAAK,GAAGA,EAAE,SAAS,MAAM,KAAK,GAAGA,EAAE,OAAO,MAAM,KAAK,GAAGA,EAAE,OAAO,MAAM,QAAQ,SAAS2J,IAAI5J,IAAIpZ,GAAGhQ,EAAEgK,UAAUgpB,EAAE5J,IAAI4J,EAAE5J,EAAE,EAAEpZ,GAAGqZ,CAAC,CAACrpB,EAAEgzB,IAAI5J,EAAEpZ,EAAEhQ,EAAEgK,UAAUgpB,EAAE5J,GAAGpZ,CAAC,CAAC,OAAOhQ,CAAC,CAAC,IAAI2yZ,EAAG,WAAW/8S,EAAG,OAAOg9S,EAAG33Y,MAAMC,QAAQ,SAASstC,EAAExoD,EAAEqpB,GAAG,MAAM,CAACwpY,cAAc7yZ,EAAE+lB,cAAcsD,EAAE,CAC5F,IAAImsF,EAAG,IAAI28E,IACnZ,SAAS2gO,EAAG9yZ,EAAEqpB,EAAErZ,GAAG,GAAG,kBAAkBA,EAAE,MAAMsf,MAAMuqB,EAAE,KAAU,IAAI,IAAIzwB,KAAbC,GAAE,EAAgBrZ,EAAE,GAAGwZ,EAAEE,KAAK1Z,EAAEoZ,GAAG,CAAC,IAAI4J,EAAEhjB,EAAEoZ,GAAG,GAAG,MAAM4J,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,CAAC,GAAG,IAAI5J,EAAE8U,QAAQ,MAAM,CAAC,IAAIvhC,EAAEwzF,EAAE/mE,GAAG4J,EAAEm9D,GAAG,GAAGn9D,GAAG2pB,OAAO,KAAK,CAAChgD,EAAEysB,EAAE,IAAIkmE,EAAEkmB,EAAG9nF,IAAI/wB,QAAG,IAAS2yF,IAAOA,EAAEa,EAAExzF,EAAEwT,QAAQwiZ,EAAG,OAAOl6W,cAActoC,QAAQylG,EAAG,SAASJ,EAAG5gF,IAAIj4B,EAAE2yF,IAAxE3yF,EAAE2yF,EAA8Et8D,EAAE,kBAAkBA,EAAE,IAAIA,GAAGxJ,EAAEE,KAAKwsM,EAAE9sM,GAAG,GAAG4J,EAAEA,EAAE,KAAKm9D,GAAG,GAAGn9D,GAAG2pB,OAAO,CAACtzB,GAAGA,GAAE,EAAGrpB,EAAEikB,KAAK,WAAWtnB,EAAE,IAAIq2B,IAAIhzB,EAAEikB,KAAK,IAAItnB,EAAE,IAAIq2B,EAAE,CAAC,CAAC3J,GAAGrpB,EAAEikB,KAAK,IAAI,CAC7c,SAASmpD,EAAEptE,EAAEqpB,EAAErZ,EAAEoZ,GAAG,OAAOpZ,GAAG,IAAK,QAAkB,YAAV8iZ,EAAG9yZ,EAAEqpB,EAAED,GAAU,IAAK,eAAe,IAAK,iBAAiB,IAAK,YAAY,IAAK,iCAAiC,IAAK,2BAA2B,OAAO,KAAK,EAAEpZ,EAAElL,SAAS,MAAMkL,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,GAAG,GAAmC,QAAhCqZ,EAAExpB,EAAE4pB,eAAezZ,GAAGnQ,EAAEmQ,GAAG,MAAc,CAAC,cAAcoZ,GAAG,IAAK,WAAW,IAAK,SAAS,OAAO,IAAK,UAAU,IAAIC,EAAEknY,gBAAgB,OAAyB,OAAlBvgZ,EAAEqZ,EAAEm7K,cAAqBn7K,EAAE5sB,MAAM,KAAK,EAAE2sB,GAAGppB,EAAEikB,KAAK,IAAIjU,EAAE,OAAO,MAAM,KAAK,GAAE,IAAKoZ,EAAEppB,EAAEikB,KAAK,IAAIjU,EAAE,QACpf,IAAKoZ,GAAGppB,EAAEikB,KAAK,IAAIjU,EAAE,KAAKmgF,EAAE/mE,GAAG,KAAK,MAAM,KAAK,EAAE0tD,MAAM1tD,IAAIppB,EAAEikB,KAAK,IAAIjU,EAAE,KAAKmgF,EAAE/mE,GAAG,KAAK,MAAM,KAAK,GAAG0tD,MAAM1tD,IAAI,GAAGA,GAAGppB,EAAEikB,KAAK,IAAIjU,EAAE,KAAKmgF,EAAE/mE,GAAG,KAAK,MAAM,QAAQC,EAAEqnY,cAActnY,EAAE,GAAGA,GAAGppB,EAAEikB,KAAK,IAAIjU,EAAE,KAAKmgF,EAAE/mE,GAAG,KAAK,MAAM,GAAGknY,EAAGtgZ,GAAG,CAAC,cAAcoZ,GAAG,IAAK,WAAW,IAAK,SAAS,OAAO,IAAK,UAAU,GAAgC,WAA7BC,EAAErZ,EAAEyoC,cAAc5mC,MAAM,EAAE,KAAgB,UAAUwX,EAAE,OAAOrpB,EAAEikB,KAAK,IAAIjU,EAAE,KAAKmgF,EAAE/mE,GAAG,IAAI,CAAC,CACpY,SAASkqE,EAAEtzF,EAAEqpB,EAAErZ,GAAG,GAAG,MAAMqZ,EAAE,CAAC,GAAG,MAAMrZ,EAAE,MAAMsf,MAAMuqB,EAAE,KAAK,GAAG,kBAAkBxwB,KAAK,WAAWA,GAAG,MAAMiG,MAAMuqB,EAAE,KAAgB,QAAXxwB,EAAEA,EAAE1nB,cAAiB,IAAS0nB,GAAGrpB,EAAEikB,KAAK,GAAGoF,EAAE,CAAC,CACrK,SAAS0pY,EAAG/yZ,EAAEqpB,EAAErZ,EAAEoZ,GAAGppB,EAAEikB,KAAK+xH,EAAEhmI,IAAI,IAAarT,EAATq2B,EAAEhjB,EAAE,KAAO,IAAIrT,KAAK0sB,EAAE,GAAGG,EAAEE,KAAKL,EAAE1sB,GAAG,CAAC,IAAI2yF,EAAEjmE,EAAE1sB,GAAG,GAAG,MAAM2yF,EAAE,OAAO3yF,GAAG,IAAK,WAAWqT,EAAEs/E,EAAE,MAAM,IAAK,0BAA0Bt8D,EAAEs8D,EAAE,MAAM,QAAQliB,EAAEptE,EAAEopB,EAAEzsB,EAAE2yF,GAAG,CAAsB,OAArBtvF,EAAEikB,KAAK,KAAKqvE,EAAEtzF,EAAEgzB,EAAEhjB,GAAS,kBAAkBA,GAAGhQ,EAAEikB,KAAKksE,EAAEngF,IAAI,MAAMA,CAAC,CAAC,IAAIgjZ,EAAG,8BAA8BC,EAAG,IAAI9gO,IAAI,SAASn8C,EAAEh2I,GAAG,IAAIqpB,EAAE4pY,EAAGvlY,IAAI1tB,GAAG,QAAG,IAASqpB,EAAE,CAAC,IAAI2pY,EAAGtiY,KAAK1wB,GAAG,MAAMsvB,MAAMuqB,EAAE,GAAG75C,IAAIqpB,EAAE,IAAIrpB,EAAEizZ,EAAGr+X,IAAI50B,EAAEqpB,EAAE,CAAC,OAAOA,CAAC,CACra,SAAS6pY,EAAGlzZ,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,GAAG,OAAO3J,GAAG,IAAK,SAASrpB,EAAEikB,KAAK+xH,EAAE,WAAW,IAAIr5I,EAAE,KAAK2yF,EAAE,KAAK,IAAI5rF,KAAKsM,EAAE,GAAGwZ,EAAEE,KAAK1Z,EAAEtM,GAAG,CAAC,IAAIzC,EAAE+O,EAAEtM,GAAG,GAAG,MAAMzC,EAAE,OAAOyC,GAAG,IAAK,WAAW/G,EAAEsE,EAAE,MAAM,IAAK,0BAA0BquF,EAAEruF,EAAE,MAAM,IAAK,eAAe,IAAK,QAAQ,MAAM,QAAQmsE,EAAEptE,EAAEopB,EAAE1lB,EAAEzC,GAAG,CAAsB,OAArBjB,EAAEikB,KAAK,KAAKqvE,EAAEtzF,EAAEsvF,EAAE3yF,GAAUA,EAAE,IAAK,SAAS2yF,EAAEt8D,EAAEjN,cAAc/lB,EAAEikB,KAAK+xH,EAAE,WAAW,IAAI9iH,EAAEjyB,EAAE,KAAKw9C,EAAE,KAAS/6C,EAAE,KAAK,IAAI/G,KAAKqT,EAAE,GAAGwZ,EAAEE,KAAK1Z,EAAErT,GAAG,CAAC,IAAI8G,EAAEuM,EAAErT,GAAG,GAAG,MAAM8G,EAAE,OAAO9G,GAAG,IAAK,WAAWsE,EAAEwC,EAAE,MAAM,IAAK,WAAWg7C,EAAEh7C,EAAE,MAAM,IAAK,0BAA0BC,EAC7gBD,EAAE,MAAM,IAAK,QAAQyvB,EAAEzvB,EAAE,QAAQ2pE,EAAEptE,EAAEopB,EAAEzsB,EAAE8G,GAAG,CAAC,GAAG,MAAM6rF,EAAE,GAAGt/E,EAAE,OAAOkjB,EAAE,GAAGA,EAH6F,SAAYlzB,GAAG,IAAIqpB,EAAE,GAAuD,OAApD6mY,EAAG32K,SAAS3nO,QAAQ5R,GAAE,SAASA,GAAG,MAAMA,IAAIqpB,GAAGrpB,EAAE,IAAUqpB,CAAC,CAG/KioB,CAAGrwC,GAAG2xZ,EAAGtjU,IAAG,IAAIlmE,EAAE,EAAEA,EAAEkmE,EAAExqF,OAAOskB,IAAK,GAAG,GAAGkmE,EAAElmE,KAAKpZ,EAAE,CAAChQ,EAAEikB,KAAK,gBAAgB,KAAK,MAAM,GAAGqrE,IAAIt/E,GAAGhQ,EAAEikB,KAAK,qBAAqBw6B,GAAGz+C,EAAEikB,KAAK,gBAAqC,OAArBjkB,EAAEikB,KAAK,KAAKqvE,EAAEtzF,EAAE0D,EAAEzC,GAAUA,EAAE,IAAK,WAA4C,IAAIA,KAArCjB,EAAEikB,KAAK+xH,EAAE,aAAatyI,EAAE4rF,EAAE3yF,EAAE,KAAcqT,EAAE,GAAGwZ,EAAEE,KAAK1Z,EAAE/O,IAAY,OAAPiyB,EAAEljB,EAAE/O,IAAY,OAAOA,GAAG,IAAK,WAAWyC,EAAEwvB,EAAE,MAAM,IAAK,QAAQv2B,EAAEu2B,EAAE,MAAM,IAAK,eAAeo8D,EAAEp8D,EAAE,MAAM,IAAK,0BAA0B,MAAM5D,MAAMuqB,EAAE,KAAK,QAAQuzB,EAAEptE,EAAEopB,EACnfnoB,EAAEiyB,GAAyC,GAAtC,OAAOv2B,GAAG,OAAO2yF,IAAI3yF,EAAE2yF,GAAGtvF,EAAEikB,KAAK,KAAQ,MAAMvgB,EAAE,CAAC,GAAG,MAAM/G,EAAE,MAAM2yB,MAAMuqB,EAAE,KAAK,GAAG+4W,EAAGlvZ,IAAI,EAAEA,EAAEoB,OAAO,MAAMwqB,MAAMuqB,EAAE,KAAKl9C,EAAE,GAAG+G,CAAC,CAA0E,MAAzE,kBAAkB/G,GAAG,OAAOA,EAAE,IAAIqD,EAAEikB,KAAK,MAAM,OAAOtnB,GAAGqD,EAAEikB,KAAKksE,EAAE,GAAGxzF,IAAW,KAAK,IAAK,QAAwC,IAAI2yF,KAApCtvF,EAAEikB,KAAK+xH,EAAE,UAAU9iH,EAAExvB,EAAEzC,EAAEtE,EAAE,KAAcqT,EAAE,GAAGwZ,EAAEE,KAAK1Z,EAAEs/E,IAAY,OAAP7wC,EAAEzuC,EAAEs/E,IAAY,OAAOA,GAAG,IAAK,WAAW,IAAK,0BAA0B,MAAMhgE,MAAMuqB,EAAE,IAAI,UAAU,IAAK,iBAAiB3mB,EAAEurB,EAAE,MAAM,IAAK,eAAex9C,EAAEw9C,EAAE,MAAM,IAAK,UAAU/6C,EAAE+6C,EAAE,MAAM,IAAK,QAAQ9hD,EAAE8hD,EAAE,MAC/e,QAAQ2uB,EAAEptE,EAAEopB,EAAEkmE,EAAE7wC,GAA8H,OAA3H,OAAO/6C,EAAE0pE,EAAEptE,EAAEopB,EAAE,UAAU1lB,GAAG,OAAOwvB,GAAGk6C,EAAEptE,EAAEopB,EAAE,UAAU8J,GAAG,OAAOv2B,EAAEywE,EAAEptE,EAAEopB,EAAE,QAAQzsB,GAAG,OAAOsE,GAAGmsE,EAAEptE,EAAEopB,EAAE,QAAQnoB,GAAGjB,EAAEikB,KAAK,MAAa,KAAK,IAAK,WAAiC,IAAI,IAAIkvY,KAA9BnzZ,EAAEikB,KAAK+xH,EAAE,aAA0BhmI,EAAE,GAAGwZ,EAAEE,KAAK1Z,EAAEmjZ,IAAY,OAAPx2Z,EAAEqT,EAAEmjZ,IAAY,OAAOA,GAAG,IAAK,WAAW,IAAK,0BAA0B,MAAM7jY,MAAMuqB,EAAE,MAAM,QAAQuzB,EAAEptE,EAAEopB,EAAE+pY,EAAEx2Z,GAAe,OAAZqD,EAAEikB,KAAK,KAAY,KAAK,IAAK,QAAkC,IAAIxgB,KAA9BzD,EAAEikB,KAAK+xH,EAAE,UAAUr5I,EAAE,KAAcqT,EAAE,GAAGwZ,EAAEE,KAAK1Z,EAAEvM,IAAY,OAAP6rF,EAAEt/E,EAAEvM,IAAY,OAAOA,GAAG,IAAK,WAAW9G,EAAE2yF,EAAE,MAAM,IAAK,0BAA0B,MAAMhgE,MAAMuqB,EAAE,MAC5gB,QAAQuzB,EAAEptE,EAAEopB,EAAE3lB,EAAE6rF,GAAe,OAAZtvF,EAAEikB,KAAK,KAAYtnB,EAAE,IAAK,UAAU,IAAK,MAA4B,IAAIu2B,KAA1BlzB,EAAEikB,KAAK+xH,EAAE3sH,IAAIimE,EAAE3yF,EAAE,KAAcqT,EAAE,GAAGwZ,EAAEE,KAAK1Z,EAAEkjB,IAAY,OAAPjyB,EAAE+O,EAAEkjB,IAAY,OAAOA,GAAG,IAAK,WAAWv2B,EAAEsE,EAAE,MAAM,IAAK,0BAA0BquF,EAAEruF,EAAE,MAAM,QAAQmsE,EAAEptE,EAAEopB,EAAE8J,EAAEjyB,GAAe,GAAZjB,EAAEikB,KAAK,KAAQ,MAAMqrE,EAAE,CAAC,GAAG,MAAM3yF,EAAE,MAAM2yB,MAAMuqB,EAAE,KAAK,GAAG,kBAAkBy1C,KAAK,WAAWA,GAAG,MAAMhgE,MAAMuqB,EAAE,KAAgB,QAAX7pC,EAAEs/E,EAAE3tF,cAAiB,IAASqO,IAAI,kBAAkBA,GAAG,EAAEA,EAAElL,QAAQ,OAAOkL,EAAE,GAAGhQ,EAAEikB,KAAK,KAAKjU,GAAGhQ,EAAEikB,KAAK,GAAGjU,GAAG,CAAgD,MAA/C,kBAAkBrT,GAAG,OAAOA,EAAE,IAAIqD,EAAEikB,KAAK,MAAatnB,EACvf,IAAK,OAAO,IAAK,OAAO,IAAK,KAAK,IAAK,MAAM,IAAK,QAAQ,IAAK,KAAK,IAAK,MAAM,IAAK,SAAS,IAAK,OAAO,IAAK,OAAO,IAAK,QAAQ,IAAK,SAAS,IAAK,QAAQ,IAAK,MAAmB,IAAI,IAAIm5N,KAArB91N,EAAEikB,KAAK+xH,EAAE3sH,IAAiBrZ,EAAE,GAAGwZ,EAAEE,KAAK1Z,EAAE8lN,IAAY,OAAPn5N,EAAEqT,EAAE8lN,IAAY,OAAOA,GAAG,IAAK,WAAW,IAAK,0BAA0B,MAAMxmM,MAAMuqB,EAAE,IAAIxwB,IAAI,QAAQ+jD,EAAEptE,EAAEopB,EAAE0sM,EAAEn5N,GAAgB,OAAbqD,EAAEikB,KAAK,MAAa,KAAK,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAO8uY,EAAG/yZ,EACnhBgQ,EAAEqZ,EAAED,GAAG,IAAK,OAAO,OAAO,IAAI4J,EAAE6/X,eAAe7yZ,EAAEikB,KAAK,mBAAmB8uY,EAAG/yZ,EAAEgQ,EAAEqZ,EAAED,GAAG,QAAQ,IAAI,IAAIC,EAAE6U,QAAQ,MAAM,kBAAkBluB,EAAE8vL,GAAG,OAAOizN,EAAG/yZ,EAAEgQ,EAAEqZ,EAAED,GAAyB,IAAIq1B,KAA1Bz+C,EAAEikB,KAAK+xH,EAAE3sH,IAAIimE,EAAE3yF,EAAE,KAAcqT,EAAE,GAAGwZ,EAAEE,KAAK1Z,EAAEyuC,IAAY,OAAPx9C,EAAE+O,EAAEyuC,IAAY,OAAOA,GAAG,IAAK,WAAW9hD,EAAEsE,EAAE,MAAM,IAAK,0BAA0BquF,EAAEruF,EAAE,MAAM,IAAK,QAAQ6xZ,EAAG9yZ,EAAEopB,EAAEnoB,GAAG,MAAM,IAAK,iCAAiC,IAAK,2BAA2B,MAAM,QAAQqvZ,EAAG7xW,IAAI,oBAAoBx9C,GAAG,kBAAkBA,GAAGjB,EAAEikB,KAAK,IAAIw6B,EAAE,KAAK0xC,EAAElvF,GAAG,KAChe,OADqejB,EAAEikB,KAAK,KACrfqvE,EAAEtzF,EAAEsvF,EAAE3yF,GAAUA,EAAE,CAAC,SAAS+4G,EAAG11G,EAAEqpB,EAAErZ,GAA2C,GAAxChQ,EAAEikB,KAAK,iCAAoC,OAAOjU,EAAE,MAAMsf,MAAMuqB,EAAE,MAAgB,OAAV75C,EAAEikB,KAAKjU,GAAUhQ,EAAEikB,KAAK,gBAAgB,CAGkL,IAAImvY,EAAG,mBAC/U,SAASC,EAAGrzZ,GAAG,OAAO2hD,KAAKC,UAAU5hD,GAAGmQ,QAAQijZ,GAAG,SAASpzZ,GAAG,OAAOA,GAAG,IAAK,IAAI,MAAM,UAAU,IAAK,SAAS,MAAM,UAAU,IAAK,SAAS,MAAM,UAAU,QAAQ,MAAMsvB,MAAM,qMAAsM,GAAE,CAC7E,SAASgkY,EAAGtzZ,EAAEqpB,EAAErZ,EAAEoZ,GAAG,OAAGpZ,EAAEujZ,sBAA4BvzZ,EAAEikB,KAAKksE,EAAE9mE,KAAI,IAAG,KAAKA,EAAErpB,EAAEopB,GAAGA,GAAGppB,EAAEikB,KAAK,kBAAkBjkB,EAAEikB,KAAKksE,EAAE9mE,IAAIrpB,GAAE,GAAWA,EAAC,CACtb,IAAIwzZ,EAAE5tZ,OAAO2mB,OAAOknY,EAAGr6W,OAAO03V,IAAI,iBAAiB4iB,EAAGt6W,OAAO03V,IAAI,gBAAgB6iB,EAAGv6W,OAAO03V,IAAI,kBAAkB8iB,EAAGx6W,OAAO03V,IAAI,qBAAqB+iB,EAAGz6W,OAAO03V,IAAI,kBAAkBgjB,EAAG16W,OAAO03V,IAAI,kBAAkBijB,EAAG36W,OAAO03V,IAAI,iBAAiBkjB,EAAG56W,OAAO03V,IAAI,qBAAqBmjB,EAAG76W,OAAO03V,IAAI,kBAAkBojB,EAAG96W,OAAO03V,IAAI,uBAAuBqjB,EAAG/6W,OAAO03V,IAAI,cAAcsjB,EAAGh7W,OAAO03V,IAAI,cAAcujB,EAAGj7W,OAAO03V,IAAI,eAAewjB,EAAGl7W,OAAO03V,IAAI,0BAA0ByjB,EAAGn7W,OAAO03V,IAAI,uBACte0jB,EAAGp7W,OAAO03V,IAAI,uBAAuB2jB,EAAGr7W,OAAOE,SAC/C,SAASo7W,EAAG10Z,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAE+8B,aAAa/8B,EAAEjH,MAAM,KAAK,GAAG,kBAAkBiH,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK2zZ,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKG,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkBl0Z,EAAE,OAAOA,EAAEy0P,UAAU,KAAKs/J,EAAG,OAAO/zZ,EAAE+8B,aAAa,WAAW,YAAY,KAAK+2X,EAAG,OAAO9zZ,EAAEq3I,SAASt6G,aAAa,WAAW,YAAY,KAAKi3X,EAAG,IAAI3qY,EAAErpB,EAAEhI,OAC7Z,OADoagI,EAAEA,EAAE+8B,eACnd/8B,EAAE,MADieA,EAAEqpB,EAAE0T,aAClf1T,EAAEtwB,MAAM,IAAY,cAAciH,EAAE,IAAI,cAAqBA,EAAE,KAAKm0Z,EAAG,OAA6B,QAAtB9qY,EAAErpB,EAAE+8B,aAAa,MAAc1T,EAAEqrY,EAAG10Z,EAAEvD,OAAO,OAAO,KAAK23Z,EAAG/qY,EAAErpB,EAAE20Z,SAAS30Z,EAAEA,EAAE40Z,MAAM,IAAI,OAAOF,EAAG10Z,EAAEqpB,GAAG,CAAC,MAAMrZ,GAAG,EAAE,OAAO,IAAI,CAAC,IAAI6kZ,GAAG,CAAC,EAAE,SAASC,GAAG90Z,EAAEqpB,GAAoB,KAAjBrpB,EAAEA,EAAEisZ,cAAmB,OAAO4I,GAAG,IAASzrY,EAALpZ,EAAE,CAAC,EAAI,IAAIoZ,KAAKppB,EAAEgQ,EAAEoZ,GAAGC,EAAED,GAAG,OAAOpZ,CAAC,CAAC,IAAI4mN,GAAE,KACvT,SAASZ,GAAEh2N,EAAEqpB,GAAG,GAAGrpB,IAAIqpB,EAAE,CAACrpB,EAAEw6C,QAAQu6W,eAAe/0Z,EAAEg1Z,YAAYh1Z,EAAEA,EAAEw9I,OAAO,IAAIxtI,EAAEqZ,EAAEm0H,OAAO,GAAG,OAAOx9I,GAAG,GAAG,OAAOgQ,EAAE,MAAMsf,MAAMuqB,EAAE,UAAW,CAAC,GAAG,OAAO7pC,EAAE,MAAMsf,MAAMuqB,EAAE,MAAMm8K,GAAEh2N,EAAEgQ,EAAE,CAACqZ,EAAEmxB,QAAQu6W,eAAe1rY,EAAE3gB,KAAK,CAAC,CAAC,SAASusZ,GAAGj1Z,GAAGA,EAAEw6C,QAAQu6W,eAAe/0Z,EAAEg1Z,YAAuB,QAAXh1Z,EAAEA,EAAEw9I,SAAiBy3Q,GAAGj1Z,EAAE,CAAC,SAASk1Z,GAAGl1Z,GAAG,IAAIqpB,EAAErpB,EAAEw9I,OAAO,OAAOn0H,GAAG6rY,GAAG7rY,GAAGrpB,EAAEw6C,QAAQu6W,eAAe/0Z,EAAE0I,KAAK,CACtX,SAASymG,GAAGnvG,EAAEqpB,GAAqD,GAAlDrpB,EAAEw6C,QAAQu6W,eAAe/0Z,EAAEg1Z,YAA0B,QAAdh1Z,EAAEA,EAAEw9I,QAAmB,MAAMluH,MAAMuqB,EAAE,MAAM75C,EAAE65H,QAAQxwG,EAAEwwG,MAAMm8F,GAAEh2N,EAAEqpB,GAAG8lF,GAAGnvG,EAAEqpB,EAAE,CAAC,SAASylD,GAAG9uE,EAAEqpB,GAAG,IAAIrZ,EAAEqZ,EAAEm0H,OAAO,GAAG,OAAOxtI,EAAE,MAAMsf,MAAMuqB,EAAE,MAAM75C,EAAE65H,QAAQ7pH,EAAE6pH,MAAMm8F,GAAEh2N,EAAEgQ,GAAG8+D,GAAG9uE,EAAEgQ,GAAGqZ,EAAEmxB,QAAQu6W,eAAe1rY,EAAE3gB,KAAK,CAAC,SAASwqI,GAAElzI,GAAG,IAAIqpB,EAAEutM,GAAEvtM,IAAIrpB,IAAI,OAAOqpB,EAAE6rY,GAAGl1Z,GAAG,OAAOA,EAAEi1Z,GAAG5rY,GAAGA,EAAEwwG,QAAQ75H,EAAE65H,MAAMm8F,GAAE3sM,EAAErpB,GAAGqpB,EAAEwwG,MAAM75H,EAAE65H,MAAM1qB,GAAG9lF,EAAErpB,GAAG8uE,GAAGzlD,EAAErpB,GAAG42N,GAAE52N,EAAE,CAC/X,IAAIm1Z,GAAG,CAACC,UAAU,WAAW,OAAM,CAAE,EAAEC,gBAAgB,SAASr1Z,EAAEqpB,GAAuB,QAApBrpB,EAAEA,EAAEs1Z,iBAAyBnyN,OAAOnjM,EAAEmjM,MAAMl/K,KAAKoF,EAAE,EAAEksY,oBAAoB,SAASv1Z,EAAEqpB,IAAGrpB,EAAEA,EAAEs1Z,iBAAkBnlZ,SAAQ,EAAGnQ,EAAEmjM,MAAM,CAAC95K,EAAE,EAAEmsY,mBAAmB,WAAW,GACxO,SAASC,GAAGz1Z,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAI4J,OAAE,IAAShzB,EAAEhK,MAAMgK,EAAEhK,MAAM,KAAKgK,EAAEmuL,QAAQgnO,GAAGn1Z,EAAEmB,MAAM6O,EAAEhQ,EAAEhK,MAAMg9B,EAAE,IAAIr2B,EAAE,CAACwmM,MAAM,GAAGhzL,SAAQ,GAAInQ,EAAEs1Z,gBAAgB34Z,EAAE,IAAI2yF,EAAEjmE,EAAEqtN,YAAmL,GAAvK12O,EAAEw6C,QAAQ,kBAAkB80C,GAAG,OAAOA,EAAEA,EAAEylU,eAAe3rY,EAA+B,oBAA7BkmE,EAAEjmE,EAAEkrN,4BAA0DvhN,EAAE,QAAXs8D,EAAEA,EAAEt/E,EAAEgjB,UAAe,IAASs8D,EAAEt8D,EAAEwgY,EAAE,CAAC,EAAExgY,EAAEs8D,GAAGtvF,EAAEhK,MAAMg9B,GAAM,oBAAoB3J,EAAEkrN,0BAA0B,oBAAoBv0O,EAAE0mU,0BAA0B,oBAAoB1mU,EAAE01Z,2BAA2B,oBAAoB11Z,EAAE21Z,oBAAoB,GAAGtsY,EACtgBrpB,EAAEhK,MAAM,oBAAoBgK,EAAE21Z,oBAAoB31Z,EAAE21Z,qBAAqB,oBAAoB31Z,EAAE01Z,2BAA2B11Z,EAAE01Z,4BAA4BrsY,IAAIrpB,EAAEhK,OAAOm/Z,GAAGI,oBAAoBv1Z,EAAEA,EAAEhK,MAAM,MAAM,OAAO2G,EAAEwmM,OAAO,EAAExmM,EAAEwmM,MAAMr+L,OAAO,GAAGukB,EAAE1sB,EAAEwmM,MAAM7zG,EAAE3yF,EAAEwT,QAAQxT,EAAEwmM,MAAM,KAAKxmM,EAAEwT,SAAQ,EAAGm/E,GAAG,IAAIjmE,EAAEvkB,OAAO9E,EAAEhK,MAAMqzB,EAAE,OAAO,CAAuB,IAAtB1sB,EAAE2yF,EAAEjmE,EAAE,GAAGrpB,EAAEhK,MAAMg9B,GAAE,EAAOs8D,EAAEA,EAAE,EAAE,EAAEA,EAAEjmE,EAAEvkB,OAAOwqF,IAAI,CAAC,IAAIruF,EAAEooB,EAAEimE,GAA6C,OAA1CruF,EAAE,oBAAoBA,EAAEA,EAAEyoB,KAAK1pB,EAAErD,EAAEqT,EAAEoZ,GAAGnoB,KAAY+xB,GAAGA,GAAE,EAAGr2B,EAAE62Z,EAAE,CAAC,EAAE72Z,EAAEsE,IAAIuyZ,EAAE72Z,EAAEsE,GAAG,CAACjB,EAAEhK,MAAM2G,CAAC,MAAMA,EAAEwmM,MAAM,IAAI,CAC3e,IAAIyyN,GAAG,CAACv/Z,GAAG,EAAEO,SAAS,IAAI,SAASi/Z,GAAG71Z,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEppB,EAAE3J,GAAG2J,EAAEA,EAAEpJ,SAAS,IAAIo8B,EAAE,GAAGykM,GAAEruM,GAAG,EAAEA,KAAK,GAAG4J,GAAGhjB,GAAG,EAAE,IAAIrT,EAAE,GAAG86N,GAAEpuM,GAAG2J,EAAE,GAAG,GAAGr2B,EAAE,CAAC,IAAI2yF,EAAEt8D,EAAEA,EAAE,EAAyC,OAAvCr2B,GAAGysB,GAAG,GAAGkmE,GAAG,GAAGn3C,SAAS,IAAI/uB,IAAIkmE,EAAEt8D,GAAGs8D,EAAQ,CAACj5F,GAAG,GAAG,GAAGohO,GAAEpuM,GAAG2J,EAAEhjB,GAAGgjB,EAAE5J,EAAExyB,SAAS+F,EAAEqD,EAAE,CAAC,MAAM,CAAC3J,GAAG,GAAGsG,EAAEqT,GAAGgjB,EAAE5J,EAAExyB,SAASoJ,EAAE,CAAC,IAAIy3N,GAAE1/M,KAAK+9Y,MAAM/9Y,KAAK+9Y,MAAiC,SAAY91Z,GAAU,OAAO,KAAdA,KAAK,GAAe,GAAG,IAAI+1Z,GAAG/1Z,GAAGg2Z,GAAG,GAAG,CAAC,EAA/ED,GAAGh+Y,KAAKhgB,IAAIi+Z,GAAGj+Y,KAAKymG,IAClT,IAAIy3S,GAAG,oBAAoBrwZ,OAAOk6L,GAAGl6L,OAAOk6L,GADkU,SAAY9/L,EAAEqpB,GAAG,OAAOrpB,IAAIqpB,IAAI,IAAIrpB,GAAG,EAAEA,IAAI,EAAEqpB,IAAIrpB,IAAIA,GAAGqpB,IAAIA,CAAC,EAC3XiqH,GAAE,KAAK4iR,GAAG,KAAKC,GAAE,KAAK/pL,GAAE,KAAKD,IAAE,EAAGpW,IAAE,EAAGtkF,GAAE,EAAE2kR,GAAE,KAAK32D,GAAE,EAAE,SAASn/M,KAAI,GAAG,OAAOhN,GAAE,MAAMhkH,MAAMuqB,EAAE,MAAM,OAAOy5F,EAAC,CAAC,SAAShkC,KAAK,GAAG,EAAEmwP,GAAE,MAAMnwU,MAAMuqB,EAAE,MAAM,MAAM,CAACw8W,cAAc,KAAKlzN,MAAM,KAAKryK,KAAK,KAAK,CAAC,SAASwlY,KAAqG,OAAhG,OAAOlqL,GAAE,OAAO+pL,IAAGhqL,IAAE,EAAGgqL,GAAE/pL,GAAE98H,OAAO68H,IAAE,EAAGC,GAAE+pL,IAAG,OAAO/pL,GAAEt7M,MAAMq7M,IAAE,EAAGC,GAAEA,GAAEt7M,KAAKw+E,OAAO68H,IAAE,EAAGC,GAAEA,GAAEt7M,MAAas7M,EAAC,CAAC,SAASmqL,KAAKL,GAAG5iR,GAAE,KAAKyiF,IAAE,EAAGogM,GAAE,KAAK12D,GAAE,EAAErzH,GAAEgqL,GAAE,IAAI,CAAC,SAAS3gT,GAAGz1G,EAAEqpB,GAAG,MAAM,oBAAoBA,EAAEA,EAAErpB,GAAGqpB,CAAC,CACld,SAASmtY,GAAGx2Z,EAAEqpB,EAAErZ,GAAgB,GAAbsjI,GAAEgN,KAAI8rF,GAAEkqL,KAAQnqL,GAAE,CAAC,IAAI/iN,EAAEgjN,GAAEjpC,MAAmB,GAAb95K,EAAED,EAAE63C,SAAY,OAAOm1V,SAAe,KAAXpmZ,EAAEomZ,GAAE1oY,IAAItE,IAAe,CAACgtY,GAAE1+W,OAAOtuB,GAAGA,EAAEgjN,GAAEiqL,cAAc,GAAGjtY,EAAEppB,EAAEopB,EAAEpZ,EAAEsF,QAAQtF,EAAEA,EAAE8gB,WAAW,OAAO9gB,GAAqB,OAAlBo8N,GAAEiqL,cAAcjtY,EAAQ,CAACA,EAAEC,EAAE,CAAC,MAAM,CAAC+iN,GAAEiqL,cAAchtY,EAAE,CAA6I,OAA5IrpB,EAAEA,IAAIy1G,GAAG,oBAAoBpsF,EAAEA,IAAIA,OAAE,IAASrZ,EAAEA,EAAEqZ,GAAGA,EAAE+iN,GAAEiqL,cAAcr2Z,EAAsCA,GAApCA,EAAEosO,GAAEjpC,MAAM,CAAC58K,KAAK,KAAK06C,SAAS,OAAUA,SAASw1V,GAAG3kY,KAAK,KAAKwhH,GAAEtzI,GAAS,CAACosO,GAAEiqL,cAAcr2Z,EAAE,CAC9Y,SAAS02Z,GAAG12Z,EAAEqpB,GAAoC,GAAjCiqH,GAAEgN,KAAWj3H,OAAE,IAASA,EAAE,KAAKA,EAAK,QAA9B+iN,GAAEkqL,MAAqC,CAAC,IAAItmZ,EAAEo8N,GAAEiqL,cAAc,GAAG,OAAOrmZ,GAAG,OAAOqZ,EAAE,CAAC,IAAID,EAAEpZ,EAAE,GAAGhQ,EAAE,GAAG,OAAOopB,EAAEA,GAAE,MAAO,CAAC,IAAI,IAAI4J,EAAE,EAAEA,EAAE5J,EAAEtkB,QAAQkuB,EAAE3J,EAAEvkB,OAAOkuB,IAAI,IAAIijY,GAAG5sY,EAAE2J,GAAG5J,EAAE4J,IAAI,CAAC5J,GAAE,EAAG,MAAMppB,CAAC,CAACopB,GAAE,CAAE,CAAC,GAAGA,EAAE,OAAOpZ,EAAE,EAAE,CAAC,CAA6B,OAA5BhQ,EAAEA,IAAIosO,GAAEiqL,cAAc,CAACr2Z,EAAEqpB,GAAUrpB,CAAC,CAAC,SAASy2Z,GAAGz2Z,EAAEqpB,EAAErZ,GAAG,GAAG,IAAIyvV,GAAE,MAAMnwU,MAAMuqB,EAAE,MAAM,GAAG75C,IAAIszI,GAAE,GAAGyiF,IAAE,EAAG/1N,EAAE,CAACsV,OAAOtF,EAAE8gB,KAAK,MAAM,OAAOslY,KAAIA,GAAE,IAAIjkO,UAAgB,KAAXniL,EAAEomZ,GAAE1oY,IAAIrE,IAAc+sY,GAAExhY,IAAIvL,EAAErpB,OAAO,CAAC,IAAIqpB,EAAErZ,EAAE,OAAOqZ,EAAEyH,MAAMzH,EAAEA,EAAEyH,KAAKzH,EAAEyH,KAAK9wB,CAAC,CAAC,CAAC,SAAS4tG,KAAK,MAAMt+E,MAAMuqB,EAAE,KAAM,CAClf,SAAS88W,KAAI,CACb,IAAIC,GAAG,CAACC,YAAY,SAAS72Z,GAAG,OAAOA,EAAE+0Z,cAAc,EAAE+B,WAAW,SAAS92Z,GAAO,OAAJsgJ,KAAWtgJ,EAAE+0Z,cAAc,EAAE9oV,QAAQyqV,GAAGK,WAAWP,GAAGn0Z,OAAO,SAASrC,GAAGszI,GAAEgN,KAAW,IAAIj3H,GAAX+iN,GAAEkqL,MAAaD,cAAc,OAAO,OAAOhtY,GAAGrpB,EAAE,CAAC1I,QAAQ0I,GAAGosO,GAAEiqL,cAAcr2Z,GAAGqpB,CAAC,EAAEtuB,SAAS,SAASiF,GAAG,OAAOw2Z,GAAG/gT,GAAGz1G,EAAE,EAAEg3Z,mBAAmBL,GAAE1pV,gBAAgB,WAAW,EAAEv1D,YAAY,SAAS1X,EAAEqpB,GAAG,OAAOqtY,IAAG,WAAW,OAAO12Z,CAAC,GAAEqpB,EAAE,EAAE4tY,oBAAoBN,GAAEz6Z,UAAUy6Z,GAAExkV,cAAcwkV,GAAEO,iBAAiB,SAASl3Z,GAAO,OAAJsgJ,KAAWtgJ,CAAC,EAAEm3Z,cAAc,WAAe,OAAJ72Q,KAAU,EAAC,EACvgB1yC,GAAG,EAAEwpT,MAAM,WAAW,IAAIp3Z,EAAEk2Z,GAAGmB,YAAgBhuY,EAAErpB,EAAEpJ,SAAgBoJ,IAAPA,EAAEA,EAAE3J,MAAU,GAAG,GAAGohO,GAAEz3N,GAAG,IAAIm4C,SAAS,IAAI9uB,EAAE,IAAIrZ,EAAE25H,GAAE,GAAG,OAAO35H,EAAE,MAAMsf,MAAMuqB,EAAE,MAAgE,OAA1DxwB,EAAEooH,KAAIzxI,EAAE,IAAIgQ,EAAE0yP,SAAS,IAAI1iQ,EAAE,EAAEqpB,IAAIrpB,GAAG,IAAIqpB,EAAE8uB,SAAS,KAAYn4C,EAAE,GAAG,EAAEs3Z,iBAAiB,SAASt3Z,EAAEqpB,GAAO,OAAJi3H,KAAWj3H,EAAErpB,EAAEu3Z,QAAQ,EAAEC,qBAAqB,SAASx3Z,EAAEqpB,EAAErZ,GAAG,QAAG,IAASA,EAAE,MAAMsf,MAAMuqB,EAAE,MAAM,OAAO7pC,GAAG,GAAG25H,GAAE,KAAK8tR,GAAGvH,EAAGwH,mDAAmDC,uBAAuB,SAAShiT,GAAG31G,GAAoB,OAAjBlI,QAAQD,MAAMmI,GAAU,IAAI,CACte,SAASi2N,KAAI,CAEuC,SAAS2hM,GAAG53Z,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,EAAEr2B,EAAE2yF,EAAEruF,GAAGjB,EAAE63Z,kBAAkB,OAAO7nZ,EAAEhQ,EAAE83Z,mBAAmB9nZ,EAAE+nZ,eAAe,IAAI7kY,EAAE,CAAC4vE,KAAKz5E,EAAE2uY,KAAK,WAAW,IAAI3uY,EAAErpB,EAAEi4Z,YAAY5uY,EAAEpF,KAAKiP,GAAG,IAAI7J,EAAEvkB,QAAQozZ,GAAGl4Z,EAAE,EAAEm4Z,gBAAgBnoZ,EAAEooZ,eAAehvY,EAAEivY,SAASrlY,EAAEslY,cAAc37Z,EAAE69C,QAAQ80C,EAAE+nU,YAAYp2Z,GAAY,OAAT+xB,EAAE0N,IAAIxN,GAAUA,CAAC,CAAC,SAASqlY,GAAEv4Z,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,EAAEr2B,GAAG,MAAM,CAACkN,OAAO,EAAExT,IAAI,EAAEwhB,MAAMwR,EAAEmvY,eAAc,EAAG5sS,OAAO,GAAGl1H,SAAS,GAAG+ha,cAAcrvY,EAAEsvY,SAAS1oZ,EAAE2oZ,eAAe3lY,EAAE4lY,aAAaj8Z,EAAE,CACte,SAASk8Z,GAAE74Z,EAAEqpB,GAAkB,GAAG,OAAlBrpB,EAAEA,EAAE+1V,QAAQ1sU,KAAe,kBAAkBrpB,EAAE,MAAMsvB,MAAM,wMAAwMtvB,EAAE,aAAa,OAAOA,CAAC,CAAC,SAASwwI,GAAExwI,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAE84Z,aAAa9oZ,EAAEqZ,IAAGrZ,EAAEhQ,EAAE+4Z,cAAe1vY,GAAG,OAAOrpB,EAAEg5Z,aAAah5Z,EAAE6J,OAAO,EAAE7J,EAAEg5Z,YAAYluO,QAAQzhK,KAAKrpB,EAAE6J,OAAO,EAAE7J,EAAEi5Z,WAAW5vY,EAAE,CACjc,SAAS6vY,GAAGl5Z,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,GAAiB,IAAdsgH,GAAE,CAAC,EAAE4iR,GAAG7sY,EAAEooH,GAAE,EAAMzxI,EAAEgQ,EAAEoZ,EAAE4J,GAAG+iM,IAAGA,IAAE,EAAGtkF,GAAE,EAAEguN,IAAG,EAAErzH,GAAE,KAAKpsO,EAAEgQ,EAAEoZ,EAAE4J,GAAQ,OAALujY,KAAYv2Z,CAAC,CAAC,SAASm5Z,GAAGn5Z,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAI4J,EAAEhjB,EAAEhY,SAAS2E,EAAEysB,EAAE4iY,kBAAkB,GAAG,OAAOrvZ,QAAG,IAASA,EAAE,CAAC,IAAI2yF,EAAEjmE,EAAEivY,cAAc,GAAG,oBAAoBtoZ,EAAEopZ,gBAAgBhwY,EAAEkmE,MAAM,CAAuB,IAAI,IAAIruF,KAA9B+O,EAAEA,EAAEopZ,kBAAiC,KAAKn4Z,KAAKtE,GAAG,MAAM2yB,MAAMuqB,EAAE,IAAI66W,EAAGtrY,IAAI,UAAUnoB,IAAImoB,EAAEoqY,EAAE,CAAC,EAAElkU,EAAEt/E,EAAE,CAACqZ,EAAEivY,cAAclvY,EAAEw5H,GAAE5iJ,EAAEqpB,EAAE2J,GAAG3J,EAAEivY,cAAchpU,CAAC,MAAMszD,GAAE5iJ,EAAEqpB,EAAE2J,EAAE,CAC7Z,SAASqmY,GAAGr5Z,EAAEqpB,GAAG,GAAGrpB,GAAGA,EAAEssB,aAAa,CAA4B,IAAI,IAAItc,KAAnCqZ,EAAEmqY,EAAE,CAAC,EAAEnqY,GAAGrpB,EAAEA,EAAEssB,kBAA4B,IAASjD,EAAErZ,KAAKqZ,EAAErZ,GAAGhQ,EAAEgQ,IAAI,OAAOqZ,CAAC,CAAC,OAAOA,CAAC,CAC7H,SAASiwY,GAAGt5Z,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,GAAG,GAAG,oBAAoBhjB,EAAE,GAAGA,EAAEmT,WAAWnT,EAAEmT,UAAUoxO,iBAAiB,CAACvhO,EAAE8hY,GAAG9kZ,EAAEqZ,EAAEivY,eAAe,IAAI37Z,EAAEqT,EAAE0mO,YAAwE++K,GAA5D94Z,EAAE,IAAIqT,EAAEoZ,EAAE,kBAAkBzsB,GAAG,OAAOA,EAAEA,EAAEo4Z,eAAe/hY,GAAQhjB,EAAEoZ,EAAE4J,GAAGmmY,GAAGn5Z,EAAEqpB,EAAE1sB,EAAEqT,EAAE,KAAK,CAAyBgjB,EAAEkmY,GAAGl5Z,EAAEqpB,EAAErZ,EAAEoZ,EAAnCzsB,EAAEm4Z,GAAG9kZ,EAAEqZ,EAAEivY,gBAA+B,IAAIhpU,EAAE,IAAImiD,GAAE,GAAG,kBAAkBz+G,GAAG,OAAOA,GAAG,oBAAoBA,EAAEh7B,aAAQ,IAASg7B,EAAEyhO,SAASghK,GAAGziY,EAAEhjB,EAAEoZ,EAAEzsB,GAAGw8Z,GAAGn5Z,EAAEqpB,EAAE2J,EAAEhjB,QAAQ,GAAGs/E,EAAE,CAAClmE,EAAEC,EAAEguY,YAAYhuY,EAAEguY,YAAYxB,GAAGzsY,EAAE,EAAE,GAAG,IAAIw5H,GAAE5iJ,EAAEqpB,EAAE2J,EAAE,CAAC,QAAQ3J,EAAEguY,YAAYjuY,CAAC,CAAC,MAAMw5H,GAAE5iJ,EAAEqpB,EAAE2J,EAAE,KAAM,IAAG,kBAC3ehjB,EAAoa,CAAC,OAAOA,GAAG,KAAKukZ,EAAG,KAAKD,EAAG,KAAKV,EAAG,KAAKC,EAAG,KAAKF,EAC3d,KAAKO,EAAqB,YAAlBtxQ,GAAE5iJ,EAAEqpB,EAAED,EAAE1yB,UAAiB,KAAK29Z,EAAG,MAAM/kY,MAAMuqB,EAAE,MAAM,KAAKo6W,EAAGj0Z,EAAE,CAACgQ,EAAEqZ,EAAE8uY,gBAAgBnlY,EAAE3J,EAAE+uY,eAAez7Z,EAAEysB,EAAEmwY,SAASnwY,EAAEA,EAAE1yB,SAAmB,IAAIuK,EAAE,CAAC5K,GAAG,KAAKmja,eAAe,EAAEhB,eAAc,EAAGT,aAAa,EAAE0B,mBAAkB,EAAGC,kBAAkB,GAAGC,SAAS,EAAEC,uBAA/HtqU,EAAE,IAAIw0G,IAAkJ+1N,YAAY,MAAM3mY,EAAEqlY,GAAEv4Z,EAAEgzB,EAAE44F,OAAO9mH,OAAO7D,EAAE+xB,EAAEylY,eAAc,GAAG,GAAIzlY,EAAEt8B,SAASutB,KAAKiP,GAAGF,EAAE2lY,gBAAe,EAAG,IAAIl6W,EAAE85W,GAAEv4Z,EAAE,EAAE,KAAKgzB,EAAEylY,eAAc,GAAG,GAAIh6W,EAAE+5W,eAAc,EAAGnvY,EAAE8uY,gBAAgBl3Z,EAAEooB,EAAE+uY,eAAe35W,EAAE,IAAI,GAAGq7W,GAAG95Z,EACrfqpB,EAAED,GAAGppB,EAAE+5Z,cAAcxG,sBAAsB90W,EAAEk6W,gBAAgBl6W,EAAEm6W,cAAcn6W,EAAEmtE,OAAO3nG,KAAK,kBAAkBw6B,EAAE50C,OAAO,EAAEg5I,GAAE5hJ,EAAEw9C,GAAG,IAAIx9C,EAAE82Z,aAAa,MAAM/3Z,CAAC,CAAC,MAAM0D,GAAG+6C,EAAE50C,OAAO,EAAE5I,EAAEw4Z,mBAAkB,EAAGx4Z,EAAE44Z,YAAYhB,GAAE74Z,EAAE0D,EAAE,CAAC,QAAQ2lB,EAAE8uY,gBAAgBnoZ,EAAEqZ,EAAE+uY,eAAeplY,CAAC,CAAC3J,EAAEuuY,GAAG53Z,EAAErD,EAAEqT,EAAEkjB,EAAEo8D,EAAEjmE,EAAEivY,cAAcjvY,EAAEmxB,QAAQnxB,EAAEguY,aAAar3Z,EAAEi4Z,YAAYh0Y,KAAKoF,EAAE,CAAC,OAAO,GAAG,kBAAkBrZ,GAAG,OAAOA,EAAE,OAAOA,EAAEykP,UAAU,KAAKu/J,EAA0B,GAAvB5qY,EAAE8vY,GAAGl5Z,EAAEqpB,EAAErZ,EAAEhY,OAAOoxB,EAAE4J,GAAM,IAAIy+G,GAAE,CAACzhI,EAAEqZ,EAAEguY,YAAYhuY,EAAEguY,YAAYxB,GAAG7lZ,EAAE,EAAE,GAAG,IAAI4yI,GAAE5iJ,EAAEqpB,EAAED,EAAE,CAAC,QAAQC,EAAEguY,YAC1frnZ,CAAC,CAAC,MAAM4yI,GAAE5iJ,EAAEqpB,EAAED,GAAG,OAAO,KAAK+qY,EAAoC,YAAdmF,GAAGt5Z,EAAEqpB,EAAxBrZ,EAAEA,EAAEvT,KAAK2sB,EAAEiwY,GAAGrpZ,EAAEoZ,GAAc4J,GAAU,KAAK8gY,EAAoL,GAAjL9gY,EAAE5J,EAAE1yB,SAASsZ,EAAEA,EAAEqnI,SAASjuH,EAAEA,EAAE1gB,MAAM/L,EAAEqT,EAAE+kZ,eAAe/kZ,EAAE+kZ,eAAe3rY,EAAMwtM,GAAExtM,EAAE,CAACo0H,OAATluD,EAAEsnI,GAAgB/8F,MAAM,OAAOvqC,EAAE,EAAEA,EAAEuqC,MAAM,EAAEr/E,QAAQxqC,EAAEglZ,YAAYr4Z,EAAE+L,MAAM0gB,GAAGC,EAAEmxB,QAAQpxB,EAAEw5H,GAAE5iJ,EAAEqpB,EAAE2J,GAAU,QAAPhzB,EAAE42N,IAAc,MAAMtnM,MAAMuqB,EAAE,MAAyG,OAAnGzwB,EAAEppB,EAAEg1Z,YAAYh1Z,EAAEw6C,QAAQu6W,eAAe3rY,IAAIorY,EAAGx0Z,EAAEw6C,QAAQw/W,cAAc5wY,EAAEppB,EAAE42N,GAAE52N,EAAEw9I,YAAOn0H,EAAEmxB,QAAQx6C,GAAS,KAAK+zZ,EAA+C,YAATnxQ,GAAE5iJ,EAAEqpB,EAA1BD,GAAbA,EAAEA,EAAE1yB,UAAasZ,EAAE+kZ,iBAAgC,KAAKX,EAC7b,YADoekF,GAAGt5Z,EACrfqpB,EADwdrZ,GAAVgjB,EAAEhjB,EAAE4kZ,OAAU5kZ,EAAE2kZ,UAAUvrY,EAAEiwY,GAAGrpZ,EAAEoZ,QACze,GAAe,MAAMkG,MAAMuqB,EAAE,IAAI,MAAM7pC,EAAEA,SAASA,EAAE,IAAK,CAJ6G,OAA/IrT,EAAEu2Z,GAArBlgY,EAAE3J,EAAE+uY,gBAAsBxsS,OAAO57G,EAAEoZ,EAAEppB,EAAE+5Z,cAAc/mY,EAAEylY,eAAezlY,EAAE2lY,gBAAe,EAAGrpU,EAAEt8D,EAAEylY,cAAczlY,EAAEylY,cA1CxH,SAAYz4Z,EAAEqpB,EAAErZ,GAAG,OAAOqZ,GAAG,IAAK,SAAS,OAAOm/B,EAAE,EAAE,MAAMx4C,EAAEtH,MAAMsH,EAAEtH,MAAMsH,EAAExW,cAAc,IAAK,MAAM,OAAOgvD,EAAE,EAAE,MAAM,IAAK,OAAO,OAAOA,EAAE,EAAE,MAAM,IAAK,gBAAgB,OAAOA,EAAE,EAAE,MAAM,IAAK,QAAQ,OAAOA,EAAE,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAK,QAAQ,OAAOA,EAAE,EAAE,MAAM,IAAK,WAAW,OAAOA,EAAE,EAAE,MAAM,IAAK,KAAK,OAAOA,EAAE,EAAE,MAAM,OAAO,GAAGxoD,EAAE6yZ,eAAe,IAAI7yZ,EAAE6yZ,cAAcrqW,EAAE,EAAE,MAAMxoD,CAAC,CA0CjQi6Z,CAAG3qU,EAAEt/E,EAAEoZ,GAAG0wY,GAAG95Z,EAAEqpB,EAAE1sB,GAAGq2B,EAAEylY,cAAcnpU,EAASt/E,GAAG,IAAK,OAAO,IAAK,OAAO,IAAK,KAAK,IAAK,MAAM,IAAK,QAAQ,IAAK,KAAK,IAAK,MAAM,IAAK,QAAQ,IAAK,SAAS,IAAK,OAAO,IAAK,OAAO,IAAK,QAAQ,IAAK,SAAS,IAAK,QAAQ,IAAK,MAAM,MAAM,QAAQgjB,EAAE44F,OAAO3nG,KAAK,KAAKjU,EAAE,KAAKgjB,EAAE2lY,gBAAe,CAIrW,CAAC,CAChE,SAAS/1Q,GAAE5iJ,EAAEqpB,EAAErZ,GAAY,GAATqZ,EAAEy5E,KAAK9yF,EAAK,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEykP,UAAU,KAAKg/J,EAAgC,YAA7B6F,GAAGt5Z,EAAEqpB,EAAErZ,EAAEvT,KAAKuT,EAAE7O,MAAM6O,EAAEhZ,KAAY,KAAK08Z,EAAG,MAAMpkY,MAAMuqB,EAAE,MAAM,KAAKu6W,EAAG,IAAIhrY,EAAEpZ,EAAE4kZ,MAA+B,YAAThyQ,GAAE5iJ,EAAEqpB,EAApBrZ,EAAEoZ,EAAEpZ,EAAE2kZ,WAA0B,GAAG/B,EAAG5iZ,GAAc,YAAVkqZ,GAAGl6Z,EAAEqpB,EAAErZ,GAA6G,GAAnG,OAAOA,GAAG,kBAAkBA,EAAEoZ,EAAE,KAAmCA,EAAE,oBAA/BA,EAAEqrY,GAAIzkZ,EAAEykZ,IAAKzkZ,EAAE,eAAsCoZ,EAAE,KAASA,IAAIA,EAAEA,EAAEM,KAAK1Z,IAAI,CAAY,KAAXA,EAAEoZ,EAAE0H,QAAa8sB,KAAK,CAAC,IAAI5qB,EAAE,GAAG,GAAGA,EAAE/O,KAAKjU,EAAEtH,OAAOsH,EAAEoZ,EAAE0H,cAAc9gB,EAAE4tC,MAAMs8W,GAAGl6Z,EAAEqpB,EAAE2J,EAAE,CAAC,MAAM,CAAqC,MAApChzB,EAAE4F,OAAOud,UAAUg1B,SAASzuB,KAAK1Z,GAASsf,MAAMuqB,EAAE,GAAG,oBACpf75C,EAAE,qBAAqB4F,OAAOC,KAAKmK,GAAG6wC,KAAK,MAAM,IAAI7gD,GAAI,CAAC,kBAAkBgQ,GAAGoZ,EAAEC,EAAE+uY,gBAAiBO,eAAerF,EAAGjqY,EAAE+uY,eAAexsS,OAAO57G,EAAEhQ,EAAE+5Z,cAAc3wY,EAAEuvY,gBAAiB,kBAAkB3oZ,KAAIoZ,EAAEC,EAAE+uY,gBAAiBO,eAAerF,EAAGjqY,EAAE+uY,eAAexsS,OAAO,GAAG57G,EAAEhQ,EAAE+5Z,cAAc3wY,EAAEuvY,gBAAgB,CAAC,SAASuB,GAAGl6Z,EAAEqpB,EAAErZ,GAAG,IAAI,IAAIoZ,EAAEpZ,EAAElL,OAAOkuB,EAAE,EAAEA,EAAE5J,EAAE4J,IAAI,CAAC,IAAIr2B,EAAE0sB,EAAEguY,YAAYhuY,EAAEguY,YAAYxB,GAAGl5Z,EAAEysB,EAAE4J,GAAG,IAAI8mY,GAAG95Z,EAAEqpB,EAAErZ,EAAEgjB,GAAG,CAAC,QAAQ3J,EAAEguY,YAAY16Z,CAAC,CAAC,CAAC,CACzb,SAASm9Z,GAAG95Z,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEC,EAAE+uY,eAAeK,cAAczlY,EAAE3J,EAAEivY,cAAc37Z,EAAE0sB,EAAEmxB,QAAQ,IAAI,OAAOooG,GAAE5iJ,EAAEqpB,EAAErZ,EAAE,CAAC,MAAMkjB,GAAG,GAAGqjY,KAAK,kBAAkBrjY,GAAG,OAAOA,GAAG,oBAAoBA,EAAEx7B,KAAwT,MAAM2xB,EAAE+uY,eAAeK,cAC/frvY,EAAEC,EAAEivY,cAActlY,EAAE3J,EAAEmxB,QAAQ79C,EAAEu2I,GAAEv2I,GAAGu2B,EADiJljB,EAAEkjB,EAAE,IAAIo8D,EAAEjmE,EAAE+uY,eAAen3Z,EAAEs3Z,GAAEv4Z,EAAEsvF,EAAEs8B,OAAO9mH,OAAO,KAAKwqF,EAAEmpU,cAAcnpU,EAAEqpU,gBAAe,GAAIrpU,EAAE54F,SAASutB,KAAKhjB,GAAGquF,EAAEqpU,gBAAe,EAAG34Z,EAAE43Z,GAAG53Z,EAAEqpB,EAAEy5E,KAAKz5E,EAAE8uY,gBAAgBl3Z,EAAEooB,EAAEgvY,SAAShvY,EAAEivY,cAAcjvY,EAAEmxB,QAAQnxB,EAAEguY,aAAaW,KAAKhoZ,EAAEtY,KAAKsI,EAAEA,GAAGqpB,EAAE+uY,eAAeK,cAAcrvY,EAAEC,EAAEivY,cAActlY,EAAE3J,EAAEmxB,QAAQ79C,EAAEu2I,GAAEv2I,EACzb,CAAC,CAAC,SAASw9Z,GAAGn6Z,GAAG,IAAIqpB,EAAErpB,EAAEm4Z,iBAAgBn4Z,EAAEA,EAAEo4Z,gBAAiBvuZ,OAAO,EAAEuwZ,GAAGn3Y,KAAKoG,EAAErpB,EAAE,CAC1H,SAASq6Z,GAAGr6Z,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEppB,EAAEm4Z,gBAAgBn4Z,EAAEo4Z,eAAevuZ,OAAO,EAAE,OAAOuf,GAAGC,EAAEwuY,kBAAkB,IAAIxuY,EAAExf,SAASwf,EAAExf,OAAO,EAAE,OAAOwf,EAAE2vY,aAAa3vY,EAAE2vY,YAAY/0Y,KAAK,SAASmF,EAAE2uY,eAAe3uY,EAAEqwY,oBAAoBrwY,EAAEqwY,mBAAkB,EAAGz5Z,OAAE,IAASgQ,EAAEsf,MAAMuqB,EAAE,MAAM7pC,EAAEoZ,EAAEywY,YAAYxwY,EAAE0sU,QAAQ/1V,GAAGopB,EAAEovY,eAAenvY,EAAEixY,yBAAyBr2Y,KAAKmF,IAAIA,EAAEwwY,uBAAuBhoZ,SAAQ,SAAS5R,GAAG,OAAOq6Z,GAAGr6Z,EAAEqpB,EAAErZ,EAAE,IAAGoZ,EAAEwwY,uBAAuBp2W,QAAQn6B,EAAEwuY,kBAAkB,IAAIxuY,EAAEwuY,kBAAkBzuY,EAAEC,EAAEkxY,cACte,CAAC,SAAS13Q,GAAE7iJ,EAAEqpB,GAAG,GAAG,IAAIA,EAAEuiG,OAAO9mH,QAAQ,IAAIukB,EAAE3yB,SAASoO,QAAQ,OAAOukB,EAAE3yB,SAAS,GAAGgia,SAAS,CAAC,IAAI1oZ,EAAEqZ,EAAE3yB,SAAS,GAAGsZ,EAAE3Z,GAAGgzB,EAAEhzB,GAAG2Z,EAAEwoZ,eAAc,EAAG,IAAIxoZ,EAAEnG,QAAQg5I,GAAE7iJ,EAAEgQ,EAAE,MAAMhQ,EAAE05Z,kBAAkBz1Y,KAAKoF,EAAE,CAC1M,SAAS+wY,GAAGp6Z,EAAEqpB,EAAErZ,GAAG,GAAG,OAAOqZ,EAAE,CAAC,GAAGrZ,EAAEwoZ,cAAc,CAAC,GAAG,OAAOx4Z,EAAEw6Z,qBAAqB,MAAMlrY,MAAMuqB,EAAE,MAAM75C,EAAEw6Z,qBAAqBxqZ,CAAC,CAAChQ,EAAE83Z,mBAAmB,IAAI93Z,EAAE83Z,mBAAmB93Z,EAAE84Z,aAAa7iM,IAAE5sM,EAAErpB,EAAEy6Z,gBAAiB,MAAMpxY,EAAE0uY,eAAe1uY,EAAEowY,oBAAoB,IAAIpwY,EAAE0uY,cAAc/nZ,EAAEwoZ,eAAe,IAAIxoZ,EAAEnG,QAAQg5I,GAAEx5H,EAAErZ,GAAGqZ,EAAEmvY,eAAex4Z,EAAE06Z,oBAAoBz2Y,KAAKoF,GAAGA,EAAEuwY,uBAAuBhoZ,QAAQuoZ,GAAGn6Z,GAAGqpB,EAAEuwY,uBAAuBp2W,SAASxzC,EAAEwoZ,eAAe,IAAIxoZ,EAAEnG,SAASg5I,GAAEx5H,EAAErZ,GAAG,IAAIqZ,EAAEqwY,kBAAkB50Z,QACpfukB,EAAEmvY,eAAex4Z,EAAE26Z,kBAAkB12Y,KAAKoF,KAAKrpB,EAAE63Z,kBAAkB,IAAI73Z,EAAE63Z,kBAAkB73Z,EAAEA,EAAEu6Z,aAAe,CAC9G,SAASrC,GAAGl4Z,GAAG,GAAG,IAAIA,EAAE6J,OAAO,CAAC,IAAIwf,EAAEutM,GAAE5mN,EAAEynZ,GAAGnga,QAAQmga,GAAGnga,QAAQs/Z,GAAG,IAAIxtY,EAAEugH,GAAEA,GAAE3pI,EAAE+5Z,cAAc,IAAI,IAAoBp9Z,EAAhBq2B,EAAEhzB,EAAEi4Z,YAAc,IAAIt7Z,EAAE,EAAEA,EAAEq2B,EAAEluB,OAAOnI,IAAI,CAAC,IAAI2yF,EAAEt8D,EAAEr2B,GAAOsE,EAAEjB,EAAEkzB,EAAEo8D,EAAE8oU,eAAe,GAAG,IAAIllY,EAAErpB,OAAO,CAACqpI,GAAE5jD,EAAE90C,SAAS,IAAIooG,GAAE3hJ,EAAEquF,EAAEA,EAAEwT,MAAM7hG,EAAE84Z,cAAcxG,sBAAsBrgY,EAAEylY,gBAAgBzlY,EAAE0lY,cAAc1lY,EAAE04F,OAAO3nG,KAAK,kBAAkBqrE,EAAE+oU,SAAS3gX,OAAO43C,GAAGp8D,EAAErpB,OAAO,EAAEuwZ,GAAGn5Z,EAAEquF,EAAE6oU,gBAAgBjlY,EAAE,CAAC,MAAMm5M,GAAG,GAAGkqL,KAAK,kBAAkBlqL,GAAG,OAAOA,GAAG,oBAAoBA,EAAE30O,KAAK,CAAC,IAAI+mD,EAAE6wC,EAAE0oU,KAAK3rL,EAAE30O,KAAK+mD,EAAEA,EAAE,KAAK,CAAC6wC,EAAE+oU,SAAS3gX,OAAO43C,GACngBp8D,EAAErpB,OAAO,EAAE,IAAInG,EAAE4rF,EAAE6oU,gBAAgB10Z,EAAE4oO,EAAE8mL,EAAE0F,GAAE53Z,EAAEwC,GAA4K,GAAzK,OAAOC,EAAE8sI,GAAEvvI,EAAEwC,IAAIC,EAAEq0Z,eAAer0Z,EAAE+1Z,oBAAoB/1Z,EAAE+1Z,mBAAkB,EAAG/1Z,EAAEm2Z,YAAY1G,EAAEzvZ,EAAE80Z,eAAev3Z,EAAEq5Z,yBAAyBr2Y,KAAKvgB,KAAKzC,EAAE42Z,kBAAqB,IAAI52Z,EAAE42Z,iBAAoC/hM,EAAb70N,EAAEs5Z,aAAe,CAAC,CAAU,CAAC,CAACvnY,EAAEjM,OAAO,EAAEpqB,GAAG,OAAOqD,EAAEg5Z,aAAa4B,GAAG56Z,EAAEA,EAAEg5Z,YAAY,CAAC,MAAM3sL,GAAGwsL,GAAE74Z,EAAEqsO,GAAG77F,GAAExwI,EAAEqsO,EAAE,CAAC,QAAQ1iG,GAAEvgH,EAAEquY,GAAGnga,QAAQ0Y,EAAEA,IAAI4mZ,IAAI1jR,GAAE7pH,EAAE,CAAC,CAAC,CAC7Y,SAASijN,GAAEtsO,EAAEqpB,EAAErZ,GAAsB,OAAnBA,EAAEwoZ,eAAc,EAAUxoZ,EAAEnG,QAAQ,KAAK,EAAE,IAAIuf,EAAEpZ,EAAE3Z,GAAG2J,EAAE66Z,gBAAwJ,OAAxI7qZ,EAAE2oZ,gBAAe,EAAG3oZ,EAAE4oZ,cAAa,EAAG54Z,EAAEA,EAAE+5Z,cAAc1wY,EAAEpF,KAAK,kBAAkBoF,EAAEpF,KAAKjkB,EAAE86Z,mBAAmB96Z,EAAEopB,EAAE+uB,SAAS,IAAI9uB,EAAEpF,KAAKjkB,GAAUqpB,EAAEpF,KAAK,iBAAiB,KAAK,EAAEjU,EAAEnG,OAAO,EAAE,IAAImpB,GAAE,EAAG5J,EAAEpZ,EAAE47G,OAAO,IAAIjvH,EAAE,EAAEqT,EAAEA,EAAEtZ,SAAS,IAAI,IAAI44F,EAAE,EAAEA,EAAEt/E,EAAElL,OAAOwqF,IAAI,CAAC,IAAIt8D,EAAEhjB,EAAEs/E,GAAG3yF,EAAEq2B,EAAEnb,MAAMlb,IAAI0sB,EAAEpF,KAAKmF,EAAEzsB,IAAIq2B,EAAE+nY,GAAG/6Z,EAAEqpB,EAAE2J,EAAE,CAAC,KAAKr2B,EAAEysB,EAAEtkB,OAAO,EAAEnI,IAAI0sB,EAAEpF,KAAKmF,EAAEzsB,IAAiC,OAA7BA,EAAEysB,EAAEtkB,SAASkuB,EAAE3J,EAAEpF,KAAKmF,EAAEzsB,KAAYq2B,EAAE,QAAQ,MAAM1D,MAAMuqB,EAAE,MAAO,CAChf,SAASkhX,GAAG/6Z,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEpZ,EAAE0oZ,SAAS,GAAG,OAAOtvY,EAAE,OAAOkjN,GAAEtsO,EAAEqpB,EAAErZ,GAAsB,GAAnBoZ,EAAEovY,eAAc,EAAMpvY,EAAEqwY,kBAAkB,OAAOz5Z,EAAE+5Z,cAAcxG,uBAAuBnqY,EAAEA,EAAEywY,YAAYxwY,EAAEpF,KAAK,mBAAmBoF,EAAEpF,KAAK,aAAamF,IAAIC,EAAEpF,KAAK,gBAAgBmF,EAAE+mE,EAAE/mE,GAAGC,EAAEpF,KAAKmF,GAAGC,EAAEpF,KAAK,MAAMoF,EAAEpF,KAAK,iBAAiBqoN,GAAEtsO,EAAEqpB,EAAErZ,GAAGhQ,IAAEA,EAAE+5Z,cAAcxG,sBAAwBlqY,EAAEpF,KAAK,mBAAqB,GAAG,EAAEmF,EAAE2uY,aAAa,CAAC3uY,EAAEowY,cAAcx5Z,EAAE66Z,gBAAgB,EAAEzxY,EAAEswY,kBAAkB50Z,QAAQ9E,EAAE26Z,kBAAkB12Y,KAAKmF,GAAG,IAAI4J,EAAEhzB,EAAE+5Z,cAC3ep9Z,EAAEq2B,EAAEgoY,iBAA6F,OAA5EhoY,EAAEA,EAAEioY,eAAet+Z,EAAEw7C,SAAS,IAAI/uB,EAAEA,EAAE/yB,GAAG28B,EAAE0iF,EAAGrsF,EAAErpB,EAAE+5Z,cAAc3wY,GAAGkjN,GAAEtsO,EAAEqpB,EAAErZ,GAAUqZ,EAAEpF,KAAK,kBAAkB,CAAC,GAAGmF,EAAEuwY,SAAS35Z,EAAEk7Z,qBAAqB,OAAO9xY,EAAEowY,cAAcx5Z,EAAE66Z,gBAAgB76Z,EAAE06Z,oBAAoBz2Y,KAAKmF,GAAGssF,EAAGrsF,EAAErpB,EAAE+5Z,cAAc3wY,EAAE/yB,IAAIi2O,GAAEtsO,EAAEqpB,EAAErZ,GAAGqZ,EAAEpF,KAAK,mBAAwG,GAArFjkB,EAAE+5Z,cAAcxG,sBAAsBlqY,EAAEpF,KAAK,kBAA2C,KAAzBjU,EAAEoZ,EAAEswY,mBAA2B50Z,OAAO,MAAMwqB,MAAMuqB,EAAE,MACna,OADyakhX,GAAG/6Z,EAAEqpB,EAAErZ,EAAE,IAAIhQ,IAAEA,EAAE+5Z,cAAcxG,sBAAwBlqY,EAAEpF,KAAK,kBAC/d,CAAC,SAASk3Y,GAAGn7Z,EAAEqpB,EAAErZ,GAAwD,OA9CjF,SAAYhQ,EAAEqpB,EAAErZ,EAAEoZ,GAAG,OAAOpZ,EAAE6iZ,eAAe,KAAK,EAAE,KAAK,EAAE,OAAO7yZ,EAAEikB,KAAK,oBAAoBjkB,EAAEikB,KAAKoF,EAAE+xY,eAAe/xY,EAAED,EAAE+uB,SAAS,IAAIn4C,EAAEikB,KAAKoF,GAAGrpB,EAAEikB,KAAK,MAAM,KAAK,EAAE,OAAOjkB,EAAEikB,KAAK,qDAAqDjkB,EAAEikB,KAAKoF,EAAE+xY,eAAe/xY,EAAED,EAAE+uB,SAAS,IAAIn4C,EAAEikB,KAAKoF,GAAGrpB,EAAEikB,KAAK,MAAM,KAAK,EAAE,OAAOjkB,EAAEikB,KAAK,sDAAsDjkB,EAAEikB,KAAKoF,EAAE+xY,eAAe/xY,EAAED,EAAE+uB,SAAS,IAAIn4C,EAAEikB,KAAKoF,GAAGrpB,EAAEikB,KAAK,MAAM,KAAK,EAAE,OAAOjkB,EAAEikB,KAAK,sBAAsBjkB,EAAEikB,KAAKoF,EAAE+xY,eACte/xY,EAAED,EAAE+uB,SAAS,IAAIn4C,EAAEikB,KAAKoF,GAAGrpB,EAAEikB,KAAK,MAAM,KAAK,EAAE,OAAOjkB,EAAEikB,KAAK,6BAA6BjkB,EAAEikB,KAAKoF,EAAE+xY,eAAe/xY,EAAED,EAAE+uB,SAAS,IAAIn4C,EAAEikB,KAAKoF,GAAGrpB,EAAEikB,KAAK,MAAM,KAAK,EAAE,OAAOjkB,EAAEikB,KAAK,0BAA0BjkB,EAAEikB,KAAKoF,EAAE+xY,eAAe/xY,EAAED,EAAE+uB,SAAS,IAAIn4C,EAAEikB,KAAKoF,GAAGrpB,EAAEikB,KAAK,MAAM,KAAK,EAAE,OAAOjkB,EAAEikB,KAAK,gCAAgCjkB,EAAEikB,KAAKoF,EAAE+xY,eAAe/xY,EAAED,EAAE+uB,SAAS,IAAIn4C,EAAEikB,KAAKoF,GAAGrpB,EAAEikB,KAAK,MAAM,QAAQ,MAAMqL,MAAMuqB,EAAE,MAAO,CA6C/XwhX,CAAGhyY,EAAErpB,EAAE+5Z,cAAc/pZ,EAAEyoZ,cAAczoZ,EAAE3Z,IAAI0ka,GAAG/6Z,EAAEqpB,EAAErZ,GA5C9E,SAAYhQ,EAAEqpB,GAAG,OAAOA,EAAEwpY,eAAe,KAAK,EAAE,KAAK,EAAE,OAAO7yZ,EAAEikB,KAAK,UAAU,KAAK,EAAE,OAAOjkB,EAAEikB,KAAK,UAAU,KAAK,EAAE,OAAOjkB,EAAEikB,KAAK,WAAW,KAAK,EAAE,OAAOjkB,EAAEikB,KAAK,YAAY,KAAK,EAAE,OAAOjkB,EAAEikB,KAAK,oBAAoB,KAAK,EAAE,OAAOjkB,EAAEikB,KAAK,iBAAiB,KAAK,EAAE,OAAOjkB,EAAEikB,KAAK,uBAAuB,QAAQ,MAAMqL,MAAMuqB,EAAE,MAAO,CA4C/OyhX,CAAGjyY,EAAErZ,EAAEyoZ,cAAc,CAC7G,SAAS8C,GAAGv7Z,EAAEqpB,EAAErZ,GAAG,IAAI,IAAIoZ,EAAEpZ,EAAE0pZ,kBAAkB1mY,EAAE,EAAEA,EAAE5J,EAAEtkB,OAAOkuB,IAAIwoY,GAAGx7Z,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,IAA6lB,GAAzlB5J,EAAEtkB,OAAO,EAAE9E,EAAEA,EAAE+5Z,cAAc3wY,EAAEpZ,EAAE3Z,GAAG2Z,EAAEA,EAAEwpZ,cAAcnwY,EAAEpF,KAAKjkB,EAAEy7Z,mBAAmBz7Z,EAAE07Z,6BAA6BryY,EAAEpF,KAAK,UAAUjkB,EAAE07Z,8BAA6B,EAAGryY,EAAEpF,KAAK,8aAAib,OAC/qBmF,EAAE,MAAMkG,MAAMuqB,EAAE,MAAiF,OAA3E7pC,EAAEA,EAAEmoC,SAAS,IAAI9uB,EAAEpF,KAAKmF,GAAGC,EAAEpF,KAAK,OAAOoF,EAAEpF,KAAKjkB,EAAEo7Z,eAAe/xY,EAAEpF,KAAKjU,GAAUqZ,EAAEpF,KAAK,eAAiB,CAChI,SAASu3Y,GAAGx7Z,EAAEqpB,EAAErZ,EAAEoZ,GAAG,GAAG,IAAIA,EAAEvf,OAAO,OAAM,EAAG,IAAImpB,EAAE5J,EAAE/yB,GAAG,IAAI,IAAI28B,EAAE,CAAC,IAAI,KAAK5J,EAAE/yB,GAAG2Z,EAAEwpZ,eAAe,MAAMlqY,MAAMuqB,EAAE,MAAM,OAAOshX,GAAGn7Z,EAAEqpB,EAAED,EAAE,CACxD,OADyD+xY,GAAGn7Z,EAAEqpB,EAAED,GAAGppB,EAAEA,EAAE+5Z,cAAc1wY,EAAEpF,KAAKjkB,EAAEy7Z,mBAAmBz7Z,EAAE27Z,4BAA4BtyY,EAAEpF,KAAK,UAAUjkB,EAAE27Z,6BAA4B,EAAGtyY,EAAEpF,KAAK,2MAA2MoF,EAAEpF,KAAKjkB,EAAEo7Z,eAC3epoY,EAAEA,EAAEmlB,SAAS,IAAI9uB,EAAEpF,KAAK+O,GAAG3J,EAAEpF,KAAK,OAAOoF,EAAEpF,KAAKjkB,EAAE86Z,mBAAmBzxY,EAAEpF,KAAK+O,GAAU3J,EAAEpF,KAAK,eAAiB,CAC9G,SAAS22Y,GAAG56Z,EAAEqpB,GAAG,IAAI,IAAIrZ,EAAEhQ,EAAEw6Z,qBAAqB,GAAG,OAAOxqZ,GAAG,IAAIhQ,EAAE83Z,iBAAiB,CAACiD,GAAG/6Z,EAAEqpB,EAAErZ,GAAGhQ,EAAEw6Z,qBAAqB,KAAK,IAAIpxY,EAAEppB,EAAE+5Z,cAAc6B,gBAAgB,IAAI5rZ,EAAE,EAAEA,EAAEoZ,EAAEtkB,OAAO,EAAEkL,IAAIqZ,EAAEpF,KAAKmF,EAAEpZ,IAAIA,EAAEoZ,EAAEtkB,QAAQukB,EAAEpF,KAAKmF,EAAEpZ,GAAG,CAAC,IAAiCrT,EAA7Bq2B,EAAEhzB,EAAEs6Z,yBAA2B,IAAI39Z,EAAE,EAAEA,EAAEq2B,EAAEluB,OAAOnI,IAAI,CAAC,IAAI2yF,EAAEt8D,EAAEr2B,GAAGysB,EAAEC,EAAE,IAAIpoB,EAAEjB,EAAE+5Z,cAAc7mY,EAAEo8D,EAAEj5F,GAAGooD,EAAE6wC,EAAEuqU,YAAYn2Z,EAAE4rF,EAAE1tB,aAAan+D,EAAE6rF,EAAEusU,oBAC9W,GADkYzyY,EAAEnF,KAAKhjB,EAAEw6Z,mBAAmBx6Z,EAAE66Z,yBAAyB1yY,EAAEnF,KAAK,UAAUhjB,EAAE66Z,0BAAyB,EAAG1yY,EAAEnF,KAAK,2LAC5e,OAAOiP,EAAE,MAAM5D,MAAMuqB,EAAE,MAA4B,GAAtBzwB,EAAEnF,KAAKiP,GAAG9J,EAAEnF,KAAK,KAAQw6B,GAAG/6C,GAAGD,EAAE,CAAC2lB,EAAEnF,KAAK,KAAK,IAAIkvY,EAAEE,EAAG50W,GAAG,IAAIr1B,EAAEnF,KAAKkvY,EAAE,CAAC,GAAGzvZ,GAAGD,EAAE,CAAC2lB,EAAEnF,KAAK,KAAK,IAAI6xM,EAAEu9L,EAAG3vZ,GAAG,IAAI0lB,EAAEnF,KAAK6xM,EAAE,CAAC,GAAGryN,EAAE,CAAC2lB,EAAEnF,KAAK,KAAK,IAAIooN,EAAEgnL,EAAG5vZ,GAAG2lB,EAAEnF,KAAKooN,EAAE,CAAC,IAAIjjN,EAAEnF,KAAK,eAAuD,OAArCjkB,EAAEg5Z,YAAY,KAAKr8Z,SAAIq2B,EAAEjM,OAAO,EAAEpqB,EAAU,CAACq2B,EAAEjM,OAAO,EAAEpqB,GAAG,IAAIo/Z,EAAG/7Z,EAAE06Z,oBAAoB,IAAI/9Z,EAAE,EAAEA,EAAEo/Z,EAAGj3Z,OAAOnI,IAAI,IAAI4+Z,GAAGv7Z,EAAEqpB,EAAE0yY,EAAGp/Z,IAA2C,OAAtCqD,EAAEg5Z,YAAY,KAAKr8Z,SAAIo/Z,EAAGh1Y,OAAO,EAAEpqB,GAAUo/Z,EAAGh1Y,OAAO,EAAEpqB,GAAG,IAAIkvI,EAAG7rI,EAAE26Z,kBAAkB,IAAIh+Z,EAAE,EAAEA,EAAEkvI,EAAG/mI,OAAOnI,IAAI,CAAC,IAAIq/Z,EAAGnwR,EAAGlvI,GAAGqD,EAAE,CAACgzB,EAAEhzB,EAAEsvF,EAAEjmE,EAAE,IAAI4yY,EAAGD,EAAGtC,kBACjf,IAAIz4Z,EAAE,EAAEA,EAAEg7Z,EAAGn3Z,OAAO7D,IAAI,IAAIu6Z,GAAGxoY,EAAEs8D,EAAE0sU,EAAGC,EAAGh7Z,IAAI,CAACA,IAAIg7Z,EAAGl1Y,OAAO,EAAE9lB,GAAG,IAAIi7Z,GAAG,EAAG,MAAMl8Z,CAAC,CAACi8Z,EAAGl1Y,OAAO,EAAE9lB,GAAGi7Z,GAAG,CAAE,CAAC,IAAIA,EAA0C,OAAtCl8Z,EAAEg5Z,YAAY,KAAKr8Z,SAAIkvI,EAAG9kH,OAAO,EAAEpqB,EAAU,CAACkvI,EAAG9kH,OAAO,EAAEpqB,GAAG,IAAIw/Z,EAAGn8Z,EAAE06Z,oBAAoB,IAAI/9Z,EAAE,EAAEA,EAAEw/Z,EAAGr3Z,OAAOnI,IAAI,IAAI4+Z,GAAGv7Z,EAAEqpB,EAAE8yY,EAAGx/Z,IAA2C,OAAtCqD,EAAEg5Z,YAAY,KAAKr8Z,SAAIw/Z,EAAGp1Y,OAAO,EAAEpqB,GAAUw/Z,EAAGp1Y,OAAO,EAAEpqB,EAAE,CAAC,QAAQ,IAAIqD,EAAE63Z,iBAAiB,IAAI73Z,EAAEi4Z,YAAYnzZ,QAAQ,IAAI9E,EAAEs6Z,yBAAyBx1Z,QAAQ,IAAI9E,EAAE06Z,oBAAoB51Z,QAAQukB,EAAEpF,KAAK,KAAK,CAAC,CAChc,SAASm4Y,GAAGp8Z,EAAEqpB,GAAG,IAAI,IAAIrZ,EAAEhQ,EAAEq8Z,eAAersZ,EAAE4B,SAAQ,SAAS5B,GAAG,OAAOqqZ,GAAGrqZ,EAAEhQ,EAAEqpB,EAAE,IAAGrZ,EAAEwzC,QAAQ,OAAOxjD,EAAEg5Z,aAAa4B,GAAG56Z,EAAEA,EAAEg5Z,YAAY,CAAC,MAAM5vY,GAAGyvY,GAAE74Z,EAAEopB,GAAGonH,GAAExwI,EAAEopB,EAAE,CAAC,CAAC,SAASkzY,KAAK,CAC/K,SAASC,GAAGv8Z,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAI4J,GAAE,EAAGr2B,EAAE,KAAK2yF,EAAE,GAAGruF,EAAE,CAACgjB,KAAK,SAASjkB,GAAoB,OAAjB,OAAOA,IAAIsvF,GAAGtvF,IAAS,CAAE,EAAE8qL,QAAQ,SAAS9qL,GAAGgzB,GAAE,EAAGr2B,EAAEqD,CAAC,GAAGkzB,GAAE,EAAkJ,GAA/IlzB,EAjC7H,SAAYA,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,EAAEr2B,EAAE2yF,EAAEruF,EAAEiyB,GAAG,IAAIurB,EAAE,GAAG/6C,EAAE,IAAIogM,IACH,OADya9zL,EAAEuoZ,GAApalvY,EAAE,CAAC2vY,YAAY,KAAKe,cAAc1wY,EAAE6xY,0BAAqB,IAAS9xY,EAAE,MAAMA,EAAEvf,OAAO,EAAEovZ,WAAW,KAAK4B,cAAc,EAAEhD,gBAAgB,EAAEC,iBAAiB,EAAE0C,qBAAqB,KAAK6B,eAAe34Z,EAAEu0Z,YAAYx5W,EAAE67W,yBAAyB,GAAGI,oBAAoB,GAAGC,kBAAkB,GAAG5kE,aAAQ,IAAS/iU,EAAE2iF,GAAG3iF,EAAEunY,gBAAW,IAAS59Z,EAAEs5N,GAAEt5N,EAAE89Z,kBAAa,IAASnrU,EAAE2mI,GAAE3mI,EAAEwpU,kBAAa,IAAS73Z,EAAEg1N,GAAEh1N,EAAE83Z,kBAAa,IAAS7lY,EAAE+iM,GAAE/iM,GAAS,EAAE,KAAKljB,GAAE,GAAG,IAAMwoZ,eAC5e,EAAGx4Z,EAAE43Z,GAAGvuY,EAAErpB,EAAE,KAAKgQ,EAAEtM,EAAEmxZ,GAAG,KAAKe,IAAIn3W,EAAEx6B,KAAKjkB,GAAUqpB,CAAC,CAgC4EmzY,CAAGx8Z,EAnDlI,SAAYA,EAAEqpB,GAAqB,MAAM,CAACuyY,gBAAgB,GAAGH,kBAAkB,WAAWX,mBAAzEzxY,OAAE,IAASA,EAAE,GAAGA,GAA6E,KAAK+xY,cAAc/xY,EAAE,KAAK4xY,eAAe5xY,EAAE,KAAKq5O,SAASr5O,EAAE2xY,eAAe,EAAEW,6BAA4B,EAAGD,8BAA6B,EAAGI,0BAAyB,EAAGvI,qBAAqBvzZ,EAAE,CAmDxKy8Z,CAAGzsZ,EAAEqZ,EAAEA,EAAEqzY,sBAAiB,GAAQ,CAAC7J,cAAc,EAAE9sY,cAAc,MAAMuyF,IAASgkT,QAAG,GAAO,WAAWppY,GAAE,CAAE,QAAE,OAAO,GAAQglY,GAAGl4Z,GAAGo8Z,GAAGp8Z,EAAEopB,GAAM,IAAIppB,EAAE6J,OAAO7J,EAAE6J,OAAO,EAAE5I,EAAE6pL,QAAQ9qL,EAAEi5Z,iBAAiB,GAAG,IAAIj5Z,EAAE6J,QAAQ,OAAO7J,EAAEg5Z,YAAY,CAACh5Z,EAAEg5Z,YAAY/3Z,EAAE,IAAI25Z,GAAG56Z,EAAEiB,EAAE,CAAC,MAAMw9C,GAAGo6W,GAAE74Z,EAAEy+C,GAAG+xF,GAAExwI,EAAEy+C,EAAE,CAAC,CAAC,GAAGzrB,EAAE,MAAMr2B,EAAE,IAAIu2B,EAAE,MAAM5D,MAAMuqB,EAAE,MAAM,OAAOy1C,CAAC,CAC9c70F,EAAQkia,mBAAmB,WAAW,MAAMrtY,MAAMuqB,EAAE,KAAM,EAAEp/C,EAAQmia,qBAAqB,SAAS58Z,EAAEqpB,GAAG,OAAOkzY,GAAGv8Z,EAAEqpB,GAAE,EAAG,8NAA8N,EAAE5uB,EAAQoia,yBAAyB,WAAW,MAAMvtY,MAAMuqB,EAAE,KAAM,EAAEp/C,EAAQqia,eAAe,SAAS98Z,EAAEqpB,GAAG,OAAOkzY,GAAGv8Z,EAAEqpB,GAAE,EAAG,mXAAmX,EACn0B5uB,EAAQu3D,QAAQ,sCCnFH,IAAIk+V,EAAGx2Z,EAAQ,MAAS,SAASw5B,EAAElzB,GAAG,IAAI,IAAIqpB,EAAE,yDAAyDrpB,EAAEgQ,EAAE,EAAEA,EAAE2f,UAAU7qB,OAAOkL,IAAIqZ,GAAG,WAAW+4B,mBAAmBzyB,UAAU3f,IAAI,MAAM,yBAAyBhQ,EAAE,WAAWqpB,EAAE,gHAAgH,CAAC,IAAIwwB,EAAE,KAAKn2C,EAAE,EAC9W,SAAS8lB,EAAExpB,EAAEqpB,GAAG,GAAG,IAAIA,EAAEvkB,OAAO,GAAG,IAAIukB,EAAEvkB,OAAO,EAAEpB,IAAI1D,EAAE+8Z,QAAQ,IAAIpiX,WAAWd,EAAEqC,OAAO,EAAEx4C,IAAIm2C,EAAE,IAAIc,WAAW,KAAKj3C,EAAE,GAAG1D,EAAE+8Z,QAAQ1zY,OAAO,CAAC,IAAIrZ,EAAE6pC,EAAE/0C,OAAOpB,EAAEsM,EAAEqZ,EAAEvkB,SAAS,IAAIkL,EAAEhQ,EAAE+8Z,QAAQljX,IAAIA,EAAEjlB,IAAIvL,EAAEgiG,SAAS,EAAEr7G,GAAGtM,GAAG1D,EAAE+8Z,QAAQljX,GAAGxwB,EAAEA,EAAEgiG,SAASr7G,IAAI6pC,EAAE,IAAIc,WAAW,KAAKj3C,EAAE,GAAGm2C,EAAEjlB,IAAIvL,EAAE3lB,GAAGA,GAAG2lB,EAAEvkB,MAAM,CAAC,CAAC,SAASjF,EAAEG,EAAEqpB,GAAU,OAAPG,EAAExpB,EAAEqpB,IAAS,CAAE,CAAC,SAAS0yY,EAAG/7Z,GAAG65C,GAAG,EAAEn2C,IAAI1D,EAAE+8Z,QAAQ,IAAIpiX,WAAWd,EAAEqC,OAAO,EAAEx4C,IAAIm2C,EAAE,KAAKn2C,EAAE,EAAE,CAAC,IAAImoI,EAAG,IAAImxR,YAAY,SAAS9mM,EAAEl2N,GAAG,OAAO6rI,EAAG3pF,OAAOliD,EAAE,CAAC,SAASwoD,EAAExoD,GAAG,OAAO6rI,EAAG3pF,OAAOliD,EAAE,CAC7e,SAASi8Z,EAAGj8Z,EAAEqpB,GAAG,oBAAoBrpB,EAAEnI,MAAMmI,EAAEnI,MAAMwxB,GAAGrpB,EAAEmS,OAAO,CAAC,IAAIi7D,EAAExnE,OAAOud,UAAUsG,eAAe0yY,EAAG,8VAA8VhM,EAAG,CAAC,EAAEC,EAAG,CAAC,EACnd,SAASC,EAAGrwZ,GAAG,QAAGotE,EAAE1jD,KAAK0mY,EAAGpwZ,KAAeotE,EAAE1jD,KAAKymY,EAAGnwZ,KAAem8Z,EAAGzrY,KAAK1wB,GAAUowZ,EAAGpwZ,IAAG,GAAGmwZ,EAAGnwZ,IAAG,GAAS,GAAE,CAAC,SAASszF,EAAEtzF,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,EAAEr2B,EAAE2yF,GAAGrsE,KAAKstY,gBAAgB,IAAIlnY,GAAG,IAAIA,GAAG,IAAIA,EAAEpG,KAAKuhL,cAAcp7K,EAAEnG,KAAKutY,mBAAmBx9X,EAAE/P,KAAKwtY,gBAAgBzgZ,EAAEiT,KAAK87P,aAAa/+Q,EAAEijB,KAAKxmB,KAAK4sB,EAAEpG,KAAKytY,YAAY/zZ,EAAEsmB,KAAK0tY,kBAAkBrhU,CAAC,CAAC,IAAI+8I,EAAE,CAAC,EAC7U,uIAAuIpgO,MAAM,KAAK2F,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAIszF,EAAEtzF,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAe4R,SAAQ,SAAS5R,GAAG,IAAIqpB,EAAErpB,EAAE,GAAGqsO,EAAEhjN,GAAG,IAAIiqE,EAAEjqE,EAAE,GAAE,EAAGrpB,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAAS4R,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAIszF,EAAEtzF,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiB7mC,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAIszF,EAAEtzF,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8OiM,MAAM,KAAK2F,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAIszF,EAAEtzF,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAY7mC,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAIszF,EAAEtzF,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAY4R,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAIszF,EAAEtzF,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQ4R,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAIszF,EAAEtzF,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAAS4R,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAIszF,EAAEtzF,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IAAG,IAAI63W,EAAG,gBAAgB,SAASM,EAAG5wZ,GAAG,OAAOA,EAAE,GAAG07C,aAAa,CACxZ,0jCAA0jCzvC,MAAM,KAAK2F,SAAQ,SAAS5R,GAAG,IAAIqpB,EAAErpB,EAAEmQ,QAAQmgZ,EACzmCM,GAAIvkL,EAAEhjN,GAAG,IAAIiqE,EAAEjqE,EAAE,GAAE,EAAGrpB,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2EiM,MAAM,KAAK2F,SAAQ,SAAS5R,GAAG,IAAIqpB,EAAErpB,EAAEmQ,QAAQmgZ,EAAGM,GAAIvkL,EAAEhjN,GAAG,IAAIiqE,EAAEjqE,EAAE,GAAE,EAAGrpB,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAa4R,SAAQ,SAAS5R,GAAG,IAAIqpB,EAAErpB,EAAEmQ,QAAQmgZ,EAAGM,GAAIvkL,EAAEhjN,GAAG,IAAIiqE,EAAEjqE,EAAE,GAAE,EAAGrpB,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAe4R,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAIszF,EAAEtzF,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IACld4zL,EAAEykL,UAAU,IAAIx9T,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAc1hF,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAIszF,EAAEtzF,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IAC5L,IAAI+6W,EAAE,CAACzC,yBAAwB,EAAGC,aAAY,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGj6S,aAAY,EAAGp3C,SAAQ,EAAG80T,MAAK,EAAGlmB,UAAS,EAAG0iD,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAG7jC,UAAS,EAAGnlD,SAAQ,EAAGshD,YAAW,EAAG2nC,aAAY,EAAG5nC,cAAa,EAAG6nC,YAAW,EAAG9nC,eAAc,EAAG+nC,gBAAe,EAAGhoC,iBAAgB,EAAGlmX,YAAW,EAAGmuZ,WAAU,EAAG36S,YAAW,EAAG9+F,SAAQ,EAAGmkE,OAAM,EAAGu1U,SAAQ,EAAGr4B,SAAQ,EAAGs4B,QAAO,EAAGj1Z,QAAO,EAAGk1Z,MAAK,EACzfC,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGn4S,aAAY,GAAIw2S,EAAG,CAAC,SAAS,KAAK,MAAM,KAAKjrZ,OAAOC,KAAK2tZ,GAAG5hZ,SAAQ,SAAS5R,GAAG6wZ,EAAGj/Y,SAAQ,SAASyX,GAAGA,EAAEA,EAAErpB,EAAE0rD,OAAO,GAAGhQ,cAAc17C,EAAEgK,UAAU,GAAGwpZ,EAAEnqY,GAAGmqY,EAAExzZ,EAAE,GAAE,IAAG,IAAI2yZ,EAAG,UACnS,SAASQ,EAAEnzZ,GAAG,GAAG,mBAAmBA,GAAG,kBAAkBA,EAAE,MAAM,GAAGA,EAAEA,EAAE,GAAGA,EAAE,IAAIqpB,EAAEspY,EAAG30W,KAAKh+C,GAAG,GAAGqpB,EAAE,CAAC,IAASD,EAALpZ,EAAE,GAAKgjB,EAAE,EAAE,IAAI5J,EAAEC,EAAExR,MAAMuR,EAAEppB,EAAE8E,OAAOskB,IAAI,CAAC,OAAOppB,EAAE88C,WAAW1zB,IAAI,KAAK,GAAGC,EAAE,SAAS,MAAM,KAAK,GAAGA,EAAE,QAAQ,MAAM,KAAK,GAAGA,EAAE,SAAS,MAAM,KAAK,GAAGA,EAAE,OAAO,MAAM,KAAK,GAAGA,EAAE,OAAO,MAAM,QAAQ,SAAS2J,IAAI5J,IAAIpZ,GAAGhQ,EAAEgK,UAAUgpB,EAAE5J,IAAI4J,EAAE5J,EAAE,EAAEpZ,GAAGqZ,CAAC,CAACrpB,EAAEgzB,IAAI5J,EAAEpZ,EAAEhQ,EAAEgK,UAAUgpB,EAAE5J,GAAGpZ,CAAC,CAAC,OAAOhQ,CAAC,CAC/X,IAAI41G,EAAG,WAAWg9S,EAAG,OAAOqH,EAAGh/Y,MAAMC,QAAQs6F,EAAGhtD,EAAE,YAAYsqW,EAAGtqW,EAAE,cAAgBlX,EAAGkX,EAAE,iBAAiBuqW,EAAGvqW,EAAE,+BAA+BwqW,EAAGxqW,EAAE,yBAA2ByqW,EAAG,sBAAsB,SAASC,EAAGlzZ,EAAEqpB,EAAErZ,EAAEoZ,GAAG,OAASC,GAAG,MAAMrZ,EAAE,UAAU,WAAWoZ,CAAC,CAErQ,SAAS0sM,EAAE91N,EAAEqpB,GAAG,MAAM,CAACwpY,cAAc7yZ,EAAE+lB,cAAcsD,EAAE,CACiV,IAAI+pY,EAAG5qW,EAAE,kBAAkB,SAAS6qW,EAAGrzZ,EAAEqpB,EAAErZ,EAAEoZ,GAAG,MAAG,KAAKC,EAASD,GAAEA,GAAGppB,EAAEikB,KAAKmvY,GAAIpzZ,EAAEikB,KAAKiyM,EAAEi9L,EAAE9pY,MAAW,EAAE,CACjf,IAAIozY,EAAG,IAAItqO,IAAImhO,EAAG9qW,EAAE,YAAYirW,EAAGjrW,EAAE,KAAKkrW,EAAGlrW,EAAE,KAC/C,SAASmrW,EAAG3zZ,EAAEqpB,EAAErZ,GAAG,GAAG,kBAAkBA,EAAE,MAAMsf,MAAM4D,EAAE,KAAU,IAAI,IAAI9J,KAAbC,GAAE,EAAgBrZ,EAAE,GAAGo9D,EAAE1jD,KAAK1Z,EAAEoZ,GAAG,CAAC,IAAI4J,EAAEhjB,EAAEoZ,GAAG,GAAG,MAAM4J,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,CAAC,GAAG,IAAI5J,EAAE8U,QAAQ,MAAM,CAAC,IAAIvhC,EAAEu5N,EAAEi9L,EAAE/pY,IAAI4J,EAAEkjM,EAAEi9L,GAAG,GAAGngY,GAAG2pB,QAAQ,KAAK,CAAChgD,EAAEysB,EAAE,IAAIkmE,EAAEmtU,EAAG/uY,IAAI/wB,QAAG,IAAS2yF,IAAOA,EAAE9mC,EAAE2qW,EAAEx2Z,EAAEwT,QAAQylG,EAAG,OAAOn9D,cAActoC,QAAQyiZ,EAAG,UAAU6J,EAAG7nY,IAAIj4B,EAAE2yF,IAA3E3yF,EAAE2yF,EAAiFt8D,EAAE,kBAAkBA,EAAE,IAAIA,GAAGo6C,EAAE1jD,KAAK8pY,EAAEpqY,GAAG8sM,EAAE,GAAGljM,GAAGkjM,EAAEljM,EAAE,MAAMkjM,EAAEi9L,GAAG,GAAGngY,GAAG2pB,QAAQ,CAACtzB,GAAGA,GAAE,EAAGrpB,EAAEikB,KAAKqvY,EAAG32Z,EAAE82Z,EAAGzgY,IAAIhzB,EAAEikB,KAAKyvY,EAAG/2Z,EAAE82Z,EAAGzgY,EAAE,CAAC,CAAC3J,GAAGrpB,EAAEikB,KAAK2yM,EAAE,CACld,IAAIa,EAAEjvK,EAAE,KAAK8qF,EAAE9qF,EAAE,MAAMouK,EAAEpuK,EAAE,KAAKorW,EAAGprW,EAAE,OACrC,SAAS2tW,EAAEn2Z,EAAEqpB,EAAErZ,EAAEoZ,GAAG,OAAOpZ,GAAG,IAAK,QAAkB,YAAV2jZ,EAAG3zZ,EAAEqpB,EAAED,GAAU,IAAK,eAAe,IAAK,iBAAiB,IAAK,YAAY,IAAK,iCAAiC,IAAK,2BAA2B,OAAO,KAAK,EAAEpZ,EAAElL,SAAS,MAAMkL,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,GAAG,GAAmC,QAAhCqZ,EAAEgjN,EAAE5iN,eAAezZ,GAAGq8N,EAAEr8N,GAAG,MAAc,CAAC,cAAcoZ,GAAG,IAAK,WAAW,IAAK,SAAS,OAAO,IAAK,UAAU,IAAIC,EAAEknY,gBAAgB,OAA4B,OAArBvgZ,EAAEkmN,EAAE7sM,EAAEm7K,eAAsBn7K,EAAE5sB,MAAM,KAAK,EAAE2sB,GAAGppB,EAAEikB,KAAKwzM,EAAEznN,EAAE4jZ,GAAI,MAAM,KAAK,GAAE,IAAKxqY,EAAEppB,EAAEikB,KAAKwzM,EAAEznN,EAAE4jZ,IAAI,IACpfxqY,GAAGppB,EAAEikB,KAAKwzM,EAAEznN,EAAEsjI,EAAE4iF,EAAEi9L,EAAE/pY,IAAIwtM,GAAG,MAAM,KAAK,EAAE9/I,MAAM1tD,IAAIppB,EAAEikB,KAAKwzM,EAAEznN,EAAEsjI,EAAE4iF,EAAEi9L,EAAE/pY,IAAIwtM,GAAG,MAAM,KAAK,GAAG9/I,MAAM1tD,IAAI,GAAGA,GAAGppB,EAAEikB,KAAKwzM,EAAEznN,EAAEsjI,EAAE4iF,EAAEi9L,EAAE/pY,IAAIwtM,GAAG,MAAM,QAAQvtM,EAAEqnY,cAActnY,EAAE,GAAGA,GAAGppB,EAAEikB,KAAKwzM,EAAEznN,EAAEsjI,EAAE4iF,EAAEi9L,EAAE/pY,IAAIwtM,GAAG,MAAM,GAAGy5L,EAAGrgZ,GAAG,CAAC,cAAcoZ,GAAG,IAAK,WAAW,IAAK,SAAS,OAAO,IAAK,UAAU,GAAgC,WAA7BC,EAAErZ,EAAEyoC,cAAc5mC,MAAM,EAAE,KAAgB,UAAUwX,EAAE,OAAOrpB,EAAEikB,KAAKwzM,EAAEvB,EAAElmN,GAAGsjI,EAAE4iF,EAAEi9L,EAAE/pY,IAAIwtM,EAAE,CAAC,CAAC,IAAIwV,EAAE5jL,EAAE,KAAKqrW,EAAGrrW,EAAE,MACjY,SAAS2jL,EAAEnsO,EAAEqpB,EAAErZ,GAAG,GAAG,MAAMqZ,EAAE,CAAC,GAAG,MAAMrZ,EAAE,MAAMsf,MAAM4D,EAAE,KAAK,GAAG,kBAAkB7J,KAAK,WAAWA,GAAG,MAAMiG,MAAM4D,EAAE,KAAgB,QAAX7J,EAAEA,EAAE1nB,cAAiB,IAAS0nB,GAAGrpB,EAAEikB,KAAKiyM,EAAE,GAAG7sM,GAAG,CAAC,CAAsF,IAAI0qY,EAAGvrW,EAAE,gBACvQ,SAASwrW,GAAGh0Z,EAAEqpB,EAAErZ,EAAEoZ,GAAGppB,EAAEikB,KAAK8xM,GAAE/lN,IAAI,IAAarT,EAATq2B,EAAEhjB,EAAE,KAAO,IAAIrT,KAAK0sB,EAAE,GAAG+jD,EAAE1jD,KAAKL,EAAE1sB,GAAG,CAAC,IAAI2yF,EAAEjmE,EAAE1sB,GAAG,GAAG,MAAM2yF,EAAE,OAAO3yF,GAAG,IAAK,WAAWqT,EAAEs/E,EAAE,MAAM,IAAK,0BAA0Bt8D,EAAEs8D,EAAE,MAAM,QAAQ6mU,EAAEn2Z,EAAEopB,EAAEzsB,EAAE2yF,GAAG,CAAoB,OAAnBtvF,EAAEikB,KAAKmoN,GAAGD,EAAEnsO,EAAEgzB,EAAEhjB,GAAS,kBAAkBA,GAAGhQ,EAAEikB,KAAKiyM,EAAEi9L,EAAEnjZ,KAAK,MAAMA,CAAC,CAAC,IAAIikZ,GAAGzrW,EAAE,MAAM0rW,GAAG,8BAA8BC,GAAG,IAAIhiO,IAAI,SAAS4jC,GAAE/1N,GAAG,IAAIqpB,EAAE8qY,GAAGzmY,IAAI1tB,GAAG,QAAG,IAASqpB,EAAE,CAAC,IAAI6qY,GAAGxjY,KAAK1wB,GAAG,MAAMsvB,MAAM4D,EAAE,GAAGlzB,IAAIqpB,EAAEm/B,EAAE,IAAIxoD,GAAGm0Z,GAAGv/X,IAAI50B,EAAEqpB,EAAE,CAAC,OAAOA,CAAC,CAAC,IAAI+qY,GAAG5rW,EAAE,mBAC9b,SAAS6rW,GAAGr0Z,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,GAAG,OAAO3J,GAAG,IAAK,SAASrpB,EAAEikB,KAAK8xM,GAAE,WAAW,IAAIp5N,EAAE,KAAK2yF,EAAE,KAAK,IAAInY,KAAKnnE,EAAE,GAAGo9D,EAAE1jD,KAAK1Z,EAAEmnE,GAAG,CAAC,IAAIl2E,EAAE+O,EAAEmnE,GAAG,GAAG,MAAMl2E,EAAE,OAAOk2E,GAAG,IAAK,WAAWx6E,EAAEsE,EAAE,MAAM,IAAK,0BAA0BquF,EAAEruF,EAAE,MAAM,IAAK,eAAe,IAAK,QAAQ,MAAM,QAAQk1Z,EAAEn2Z,EAAEopB,EAAE+tD,EAAEl2E,GAAG,CAAoB,OAAnBjB,EAAEikB,KAAKmoN,GAAGD,EAAEnsO,EAAEsvF,EAAE3yF,GAAUA,EAAE,IAAK,SAAS2yF,EAAEt8D,EAAEjN,cAAc/lB,EAAEikB,KAAK8xM,GAAE,WAAW,IAAIt3K,EAAEx9C,EAAE,KAAKwC,EAAE,KAAS0zE,EAAE,KAAK,IAAIx6E,KAAKqT,EAAE,GAAGo9D,EAAE1jD,KAAK1Z,EAAErT,GAAG,CAAC,IAAIwzF,EAAEngF,EAAErT,GAAG,GAAG,MAAMwzF,EAAE,OAAOxzF,GAAG,IAAK,WAAWsE,EAAEkvF,EAAE,MAAM,IAAK,WAAW1sF,EAAE0sF,EAAE,MAAM,IAAK,0BAA0BhZ,EAC3gBgZ,EAAE,MAAM,IAAK,QAAQ1xC,EAAE0xC,EAAE,QAAQgmU,EAAEn2Z,EAAEopB,EAAEzsB,EAAEwzF,GAAG,CAAC,GAAG,MAAMb,EAAE,GAAGt/E,EAAE,OAAOyuC,EAAE,GAAGA,EAHgG,SAAYz+C,GAAG,IAAIqpB,EAAE,GAAuD,OAApD6mY,EAAG32K,SAAS3nO,QAAQ5R,GAAE,SAASA,GAAG,MAAMA,IAAIqpB,GAAGrpB,EAAE,IAAUqpB,CAAC,CAGlLyqY,CAAG7yZ,GAAGg5Z,EAAG3qU,IAAG,IAAIlmE,EAAE,EAAEA,EAAEkmE,EAAExqF,OAAOskB,IAAK,GAAG,GAAGkmE,EAAElmE,KAAKpZ,EAAE,CAAChQ,EAAEikB,KAAK8vY,GAAI,KAAK,MAAM,GAAGzkU,IAAIt/E,GAAGhQ,EAAEikB,KAAK8vY,QAAStwZ,GAAGzD,EAAEikB,KAAK8vY,GAAuB,OAAnB/zZ,EAAEikB,KAAKmoN,GAAGD,EAAEnsO,EAAEm3E,EAAEl2E,GAAUA,EAAE,IAAK,WAA4C,IAAIA,KAArCjB,EAAEikB,KAAK8xM,GAAE,aAAa5+I,EAAEmY,EAAE3yF,EAAE,KAAcqT,EAAE,GAAGo9D,EAAE1jD,KAAK1Z,EAAE/O,IAAY,OAAPw9C,EAAEzuC,EAAE/O,IAAY,OAAOA,GAAG,IAAK,WAAWk2E,EAAE14B,EAAE,MAAM,IAAK,QAAQ9hD,EAAE8hD,EAAE,MAAM,IAAK,eAAe6wC,EAAE7wC,EAAE,MAAM,IAAK,0BAA0B,MAAMnvB,MAAM4D,EAAE,KAAK,QAAQijY,EAAEn2Z,EAAEopB,EAAEnoB,EAAEw9C,GACjd,GADod,OAAO9hD,GAAG,OAAO2yF,IAAI3yF,EAAE2yF,GAAGtvF,EAAEikB,KAAKmoN,GAClf,MAAMj1J,EAAE,CAAC,GAAG,MAAMx6E,EAAE,MAAM2yB,MAAM4D,EAAE,KAAK,GAAG+mY,EAAG9iV,IAAI,EAAEA,EAAEryE,OAAO,MAAMwqB,MAAM4D,EAAE,KAAKv2B,EAAE,GAAGw6E,CAAC,CAA2E,MAA1E,kBAAkBx6E,GAAG,OAAOA,EAAE,IAAIqD,EAAEikB,KAAKgwY,IAAI,OAAOt3Z,GAAGqD,EAAEikB,KAAKiyM,EAAEi9L,EAAE,GAAGx2Z,KAAY,KAAK,IAAK,QAAwC,IAAI2yF,KAApCtvF,EAAEikB,KAAK8xM,GAAE,UAAUt3K,EAAE04B,EAAEl2E,EAAEtE,EAAE,KAAcqT,EAAE,GAAGo9D,EAAE1jD,KAAK1Z,EAAEs/E,IAAY,OAAP7rF,EAAEuM,EAAEs/E,IAAY,OAAOA,GAAG,IAAK,WAAW,IAAK,0BAA0B,MAAMhgE,MAAM4D,EAAE,IAAI,UAAU,IAAK,iBAAiBurB,EAAEh7C,EAAE,MAAM,IAAK,eAAexC,EAAEwC,EAAE,MAAM,IAAK,UAAU0zE,EAAE1zE,EAAE,MAAM,IAAK,QAAQ9G,EAAE8G,EAAE,MAAM,QAAQ0yZ,EAAEn2Z,EAAEopB,EAAEkmE,EAAE7rF,GAC3X,OAD8X,OAAO0zE,EAAEg/U,EAAEn2Z,EAAEopB,EAAE,UAC7e+tD,GAAG,OAAO14B,GAAG03W,EAAEn2Z,EAAEopB,EAAE,UAAUq1B,GAAG,OAAO9hD,EAAEw5Z,EAAEn2Z,EAAEopB,EAAE,QAAQzsB,GAAG,OAAOsE,GAAGk1Z,EAAEn2Z,EAAEopB,EAAE,QAAQnoB,GAAGjB,EAAEikB,KAAK4vY,GAAW,KAAK,IAAK,WAAiC,IAAI,IAAI79Q,KAA9Bh2I,EAAEikB,KAAK8xM,GAAE,aAA0B/lN,EAAE,GAAGo9D,EAAE1jD,KAAK1Z,EAAEgmI,IAAY,OAAPr5I,EAAEqT,EAAEgmI,IAAY,OAAOA,GAAG,IAAK,WAAW,IAAK,0BAA0B,MAAM1mH,MAAM4D,EAAE,MAAM,QAAQijY,EAAEn2Z,EAAEopB,EAAE4sH,EAAEr5I,GAAa,OAAVqD,EAAEikB,KAAKmoN,GAAU,KAAK,IAAK,QAAkC,IAAIj8I,KAA9BnwF,EAAEikB,KAAK8xM,GAAE,UAAUp5N,EAAE,KAAcqT,EAAE,GAAGo9D,EAAE1jD,KAAK1Z,EAAEmgF,IAAY,OAAPb,EAAEt/E,EAAEmgF,IAAY,OAAOA,GAAG,IAAK,WAAWxzF,EAAE2yF,EAAE,MAAM,IAAK,0BAA0B,MAAMhgE,MAAM4D,EAAE,MAAM,QAAQijY,EAAEn2Z,EAAEopB,EAAE+mE,EAAEb,GAClf,OADqftvF,EAAEikB,KAAKmoN,GACrfzvO,EAAE,IAAK,UAAU,IAAK,MAA4B,IAAI8hD,KAA1Bz+C,EAAEikB,KAAK8xM,GAAE1sM,IAAIimE,EAAE3yF,EAAE,KAAcqT,EAAE,GAAGo9D,EAAE1jD,KAAK1Z,EAAEyuC,IAAY,OAAPx9C,EAAE+O,EAAEyuC,IAAY,OAAOA,GAAG,IAAK,WAAW9hD,EAAEsE,EAAE,MAAM,IAAK,0BAA0BquF,EAAEruF,EAAE,MAAM,QAAQk1Z,EAAEn2Z,EAAEopB,EAAEq1B,EAAEx9C,GAAa,GAAVjB,EAAEikB,KAAKmoN,GAAM,MAAM98I,EAAE,CAAC,GAAG,MAAM3yF,EAAE,MAAM2yB,MAAM4D,EAAE,KAAK,GAAG,kBAAkBo8D,KAAK,WAAWA,GAAG,MAAMhgE,MAAM4D,EAAE,KAAgB,QAAXljB,EAAEs/E,EAAE3tF,cAAiB,IAASqO,IAAI,kBAAkBA,GAAG,EAAEA,EAAElL,QAAQ,OAAOkL,EAAE,GAAGhQ,EAAEikB,KAAKgwY,GAAG/9L,EAAElmN,IAAIhQ,EAAEikB,KAAKiyM,EAAE,GAAGlmN,IAAI,CAA8C,MAA7C,kBAAkBrT,GAAG,OAAOA,EAAE,IAAIqD,EAAEikB,KAAKgwY,IAAWt3Z,EAAE,IAAK,OAAO,IAAK,OAAO,IAAK,KAAK,IAAK,MAAM,IAAK,QAAQ,IAAK,KAAK,IAAK,MAAM,IAAK,SAAS,IAAK,OAAO,IAAK,OAAO,IAAK,QAAQ,IAAK,SAAS,IAAK,QAAQ,IAAK,MAC5nB,IAAI,IAAIq5N,KAD0nBh2N,EAAEikB,KAAK8xM,GAAE1sM,IAC9nBrZ,EAAE,GAAGo9D,EAAE1jD,KAAK1Z,EAAEgmN,IAAY,OAAPr5N,EAAEqT,EAAEgmN,IAAY,OAAOA,GAAG,IAAK,WAAW,IAAK,0BAA0B,MAAM1mM,MAAM4D,EAAE,IAAI7J,IAAI,QAAQ8sY,EAAEn2Z,EAAEopB,EAAE4sM,EAAEr5N,GAAc,OAAXqD,EAAEikB,KAAK4vY,GAAW,KAAK,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAOG,GAAGh0Z,EAAEgQ,EAAEqZ,EAAED,GAAG,IAAK,OAAO,OAAO,IAAI4J,EAAE6/X,eAAe7yZ,EAAEikB,KAAKmwY,IAAIJ,GAAGh0Z,EAAEgQ,EAAEqZ,EAAED,GAAG,QAAQ,IAAI,IAAIC,EAAE6U,QAAQ,MAAM,kBAAkBluB,EAAE8vL,GAAG,OAAOk0N,GAAGh0Z,EAAEgQ,EAAEqZ,EAAED,GACle,IAAI3lB,KADiezD,EAAEikB,KAAK8xM,GAAE1sM,IACvfimE,EAAE3yF,EAAE,KAAcqT,EAAE,GAAGo9D,EAAE1jD,KAAK1Z,EAAEvM,IAAY,OAAPxC,EAAE+O,EAAEvM,IAAY,OAAOA,GAAG,IAAK,WAAW9G,EAAEsE,EAAE,MAAM,IAAK,0BAA0BquF,EAAEruF,EAAE,MAAM,IAAK,QAAQ0yZ,EAAG3zZ,EAAEopB,EAAEnoB,GAAG,MAAM,IAAK,iCAAiC,IAAK,2BAA2B,MAAM,QAAQovZ,EAAG5sZ,IAAI,oBAAoBxC,GAAG,kBAAkBA,GAAGjB,EAAEikB,KAAKwzM,EAAEvB,EAAEzyN,GAAG6vI,EAAE4iF,EAAEi9L,EAAElyZ,IAAI21N,GAAsB,OAAnB52N,EAAEikB,KAAKmoN,GAAGD,EAAEnsO,EAAEsvF,EAAE3yF,GAAUA,EAAE,CAC7V,IAAI23Z,GAAG9rW,EAAE,MAAM+rW,GAAG/rW,EAAE,KAAKgsW,GAAGhsW,EAAE,kBAAkBisW,GAAGjsW,EAAE,iBAAiBksW,GAAGlsW,EAAE,kBAAkBqsW,GAAGrsW,EAAE,iCAAiCssW,GAAGtsW,EAAE,iBAAiBysW,GAAGzsW,EAAE,mBAAmB0sW,GAAG1sW,EAAE,mBAAmB2mD,GAAG3mD,EAAE,aAAasmB,GAAGtmB,EAAE,KAAK2sW,GAAG3sW,EAAE,gBAAgBA,EAAE,eAAeA,EAAE,gBAAgB,IAAIitW,GAAGjtW,EAAE,gBAAgB,SAASotW,GAAG51Z,EAAEqpB,EAAErZ,GAAW,GAARwZ,EAAExpB,EAAE60Z,IAAO,OAAO7kZ,EAAE,MAAMsf,MAAM4D,EAAE,MAAa,OAAP1J,EAAExpB,EAAEgQ,GAAUnQ,EAAEG,EAAE80Z,GAAG,CACtY,IAAIe,GAAGrtW,EAAE,oBAAoBy0W,GAAGz0W,EAAE,MAAMutW,GAAGvtW,EAAE,UAAUwtW,GAAGxtW,EAAE,qDAAqD00W,GAAG10W,EAAE,MAAMytW,GAAGztW,EAAE,UAAUwzW,GAAGxzW,EAAE,sDAAsD0zW,GAAG1zW,EAAE,MAAM0tW,GAAG1tW,EAAE,WAAW8mD,GAAG9mD,EAAE,sBAAsB8tW,GAAG9tW,EAAE,MAAM+tW,GAAG/tW,EAAE,YAAYitD,GAAGjtD,EAAE,6BAA6BguW,GAAGhuW,EAAE,MAAMiuW,GAAGjuW,EAAE,oBAAoBkuW,GAAGluW,EAAE,0BAA0BolD,GAAGplD,EAAE,MAAMouW,GAAGpuW,EAAE,iBAAiBivW,GAAGjvW,EAAE,gCAAgCmtD,GAAGntD,EAAE,MAAMg0W,GAAGh0W,EAAE,uBAGnd,IAAI0wW,GAAG1wW,EAAE,0MAA0M2wW,GAAG3wW,EAAE,SAAS8wW,GAAG9wW,EAAE,OAAOsxW,GAAGtxW,EAAE,gBAAkB0xW,GAAG1xW,EAAE,6aACzQ2xW,GAAG3xW,EAAE,SAAS4xW,GAAG5xW,EAAE,OAAO6xW,GAAG7xW,EAAE,gBAAkBoyW,GAAGpyW,EAAE,0LAA0LuyW,GAAGvyW,EAAE,SAAS2yW,GAAG3yW,EAAE,KAAK+yW,GAAG/yW,EAAE,eAAiBgzW,GAAGhzW,EAAE,KAAK4zW,GAAG,mBAC3S,SAASE,GAAGt8Z,GAAG,OAAO2hD,KAAKC,UAAU5hD,GAAGmQ,QAAQisZ,IAAG,SAASp8Z,GAAG,OAAOA,GAAG,IAAK,IAAI,MAAM,UAAU,IAAK,SAAS,MAAM,UAAU,IAAK,SAAS,MAAM,UAAU,QAAQ,MAAMsvB,MAAM,qMAAsM,GAAE,CAC1X,IAAImiH,GAAE7rI,OAAO2mB,OAAOgwY,GAAGnjX,OAAO03V,IAAI,iBAAiBqsB,GAAG/jX,OAAO03V,IAAI,gBAAgBssB,GAAGhkX,OAAO03V,IAAI,kBAAkBusB,GAAGjkX,OAAO03V,IAAI,qBAAqBwsB,GAAGlkX,OAAO03V,IAAI,kBAAkBysB,GAAGnkX,OAAO03V,IAAI,kBAAkB0sB,GAAGpkX,OAAO03V,IAAI,iBAAiB2sB,GAAGrkX,OAAO03V,IAAI,qBAAqB4sB,GAAGtkX,OAAO03V,IAAI,kBAAkB6sB,GAAGvkX,OAAO03V,IAAI,uBAAuBj4R,GAAGz/D,OAAO03V,IAAI,cAAc8sB,GAAGxkX,OAAO03V,IAAI,cAAc+sB,GAAGzkX,OAAO03V,IAAI,eAAegtB,GAAG1kX,OAAO03V,IAAI,0BAA0BitB,GAAG3kX,OAAO03V,IAAI,uBACtektB,GAAG5kX,OAAO03V,IAAI,uBAAuBmtB,GAAG7kX,OAAOE,SAC/C,SAAS4kX,GAAGl+Z,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAE+8B,aAAa/8B,EAAEjH,MAAM,KAAK,GAAG,kBAAkBiH,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKo9Z,GAAG,MAAM,WAAW,KAAKD,GAAG,MAAM,SAAS,KAAKG,GAAG,MAAM,WAAW,KAAKD,GAAG,MAAM,aAAa,KAAKK,GAAG,MAAM,WAAW,KAAKC,GAAG,MAAM,eAAe,GAAG,kBAAkB39Z,EAAE,OAAOA,EAAEy0P,UAAU,KAAK+oK,GAAG,OAAOx9Z,EAAE+8B,aAAa,WAAW,YAAY,KAAKwgY,GAAG,OAAOv9Z,EAAEq3I,SAASt6G,aAAa,WAAW,YAAY,KAAK0gY,GAAG,IAAIp0Y,EAAErpB,EAAEhI,OAC7Z,OADoagI,EAAEA,EAAE+8B,eACnd/8B,EAAE,MADieA,EAAEqpB,EAAE0T,aAClf1T,EAAEtwB,MAAM,IAAY,cAAciH,EAAE,IAAI,cAAqBA,EAAE,KAAK64G,GAAG,OAA6B,QAAtBxvF,EAAErpB,EAAE+8B,aAAa,MAAc1T,EAAE60Y,GAAGl+Z,EAAEvD,OAAO,OAAO,KAAKmha,GAAGv0Y,EAAErpB,EAAE20Z,SAAS30Z,EAAEA,EAAE40Z,MAAM,IAAI,OAAOsJ,GAAGl+Z,EAAEqpB,GAAG,CAAC,MAAMrZ,GAAG,EAAE,OAAO,IAAI,CAAC,IAAImuZ,GAAG,CAAC,EAAE,SAAS7jS,GAAGt6H,EAAEqpB,GAAoB,KAAjBrpB,EAAEA,EAAEisZ,cAAmB,OAAOkS,GAAG,IAAS/0Y,EAALpZ,EAAE,CAAC,EAAI,IAAIoZ,KAAKppB,EAAEgQ,EAAEoZ,GAAGC,EAAED,GAAG,OAAOpZ,CAAC,CAAC,IAAIomZ,GAAE,KACvT,SAAS32D,GAAEz/V,EAAEqpB,GAAG,GAAGrpB,IAAIqpB,EAAE,CAACrpB,EAAEw6C,QAAQ4jX,cAAcp+Z,EAAEg1Z,YAAYh1Z,EAAEA,EAAEw9I,OAAO,IAAIxtI,EAAEqZ,EAAEm0H,OAAO,GAAG,OAAOx9I,GAAG,GAAG,OAAOgQ,EAAE,MAAMsf,MAAM4D,EAAE,UAAW,CAAC,GAAG,OAAOljB,EAAE,MAAMsf,MAAM4D,EAAE,MAAMusU,GAAEz/V,EAAEgQ,EAAE,CAACqZ,EAAEmxB,QAAQ4jX,cAAc/0Y,EAAE3gB,KAAK,CAAC,CAAC,SAAS21Z,GAAGr+Z,GAAGA,EAAEw6C,QAAQ4jX,cAAcp+Z,EAAEg1Z,YAAuB,QAAXh1Z,EAAEA,EAAEw9I,SAAiB6gR,GAAGr+Z,EAAE,CAAC,SAASs+Z,GAAGt+Z,GAAG,IAAIqpB,EAAErpB,EAAEw9I,OAAO,OAAOn0H,GAAGi1Y,GAAGj1Y,GAAGrpB,EAAEw6C,QAAQ4jX,cAAcp+Z,EAAE0I,KAAK,CAClX,SAAS61Z,GAAGv+Z,EAAEqpB,GAAoD,GAAjDrpB,EAAEw6C,QAAQ4jX,cAAcp+Z,EAAEg1Z,YAA0B,QAAdh1Z,EAAEA,EAAEw9I,QAAmB,MAAMluH,MAAM4D,EAAE,MAAMlzB,EAAE65H,QAAQxwG,EAAEwwG,MAAM4lO,GAAEz/V,EAAEqpB,GAAGk1Y,GAAGv+Z,EAAEqpB,EAAE,CAAC,SAASm1Y,GAAGx+Z,EAAEqpB,GAAG,IAAIrZ,EAAEqZ,EAAEm0H,OAAO,GAAG,OAAOxtI,EAAE,MAAMsf,MAAM4D,EAAE,MAAMlzB,EAAE65H,QAAQ7pH,EAAE6pH,MAAM4lO,GAAEz/V,EAAEgQ,GAAGwuZ,GAAGx+Z,EAAEgQ,GAAGqZ,EAAEmxB,QAAQ4jX,cAAc/0Y,EAAE3gB,KAAK,CAAC,SAAS43I,GAAEtgJ,GAAG,IAAIqpB,EAAE+sY,GAAE/sY,IAAIrpB,IAAI,OAAOqpB,EAAEi1Y,GAAGt+Z,GAAG,OAAOA,EAAEq+Z,GAAGh1Y,GAAGA,EAAEwwG,QAAQ75H,EAAE65H,MAAM4lO,GAAEp2U,EAAErpB,GAAGqpB,EAAEwwG,MAAM75H,EAAE65H,MAAM0kS,GAAGl1Y,EAAErpB,GAAGw+Z,GAAGn1Y,EAAErpB,GAAGo2Z,GAAEp2Z,EAAE,CAC7X,IAAIy+Z,GAAG,CAACrJ,UAAU,WAAW,OAAM,CAAE,EAAEC,gBAAgB,SAASr1Z,EAAEqpB,GAAuB,QAApBrpB,EAAEA,EAAEs1Z,iBAAyBnyN,OAAOnjM,EAAEmjM,MAAMl/K,KAAKoF,EAAE,EAAEksY,oBAAoB,SAASv1Z,EAAEqpB,IAAGrpB,EAAEA,EAAEs1Z,iBAAkBnlZ,SAAQ,EAAGnQ,EAAEmjM,MAAM,CAAC95K,EAAE,EAAEmsY,mBAAmB,WAAW,GACxO,SAASkJ,GAAG1+Z,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAI4J,OAAE,IAAShzB,EAAEhK,MAAMgK,EAAEhK,MAAM,KAAKgK,EAAEmuL,QAAQswO,GAAGz+Z,EAAEmB,MAAM6O,EAAEhQ,EAAEhK,MAAMg9B,EAAE,IAAIr2B,EAAE,CAACwmM,MAAM,GAAGhzL,SAAQ,GAAInQ,EAAEs1Z,gBAAgB34Z,EAAE,IAAI2yF,EAAEjmE,EAAEqtN,YAAkL,GAAtK12O,EAAEw6C,QAAQ,kBAAkB80C,GAAG,OAAOA,EAAEA,EAAE8uU,cAAch1Y,EAA+B,oBAA7BkmE,EAAEjmE,EAAEkrN,4BAA0DvhN,EAAE,QAAXs8D,EAAEA,EAAEt/E,EAAEgjB,UAAe,IAASs8D,EAAEt8D,EAAEy+G,GAAE,CAAC,EAAEz+G,EAAEs8D,GAAGtvF,EAAEhK,MAAMg9B,GAAM,oBAAoB3J,EAAEkrN,0BAA0B,oBAAoBv0O,EAAE0mU,0BAA0B,oBAAoB1mU,EAAE01Z,2BAA2B,oBAAoB11Z,EAAE21Z,oBAAoB,GAAGtsY,EACrgBrpB,EAAEhK,MAAM,oBAAoBgK,EAAE21Z,oBAAoB31Z,EAAE21Z,qBAAqB,oBAAoB31Z,EAAE01Z,2BAA2B11Z,EAAE01Z,4BAA4BrsY,IAAIrpB,EAAEhK,OAAOyoa,GAAGlJ,oBAAoBv1Z,EAAEA,EAAEhK,MAAM,MAAM,OAAO2G,EAAEwmM,OAAO,EAAExmM,EAAEwmM,MAAMr+L,OAAO,GAAGukB,EAAE1sB,EAAEwmM,MAAM7zG,EAAE3yF,EAAEwT,QAAQxT,EAAEwmM,MAAM,KAAKxmM,EAAEwT,SAAQ,EAAGm/E,GAAG,IAAIjmE,EAAEvkB,OAAO9E,EAAEhK,MAAMqzB,EAAE,OAAO,CAAuB,IAAtB1sB,EAAE2yF,EAAEjmE,EAAE,GAAGrpB,EAAEhK,MAAMg9B,GAAE,EAAOs8D,EAAEA,EAAE,EAAE,EAAEA,EAAEjmE,EAAEvkB,OAAOwqF,IAAI,CAAC,IAAIruF,EAAEooB,EAAEimE,GAA6C,OAA1CruF,EAAE,oBAAoBA,EAAEA,EAAEyoB,KAAK1pB,EAAErD,EAAEqT,EAAEoZ,GAAGnoB,KAAY+xB,GAAGA,GAAE,EAAGr2B,EAAE80I,GAAE,CAAC,EAAE90I,EAAEsE,IAAIwwI,GAAE90I,EAAEsE,GAAG,CAACjB,EAAEhK,MAAM2G,CAAC,MAAMA,EAAEwmM,MAAM,IAAI,CAC3e,IAAIw7N,GAAG,CAACtoa,GAAG,EAAEO,SAAS,IAAI,SAASgoa,GAAG5+Z,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEppB,EAAE3J,GAAG2J,EAAEA,EAAEpJ,SAAS,IAAIo8B,EAAE,GAAG6rY,GAAGz1Y,GAAG,EAAEA,KAAK,GAAG4J,GAAGhjB,GAAG,EAAE,IAAIrT,EAAE,GAAGkia,GAAGx1Y,GAAG2J,EAAE,GAAG,GAAGr2B,EAAE,CAAC,IAAI2yF,EAAEt8D,EAAEA,EAAE,EAAyC,OAAvCr2B,GAAGysB,GAAG,GAAGkmE,GAAG,GAAGn3C,SAAS,IAAI/uB,IAAIkmE,EAAEt8D,GAAGs8D,EAAQ,CAACj5F,GAAG,GAAG,GAAGwoa,GAAGx1Y,GAAG2J,EAAEhjB,GAAGgjB,EAAE5J,EAAExyB,SAAS+F,EAAEqD,EAAE,CAAC,MAAM,CAAC3J,GAAG,GAAGsG,EAAEqT,GAAGgjB,EAAE5J,EAAExyB,SAASoJ,EAAE,CAAC,IAAI6+Z,GAAG9mZ,KAAK+9Y,MAAM/9Y,KAAK+9Y,MAAiC,SAAY91Z,GAAU,OAAO,KAAdA,KAAK,GAAe,GAAG,IAAI8+Z,GAAG9+Z,GAAG++Z,GAAG,GAAG,CAAC,EAA/ED,GAAG/mZ,KAAKhgB,IAAIgna,GAAGhnZ,KAAKymG,IACtT,IAAIwgT,GAAG,oBAAoBp5Z,OAAOk6L,GAAGl6L,OAAOk6L,GADsU,SAAY9/L,EAAEqpB,GAAG,OAAOrpB,IAAIqpB,IAAI,IAAIrpB,GAAG,EAAEA,IAAI,EAAEqpB,IAAIrpB,IAAIA,GAAGqpB,IAAIA,CAAC,EAC/XstY,GAAE,KAAKsI,GAAG,KAAKC,GAAG,KAAKv1R,GAAE,KAAKssF,IAAE,EAAGkpM,IAAG,EAAG5G,GAAE,EAAEM,GAAE,KAAKuG,GAAG,EAAE,SAAS5uR,KAAI,GAAG,OAAOmmR,GAAE,MAAMrnY,MAAM4D,EAAE,MAAM,OAAOyjY,EAAC,CAAC,SAAS0I,KAAK,GAAG,EAAED,GAAG,MAAM9vY,MAAM4D,EAAE,MAAM,MAAM,CAACmjY,cAAc,KAAKlzN,MAAM,KAAKryK,KAAK,KAAK,CAAC,SAASwuY,KAAwG,OAAnG,OAAO31R,GAAE,OAAOu1R,IAAIjpM,IAAE,EAAGipM,GAAGv1R,GAAE01R,OAAOppM,IAAE,EAAGtsF,GAAEu1R,IAAI,OAAOv1R,GAAE74G,MAAMmlM,IAAE,EAAGtsF,GAAEA,GAAE74G,KAAKuuY,OAAOppM,IAAE,EAAGtsF,GAAEA,GAAE74G,MAAa64G,EAAC,CAAC,SAAS41R,KAAKN,GAAGtI,GAAE,KAAKwI,IAAG,EAAGD,GAAG,KAAKE,GAAG,EAAEz1R,GAAEkvR,GAAE,IAAI,CAAC,SAAS2G,GAAGx/Z,EAAEqpB,GAAG,MAAM,oBAAoBA,EAAEA,EAAErpB,GAAGqpB,CAAC,CAC5d,SAASo2Y,GAAGz/Z,EAAEqpB,EAAErZ,GAAgB,GAAb2mZ,GAAEnmR,KAAI7G,GAAE21R,KAAQrpM,GAAE,CAAC,IAAI7sM,EAAEugH,GAAEw5D,MAAmB,GAAb95K,EAAED,EAAE63C,SAAY,OAAO43V,SAAe,KAAX7oZ,EAAE6oZ,GAAEnrY,IAAItE,IAAe,CAACyvY,GAAEnhX,OAAOtuB,GAAGA,EAAEugH,GAAE0sR,cAAc,GAAGjtY,EAAEppB,EAAEopB,EAAEpZ,EAAEsF,QAAQtF,EAAEA,EAAE8gB,WAAW,OAAO9gB,GAAqB,OAAlB25H,GAAE0sR,cAAcjtY,EAAQ,CAACA,EAAEC,EAAE,CAAC,MAAM,CAACsgH,GAAE0sR,cAAchtY,EAAE,CAA6I,OAA5IrpB,EAAEA,IAAIw/Z,GAAG,oBAAoBn2Y,EAAEA,IAAIA,OAAE,IAASrZ,EAAEA,EAAEqZ,GAAGA,EAAEsgH,GAAE0sR,cAAcr2Z,EAAsCA,GAApCA,EAAE2pI,GAAEw5D,MAAM,CAAC58K,KAAK,KAAK06C,SAAS,OAAUA,SAASy+V,GAAG5tY,KAAK,KAAK6kY,GAAE32Z,GAAS,CAAC2pI,GAAE0sR,cAAcr2Z,EAAE,CAC9Y,SAAS2/Z,GAAG3/Z,EAAEqpB,GAAoC,GAAjCstY,GAAEnmR,KAAWnnH,OAAE,IAASA,EAAE,KAAKA,EAAK,QAA9BsgH,GAAE21R,MAAqC,CAAC,IAAItvZ,EAAE25H,GAAE0sR,cAAc,GAAG,OAAOrmZ,GAAG,OAAOqZ,EAAE,CAAC,IAAID,EAAEpZ,EAAE,GAAGhQ,EAAE,GAAG,OAAOopB,EAAEA,GAAE,MAAO,CAAC,IAAI,IAAI4J,EAAE,EAAEA,EAAE5J,EAAEtkB,QAAQkuB,EAAE3J,EAAEvkB,OAAOkuB,IAAI,IAAIgsY,GAAG31Y,EAAE2J,GAAG5J,EAAE4J,IAAI,CAAC5J,GAAE,EAAG,MAAMppB,CAAC,CAACopB,GAAE,CAAE,CAAC,GAAGA,EAAE,OAAOpZ,EAAE,EAAE,CAAC,CAA6B,OAA5BhQ,EAAEA,IAAI2pI,GAAE0sR,cAAc,CAACr2Z,EAAEqpB,GAAUrpB,CAAC,CAAC,SAAS0/Z,GAAG1/Z,EAAEqpB,EAAErZ,GAAG,GAAG,IAAIovZ,GAAG,MAAM9vY,MAAM4D,EAAE,MAAM,GAAGlzB,IAAI22Z,GAAE,GAAGwI,IAAG,EAAGn/Z,EAAE,CAACsV,OAAOtF,EAAE8gB,KAAK,MAAM,OAAO+nY,KAAIA,GAAE,IAAI1mO,UAAgB,KAAXniL,EAAE6oZ,GAAEnrY,IAAIrE,IAAcwvY,GAAEjkY,IAAIvL,EAAErpB,OAAO,CAAC,IAAIqpB,EAAErZ,EAAE,OAAOqZ,EAAEyH,MAAMzH,EAAEA,EAAEyH,KAAKzH,EAAEyH,KAAK9wB,CAAC,CAAC,CACjd,SAAS4/Z,KAAK,MAAMtwY,MAAM4D,EAAE,KAAM,CAAC,SAAS2sY,KAAK,CACjD,IAAIC,GAAG,CAACjJ,YAAY,SAAS72Z,GAAG,OAAOA,EAAEo+Z,aAAa,EAAEtH,WAAW,SAAS92Z,GAAO,OAAJwwI,KAAWxwI,EAAEo+Z,aAAa,EAAEnyV,QAAQ0zV,GAAG5I,WAAW0I,GAAGp9Z,OAAO,SAASrC,GAAG22Z,GAAEnmR,KAAW,IAAInnH,GAAXsgH,GAAE21R,MAAajJ,cAAc,OAAO,OAAOhtY,GAAGrpB,EAAE,CAAC1I,QAAQ0I,GAAG2pI,GAAE0sR,cAAcr2Z,GAAGqpB,CAAC,EAAEtuB,SAAS,SAASiF,GAAG,OAAOy/Z,GAAGD,GAAGx/Z,EAAE,EAAEg3Z,mBAAmB6I,GAAG5yV,gBAAgB,WAAW,EAAEv1D,YAAY,SAAS1X,EAAEqpB,GAAG,OAAOs2Y,IAAG,WAAW,OAAO3/Z,CAAC,GAAEqpB,EAAE,EAAE4tY,oBAAoB4I,GAAG3ja,UAAU2ja,GAAG1tV,cAAc0tV,GAAG3I,iBAAiB,SAASl3Z,GAAO,OAAJwwI,KAAWxwI,CAAC,EAAEm3Z,cAAc,WACnf,OAD8f3mR,KACxf,EAAC,EAAGovR,GAAG,EAAExI,MAAM,WAAW,IAAIp3Z,EAAEi/Z,GAAG5H,YAAgBhuY,EAAErpB,EAAEpJ,SAAgBoJ,IAAPA,EAAEA,EAAE3J,MAAU,GAAG,GAAGwoa,GAAG7+Z,GAAG,IAAIm4C,SAAS,IAAI9uB,EAAE,IAAIrZ,EAAE+vZ,GAAG,GAAG,OAAO/vZ,EAAE,MAAMsf,MAAM4D,EAAE,MAAgE,OAA1D7J,EAAEkvY,KAAIv4Z,EAAE,IAAIgQ,EAAE0yP,SAAS,IAAI1iQ,EAAE,EAAEqpB,IAAIrpB,GAAG,IAAIqpB,EAAE8uB,SAAS,KAAYn4C,EAAE,GAAG,EAAEs3Z,iBAAiB,SAASt3Z,EAAEqpB,GAAO,OAAJmnH,KAAWnnH,EAAErpB,EAAEu3Z,QAAQ,EAAEC,qBAAqB,SAASx3Z,EAAEqpB,EAAErZ,GAAG,QAAG,IAASA,EAAE,MAAMsf,MAAM4D,EAAE,MAAM,OAAOljB,GAAG,GAAG+vZ,GAAG,KAAKC,GAAG9P,EAAGwH,mDAAmDC,uBAAuB,SAASsI,GAAGjga,GAAoB,OAAjBlI,QAAQD,MAAMmI,GAAU,IAAI,CACnf,SAAS4iJ,KAAI,CAEuC,SAASs9Q,GAAGlga,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,EAAEr2B,EAAE2yF,EAAEruF,GAAGjB,EAAE63Z,kBAAkB,OAAO7nZ,EAAEhQ,EAAE83Z,mBAAmB9nZ,EAAE+nZ,eAAe,IAAIt5W,EAAE,CAACqkD,KAAKz5E,EAAE2uY,KAAK,WAAW,IAAI3uY,EAAErpB,EAAEi4Z,YAAY5uY,EAAEpF,KAAKw6B,GAAG,IAAIp1B,EAAEvkB,QAAQq7Z,GAAGnga,EAAE,EAAEm4Z,gBAAgBnoZ,EAAEooZ,eAAehvY,EAAEivY,SAASrlY,EAAEslY,cAAc37Z,EAAE69C,QAAQ80C,EAAE+nU,YAAYp2Z,GAAY,OAAT+xB,EAAE0N,IAAI+d,GAAUA,CAAC,CAAC,SAAS2hX,GAAGpga,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,EAAEr2B,GAAG,MAAM,CAACkN,OAAO,EAAExT,IAAI,EAAEwhB,MAAMwR,EAAEmvY,eAAc,EAAG5sS,OAAO,GAAGl1H,SAAS,GAAG+ha,cAAcrvY,EAAEsvY,SAAS1oZ,EAAE2oZ,eAAe3lY,EAAE4lY,aAAaj8Z,EAAE,CACve,SAASkmJ,GAAE7iJ,EAAEqpB,GAAkB,GAAG,OAAlBrpB,EAAEA,EAAE+1V,QAAQ1sU,KAAe,kBAAkBrpB,EAAE,MAAMsvB,MAAM,wMAAwMtvB,EAAE,aAAa,OAAOA,CAAC,CAAC,SAASqga,GAAGrga,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAE84Z,aAAa9oZ,EAAEqZ,IAAGrZ,EAAEhQ,EAAE+4Z,cAAe1vY,GAAG,OAAOrpB,EAAEg5Z,aAAah5Z,EAAE6J,OAAO,EAAEoyZ,EAAGj8Z,EAAEg5Z,YAAY3vY,KAAKrpB,EAAE6J,OAAO,EAAE7J,EAAEi5Z,WAAW5vY,EAAE,CAC7b,SAASi3Y,GAAGtga,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,GAAiB,IAAd2jY,GAAE,CAAC,EAAEsI,GAAG51Y,EAAEkvY,GAAE,EAAMv4Z,EAAEgQ,EAAEoZ,EAAE4J,GAAGmsY,IAAIA,IAAG,EAAG5G,GAAE,EAAE6G,IAAI,EAAEz1R,GAAE,KAAK3pI,EAAEgQ,EAAEoZ,EAAE4J,GAAQ,OAALusY,KAAYv/Z,CAAC,CAAC,SAASuga,GAAGvga,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAI4J,EAAEhjB,EAAEhY,SAAS2E,EAAEysB,EAAE4iY,kBAAkB,GAAG,OAAOrvZ,QAAG,IAASA,EAAE,CAAC,IAAI2yF,EAAEjmE,EAAEivY,cAAc,GAAG,oBAAoBtoZ,EAAEopZ,gBAAgBhwY,EAAEkmE,MAAM,CAAuB,IAAI,IAAIruF,KAA9B+O,EAAEA,EAAEopZ,kBAAiC,KAAKn4Z,KAAKtE,GAAG,MAAM2yB,MAAM4D,EAAE,IAAIgrY,GAAG90Y,IAAI,UAAUnoB,IAAImoB,EAAEqoH,GAAE,CAAC,EAAEniD,EAAEt/E,EAAE,CAACqZ,EAAEivY,cAAclvY,EAAEkjN,GAAEtsO,EAAEqpB,EAAE2J,GAAG3J,EAAEivY,cAAchpU,CAAC,MAAMg9I,GAAEtsO,EAAEqpB,EAAE2J,EAAE,CACha,SAASwtY,GAAGxga,EAAEqpB,GAAG,GAAGrpB,GAAGA,EAAEssB,aAAa,CAA4B,IAAI,IAAItc,KAAnCqZ,EAAEooH,GAAE,CAAC,EAAEpoH,GAAGrpB,EAAEA,EAAEssB,kBAA4B,IAASjD,EAAErZ,KAAKqZ,EAAErZ,GAAGhQ,EAAEgQ,IAAI,OAAOqZ,CAAC,CAAC,OAAOA,CAAC,CAC7H,SAASo3Y,GAAGzga,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,GAAG,GAAG,oBAAoBhjB,EAAE,GAAGA,EAAEmT,WAAWnT,EAAEmT,UAAUoxO,iBAAiB,CAACvhO,EAAEsnG,GAAGtqH,EAAEqZ,EAAEivY,eAAe,IAAI37Z,EAAEqT,EAAE0mO,YAAuEgoL,GAA3D/ha,EAAE,IAAIqT,EAAEoZ,EAAE,kBAAkBzsB,GAAG,OAAOA,EAAEA,EAAEyha,cAAcprY,GAAQhjB,EAAEoZ,EAAE4J,GAAGutY,GAAGvga,EAAEqpB,EAAE1sB,EAAEqT,EAAE,KAAK,CAAyBgjB,EAAEstY,GAAGtga,EAAEqpB,EAAErZ,EAAEoZ,EAAnCzsB,EAAE29H,GAAGtqH,EAAEqZ,EAAEivY,gBAA+B,IAAIhpU,EAAE,IAAIipU,GAAE,GAAG,kBAAkBvlY,GAAG,OAAOA,GAAG,oBAAoBA,EAAEh7B,aAAQ,IAASg7B,EAAEyhO,SAASiqK,GAAG1rY,EAAEhjB,EAAEoZ,EAAEzsB,GAAG4ja,GAAGvga,EAAEqpB,EAAE2J,EAAEhjB,QAAQ,GAAGs/E,EAAE,CAAClmE,EAAEC,EAAEguY,YAAYhuY,EAAEguY,YAAYuH,GAAGx1Y,EAAE,EAAE,GAAG,IAAIkjN,GAAEtsO,EAAEqpB,EAAE2J,EAAE,CAAC,QAAQ3J,EAAEguY,YAAYjuY,CAAC,CAAC,MAAMkjN,GAAEtsO,EAAEqpB,EAAE2J,EAAE,KAAM,IAAG,kBAC1ehjB,EAAoa,CAAC,OAAOA,GAAG,KAAK+tZ,GAAG,KAAKD,GAAG,KAAKT,GAAG,KAAKC,GAAG,KAAKF,GAC3d,KAAKO,GAAqB,YAAlBrxL,GAAEtsO,EAAEqpB,EAAED,EAAE1yB,UAAiB,KAAKmna,GAAG,MAAMvuY,MAAM4D,EAAE,MAAM,KAAKwqY,GAAG19Z,EAAE,CAACgQ,EAAEqZ,EAAE8uY,gBAAgBnlY,EAAE3J,EAAE+uY,eAAez7Z,EAAEysB,EAAEmwY,SAASnwY,EAAEA,EAAE1yB,SAAmB,IAAIuK,EAAE,CAAC5K,GAAG,KAAKmja,eAAe,EAAEhB,eAAc,EAAGT,aAAa,EAAE0B,mBAAkB,EAAGC,kBAAkB,GAAGC,SAAS,EAAEC,uBAA/HtqU,EAAE,IAAIw0G,IAAkJ+1N,YAAY,MAAMp7W,EAAE2hX,GAAGpga,EAAEgzB,EAAE44F,OAAO9mH,OAAO7D,EAAE+xB,EAAEylY,eAAc,GAAG,GAAIzlY,EAAEt8B,SAASutB,KAAKw6B,GAAGzrB,EAAE2lY,gBAAe,EAAG,IAAIl1Z,EAAE28Z,GAAGpga,EAAE,EAAE,KAAKgzB,EAAEylY,eAAc,GAAG,GAAIh1Z,EAAE+0Z,eAAc,EAAGnvY,EAAE8uY,gBAAgBl3Z,EAAEooB,EAAE+uY,eAAe30Z,EAAE,IAAI,GAAGi9Z,GAAG1ga,EACvfqpB,EAAED,GAAG3lB,EAAEk1Z,gBAAgBl1Z,EAAEm1Z,cAAcn1Z,EAAEmoH,OAAO3nG,KAAKmvY,GAAI3vZ,EAAEoG,OAAO,EAAE82Z,GAAG1/Z,EAAEwC,GAAG,IAAIxC,EAAE82Z,aAAa,MAAM/3Z,CAAC,CAAC,MAAMm3E,GAAG1zE,EAAEoG,OAAO,EAAE5I,EAAEw4Z,mBAAkB,EAAGx4Z,EAAE44Z,YAAYh3Q,GAAE7iJ,EAAEm3E,EAAE,CAAC,QAAQ9tD,EAAE8uY,gBAAgBnoZ,EAAEqZ,EAAE+uY,eAAeplY,CAAC,CAAC3J,EAAE62Y,GAAGlga,EAAErD,EAAEqT,EAAEyuC,EAAE6wC,EAAEjmE,EAAEivY,cAAcjvY,EAAEmxB,QAAQnxB,EAAEguY,aAAar3Z,EAAEi4Z,YAAYh0Y,KAAKoF,EAAE,CAAC,OAAO,GAAG,kBAAkBrZ,GAAG,OAAOA,EAAE,OAAOA,EAAEykP,UAAU,KAAKgpK,GAA0B,GAAvBr0Y,EAAEk3Y,GAAGtga,EAAEqpB,EAAErZ,EAAEhY,OAAOoxB,EAAE4J,GAAM,IAAIulY,GAAE,CAACvoZ,EAAEqZ,EAAEguY,YAAYhuY,EAAEguY,YAAYuH,GAAG5uZ,EAAE,EAAE,GAAG,IAAIs8N,GAAEtsO,EAAEqpB,EAAED,EAAE,CAAC,QAAQC,EAAEguY,YAAYrnZ,CAAC,CAAC,MAAMs8N,GAAEtsO,EAAEqpB,EAAED,GAAG,OAAO,KAAKyvF,GACjd,YAAd4nT,GAAGzga,EAAEqpB,EAD6drZ,EACnfA,EAAEvT,KAAK2sB,EAAEo3Y,GAAGxwZ,EAAEoZ,GAAc4J,GAAU,KAAKuqY,GAAkL,GAA/KvqY,EAAE5J,EAAE1yB,SAASsZ,EAAEA,EAAEqnI,SAASjuH,EAAEA,EAAE1gB,MAAM/L,EAAEqT,EAAEouZ,cAAcpuZ,EAAEouZ,cAAch1Y,EAAMgtY,GAAEhtY,EAAE,CAACo0H,OAATluD,EAAE8mU,GAAgBv8R,MAAM,OAAOvqC,EAAE,EAAEA,EAAEuqC,MAAM,EAAEr/E,QAAQxqC,EAAEglZ,YAAYr4Z,EAAE+L,MAAM0gB,GAAGC,EAAEmxB,QAAQpxB,EAAEkjN,GAAEtsO,EAAEqpB,EAAE2J,GAAU,QAAPhzB,EAAEo2Z,IAAc,MAAM9mY,MAAM4D,EAAE,MAAwG,OAAlG9J,EAAEppB,EAAEg1Z,YAAYh1Z,EAAEw6C,QAAQ4jX,cAAch1Y,IAAI40Y,GAAGh+Z,EAAEw6C,QAAQw/W,cAAc5wY,EAAEppB,EAAEo2Z,GAAEp2Z,EAAEw9I,YAAOn0H,EAAEmxB,QAAQx6C,GAAS,KAAKw9Z,GAA8C,YAATlxL,GAAEtsO,EAAEqpB,EAAzBD,GAAbA,EAAEA,EAAE1yB,UAAasZ,EAAEouZ,gBAA+B,KAAKR,GAA0D,YAAnB6C,GAAGzga,EAAEqpB,EAA/BrZ,GAAVgjB,EAAEhjB,EAAE4kZ,OAAU5kZ,EAAE2kZ,UAAUvrY,EAAEo3Y,GAAGxwZ,EAAEoZ,QAAc,GAAe,MAAMkG,MAAM4D,EAAE,IACpf,MAAMljB,EAAEA,SAASA,EAAE,IAAK,CAJoJ,OAA/IrT,EAAE03Z,IAArBrhY,EAAE3J,EAAE+uY,gBAAsBxsS,OAAO57G,EAAEoZ,EAAEppB,EAAE+5Z,cAAc/mY,EAAEylY,eAAezlY,EAAE2lY,gBAAe,EAAGrpU,EAAEt8D,EAAEylY,cAAczlY,EAAEylY,cA7CxH,SAAYz4Z,EAAEqpB,EAAErZ,GAAG,OAAOqZ,GAAG,IAAK,SAAS,OAAOysM,EAAE,EAAE,MAAM9lN,EAAEtH,MAAMsH,EAAEtH,MAAMsH,EAAExW,cAAc,IAAK,MAAM,OAAOs8N,EAAE,EAAE,MAAM,IAAK,OAAO,OAAOA,EAAE,EAAE,MAAM,IAAK,gBAAgB,OAAOA,EAAE,EAAE,MAAM,IAAK,QAAQ,OAAOA,EAAE,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAK,QAAQ,OAAOA,EAAE,EAAE,MAAM,IAAK,WAAW,OAAOA,EAAE,EAAE,MAAM,IAAK,KAAK,OAAOA,EAAE,EAAE,MAAM,OAAO,GAAG91N,EAAE6yZ,eAAe,IAAI7yZ,EAAE6yZ,cAAc/8L,EAAE,EAAE,MAAM91N,CAAC,CA6CjQs7Z,CAAGhsU,EAAEt/E,EAAEoZ,GAAGs3Y,GAAG1ga,EAAEqpB,EAAE1sB,GAAGq2B,EAAEylY,cAAcnpU,EAASt/E,GAAG,IAAK,OAAO,IAAK,OAAO,IAAK,KAAK,IAAK,MAAM,IAAK,QAAQ,IAAK,KAAK,IAAK,MAAM,IAAK,QAAQ,IAAK,SAAS,IAAK,OAAO,IAAK,OAAO,IAAK,QAAQ,IAAK,SAAS,IAAK,QAAQ,IAAK,MAAM,MAAM,QAAQgjB,EAAE44F,OAAO3nG,KAAKqwY,GAAGp+L,EAAElmN,GAAGukZ,IAAIvhY,EAAE2lY,gBAAe,CAI5Y,CAAC,CACzB,SAASrsL,GAAEtsO,EAAEqpB,EAAErZ,GAAY,GAATqZ,EAAEy5E,KAAK9yF,EAAK,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEykP,UAAU,KAAK8nK,GAAgC,YAA7BkE,GAAGzga,EAAEqpB,EAAErZ,EAAEvT,KAAKuT,EAAE7O,MAAM6O,EAAEhZ,KAAY,KAAKmma,GAAG,MAAM7tY,MAAM4D,EAAE,MAAM,KAAK0qY,GAAG,IAAIx0Y,EAAEpZ,EAAE4kZ,MAA+B,YAATtoL,GAAEtsO,EAAEqpB,EAApBrZ,EAAEoZ,EAAEpZ,EAAE2kZ,WAA0B,GAAGsF,EAAGjqZ,GAAc,YAAV4wZ,GAAG5ga,EAAEqpB,EAAErZ,GAA6G,GAAnG,OAAOA,GAAG,kBAAkBA,EAAEoZ,EAAE,KAAmCA,EAAE,oBAA/BA,EAAE60Y,IAAIjuZ,EAAEiuZ,KAAKjuZ,EAAE,eAAsCoZ,EAAE,KAASA,IAAIA,EAAEA,EAAEM,KAAK1Z,IAAI,CAAY,KAAXA,EAAEoZ,EAAE0H,QAAa8sB,KAAK,CAAC,IAAI5qB,EAAE,GAAG,GAAGA,EAAE/O,KAAKjU,EAAEtH,OAAOsH,EAAEoZ,EAAE0H,cAAc9gB,EAAE4tC,MAAMgjX,GAAG5ga,EAAEqpB,EAAE2J,EAAE,CAAC,MAAM,CAAqC,MAApChzB,EAAE4F,OAAOud,UAAUg1B,SAASzuB,KAAK1Z,GAASsf,MAAM4D,EAAE,GAAG,oBACpflzB,EAAE,qBAAqB4F,OAAOC,KAAKmK,GAAG6wC,KAAK,MAAM,IAAI7gD,GAAI,CAAC,kBAAkBgQ,GAAGoZ,EAAEC,EAAE+uY,gBAAiBO,eAAetF,EAAGhqY,EAAE+uY,eAAexsS,OAAO57G,EAAEhQ,EAAE+5Z,cAAc3wY,EAAEuvY,gBAAiB,kBAAkB3oZ,KAAIoZ,EAAEC,EAAE+uY,gBAAiBO,eAAetF,EAAGhqY,EAAE+uY,eAAexsS,OAAO,GAAG57G,EAAEhQ,EAAE+5Z,cAAc3wY,EAAEuvY,gBAAgB,CAAC,SAASiI,GAAG5ga,EAAEqpB,EAAErZ,GAAG,IAAI,IAAIoZ,EAAEpZ,EAAElL,OAAOkuB,EAAE,EAAEA,EAAE5J,EAAE4J,IAAI,CAAC,IAAIr2B,EAAE0sB,EAAEguY,YAAYhuY,EAAEguY,YAAYuH,GAAGjia,EAAEysB,EAAE4J,GAAG,IAAI0tY,GAAG1ga,EAAEqpB,EAAErZ,EAAEgjB,GAAG,CAAC,QAAQ3J,EAAEguY,YAAY16Z,CAAC,CAAC,CAAC,CACzb,SAAS+ja,GAAG1ga,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEC,EAAE+uY,eAAeK,cAAczlY,EAAE3J,EAAEivY,cAAc37Z,EAAE0sB,EAAEmxB,QAAQ,IAAI,OAAO8xL,GAAEtsO,EAAEqpB,EAAErZ,EAAE,CAAC,MAAMyuC,GAAG,GAAG8gX,KAAK,kBAAkB9gX,GAAG,OAAOA,GAAG,oBAAoBA,EAAE/mD,KAAyT,MAAM2xB,EAAE+uY,eAAeK,cAChgBrvY,EAAEC,EAAEivY,cAActlY,EAAE3J,EAAEmxB,QAAQ79C,EAAE2jJ,GAAE3jJ,GAAG8hD,EADiJzuC,EAAEyuC,EAAE,IAAI6wC,EAAEjmE,EAAE+uY,eAAen3Z,EAAEm/Z,GAAGpga,EAAEsvF,EAAEs8B,OAAO9mH,OAAO,KAAKwqF,EAAEmpU,cAAcnpU,EAAEqpU,gBAAe,GAAIrpU,EAAE54F,SAASutB,KAAKhjB,GAAGquF,EAAEqpU,gBAAe,EAAG34Z,EAAEkga,GAAGlga,EAAEqpB,EAAEy5E,KAAKz5E,EAAE8uY,gBAAgBl3Z,EAAEooB,EAAEgvY,SAAShvY,EAAEivY,cAAcjvY,EAAEmxB,QAAQnxB,EAAEguY,aAAaW,KAAKhoZ,EAAEtY,KAAKsI,EAAEA,GAAGqpB,EAAE+uY,eAAeK,cAAcrvY,EAAEC,EAAEivY,cAActlY,EAAE3J,EAAEmxB,QAAQ79C,EAAE2jJ,GAAE3jJ,EAC1b,CAAC,CAAC,SAASkka,GAAG7ga,GAAG,IAAIqpB,EAAErpB,EAAEm4Z,iBAAgBn4Z,EAAEA,EAAEo4Z,gBAAiBvuZ,OAAO,EAAE+vJ,GAAG32I,KAAKoG,EAAErpB,EAAE,CAC1H,SAAS8ga,GAAG9ga,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEppB,EAAEm4Z,gBAAgBn4Z,EAAEo4Z,eAAevuZ,OAAO,EAAE,OAAOuf,GAAGC,EAAEwuY,kBAAkB,IAAIxuY,EAAExf,SAASwf,EAAExf,OAAO,EAAE,OAAOwf,EAAE2vY,aAAa3vY,EAAE2vY,YAAY7mZ,WAAWiX,EAAE2uY,eAAe3uY,EAAEqwY,oBAAoBrwY,EAAEqwY,mBAAkB,EAAGz5Z,OAAE,IAASgQ,EAAEsf,MAAM4D,EAAE,MAAMljB,EAAEoZ,EAAEywY,YAAYxwY,EAAE0sU,QAAQ/1V,GAAGopB,EAAEovY,eAAenvY,EAAEixY,yBAAyBr2Y,KAAKmF,IAAIA,EAAEwwY,uBAAuBhoZ,SAAQ,SAAS5R,GAAG,OAAO8ga,GAAG9ga,EAAEqpB,EAAErZ,EAAE,IAAGoZ,EAAEwwY,uBAAuBp2W,QAAQn6B,EAAEwuY,kBAAkB,IAAIxuY,EAAEwuY,kBAAkBzuY,EAAEC,EAAEkxY,cAAgB,CACxf,SAASoG,GAAG3ga,EAAEqpB,GAAG,GAAG,IAAIA,EAAEuiG,OAAO9mH,QAAQ,IAAIukB,EAAE3yB,SAASoO,QAAQ,OAAOukB,EAAE3yB,SAAS,GAAGgia,SAAS,CAAC,IAAI1oZ,EAAEqZ,EAAE3yB,SAAS,GAAGsZ,EAAE3Z,GAAGgzB,EAAEhzB,GAAG2Z,EAAEwoZ,eAAc,EAAG,IAAIxoZ,EAAEnG,QAAQ82Z,GAAG3ga,EAAEgQ,EAAE,MAAMhQ,EAAE05Z,kBAAkBz1Y,KAAKoF,EAAE,CACtM,SAASuwI,GAAG55J,EAAEqpB,EAAErZ,GAAG,GAAG,OAAOqZ,EAAE,CAAC,GAAGrZ,EAAEwoZ,cAAc,CAAC,GAAG,OAAOx4Z,EAAEw6Z,qBAAqB,MAAMlrY,MAAM4D,EAAE,MAAMlzB,EAAEw6Z,qBAAqBxqZ,CAAC,CAAChQ,EAAE83Z,mBAAmB,IAAI93Z,EAAE83Z,mBAAmB93Z,EAAE84Z,aAAal2Q,IAAEv5H,EAAErpB,EAAEy6Z,gBAAiB,MAAMpxY,EAAE0uY,eAAe1uY,EAAEowY,oBAAoB,IAAIpwY,EAAE0uY,cAAc/nZ,EAAEwoZ,eAAe,IAAIxoZ,EAAEnG,QAAQ82Z,GAAGt3Y,EAAErZ,GAAGqZ,EAAEmvY,eAAex4Z,EAAE06Z,oBAAoBz2Y,KAAKoF,GAAGA,EAAEuwY,uBAAuBhoZ,QAAQivZ,GAAG7ga,GAAGqpB,EAAEuwY,uBAAuBp2W,SAASxzC,EAAEwoZ,eAAe,IAAIxoZ,EAAEnG,SAAS82Z,GAAGt3Y,EAAErZ,GAAG,IAAIqZ,EAAEqwY,kBAAkB50Z,QACtfukB,EAAEmvY,eAAex4Z,EAAE26Z,kBAAkB12Y,KAAKoF,KAAKrpB,EAAE63Z,kBAAkB,IAAI73Z,EAAE63Z,kBAAkB73Z,EAAEA,EAAEu6Z,aAAe,CAC9G,SAAS4F,GAAGnga,GAAG,GAAG,IAAIA,EAAE6J,OAAO,CAAC,IAAIwf,EAAE+sY,GAAEpmZ,EAAEgwZ,GAAG1oa,QAAQ0oa,GAAG1oa,QAAQwoa,GAAG,IAAI12Y,EAAE22Y,GAAGA,GAAG//Z,EAAE+5Z,cAAc,IAAI,IAAoBp9Z,EAAhBq2B,EAAEhzB,EAAEi4Z,YAAc,IAAIt7Z,EAAE,EAAEA,EAAEq2B,EAAEluB,OAAOnI,IAAI,CAAC,IAAI2yF,EAAEt8D,EAAEr2B,GAAOsE,EAAEjB,EAAEy+C,EAAE6wC,EAAE8oU,eAAe,GAAG,IAAI35W,EAAE50C,OAAO,CAACy2I,GAAEhxD,EAAE90C,SAAS,IAAI8xL,GAAErrO,EAAEquF,EAAEA,EAAEwT,MAAMrkD,EAAEk6W,gBAAgBl6W,EAAEm6W,cAAcn6W,EAAEmtE,OAAO3nG,KAAKmvY,GAAI9jU,EAAE+oU,SAAS3gX,OAAO43C,GAAG7wC,EAAE50C,OAAO,EAAE+vJ,GAAG34J,EAAEquF,EAAE6oU,gBAAgB15W,EAAE,CAAC,MAAMy0F,GAAG,GAAGqsR,KAAK,kBAAkBrsR,GAAG,OAAOA,GAAG,oBAAoBA,EAAEx7I,KAAK,CAAC,IAAI+L,EAAE6rF,EAAE0oU,KAAK9kR,EAAEx7I,KAAK+L,EAAEA,EAAE,KAAK,CAAC6rF,EAAE+oU,SAAS3gX,OAAO43C,GAAG7wC,EAAE50C,OAAO,EAAE,IAAIstE,EAAEmY,EAAE6oU,gBACvehoU,EAAE+iD,EAAE8C,EAAE6M,GAAE5hJ,EAAEkvF,GAA6K,GAA1K,OAAOhZ,EAAEkpV,GAAGp/Z,EAAEkvF,IAAIhZ,EAAE4gV,eAAe5gV,EAAEsiV,oBAAoBtiV,EAAEsiV,mBAAkB,EAAGtiV,EAAE0iV,YAAY7jR,EAAE7+D,EAAEqhV,eAAev3Z,EAAEq5Z,yBAAyBr2Y,KAAKkzD,KAAKl2E,EAAE42Z,kBAAqB,IAAI52Z,EAAE42Z,iBAAoC7hM,EAAb/0N,EAAEs5Z,aAAe,CAAC,CAAU,CAAC,CAACvnY,EAAEjM,OAAO,EAAEpqB,GAAG,OAAOqD,EAAEg5Z,aAAa+H,GAAG/ga,EAAEA,EAAEg5Z,YAAY,CAAC,MAAM9lR,GAAG2P,GAAE7iJ,EAAEkzI,GAAGmtR,GAAGrga,EAAEkzI,EAAE,CAAC,QAAQ6sR,GAAG32Y,EAAE42Y,GAAG1oa,QAAQ0Y,EAAEA,IAAI8vZ,IAAIx/Q,GAAEj3H,EAAE,CAAC,CAAC,CAC7W,SAAS23Y,GAAGhha,EAAEqpB,EAAErZ,GAAsB,OAAnBA,EAAEwoZ,eAAc,EAAUxoZ,EAAEnG,QAAQ,KAAK,EAAE,IAAIuf,EAAEpZ,EAAE3Z,GAAG2J,EAAE66Z,gBAAoI,OAApH7qZ,EAAE2oZ,gBAAe,EAAG3oZ,EAAE4oZ,cAAa,EAAG54Z,EAAEA,EAAE+5Z,cAAcvwY,EAAEH,EAAEmrY,IAAIhrY,EAAEH,EAAErpB,EAAE86Z,mBAAuCtxY,EAAEH,EAAtBrpB,EAAEk2N,EAAE9sM,EAAE+uB,SAAS,MAAmBt4C,EAAEwpB,EAAEorY,IAAI,KAAK,EAAEzkZ,EAAEnG,OAAO,EAAE,IAAImpB,GAAE,EAAG5J,EAAEpZ,EAAE47G,OAAO,IAAIjvH,EAAE,EAAEqT,EAAEA,EAAEtZ,SAAS,IAAI,IAAI44F,EAAE,EAAEA,EAAEt/E,EAAElL,OAAOwqF,IAAI,CAAC,IAAIt8D,EAAEhjB,EAAEs/E,GAAG3yF,EAAEq2B,EAAEnb,MAAMlb,IAAI6sB,EAAEH,EAAED,EAAEzsB,IAAIq2B,EAAEiuY,GAAGjha,EAAEqpB,EAAE2J,EAAE,CAAC,KAAKr2B,EAAEysB,EAAEtkB,OAAO,EAAEnI,IAAI6sB,EAAEH,EAAED,EAAEzsB,IAA8B,OAA1BA,EAAEysB,EAAEtkB,SAASkuB,EAAEnzB,EAAEwpB,EAAED,EAAEzsB,KAAYq2B,EAAE,QAAQ,MAAM1D,MAAM4D,EAAE,MAAO,CACpc,SAAS+tY,GAAGjha,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEpZ,EAAE0oZ,SAAS,GAAG,OAAOtvY,EAAE,OAAO43Y,GAAGhha,EAAEqpB,EAAErZ,GAAsB,GAAnBoZ,EAAEovY,eAAc,EAAMpvY,EAAEqwY,kBAAkBrwY,EAAEA,EAAEywY,YAAYh6Z,EAAEwpB,EAAE4rY,IAAIzrY,EAAEH,EAAE8lF,IAAI/lF,IAAII,EAAEH,EAAE8rY,IAAI3rY,EAAEH,EAAE6sM,EAAEi9L,EAAE/pY,KAAKI,EAAEH,EAAEylD,KAAKjvE,EAAEwpB,EAAEosY,IAAIuL,GAAGhha,EAAEqpB,EAAErZ,QAAQ,GAAG,EAAEoZ,EAAE2uY,aAAa,CAAC3uY,EAAEowY,cAAcx5Z,EAAE66Z,gBAAgB,EAAEzxY,EAAEswY,kBAAkB50Z,QAAQ9E,EAAE26Z,kBAAkB12Y,KAAKmF,GAAG,IAAI4J,EAAEhzB,EAAE+5Z,cAAkBp9Z,EAAEq2B,EAAEgoY,iBAAiBhoY,EAAEw1B,EAAEx1B,EAAEioY,eAAet+Z,EAAEw7C,SAAS,KAAK/uB,EAAEA,EAAE/yB,GAAG28B,EAAE4iY,GAAGvsY,EAAErpB,EAAE+5Z,cAAc3wY,GAAG43Y,GAAGhha,EAAEqpB,EAAErZ,EAAE,MAAM,GAAGoZ,EAAEuwY,SAAS35Z,EAAEk7Z,qBAAqB9xY,EAAEowY,cAAcx5Z,EAAE66Z,gBAChf76Z,EAAE06Z,oBAAoBz2Y,KAAKmF,GAAGwsY,GAAGvsY,EAAErpB,EAAE+5Z,cAAc3wY,EAAE/yB,IAAI2qa,GAAGhha,EAAEqpB,EAAErZ,OAAO,CAA+B,GAA9BnQ,EAAEwpB,EAAEqrY,IAA6B,KAAzB1kZ,EAAEoZ,EAAEswY,mBAA2B50Z,OAAO,MAAMwqB,MAAM4D,EAAE,MAAM+tY,GAAGjha,EAAEqpB,EAAErZ,EAAE,GAAG,CAAC,OAAOnQ,EAAEwpB,EAAE6rY,GAAG,CAAC,SAAS7+Z,GAAG2J,EAAEqpB,EAAErZ,GAAwD,OA7C9O,SAAYhQ,EAAEqpB,EAAErZ,EAAEoZ,GAAG,OAAOpZ,EAAE6iZ,eAAe,KAAK,EAAE,KAAK,EAAE,OAAOrpY,EAAExpB,EAAE61Z,IAAIrsY,EAAExpB,EAAEqpB,EAAE+xY,eAAe5xY,EAAExpB,EAAEk2N,EAAE9sM,EAAE+uB,SAAS,MAAMt4C,EAAEG,EAAEi9Z,IAAI,KAAK,EAAE,OAAOzzY,EAAExpB,EAAEg2Z,IAAIxsY,EAAExpB,EAAEqpB,EAAE+xY,eAAe5xY,EAAExpB,EAAEk2N,EAAE9sM,EAAE+uB,SAAS,MAAMt4C,EAAEG,EAAEk9Z,IAAI,KAAK,EAAE,OAAO1zY,EAAExpB,EAAEg8Z,IAAIxyY,EAAExpB,EAAEqpB,EAAE+xY,eAAe5xY,EAAExpB,EAAEk2N,EAAE9sM,EAAE+uB,SAAS,MAAMt4C,EAAEG,EAAEk8Z,IAAI,KAAK,EAAE,OAAO1yY,EAAExpB,EAAEsvG,IAAI9lF,EAAExpB,EAAEqpB,EAAE+xY,eAAe5xY,EAAExpB,EAAEk2N,EAAE9sM,EAAE+uB,SAAS,MAAMt4C,EAAEG,EAAEs2Z,IAAI,KAAK,EAAE,OAAO9sY,EAAExpB,EAAEy1G,IAAIjsF,EAAExpB,EAAEqpB,EAAE+xY,eAAe5xY,EAAExpB,EAAEk2N,EAAE9sM,EAAE+uB,SAAS,MAAMt4C,EAAEG,EAAEw2Z,IAAI,KAAK,EAAE,OAAOhtY,EAAExpB,EAAE02Z,IAAIltY,EAAExpB,EAAEqpB,EAAE+xY,eAAe5xY,EAAExpB,EAAEk2N,EAAE9sM,EAAE+uB,SAAS,MAAMt4C,EAAEG,EAAE4tG,IAAI,KAAK,EAAE,OAAOpkF,EAAExpB,EAChgBy3Z,IAAIjuY,EAAExpB,EAAEqpB,EAAE+xY,eAAe5xY,EAAExpB,EAAEk2N,EAAE9sM,EAAE+uB,SAAS,MAAMt4C,EAAEG,EAAE21G,IAAI,QAAQ,MAAMrmF,MAAM4D,EAAE,MAAO,CA4CoG0kY,CAAGvuY,EAAErpB,EAAE+5Z,cAAc/pZ,EAAEyoZ,cAAczoZ,EAAE3Z,IAAI4qa,GAAGjha,EAAEqpB,EAAErZ,GA5CrJ,SAAYhQ,EAAEqpB,GAAG,OAAOA,EAAEwpY,eAAe,KAAK,EAAE,KAAK,EAAE,OAAOhzZ,EAAEG,EAAE+1Z,IAAI,KAAK,EAAE,OAAOl2Z,EAAEG,EAAEi2Z,IAAI,KAAK,EAAE,OAAOp2Z,EAAEG,EAAEk2Z,IAAI,KAAK,EAAE,OAAOr2Z,EAAEG,EAAEu2Z,IAAI,KAAK,EAAE,OAAO12Z,EAAEG,EAAEy2Z,IAAI,KAAK,EAAE,OAAO52Z,EAAEG,EAAE42Z,IAAI,KAAK,EAAE,OAAO/2Z,EAAEG,EAAEw8Z,IAAI,QAAQ,MAAMltY,MAAM4D,EAAE,MAAO,CA4CxEglY,CAAG7uY,EAAErZ,EAAEyoZ,cAAc,CAC1Q,SAASyI,GAAGlha,EAAEqpB,EAAErZ,GAAG,IAAI,IAAIoZ,EAAEpZ,EAAE0pZ,kBAAkB1mY,EAAE,EAAEA,EAAE5J,EAAEtkB,OAAOkuB,IAAImuY,GAAGnha,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,IAAsK,GAAlK5J,EAAEtkB,OAAO,EAAE9E,EAAEA,EAAE+5Z,cAAc3wY,EAAEpZ,EAAE3Z,GAAG2Z,EAAEA,EAAEwpZ,cAAchwY,EAAEH,EAAErpB,EAAEy7Z,mBAAmBz7Z,EAAE07Z,6BAA6BlyY,EAAEH,EAAE8wY,KAAKn6Z,EAAE07Z,8BAA6B,EAAGlyY,EAAEH,EAAE6wY,KAAQ,OAAO9wY,EAAE,MAAMkG,MAAM4D,EAAE,MAAqE,OAA/DljB,EAAEkmN,EAAElmN,EAAEmoC,SAAS,KAAK3uB,EAAEH,EAAED,GAAGI,EAAEH,EAAE+wY,IAAI5wY,EAAEH,EAAErpB,EAAEo7Z,eAAe5xY,EAAEH,EAAErZ,GAAUnQ,EAAEwpB,EAAEgxY,GAAG,CAClW,SAAS8G,GAAGnha,EAAEqpB,EAAErZ,EAAEoZ,GAAG,GAAG,IAAIA,EAAEvf,OAAO,OAAM,EAAG,IAAImpB,EAAE5J,EAAE/yB,GAAG,IAAI,IAAI28B,EAAE,CAAC,IAAI,KAAK5J,EAAE/yB,GAAG2Z,EAAEwpZ,eAAe,MAAMlqY,MAAM4D,EAAE,MAAM,OAAO78B,GAAG2J,EAAEqpB,EAAED,EAAE,CAA+N,OAA9N/yB,GAAG2J,EAAEqpB,EAAED,GAAqBI,EAAEH,GAApBrpB,EAAEA,EAAE+5Z,eAAoB0B,mBAAmBz7Z,EAAE27Z,4BAA4BnyY,EAAEH,EAAE8vY,KAAKn5Z,EAAE27Z,6BAA4B,EAAGnyY,EAAEH,EAAE6vY,KAAK1vY,EAAEH,EAAErpB,EAAEo7Z,eAAmC5xY,EAAEH,EAAtB2J,EAAEkjM,EAAEljM,EAAEmlB,SAAS,MAAY3uB,EAAEH,EAAEiwY,IAAI9vY,EAAEH,EAAErpB,EAAE86Z,mBAAmBtxY,EAAEH,EAAE2J,GAAUnzB,EAAEwpB,EAAEywY,GAAG,CACpX,SAASiH,GAAG/ga,EAAEqpB,GAAGwwB,EAAE,IAAIc,WAAW,KAAKj3C,EAAE,EAAE,IAAI,IAAIsM,EAAEhQ,EAAEw6Z,qBAAqB,GAAG,OAAOxqZ,GAAG,IAAIhQ,EAAE83Z,iBAAiB,CAACmJ,GAAGjha,EAAEqpB,EAAErZ,GAAGhQ,EAAEw6Z,qBAAqB,KAAK,IAAIpxY,EAAEppB,EAAE+5Z,cAAc6B,gBAAgB,IAAI5rZ,EAAE,EAAEA,EAAEoZ,EAAEtkB,OAAO,EAAEkL,IAAIwZ,EAAEH,EAAED,EAAEpZ,IAAIA,EAAEoZ,EAAEtkB,QAAQjF,EAAEwpB,EAAED,EAAEpZ,GAAG,CAAC,IAAiCrT,EAA7Bq2B,EAAEhzB,EAAEs6Z,yBAA2B,IAAI39Z,EAAE,EAAEA,EAAEq2B,EAAEluB,OAAOnI,IAAI,CAAC,IAAI2yF,EAAEt8D,EAAEr2B,GAAGysB,EAAEC,EAAE,IAAIpoB,EAAEjB,EAAE+5Z,cAAct7W,EAAE6wC,EAAEj5F,GAAGoN,EAAE6rF,EAAEuqU,YAAY1iV,EAAEmY,EAAE1tB,aAAauuB,EAAEb,EAAEusU,oBAC7X,GADiZryY,EAAEJ,EAAEnoB,EAAEw6Z,mBAAmBx6Z,EAAE66Z,yBAAyBtyY,EAAEJ,EAAE2xY,KAAK95Z,EAAE66Z,0BAAyB,EAAGtyY,EAAEJ,EACnfwxY,KAAQ,OAAOn8W,EAAE,MAAMnvB,MAAM4D,EAAE,MAAuH,GAAjH1J,EAAEJ,EAAEq1B,GAAGj1B,EAAEJ,EAAE+xY,KAAO13Z,GAAG0zE,GAAGgZ,KAAE3mE,EAAEJ,EAAEoyY,IAAIhyY,EAAEJ,EAAE8sM,EAAEomM,GAAG74Z,GAAG,QAAS0zE,GAAGgZ,KAAE3mE,EAAEJ,EAAEoyY,IAAIhyY,EAAEJ,EAAE8sM,EAAEomM,GAAGnlV,GAAG,OAAMgZ,IAAI3mE,EAAEJ,EAAEoyY,IAAIhyY,EAAEJ,EAAE8sM,EAAEomM,GAAGnsU,OAAUtwF,EAAEupB,EAAEmyY,IAA0C,OAArCv7Z,EAAEg5Z,YAAY,KAAKr8Z,SAAIq2B,EAAEjM,OAAO,EAAEpqB,EAAU,CAACq2B,EAAEjM,OAAO,EAAEpqB,GAAG,IAAIq5I,EAAEh2I,EAAE06Z,oBAAoB,IAAI/9Z,EAAE,EAAEA,EAAEq5I,EAAElxI,OAAOnI,IAAI,IAAIuka,GAAGlha,EAAEqpB,EAAE2sH,EAAEr5I,IAA0C,OAArCqD,EAAEg5Z,YAAY,KAAKr8Z,SAAIq5I,EAAEjvH,OAAO,EAAEpqB,GAAUq5I,EAAEjvH,OAAO,EAAEpqB,GAAGo/Z,EAAG1yY,GAAGwwB,EAAE,IAAIc,WAAW,KAAKj3C,EAAE,EAAE,IAAIsyN,EAAEh2N,EAAE26Z,kBAAkB,IAAIh+Z,EAAE,EAAEA,EAAEq5N,EAAElxN,OAAOnI,IAAI,CAAC,IAAIu2I,EAAE8iF,EAAEr5N,GAAGqD,EAAE,CAACgzB,EAAEhzB,EAAEsvF,EAAEjmE,EAAE,IAAIopY,EAAGv/Q,EAAEwmR,kBAAkB,IAAIz4Z,EAAE,EAAEA,EAAEwxZ,EAAG3tZ,OAAO7D,IAAI,IAAIkga,GAAGnuY,EAC/fs8D,EAAE4jD,EAAEu/Q,EAAGxxZ,IAAI,CAACA,IAAIwxZ,EAAG1rY,OAAO,EAAE9lB,GAAG,IAAIo4Z,GAAG,EAAG,MAAMr5Z,CAAC,CAACyyZ,EAAG1rY,OAAO,EAAE9lB,GAAGo4Z,GAAG,CAAE,CAAC,IAAIA,EAAyC,OAArCr5Z,EAAEg5Z,YAAY,KAAKr8Z,SAAIq5N,EAAEjvM,OAAO,EAAEpqB,EAAU,CAACq5N,EAAEjvM,OAAO,EAAEpqB,GAAG,IAAI+1Z,EAAG1yZ,EAAE06Z,oBAAoB,IAAI/9Z,EAAE,EAAEA,EAAE+1Z,EAAG5tZ,OAAOnI,IAAI,IAAIuka,GAAGlha,EAAEqpB,EAAEqpY,EAAG/1Z,IAA2C,OAAtCqD,EAAEg5Z,YAAY,KAAKr8Z,SAAI+1Z,EAAG3rY,OAAO,EAAEpqB,GAAU+1Z,EAAG3rY,OAAO,EAAEpqB,EAAE,CAAC,QAAQo/Z,EAAG1yY,GAAG,IAAIrpB,EAAE63Z,iBAAiB,IAAI73Z,EAAEi4Z,YAAYnzZ,QAAQ,IAAI9E,EAAEs6Z,yBAAyBx1Z,QAAQ,IAAI9E,EAAE06Z,oBAAoB51Z,QAAQukB,EAAElX,OAAO,CAAC,CAC/Z,SAASivZ,GAAGpha,EAAEqpB,GAAG,IAAI,IAAIrZ,EAAEhQ,EAAEq8Z,eAAersZ,EAAE4B,SAAQ,SAAS5B,GAAG,OAAO8wZ,GAAG9wZ,EAAEhQ,EAAEqpB,EAAE,IAAGrZ,EAAEwzC,QAAQ,OAAOxjD,EAAEg5Z,aAAa+H,GAAG/ga,EAAEA,EAAEg5Z,YAAY,CAAC,MAAM5vY,GAAGy5H,GAAE7iJ,EAAEopB,GAAGi3Y,GAAGrga,EAAEopB,EAAE,CAAC,CACjK3uB,EAAQ4ma,uBAAuB,SAASrha,EAAEqpB,GAAG,OAAO,IAAI+B,SAAQ,SAASpb,EAAEoZ,GAAG,IAAI4J,EAAEr2B,EAAE2yF,EAAE,IAAIlkE,SAAQ,SAASprB,EAAEqpB,GAAG1sB,EAAEqD,EAAEgzB,EAAE3J,CAAC,IAAGpoB,EA9B5H,SAAYjB,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,EAAEr2B,EAAE2yF,EAAEruF,EAAEw9C,GAAG,IAAIh7C,EAAE,GAAG0zE,EAAE,IAAI2sH,IACH,OADya9zL,EAAEowZ,GAApa/2Y,EAAE,CAAC2vY,YAAY,KAAKe,cAAc1wY,EAAE6xY,0BAAqB,IAAS9xY,EAAE,MAAMA,EAAEvf,OAAO,EAAEovZ,WAAW,KAAK4B,cAAc,EAAEhD,gBAAgB,EAAEC,iBAAiB,EAAE0C,qBAAqB,KAAK6B,eAAellV,EAAE8gV,YAAYx0Z,EAAE62Z,yBAAyB,GAAGI,oBAAoB,GAAGC,kBAAkB,GAAG5kE,aAAQ,IAAS/iU,EAAEitY,GAAGjtY,EAAEunY,gBAAW,IAAS59Z,EAAEimJ,GAAEjmJ,EAAE89Z,kBAAa,IAASnrU,EAAEszD,GAAEtzD,EAAEwpU,kBAAa,IAAS73Z,EAAE2hJ,GAAE3hJ,EAAE83Z,kBAAa,IAASt6W,EAAEmkG,GAAEnkG,GAAU,EAAE,KAAKzuC,GAAE,GAAG,IAAMwoZ,eAC7e,EAAGx4Z,EAAEkga,GAAG72Y,EAAErpB,EAAE,KAAKgQ,EAAEmnE,EAAEgnV,GAAG,KAAKQ,IAAIl7Z,EAAEwgB,KAAKjkB,GAAUqpB,CAAC,CA6B2Ei4Y,CAAGtha,EAvEjI,SAAYA,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,GAAGhzB,OAAE,IAASA,EAAE,GAAGA,EAAEqpB,OAAE,IAASA,EAAEmsF,EAAGhtD,EAAE,kBAAkB2qW,EAAE9pY,GAAG,MAAM,IAAI1sB,EAAE,GAAqD,QAAlD,IAASqT,GAAGrT,EAAEsnB,KAAKoF,EAAE6sM,GAAG,GAAGlmN,GAAGG,QAAQ8iZ,EAAGC,IAAKJ,QAAO,IAAS1pY,EAAE,IAAIpZ,EAAE,EAAEA,EAAEoZ,EAAEtkB,OAAOkL,IAAIrT,EAAEsnB,KAAKqtB,EAAG4kL,EAAEi9L,EAAE/pY,EAAEpZ,KAAKgjZ,GAAI,QAAG,IAAShgY,EAAE,IAAI5J,EAAE,EAAEA,EAAE4J,EAAEluB,OAAOskB,IAAIzsB,EAAEsnB,KAAK8uY,EAAG78L,EAAEi9L,EAAEngY,EAAE5J,KAAK4pY,GAAI,MAAM,CAAC4I,gBAAgBj/Z,EAAE8+Z,kBAAkBpyY,EAAEyxY,kBAAkBtyW,EAAExoD,EAAE,MAAMo7Z,cAAc5yW,EAAExoD,EAAE,MAAMi7Z,eAAej7Z,EAAE,KAAK0iQ,SAAS1iQ,EAAEg7Z,eAAe,EAAEW,6BAA4B,EAAGD,8BAA6B,EAAGI,0BAAyB,EAAG,CAuE1XpmT,CAAGrsF,EAAEA,EAAEqzY,sBAAiB,EAAOrzY,EAAEA,EAAEk4Y,WAAM,EAAOl4Y,EAAEA,EAAEm4Y,4BAAuB,EAAOn4Y,EAAEA,EAAEo4Y,sBAAiB,EAAOp4Y,EAAEA,EAAEq4Y,sBAAiB,GAtE9M,SAAY1ha,GAAG,OAAO81N,EAAE,+BAA+B91N,EAAE,EAAE,uCAAuCA,EAAE,EAAE,EAAE,KAAK,CAsEyGq7Z,CAAGhyY,EAAEA,EAAEuvI,kBAAa,GAAQvvI,EAAEA,EAAE6xY,0BAAqB,EAAO7xY,EAAEA,EAAE0sU,aAAQ,EAAOp5V,GAAE,WAAW,IAAIqD,EAAE,IAAI2ha,eAAe,CAAClla,KAAK,QAAQmla,KAAK,SAAS5ha,GAAG,GAAG,IAAIiB,EAAE4I,OAAO5I,EAAE4I,OAAO,EAAEoyZ,EAAGj8Z,EAAEiB,EAAEg4Z,iBAAiB,GAAG,IAAIh4Z,EAAE4I,QAAQ,OAAO5I,EAAE+3Z,YAAY,CAAC/3Z,EAAE+3Z,YAC9fh5Z,EAAE,IAAI+ga,GAAG9/Z,EAAEjB,EAAE,CAAC,MAAMg2I,GAAG6M,GAAE5hJ,EAAE+0I,GAAGqqR,GAAGp/Z,EAAE+0I,EAAE,CAAC,CAAC,EAAEthH,OAAO,WAAW0sY,GAAGnga,EAAE,GAAG,CAAC4ga,cAAc,IAAI7ha,EAAE8ha,SAASxyU,EAAEt/E,EAAEhQ,EAAE,IAAE,SAASA,GAAGsvF,EAAE13F,OAAM,WAAW,IAAGwxB,EAAEppB,EAAE,GAAEgzB,GAAG,GAAG3J,GAAGA,EAAEokC,OAAO,CAAC,IAAIhP,EAAEp1B,EAAEokC,OAAOhqD,EAAE,WAAW29Z,GAAGnga,EAAEw9C,EAAEwR,QAAQxR,EAAEpJ,oBAAoB,QAAQ5xC,EAAE,EAAEg7C,EAAEtiD,iBAAiB,QAAQsH,EAAE,CAAC08Z,GAAGl/Z,EAAE,GAAE,EAAExG,EAAQu3D,QAAQ,sCCnF3R,IAAIk+V,EAAGx2Z,EAAQ,MAASmyI,EAAGnyI,EAAQ,MAAa,SAAS8vB,EAAExpB,GAAG,IAAI,IAAIqpB,EAAE,yDAAyDrpB,EAAEgQ,EAAE,EAAEA,EAAE2f,UAAU7qB,OAAOkL,IAAIqZ,GAAG,WAAW+4B,mBAAmBzyB,UAAU3f,IAAI,MAAM,yBAAyBhQ,EAAE,WAAWqpB,EAAE,gHAAgH,CAAC,IAAI4yY,EAAG,IAAIn4N,IAAIq4N,EAAG,CAAC,EAAE,SAAShM,EAAGnwZ,EAAEqpB,GAAG+mY,EAAGpwZ,EAAEqpB,GAAG+mY,EAAGpwZ,EAAE,UAAUqpB,EAAE,CACxb,SAAS+mY,EAAGpwZ,EAAEqpB,GAAW,IAAR8yY,EAAGn8Z,GAAGqpB,EAAMrpB,EAAE,EAAEA,EAAEqpB,EAAEvkB,OAAO9E,IAAIi8Z,EAAGv7X,IAAIrX,EAAErpB,GAAG,CAC5D,IAAIqwZ,IAAK,qBAAqBr0Z,QAAQ,qBAAqBA,OAAOyV,UAAU,qBAAqBzV,OAAOyV,SAASrV,eAAek0Z,EAAG1qZ,OAAOud,UAAUsG,eAAemnY,EAAG,8VAA8VC,EACpgB,CAAC,EAAE4B,EAAG,CAAC,EACiN,SAAStiU,EAAEnwF,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAEq2B,EAAEs8D,GAAGrsE,KAAKstY,gBAAgB,IAAIlnY,GAAG,IAAIA,GAAG,IAAIA,EAAEpG,KAAKuhL,cAAcp7K,EAAEnG,KAAKutY,mBAAmB7zZ,EAAEsmB,KAAKwtY,gBAAgBzgZ,EAAEiT,KAAK87P,aAAa/+Q,EAAEijB,KAAKxmB,KAAK4sB,EAAEpG,KAAKytY,YAAY19X,EAAE/P,KAAK0tY,kBAAkBrhU,CAAC,CAAC,IAAI+8I,EAAE,CAAC,EACpb,uIAAuIpgO,MAAM,KAAK2F,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAImwF,EAAEnwF,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAe4R,SAAQ,SAAS5R,GAAG,IAAIqpB,EAAErpB,EAAE,GAAGqsO,EAAEhjN,GAAG,IAAI8mE,EAAE9mE,EAAE,GAAE,EAAGrpB,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAAS4R,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAImwF,EAAEnwF,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiB7mC,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAImwF,EAAEnwF,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8OiM,MAAM,KAAK2F,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAImwF,EAAEnwF,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAY7mC,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAImwF,EAAEnwF,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAY4R,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAImwF,EAAEnwF,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQ4R,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAImwF,EAAEnwF,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAAS4R,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAImwF,EAAEnwF,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IAAG,IAAIwhX,EAAG,gBAAgB,SAASzkT,EAAGx1G,GAAG,OAAOA,EAAE,GAAG07C,aAAa,CAIxZ,SAASo3W,EAAG9yZ,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAIzsB,EAAE0vO,EAAE5iN,eAAeJ,GAAGgjN,EAAEhjN,GAAG,MAAQ,OAAO1sB,EAAE,IAAIA,EAAEF,KAAK2sB,KAAK,EAAEC,EAAEvkB,SAAS,MAAMukB,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,MAP9I,SAAYrpB,EAAEqpB,EAAErZ,EAAEoZ,GAAG,GAAG,OAAOC,GAAG,qBAAqBA,GADqE,SAAYrpB,EAAEqpB,EAAErZ,EAAEoZ,GAAG,GAAG,OAAOpZ,GAAG,IAAIA,EAAEvT,KAAK,OAAM,EAAG,cAAc4sB,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGD,IAAc,OAAOpZ,GAASA,EAAEugZ,gBAAmD,WAAnCvwZ,EAAEA,EAAEy4C,cAAc5mC,MAAM,EAAE,KAAsB,UAAU7R,GAAE,QAAQ,OAAM,EAAG,CAC/T41G,CAAG51G,EAAEqpB,EAAErZ,EAAEoZ,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOpZ,EAAE,OAAOA,EAAEvT,MAAM,KAAK,EAAE,OAAO4sB,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAOytD,MAAMztD,GAAG,KAAK,EAAE,OAAOytD,MAAMztD,IAAI,EAAEA,EAAE,OAAM,CAAE,CAOtEupY,CAAGvpY,EAAErZ,EAAErT,EAAEysB,KAAKpZ,EAAE,MAAMoZ,GAAG,OAAOzsB,EARxK,SAAYqD,GAAG,QAAGswZ,EAAG5mY,KAAK+oY,EAAGzyZ,KAAeswZ,EAAG5mY,KAAKmnY,EAAG7wZ,KAAe4wZ,EAAGlgY,KAAK1wB,GAAUyyZ,EAAGzyZ,IAAG,GAAG6wZ,EAAG7wZ,IAAG,GAAS,GAAE,CAQwD2yZ,CAAGtpY,KAAK,OAAOrZ,EAAEhQ,EAAEyiG,gBAAgBp5E,GAAGrpB,EAAEmrD,aAAa9hC,EAAE,GAAGrZ,IAAIrT,EAAE8zZ,gBAAgBzwZ,EAAErD,EAAEoiR,cAAc,OAAO/uQ,EAAE,IAAIrT,EAAEF,MAAQ,GAAGuT,GAAGqZ,EAAE1sB,EAAE6nM,cAAcp7K,EAAEzsB,EAAE6zZ,mBAAmB,OAAOxgZ,EAAEhQ,EAAEyiG,gBAAgBp5E,IAAarZ,EAAE,KAAXrT,EAAEA,EAAEF,OAAc,IAAIE,IAAG,IAAKqT,EAAE,GAAG,GAAGA,EAAEoZ,EAAEppB,EAAEwgK,eAAep3I,EAAEC,EAAErZ,GAAGhQ,EAAEmrD,aAAa9hC,EAAErZ,KAAI,CAHjd,0jCAA0jC/D,MAAM,KAAK2F,SAAQ,SAAS5R,GAAG,IAAIqpB,EAAErpB,EAAEmQ,QAAQ8pZ,EACzmCzkT,GAAI62H,EAAEhjN,GAAG,IAAI8mE,EAAE9mE,EAAE,GAAE,EAAGrpB,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2EiM,MAAM,KAAK2F,SAAQ,SAAS5R,GAAG,IAAIqpB,EAAErpB,EAAEmQ,QAAQ8pZ,EAAGzkT,GAAI62H,EAAEhjN,GAAG,IAAI8mE,EAAE9mE,EAAE,GAAE,EAAGrpB,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAa4R,SAAQ,SAAS5R,GAAG,IAAIqpB,EAAErpB,EAAEmQ,QAAQ8pZ,EAAGzkT,GAAI62H,EAAEhjN,GAAG,IAAI8mE,EAAE9mE,EAAE,GAAE,EAAGrpB,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAe4R,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAImwF,EAAEnwF,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IACld4zL,EAAEykL,UAAU,IAAI3gU,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAcv+E,SAAQ,SAAS5R,GAAGqsO,EAAErsO,GAAG,IAAImwF,EAAEnwF,EAAE,GAAE,EAAGA,EAAEy4C,cAAc,MAAK,GAAG,EAAG,IAE5L,IAAInH,EAAG4+W,EAAGwH,mDAAmD3E,EAAG35W,OAAO03V,IAAI,iBAAiBkiB,EAAG55W,OAAO03V,IAAI,gBAAgBoiB,EAAG95W,OAAO03V,IAAI,kBAAkBp7R,EAAGt8D,OAAO03V,IAAI,qBAAqBuqB,EAAGjiX,OAAO03V,IAAI,kBAAkBwqB,EAAGliX,OAAO03V,IAAI,kBAAkBsiB,EAAGh6W,OAAO03V,IAAI,iBAAiBuiB,EAAGj6W,OAAO03V,IAAI,qBAAqB2rB,EAAGrjX,OAAO03V,IAAI,kBAAkBwiB,EAAGl6W,OAAO03V,IAAI,uBAAuB2iB,EAAGr6W,OAAO03V,IAAI,cAAc4iB,EAAGt6W,OAAO03V,IAAI,cAAc13V,OAAO03V,IAAI,eAAe13V,OAAO03V,IAAI,0BACje,IAAI6iB,EAAGv6W,OAAO03V,IAAI,mBAAmB13V,OAAO03V,IAAI,uBAAuB13V,OAAO03V,IAAI,eAAe13V,OAAO03V,IAAI,wBAAwB,IAAI8iB,EAAGx6W,OAAOE,SAAS,SAASu6W,EAAG7zZ,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAE4zZ,GAAI5zZ,EAAE4zZ,IAAK5zZ,EAAE,eAA0CA,EAAE,IAAI,CAAC,IAAoB8zZ,EAAhB99Q,EAAEpwI,OAAO2mB,OAAU,SAASwnY,EAAG/zZ,GAAG,QAAG,IAAS8zZ,EAAG,IAAI,MAAMxkY,OAAQ,CAAC,MAAMtf,GAAG,IAAIqZ,EAAErZ,EAAEovC,MAAMzC,OAAO/rC,MAAM,gBAAgBkjZ,EAAGzqY,GAAGA,EAAE,IAAI,EAAE,CAAC,MAAM,KAAKyqY,EAAG9zZ,CAAC,CAAC,IAAIg0Z,GAAG,EACzb,SAASC,EAAGj0Z,EAAEqpB,GAAG,IAAIrpB,GAAGg0Z,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAIhkZ,EAAEsf,MAAMyyY,kBAAkBzyY,MAAMyyY,uBAAkB,EAAO,IAAI,GAAG14Y,EAAE,GAAGA,EAAE,WAAW,MAAMiG,OAAQ,EAAE1pB,OAAO6nB,eAAepE,EAAElG,UAAU,QAAQ,CAACyR,IAAI,WAAW,MAAMtF,OAAQ,IAAI,kBAAkB0yY,SAASA,QAAQC,UAAU,CAAC,IAAID,QAAQC,UAAU54Y,EAAE,GAAG,CAAC,MAAMwwB,GAAG,IAAIzwB,EAAEywB,CAAC,CAACmoX,QAAQC,UAAUjia,EAAE,GAAGqpB,EAAE,KAAK,CAAC,IAAIA,EAAEK,MAAM,CAAC,MAAMmwB,GAAGzwB,EAAEywB,CAAC,CAAC75C,EAAE0pB,KAAKL,EAAElG,UAAU,KAAK,CAAC,IAAI,MAAMmM,OAAQ,CAAC,MAAMuqB,GAAGzwB,EAAEywB,CAAC,CAAC75C,GAAG,CAAC,CAAC,MAAM65C,GAAG,GAAGA,GAAGzwB,GAAG,kBAAkBywB,EAAEuF,MAAM,CAAC,IAAI,IAAIziD,EAAEk9C,EAAEuF,MAAMnzC,MAAM,MACnf+mB,EAAE5J,EAAEg2B,MAAMnzC,MAAM,MAAMqjF,EAAE3yF,EAAEmI,OAAO,EAAE7D,EAAE+xB,EAAEluB,OAAO,EAAE,GAAGwqF,GAAG,GAAGruF,GAAGtE,EAAE2yF,KAAKt8D,EAAE/xB,IAAIA,IAAI,KAAK,GAAGquF,GAAG,GAAGruF,EAAEquF,IAAIruF,IAAI,GAAGtE,EAAE2yF,KAAKt8D,EAAE/xB,GAAG,CAAC,GAAG,IAAIquF,GAAG,IAAIruF,EAAG,MAAMquF,IAAQ,IAAJruF,GAAStE,EAAE2yF,KAAKt8D,EAAE/xB,GAAG,CAAC,IAAIiyB,EAAE,KAAKv2B,EAAE2yF,GAAGn/E,QAAQ,WAAW,QAA6F,OAArFnQ,EAAE+8B,aAAa7J,EAAEj4B,SAAS,iBAAiBi4B,EAAEA,EAAE/iB,QAAQ,cAAcnQ,EAAE+8B,cAAqB7J,CAAC,QAAO,GAAGo8D,GAAG,GAAGruF,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ+yZ,GAAG,EAAG1kY,MAAMyyY,kBAAkB/xZ,CAAC,CAAC,OAAOhQ,EAAEA,EAAEA,EAAE+8B,aAAa/8B,EAAEjH,KAAK,IAAIg7Z,EAAG/zZ,GAAG,EAAE,CAC9Z,SAASk0Z,EAAGl0Z,GAAG,OAAOA,EAAEsH,KAAK,KAAK,EAAE,OAAOysZ,EAAG/zZ,EAAEvD,MAAM,KAAK,GAAG,OAAOs3Z,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO/zZ,EAAEi0Z,EAAGj0Z,EAAEvD,MAAK,GAAM,KAAK,GAAG,OAAOuD,EAAEi0Z,EAAGj0Z,EAAEvD,KAAKzE,QAAO,GAAM,KAAK,EAAE,OAAOgI,EAAEi0Z,EAAGj0Z,EAAEvD,MAAK,GAAM,QAAQ,MAAM,GAAG,CACxR,SAAS03Z,EAAGn0Z,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAE+8B,aAAa/8B,EAAEjH,MAAM,KAAK,GAAG,kBAAkBiH,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKkzZ,EAAG,MAAM,WAAW,KAAKF,EAAG,MAAM,SAAS,KAAKqI,EAAG,MAAM,WAAW,KAAK3lT,EAAG,MAAM,aAAa,KAAK+mT,EAAG,MAAM,WAAW,KAAKnJ,EAAG,MAAM,eAAe,GAAG,kBAAkBtzZ,EAAE,OAAOA,EAAEy0P,UAAU,KAAK2+J,EAAG,OAAOpzZ,EAAE+8B,aAAa,WAAW,YAAY,KAAKu+X,EAAG,OAAOt7Z,EAAEq3I,SAASt6G,aAAa,WAAW,YAAY,KAAKs2X,EAAG,IAAIhqY,EAAErpB,EAAEhI,OAC7Z,OADoagI,EAAEA,EAAE+8B,eACnd/8B,EAAE,MADieA,EAAEqpB,EAAE0T,aAClf1T,EAAEtwB,MAAM,IAAY,cAAciH,EAAE,IAAI,cAAqBA,EAAE,KAAKyzZ,EAAG,OAA6B,QAAtBpqY,EAAErpB,EAAE+8B,aAAa,MAAc1T,EAAE8qY,EAAGn0Z,EAAEvD,OAAO,OAAO,KAAKi3Z,EAAGrqY,EAAErpB,EAAE20Z,SAAS30Z,EAAEA,EAAE40Z,MAAM,IAAI,OAAOT,EAAGn0Z,EAAEqpB,GAAG,CAAC,MAAMrZ,GAAG,EAAE,OAAO,IAAI,CAC3M,SAASokZ,EAAGp0Z,GAAG,IAAIqpB,EAAErpB,EAAEvD,KAAK,OAAOuD,EAAEsH,KAAK,KAAK,GAAG,MAAM,QAAQ,KAAK,EAAE,OAAO+hB,EAAE0T,aAAa,WAAW,YAAY,KAAK,GAAG,OAAO1T,EAAEguH,SAASt6G,aAAa,WAAW,YAAY,KAAK,GAAG,MAAM,qBAAqB,KAAK,GAAG,OAAkB/8B,GAAXA,EAAEqpB,EAAErxB,QAAW+kC,aAAa/8B,EAAEjH,MAAM,GAAGswB,EAAE0T,cAAc,KAAK/8B,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK,EAAE,MAAM,WAAW,KAAK,EAAE,OAAOqpB,EAAE,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,OAAO8qY,EAAG9qY,GAAG,KAAK,EAAE,OAAOA,IAAIqsF,EAAG,aAAa,OAAO,KAAK,GAAG,MAAM,YACtf,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,eAAe,KAAK,GAAG,MAAM,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,oBAAoBrsF,EAAE,OAAOA,EAAE0T,aAAa1T,EAAEtwB,MAAM,KAAK,GAAG,kBAAkBswB,EAAE,OAAOA,EAAE,OAAO,IAAI,CAAC,SAASgrY,EAAGr0Z,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,YAAqB,IAAK,SAAS,OAAOA,EAAE,QAAQ,MAAM,GAAG,CACra,SAASs0Z,EAAGt0Z,GAAG,IAAIqpB,EAAErpB,EAAEvD,KAAK,OAAOuD,EAAEA,EAAE27J,WAAW,UAAU37J,EAAEy4C,gBAAgB,aAAapvB,GAAG,UAAUA,EAAE,CAEtF,SAASmrY,EAAGx0Z,GAAGA,EAAEkia,gBAAgBlia,EAAEkia,cADvD,SAAYlia,GAAG,IAAIqpB,EAAEirY,EAAGt0Z,GAAG,UAAU,QAAQgQ,EAAEpK,OAAOmnZ,yBAAyB/sZ,EAAE6pB,YAAY1G,UAAUkG,GAAGD,EAAE,GAAGppB,EAAEqpB,GAAG,IAAIrpB,EAAEypB,eAAeJ,IAAI,qBAAqBrZ,GAAG,oBAAoBA,EAAE0d,KAAK,oBAAoB1d,EAAE4kB,IAAI,CAAC,IAAIj4B,EAAEqT,EAAE0d,IAAIsF,EAAEhjB,EAAE4kB,IAAiL,OAA7KhvB,OAAO6nB,eAAeztB,EAAEqpB,EAAE,CAACuE,cAAa,EAAGF,IAAI,WAAW,OAAO/wB,EAAE+sB,KAAKzG,KAAK,EAAE2R,IAAI,SAAS50B,GAAGopB,EAAE,GAAGppB,EAAEgzB,EAAEtJ,KAAKzG,KAAKjjB,EAAE,IAAI4F,OAAO6nB,eAAeztB,EAAEqpB,EAAE,CAACsE,WAAW3d,EAAE2d,aAAmB,CAACw0Y,SAAS,WAAW,OAAO/4Y,CAAC,EAAE6pP,SAAS,SAASjzQ,GAAGopB,EAAE,GAAGppB,CAAC,EAAEoia,aAAa,WAAWpia,EAAEkia,cACxf,YAAYlia,EAAEqpB,EAAE,EAAE,CAAC,CAAkDkrY,CAAGv0Z,GAAG,CAAC,SAASy0Z,EAAGz0Z,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIqpB,EAAErpB,EAAEkia,cAAc,IAAI74Y,EAAE,OAAM,EAAG,IAAIrZ,EAAEqZ,EAAE84Y,WAAe/4Y,EAAE,GAAqD,OAAlDppB,IAAIopB,EAAEkrY,EAAGt0Z,GAAGA,EAAE0iG,QAAQ,OAAO,QAAQ1iG,EAAE0I,QAAO1I,EAAEopB,KAAapZ,IAAGqZ,EAAE4pP,SAASjzQ,IAAG,EAAM,CAAC,SAAS00Z,EAAG10Z,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqByR,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAOzR,EAAEitB,eAAejtB,EAAEsS,IAAI,CAAC,MAAM+W,GAAG,OAAOrpB,EAAEsS,IAAI,CAAC,CACpa,SAASuiZ,EAAG70Z,EAAEqpB,GAAG,IAAIrZ,EAAEqZ,EAAEq5E,QAAQ,OAAOszC,EAAE,CAAC,EAAE3sH,EAAE,CAACknR,oBAAe,EAAO/2S,kBAAa,EAAOkP,WAAM,EAAOg6F,QAAQ,MAAM1yF,EAAEA,EAAEhQ,EAAEqia,cAAcC,gBAAgB,CAAC,SAASxN,EAAG90Z,EAAEqpB,GAAG,IAAIrZ,EAAE,MAAMqZ,EAAE7vB,aAAa,GAAG6vB,EAAE7vB,aAAa4vB,EAAE,MAAMC,EAAEq5E,QAAQr5E,EAAEq5E,QAAQr5E,EAAEknR,eAAevgS,EAAEqkZ,EAAG,MAAMhrY,EAAE3gB,MAAM2gB,EAAE3gB,MAAMsH,GAAGhQ,EAAEqia,cAAc,CAACC,eAAel5Y,EAAEy4D,aAAa7xE,EAAEixR,WAAW,aAAa53Q,EAAE5sB,MAAM,UAAU4sB,EAAE5sB,KAAK,MAAM4sB,EAAEq5E,QAAQ,MAAMr5E,EAAE3gB,MAAM,CAAC,SAASwsZ,EAAGl1Z,EAAEqpB,GAAe,OAAZA,EAAEA,EAAEq5E,UAAiBowT,EAAG9yZ,EAAE,UAAUqpB,GAAE,EAAG,CAC9d,SAAS8lF,EAAGnvG,EAAEqpB,GAAG6rY,EAAGl1Z,EAAEqpB,GAAG,IAAIrZ,EAAEqkZ,EAAGhrY,EAAE3gB,OAAO0gB,EAAEC,EAAE5sB,KAAK,GAAG,MAAMuT,EAAK,WAAWoZ,GAAM,IAAIpZ,GAAG,KAAKhQ,EAAE0I,OAAO1I,EAAE0I,OAAOsH,KAAEhQ,EAAE0I,MAAM,GAAGsH,GAAOhQ,EAAE0I,QAAQ,GAAGsH,IAAIhQ,EAAE0I,MAAM,GAAGsH,QAAQ,GAAG,WAAWoZ,GAAG,UAAUA,EAA8B,YAA3BppB,EAAEyiG,gBAAgB,SAAgBp5E,EAAEI,eAAe,SAASqlD,GAAG9uE,EAAEqpB,EAAE5sB,KAAKuT,GAAGqZ,EAAEI,eAAe,iBAAiBqlD,GAAG9uE,EAAEqpB,EAAE5sB,KAAK43Z,EAAGhrY,EAAE7vB,eAAe,MAAM6vB,EAAEq5E,SAAS,MAAMr5E,EAAEknR,iBAAiBvwS,EAAEuwS,iBAAiBlnR,EAAEknR,eAAe,CACla,SAAS4kH,EAAGn1Z,EAAEqpB,EAAErZ,GAAG,GAAGqZ,EAAEI,eAAe,UAAUJ,EAAEI,eAAe,gBAAgB,CAAC,IAAIL,EAAEC,EAAE5sB,KAAK,KAAK,WAAW2sB,GAAG,UAAUA,QAAG,IAASC,EAAE3gB,OAAO,OAAO2gB,EAAE3gB,OAAO,OAAO2gB,EAAE,GAAGrpB,EAAEqia,cAAcxgV,aAAa7xE,GAAGqZ,IAAIrpB,EAAE0I,QAAQ1I,EAAE0I,MAAM2gB,GAAGrpB,EAAExG,aAAa6vB,CAAC,CAAU,MAATrZ,EAAEhQ,EAAEjH,QAAciH,EAAEjH,KAAK,IAAIiH,EAAEuwS,iBAAiBvwS,EAAEqia,cAAcC,eAAe,KAAKtyZ,IAAIhQ,EAAEjH,KAAKiX,EAAE,CACzV,SAAS8+D,GAAG9uE,EAAEqpB,EAAErZ,GAAM,WAAWqZ,GAAGqrY,EAAG10Z,EAAEs5B,iBAAiBt5B,IAAE,MAAMgQ,EAAEhQ,EAAExG,aAAa,GAAGwG,EAAEqia,cAAcxgV,aAAa7hF,EAAExG,eAAe,GAAGwW,IAAIhQ,EAAExG,aAAa,GAAGwW,GAAE,CAAC,IAAIylZ,GAAGx6Y,MAAMC,QAC7K,SAAS06Y,GAAG51Z,EAAEqpB,EAAErZ,EAAEoZ,GAAe,GAAZppB,EAAEA,EAAEghD,QAAW33B,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAI1sB,EAAE,EAAEA,EAAEqT,EAAElL,OAAOnI,IAAI0sB,EAAE,IAAIrZ,EAAErT,KAAI,EAAG,IAAIqT,EAAE,EAAEA,EAAEhQ,EAAE8E,OAAOkL,IAAIrT,EAAE0sB,EAAEI,eAAe,IAAIzpB,EAAEgQ,GAAGtH,OAAO1I,EAAEgQ,GAAGtN,WAAW/F,IAAIqD,EAAEgQ,GAAGtN,SAAS/F,GAAGA,GAAGysB,IAAIppB,EAAEgQ,GAAGuyZ,iBAAgB,EAAG,KAAK,CAAmB,IAAlBvyZ,EAAE,GAAGqkZ,EAAGrkZ,GAAGqZ,EAAE,KAAS1sB,EAAE,EAAEA,EAAEqD,EAAE8E,OAAOnI,IAAI,CAAC,GAAGqD,EAAErD,GAAG+L,QAAQsH,EAAiD,OAA9ChQ,EAAErD,GAAG+F,UAAS,OAAG0mB,IAAIppB,EAAErD,GAAG4la,iBAAgB,IAAW,OAAOl5Y,GAAGrpB,EAAErD,GAAGQ,WAAWksB,EAAErpB,EAAErD,GAAG,CAAC,OAAO0sB,IAAIA,EAAE3mB,UAAS,EAAG,CAAC,CACxY,SAASmzZ,GAAG71Z,EAAEqpB,GAAG,GAAG,MAAMA,EAAE3nB,wBAAwB,MAAM4tB,MAAM9F,EAAE,KAAK,OAAOwsH,EAAE,CAAC,EAAE3sH,EAAE,CAAC3gB,WAAM,EAAOlP,kBAAa,EAAO9C,SAAS,GAAGsJ,EAAEqia,cAAcxgV,cAAc,CAAC,SAASo7U,GAAGj9Z,EAAEqpB,GAAG,IAAIrZ,EAAEqZ,EAAE3gB,MAAM,GAAG,MAAMsH,EAAE,CAA+B,GAA9BA,EAAEqZ,EAAE3yB,SAAS2yB,EAAEA,EAAE7vB,aAAgB,MAAMwW,EAAE,CAAC,GAAG,MAAMqZ,EAAE,MAAMiG,MAAM9F,EAAE,KAAK,GAAGisY,GAAGzlZ,GAAG,CAAC,GAAG,EAAEA,EAAElL,OAAO,MAAMwqB,MAAM9F,EAAE,KAAKxZ,EAAEA,EAAE,EAAE,CAACqZ,EAAErZ,CAAC,CAAC,MAAMqZ,IAAIA,EAAE,IAAIrZ,EAAEqZ,CAAC,CAACrpB,EAAEqia,cAAc,CAACxgV,aAAawyU,EAAGrkZ,GAAG,CACnY,SAAS+lZ,GAAG/1Z,EAAEqpB,GAAG,IAAIrZ,EAAEqkZ,EAAGhrY,EAAE3gB,OAAO0gB,EAAEirY,EAAGhrY,EAAE7vB,cAAc,MAAMwW,KAAIA,EAAE,GAAGA,KAAMhQ,EAAE0I,QAAQ1I,EAAE0I,MAAMsH,GAAG,MAAMqZ,EAAE7vB,cAAcwG,EAAExG,eAAewW,IAAIhQ,EAAExG,aAAawW,IAAI,MAAMoZ,IAAIppB,EAAExG,aAAa,GAAG4vB,EAAE,CAAC,SAAS4sY,GAAGh2Z,GAAG,IAAIqpB,EAAErpB,EAAE+wG,YAAY1nF,IAAIrpB,EAAEqia,cAAcxgV,cAAc,KAAKx4D,GAAG,OAAOA,IAAIrpB,EAAE0I,MAAM2gB,EAAE,CAAC,SAAS6zY,GAAGl9Z,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAA+B,CAC7c,SAASi2Z,GAAGj2Z,EAAEqpB,GAAG,OAAO,MAAMrpB,GAAG,iCAAiCA,EAAEk9Z,GAAG7zY,GAAG,+BAA+BrpB,GAAG,kBAAkBqpB,EAAE,+BAA+BrpB,CAAC,CAChK,IAAIg8Z,GAAeh8Z,GAAZk8Z,IAAYl8Z,GAAsJ,SAASA,EAAEqpB,GAAG,GAAG,+BAA+BrpB,EAAE44J,cAAc,cAAc54J,EAAEA,EAAEomG,UAAU/8E,MAAM,CAA2F,KAA1F2yY,GAAGA,IAAIvqZ,SAASrV,cAAc,QAAUgqG,UAAU,QAAQ/8E,EAAEm5Y,UAAUrqX,WAAW,SAAa9uB,EAAE2yY,GAAGr5T,WAAW3iG,EAAE2iG,YAAY3iG,EAAEipB,YAAYjpB,EAAE2iG,YAAY,KAAKt5E,EAAEs5E,YAAY3iG,EAAE+oB,YAAYM,EAAEs5E,WAAW,CAAC,EAAvb,qBAAqB8/T,OAAOA,MAAMC,wBAAwB,SAASr5Y,EAAErZ,EAAEoZ,EAAEzsB,GAAG8la,MAAMC,yBAAwB,WAAW,OAAO1ia,GAAEqpB,EAAErZ,EAAM,GAAE,EAAEhQ,IACtK,SAASk2Z,GAAGl2Z,EAAEqpB,GAAG,GAAGA,EAAE,CAAC,IAAIrZ,EAAEhQ,EAAE2iG,WAAW,GAAG3yF,GAAGA,IAAIhQ,EAAEosJ,WAAW,IAAIp8I,EAAEyuF,SAAwB,YAAdzuF,EAAE6sJ,UAAUxzI,EAAS,CAACrpB,EAAE+wG,YAAY1nF,CAAC,CACtH,IAAIimF,GAAG,CAACyhT,yBAAwB,EAAGC,aAAY,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGj6S,aAAY,EAAGp3C,SAAQ,EAAG80T,MAAK,EAAGlmB,UAAS,EAAG0iD,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAG7jC,UAAS,EAAGnlD,SAAQ,EAAGshD,YAAW,EAAG2nC,aAAY,EAAG5nC,cAAa,EAAG6nC,YAAW,EAAG9nC,eAAc,EAAG+nC,gBAAe,EAAGhoC,iBAAgB,EAAGlmX,YAAW,EAAGmuZ,WAAU,EAAG36S,YAAW,EAAG9+F,SAAQ,EAAGmkE,OAAM,EAAGu1U,SAAQ,EAAGr4B,SAAQ,EAAGs4B,QAAO,EAAGj1Z,QAAO,EAClfk1Z,MAAK,EAAGC,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGn4S,aAAY,GAAIi8S,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAGv2Z,EAAEqpB,EAAErZ,GAAG,OAAO,MAAMqZ,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAGrZ,GAAG,kBAAkBqZ,GAAG,IAAIA,GAAGimF,GAAG7lF,eAAezpB,IAAIsvG,GAAGtvG,IAAI,GAAGqpB,GAAGszB,OAAOtzB,EAAE,IAAI,CACzb,SAASosF,GAAGz1G,EAAEqpB,GAAa,IAAI,IAAIrZ,KAAlBhQ,EAAEA,EAAErJ,MAAmB0yB,EAAE,GAAGA,EAAEI,eAAezZ,GAAG,CAAC,IAAIoZ,EAAE,IAAIpZ,EAAEkuB,QAAQ,MAAMvhC,EAAE45Z,GAAGvmZ,EAAEqZ,EAAErZ,GAAGoZ,GAAG,UAAUpZ,IAAIA,EAAE,YAAYoZ,EAAEppB,EAAEitG,YAAYj9F,EAAErT,GAAGqD,EAAEgQ,GAAGrT,CAAC,CAAC,CADYiJ,OAAOC,KAAKypG,IAAI19F,SAAQ,SAAS5R,GAAGs2Z,GAAG1kZ,SAAQ,SAASyX,GAAGA,EAAEA,EAAErpB,EAAE0rD,OAAO,GAAGhQ,cAAc17C,EAAEgK,UAAU,GAAGslG,GAAGjmF,GAAGimF,GAAGtvG,EAAE,GAAE,IAChI,IAAIw2Z,GAAGxgR,EAAE,CAAC2sR,UAAS,GAAI,CAAC3xH,MAAK,EAAG3/K,MAAK,EAAGz0B,IAAG,EAAG3+E,KAAI,EAAG2kZ,OAAM,EAAGpoQ,IAAG,EAAGxuD,KAAI,EAAGv6D,OAAM,EAAGoxX,QAAO,EAAGlpP,MAAK,EAAG7L,MAAK,EAAGg1P,OAAM,EAAGxjX,QAAO,EAAG2vV,OAAM,EAAG8zB,KAAI,IAClT,SAAStM,GAAGz2Z,EAAEqpB,GAAG,GAAGA,EAAE,CAAC,GAAGmtY,GAAGx2Z,KAAK,MAAMqpB,EAAE3yB,UAAU,MAAM2yB,EAAE3nB,yBAAyB,MAAM4tB,MAAM9F,EAAE,IAAIxpB,IAAI,GAAG,MAAMqpB,EAAE3nB,wBAAwB,CAAC,GAAG,MAAM2nB,EAAE3yB,SAAS,MAAM44B,MAAM9F,EAAE,KAAK,GAAG,kBAAkBH,EAAE3nB,2BAA2B,WAAW2nB,EAAE3nB,yBAAyB,MAAM4tB,MAAM9F,EAAE,IAAK,CAAC,GAAG,MAAMH,EAAE1yB,OAAO,kBAAkB0yB,EAAE1yB,MAAM,MAAM24B,MAAM9F,EAAE,IAAK,CAAC,CAClW,SAASktY,GAAG12Z,EAAEqpB,GAAG,IAAI,IAAIrpB,EAAEk+B,QAAQ,KAAK,MAAM,kBAAkB7U,EAAEy2K,GAAG,OAAO9/L,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,IAAI4tG,GAAG,KAAK,SAASgpT,GAAG52Z,GAA6F,OAA1FA,EAAEA,EAAEqd,QAAQrd,EAAEivV,YAAYjzV,QAASgna,0BAA0Bhja,EAAEA,EAAEgja,yBAAgC,IAAIhja,EAAEy+F,SAASz+F,EAAE8hG,WAAW9hG,CAAC,CAAC,IAAIy3Z,GAAG,KAAK9hT,GAAG,KAAK6mT,GAAG,KACpc,SAAS5E,GAAG53Z,GAAG,GAAGA,EAAEk4Z,GAAGl4Z,GAAG,CAAC,GAAG,oBAAoBy3Z,GAAG,MAAMnoY,MAAM9F,EAAE,MAAM,IAAIH,EAAErpB,EAAEija,UAAU55Y,IAAIA,EAAE6vY,GAAG7vY,GAAGouY,GAAGz3Z,EAAEija,UAAUjja,EAAEvD,KAAK4sB,GAAG,CAAC,CAAC,SAAS8vY,GAAGn5Z,GAAG21G,GAAG6mT,GAAGA,GAAGv4Y,KAAKjkB,GAAGw8Z,GAAG,CAACx8Z,GAAG21G,GAAG31G,CAAC,CAAC,SAASq5Z,KAAK,GAAG1jT,GAAG,CAAC,IAAI31G,EAAE21G,GAAGtsF,EAAEmzY,GAAoB,GAAjBA,GAAG7mT,GAAG,KAAKiiT,GAAG53Z,GAAMqpB,EAAE,IAAIrpB,EAAE,EAAEA,EAAEqpB,EAAEvkB,OAAO9E,IAAI43Z,GAAGvuY,EAAErpB,GAAG,CAAC,CAAC,SAASs5Z,GAAGt5Z,EAAEqpB,GAAG,OAAOrpB,EAAEqpB,EAAE,CAAC,SAASywY,KAAK,CAAC,IAAII,IAAG,EAAG,SAASC,GAAGn6Z,EAAEqpB,EAAErZ,GAAG,GAAGkqZ,GAAG,OAAOl6Z,EAAEqpB,EAAErZ,GAAGkqZ,IAAG,EAAG,IAAI,OAAOZ,GAAGt5Z,EAAEqpB,EAAErZ,EAAE,CAAC,QAAWkqZ,IAAG,GAAG,OAAOvkT,IAAI,OAAO6mT,MAAG1C,KAAKT,KAAI,CAAC,CAChb,SAASe,GAAGp6Z,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAEija,UAAU,GAAG,OAAOjzZ,EAAE,OAAO,KAAK,IAAIoZ,EAAE8vY,GAAGlpZ,GAAG,GAAG,OAAOoZ,EAAE,OAAO,KAAKpZ,EAAEoZ,EAAEC,GAAGrpB,EAAE,OAAOqpB,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBD,GAAGA,EAAEjsB,YAAqBisB,IAAI,YAAbppB,EAAEA,EAAEvD,OAAuB,UAAUuD,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGopB,EAAE,MAAMppB,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGgQ,GAAG,oBACleA,EAAE,MAAMsf,MAAM9F,EAAE,IAAIH,SAASrZ,IAAI,OAAOA,CAAC,CAAC,IAAIqqZ,IAAG,EAAG,GAAGhK,EAAG,IAAI,IAAIuK,GAAG,CAAC,EAAEh1Z,OAAO6nB,eAAemtY,GAAG,UAAU,CAACltY,IAAI,WAAW2sY,IAAG,CAAE,IAAIr+Z,OAAOG,iBAAiB,OAAOy+Z,GAAGA,IAAI5+Z,OAAOq5C,oBAAoB,OAAOulX,GAAGA,GAAG,CAAC,MAAM56Z,IAAGq6Z,IAAG,CAAE,CAAC,SAASU,GAAG/6Z,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAEq2B,EAAEs8D,EAAEruF,EAAEiyB,GAAG,IAAI2mB,EAAE5+B,MAAMkI,UAAUtR,MAAM6X,KAAKiG,UAAU,GAAG,IAAItG,EAAEjG,MAAMpT,EAAE6pC,EAAE,CAAC,MAAM4E,GAAGx7B,KAAK8yU,QAAQt3S,EAAE,CAAC,CAAC,IAAI08W,IAAG,EAAGI,GAAG,KAAKC,IAAG,EAAGY,GAAG,KAAKE,GAAG,CAACvmE,QAAQ,SAAS/1V,GAAGm7Z,IAAG,EAAGI,GAAGv7Z,CAAC,GAAG,SAASu8Z,GAAGv8Z,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAEq2B,EAAEs8D,EAAEruF,EAAEiyB,GAAGioY,IAAG,EAAGI,GAAG,KAAKR,GAAG33Y,MAAMk5Y,GAAG3sY,UAAU,CACjW,SAASytY,GAAGp9Z,GAAG,IAAIqpB,EAAErpB,EAAEgQ,EAAEhQ,EAAE,GAAGA,EAAEkja,UAAU,KAAK75Y,EAAE85Y,QAAQ95Y,EAAEA,EAAE85Y,WAAW,CAACnja,EAAEqpB,EAAE,GAAO,KAAa,MAAjBA,EAAErpB,GAASo/G,SAAcpvG,EAAEqZ,EAAE85Y,QAAQnja,EAAEqpB,EAAE85Y,aAAanja,EAAE,CAAC,OAAO,IAAIqpB,EAAE/hB,IAAI0I,EAAE,IAAI,CAAC,SAASqtZ,GAAGr9Z,GAAG,GAAG,KAAKA,EAAEsH,IAAI,CAAC,IAAI+hB,EAAErpB,EAAEq2Z,cAAsE,GAAxD,OAAOhtY,IAAkB,QAAdrpB,EAAEA,EAAEkja,aAAqB75Y,EAAErpB,EAAEq2Z,gBAAmB,OAAOhtY,EAAE,OAAOA,EAAE+5Y,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS9F,GAAGt9Z,GAAG,GAAGo9Z,GAAGp9Z,KAAKA,EAAE,MAAMsvB,MAAM9F,EAAE,KAAM,CAE1S,SAASg0Y,GAAGx9Z,GAAW,OAAO,QAAfA,EADtN,SAAYA,GAAG,IAAIqpB,EAAErpB,EAAEkja,UAAU,IAAI75Y,EAAE,CAAS,GAAG,QAAXA,EAAE+zY,GAAGp9Z,IAAe,MAAMsvB,MAAM9F,EAAE,MAAM,OAAOH,IAAIrpB,EAAE,KAAKA,CAAC,CAAC,IAAI,IAAIgQ,EAAEhQ,EAAEopB,EAAEC,IAAI,CAAC,IAAI1sB,EAAEqT,EAAEmzZ,OAAO,GAAG,OAAOxma,EAAE,MAAM,IAAIq2B,EAAEr2B,EAAEuma,UAAU,GAAG,OAAOlwY,EAAE,CAAY,GAAG,QAAd5J,EAAEzsB,EAAEwma,QAAmB,CAACnzZ,EAAEoZ,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAGzsB,EAAE89G,QAAQznF,EAAEynF,MAAM,CAAC,IAAIznF,EAAEr2B,EAAE89G,MAAMznF,GAAG,CAAC,GAAGA,IAAIhjB,EAAE,OAAOstZ,GAAG3ga,GAAGqD,EAAE,GAAGgzB,IAAI5J,EAAE,OAAOk0Y,GAAG3ga,GAAG0sB,EAAE2J,EAAEA,EAAEqlK,OAAO,CAAC,MAAM/oK,MAAM9F,EAAE,KAAM,CAAC,GAAGxZ,EAAEmzZ,SAAS/5Y,EAAE+5Y,OAAOnzZ,EAAErT,EAAEysB,EAAE4J,MAAM,CAAC,IAAI,IAAIs8D,GAAE,EAAGruF,EAAEtE,EAAE89G,MAAMx5G,GAAG,CAAC,GAAGA,IAAI+O,EAAE,CAACs/E,GAAE,EAAGt/E,EAAErT,EAAEysB,EAAE4J,EAAE,KAAK,CAAC,GAAG/xB,IAAImoB,EAAE,CAACkmE,GAAE,EAAGlmE,EAAEzsB,EAAEqT,EAAEgjB,EAAE,KAAK,CAAC/xB,EAAEA,EAAEo3L,OAAO,CAAC,IAAI/oG,EAAE,CAAC,IAAIruF,EAAE+xB,EAAEynF,MAAMx5G,GAAG,CAAC,GAAGA,IAC5f+O,EAAE,CAACs/E,GAAE,EAAGt/E,EAAEgjB,EAAE5J,EAAEzsB,EAAE,KAAK,CAAC,GAAGsE,IAAImoB,EAAE,CAACkmE,GAAE,EAAGlmE,EAAE4J,EAAEhjB,EAAErT,EAAE,KAAK,CAACsE,EAAEA,EAAEo3L,OAAO,CAAC,IAAI/oG,EAAE,MAAMhgE,MAAM9F,EAAE,KAAM,CAAC,CAAC,GAAGxZ,EAAEkzZ,YAAY95Y,EAAE,MAAMkG,MAAM9F,EAAE,KAAM,CAAC,GAAG,IAAIxZ,EAAE1I,IAAI,MAAMgoB,MAAM9F,EAAE,MAAM,OAAOxZ,EAAEizZ,UAAU3ra,UAAU0Y,EAAEhQ,EAAEqpB,CAAC,CAAkBk0Y,CAAGv9Z,IAAmBy9Z,GAAGz9Z,GAAG,IAAI,CAAC,SAASy9Z,GAAGz9Z,GAAG,GAAG,IAAIA,EAAEsH,KAAK,IAAItH,EAAEsH,IAAI,OAAOtH,EAAE,IAAIA,EAAEA,EAAEy6G,MAAM,OAAOz6G,GAAG,CAAC,IAAIqpB,EAAEo0Y,GAAGz9Z,GAAG,GAAG,OAAOqpB,EAAE,OAAOA,EAAErpB,EAAEA,EAAEq4L,OAAO,CAAC,OAAO,IAAI,CAC1X,IAAIqlO,GAAG7xR,EAAGw3R,0BAA0B1F,GAAG9xR,EAAGy3R,wBAAwBzqT,GAAGgzB,EAAG03R,qBAAqB3F,GAAG/xR,EAAG23R,sBAAsBhQ,GAAE3nR,EAAG43R,aAAa5F,GAAGhyR,EAAG63R,iCAAiC5F,GAAGjyR,EAAG83R,2BAA2B5F,GAAGlyR,EAAG+3R,8BAA8B5F,GAAGnyR,EAAGg4R,wBAAwB5F,GAAGpyR,EAAGi4R,qBAAqB5F,GAAGryR,EAAGk4R,sBAAsB5F,GAAG,KAAK7jS,GAAG,KACvV,IAAIikS,GAAGxmZ,KAAK+9Y,MAAM/9Y,KAAK+9Y,MAAiC,SAAY91Z,GAAU,OAAPA,KAAK,EAAS,IAAIA,EAAE,GAAG,IAAIw+Z,GAAGx+Z,GAAGy+Z,GAAG,GAAG,CAAC,EAA/ED,GAAGzmZ,KAAKhgB,IAAI0ma,GAAG1mZ,KAAKymG,IAA4D,IAAIkgT,GAAG,GAAGC,GAAG,QAC7H,SAASC,GAAG5+Z,GAAG,OAAOA,GAAGA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,QAAFA,EAAU,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,OAAS,UAAFA,EAAY,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,WAAW,OAAO,WACzgB,QAAQ,OAAOA,EAAE,CAAC,SAAS6+Z,GAAG7+Z,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAEgka,aAAa,GAAG,IAAIh0Z,EAAE,OAAO,EAAE,IAAIoZ,EAAE,EAAEzsB,EAAEqD,EAAEika,eAAejxY,EAAEhzB,EAAEkka,YAAY50U,EAAI,UAAFt/E,EAAY,GAAG,IAAIs/E,EAAE,CAAC,IAAIruF,EAAEquF,GAAG3yF,EAAE,IAAIsE,EAAEmoB,EAAEw1Y,GAAG39Z,GAAS,KAAL+xB,GAAGs8D,KAAUlmE,EAAEw1Y,GAAG5rY,GAAI,MAAa,KAAPs8D,EAAEt/E,GAAGrT,GAAQysB,EAAEw1Y,GAAGtvU,GAAG,IAAIt8D,IAAI5J,EAAEw1Y,GAAG5rY,IAAI,GAAG,IAAI5J,EAAE,OAAO,EAAE,GAAG,IAAIC,GAAGA,IAAID,GAAG,KAAKC,EAAE1sB,MAAKA,EAAEysB,GAAGA,KAAE4J,EAAE3J,GAAGA,IAAQ,KAAK1sB,GAAG,KAAO,QAAFq2B,IAAY,OAAO3J,EAA0C,GAAxC,KAAO,EAAFD,KAAOA,GAAK,GAAFpZ,GAA4B,KAAtBqZ,EAAErpB,EAAEmka,gBAAwB,IAAInka,EAAEA,EAAEoka,cAAc/6Y,GAAGD,EAAE,EAAEC,GAAc1sB,EAAE,IAAbqT,EAAE,GAAGuuZ,GAAGl1Y,IAAUD,GAAGppB,EAAEgQ,GAAGqZ,IAAI1sB,EAAE,OAAOysB,CAAC,CACvc,SAASi7Y,GAAGrka,EAAEqpB,GAAG,OAAOrpB,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAOqpB,EAAE,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAOA,EAAE,IAAuJ,QAAQ,OAAO,EAAE,CACrN,SAAS01Y,GAAG/+Z,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAEgka,cAAsChka,EAAI,WAAFA,EAAa,WAAW,CAAC,CAAC,SAASska,KAAK,IAAItka,EAAE0+Z,GAAoC,OAA1B,KAAQ,SAAfA,KAAK,MAAqBA,GAAG,IAAW1+Z,CAAC,CAAC,SAASg/Z,GAAGh/Z,GAAG,IAAI,IAAIqpB,EAAE,GAAGrZ,EAAE,EAAE,GAAGA,EAAEA,IAAIqZ,EAAEpF,KAAKjkB,GAAG,OAAOqpB,CAAC,CAC3a,SAAS41Y,GAAGj/Z,EAAEqpB,EAAErZ,GAAGhQ,EAAEgka,cAAc36Y,EAAE,YAAYA,IAAIrpB,EAAEika,eAAe,EAAEjka,EAAEkka,YAAY,IAAGlka,EAAEA,EAAEuka,YAAWl7Y,EAAE,GAAGk1Y,GAAGl1Y,IAAQrZ,CAAC,CACzH,SAASmvZ,GAAGn/Z,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAEmka,gBAAgB96Y,EAAE,IAAIrpB,EAAEA,EAAEoka,cAAcp0Z,GAAG,CAAC,IAAIoZ,EAAE,GAAGm1Y,GAAGvuZ,GAAGrT,EAAE,GAAGysB,EAAEzsB,EAAE0sB,EAAErpB,EAAEopB,GAAGC,IAAIrpB,EAAEopB,IAAIC,GAAGrZ,IAAIrT,CAAC,CAAC,CAAC,IAAIw2Z,GAAE,EAAE,SAASiM,GAAGp/Z,GAAS,OAAO,GAAbA,IAAIA,GAAa,EAAEA,EAAE,KAAO,UAAFA,GAAa,GAAG,UAAU,EAAE,CAAC,CAAC,IAAIq/Z,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKE,GAAG,KAAKD,GAAG,IAAI3tO,IAAI6tO,GAAG,IAAI7tO,IAAI8tO,GAAG,GAAGqB,GAAG,6PAA6Pr1Z,MAAM,KAChiB,SAASm0Z,GAAGpga,EAAEqpB,GAAG,OAAOrpB,GAAG,IAAK,UAAU,IAAK,WAAW4/Z,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWE,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaD,GAAGpoX,OAAOruB,EAAE81U,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqB6gE,GAAGtoX,OAAOruB,EAAE81U,WAAW,CACnT,SAAS+gE,GAAGlga,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAEq2B,GAAG,OAAG,OAAOhzB,GAAGA,EAAEo1B,cAAcpC,GAAShzB,EAAE,CAACwka,UAAUn7Y,EAAEo7Y,aAAaz0Z,EAAE00Z,iBAAiBt7Y,EAAEgM,YAAYpC,EAAE2xY,iBAAiB,CAAChoa,IAAI,OAAO0sB,IAAY,QAARA,EAAE6uY,GAAG7uY,KAAai2Y,GAAGj2Y,IAAIrpB,IAAEA,EAAE0ka,kBAAkBt7Y,EAAEC,EAAErpB,EAAE2ka,iBAAiB,OAAOhoa,IAAI,IAAI0sB,EAAE6U,QAAQvhC,IAAI0sB,EAAEpF,KAAKtnB,GAAUqD,EAAC,CAEpR,SAASqga,GAAGrga,GAAG,IAAIqpB,EAAEi3Y,GAAGtga,EAAEqd,QAAQ,GAAG,OAAOgM,EAAE,CAAC,IAAIrZ,EAAEotZ,GAAG/zY,GAAG,GAAG,OAAOrZ,EAAE,GAAW,MAARqZ,EAAErZ,EAAE1I,MAAY,GAAW,QAAR+hB,EAAEg0Y,GAAGrtZ,IAA4D,OAA/ChQ,EAAEwka,UAAUn7Y,OAAEo2Y,GAAGz/Z,EAAEi5J,UAAS,WAAWsmQ,GAAGvvZ,EAAE,SAAgB,GAAG,IAAIqZ,GAAGrZ,EAAEizZ,UAAU3ra,QAAQ++Z,cAAcuO,aAAmE,YAArD5ka,EAAEwka,UAAU,IAAIx0Z,EAAE1I,IAAI0I,EAAEizZ,UAAU4B,cAAc,KAAY,CAAC7ka,EAAEwka,UAAU,IAAI,CAClT,SAASjE,GAAGvga,GAAG,GAAG,OAAOA,EAAEwka,UAAU,OAAM,EAAG,IAAI,IAAIn7Y,EAAErpB,EAAE2ka,iBAAiB,EAAEt7Y,EAAEvkB,QAAQ,CAAC,IAAIkL,EAAEwwZ,GAAGxga,EAAEyka,aAAazka,EAAE0ka,iBAAiBr7Y,EAAE,GAAGrpB,EAAEo1B,aAAa,GAAG,OAAOplB,EAAiG,OAAe,QAARqZ,EAAE6uY,GAAGloZ,KAAasvZ,GAAGj2Y,GAAGrpB,EAAEwka,UAAUx0Z,GAAE,EAA3H,IAAIoZ,EAAE,IAAtBpZ,EAAEhQ,EAAEo1B,aAAwBvL,YAAY7Z,EAAEvT,KAAKuT,GAAG49F,GAAGxkF,EAAEpZ,EAAEqN,OAAOwsL,cAAczgL,GAAGwkF,GAAG,KAA0DvkF,EAAEipE,OAAO,CAAC,OAAM,CAAE,CAAC,SAASmuU,GAAGzga,EAAEqpB,EAAErZ,GAAGuwZ,GAAGvga,IAAIgQ,EAAE0nC,OAAOruB,EAAE,CAAC,SAASq3Y,KAAKhB,IAAG,EAAG,OAAOE,IAAIW,GAAGX,MAAMA,GAAG,MAAM,OAAOC,IAAIU,GAAGV,MAAMA,GAAG,MAAM,OAAOE,IAAIQ,GAAGR,MAAMA,GAAG,MAAMD,GAAGluZ,QAAQ6uZ,IAAIT,GAAGpuZ,QAAQ6uZ,GAAG,CACnf,SAASE,GAAG3ga,EAAEqpB,GAAGrpB,EAAEwka,YAAYn7Y,IAAIrpB,EAAEwka,UAAU,KAAK9E,KAAKA,IAAG,EAAG7zR,EAAGw3R,0BAA0Bx3R,EAAGg4R,wBAAwBnD,KAAK,CAC5H,SAASE,GAAG5ga,GAAG,SAASqpB,EAAEA,GAAG,OAAOs3Y,GAAGt3Y,EAAErpB,EAAE,CAAC,GAAG,EAAE2/Z,GAAG76Z,OAAO,CAAC67Z,GAAGhB,GAAG,GAAG3/Z,GAAG,IAAI,IAAIgQ,EAAE,EAAEA,EAAE2vZ,GAAG76Z,OAAOkL,IAAI,CAAC,IAAIoZ,EAAEu2Y,GAAG3vZ,GAAGoZ,EAAEo7Y,YAAYxka,IAAIopB,EAAEo7Y,UAAU,KAAK,CAAC,CAAyF,IAAxF,OAAO5E,IAAIe,GAAGf,GAAG5/Z,GAAG,OAAO6/Z,IAAIc,GAAGd,GAAG7/Z,GAAG,OAAO+/Z,IAAIY,GAAGZ,GAAG//Z,GAAG8/Z,GAAGluZ,QAAQyX,GAAG22Y,GAAGpuZ,QAAQyX,GAAOrZ,EAAE,EAAEA,EAAEiwZ,GAAGn7Z,OAAOkL,KAAIoZ,EAAE62Y,GAAGjwZ,IAAKw0Z,YAAYxka,IAAIopB,EAAEo7Y,UAAU,MAAM,KAAK,EAAEvE,GAAGn7Z,QAAiB,QAARkL,EAAEiwZ,GAAG,IAAYuE,WAAYnE,GAAGrwZ,GAAG,OAAOA,EAAEw0Z,WAAWvE,GAAG3tU,OAAO,CAAC,IAAIuuU,GAAGvvX,EAAGwzX,wBAAwBlrQ,IAAG,EAC5a,SAASknQ,GAAG9ga,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAIzsB,EAAEw2Z,GAAEngY,EAAE6tY,GAAGhiK,WAAWgiK,GAAGhiK,WAAW,KAAK,IAAIs0J,GAAE,EAAE4N,GAAG/ga,EAAEqpB,EAAErZ,EAAEoZ,EAAE,CAAC,QAAQ+pY,GAAEx2Z,EAAEkka,GAAGhiK,WAAW7rO,CAAC,CAAC,CAAC,SAASguY,GAAGhha,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAIzsB,EAAEw2Z,GAAEngY,EAAE6tY,GAAGhiK,WAAWgiK,GAAGhiK,WAAW,KAAK,IAAIs0J,GAAE,EAAE4N,GAAG/ga,EAAEqpB,EAAErZ,EAAEoZ,EAAE,CAAC,QAAQ+pY,GAAEx2Z,EAAEkka,GAAGhiK,WAAW7rO,CAAC,CAAC,CACjO,SAAS+tY,GAAG/ga,EAAEqpB,EAAErZ,EAAEoZ,GAAG,GAAGwwI,GAAG,CAAC,IAAIj9J,EAAE6ja,GAAGxga,EAAEqpB,EAAErZ,EAAEoZ,GAAG,GAAG,OAAOzsB,EAAEska,GAAGjha,EAAEqpB,EAAED,EAAE/yB,GAAG2Z,GAAGowZ,GAAGpga,EAAEopB,QAAQ,GANtF,SAAYppB,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAG,OAAO0sB,GAAG,IAAK,UAAU,OAAOu2Y,GAAGM,GAAGN,GAAG5/Z,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,IAAG,EAAG,IAAK,YAAY,OAAOkja,GAAGK,GAAGL,GAAG7/Z,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,IAAG,EAAG,IAAK,YAAY,OAAOoja,GAAGG,GAAGH,GAAG//Z,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,IAAG,EAAG,IAAK,cAAc,IAAIq2B,EAAEr2B,EAAEwiW,UAAkD,OAAxC2gE,GAAGlrY,IAAI5B,EAAEktY,GAAGJ,GAAGpyY,IAAIsF,IAAI,KAAKhzB,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,KAAU,EAAG,IAAK,oBAAoB,OAAOq2B,EAAEr2B,EAAEwiW,UAAU6gE,GAAGprY,IAAI5B,EAAEktY,GAAGF,GAAGtyY,IAAIsF,IAAI,KAAKhzB,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,KAAI,EAAG,OAAM,CAAE,CAM1Qwja,CAAGxja,EAAEqD,EAAEqpB,EAAErZ,EAAEoZ,GAAGA,EAAEqM,uBAAuB,GAAG2qY,GAAGpga,EAAEopB,GAAK,EAAFC,IAAM,EAAEi4Y,GAAGpjY,QAAQl+B,GAAG,CAAC,KAAK,OAAOrD,GAAG,CAAC,IAAIq2B,EAAEklY,GAAGv7Z,GAA0D,GAAvD,OAAOq2B,GAAGqsY,GAAGrsY,GAAiB,QAAdA,EAAEwtY,GAAGxga,EAAEqpB,EAAErZ,EAAEoZ,KAAa63Y,GAAGjha,EAAEqpB,EAAED,EAAE/yB,GAAG2Z,GAAMgjB,IAAIr2B,EAAE,MAAMA,EAAEq2B,CAAC,CAAC,OAAOr2B,GAAGysB,EAAEqM,iBAAiB,MAAMwrY,GAAGjha,EAAEqpB,EAAED,EAAE,KAAKpZ,EAAE,CAAC,CAAC,IAAI3Z,GAAG,KACpU,SAASmqa,GAAGxga,EAAEqpB,EAAErZ,EAAEoZ,GAA2B,GAAxB/yB,GAAG,KAAwB,QAAX2J,EAAEsga,GAAVtga,EAAE42Z,GAAGxtY,KAAuB,GAAW,QAARC,EAAE+zY,GAAGp9Z,IAAYA,EAAE,UAAU,GAAW,MAARgQ,EAAEqZ,EAAE/hB,KAAW,CAAS,GAAG,QAAXtH,EAAEq9Z,GAAGh0Y,IAAe,OAAOrpB,EAAEA,EAAE,IAAI,MAAM,GAAG,IAAIgQ,EAAE,CAAC,GAAGqZ,EAAE45Y,UAAU3ra,QAAQ++Z,cAAcuO,aAAa,OAAO,IAAIv7Y,EAAE/hB,IAAI+hB,EAAE45Y,UAAU4B,cAAc,KAAK7ka,EAAE,IAAI,MAAMqpB,IAAIrpB,IAAIA,EAAE,MAAW,OAAL3J,GAAG2J,EAAS,IAAI,CAC7S,SAASkha,GAAGlha,GAAG,OAAOA,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,QAAQ,IAAK,cAAc,IAAK,OAAO,IAAK,MAAM,IAAK,WAAW,IAAK,WAAW,IAAK,UAAU,IAAK,YAAY,IAAK,OAAO,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,UAAU,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,YAAY,IAAK,UAAU,IAAK,QAAQ,IAAK,QAAQ,IAAK,OAAO,IAAK,gBAAgB,IAAK,cAAc,IAAK,YAAY,IAAK,aAAa,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,cAAc,IAAK,WAAW,IAAK,aAAa,IAAK,eAAe,IAAK,SAAS,IAAK,kBAAkB,IAAK,YAAY,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,oBAAoB,IAAK,aAAa,IAAK,YAAY,IAAK,cAAc,IAAK,OAAO,IAAK,mBAAmB,IAAK,QAAQ,IAAK,aAAa,IAAK,WAAW,IAAK,SAAS,IAAK,cAAc,OAAO,EAAE,IAAK,OAAO,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,IAAK,QAAQ,IAAK,aAAa,IAAK,aAAa,IAAK,eAAe,IAAK,eAAe,OAAO,EACpqC,IAAK,UAAU,OAAO69Z,MAAM,KAAKC,GAAG,OAAO,EAAE,KAAKC,GAAG,OAAO,EAAE,KAAKC,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,UAAU,QAAQ,OAAO,GAAG,QAAQ,OAAO,GAAG,CAAC,IAAIiD,GAAG,KAAKC,GAAG,KAAK2D,GAAG,KAAK,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAI/ka,EAAkBopB,EAAhBC,EAAE+3Y,GAAGpxZ,EAAEqZ,EAAEvkB,OAASnI,EAAE,UAAUwka,GAAGA,GAAGz4Z,MAAMy4Z,GAAGpwT,YAAY/9E,EAAEr2B,EAAEmI,OAAO,IAAI9E,EAAE,EAAEA,EAAEgQ,GAAGqZ,EAAErpB,KAAKrD,EAAEqD,GAAGA,KAAK,IAAIsvF,EAAEt/E,EAAEhQ,EAAE,IAAIopB,EAAE,EAAEA,GAAGkmE,GAAGjmE,EAAErZ,EAAEoZ,KAAKzsB,EAAEq2B,EAAE5J,GAAGA,KAAK,OAAO27Y,GAAGpoa,EAAEkV,MAAM7R,EAAE,EAAEopB,EAAE,EAAEA,OAAE,EAAO,CACxY,SAAS67Y,GAAGjla,GAAG,IAAIqpB,EAAErpB,EAAEstB,QAA+E,MAAvE,aAAattB,EAAgB,KAAbA,EAAEA,EAAE+7L,WAAgB,KAAK1yK,IAAIrpB,EAAE,IAAKA,EAAEqpB,EAAE,KAAKrpB,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAC,CAAC,SAASkla,KAAK,OAAM,CAAE,CAAC,SAASC,KAAK,OAAM,CAAE,CAC5K,SAASC,GAAGpla,GAAG,SAASqpB,EAAEA,EAAED,EAAEzsB,EAAEq2B,EAAEs8D,GAA6G,IAAI,IAAIt/E,KAAlHiT,KAAKoiZ,WAAWh8Y,EAAEpG,KAAKqiZ,YAAY3oa,EAAEsmB,KAAKxmB,KAAK2sB,EAAEnG,KAAKmS,YAAYpC,EAAE/P,KAAK5F,OAAOiyE,EAAErsE,KAAK8gP,cAAc,KAAkB/jQ,EAAEA,EAAEypB,eAAezZ,KAAKqZ,EAAErpB,EAAEgQ,GAAGiT,KAAKjT,GAAGqZ,EAAEA,EAAE2J,GAAGA,EAAEhjB,IAAgI,OAA5HiT,KAAKmhP,oBAAoB,MAAMpxO,EAAEsnK,iBAAiBtnK,EAAEsnK,kBAAiB,IAAKtnK,EAAE6hP,aAAaqwJ,GAAGC,GAAGliZ,KAAKmvQ,qBAAqB+yI,GAAUliZ,IAAI,CAC9E,OAD+E+yH,EAAE3sH,EAAElG,UAAU,CAACjL,eAAe,WAAW+K,KAAKq3K,kBAAiB,EAAG,IAAIt6L,EAAEijB,KAAKmS,YAAYp1B,IAAIA,EAAEkY,eAAelY,EAAEkY,iBAAiB,mBAAmBlY,EAAE60Q,cAC7e70Q,EAAE60Q,aAAY,GAAI5xP,KAAKmhP,mBAAmB8gK,GAAG,EAAEzvY,gBAAgB,WAAW,IAAIz1B,EAAEijB,KAAKmS,YAAYp1B,IAAIA,EAAEy1B,gBAAgBz1B,EAAEy1B,kBAAkB,mBAAmBz1B,EAAEula,eAAevla,EAAEula,cAAa,GAAItiZ,KAAKmvQ,qBAAqB8yI,GAAG,EAAEM,QAAQ,WAAW,EAAEC,aAAaP,KAAY77Y,CAAC,CACjR,IAAoLq8Y,GAAGC,GAAGC,GAAtLC,GAAG,CAACC,WAAW,EAAEtrO,QAAQ,EAAEurO,WAAW,EAAEnpO,UAAU,SAAS58L,GAAG,OAAOA,EAAE48L,WAAW18L,KAAK2yB,KAAK,EAAEynK,iBAAiB,EAAE0rO,UAAU,GAAGxtO,GAAG4sO,GAAGS,IAAII,GAAGjwR,EAAE,CAAC,EAAE6vR,GAAG,CAAClhY,KAAK,EAAEq8R,OAAO,IAAIklG,GAAGd,GAAGa,IAAaE,GAAGnwR,EAAE,CAAC,EAAEiwR,GAAG,CAACG,QAAQ,EAAEC,QAAQ,EAAE3rO,QAAQ,EAAEC,QAAQ,EAAE4wD,MAAM,EAAEE,MAAM,EAAE/0D,QAAQ,EAAEE,SAAS,EAAE/gK,OAAO,EAAE8gK,QAAQ,EAAE2vO,iBAAiBC,GAAGlrO,OAAO,EAAEsB,QAAQ,EAAEuC,cAAc,SAASl/L,GAAG,YAAO,IAASA,EAAEk/L,cAAcl/L,EAAEwma,cAAcxma,EAAEivV,WAAWjvV,EAAEyma,UAAUzma,EAAEwma,YAAYxma,EAAEk/L,aAAa,EAAEwnO,UAAU,SAAS1ma,GAAG,MAAG,cAC3eA,EAASA,EAAE0ma,WAAU1ma,IAAI4la,KAAKA,IAAI,cAAc5la,EAAEvD,MAAMipa,GAAG1la,EAAEoma,QAAQR,GAAGQ,QAAQT,GAAG3la,EAAEqma,QAAQT,GAAGS,SAASV,GAAGD,GAAG,EAAEE,GAAG5la,GAAU0la,GAAE,EAAEiB,UAAU,SAAS3ma,GAAG,MAAM,cAAcA,EAAEA,EAAE2ma,UAAUhB,EAAE,IAAIiB,GAAGxB,GAAGe,IAAiCU,GAAGzB,GAA7BpvR,EAAE,CAAC,EAAEmwR,GAAG,CAAClxX,aAAa,KAA4C6xX,GAAG1B,GAA9BpvR,EAAE,CAAC,EAAEiwR,GAAG,CAAC/mO,cAAc,KAA0E6nO,GAAG3B,GAA5DpvR,EAAE,CAAC,EAAE6vR,GAAG,CAAC3+E,cAAc,EAAE8/E,YAAY,EAAEC,cAAc,KAAcC,GAAGlxR,EAAE,CAAC,EAAE6vR,GAAG,CAAC/nO,cAAc,SAAS99L,GAAG,MAAM,kBAAkBA,EAAEA,EAAE89L,cAAc9hM,OAAO8hM,aAAa,IAAIqpO,GAAG/B,GAAG8B,IAAyBE,GAAGhC,GAArBpvR,EAAE,CAAC,EAAE6vR,GAAG,CAACrqa,KAAK,KAAc08N,GAAG,CAACmvM,IAAI,SACxfC,SAAS,IAAIj2Y,KAAK,YAAYw+O,GAAG,UAAUh/O,MAAM,aAAai/O,KAAK,YAAYy3J,IAAI,SAASC,IAAI,KAAK9kD,KAAK,cAAc+kD,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGloa,GAAG,IAAIqpB,EAAEpG,KAAKmS,YAAY,OAAO/L,EAAEi9Y,iBAAiBj9Y,EAAEi9Y,iBAAiBtma,MAAIA,EAAE6na,GAAG7na,OAAMqpB,EAAErpB,EAAK,CAAC,SAASuma,KAAK,OAAO2B,EAAE,CAChS,IAAIC,GAAGnyR,EAAE,CAAC,EAAEiwR,GAAG,CAAC13Y,IAAI,SAASvuB,GAAG,GAAGA,EAAEuuB,IAAI,CAAC,IAAIlF,EAAE6uM,GAAGl4N,EAAEuuB,MAAMvuB,EAAEuuB,IAAI,GAAG,iBAAiBlF,EAAE,OAAOA,CAAC,CAAC,MAAM,aAAarpB,EAAEvD,KAAc,MAARuD,EAAEila,GAAGjla,IAAU,QAAQ4pB,OAAO2iF,aAAavsG,GAAI,YAAYA,EAAEvD,MAAM,UAAUuD,EAAEvD,KAAKmra,GAAG5na,EAAEstB,UAAU,eAAe,EAAE,EAAEoyB,KAAK,EAAEl4C,SAAS,EAAEkvL,QAAQ,EAAEE,SAAS,EAAE/gK,OAAO,EAAE8gK,QAAQ,EAAE2zC,OAAO,EAAE7O,OAAO,EAAE6qM,iBAAiBC,GAAGxqO,SAAS,SAAS/7L,GAAG,MAAM,aAAaA,EAAEvD,KAAKwoa,GAAGjla,GAAG,CAAC,EAAEstB,QAAQ,SAASttB,GAAG,MAAM,YAAYA,EAAEvD,MAAM,UAAUuD,EAAEvD,KAAKuD,EAAEstB,QAAQ,CAAC,EAAEsqL,MAAM,SAAS53M,GAAG,MAAM,aAC7eA,EAAEvD,KAAKwoa,GAAGjla,GAAG,YAAYA,EAAEvD,MAAM,UAAUuD,EAAEvD,KAAKuD,EAAEstB,QAAQ,CAAC,IAAI86Y,GAAGhD,GAAG+C,IAAiIE,GAAGjD,GAA7HpvR,EAAE,CAAC,EAAEmwR,GAAG,CAAChnE,UAAU,EAAE7hW,MAAM,EAAEgB,OAAO,EAAEgqa,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEr8K,UAAU,KAAmIs8K,GAAGxD,GAArHpvR,EAAE,CAAC,EAAEiwR,GAAG,CAAC/jQ,QAAQ,EAAE2mQ,cAAc,EAAEr9K,eAAe,EAAE31N,OAAO,EAAE8gK,QAAQ,EAAED,QAAQ,EAAEE,SAAS,EAAE0vO,iBAAiBC,MAA0EuC,GAAG1D,GAA3DpvR,EAAE,CAAC,EAAE6vR,GAAG,CAAC9mJ,aAAa,EAAEioJ,YAAY,EAAEC,cAAc,KAAc8B,GAAG/yR,EAAE,CAAC,EAAEmwR,GAAG,CAACnoF,OAAO,SAASh+U,GAAG,MAAM,WAAWA,EAAEA,EAAEg+U,OAAO,gBAAgBh+U,GAAGA,EAAEgpa,YAAY,CAAC,EACnfpyJ,OAAO,SAAS52Q,GAAG,MAAM,WAAWA,EAAEA,EAAE42Q,OAAO,gBAAgB52Q,GAAGA,EAAEipa,YAAY,eAAejpa,GAAGA,EAAEkpa,WAAW,CAAC,EAAEC,OAAO,EAAEC,UAAU,IAAIC,GAAGjE,GAAG2D,IAAIO,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAGlZ,GAAI,qBAAqBr0Z,OAAOwta,GAAG,KAAKnZ,GAAI,iBAAiB5+Y,WAAW+3Z,GAAG/3Z,SAAS2/E,cAAc,IAAIq4U,GAAGpZ,GAAI,cAAcr0Z,SAASwta,GAAGE,GAAGrZ,KAAMkZ,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAIG,GAAG//Y,OAAO2iF,aAAa,IAAIq9T,IAAG,EAC1W,SAASzwV,GAAGn5E,EAAEqpB,GAAG,OAAOrpB,GAAG,IAAK,QAAQ,OAAO,IAAIspa,GAAGprY,QAAQ7U,EAAEiE,SAAS,IAAK,UAAU,OAAO,MAAMjE,EAAEiE,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAASu8Y,GAAG7pa,GAAc,MAAM,kBAAjBA,EAAEA,EAAEghU,SAAkC,SAAShhU,EAAEA,EAAExE,KAAK,IAAI,CAAC,IAAIwoL,IAAG,EAE9Q,IAAIhqG,GAAG,CAACz4E,OAAM,EAAGihB,MAAK,EAAG8Q,UAAS,EAAG,kBAAiB,EAAGz1B,OAAM,EAAG8L,OAAM,EAAGq2C,QAAO,EAAG0N,UAAS,EAAGznC,OAAM,EAAGolC,QAAO,EAAGy+W,KAAI,EAAG9oa,MAAK,EAAGqyB,MAAK,EAAGuvB,KAAI,EAAGu3K,MAAK,GAAI,SAAS4vM,GAAG/pa,GAAG,IAAIqpB,EAAErpB,GAAGA,EAAE27J,UAAU37J,EAAE27J,SAASljH,cAAc,MAAM,UAAUpvB,IAAI2wD,GAAGh6E,EAAEvD,MAAM,aAAa4sB,CAAO,CAAC,SAAS+wD,GAAGp6E,EAAEqpB,EAAErZ,EAAEoZ,GAAG+vY,GAAG/vY,GAAsB,GAAnBC,EAAE2gZ,GAAG3gZ,EAAE,aAAgBvkB,SAASkL,EAAE,IAAIwoL,GAAG,WAAW,SAAS,KAAKxoL,EAAEoZ,GAAGppB,EAAEikB,KAAK,CAAC9sB,MAAM6Y,EAAEi6Z,UAAU5gZ,IAAI,CAAC,IAAI6gZ,GAAG,KAAKC,GAAG,KAAK,SAAS5tQ,GAAGv8J,GAAGoqa,GAAGpqa,EAAE,EAAE,CAAC,SAASqqa,GAAGrqa,GAAe,GAAGy0Z,EAAT6V,GAAGtqa,IAAY,OAAOA,CAAC,CACpe,SAASuqa,GAAGvqa,EAAEqpB,GAAG,GAAG,WAAWrpB,EAAE,OAAOqpB,CAAC,CAAC,IAAImhZ,IAAG,EAAG,GAAGna,EAAG,CAAC,IAAIoa,GAAG,GAAGpa,EAAG,CAAC,IAAIqa,GAAG,YAAYj5Z,SAAS,IAAIi5Z,GAAG,CAAC,IAAIC,GAAGl5Z,SAASrV,cAAc,OAAOuua,GAAGx/W,aAAa,UAAU,WAAWu/W,GAAG,oBAAoBC,GAAGC,OAAO,CAACH,GAAGC,EAAE,MAAMD,IAAG,EAAGD,GAAGC,MAAMh5Z,SAAS2/E,cAAc,EAAE3/E,SAAS2/E,aAAa,CAAC,SAASy5U,KAAKX,KAAKA,GAAGY,YAAY,mBAAmBC,IAAIZ,GAAGD,GAAG,KAAK,CAAC,SAASa,GAAG/qa,GAAG,GAAG,UAAUA,EAAE++Q,cAAcsrJ,GAAGF,IAAI,CAAC,IAAI9gZ,EAAE,GAAG+wD,GAAG/wD,EAAE8gZ,GAAGnqa,EAAE42Z,GAAG52Z,IAAIm6Z,GAAG59P,GAAGlzI,EAAE,CAAC,CAC/b,SAAS2hZ,GAAGhra,EAAEqpB,EAAErZ,GAAG,YAAYhQ,GAAG6qa,KAAUV,GAAGn6Z,GAARk6Z,GAAG7gZ,GAAU4hZ,YAAY,mBAAmBF,KAAK,aAAa/qa,GAAG6qa,IAAI,CAAC,SAASK,GAAGlra,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOqqa,GAAGF,GAAG,CAAC,SAASgB,GAAGnra,EAAEqpB,GAAG,GAAG,UAAUrpB,EAAE,OAAOqqa,GAAGhhZ,EAAE,CAAC,SAAS+hZ,GAAGpra,EAAEqpB,GAAG,GAAG,UAAUrpB,GAAG,WAAWA,EAAE,OAAOqqa,GAAGhhZ,EAAE,CAAiE,IAAIgiZ,GAAG,oBAAoBzla,OAAOk6L,GAAGl6L,OAAOk6L,GAA5G,SAAY9/L,EAAEqpB,GAAG,OAAOrpB,IAAIqpB,IAAI,IAAIrpB,GAAG,EAAEA,IAAI,EAAEqpB,IAAIrpB,IAAIA,GAAGqpB,IAAIA,CAAC,EACtW,SAASiiZ,GAAGtra,EAAEqpB,GAAG,GAAGgiZ,GAAGrra,EAAEqpB,GAAG,OAAM,EAAG,GAAG,kBAAkBrpB,GAAG,OAAOA,GAAG,kBAAkBqpB,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIrZ,EAAEpK,OAAOC,KAAK7F,GAAGopB,EAAExjB,OAAOC,KAAKwjB,GAAG,GAAGrZ,EAAElL,SAASskB,EAAEtkB,OAAO,OAAM,EAAG,IAAIskB,EAAE,EAAEA,EAAEpZ,EAAElL,OAAOskB,IAAI,CAAC,IAAIzsB,EAAEqT,EAAEoZ,GAAG,IAAIknY,EAAG5mY,KAAKL,EAAE1sB,KAAK0ua,GAAGrra,EAAErD,GAAG0sB,EAAE1sB,IAAI,OAAM,CAAE,CAAC,OAAM,CAAE,CAAC,SAAS4ua,GAAGvra,GAAG,KAAKA,GAAGA,EAAE2iG,YAAY3iG,EAAEA,EAAE2iG,WAAW,OAAO3iG,CAAC,CACtU,SAASwra,GAAGxra,EAAEqpB,GAAG,IAAwBD,EAApBpZ,EAAEu7Z,GAAGvra,GAAO,IAAJA,EAAE,EAAYgQ,GAAG,CAAC,GAAG,IAAIA,EAAEyuF,SAAS,CAA0B,GAAzBr1E,EAAEppB,EAAEgQ,EAAE+gG,YAAYjsG,OAAU9E,GAAGqpB,GAAGD,GAAGC,EAAE,MAAM,CAACy5E,KAAK9yF,EAAE0b,OAAOrC,EAAErpB,GAAGA,EAAEopB,CAAC,CAACppB,EAAE,CAAC,KAAKgQ,GAAG,CAAC,GAAGA,EAAE4yF,YAAY,CAAC5yF,EAAEA,EAAE4yF,YAAY,MAAM5iG,CAAC,CAACgQ,EAAEA,EAAE8xF,UAAU,CAAC9xF,OAAE,CAAM,CAACA,EAAEu7Z,GAAGv7Z,EAAE,CAAC,CAAC,SAASy7Z,GAAGzra,EAAEqpB,GAAG,SAAOrpB,IAAGqpB,KAAErpB,IAAIqpB,KAAKrpB,GAAG,IAAIA,EAAEy+F,YAAYp1E,GAAG,IAAIA,EAAEo1E,SAASgtU,GAAGzra,EAAEqpB,EAAEy4E,YAAY,aAAa9hG,EAAEA,EAAEw7E,SAASnyD,KAAGrpB,EAAEg/J,4BAAwD,GAA7Bh/J,EAAEg/J,wBAAwB31I,KAAY,CAC9Z,SAASqiZ,KAAK,IAAI,IAAI1ra,EAAEhE,OAAOqtB,EAAEqrY,IAAKrrY,aAAarpB,EAAE2ra,mBAAmB,CAAC,IAAI,IAAI37Z,EAAE,kBAAkBqZ,EAAE09Q,cAAcv/R,SAAS0H,IAAI,CAAC,MAAMka,GAAGpZ,GAAE,CAAE,CAAC,IAAGA,EAAyB,MAAMqZ,EAAEqrY,GAA/B10Z,EAAEqpB,EAAE09Q,eAAgCt1R,SAAS,CAAC,OAAO4X,CAAC,CAAC,SAASuiZ,GAAG5ra,GAAG,IAAIqpB,EAAErpB,GAAGA,EAAE27J,UAAU37J,EAAE27J,SAASljH,cAAc,OAAOpvB,IAAI,UAAUA,IAAI,SAASrpB,EAAEvD,MAAM,WAAWuD,EAAEvD,MAAM,QAAQuD,EAAEvD,MAAM,QAAQuD,EAAEvD,MAAM,aAAauD,EAAEvD,OAAO,aAAa4sB,GAAG,SAASrpB,EAAEijL,gBAAgB,CACxa,SAAS4oP,GAAG7ra,GAAG,IAAIqpB,EAAEqiZ,KAAK17Z,EAAEhQ,EAAE8ra,YAAY1iZ,EAAEppB,EAAE6gC,eAAe,GAAGxX,IAAIrZ,GAAGA,GAAGA,EAAEspB,eAAemyY,GAAGz7Z,EAAEspB,cAAcm9E,gBAAgBzmG,GAAG,CAAC,GAAG,OAAOoZ,GAAGwiZ,GAAG57Z,GAAG,GAAGqZ,EAAED,EAAEpD,WAAc,KAARhmB,EAAEopB,EAAEa,OAAiBjqB,EAAEqpB,GAAG,mBAAmBrZ,EAAEA,EAAE+lQ,eAAe1sP,EAAErZ,EAAEgoQ,aAAajgQ,KAAKC,IAAIhY,EAAEgQ,EAAEtH,MAAM5D,aAAa,IAAG9E,GAAGqpB,EAAErZ,EAAEspB,eAAe7nB,WAAW4X,EAAEq8J,aAAa1pL,QAASmwL,aAAa,CAACnsL,EAAEA,EAAEmsL,eAAe,IAAIxvL,EAAEqT,EAAE+gG,YAAYjsG,OAAOkuB,EAAEjb,KAAKC,IAAIoR,EAAEpD,MAAMrpB,GAAGysB,OAAE,IAASA,EAAEa,IAAI+I,EAAEjb,KAAKC,IAAIoR,EAAEa,IAAIttB,IAAIqD,EAAE08C,QAAQ1pB,EAAE5J,IAAIzsB,EAAEysB,EAAEA,EAAE4J,EAAEA,EAAEr2B,GAAGA,EAAE6ua,GAAGx7Z,EAAEgjB,GAAG,IAAIs8D,EAAEk8U,GAAGx7Z,EACvfoZ,GAAGzsB,GAAG2yF,IAAI,IAAItvF,EAAE+ra,YAAY/ra,EAAEujL,aAAa5mL,EAAEmmG,MAAM9iG,EAAEwjL,eAAe7mL,EAAE+uB,QAAQ1rB,EAAEqjL,YAAY/zF,EAAEwT,MAAM9iG,EAAEsjL,cAAch0F,EAAE5jE,WAAUrC,EAAEA,EAAEo/E,eAAgB+P,SAAS77G,EAAEmmG,KAAKnmG,EAAE+uB,QAAQ1rB,EAAEssL,kBAAkBt5J,EAAE5J,GAAGppB,EAAE6vJ,SAASxmI,GAAGrpB,EAAE08C,OAAO4yC,EAAEwT,KAAKxT,EAAE5jE,UAAUrC,EAAE+/E,OAAO9Z,EAAEwT,KAAKxT,EAAE5jE,QAAQ1rB,EAAE6vJ,SAASxmI,IAAI,CAAM,IAALA,EAAE,GAAOrpB,EAAEgQ,EAAEhQ,EAAEA,EAAE8hG,YAAY,IAAI9hG,EAAEy+F,UAAUp1E,EAAEpF,KAAK,CAACqH,QAAQtrB,EAAE2S,KAAK3S,EAAEi2G,WAAWp5G,IAAImD,EAAE6C,YAAmD,IAAvC,oBAAoBmN,EAAEkb,OAAOlb,EAAEkb,QAAYlb,EAAE,EAAEA,EAAEqZ,EAAEvkB,OAAOkL,KAAIhQ,EAAEqpB,EAAErZ,IAAKsb,QAAQ2qF,WAAWj2G,EAAE2S,KAAK3S,EAAEsrB,QAAQzoB,UAAU7C,EAAEnD,GAAG,CAAC,CACzf,IAAImva,GAAG3b,GAAI,iBAAiB5+Y,UAAU,IAAIA,SAAS2/E,aAAa66U,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGrsa,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEpZ,EAAEhU,SAASgU,EAAEA,EAAEyB,SAAS,IAAIzB,EAAEyuF,SAASzuF,EAAEA,EAAEspB,cAAc8yY,IAAI,MAAMH,IAAIA,KAAKvX,EAAGtrY,KAAU,mBAALA,EAAE6iZ,KAAyBL,GAAGxiZ,GAAGA,EAAE,CAACpD,MAAMoD,EAAE2sP,eAAe9rP,IAAIb,EAAE4uP,cAAuF5uP,EAAE,CAACm6J,YAA3En6J,GAAGA,EAAEkQ,eAAelQ,EAAEkQ,cAAcosJ,aAAa1pL,QAAQmwL,gBAA+B5I,WAAWC,aAAap6J,EAAEo6J,aAAaH,UAAUj6J,EAAEi6J,UAAUC,YAAYl6J,EAAEk6J,aAAc6oP,IAAIb,GAAGa,GAAG/iZ,KAAK+iZ,GAAG/iZ,EAAsB,GAApBA,EAAE4gZ,GAAGkC,GAAG,aAAgBpna,SAASukB,EAAE,IAAImvK,GAAG,WAAW,SAAS,KAAKnvK,EAAErZ,GAAGhQ,EAAEikB,KAAK,CAAC9sB,MAAMkyB,EAAE4gZ,UAAU7gZ,IAAIC,EAAEhM,OAAO4uZ,KAAK,CACtf,SAASK,GAAGtsa,EAAEqpB,GAAG,IAAIrZ,EAAE,CAAC,EAAiF,OAA/EA,EAAEhQ,EAAEy4C,eAAepvB,EAAEovB,cAAczoC,EAAE,SAAShQ,GAAG,SAASqpB,EAAErZ,EAAE,MAAMhQ,GAAG,MAAMqpB,EAASrZ,CAAC,CAAC,IAAIu8Z,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkB/mC,cAAc+mC,GAAG,aAAa,kBAAkBK,GAAG,CAAC,EAAEC,GAAG,CAAC,EACpF,SAASC,GAAG7sa,GAAG,GAAG2sa,GAAG3sa,GAAG,OAAO2sa,GAAG3sa,GAAG,IAAIusa,GAAGvsa,GAAG,OAAOA,EAAE,IAAYgQ,EAARqZ,EAAEkjZ,GAAGvsa,GAAK,IAAIgQ,KAAKqZ,EAAE,GAAGA,EAAEI,eAAezZ,IAAIA,KAAK48Z,GAAG,OAAOD,GAAG3sa,GAAGqpB,EAAErZ,GAAG,OAAOhQ,CAAC,CAA/XqwZ,IAAKuc,GAAGn7Z,SAASrV,cAAc,OAAOzF,MAAM,mBAAmBqF,gBAAgBuwa,GAAGC,aAAazpa,iBAAiBwpa,GAAGE,mBAAmB1pa,iBAAiBwpa,GAAGG,eAAe3pa,WAAW,oBAAoB/G,eAAeuwa,GAAGhnC,cAAc1mI,YAAwJ,IAAIiuK,GAAGD,GAAG,gBAAgBE,GAAGF,GAAG,sBAAsBG,GAAGH,GAAG,kBAAkBI,GAAGJ,GAAG,iBAAiBK,GAAG,IAAI/6O,IAAIg7O,GAAG,smBAAsmBlha,MAAM,KAC/lC,SAASmha,GAAGpta,EAAEqpB,GAAG6jZ,GAAGt4Y,IAAI50B,EAAEqpB,GAAG8mY,EAAG9mY,EAAE,CAACrpB,GAAG,CAAC,IAAI,IAAIqta,GAAG,EAAEA,GAAGF,GAAGroa,OAAOuoa,KAAK,CAAC,IAAIC,GAAGH,GAAGE,IAA2DD,GAApDE,GAAG70X,cAAuD,MAAtC60X,GAAG,GAAG5xX,cAAc4xX,GAAGz7Z,MAAM,IAAiB,CAACu7Z,GAAGN,GAAG,kBAAkBM,GAAGL,GAAG,wBAAwBK,GAAGJ,GAAG,oBAAoBI,GAAG,WAAW,iBAAiBA,GAAG,UAAU,WAAWA,GAAG,WAAW,UAAUA,GAAGH,GAAG,mBAAmB7c,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAC7cA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBD,EAAG,WAAW,oEAAoElkZ,MAAM,MAAMkkZ,EAAG,WAAW,uFAAuFlkZ,MAAM,MAAMkkZ,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2DlkZ,MAAM,MAAMkkZ,EAAG,qBAAqB,6DAA6DlkZ,MAAM,MAC/fkkZ,EAAG,sBAAsB,8DAA8DlkZ,MAAM,MAAM,IAAIsha,GAAG,6NAA6Ntha,MAAM,KAAKuha,GAAG,IAAI1pO,IAAI,0CAA0C73L,MAAM,KAAK9E,OAAOoma,KACzZ,SAASt7F,GAAGjyU,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEppB,EAAEvD,MAAM,gBAAgBuD,EAAE+jQ,cAAc/zP,EAlDjE,SAAYhQ,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAEq2B,EAAEs8D,EAAEruF,EAAEiyB,GAA4B,GAAzBqpY,GAAGn5Y,MAAMH,KAAK0M,WAAcwrY,GAAG,CAAC,IAAGA,GAAgC,MAAM7rY,MAAM9F,EAAE,MAA1C,IAAIqwB,EAAE0hX,GAAGJ,IAAG,EAAGI,GAAG,KAA8BC,KAAKA,IAAG,EAAGY,GAAGviX,EAAE,CAAC,CAkDpEsjX,CAAG/zY,EAAEC,OAAE,EAAOrpB,GAAGA,EAAE+jQ,cAAc,IAAI,CACxG,SAASqmK,GAAGpqa,EAAEqpB,GAAGA,EAAE,KAAO,EAAFA,GAAK,IAAI,IAAIrZ,EAAE,EAAEA,EAAEhQ,EAAE8E,OAAOkL,IAAI,CAAC,IAAIoZ,EAAEppB,EAAEgQ,GAAGrT,EAAEysB,EAAEjyB,MAAMiyB,EAAEA,EAAE6gZ,UAAUjqa,EAAE,CAAC,IAAIgzB,OAAE,EAAO,GAAG3J,EAAE,IAAI,IAAIimE,EAAElmE,EAAEtkB,OAAO,EAAE,GAAGwqF,EAAEA,IAAI,CAAC,IAAIruF,EAAEmoB,EAAEkmE,GAAGp8D,EAAEjyB,EAAEy3D,SAAS7e,EAAE54C,EAAE8iQ,cAA2B,GAAb9iQ,EAAEA,EAAEurD,SAAYt5B,IAAIF,GAAGr2B,EAAEy1R,uBAAuB,MAAMpyR,EAAEiyU,GAAGt1U,EAAEsE,EAAE44C,GAAG7mB,EAAEE,CAAC,MAAM,IAAIo8D,EAAE,EAAEA,EAAElmE,EAAEtkB,OAAOwqF,IAAI,CAAoD,GAA5Cp8D,GAAPjyB,EAAEmoB,EAAEkmE,IAAO52B,SAAS7e,EAAE54C,EAAE8iQ,cAAc9iQ,EAAEA,EAAEurD,SAAYt5B,IAAIF,GAAGr2B,EAAEy1R,uBAAuB,MAAMpyR,EAAEiyU,GAAGt1U,EAAEsE,EAAE44C,GAAG7mB,EAAEE,CAAC,CAAC,CAAC,CAAC,GAAGsoY,GAAG,MAAMx7Z,EAAEo8Z,GAAGZ,IAAG,EAAGY,GAAG,KAAKp8Z,CAAE,CAC5a,SAAS81N,GAAE91N,EAAEqpB,GAAG,IAAIrZ,EAAEqZ,EAAEokZ,SAAI,IAASz9Z,IAAIA,EAAEqZ,EAAEokZ,IAAI,IAAI3pO,KAAK,IAAI16K,EAAEppB,EAAE,WAAWgQ,EAAEk4C,IAAI9+B,KAAKskZ,GAAGrkZ,EAAErpB,EAAE,GAAE,GAAIgQ,EAAE0wB,IAAItX,GAAG,CAAC,SAASukZ,GAAG3ta,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAE,EAAEC,IAAID,GAAG,GAAGskZ,GAAG19Z,EAAEhQ,EAAEopB,EAAEC,EAAE,CAAC,IAAIukZ,GAAG,kBAAkB71Z,KAAKknC,SAAS9G,SAAS,IAAItmC,MAAM,GAAG,SAASg8Z,GAAG7ta,GAAG,IAAIA,EAAE4ta,IAAI,CAAC5ta,EAAE4ta,KAAI,EAAG3R,EAAGrqZ,SAAQ,SAASyX,GAAG,oBAAoBA,IAAImkZ,GAAGtlX,IAAI7+B,IAAIskZ,GAAGtkZ,GAAE,EAAGrpB,GAAG2ta,GAAGtkZ,GAAE,EAAGrpB,GAAG,IAAG,IAAIqpB,EAAE,IAAIrpB,EAAEy+F,SAASz+F,EAAEA,EAAEs5B,cAAc,OAAOjQ,GAAGA,EAAEukZ,MAAMvkZ,EAAEukZ,KAAI,EAAGD,GAAG,mBAAkB,EAAGtkZ,GAAG,CAAC,CACjb,SAASqkZ,GAAG1ta,EAAEqpB,EAAErZ,EAAEoZ,GAAG,OAAO83Y,GAAG73Y,IAAI,KAAK,EAAE,IAAI1sB,EAAEmka,GAAG,MAAM,KAAK,EAAEnka,EAAEqka,GAAG,MAAM,QAAQrka,EAAEoka,GAAG/wZ,EAAErT,EAAEm1B,KAAK,KAAKzI,EAAErZ,EAAEhQ,GAAGrD,OAAE,GAAQ09Z,IAAI,eAAehxY,GAAG,cAAcA,GAAG,UAAUA,IAAI1sB,GAAE,GAAIysB,OAAE,IAASzsB,EAAEqD,EAAE7D,iBAAiBktB,EAAErZ,EAAE,CAACmiP,SAAQ,EAAGhrD,QAAQxqM,IAAIqD,EAAE7D,iBAAiBktB,EAAErZ,GAAE,QAAI,IAASrT,EAAEqD,EAAE7D,iBAAiBktB,EAAErZ,EAAE,CAACm3L,QAAQxqM,IAAIqD,EAAE7D,iBAAiBktB,EAAErZ,GAAE,EAAG,CAClV,SAASixZ,GAAGjha,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAG,IAAIq2B,EAAE5J,EAAE,GAAG,KAAO,EAAFC,IAAM,KAAO,EAAFA,IAAM,OAAOD,EAAEppB,EAAE,OAAO,CAAC,GAAG,OAAOopB,EAAE,OAAO,IAAIkmE,EAAElmE,EAAE9hB,IAAI,GAAG,IAAIgoF,GAAG,IAAIA,EAAE,CAAC,IAAIruF,EAAEmoB,EAAE65Y,UAAU4B,cAAc,GAAG5ja,IAAItE,GAAG,IAAIsE,EAAEw9F,UAAUx9F,EAAE6gG,aAAanlG,EAAE,MAAM,GAAG,IAAI2yF,EAAE,IAAIA,EAAElmE,EAAE+5Y,OAAO,OAAO7zU,GAAG,CAAC,IAAIp8D,EAAEo8D,EAAEhoF,IAAI,IAAG,IAAI4rB,GAAG,IAAIA,MAAKA,EAAEo8D,EAAE2zU,UAAU4B,iBAAkBloa,GAAG,IAAIu2B,EAAEurE,UAAUvrE,EAAE4uE,aAAanlG,GAAE,OAAO2yF,EAAEA,EAAE6zU,MAAM,CAAC,KAAK,OAAOlia,GAAG,CAAS,GAAG,QAAXquF,EAAEgxU,GAAGr/Z,IAAe,OAAe,GAAG,KAAXiyB,EAAEo8D,EAAEhoF,MAAc,IAAI4rB,EAAE,CAAC9J,EAAE4J,EAAEs8D,EAAE,SAAStvF,CAAC,CAACiB,EAAEA,EAAE6gG,UAAU,CAAC,CAAC14E,EAAEA,EAAE+5Y,MAAM,CAAChJ,IAAG,WAAW,IAAI/wY,EAAE4J,EAAEr2B,EAAEi6Z,GAAG5mZ,GAAGs/E,EAAE,GACpftvF,EAAE,CAAC,IAAIiB,EAAEisa,GAAGx/Y,IAAI1tB,GAAG,QAAG,IAASiB,EAAE,CAAC,IAAIiyB,EAAEslK,GAAG90L,EAAE1D,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAIila,GAAGj1Z,GAAG,MAAMhQ,EAAE,IAAK,UAAU,IAAK,QAAQkzB,EAAEk1Y,GAAG,MAAM,IAAK,UAAU1ka,EAAE,QAAQwvB,EAAE4zY,GAAG,MAAM,IAAK,WAAWpja,EAAE,OAAOwvB,EAAE4zY,GAAG,MAAM,IAAK,aAAa,IAAK,YAAY5zY,EAAE4zY,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAI92Z,EAAEqrL,OAAO,MAAMr7L,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAckzB,EAAE0zY,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAO1zY,EAC1iB2zY,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAa3zY,EAAE01Y,GAAG,MAAM,KAAKkE,GAAG,KAAKC,GAAG,KAAKC,GAAG95Y,EAAE6zY,GAAG,MAAM,KAAKkG,GAAG/5Y,EAAE41Y,GAAG,MAAM,IAAK,SAAS51Y,EAAEgzY,GAAG,MAAM,IAAK,QAAQhzY,EAAEm2Y,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQn2Y,EAAEi0Y,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAYj0Y,EAAEm1Y,GAAG,IAAIxoa,EAAE,KAAO,EAAFwpB,GAAK8sY,GAAGt2Z,GAAG,WAAWG,EAAEotE,EAAEvtE,EAAE,OAAOoB,EAAEA,EAAE,UAAU,KAAKA,EAAEpB,EAAE,GAAG,IAAI,IAAQq2N,EAAJ1tK,EAAEp/B,EAAI,OAC/eo/B,GAAG,CAAK,IAAIwtK,GAARE,EAAE1tK,GAAUy6W,UAAsF,GAA5E,IAAI/sM,EAAE5uN,KAAK,OAAO0uN,IAAIE,EAAEF,EAAE,OAAO5oJ,IAAc,OAAV4oJ,EAAEokM,GAAG5xW,EAAE4kB,KAAYvtE,EAAEokB,KAAK6pZ,GAAGtlX,EAAEwtK,EAAEE,MAASigM,EAAE,MAAM3tW,EAAEA,EAAE26W,MAAM,CAAC,EAAEtja,EAAEiF,SAAS7D,EAAE,IAAIiyB,EAAEjyB,EAAEyC,EAAE,KAAKsM,EAAErT,GAAG2yF,EAAErrE,KAAK,CAAC9sB,MAAM8J,EAAEgpa,UAAUpqa,IAAI,CAAC,CAAC,GAAG,KAAO,EAAFwpB,GAAK,CAA4E,GAAnC6J,EAAE,aAAalzB,GAAG,eAAeA,KAAtEiB,EAAE,cAAcjB,GAAG,gBAAgBA,IAA2CgQ,IAAI49F,MAAKlqG,EAAEsM,EAAEkvL,eAAelvL,EAAEw2Z,eAAelG,GAAG58Z,KAAIA,EAAEqqa,OAAgB76Y,GAAGjyB,KAAGA,EAAEtE,EAAEX,SAASW,EAAEA,GAAGsE,EAAEtE,EAAE28B,eAAer4B,EAAEykL,aAAazkL,EAAE+sa,aAAahya,OAAUk3B,GAAqCA,EAAE9J,EAAiB,QAAf1lB,GAAnCA,EAAEsM,EAAEkvL,eAAelvL,EAAEy2Z,WAAkBnG,GAAG58Z,GAAG,QAC9dA,KAARyyZ,EAAEiH,GAAG15Z,KAAU,IAAIA,EAAE4D,KAAK,IAAI5D,EAAE4D,OAAK5D,EAAE,QAAUwvB,EAAE,KAAKxvB,EAAE0lB,GAAK8J,IAAIxvB,GAAE,CAAgU,GAA/T7D,EAAE+ma,GAAG5wM,EAAE,eAAe5oJ,EAAE,eAAe5kB,EAAE,QAAW,eAAexoD,GAAG,gBAAgBA,IAAEH,EAAEwoa,GAAGryM,EAAE,iBAAiB5oJ,EAAE,iBAAiB5kB,EAAE,WAAU2tW,EAAE,MAAMjjY,EAAEjyB,EAAEqpa,GAAGp3Y,GAAGgjM,EAAE,MAAMxyN,EAAEzC,EAAEqpa,GAAG5ma,IAAGzC,EAAE,IAAIpB,EAAEm2N,EAAExtK,EAAE,QAAQt1B,EAAEljB,EAAErT,IAAK0gB,OAAO84Y,EAAEl1Z,EAAEi+L,cAAcg3B,EAAEF,EAAE,KAAKsqM,GAAG3ja,KAAKysB,KAAIvpB,EAAE,IAAIA,EAAEutE,EAAE5kB,EAAE,QAAQ9kD,EAAEsM,EAAErT,IAAK0gB,OAAO64M,EAAEr2N,EAAEq/L,cAAci3N,EAAEngM,EAAEn2N,GAAGs2Z,EAAEngM,EAAK9iM,GAAGxvB,EAAE2lB,EAAE,CAAa,IAAR+jD,EAAE1pE,EAAE8kD,EAAE,EAAM0tK,EAAhBr2N,EAAEqzB,EAAkBgjM,EAAEA,EAAE+3M,GAAG/3M,GAAG1tK,IAAQ,IAAJ0tK,EAAE,EAAMF,EAAE5oJ,EAAE4oJ,EAAEA,EAAEi4M,GAAGj4M,GAAGE,IAAI,KAAK,EAAE1tK,EAAE0tK,GAAGr2N,EAAEoua,GAAGpua,GAAG2oD,IAAI,KAAK,EAAE0tK,EAAE1tK,GAAG4kB,EACpf6gW,GAAG7gW,GAAG8oJ,IAAI,KAAK1tK,KAAK,CAAC,GAAG3oD,IAAIutE,GAAG,OAAOA,GAAGvtE,IAAIutE,EAAE81V,UAAU,MAAM75Y,EAAExpB,EAAEoua,GAAGpua,GAAGutE,EAAE6gW,GAAG7gW,EAAE,CAACvtE,EAAE,IAAI,MAAMA,EAAE,KAAK,OAAOqzB,GAAGg7Y,GAAG5+U,EAAEruF,EAAEiyB,EAAErzB,GAAE,GAAI,OAAO6D,GAAG,OAAOyyZ,GAAG+X,GAAG5+U,EAAE6mU,EAAEzyZ,EAAE7D,GAAE,EAAG,CAA8D,GAAG,YAA1CqzB,GAAjBjyB,EAAEmoB,EAAEkhZ,GAAGlhZ,GAAGptB,QAAW2/J,UAAU16J,EAAE06J,SAASljH,gBAA+B,UAAUvlB,GAAG,SAASjyB,EAAExE,KAAK,IAAIi2Z,EAAG6X,QAAQ,GAAGR,GAAG9oa,GAAG,GAAGupa,GAAG9X,EAAG0Y,OAAO,CAAC1Y,EAAGwY,GAAG,IAAIjY,EAAG+X,EAAE,MAAM93Y,EAAEjyB,EAAE06J,WAAW,UAAUzoI,EAAEulB,gBAAgB,aAAax3C,EAAExE,MAAM,UAAUwE,EAAExE,QAAQi2Z,EAAGyY,IACrV,OAD4VzY,IAAKA,EAAGA,EAAG1yZ,EAAEopB,IAAKgxD,GAAGkV,EAAEojU,EAAG1iZ,EAAErT,IAAWs2Z,GAAIA,EAAGjzZ,EAAEiB,EAAEmoB,GAAG,aAAappB,IAAIizZ,EAAGhyZ,EAAEoha,gBAClfpP,EAAGhyH,YAAY,WAAWhgS,EAAExE,MAAMqyE,GAAG7tE,EAAE,SAASA,EAAEyH,QAAOuqZ,EAAG7pY,EAAEkhZ,GAAGlhZ,GAAGptB,OAAcgE,GAAG,IAAK,WAAa+pa,GAAG9W,IAAK,SAASA,EAAGhwO,mBAAgBgpP,GAAGhZ,EAAGiZ,GAAG9iZ,EAAE+iZ,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAG/8U,EAAEt/E,EAAErT,GAAG,MAAM,IAAK,kBAAkB,GAAGqva,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAG/8U,EAAEt/E,EAAErT,GAAG,IAAIs4Z,EAAG,GAAGsU,GAAGlgZ,EAAE,CAAC,OAAOrpB,GAAG,IAAK,mBAAmB,IAAI+7Z,EAAG,qBAAqB,MAAM1yY,EAAE,IAAK,iBAAiB0yY,EAAG,mBACpe,MAAM1yY,EAAE,IAAK,oBAAoB0yY,EAAG,sBAAsB,MAAM1yY,EAAE0yY,OAAG,CAAM,MAAM/3O,GAAG7qG,GAAGn5E,EAAEgQ,KAAK+rZ,EAAG,oBAAoB,YAAY/7Z,GAAG,MAAMgQ,EAAEsd,UAAUyuY,EAAG,sBAAsBA,IAAK2N,IAAI,OAAO15Z,EAAEyrN,SAASz3C,IAAI,uBAAuB+3O,EAAG,qBAAqBA,GAAI/3O,KAAKixO,EAAG+P,OAAY5D,GAAG,UAARD,GAAGxka,GAAkBwka,GAAGz4Z,MAAMy4Z,GAAGpwT,YAAYizE,IAAG,IAAiB,GAAZivO,EAAG+W,GAAG5gZ,EAAE2yY,IAASj3Z,SAASi3Z,EAAG,IAAIqL,GAAGrL,EAAG/7Z,EAAE,KAAKgQ,EAAErT,GAAG2yF,EAAErrE,KAAK,CAAC9sB,MAAM4ka,EAAGkO,UAAUhX,IAAKgC,EAAG8G,EAAGvga,KAAKy5Z,EAAa,QAATA,EAAG4U,GAAG75Z,MAAe+rZ,EAAGvga,KAAKy5Z,MAAUA,EAAGwU,GA5BhM,SAAYzpa,EAAEqpB,GAAG,OAAOrpB,GAAG,IAAK,iBAAiB,OAAO6pa,GAAGxgZ,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEuuL,MAAa,MAAKgyN,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAO3pa,EAAEqpB,EAAE7tB,QAASmua,IAAIC,GAAG,KAAK5pa,EAAE,QAAQ,OAAO,KAAK,CA4BEmua,CAAGnua,EAAEgQ,GA3Bzd,SAAYhQ,EAAEqpB,GAAG,GAAG26J,GAAG,MAAM,mBAAmBhkL,IAAIupa,IAAIpwV,GAAGn5E,EAAEqpB,IAAIrpB,EAAEgla,KAAKD,GAAG3D,GAAGD,GAAG,KAAKn9O,IAAG,EAAGhkL,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKqpB,EAAEqtK,SAASrtK,EAAEwM,QAAQxM,EAAEstK,UAAUttK,EAAEqtK,SAASrtK,EAAEwM,OAAO,CAAC,GAAGxM,EAAEo/B,MAAM,EAAEp/B,EAAEo/B,KAAK3jD,OAAO,OAAOukB,EAAEo/B,KAAK,GAAGp/B,EAAEuuL,MAAM,OAAOhuL,OAAO2iF,aAAaljF,EAAEuuL,MAAM,CAAC,OAAO,KAAK,IAAK,iBAAiB,OAAO8xN,IAAI,OAAOrgZ,EAAEoyM,OAAO,KAAKpyM,EAAE7tB,KAAyB,CA2BqF4ya,CAAGpua,EAAEgQ,MACje,GADoeoZ,EAAE4gZ,GAAG5gZ,EAAE,kBACvetkB,SAASnI,EAAE,IAAIyqa,GAAG,gBAAgB,cAAc,KAAKp3Z,EAAErT,GAAG2yF,EAAErrE,KAAK,CAAC9sB,MAAMwF,EAAEsta,UAAU7gZ,IAAIzsB,EAAEnB,KAAKy5Z,GAAG,CAACmV,GAAG96U,EAAEjmE,EAAE,GAAE,CAAC,SAASykZ,GAAG9ta,EAAEqpB,EAAErZ,GAAG,MAAM,CAAC0oD,SAAS14D,EAAEwsD,SAASnjC,EAAE06O,cAAc/zP,EAAE,CAAC,SAASg6Z,GAAGhqa,EAAEqpB,GAAG,IAAI,IAAIrZ,EAAEqZ,EAAE,UAAUD,EAAE,GAAG,OAAOppB,GAAG,CAAC,IAAIrD,EAAEqD,EAAEgzB,EAAEr2B,EAAEsma,UAAU,IAAItma,EAAE2K,KAAK,OAAO0rB,IAAIr2B,EAAEq2B,EAAY,OAAVA,EAAEonY,GAAGp6Z,EAAEgQ,KAAYoZ,EAAEmqC,QAAQu6W,GAAG9ta,EAAEgzB,EAAEr2B,IAAc,OAAVq2B,EAAEonY,GAAGp6Z,EAAEqpB,KAAYD,EAAEnF,KAAK6pZ,GAAG9ta,EAAEgzB,EAAEr2B,KAAKqD,EAAEA,EAAEmja,MAAM,CAAC,OAAO/5Y,CAAC,CAAC,SAAS6kZ,GAAGjua,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAEmja,aAAanja,GAAG,IAAIA,EAAEsH,KAAK,OAAOtH,GAAI,IAAI,CACnd,SAASkua,GAAGlua,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAG,IAAI,IAAIq2B,EAAE3J,EAAEg8Y,WAAW/1U,EAAE,GAAG,OAAOt/E,GAAGA,IAAIoZ,GAAG,CAAC,IAAInoB,EAAE+O,EAAEkjB,EAAEjyB,EAAEiia,UAAUrpX,EAAE54C,EAAEgia,UAAU,GAAG,OAAO/vY,GAAGA,IAAI9J,EAAE,MAAM,IAAInoB,EAAEqG,KAAK,OAAOuyC,IAAI54C,EAAE44C,EAAEl9C,EAAa,OAAVu2B,EAAEknY,GAAGpqZ,EAAEgjB,KAAYs8D,EAAE/7B,QAAQu6W,GAAG99Z,EAAEkjB,EAAEjyB,IAAKtE,GAAc,OAAVu2B,EAAEknY,GAAGpqZ,EAAEgjB,KAAYs8D,EAAErrE,KAAK6pZ,GAAG99Z,EAAEkjB,EAAEjyB,KAAM+O,EAAEA,EAAEmzZ,MAAM,CAAC,IAAI7zU,EAAExqF,QAAQ9E,EAAEikB,KAAK,CAAC9sB,MAAMkyB,EAAE4gZ,UAAU36U,GAAG,CAAC,IAAI++U,GAAG,SAASC,GAAG,iBAAiB,SAASC,GAAGvua,GAAG,OAAO,kBAAkBA,EAAEA,EAAE,GAAGA,GAAGmQ,QAAQk+Z,GAAG,MAAMl+Z,QAAQm+Z,GAAG,GAAG,CAAC,SAASE,GAAGxua,EAAEqpB,EAAErZ,GAAW,GAARqZ,EAAEklZ,GAAGllZ,GAAMklZ,GAAGvua,KAAKqpB,GAAGrZ,EAAE,MAAMsf,MAAM9F,EAAE,KAAM,CAAC,SAASilZ,KAAK,CAC9e,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAG5ua,EAAEqpB,GAAG,MAAM,aAAarpB,GAAG,aAAaA,GAAG,kBAAkBqpB,EAAE3yB,UAAU,kBAAkB2yB,EAAE3yB,UAAU,kBAAkB2yB,EAAE3nB,yBAAyB,OAAO2nB,EAAE3nB,yBAAyB,MAAM2nB,EAAE3nB,wBAAwBC,MAAM,CAC5P,IAAIkta,GAAG,oBAAoB57Y,WAAWA,gBAAW,EAAO67Y,GAAG,oBAAoBp9Y,aAAaA,kBAAa,EAAOq9Y,GAAG,oBAAoB3jZ,QAAQA,aAAQ,EAAO4jZ,GAAG,oBAAoB12B,eAAeA,eAAe,qBAAqBy2B,GAAG,SAAS/ua,GAAG,OAAO+ua,GAAG1jZ,QAAQ,MAAM3zB,KAAKsI,GAAGpI,MAAMq3a,GAAG,EAAEJ,GAAG,SAASI,GAAGjva,GAAGizB,YAAW,WAAW,MAAMjzB,CAAE,GAAE,CACpV,SAASkva,GAAGlva,EAAEqpB,GAAG,IAAIrZ,EAAEqZ,EAAED,EAAE,EAAE,EAAE,CAAC,IAAIzsB,EAAEqT,EAAE4yF,YAA6B,GAAjB5iG,EAAEipB,YAAYjZ,GAAMrT,GAAG,IAAIA,EAAE8hG,SAAS,GAAY,QAATzuF,EAAErT,EAAEnB,MAAc,CAAC,GAAG,IAAI4tB,EAA0B,OAAvBppB,EAAEipB,YAAYtsB,QAAGika,GAAGv3Y,GAAUD,GAAG,KAAK,MAAMpZ,GAAG,OAAOA,GAAG,OAAOA,GAAGoZ,IAAIpZ,EAAErT,CAAC,OAAOqT,GAAG4wZ,GAAGv3Y,EAAE,CAAC,SAAS8lZ,GAAGnva,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAE4iG,YAAY,CAAC,IAAIv5E,EAAErpB,EAAEy+F,SAAS,GAAG,IAAIp1E,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIA,EAAE,CAAU,GAAG,OAAZA,EAAErpB,EAAExE,OAAiB,OAAO6tB,GAAG,OAAOA,EAAE,MAAM,GAAG,OAAOA,EAAE,OAAO,IAAI,CAAC,CAAC,OAAOrpB,CAAC,CACjY,SAASova,GAAGpva,GAAGA,EAAEA,EAAE+8J,gBAAgB,IAAI,IAAI1zI,EAAE,EAAErpB,GAAG,CAAC,GAAG,IAAIA,EAAEy+F,SAAS,CAAC,IAAIzuF,EAAEhQ,EAAExE,KAAK,GAAG,MAAMwU,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAIqZ,EAAE,OAAOrpB,EAAEqpB,GAAG,KAAK,OAAOrZ,GAAGqZ,GAAG,CAACrpB,EAAEA,EAAE+8J,eAAe,CAAC,OAAO,IAAI,CAAC,IAAIsyQ,GAAGt3Z,KAAKknC,SAAS9G,SAAS,IAAItmC,MAAM,GAAGy9Z,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGtB,GAAG,oBAAoBsB,GAAG5B,GAAG,iBAAiB4B,GAAGG,GAAG,oBAAoBH,GAAGI,GAAG,kBAAkBJ,GAClX,SAAS/O,GAAGtga,GAAG,IAAIqpB,EAAErpB,EAAEsva,IAAI,GAAGjmZ,EAAE,OAAOA,EAAE,IAAI,IAAIrZ,EAAEhQ,EAAE8hG,WAAW9xF,GAAG,CAAC,GAAGqZ,EAAErZ,EAAE+9Z,KAAK/9Z,EAAEs/Z,IAAI,CAAe,GAAdt/Z,EAAEqZ,EAAE65Y,UAAa,OAAO75Y,EAAEoxF,OAAO,OAAOzqG,GAAG,OAAOA,EAAEyqG,MAAM,IAAIz6G,EAAEova,GAAGpva,GAAG,OAAOA,GAAG,CAAC,GAAGgQ,EAAEhQ,EAAEsva,IAAI,OAAOt/Z,EAAEhQ,EAAEova,GAAGpva,EAAE,CAAC,OAAOqpB,CAAC,CAAKrZ,GAAJhQ,EAAEgQ,GAAM8xF,UAAU,CAAC,OAAO,IAAI,CAAC,SAASo2T,GAAGl4Z,GAAkB,QAAfA,EAAEA,EAAEsva,KAAKtva,EAAE+ta,MAAc,IAAI/ta,EAAEsH,KAAK,IAAItH,EAAEsH,KAAK,KAAKtH,EAAEsH,KAAK,IAAItH,EAAEsH,IAAI,KAAKtH,CAAC,CAAC,SAASsqa,GAAGtqa,GAAG,GAAG,IAAIA,EAAEsH,KAAK,IAAItH,EAAEsH,IAAI,OAAOtH,EAAEija,UAAU,MAAM3zY,MAAM9F,EAAE,IAAK,CAAC,SAAS0vY,GAAGl5Z,GAAG,OAAOA,EAAEuva,KAAK,IAAI,CAAC,IAAIG,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAG5va,GAAG,MAAM,CAAC1I,QAAQ0I,EAAE,CACve,SAAS42N,GAAE52N,GAAG,EAAE2va,KAAK3va,EAAE1I,QAAQo4a,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAK,CAAC,SAASz8R,GAAElzI,EAAEqpB,GAAGsmZ,KAAKD,GAAGC,IAAI3va,EAAE1I,QAAQ0I,EAAE1I,QAAQ+xB,CAAC,CAAC,IAAIwmZ,GAAG,CAAC,EAAEp4M,GAAEm4M,GAAGC,IAAIC,GAAGF,IAAG,GAAIG,GAAGF,GAAG,SAASG,GAAGhwa,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAEvD,KAAKwvZ,aAAa,IAAIj8Y,EAAE,OAAO6/Z,GAAG,IAAIzmZ,EAAEppB,EAAEija,UAAU,GAAG75Y,GAAGA,EAAE6mZ,8CAA8C5mZ,EAAE,OAAOD,EAAE8mZ,0CAA0C,IAASl9Y,EAALr2B,EAAE,CAAC,EAAI,IAAIq2B,KAAKhjB,EAAErT,EAAEq2B,GAAG3J,EAAE2J,GAAoH,OAAjH5J,KAAIppB,EAAEA,EAAEija,WAAYgN,4CAA4C5mZ,EAAErpB,EAAEkwa,0CAA0Cvza,GAAUA,CAAC,CAC9d,SAASwza,GAAGnwa,GAAyB,OAAO,QAA7BA,EAAEA,EAAEgsZ,yBAAmC,IAAShsZ,CAAC,CAAC,SAASowa,KAAKx5M,GAAEk5M,IAAIl5M,GAAEa,GAAE,CAAC,SAAS44M,GAAGrwa,EAAEqpB,EAAErZ,GAAG,GAAGynN,GAAEngO,UAAUu4a,GAAG,MAAMvgZ,MAAM9F,EAAE,MAAM0pH,GAAEukF,GAAEpuM,GAAG6pH,GAAE48R,GAAG9/Z,EAAE,CAAC,SAASm8F,GAAGnsG,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEppB,EAAEija,UAAgC,GAAtB55Y,EAAEA,EAAE2iY,kBAAqB,oBAAoB5iY,EAAEgwY,gBAAgB,OAAOppZ,EAAwB,IAAI,IAAIrT,KAA9BysB,EAAEA,EAAEgwY,kBAAiC,KAAKz8Z,KAAK0sB,GAAG,MAAMiG,MAAM9F,EAAE,IAAI4qY,EAAGp0Z,IAAI,UAAUrD,IAAI,OAAOq5I,EAAE,CAAC,EAAEhmI,EAAEoZ,EAAE,CACxX,SAASknZ,GAAGtwa,GAA2G,OAAxGA,GAAGA,EAAEA,EAAEija,YAAYjja,EAAEuwa,2CAA2CV,GAAGE,GAAGt4M,GAAEngO,QAAQ47I,GAAEukF,GAAEz3N,GAAGkzI,GAAE48R,GAAGA,GAAGx4a,UAAe,CAAE,CAAC,SAASk5a,GAAGxwa,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEppB,EAAEija,UAAU,IAAI75Y,EAAE,MAAMkG,MAAM9F,EAAE,MAAMxZ,GAAGhQ,EAAEmsG,GAAGnsG,EAAEqpB,EAAE0mZ,IAAI3mZ,EAAEmnZ,0CAA0Cvwa,EAAE42N,GAAEk5M,IAAIl5M,GAAEa,IAAGvkF,GAAEukF,GAAEz3N,IAAI42N,GAAEk5M,IAAI58R,GAAE48R,GAAG9/Z,EAAE,CAAC,IAAIyga,GAAG,KAAKC,IAAG,EAAGC,IAAG,EAAG,SAASC,GAAG5wa,GAAG,OAAOywa,GAAGA,GAAG,CAACzwa,GAAGywa,GAAGxsZ,KAAKjkB,EAAE,CAChW,SAAS6wa,KAAK,IAAIF,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAI3wa,EAAE,EAAEqpB,EAAE8pY,GAAE,IAAI,IAAInjZ,EAAEyga,GAAG,IAAItd,GAAE,EAAEnzZ,EAAEgQ,EAAElL,OAAO9E,IAAI,CAAC,IAAIopB,EAAEpZ,EAAEhQ,GAAG,GAAGopB,EAAEA,GAAE,SAAU,OAAOA,EAAE,CAACqnZ,GAAG,KAAKC,IAAG,CAAE,CAAC,MAAM/za,GAAG,MAAM,OAAO8za,KAAKA,GAAGA,GAAG5+Z,MAAM7R,EAAE,IAAI09Z,GAAGI,GAAG+S,IAAIl0a,CAAE,CAAC,QAAQw2Z,GAAE9pY,EAAEsnZ,IAAG,CAAE,CAAC,CAAC,OAAO,IAAI,CAAC,IAAIG,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAG,SAASC,GAAGvxa,EAAEqpB,GAAGynZ,GAAGC,MAAME,GAAGH,GAAGC,MAAMC,GAAGA,GAAGhxa,EAAEixa,GAAG5nZ,CAAC,CACjV,SAASmoZ,GAAGxxa,EAAEqpB,EAAErZ,GAAGkha,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGA,GAAGpxa,EAAE,IAAIopB,EAAEioZ,GAAGrxa,EAAEsxa,GAAG,IAAI30a,EAAE,GAAG4ha,GAAGn1Y,GAAG,EAAEA,KAAK,GAAGzsB,GAAGqT,GAAG,EAAE,IAAIgjB,EAAE,GAAGurY,GAAGl1Y,GAAG1sB,EAAE,GAAG,GAAGq2B,EAAE,CAAC,IAAIs8D,EAAE3yF,EAAEA,EAAE,EAAEq2B,GAAG5J,GAAG,GAAGkmE,GAAG,GAAGn3C,SAAS,IAAI/uB,IAAIkmE,EAAE3yF,GAAG2yF,EAAE+hV,GAAG,GAAG,GAAG9S,GAAGl1Y,GAAG1sB,EAAEqT,GAAGrT,EAAEysB,EAAEkoZ,GAAGt+Y,EAAEhzB,CAAC,MAAMqxa,GAAG,GAAGr+Y,EAAEhjB,GAAGrT,EAAEysB,EAAEkoZ,GAAGtxa,CAAC,CAAC,SAASyxa,GAAGzxa,GAAG,OAAOA,EAAEmja,SAASoO,GAAGvxa,EAAE,GAAGwxa,GAAGxxa,EAAE,EAAE,GAAG,CAAC,SAAS0xa,GAAG1xa,GAAG,KAAKA,IAAIgxa,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,KAAK,KAAK/wa,IAAIoxa,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKG,GAAGJ,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,IAAI,CAAC,IAAIQ,GAAG,KAAKC,GAAG,KAAKt+R,IAAE,EAAGu+R,GAAG,KACje,SAASC,GAAG9xa,EAAEqpB,GAAG,IAAIrZ,EAAE+ha,GAAG,EAAE,KAAK,KAAK,GAAG/ha,EAAE2/Y,YAAY,UAAU3/Y,EAAEizZ,UAAU55Y,EAAErZ,EAAEmzZ,OAAOnja,EAAgB,QAAdqpB,EAAErpB,EAAEgya,YAAoBhya,EAAEgya,UAAU,CAAChia,GAAGhQ,EAAEo/G,OAAO,IAAI/1F,EAAEpF,KAAKjU,EAAE,CACxJ,SAASiia,GAAGjya,EAAEqpB,GAAG,OAAOrpB,EAAEsH,KAAK,KAAK,EAAE,IAAI0I,EAAEhQ,EAAEvD,KAAyE,OAAO,QAA3E4sB,EAAE,IAAIA,EAAEo1E,UAAUzuF,EAAEyoC,gBAAgBpvB,EAAEsyI,SAASljH,cAAc,KAAKpvB,KAAmBrpB,EAAEija,UAAU55Y,EAAEsoZ,GAAG3xa,EAAE4xa,GAAGzC,GAAG9lZ,EAAEs5E,aAAY,GAAO,KAAK,EAAE,OAAoD,QAA7Ct5E,EAAE,KAAKrpB,EAAEkya,cAAc,IAAI7oZ,EAAEo1E,SAAS,KAAKp1E,KAAYrpB,EAAEija,UAAU55Y,EAAEsoZ,GAAG3xa,EAAE4xa,GAAG,MAAK,GAAO,KAAK,GAAG,OAA+B,QAAxBvoZ,EAAE,IAAIA,EAAEo1E,SAAS,KAAKp1E,KAAYrZ,EAAE,OAAOoha,GAAG,CAAC/6a,GAAGg7a,GAAGz6a,SAAS06a,IAAI,KAAKtxa,EAAEq2Z,cAAc,CAAC+M,WAAW/5Y,EAAEguY,YAAYrnZ,EAAEmia,UAAU,aAAYnia,EAAE+ha,GAAG,GAAG,KAAK,KAAK,IAAK9O,UAAU55Y,EAAErZ,EAAEmzZ,OAAOnja,EAAEA,EAAEy6G,MAAMzqG,EAAE2ha,GAAG3xa,EAAE4xa,GAClf,MAAK,GAAO,QAAQ,OAAM,EAAG,CAAC,SAASQ,GAAGpya,GAAG,OAAO,KAAY,EAAPA,EAAEwF,OAAS,KAAa,IAARxF,EAAEo/G,MAAU,CAAC,SAASizT,GAAGrya,GAAG,GAAGszI,GAAE,CAAC,IAAIjqH,EAAEuoZ,GAAG,GAAGvoZ,EAAE,CAAC,IAAIrZ,EAAEqZ,EAAE,IAAI4oZ,GAAGjya,EAAEqpB,GAAG,CAAC,GAAG+oZ,GAAGpya,GAAG,MAAMsvB,MAAM9F,EAAE,MAAMH,EAAE8lZ,GAAGn/Z,EAAE4yF,aAAa,IAAIx5E,EAAEuoZ,GAAGtoZ,GAAG4oZ,GAAGjya,EAAEqpB,GAAGyoZ,GAAG1oZ,EAAEpZ,IAAIhQ,EAAEo/G,OAAe,KAATp/G,EAAEo/G,MAAY,EAAEk0B,IAAE,EAAGq+R,GAAG3xa,EAAE,CAAC,KAAK,CAAC,GAAGoya,GAAGpya,GAAG,MAAMsvB,MAAM9F,EAAE,MAAMxpB,EAAEo/G,OAAe,KAATp/G,EAAEo/G,MAAY,EAAEk0B,IAAE,EAAGq+R,GAAG3xa,CAAC,CAAC,CAAC,CAAC,SAASsya,GAAGtya,GAAG,IAAIA,EAAEA,EAAEmja,OAAO,OAAOnja,GAAG,IAAIA,EAAEsH,KAAK,IAAItH,EAAEsH,KAAK,KAAKtH,EAAEsH,KAAKtH,EAAEA,EAAEmja,OAAOwO,GAAG3xa,CAAC,CACha,SAASuya,GAAGvya,GAAG,GAAGA,IAAI2xa,GAAG,OAAM,EAAG,IAAIr+R,GAAE,OAAOg/R,GAAGtya,GAAGszI,IAAE,GAAG,EAAG,IAAIjqH,EAAkG,IAA/FA,EAAE,IAAIrpB,EAAEsH,QAAQ+hB,EAAE,IAAIrpB,EAAEsH,OAAgB+hB,EAAE,UAAXA,EAAErpB,EAAEvD,OAAmB,SAAS4sB,IAAIulZ,GAAG5ua,EAAEvD,KAAKuD,EAAEwya,gBAAmBnpZ,IAAIA,EAAEuoZ,IAAI,CAAC,GAAGQ,GAAGpya,GAAG,MAAMyya,KAAKnjZ,MAAM9F,EAAE,MAAM,KAAKH,GAAGyoZ,GAAG9xa,EAAEqpB,GAAGA,EAAE8lZ,GAAG9lZ,EAAEu5E,YAAY,CAAO,GAAN0vU,GAAGtya,GAAM,KAAKA,EAAEsH,IAAI,CAAgD,KAA7BtH,EAAE,QAApBA,EAAEA,EAAEq2Z,eAAyBr2Z,EAAEoja,WAAW,MAAW,MAAM9zY,MAAM9F,EAAE,MAAMxpB,EAAE,CAAiB,IAAhBA,EAAEA,EAAE4iG,YAAgBv5E,EAAE,EAAErpB,GAAG,CAAC,GAAG,IAAIA,EAAEy+F,SAAS,CAAC,IAAIzuF,EAAEhQ,EAAExE,KAAK,GAAG,OAAOwU,EAAE,CAAC,GAAG,IAAIqZ,EAAE,CAACuoZ,GAAGzC,GAAGnva,EAAE4iG,aAAa,MAAM5iG,CAAC,CAACqpB,GAAG,KAAK,MAAMrZ,GAAG,OAAOA,GAAG,OAAOA,GAAGqZ,GAAG,CAACrpB,EAAEA,EAAE4iG,WAAW,CAACgvU,GACjgB,IAAI,CAAC,MAAMA,GAAGD,GAAGxC,GAAGnva,EAAEija,UAAUrgU,aAAa,KAAK,OAAM,CAAE,CAAC,SAAS6vU,KAAK,IAAI,IAAIzya,EAAE4xa,GAAG5xa,GAAGA,EAAEmva,GAAGnva,EAAE4iG,YAAY,CAAC,SAAS8vU,KAAKd,GAAGD,GAAG,KAAKr+R,IAAE,CAAE,CAAC,SAASq/R,GAAG3ya,GAAG,OAAO6xa,GAAGA,GAAG,CAAC7xa,GAAG6xa,GAAG5tZ,KAAKjkB,EAAE,CAAC,IAAI4ya,GAAGthY,EAAGwzX,wBAAwB,SAAS+N,GAAG7ya,EAAEqpB,GAAG,GAAGrpB,GAAGA,EAAEssB,aAAa,CAA4B,IAAI,IAAItc,KAAnCqZ,EAAE2sH,EAAE,CAAC,EAAE3sH,GAAGrpB,EAAEA,EAAEssB,kBAA4B,IAASjD,EAAErZ,KAAKqZ,EAAErZ,GAAGhQ,EAAEgQ,IAAI,OAAOqZ,CAAC,CAAC,OAAOA,CAAC,CAAC,IAAIypZ,GAAGlD,GAAG,MAAMmD,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAI,CAAC,SAASI,GAAGnza,GAAG,IAAIqpB,EAAEypZ,GAAGx7a,QAAQs/N,GAAEk8M,IAAI9ya,EAAEo+Z,cAAc/0Y,CAAC,CACjd,SAAS+pZ,GAAGpza,EAAEqpB,EAAErZ,GAAG,KAAK,OAAOhQ,GAAG,CAAC,IAAIopB,EAAEppB,EAAEkja,UAA+H,IAApHlja,EAAEqza,WAAWhqZ,KAAKA,GAAGrpB,EAAEqza,YAAYhqZ,EAAE,OAAOD,IAAIA,EAAEiqZ,YAAYhqZ,IAAI,OAAOD,IAAIA,EAAEiqZ,WAAWhqZ,KAAKA,IAAID,EAAEiqZ,YAAYhqZ,GAAMrpB,IAAIgQ,EAAE,MAAMhQ,EAAEA,EAAEmja,MAAM,CAAC,CAAC,SAASmQ,GAAGtza,EAAEqpB,GAAG0pZ,GAAG/ya,EAAEiza,GAAGD,GAAG,KAAsB,QAAjBhza,EAAEA,EAAEuza,eAAuB,OAAOvza,EAAEwza,eAAe,KAAKxza,EAAEyza,MAAMpqZ,KAAKqqZ,IAAG,GAAI1za,EAAEwza,aAAa,KAAK,CACtU,SAASG,GAAG3za,GAAG,IAAIqpB,EAAErpB,EAAEo+Z,cAAc,GAAG6U,KAAKjza,EAAE,GAAGA,EAAE,CAACw6C,QAAQx6C,EAAE4za,cAAcvqZ,EAAEyH,KAAK,MAAM,OAAOkiZ,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMzjZ,MAAM9F,EAAE,MAAMwpZ,GAAGhza,EAAE+ya,GAAGQ,aAAa,CAACE,MAAM,EAAED,aAAaxza,EAAE,MAAMgza,GAAGA,GAAGliZ,KAAK9wB,EAAE,OAAOqpB,CAAC,CAAC,IAAIwqZ,GAAG,KAAK,SAASC,GAAG9za,GAAG,OAAO6za,GAAGA,GAAG,CAAC7za,GAAG6za,GAAG5vZ,KAAKjkB,EAAE,CAAC,SAAS+za,GAAG/za,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAIzsB,EAAE0sB,EAAE2qZ,YAA+E,OAAnE,OAAOr3a,GAAGqT,EAAE8gB,KAAK9gB,EAAE8ja,GAAGzqZ,KAAKrZ,EAAE8gB,KAAKn0B,EAAEm0B,KAAKn0B,EAAEm0B,KAAK9gB,GAAGqZ,EAAE2qZ,YAAYhka,EAASika,GAAGj0a,EAAEopB,EAAE,CAChY,SAAS6qZ,GAAGj0a,EAAEqpB,GAAGrpB,EAAEyza,OAAOpqZ,EAAE,IAAIrZ,EAAEhQ,EAAEkja,UAAqC,IAA3B,OAAOlzZ,IAAIA,EAAEyja,OAAOpqZ,GAAGrZ,EAAEhQ,EAAMA,EAAEA,EAAEmja,OAAO,OAAOnja,GAAGA,EAAEqza,YAAYhqZ,EAAgB,QAAdrZ,EAAEhQ,EAAEkja,aAAqBlzZ,EAAEqja,YAAYhqZ,GAAGrZ,EAAEhQ,EAAEA,EAAEA,EAAEmja,OAAO,OAAO,IAAInzZ,EAAE1I,IAAI0I,EAAEizZ,UAAU,IAAI,CAAC,IAAIiR,IAAG,EAAG,SAASC,GAAGn0a,GAAGA,EAAEo0a,YAAY,CAACC,UAAUr0a,EAAEq2Z,cAAcie,gBAAgB,KAAKC,eAAe,KAAK5vO,OAAO,CAACh3H,QAAQ,KAAKqmW,YAAY,KAAKP,MAAM,GAAGe,QAAQ,KAAK,CACpX,SAASC,GAAGz0a,EAAEqpB,GAAGrpB,EAAEA,EAAEo0a,YAAY/qZ,EAAE+qZ,cAAcp0a,IAAIqpB,EAAE+qZ,YAAY,CAACC,UAAUr0a,EAAEq0a,UAAUC,gBAAgBt0a,EAAEs0a,gBAAgBC,eAAev0a,EAAEu0a,eAAe5vO,OAAO3kM,EAAE2kM,OAAO6vO,QAAQx0a,EAAEw0a,SAAS,CAAC,SAAStrT,GAAGlpH,EAAEqpB,GAAG,MAAM,CAACqrZ,UAAU10a,EAAE20a,KAAKtrZ,EAAE/hB,IAAI,EAAE3P,QAAQ,KAAKmhE,SAAS,KAAKhoC,KAAK,KAAK,CACtR,SAAS8jZ,GAAG50a,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEppB,EAAEo0a,YAAY,GAAG,OAAOhrZ,EAAE,OAAO,KAAgB,GAAXA,EAAEA,EAAEu7K,OAAU,KAAO,EAAFynC,IAAK,CAAC,IAAIzvO,EAAEysB,EAAEukD,QAA+D,OAAvD,OAAOhxE,EAAE0sB,EAAEyH,KAAKzH,GAAGA,EAAEyH,KAAKn0B,EAAEm0B,KAAKn0B,EAAEm0B,KAAKzH,GAAGD,EAAEukD,QAAQtkD,EAAS4qZ,GAAGj0a,EAAEgQ,EAAE,CAAoF,OAAnE,QAAhBrT,EAAEysB,EAAE4qZ,cAAsB3qZ,EAAEyH,KAAKzH,EAAEyqZ,GAAG1qZ,KAAKC,EAAEyH,KAAKn0B,EAAEm0B,KAAKn0B,EAAEm0B,KAAKzH,GAAGD,EAAE4qZ,YAAY3qZ,EAAS4qZ,GAAGj0a,EAAEgQ,EAAE,CAAC,SAAS6ka,GAAG70a,EAAEqpB,EAAErZ,GAAmB,GAAG,QAAnBqZ,EAAEA,EAAE+qZ,eAA0B/qZ,EAAEA,EAAEs7K,OAAO,KAAO,QAAF30L,IAAY,CAAC,IAAIoZ,EAAEC,EAAEoqZ,MAAwBzja,GAAlBoZ,GAAGppB,EAAEgka,aAAkB36Y,EAAEoqZ,MAAMzja,EAAEmvZ,GAAGn/Z,EAAEgQ,EAAE,CAAC,CACrZ,SAAS8ka,GAAG90a,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAEo0a,YAAYhrZ,EAAEppB,EAAEkja,UAAU,GAAG,OAAO95Y,GAAoBpZ,KAAhBoZ,EAAEA,EAAEgrZ,aAAmB,CAAC,IAAIz3a,EAAE,KAAKq2B,EAAE,KAAyB,GAAG,QAAvBhjB,EAAEA,EAAEska,iBAA4B,CAAC,EAAE,CAAC,IAAIhlV,EAAE,CAAColV,UAAU1ka,EAAE0ka,UAAUC,KAAK3ka,EAAE2ka,KAAKrta,IAAI0I,EAAE1I,IAAI3P,QAAQqY,EAAErY,QAAQmhE,SAAS9oD,EAAE8oD,SAAShoC,KAAK,MAAM,OAAOkC,EAAEr2B,EAAEq2B,EAAEs8D,EAAEt8D,EAAEA,EAAElC,KAAKw+D,EAAEt/E,EAAEA,EAAE8gB,IAAI,OAAO,OAAO9gB,GAAG,OAAOgjB,EAAEr2B,EAAEq2B,EAAE3J,EAAE2J,EAAEA,EAAElC,KAAKzH,CAAC,MAAM1sB,EAAEq2B,EAAE3J,EAAiH,OAA/GrZ,EAAE,CAACqka,UAAUjrZ,EAAEirZ,UAAUC,gBAAgB33a,EAAE43a,eAAevhZ,EAAE2xK,OAAOv7K,EAAEu7K,OAAO6vO,QAAQprZ,EAAEorZ,cAASx0a,EAAEo0a,YAAYpka,EAAQ,CAAoB,QAAnBhQ,EAAEgQ,EAAEuka,gBAAwBvka,EAAEska,gBAAgBjrZ,EAAErpB,EAAE8wB,KACnfzH,EAAErZ,EAAEuka,eAAelrZ,CAAC,CACpB,SAAS0rZ,GAAG/0a,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAIzsB,EAAEqD,EAAEo0a,YAAYF,IAAG,EAAG,IAAIlhZ,EAAEr2B,EAAE23a,gBAAgBhlV,EAAE3yF,EAAE43a,eAAetza,EAAEtE,EAAEgoM,OAAOh3H,QAAQ,GAAG,OAAO1sE,EAAE,CAACtE,EAAEgoM,OAAOh3H,QAAQ,KAAK,IAAIz6C,EAAEjyB,EAAE44C,EAAE3mB,EAAEpC,KAAKoC,EAAEpC,KAAK,KAAK,OAAOw+D,EAAEt8D,EAAE6mB,EAAEy1C,EAAEx+D,KAAK+oB,EAAEy1C,EAAEp8D,EAAE,IAAIurB,EAAEz+C,EAAEkja,UAAU,OAAOzkX,KAAoBx9C,GAAhBw9C,EAAEA,EAAE21X,aAAgBG,kBAAmBjlV,IAAI,OAAOruF,EAAEw9C,EAAE61X,gBAAgBz6X,EAAE54C,EAAE6vB,KAAK+oB,EAAE4E,EAAE81X,eAAerhZ,GAAG,CAAC,GAAG,OAAOF,EAAE,CAAC,IAAIvvB,EAAE9G,EAAE03a,UAA6B,IAAnB/kV,EAAE,EAAE7wC,EAAE5E,EAAE3mB,EAAE,KAAKjyB,EAAE+xB,IAAI,CAAC,IAAImkD,EAAEl2E,EAAE0za,KAAKrhV,EAAEryF,EAAEyza,UAAU,IAAItrZ,EAAE+tD,KAAKA,EAAE,CAAC,OAAO14B,IAAIA,EAAEA,EAAE3tB,KAAK,CAAC4jZ,UAAUphV,EAAEqhV,KAAK,EAAErta,IAAIrG,EAAEqG,IAAI3P,QAAQsJ,EAAEtJ,QAAQmhE,SAAS73D,EAAE63D,SACvfhoC,KAAK,OAAO9wB,EAAE,CAAC,IAAI0D,EAAE1D,EAAEH,EAAEoB,EAAU,OAARk2E,EAAE9tD,EAAEiqE,EAAEtjF,EAASnQ,EAAEyH,KAAK,KAAK,EAAc,GAAG,oBAAf5D,EAAE7D,EAAElI,SAAiC,CAAC8L,EAAEC,EAAEgmB,KAAK4pE,EAAE7vF,EAAE0zE,GAAG,MAAMn3E,CAAC,CAACyD,EAAEC,EAAE,MAAM1D,EAAE,KAAK,EAAE0D,EAAE07G,OAAe,MAAT17G,EAAE07G,MAAa,IAAI,KAAK,EAAsD,GAAG,QAA3CjoC,EAAE,oBAAdzzE,EAAE7D,EAAElI,SAAgC+L,EAAEgmB,KAAK4pE,EAAE7vF,EAAE0zE,GAAGzzE,SAAe,IAASyzE,EAAE,MAAMn3E,EAAEyD,EAAEuyI,EAAE,CAAC,EAAEvyI,EAAE0zE,GAAG,MAAMn3E,EAAE,KAAK,EAAEk0a,IAAG,EAAG,CAAC,OAAOjza,EAAE63D,UAAU,IAAI73D,EAAE0za,OAAO30a,EAAEo/G,OAAO,GAAe,QAAZjoC,EAAEx6E,EAAE63a,SAAiB73a,EAAE63a,QAAQ,CAACvza,GAAGk2E,EAAElzD,KAAKhjB,GAAG,MAAMqyF,EAAE,CAACohV,UAAUphV,EAAEqhV,KAAKx9V,EAAE7vE,IAAIrG,EAAEqG,IAAI3P,QAAQsJ,EAAEtJ,QAAQmhE,SAAS73D,EAAE63D,SAAShoC,KAAK,MAAM,OAAO2tB,GAAG5E,EAAE4E,EAAE60C,EAAEpgE,EAAEzvB,GAAGg7C,EAAEA,EAAE3tB,KAAKwiE,EAAEhE,GAAGnY,EAC3e,GAAG,QAAZl2E,EAAEA,EAAE6vB,MAAiB,IAAsB,QAAnB7vB,EAAEtE,EAAEgoM,OAAOh3H,SAAiB,MAAe1sE,GAAJk2E,EAAEl2E,GAAM6vB,KAAKqmD,EAAErmD,KAAK,KAAKn0B,EAAE43a,eAAep9V,EAAEx6E,EAAEgoM,OAAOh3H,QAAQ,IAAI,EAAsG,GAA5F,OAAOlvB,IAAIvrB,EAAEzvB,GAAG9G,EAAE03a,UAAUnhZ,EAAEv2B,EAAE23a,gBAAgBz6X,EAAEl9C,EAAE43a,eAAe91X,EAA4B,QAA1Bp1B,EAAE1sB,EAAEgoM,OAAOqvO,aAAwB,CAACr3a,EAAE0sB,EAAE,GAAGimE,GAAG3yF,EAAEg4a,KAAKh4a,EAAEA,EAAEm0B,WAAWn0B,IAAI0sB,EAAE,MAAM,OAAO2J,IAAIr2B,EAAEgoM,OAAO8uO,MAAM,GAAGuB,IAAI1lV,EAAEtvF,EAAEyza,MAAMnkV,EAAEtvF,EAAEq2Z,cAAc5yZ,CAAC,CAAC,CAC9V,SAASwxa,GAAGj1a,EAAEqpB,EAAErZ,GAA8B,GAA3BhQ,EAAEqpB,EAAEmrZ,QAAQnrZ,EAAEmrZ,QAAQ,KAAQ,OAAOx0a,EAAE,IAAIqpB,EAAE,EAAEA,EAAErpB,EAAE8E,OAAOukB,IAAI,CAAC,IAAID,EAAEppB,EAAEqpB,GAAG1sB,EAAEysB,EAAE0vC,SAAS,GAAG,OAAOn8D,EAAE,CAAqB,GAApBysB,EAAE0vC,SAAS,KAAK1vC,EAAEpZ,EAAK,oBAAoBrT,EAAE,MAAM2yB,MAAM9F,EAAE,IAAI7sB,IAAIA,EAAE+sB,KAAKN,EAAE,CAAC,CAAC,CAAC,IAAI8rZ,IAAI,IAAIhlB,EAAGj1K,WAAWk6L,KAAK,SAASC,GAAGp1a,EAAEqpB,EAAErZ,EAAEoZ,GAA8BpZ,EAAE,QAAXA,EAAEA,EAAEoZ,EAAtBC,EAAErpB,EAAEq2Z,sBAAmC,IAASrmZ,EAAEqZ,EAAE2sH,EAAE,CAAC,EAAE3sH,EAAErZ,GAAGhQ,EAAEq2Z,cAAcrmZ,EAAE,IAAIhQ,EAAEyza,QAAQzza,EAAEo0a,YAAYC,UAAUrka,EAAE,CAClX,IAAIqla,GAAG,CAACjgB,UAAU,SAASp1Z,GAAG,SAAOA,EAAEA,EAAEs1Z,kBAAiB8H,GAAGp9Z,KAAKA,CAAI,EAAEq1Z,gBAAgB,SAASr1Z,EAAEqpB,EAAErZ,GAAGhQ,EAAEA,EAAEs1Z,gBAAgB,IAAIlsY,EAAE+iN,KAAIxvO,EAAE24a,GAAGt1a,GAAGgzB,EAAEk2F,GAAG9/F,EAAEzsB,GAAGq2B,EAAEr7B,QAAQ0xB,OAAE,IAASrZ,GAAG,OAAOA,IAAIgjB,EAAE8lC,SAAS9oD,GAAe,QAAZqZ,EAAEurZ,GAAG50a,EAAEgzB,EAAEr2B,MAAc44a,GAAGlsZ,EAAErpB,EAAErD,EAAEysB,GAAGyrZ,GAAGxrZ,EAAErpB,EAAErD,GAAG,EAAE44Z,oBAAoB,SAASv1Z,EAAEqpB,EAAErZ,GAAGhQ,EAAEA,EAAEs1Z,gBAAgB,IAAIlsY,EAAE+iN,KAAIxvO,EAAE24a,GAAGt1a,GAAGgzB,EAAEk2F,GAAG9/F,EAAEzsB,GAAGq2B,EAAE1rB,IAAI,EAAE0rB,EAAEr7B,QAAQ0xB,OAAE,IAASrZ,GAAG,OAAOA,IAAIgjB,EAAE8lC,SAAS9oD,GAAe,QAAZqZ,EAAEurZ,GAAG50a,EAAEgzB,EAAEr2B,MAAc44a,GAAGlsZ,EAAErpB,EAAErD,EAAEysB,GAAGyrZ,GAAGxrZ,EAAErpB,EAAErD,GAAG,EAAE64Z,mBAAmB,SAASx1Z,EAAEqpB,GAAGrpB,EAAEA,EAAEs1Z,gBAAgB,IAAItlZ,EAAEm8N,KAAI/iN,EACnfksZ,GAAGt1a,GAAGrD,EAAEusH,GAAGl5G,EAAEoZ,GAAGzsB,EAAE2K,IAAI,OAAE,IAAS+hB,GAAG,OAAOA,IAAI1sB,EAAEm8D,SAASzvC,GAAe,QAAZA,EAAEurZ,GAAG50a,EAAErD,EAAEysB,MAAcmsZ,GAAGlsZ,EAAErpB,EAAEopB,EAAEpZ,GAAG6ka,GAAGxrZ,EAAErpB,EAAEopB,GAAG,GAAG,SAASosZ,GAAGx1a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAEq2B,EAAEs8D,GAAiB,MAAM,oBAApBtvF,EAAEA,EAAEija,WAAsCr2J,sBAAsB5sQ,EAAE4sQ,sBAAsBxjP,EAAE4J,EAAEs8D,IAAGjmE,EAAElG,YAAWkG,EAAElG,UAAUsyZ,wBAAsBnK,GAAGt7Z,EAAEoZ,KAAKkiZ,GAAG3ua,EAAEq2B,GAAK,CAC1S,SAAS0iZ,GAAG11a,EAAEqpB,EAAErZ,GAAG,IAAIoZ,GAAE,EAAGzsB,EAAEkza,GAAO78Y,EAAE3J,EAAEqtN,YAA2W,MAA/V,kBAAkB1jN,GAAG,OAAOA,EAAEA,EAAE2gZ,GAAG3gZ,IAAIr2B,EAAEwza,GAAG9mZ,GAAG0mZ,GAAGt4M,GAAEngO,QAAyB07B,GAAG5J,EAAE,QAAtBA,EAAEC,EAAE4iY,oBAA4B,IAAS7iY,GAAG4mZ,GAAGhwa,EAAErD,GAAGkza,IAAIxmZ,EAAE,IAAIA,EAAErZ,EAAEgjB,GAAGhzB,EAAEq2Z,cAAc,OAAOhtY,EAAErzB,YAAO,IAASqzB,EAAErzB,MAAMqzB,EAAErzB,MAAM,KAAKqzB,EAAE8kK,QAAQknP,GAAGr1a,EAAEija,UAAU55Y,EAAEA,EAAEisY,gBAAgBt1Z,EAAEopB,KAAIppB,EAAEA,EAAEija,WAAYgN,4CAA4Ctza,EAAEqD,EAAEkwa,0CAA0Cl9Y,GAAU3J,CAAC,CAC5Z,SAASssZ,GAAG31a,EAAEqpB,EAAErZ,EAAEoZ,GAAGppB,EAAEqpB,EAAErzB,MAAM,oBAAoBqzB,EAAEusZ,2BAA2BvsZ,EAAEusZ,0BAA0B5la,EAAEoZ,GAAG,oBAAoBC,EAAEwsZ,kCAAkCxsZ,EAAEwsZ,iCAAiC7la,EAAEoZ,GAAGC,EAAErzB,QAAQgK,GAAGq1a,GAAG9f,oBAAoBlsY,EAAEA,EAAErzB,MAAM,KAAK,CACpQ,SAAS8/a,GAAG91a,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAIzsB,EAAEqD,EAAEija,UAAUtma,EAAEwE,MAAM6O,EAAErT,EAAE3G,MAAMgK,EAAEq2Z,cAAc15Z,EAAEw4a,KAAKD,GAAGf,GAAGn0a,GAAG,IAAIgzB,EAAE3J,EAAEqtN,YAAY,kBAAkB1jN,GAAG,OAAOA,EAAEr2B,EAAE69C,QAAQm5X,GAAG3gZ,IAAIA,EAAEm9Y,GAAG9mZ,GAAG0mZ,GAAGt4M,GAAEngO,QAAQqF,EAAE69C,QAAQw1X,GAAGhwa,EAAEgzB,IAAIr2B,EAAE3G,MAAMgK,EAAEq2Z,cAA2C,oBAA7BrjY,EAAE3J,EAAEkrN,4BAAiD6gM,GAAGp1a,EAAEqpB,EAAE2J,EAAEhjB,GAAGrT,EAAE3G,MAAMgK,EAAEq2Z,eAAe,oBAAoBhtY,EAAEkrN,0BAA0B,oBAAoB53O,EAAE+pU,yBAAyB,oBAAoB/pU,EAAE+4Z,2BAA2B,oBAAoB/4Z,EAAEg5Z,qBAAqBtsY,EAAE1sB,EAAE3G,MACrf,oBAAoB2G,EAAEg5Z,oBAAoBh5Z,EAAEg5Z,qBAAqB,oBAAoBh5Z,EAAE+4Z,2BAA2B/4Z,EAAE+4Z,4BAA4BrsY,IAAI1sB,EAAE3G,OAAOq/a,GAAG9f,oBAAoB54Z,EAAEA,EAAE3G,MAAM,MAAM++a,GAAG/0a,EAAEgQ,EAAErT,EAAEysB,GAAGzsB,EAAE3G,MAAMgK,EAAEq2Z,eAAe,oBAAoB15Z,EAAEoxB,oBAAoB/tB,EAAEo/G,OAAO,QAAQ,CACpS,SAAS22T,GAAG/1a,EAAEqpB,EAAErZ,GAAW,GAAG,QAAXhQ,EAAEgQ,EAAEhZ,MAAiB,oBAAoBgJ,GAAG,kBAAkBA,EAAE,CAAC,GAAGgQ,EAAEgma,OAAO,CAAY,GAAXhma,EAAEA,EAAEgma,OAAY,CAAC,GAAG,IAAIhma,EAAE1I,IAAI,MAAMgoB,MAAM9F,EAAE,MAAM,IAAIJ,EAAEpZ,EAAEizZ,SAAS,CAAC,IAAI75Y,EAAE,MAAMkG,MAAM9F,EAAE,IAAIxpB,IAAI,IAAIrD,EAAEysB,EAAE4J,EAAE,GAAGhzB,EAAE,OAAG,OAAOqpB,GAAG,OAAOA,EAAEryB,KAAK,oBAAoBqyB,EAAEryB,KAAKqyB,EAAEryB,IAAIi/a,aAAajjZ,EAAS3J,EAAEryB,KAAIqyB,EAAE,SAASrpB,GAAG,IAAIqpB,EAAE1sB,EAAEw4a,KAAK9rZ,IAAI6rZ,KAAK7rZ,EAAE1sB,EAAEw4a,KAAK,CAAC,GAAG,OAAOn1a,SAASqpB,EAAE2J,GAAG3J,EAAE2J,GAAGhzB,CAAC,EAAEqpB,EAAE4sZ,WAAWjjZ,EAAS3J,EAAC,CAAC,GAAG,kBAAkBrpB,EAAE,MAAMsvB,MAAM9F,EAAE,MAAM,IAAIxZ,EAAEgma,OAAO,MAAM1mZ,MAAM9F,EAAE,IAAIxpB,GAAI,CAAC,OAAOA,CAAC,CACre,SAASy4L,GAAGz4L,EAAEqpB,GAAuC,MAApCrpB,EAAE4F,OAAOud,UAAUg1B,SAASzuB,KAAKL,GAASiG,MAAM9F,EAAE,GAAG,oBAAoBxpB,EAAE,qBAAqB4F,OAAOC,KAAKwjB,GAAGw3B,KAAK,MAAM,IAAI7gD,GAAI,CAAC,SAASk2a,GAAGl2a,GAAiB,OAAOqpB,EAAfrpB,EAAE40Z,OAAe50Z,EAAE20Z,SAAS,CACrM,SAASwhB,GAAGn2a,GAAG,SAASqpB,EAAEA,EAAErZ,GAAG,GAAGhQ,EAAE,CAAC,IAAIopB,EAAEC,EAAE2oZ,UAAU,OAAO5oZ,GAAGC,EAAE2oZ,UAAU,CAAChia,GAAGqZ,EAAE+1F,OAAO,IAAIh2F,EAAEnF,KAAKjU,EAAE,CAAC,CAAC,SAASA,EAAEA,EAAEoZ,GAAG,IAAIppB,EAAE,OAAO,KAAK,KAAK,OAAOopB,GAAGC,EAAErZ,EAAEoZ,GAAGA,EAAEA,EAAEivK,QAAQ,OAAO,IAAI,CAAC,SAASjvK,EAAEppB,EAAEqpB,GAAG,IAAIrpB,EAAE,IAAImyL,IAAI,OAAO9oK,GAAG,OAAOA,EAAEkF,IAAIvuB,EAAE40B,IAAIvL,EAAEkF,IAAIlF,GAAGrpB,EAAE40B,IAAIvL,EAAExR,MAAMwR,GAAGA,EAAEA,EAAEgvK,QAAQ,OAAOr4L,CAAC,CAAC,SAASrD,EAAEqD,EAAEqpB,GAAsC,OAAnCrpB,EAAEo2a,GAAGp2a,EAAEqpB,IAAKxR,MAAM,EAAE7X,EAAEq4L,QAAQ,KAAYr4L,CAAC,CAAC,SAASgzB,EAAE3J,EAAErZ,EAAEoZ,GAAa,OAAVC,EAAExR,MAAMuR,EAAMppB,EAA6C,QAAjBopB,EAAEC,EAAE65Y,YAA6B95Y,EAAEA,EAAEvR,OAAQ7H,GAAGqZ,EAAE+1F,OAAO,EAAEpvG,GAAGoZ,GAAEC,EAAE+1F,OAAO,EAASpvG,IAArGqZ,EAAE+1F,OAAO,QAAQpvG,EAAqF,CAAC,SAASs/E,EAAEjmE,GACzd,OAD4drpB,GAC7f,OAAOqpB,EAAE65Y,YAAY75Y,EAAE+1F,OAAO,GAAU/1F,CAAC,CAAC,SAASpoB,EAAEjB,EAAEqpB,EAAErZ,EAAEoZ,GAAG,OAAG,OAAOC,GAAG,IAAIA,EAAE/hB,MAAW+hB,EAAEgtZ,GAAGrma,EAAEhQ,EAAEwF,KAAK4jB,IAAK+5Y,OAAOnja,EAAEqpB,KAAEA,EAAE1sB,EAAE0sB,EAAErZ,IAAKmzZ,OAAOnja,EAASqpB,EAAC,CAAC,SAAS6J,EAAElzB,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAI4J,EAAEhjB,EAAEvT,KAAK,OAAGu2B,IAAIkgY,EAAUz0W,EAAEz+C,EAAEqpB,EAAErZ,EAAE7O,MAAMzK,SAAS0yB,EAAEpZ,EAAEue,KAAQ,OAAOlF,IAAIA,EAAEsmY,cAAc38X,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEyhO,WAAWi/J,GAAIwiB,GAAGljZ,KAAK3J,EAAE5sB,QAAa2sB,EAAEzsB,EAAE0sB,EAAErZ,EAAE7O,QAASnK,IAAI++a,GAAG/1a,EAAEqpB,EAAErZ,GAAGoZ,EAAE+5Y,OAAOnja,EAAEopB,KAAEA,EAAEktZ,GAAGtma,EAAEvT,KAAKuT,EAAEue,IAAIve,EAAE7O,MAAM,KAAKnB,EAAEwF,KAAK4jB,IAAKpyB,IAAI++a,GAAG/1a,EAAEqpB,EAAErZ,GAAGoZ,EAAE+5Y,OAAOnja,EAASopB,EAAC,CAAC,SAASywB,EAAE75C,EAAEqpB,EAAErZ,EAAEoZ,GAAG,OAAG,OAAOC,GAAG,IAAIA,EAAE/hB,KACjf+hB,EAAE45Y,UAAU4B,gBAAgB70Z,EAAE60Z,eAAex7Y,EAAE45Y,UAAUtqO,iBAAiB3oL,EAAE2oL,iBAAsBtvK,EAAEktZ,GAAGvma,EAAEhQ,EAAEwF,KAAK4jB,IAAK+5Y,OAAOnja,EAAEqpB,KAAEA,EAAE1sB,EAAE0sB,EAAErZ,EAAEtZ,UAAU,KAAMysa,OAAOnja,EAASqpB,EAAC,CAAC,SAASo1B,EAAEz+C,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,GAAG,OAAG,OAAO3J,GAAG,IAAIA,EAAE/hB,MAAW+hB,EAAEmtZ,GAAGxma,EAAEhQ,EAAEwF,KAAK4jB,EAAE4J,IAAKmwY,OAAOnja,EAAEqpB,KAAEA,EAAE1sB,EAAE0sB,EAAErZ,IAAKmzZ,OAAOnja,EAASqpB,EAAC,CAAC,SAAS5lB,EAAEzD,EAAEqpB,EAAErZ,GAAG,GAAG,kBAAkBqZ,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAOA,EAAEgtZ,GAAG,GAAGhtZ,EAAErpB,EAAEwF,KAAKwK,IAAKmzZ,OAAOnja,EAAEqpB,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEorO,UAAU,KAAKs+J,EAAG,OAAO/iZ,EAAEsma,GAAGjtZ,EAAE5sB,KAAK4sB,EAAEkF,IAAIlF,EAAEloB,MAAM,KAAKnB,EAAEwF,KAAKwK,IACjfhZ,IAAI++a,GAAG/1a,EAAE,KAAKqpB,GAAGrZ,EAAEmzZ,OAAOnja,EAAEgQ,EAAE,KAAKgjZ,EAAG,OAAO3pY,EAAEktZ,GAAGltZ,EAAErpB,EAAEwF,KAAKwK,IAAKmzZ,OAAOnja,EAAEqpB,EAAE,KAAKqqY,EAAiB,OAAOjwZ,EAAEzD,GAAEopB,EAAnBC,EAAEurY,OAAmBvrY,EAAEsrY,UAAU3kZ,GAAG,GAAGylZ,GAAGpsY,IAAIwqY,EAAGxqY,GAAG,OAAOA,EAAEmtZ,GAAGntZ,EAAErpB,EAAEwF,KAAKwK,EAAE,OAAQmzZ,OAAOnja,EAAEqpB,EAAEovK,GAAGz4L,EAAEqpB,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS8tD,EAAEn3E,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAIzsB,EAAE,OAAO0sB,EAAEA,EAAEkF,IAAI,KAAK,GAAG,kBAAkBve,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAO,OAAOrT,EAAE,KAAKsE,EAAEjB,EAAEqpB,EAAE,GAAGrZ,EAAEoZ,GAAG,GAAG,kBAAkBpZ,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEykP,UAAU,KAAKs+J,EAAG,OAAO/iZ,EAAEue,MAAM5xB,EAAEu2B,EAAElzB,EAAEqpB,EAAErZ,EAAEoZ,GAAG,KAAK,KAAK4pY,EAAG,OAAOhjZ,EAAEue,MAAM5xB,EAAEk9C,EAAE75C,EAAEqpB,EAAErZ,EAAEoZ,GAAG,KAAK,KAAKsqY,EAAG,OAAiBv8U,EAAEn3E,EACpfqpB,GADwe1sB,EAAEqT,EAAE4kZ,OACxe5kZ,EAAE2kZ,UAAUvrY,GAAG,GAAGqsY,GAAGzlZ,IAAI6jZ,EAAG7jZ,GAAG,OAAO,OAAOrT,EAAE,KAAK8hD,EAAEz+C,EAAEqpB,EAAErZ,EAAEoZ,EAAE,MAAMqvK,GAAGz4L,EAAEgQ,EAAE,CAAC,OAAO,IAAI,CAAC,SAASsjF,EAAEtzF,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAG,GAAG,kBAAkBysB,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAwBnoB,EAAEooB,EAAnBrpB,EAAEA,EAAE0tB,IAAI1d,IAAI,KAAW,GAAGoZ,EAAEzsB,GAAG,GAAG,kBAAkBysB,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEqrO,UAAU,KAAKs+J,EAAG,OAA2C7/X,EAAE7J,EAAtCrpB,EAAEA,EAAE0tB,IAAI,OAAOtE,EAAEmF,IAAIve,EAAEoZ,EAAEmF,MAAM,KAAWnF,EAAEzsB,GAAG,KAAKq2Z,EAAG,OAA2Cn5W,EAAExwB,EAAtCrpB,EAAEA,EAAE0tB,IAAI,OAAOtE,EAAEmF,IAAIve,EAAEoZ,EAAEmF,MAAM,KAAWnF,EAAEzsB,GAAG,KAAK+2Z,EAAiB,OAAOpgU,EAAEtzF,EAAEqpB,EAAErZ,GAAEgjB,EAAvB5J,EAAEwrY,OAAuBxrY,EAAEurY,UAAUh4Z,GAAG,GAAG84Z,GAAGrsY,IAAIyqY,EAAGzqY,GAAG,OAAwBq1B,EAAEp1B,EAAnBrpB,EAAEA,EAAE0tB,IAAI1d,IAAI,KAAWoZ,EAAEzsB,EAAE,MAAM87L,GAAGpvK,EAAED,EAAE,CAAC,OAAO,IAAI,CAC9f,SAAS1lB,EAAE/G,EAAE2yF,EAAEruF,EAAEiyB,GAAG,IAAI,IAAI2mB,EAAE,KAAK4E,EAAE,KAAKy3K,EAAE5mI,EAAE9mC,EAAE8mC,EAAE,EAAEliB,EAAE,KAAK,OAAO8oJ,GAAG1tK,EAAEvnD,EAAE6D,OAAO0jD,IAAI,CAAC0tK,EAAEr+M,MAAM2wC,GAAG4kB,EAAE8oJ,EAAEA,EAAE,MAAM9oJ,EAAE8oJ,EAAE79B,QAAQ,IAAI30L,EAAEyzE,EAAEx6E,EAAEu5N,EAAEj1N,EAAEunD,GAAGt1B,GAAG,GAAG,OAAOxvB,EAAE,CAAC,OAAOwyN,IAAIA,EAAE9oJ,GAAG,KAAK,CAACptE,GAAGk2N,GAAG,OAAOxyN,EAAEw/Z,WAAW75Y,EAAE1sB,EAAEu5N,GAAG5mI,EAAEt8D,EAAEtvB,EAAE4rF,EAAE9mC,GAAG,OAAO/J,EAAE5E,EAAEn2C,EAAE+6C,EAAE45I,QAAQ30L,EAAE+6C,EAAE/6C,EAAEwyN,EAAE9oJ,CAAC,CAAC,GAAG5kB,IAAIvnD,EAAE6D,OAAO,OAAOkL,EAAErT,EAAEu5N,GAAG5iF,IAAGi+R,GAAG50a,EAAE6rD,GAAG3O,EAAE,GAAG,OAAOq8K,EAAE,CAAC,KAAK1tK,EAAEvnD,EAAE6D,OAAO0jD,IAAkB,QAAd0tK,EAAEzyN,EAAE9G,EAAEsE,EAAEunD,GAAGt1B,MAAco8D,EAAEt8D,EAAEkjM,EAAE5mI,EAAE9mC,GAAG,OAAO/J,EAAE5E,EAAEq8K,EAAEz3K,EAAE45I,QAAQ69B,EAAEz3K,EAAEy3K,GAAc,OAAX5iF,IAAGi+R,GAAG50a,EAAE6rD,GAAU3O,CAAC,CAAC,IAAIq8K,EAAE9sM,EAAEzsB,EAAEu5N,GAAG1tK,EAAEvnD,EAAE6D,OAAO0jD,IAAsB,QAAlB4kB,EAAEkmB,EAAE4iI,EAAEv5N,EAAE6rD,EAAEvnD,EAAEunD,GAAGt1B,MAAclzB,GAAG,OAAOotE,EAAE81V,WAAWhtM,EAAEx+K,OAAO,OACvf01B,EAAE7+C,IAAIi6B,EAAE4kB,EAAE7+C,KAAK+gE,EAAEt8D,EAAEo6C,EAAEkiB,EAAE9mC,GAAG,OAAO/J,EAAE5E,EAAEuzB,EAAE3uB,EAAE45I,QAAQjrH,EAAE3uB,EAAE2uB,GAAuD,OAApDptE,GAAGk2N,EAAEtkN,SAAQ,SAAS5R,GAAG,OAAOqpB,EAAE1sB,EAAEqD,EAAE,IAAGszI,IAAGi+R,GAAG50a,EAAE6rD,GAAU3O,CAAC,CAAC,SAASh6C,EAAElD,EAAE2yF,EAAEruF,EAAEiyB,GAAG,IAAI2mB,EAAEg6W,EAAG5yZ,GAAG,GAAG,oBAAoB44C,EAAE,MAAMvqB,MAAM9F,EAAE,MAAkB,GAAG,OAAfvoB,EAAE44C,EAAEnwB,KAAKzoB,IAAc,MAAMquB,MAAM9F,EAAE,MAAM,IAAI,IAAI0sM,EAAEr8K,EAAE,KAAK4E,EAAE6wC,EAAE9mC,EAAE8mC,EAAE,EAAEliB,EAAE,KAAK1pE,EAAEzC,EAAE6vB,OAAO,OAAO2tB,IAAI/6C,EAAEk6C,KAAK4K,IAAI9kD,EAAEzC,EAAE6vB,OAAO,CAAC2tB,EAAE5mC,MAAM2wC,GAAG4kB,EAAE3uB,EAAEA,EAAE,MAAM2uB,EAAE3uB,EAAE45I,QAAQ,IAAIx4L,EAAEs3E,EAAEx6E,EAAE8hD,EAAE/6C,EAAEgF,MAAMwqB,GAAG,GAAG,OAAOrzB,EAAE,CAAC,OAAO4+C,IAAIA,EAAE2uB,GAAG,KAAK,CAACptE,GAAGy+C,GAAG,OAAO5+C,EAAEqja,WAAW75Y,EAAE1sB,EAAE8hD,GAAG6wC,EAAEt8D,EAAEnzB,EAAEyvF,EAAE9mC,GAAG,OAAO0tK,EAAEr8K,EAAEh6C,EAAEq2N,EAAE79B,QAAQx4L,EAAEq2N,EAAEr2N,EAAE4+C,EAAE2uB,CAAC,CAAC,GAAG1pE,EAAEk6C,KAAK,OAAO5tC,EAAErT,EACzf8hD,GAAG60F,IAAGi+R,GAAG50a,EAAE6rD,GAAG3O,EAAE,GAAG,OAAO4E,EAAE,CAAC,MAAM/6C,EAAEk6C,KAAK4K,IAAI9kD,EAAEzC,EAAE6vB,OAAwB,QAAjBptB,EAAED,EAAE9G,EAAE+G,EAAEgF,MAAMwqB,MAAco8D,EAAEt8D,EAAEtvB,EAAE4rF,EAAE9mC,GAAG,OAAO0tK,EAAEr8K,EAAEn2C,EAAEwyN,EAAE79B,QAAQ30L,EAAEwyN,EAAExyN,GAAc,OAAX4vI,IAAGi+R,GAAG50a,EAAE6rD,GAAU3O,CAAC,CAAC,IAAI4E,EAAEr1B,EAAEzsB,EAAE8hD,IAAI/6C,EAAEk6C,KAAK4K,IAAI9kD,EAAEzC,EAAE6vB,OAA4B,QAArBptB,EAAE4vF,EAAE70C,EAAE9hD,EAAE6rD,EAAE9kD,EAAEgF,MAAMwqB,MAAclzB,GAAG,OAAO0D,EAAEw/Z,WAAWzkX,EAAE/G,OAAO,OAAOh0C,EAAE6qB,IAAIi6B,EAAE9kD,EAAE6qB,KAAK+gE,EAAEt8D,EAAEtvB,EAAE4rF,EAAE9mC,GAAG,OAAO0tK,EAAEr8K,EAAEn2C,EAAEwyN,EAAE79B,QAAQ30L,EAAEwyN,EAAExyN,GAAuD,OAApD1D,GAAGy+C,EAAE7sC,SAAQ,SAAS5R,GAAG,OAAOqpB,EAAE1sB,EAAEqD,EAAE,IAAGszI,IAAGi+R,GAAG50a,EAAE6rD,GAAU3O,CAAC,CAG3T,OAH4T,SAASs8W,EAAEn2Z,EAAEopB,EAAE4J,EAAE/xB,GAAkF,GAA/E,kBAAkB+xB,GAAG,OAAOA,GAAGA,EAAEv2B,OAAOy2Z,GAAI,OAAOlgY,EAAEzE,MAAMyE,EAAEA,EAAE7xB,MAAMzK,UAAa,kBAAkBs8B,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEyhO,UAAU,KAAKs+J,EAAG/yZ,EAAE,CAAC,IAAI,IAAIkzB,EAC7hBF,EAAEzE,IAAIsrB,EAAEzwB,EAAE,OAAOywB,GAAG,CAAC,GAAGA,EAAEtrB,MAAM2E,EAAE,CAAU,IAATA,EAAEF,EAAEv2B,QAAYy2Z,GAAI,GAAG,IAAIr5W,EAAEvyC,IAAI,CAAC0I,EAAEhQ,EAAE65C,EAAEw+I,UAASjvK,EAAEzsB,EAAEk9C,EAAE7mB,EAAE7xB,MAAMzK,WAAYysa,OAAOnja,EAAEA,EAAEopB,EAAE,MAAMppB,CAAC,OAAO,GAAG65C,EAAE81W,cAAcz8X,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEuhO,WAAWi/J,GAAIwiB,GAAGhjZ,KAAK2mB,EAAEp9C,KAAK,CAACuT,EAAEhQ,EAAE65C,EAAEw+I,UAASjvK,EAAEzsB,EAAEk9C,EAAE7mB,EAAE7xB,QAASnK,IAAI++a,GAAG/1a,EAAE65C,EAAE7mB,GAAG5J,EAAE+5Y,OAAOnja,EAAEA,EAAEopB,EAAE,MAAMppB,CAAC,CAACgQ,EAAEhQ,EAAE65C,GAAG,KAAK,CAAMxwB,EAAErpB,EAAE65C,GAAGA,EAAEA,EAAEw+I,OAAO,CAACrlK,EAAEv2B,OAAOy2Z,IAAI9pY,EAAEotZ,GAAGxjZ,EAAE7xB,MAAMzK,SAASsJ,EAAEwF,KAAKvE,EAAE+xB,EAAEzE,MAAO40Y,OAAOnja,EAAEA,EAAEopB,KAAInoB,EAAEq1a,GAAGtjZ,EAAEv2B,KAAKu2B,EAAEzE,IAAIyE,EAAE7xB,MAAM,KAAKnB,EAAEwF,KAAKvE,IAAKjK,IAAI++a,GAAG/1a,EAAEopB,EAAE4J,GAAG/xB,EAAEkia,OAAOnja,EAAEA,EAAEiB,EAAE,CAAC,OAAOquF,EAAEtvF,GAAG,KAAKgzZ,EAAGhzZ,EAAE,CAAC,IAAI65C,EAAE7mB,EAAEzE,IAAI,OACzfnF,GAAG,CAAC,GAAGA,EAAEmF,MAAMsrB,EAAC,CAAC,GAAG,IAAIzwB,EAAE9hB,KAAK8hB,EAAE65Y,UAAU4B,gBAAgB7xY,EAAE6xY,eAAez7Y,EAAE65Y,UAAUtqO,iBAAiB3lK,EAAE2lK,eAAe,CAAC3oL,EAAEhQ,EAAEopB,EAAEivK,UAASjvK,EAAEzsB,EAAEysB,EAAE4J,EAAEt8B,UAAU,KAAMysa,OAAOnja,EAAEA,EAAEopB,EAAE,MAAMppB,CAAC,CAAMgQ,EAAEhQ,EAAEopB,GAAG,KAAM,CAAKC,EAAErpB,EAAEopB,GAAGA,EAAEA,EAAEivK,OAAO,EAACjvK,EAAEmtZ,GAAGvjZ,EAAEhzB,EAAEwF,KAAKvE,IAAKkia,OAAOnja,EAAEA,EAAEopB,CAAC,CAAC,OAAOkmE,EAAEtvF,GAAG,KAAK0zZ,EAAG,OAAiByC,EAAEn2Z,EAAEopB,GAAdywB,EAAE7mB,EAAE4hY,OAAc5hY,EAAE2hY,UAAU1zZ,GAAG,GAAGw0Z,GAAGziY,GAAG,OAAOtvB,EAAE1D,EAAEopB,EAAE4J,EAAE/xB,GAAG,GAAG4yZ,EAAG7gY,GAAG,OAAOnzB,EAAEG,EAAEopB,EAAE4J,EAAE/xB,GAAGw3L,GAAGz4L,EAAEgzB,EAAE,CAAC,MAAM,kBAAkBA,GAAG,KAAKA,GAAG,kBAAkBA,GAAGA,EAAE,GAAGA,EAAE,OAAO5J,GAAG,IAAIA,EAAE9hB,KAAK0I,EAAEhQ,EAAEopB,EAAEivK,UAASjvK,EAAEzsB,EAAEysB,EAAE4J,IAAKmwY,OAAOnja,EAAEA,EAAEopB,IACnfpZ,EAAEhQ,EAAEopB,IAAGA,EAAEitZ,GAAGrjZ,EAAEhzB,EAAEwF,KAAKvE,IAAKkia,OAAOnja,EAAEA,EAAEopB,GAAGkmE,EAAEtvF,IAAIgQ,EAAEhQ,EAAEopB,EAAE,CAAS,CAAC,IAAIqtM,GAAG0/M,IAAG,GAAIM,GAAGN,IAAG,GAAIO,GAAG,CAAC,EAAEC,GAAG/G,GAAG8G,IAAIE,GAAGhH,GAAG8G,IAAIG,GAAGjH,GAAG8G,IAAI,SAASI,GAAG92a,GAAG,GAAGA,IAAI02a,GAAG,MAAMpnZ,MAAM9F,EAAE,MAAM,OAAOxpB,CAAC,CAAC,SAAS+2a,GAAG/2a,EAAEqpB,GAAyC,OAAtC6pH,GAAE2jS,GAAGxtZ,GAAG6pH,GAAE0jS,GAAG52a,GAAGkzI,GAAEyjS,GAAGD,IAAI12a,EAAEqpB,EAAEo1E,UAAmB,KAAK,EAAE,KAAK,GAAGp1E,GAAGA,EAAEA,EAAEotF,iBAAiBptF,EAAEuvI,aAAaq9P,GAAG,KAAK,IAAI,MAAM,QAAkE5sY,EAAE4sY,GAArC5sY,GAAvBrpB,EAAE,IAAIA,EAAEqpB,EAAEy4E,WAAWz4E,GAAMuvI,cAAc,KAAK54J,EAAEA,EAAEsiG,SAAkBs0H,GAAE+/M,IAAIzjS,GAAEyjS,GAAGttZ,EAAE,CAAC,SAAS2tZ,KAAKpgN,GAAE+/M,IAAI//M,GAAEggN,IAAIhgN,GAAEigN,GAAG,CACnb,SAASI,GAAGj3a,GAAG82a,GAAGD,GAAGv/a,SAAS,IAAI+xB,EAAEytZ,GAAGH,GAAGr/a,SAAa0Y,EAAEimZ,GAAG5sY,EAAErpB,EAAEvD,MAAM4sB,IAAIrZ,IAAIkjI,GAAE0jS,GAAG52a,GAAGkzI,GAAEyjS,GAAG3ma,GAAG,CAAC,SAASkna,GAAGl3a,GAAG42a,GAAGt/a,UAAU0I,IAAI42N,GAAE+/M,IAAI//M,GAAEggN,IAAI,CAAC,IAAI7gN,GAAE65M,GAAG,GACrJ,SAASuH,GAAGn3a,GAAG,IAAI,IAAIqpB,EAAErpB,EAAE,OAAOqpB,GAAG,CAAC,GAAG,KAAKA,EAAE/hB,IAAI,CAAC,IAAI0I,EAAEqZ,EAAEgtY,cAAc,GAAG,OAAOrmZ,IAAmB,QAAfA,EAAEA,EAAEozZ,aAAqB,OAAOpzZ,EAAExU,MAAM,OAAOwU,EAAExU,MAAM,OAAO6tB,CAAC,MAAM,GAAG,KAAKA,EAAE/hB,UAAK,IAAS+hB,EAAEmpZ,cAAc4E,aAAa,GAAG,KAAa,IAAR/tZ,EAAE+1F,OAAW,OAAO/1F,OAAO,GAAG,OAAOA,EAAEoxF,MAAM,CAACpxF,EAAEoxF,MAAM0oT,OAAO95Y,EAAEA,EAAEA,EAAEoxF,MAAM,QAAQ,CAAC,GAAGpxF,IAAIrpB,EAAE,MAAM,KAAK,OAAOqpB,EAAEgvK,SAAS,CAAC,GAAG,OAAOhvK,EAAE85Y,QAAQ95Y,EAAE85Y,SAASnja,EAAE,OAAO,KAAKqpB,EAAEA,EAAE85Y,MAAM,CAAC95Y,EAAEgvK,QAAQ8qO,OAAO95Y,EAAE85Y,OAAO95Y,EAAEA,EAAEgvK,OAAO,CAAC,OAAO,IAAI,CAAC,IAAIg/O,GAAG,GACrc,SAASC,KAAK,IAAI,IAAIt3a,EAAE,EAAEA,EAAEq3a,GAAGvya,OAAO9E,IAAIq3a,GAAGr3a,GAAGu3a,8BAA8B,KAAKF,GAAGvya,OAAO,CAAC,CAAC,IAAI0ya,GAAGlmY,EAAGqmX,uBAAuB8f,GAAGnmY,EAAGwzX,wBAAwB4S,GAAG,EAAEjmS,GAAE,KAAK2kR,GAAE,KAAK32D,GAAE,KAAKk4E,IAAG,EAAGC,IAAG,EAAGC,GAAG,EAAEC,GAAG,EAAE,SAASx3R,KAAI,MAAMhxH,MAAM9F,EAAE,KAAM,CAAC,SAASuuZ,GAAG/3a,EAAEqpB,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIrZ,EAAE,EAAEA,EAAEqZ,EAAEvkB,QAAQkL,EAAEhQ,EAAE8E,OAAOkL,IAAI,IAAIq7Z,GAAGrra,EAAEgQ,GAAGqZ,EAAErZ,IAAI,OAAM,EAAG,OAAM,CAAE,CAChW,SAASgoa,GAAGh4a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAEq2B,GAAyH,GAAtH0kZ,GAAG1kZ,EAAEy+G,GAAEpoH,EAAEA,EAAEgtY,cAAc,KAAKhtY,EAAE+qZ,YAAY,KAAK/qZ,EAAEoqZ,MAAM,EAAE+D,GAAGlgb,QAAQ,OAAO0I,GAAG,OAAOA,EAAEq2Z,cAAc4hB,GAAGC,GAAGl4a,EAAEgQ,EAAEoZ,EAAEzsB,GAAMi7a,GAAG,CAAC5kZ,EAAE,EAAE,EAAE,CAAY,GAAX4kZ,IAAG,EAAGC,GAAG,EAAK,IAAI7kZ,EAAE,MAAM1D,MAAM9F,EAAE,MAAMwJ,GAAG,EAAEysU,GAAE22D,GAAE,KAAK/sY,EAAE+qZ,YAAY,KAAKoD,GAAGlgb,QAAQ6gb,GAAGn4a,EAAEgQ,EAAEoZ,EAAEzsB,EAAE,OAAOi7a,GAAG,CAA+D,GAA9DJ,GAAGlgb,QAAQuyJ,GAAGxgI,EAAE,OAAO+sY,IAAG,OAAOA,GAAEtlY,KAAK4mZ,GAAG,EAAEj4E,GAAE22D,GAAE3kR,GAAE,KAAKkmS,IAAG,EAAMtuZ,EAAE,MAAMiG,MAAM9F,EAAE,MAAM,OAAOxpB,CAAC,CAAC,SAAS8pJ,KAAK,IAAI9pJ,EAAE,IAAI63a,GAAQ,OAALA,GAAG,EAAS73a,CAAC,CAC/Y,SAAS2/P,KAAK,IAAI3/P,EAAE,CAACq2Z,cAAc,KAAKge,UAAU,KAAK+D,UAAU,KAAKj1O,MAAM,KAAKryK,KAAK,MAA8C,OAAxC,OAAO2uU,GAAEhuN,GAAE4kR,cAAc52D,GAAEz/V,EAAEy/V,GAAEA,GAAE3uU,KAAK9wB,EAASy/V,EAAC,CAAC,SAAS44E,KAAK,GAAG,OAAOjiB,GAAE,CAAC,IAAIp2Z,EAAEyxI,GAAEyxR,UAAUlja,EAAE,OAAOA,EAAEA,EAAEq2Z,cAAc,IAAI,MAAMr2Z,EAAEo2Z,GAAEtlY,KAAK,IAAIzH,EAAE,OAAOo2U,GAAEhuN,GAAE4kR,cAAc52D,GAAE3uU,KAAK,GAAG,OAAOzH,EAAEo2U,GAAEp2U,EAAE+sY,GAAEp2Z,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMsvB,MAAM9F,EAAE,MAAUxpB,EAAE,CAACq2Z,eAAPD,GAAEp2Z,GAAqBq2Z,cAAcge,UAAUje,GAAEie,UAAU+D,UAAUhiB,GAAEgiB,UAAUj1O,MAAMizN,GAAEjzN,MAAMryK,KAAK,MAAM,OAAO2uU,GAAEhuN,GAAE4kR,cAAc52D,GAAEz/V,EAAEy/V,GAAEA,GAAE3uU,KAAK9wB,CAAC,CAAC,OAAOy/V,EAAC,CACje,SAAS64E,GAAGt4a,EAAEqpB,GAAG,MAAM,oBAAoBA,EAAEA,EAAErpB,GAAGqpB,CAAC,CACnD,SAASkvZ,GAAGv4a,GAAG,IAAIqpB,EAAEgvZ,KAAKroa,EAAEqZ,EAAE85K,MAAM,GAAG,OAAOnzL,EAAE,MAAMsf,MAAM9F,EAAE,MAAMxZ,EAAEwoa,oBAAoBx4a,EAAE,IAAIopB,EAAEgtY,GAAEz5Z,EAAEysB,EAAEgvZ,UAAUplZ,EAAEhjB,EAAE29D,QAAQ,GAAG,OAAO36C,EAAE,CAAC,GAAG,OAAOr2B,EAAE,CAAC,IAAI2yF,EAAE3yF,EAAEm0B,KAAKn0B,EAAEm0B,KAAKkC,EAAElC,KAAKkC,EAAElC,KAAKw+D,CAAC,CAAClmE,EAAEgvZ,UAAUz7a,EAAEq2B,EAAEhjB,EAAE29D,QAAQ,IAAI,CAAC,GAAG,OAAOhxE,EAAE,CAACq2B,EAAEr2B,EAAEm0B,KAAK1H,EAAEA,EAAEirZ,UAAU,IAAIpza,EAAEquF,EAAE,KAAKp8D,EAAE,KAAK2mB,EAAE7mB,EAAE,EAAE,CAAC,IAAIyrB,EAAE5E,EAAE86X,KAAK,IAAI+C,GAAGj5X,KAAKA,EAAE,OAAOvrB,IAAIA,EAAEA,EAAEpC,KAAK,CAAC6jZ,KAAK,EAAEr/Z,OAAOukC,EAAEvkC,OAAOmja,cAAc5+X,EAAE4+X,cAAcC,WAAW7+X,EAAE6+X,WAAW5nZ,KAAK,OAAO1H,EAAEywB,EAAE4+X,cAAc5+X,EAAE6+X,WAAW14a,EAAEopB,EAAEywB,EAAEvkC,YAAY,CAAC,IAAI7R,EAAE,CAACkxa,KAAKl2X,EAAEnpC,OAAOukC,EAAEvkC,OAAOmja,cAAc5+X,EAAE4+X,cACngBC,WAAW7+X,EAAE6+X,WAAW5nZ,KAAK,MAAM,OAAOoC,GAAGjyB,EAAEiyB,EAAEzvB,EAAE6rF,EAAElmE,GAAG8J,EAAEA,EAAEpC,KAAKrtB,EAAEguI,GAAEgiS,OAAOh1X,EAAEu2X,IAAIv2X,CAAC,CAAC5E,EAAEA,EAAE/oB,IAAI,OAAO,OAAO+oB,GAAGA,IAAI7mB,GAAG,OAAOE,EAAEo8D,EAAElmE,EAAE8J,EAAEpC,KAAK7vB,EAAEoqa,GAAGjiZ,EAAEC,EAAEgtY,iBAAiBqd,IAAG,GAAIrqZ,EAAEgtY,cAAcjtY,EAAEC,EAAEgrZ,UAAU/kV,EAAEjmE,EAAE+uZ,UAAUllZ,EAAEljB,EAAE2oa,kBAAkBvvZ,CAAC,CAAiB,GAAG,QAAnBppB,EAAEgQ,EAAEgka,aAAwB,CAACr3a,EAAEqD,EAAE,GAAGgzB,EAAEr2B,EAAEg4a,KAAKljS,GAAEgiS,OAAOzgZ,EAAEgiZ,IAAIhiZ,EAAEr2B,EAAEA,EAAEm0B,WAAWn0B,IAAIqD,EAAE,MAAM,OAAOrD,IAAIqT,EAAEyja,MAAM,GAAG,MAAM,CAACpqZ,EAAEgtY,cAAcrmZ,EAAEixD,SAAS,CAC9X,SAAS23W,GAAG54a,GAAG,IAAIqpB,EAAEgvZ,KAAKroa,EAAEqZ,EAAE85K,MAAM,GAAG,OAAOnzL,EAAE,MAAMsf,MAAM9F,EAAE,MAAMxZ,EAAEwoa,oBAAoBx4a,EAAE,IAAIopB,EAAEpZ,EAAEixD,SAAStkE,EAAEqT,EAAE29D,QAAQ36C,EAAE3J,EAAEgtY,cAAc,GAAG,OAAO15Z,EAAE,CAACqT,EAAE29D,QAAQ,KAAK,IAAI2hB,EAAE3yF,EAAEA,EAAEm0B,KAAK,GAAGkC,EAAEhzB,EAAEgzB,EAAEs8D,EAAEh6E,QAAQg6E,EAAEA,EAAEx+D,WAAWw+D,IAAI3yF,GAAG0ua,GAAGr4Y,EAAE3J,EAAEgtY,iBAAiBqd,IAAG,GAAIrqZ,EAAEgtY,cAAcrjY,EAAE,OAAO3J,EAAE+uZ,YAAY/uZ,EAAEgrZ,UAAUrhZ,GAAGhjB,EAAE2oa,kBAAkB3lZ,CAAC,CAAC,MAAM,CAACA,EAAE5J,EAAE,CAAC,SAASogI,KAAK,CACpW,SAASqvR,GAAG74a,EAAEqpB,GAAG,IAAIrZ,EAAEyhI,GAAEroH,EAAEivZ,KAAK17a,EAAE0sB,IAAI2J,GAAGq4Y,GAAGjiZ,EAAEitY,cAAc15Z,GAAsE,GAAnEq2B,IAAI5J,EAAEitY,cAAc15Z,EAAE+2a,IAAG,GAAItqZ,EAAEA,EAAE+5K,MAAM21O,GAAGC,GAAGjnZ,KAAK,KAAK9hB,EAAEoZ,EAAEppB,GAAG,CAACA,IAAOopB,EAAE4vZ,cAAc3vZ,GAAG2J,GAAG,OAAOysU,IAAuB,EAApBA,GAAE42D,cAAc/uZ,IAAM,CAAuD,GAAtD0I,EAAEovG,OAAO,KAAK12F,GAAG,EAAEymS,GAAGr9R,KAAK,KAAK9hB,EAAEoZ,EAAEzsB,EAAE0sB,QAAG,EAAO,MAAS,OAAOstY,GAAE,MAAMrnY,MAAM9F,EAAE,MAAM,KAAQ,GAAHkuZ,KAAQuB,GAAGjpa,EAAEqZ,EAAE1sB,EAAE,CAAC,OAAOA,CAAC,CAAC,SAASs8a,GAAGj5a,EAAEqpB,EAAErZ,GAAGhQ,EAAEo/G,OAAO,MAAMp/G,EAAE,CAACg5a,YAAY3vZ,EAAE3gB,MAAMsH,GAAmB,QAAhBqZ,EAAEooH,GAAE2iS,cAAsB/qZ,EAAE,CAAC6vZ,WAAW,KAAKC,OAAO,MAAM1nS,GAAE2iS,YAAY/qZ,EAAEA,EAAE8vZ,OAAO,CAACn5a,IAAgB,QAAXgQ,EAAEqZ,EAAE8vZ,QAAgB9vZ,EAAE8vZ,OAAO,CAACn5a,GAAGgQ,EAAEiU,KAAKjkB,EAAG,CAClf,SAASmvT,GAAGnvT,EAAEqpB,EAAErZ,EAAEoZ,GAAGC,EAAE3gB,MAAMsH,EAAEqZ,EAAE2vZ,YAAY5vZ,EAAEgwZ,GAAG/vZ,IAAIgwZ,GAAGr5a,EAAE,CAAC,SAAS+4a,GAAG/4a,EAAEqpB,EAAErZ,GAAG,OAAOA,GAAE,WAAWopa,GAAG/vZ,IAAIgwZ,GAAGr5a,EAAE,GAAE,CAAC,SAASo5a,GAAGp5a,GAAG,IAAIqpB,EAAErpB,EAAEg5a,YAAYh5a,EAAEA,EAAE0I,MAAM,IAAI,IAAIsH,EAAEqZ,IAAI,OAAOgiZ,GAAGrra,EAAEgQ,EAAE,CAAC,MAAMoZ,GAAG,OAAM,CAAE,CAAC,CAAC,SAASiwZ,GAAGr5a,GAAG,IAAIqpB,EAAE4qZ,GAAGj0a,EAAE,GAAG,OAAOqpB,GAAGksZ,GAAGlsZ,EAAErpB,EAAE,GAAG,EAAE,CAClQ,SAASs5a,GAAGt5a,GAAG,IAAIqpB,EAAEs2O,KAA8M,MAAzM,oBAAoB3/P,IAAIA,EAAEA,KAAKqpB,EAAEgtY,cAAchtY,EAAEgrZ,UAAUr0a,EAAEA,EAAE,CAAC2tE,QAAQ,KAAKqmW,YAAY,KAAKP,MAAM,EAAExyW,SAAS,KAAKu3W,oBAAoBF,GAAGK,kBAAkB34a,GAAGqpB,EAAE85K,MAAMnjM,EAAEA,EAAEA,EAAEihE,SAAS8yC,GAAGjiF,KAAK,KAAK2/G,GAAEzxI,GAAS,CAACqpB,EAAEgtY,cAAcr2Z,EAAE,CAC5P,SAAS0oB,GAAG1oB,EAAEqpB,EAAErZ,EAAEoZ,GAA8O,OAA3OppB,EAAE,CAACsH,IAAItH,EAAE8pB,OAAOT,EAAEyhK,QAAQ96K,EAAEo2X,KAAKh9W,EAAE0H,KAAK,MAAsB,QAAhBzH,EAAEooH,GAAE2iS,cAAsB/qZ,EAAE,CAAC6vZ,WAAW,KAAKC,OAAO,MAAM1nS,GAAE2iS,YAAY/qZ,EAAEA,EAAE6vZ,WAAWl5a,EAAE8wB,KAAK9wB,GAAmB,QAAfgQ,EAAEqZ,EAAE6vZ,YAAoB7vZ,EAAE6vZ,WAAWl5a,EAAE8wB,KAAK9wB,GAAGopB,EAAEpZ,EAAE8gB,KAAK9gB,EAAE8gB,KAAK9wB,EAAEA,EAAE8wB,KAAK1H,EAAEC,EAAE6vZ,WAAWl5a,GAAWA,CAAC,CAAC,SAASu5a,KAAK,OAAOlB,KAAKhiB,aAAa,CAAC,SAASmjB,GAAGx5a,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAIzsB,EAAEgjQ,KAAKluH,GAAEryB,OAAOp/G,EAAErD,EAAE05Z,cAAc3tY,GAAG,EAAEW,EAAErZ,OAAE,OAAO,IAASoZ,EAAE,KAAKA,EAAE,CAC9Y,SAASqwZ,GAAGz5a,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAIzsB,EAAE07a,KAAKjvZ,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI4J,OAAE,EAAO,GAAG,OAAOojY,GAAE,CAAC,IAAI9mU,EAAE8mU,GAAEC,cAA0B,GAAZrjY,EAAEs8D,EAAEw7F,QAAW,OAAO1hK,GAAG2uZ,GAAG3uZ,EAAEkmE,EAAE82S,MAAmC,YAA5BzpY,EAAE05Z,cAAc3tY,GAAGW,EAAErZ,EAAEgjB,EAAE5J,GAAU,CAACqoH,GAAEryB,OAAOp/G,EAAErD,EAAE05Z,cAAc3tY,GAAG,EAAEW,EAAErZ,EAAEgjB,EAAE5J,EAAE,CAAC,SAASswZ,GAAG15a,EAAEqpB,GAAG,OAAOmwZ,GAAG,QAAQ,EAAEx5a,EAAEqpB,EAAE,CAAC,SAASyvZ,GAAG94a,EAAEqpB,GAAG,OAAOowZ,GAAG,KAAK,EAAEz5a,EAAEqpB,EAAE,CAAC,SAASswZ,GAAG35a,EAAEqpB,GAAG,OAAOowZ,GAAG,EAAE,EAAEz5a,EAAEqpB,EAAE,CAAC,SAASuwZ,GAAG55a,EAAEqpB,GAAG,OAAOowZ,GAAG,EAAE,EAAEz5a,EAAEqpB,EAAE,CAChX,SAASwwZ,GAAG75a,EAAEqpB,GAAG,MAAG,oBAAoBA,GAASrpB,EAAEA,IAAIqpB,EAAErpB,GAAG,WAAWqpB,EAAE,KAAK,GAAK,OAAOA,QAAG,IAASA,GAASrpB,EAAEA,IAAIqpB,EAAE/xB,QAAQ0I,EAAE,WAAWqpB,EAAE/xB,QAAQ,IAAI,QAA1E,CAA2E,CAAC,SAASwib,GAAG95a,EAAEqpB,EAAErZ,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE7I,OAAO,CAACnH,IAAI,KAAYy5a,GAAG,EAAE,EAAEI,GAAG/nZ,KAAK,KAAKzI,EAAErpB,GAAGgQ,EAAE,CAAC,SAAS+pa,KAAK,CAAC,SAASC,GAAGh6a,EAAEqpB,GAAG,IAAIrZ,EAAEqoa,KAAKhvZ,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAID,EAAEpZ,EAAEqmZ,cAAc,OAAG,OAAOjtY,GAAG,OAAOC,GAAG0uZ,GAAG1uZ,EAAED,EAAE,IAAWA,EAAE,IAAGpZ,EAAEqmZ,cAAc,CAACr2Z,EAAEqpB,GAAUrpB,EAAC,CAC7Z,SAASi6a,GAAGj6a,EAAEqpB,GAAG,IAAIrZ,EAAEqoa,KAAKhvZ,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAID,EAAEpZ,EAAEqmZ,cAAc,OAAG,OAAOjtY,GAAG,OAAOC,GAAG0uZ,GAAG1uZ,EAAED,EAAE,IAAWA,EAAE,IAAGppB,EAAEA,IAAIgQ,EAAEqmZ,cAAc,CAACr2Z,EAAEqpB,GAAUrpB,EAAC,CAAC,SAASk6a,GAAGl6a,EAAEqpB,EAAErZ,GAAG,OAAG,KAAQ,GAAH0na,KAAc13a,EAAEq0a,YAAYr0a,EAAEq0a,WAAU,EAAGX,IAAG,GAAI1za,EAAEq2Z,cAAcrmZ,IAAEq7Z,GAAGr7Z,EAAEqZ,KAAKrZ,EAAEs0Z,KAAK7yR,GAAEgiS,OAAOzja,EAAEgla,IAAIhla,EAAEhQ,EAAEq0a,WAAU,GAAWhrZ,EAAC,CAAC,SAAS8wZ,GAAGn6a,EAAEqpB,GAAG,IAAIrZ,EAAEmjZ,GAAEA,GAAE,IAAInjZ,GAAG,EAAEA,EAAEA,EAAE,EAAEhQ,GAAE,GAAI,IAAIopB,EAAEquZ,GAAG54K,WAAW44K,GAAG54K,WAAW,CAAC,EAAE,IAAI7+P,GAAE,GAAIqpB,GAAG,CAAC,QAAQ8pY,GAAEnjZ,EAAEyna,GAAG54K,WAAWz1O,CAAC,CAAC,CAAC,SAASgxZ,KAAK,OAAO/B,KAAKhiB,aAAa,CAC1d,SAASgkB,GAAGr6a,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEksZ,GAAGt1a,GAAkE,GAA/DgQ,EAAE,CAAC2ka,KAAKvrZ,EAAE9T,OAAOtF,EAAEyoa,eAAc,EAAGC,WAAW,KAAK5nZ,KAAK,MAASwpZ,GAAGt6a,GAAGu6a,GAAGlxZ,EAAErZ,QAAQ,GAAiB,QAAdA,EAAE+ja,GAAG/za,EAAEqpB,EAAErZ,EAAEoZ,IAAY,CAAWmsZ,GAAGvla,EAAEhQ,EAAEopB,EAAX+iN,MAAgBquM,GAAGxqa,EAAEqZ,EAAED,EAAE,CAAC,CAC/K,SAAS2qF,GAAG/zG,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEksZ,GAAGt1a,GAAGrD,EAAE,CAACg4a,KAAKvrZ,EAAE9T,OAAOtF,EAAEyoa,eAAc,EAAGC,WAAW,KAAK5nZ,KAAK,MAAM,GAAGwpZ,GAAGt6a,GAAGu6a,GAAGlxZ,EAAE1sB,OAAO,CAAC,IAAIq2B,EAAEhzB,EAAEkja,UAAU,GAAG,IAAIlja,EAAEyza,QAAQ,OAAOzgZ,GAAG,IAAIA,EAAEygZ,QAAiC,QAAxBzgZ,EAAE3J,EAAEmvZ,qBAA8B,IAAI,IAAIlpV,EAAEjmE,EAAEsvZ,kBAAkB13a,EAAE+xB,EAAEs8D,EAAEt/E,GAAqC,GAAlCrT,EAAE87a,eAAc,EAAG97a,EAAE+7a,WAAWz3a,EAAKoqa,GAAGpqa,EAAEquF,GAAG,CAAC,IAAIp8D,EAAE7J,EAAE2qZ,YAA+E,OAAnE,OAAO9gZ,GAAGv2B,EAAEm0B,KAAKn0B,EAAEm3a,GAAGzqZ,KAAK1sB,EAAEm0B,KAAKoC,EAAEpC,KAAKoC,EAAEpC,KAAKn0B,QAAG0sB,EAAE2qZ,YAAYr3a,EAAQ,CAAC,CAAC,MAAMk9C,GAAG,CAAwB,QAAd7pC,EAAE+ja,GAAG/za,EAAEqpB,EAAE1sB,EAAEysB,MAAoBmsZ,GAAGvla,EAAEhQ,EAAEopB,EAAbzsB,EAAEwvO,MAAgBquM,GAAGxqa,EAAEqZ,EAAED,GAAG,CAAC,CAC/c,SAASkxZ,GAAGt6a,GAAG,IAAIqpB,EAAErpB,EAAEkja,UAAU,OAAOlja,IAAIyxI,IAAG,OAAOpoH,GAAGA,IAAIooH,EAAC,CAAC,SAAS8oS,GAAGv6a,EAAEqpB,GAAGuuZ,GAAGD,IAAG,EAAG,IAAI3na,EAAEhQ,EAAE2tE,QAAQ,OAAO39D,EAAEqZ,EAAEyH,KAAKzH,GAAGA,EAAEyH,KAAK9gB,EAAE8gB,KAAK9gB,EAAE8gB,KAAKzH,GAAGrpB,EAAE2tE,QAAQtkD,CAAC,CAAC,SAASmxZ,GAAGx6a,EAAEqpB,EAAErZ,GAAG,GAAG,KAAO,QAAFA,GAAW,CAAC,IAAIoZ,EAAEC,EAAEoqZ,MAAwBzja,GAAlBoZ,GAAGppB,EAAEgka,aAAkB36Y,EAAEoqZ,MAAMzja,EAAEmvZ,GAAGn/Z,EAAEgQ,EAAE,CAAC,CAC9P,IAAI65I,GAAG,CAACgtQ,YAAY8c,GAAGj8Z,YAAY4oI,GAAEw2Q,WAAWx2Q,GAAEpkJ,UAAUokJ,GAAE22Q,oBAAoB32Q,GAAE02Q,mBAAmB12Q,GAAErzE,gBAAgBqzE,GAAEr0E,QAAQq0E,GAAEy2Q,WAAWz2Q,GAAEj+I,OAAOi+I,GAAEvlJ,SAASulJ,GAAEnuE,cAAcmuE,GAAE42Q,iBAAiB52Q,GAAE62Q,cAAc72Q,GAAEg3Q,iBAAiBh3Q,GAAEk3Q,qBAAqBl3Q,GAAE82Q,MAAM92Q,GAAEm6R,0BAAyB,GAAIxC,GAAG,CAACphB,YAAY8c,GAAGj8Z,YAAY,SAAS1X,EAAEqpB,GAA4C,OAAzCs2O,KAAK02J,cAAc,CAACr2Z,OAAE,IAASqpB,EAAE,KAAKA,GAAUrpB,CAAC,EAAE82Z,WAAW6c,GAAGz3a,UAAUw9a,GAAGziB,oBAAoB,SAASj3Z,EAAEqpB,EAAErZ,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE7I,OAAO,CAACnH,IAAI,KAAYw5a,GAAG,QAC3f,EAAEK,GAAG/nZ,KAAK,KAAKzI,EAAErpB,GAAGgQ,EAAE,EAAEi9D,gBAAgB,SAASjtE,EAAEqpB,GAAG,OAAOmwZ,GAAG,QAAQ,EAAEx5a,EAAEqpB,EAAE,EAAE2tY,mBAAmB,SAASh3Z,EAAEqpB,GAAG,OAAOmwZ,GAAG,EAAE,EAAEx5a,EAAEqpB,EAAE,EAAE4iD,QAAQ,SAASjsE,EAAEqpB,GAAG,IAAIrZ,EAAE2vP,KAAqD,OAAhDt2O,OAAE,IAASA,EAAE,KAAKA,EAAErpB,EAAEA,IAAIgQ,EAAEqmZ,cAAc,CAACr2Z,EAAEqpB,GAAUrpB,CAAC,EAAE+2Z,WAAW,SAAS/2Z,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEu2O,KAAkM,OAA7Lt2O,OAAE,IAASrZ,EAAEA,EAAEqZ,GAAGA,EAAED,EAAEitY,cAAcjtY,EAAEirZ,UAAUhrZ,EAAErpB,EAAE,CAAC2tE,QAAQ,KAAKqmW,YAAY,KAAKP,MAAM,EAAExyW,SAAS,KAAKu3W,oBAAoBx4a,EAAE24a,kBAAkBtvZ,GAAGD,EAAE+5K,MAAMnjM,EAAEA,EAAEA,EAAEihE,SAASo5W,GAAGvoZ,KAAK,KAAK2/G,GAAEzxI,GAAS,CAACopB,EAAEitY,cAAcr2Z,EAAE,EAAEqC,OAAO,SAASrC,GAC3d,OAAdA,EAAE,CAAC1I,QAAQ0I,GAAhB2/P,KAA4B02J,cAAcr2Z,CAAC,EAAEjF,SAASu+a,GAAGnnW,cAAc4nW,GAAG7iB,iBAAiB,SAASl3Z,GAAG,OAAO2/P,KAAK02J,cAAcr2Z,CAAC,EAAEm3Z,cAAc,WAAW,IAAIn3Z,EAAEs5a,IAAG,GAAIjwZ,EAAErpB,EAAE,GAA6C,OAA1CA,EAAEm6a,GAAGroZ,KAAK,KAAK9xB,EAAE,IAAI2/P,KAAK02J,cAAcr2Z,EAAQ,CAACqpB,EAAErpB,EAAE,EAAEs3Z,iBAAiB,WAAW,EAAEE,qBAAqB,SAASx3Z,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEqoH,GAAE90I,EAAEgjQ,KAAK,GAAGrsH,GAAE,CAAC,QAAG,IAAStjI,EAAE,MAAMsf,MAAM9F,EAAE,MAAMxZ,EAAEA,GAAG,KAAK,CAAO,GAANA,EAAEqZ,IAAO,OAAOstY,GAAE,MAAMrnY,MAAM9F,EAAE,MAAM,KAAQ,GAAHkuZ,KAAQuB,GAAG7vZ,EAAEC,EAAErZ,EAAE,CAACrT,EAAE05Z,cAAcrmZ,EAAE,IAAIgjB,EAAE,CAACtqB,MAAMsH,EAAEgpa,YAAY3vZ,GACvZ,OAD0Z1sB,EAAEwmM,MAAMnwK,EAAE0mZ,GAAGX,GAAGjnZ,KAAK,KAAK1I,EACpf4J,EAAEhzB,GAAG,CAACA,IAAIopB,EAAEg2F,OAAO,KAAK12F,GAAG,EAAEymS,GAAGr9R,KAAK,KAAK1I,EAAE4J,EAAEhjB,EAAEqZ,QAAG,EAAO,MAAarZ,CAAC,EAAEonZ,MAAM,WAAW,IAAIp3Z,EAAE2/P,KAAKt2O,EAAEstY,GAAE+F,iBAAiB,GAAGppR,GAAE,CAAC,IAAItjI,EAAEsha,GAAkDjoZ,EAAE,IAAIA,EAAE,KAA9CrZ,GAAHqha,KAAU,GAAG,GAAG9S,GAAhB8S,IAAsB,IAAIl5X,SAAS,IAAInoC,GAAuB,GAAPA,EAAE6na,QAAWxuZ,GAAG,IAAIrZ,EAAEmoC,SAAS,KAAK9uB,GAAG,GAAG,MAAaA,EAAE,IAAIA,EAAE,KAAfrZ,EAAE8na,MAAmB3/X,SAAS,IAAI,IAAI,OAAOn4C,EAAEq2Z,cAAchtY,CAAC,EAAEoxZ,0BAAyB,GAAIvC,GAAG,CAACrhB,YAAY8c,GAAGj8Z,YAAYsia,GAAGljB,WAAW6c,GAAGz3a,UAAU48a,GAAG7hB,oBAAoB6iB,GAAG9iB,mBAAmB2iB,GAAG1sW,gBAAgB2sW,GAAG3tW,QAAQguW,GAAGljB,WAAWwhB,GAAGl2a,OAAOk3a,GAAGx+a,SAAS,WAAW,OAAOw9a,GAAGD,GAAG,EACrhBnmW,cAAc4nW,GAAG7iB,iBAAiB,SAASl3Z,GAAc,OAAOk6a,GAAZ7B,KAAiBjiB,GAAEC,cAAcr2Z,EAAE,EAAEm3Z,cAAc,WAAgD,MAAM,CAArCohB,GAAGD,IAAI,GAAKD,KAAKhiB,cAAyB,EAAEiB,iBAAiB9tQ,GAAGguQ,qBAAqBqhB,GAAGzhB,MAAMgjB,GAAGK,0BAAyB,GAAItC,GAAG,CAACthB,YAAY8c,GAAGj8Z,YAAYsia,GAAGljB,WAAW6c,GAAGz3a,UAAU48a,GAAG7hB,oBAAoB6iB,GAAG9iB,mBAAmB2iB,GAAG1sW,gBAAgB2sW,GAAG3tW,QAAQguW,GAAGljB,WAAW6hB,GAAGv2a,OAAOk3a,GAAGx+a,SAAS,WAAW,OAAO69a,GAAGN,GAAG,EAAEnmW,cAAc4nW,GAAG7iB,iBAAiB,SAASl3Z,GAAG,IAAIqpB,EAAEgvZ,KAAK,OAAO,OACzfjiB,GAAE/sY,EAAEgtY,cAAcr2Z,EAAEk6a,GAAG7wZ,EAAE+sY,GAAEC,cAAcr2Z,EAAE,EAAEm3Z,cAAc,WAAgD,MAAM,CAArCyhB,GAAGN,IAAI,GAAKD,KAAKhiB,cAAyB,EAAEiB,iBAAiB9tQ,GAAGguQ,qBAAqBqhB,GAAGzhB,MAAMgjB,GAAGK,0BAAyB,GAAI,SAASC,GAAG16a,EAAEqpB,GAAG,IAAI,IAAIrZ,EAAE,GAAGoZ,EAAEC,EAAE,GAAGrZ,GAAGkkZ,EAAG9qY,GAAGA,EAAEA,EAAE+5Y,aAAa/5Y,GAAG,IAAIzsB,EAAEqT,CAAC,CAAC,MAAMgjB,GAAGr2B,EAAE,6BAA6Bq2B,EAAE4e,QAAQ,KAAK5e,EAAEosB,KAAK,CAAC,MAAM,CAAC12C,MAAM1I,EAAEs/C,OAAOj2B,EAAE+1B,MAAMziD,EAAEg+a,OAAO,KAAK,CAAC,SAASC,GAAG56a,EAAEqpB,EAAErZ,GAAG,MAAM,CAACtH,MAAM1I,EAAEs/C,OAAO,KAAKF,MAAM,MAAMpvC,EAAEA,EAAE,KAAK2qa,OAAO,MAAMtxZ,EAAEA,EAAE,KAAK,CACzd,SAASwxZ,GAAG76a,EAAEqpB,GAAG,IAAIvxB,QAAQD,MAAMwxB,EAAE3gB,MAAM,CAAC,MAAMsH,GAAGijB,YAAW,WAAW,MAAMjjB,CAAE,GAAE,CAAC,CAAC,IAAI8qa,GAAG,oBAAoBnuW,QAAQA,QAAQwlH,IAAI,SAAS4oP,GAAG/6a,EAAEqpB,EAAErZ,IAAGA,EAAEk5G,IAAI,EAAEl5G,IAAK1I,IAAI,EAAE0I,EAAErY,QAAQ,CAAC2zB,QAAQ,MAAM,IAAIlC,EAAEC,EAAE3gB,MAAsD,OAAhDsH,EAAE8oD,SAAS,WAAWkiX,KAAKA,IAAG,EAAGC,GAAG7xZ,GAAGyxZ,GAAG76a,EAAEqpB,EAAE,EAASrZ,CAAC,CAC3Q,SAASkra,GAAGl7a,EAAEqpB,EAAErZ,IAAGA,EAAEk5G,IAAI,EAAEl5G,IAAK1I,IAAI,EAAE,IAAI8hB,EAAEppB,EAAEvD,KAAK0vZ,yBAAyB,GAAG,oBAAoB/iY,EAAE,CAAC,IAAIzsB,EAAE0sB,EAAE3gB,MAAMsH,EAAErY,QAAQ,WAAW,OAAOyxB,EAAEzsB,EAAE,EAAEqT,EAAE8oD,SAAS,WAAW+hX,GAAG76a,EAAEqpB,EAAE,CAAC,CAAC,IAAI2J,EAAEhzB,EAAEija,UAA8O,OAApO,OAAOjwY,GAAG,oBAAoBA,EAAEmoZ,oBAAoBnra,EAAE8oD,SAAS,WAAW+hX,GAAG76a,EAAEqpB,GAAG,oBAAoBD,IAAI,OAAOgyZ,GAAGA,GAAG,IAAIt3O,IAAI,CAAC7gL,OAAOm4Z,GAAG16Y,IAAIzd,OAAO,IAAIjT,EAAEqZ,EAAE+1B,MAAMn8B,KAAKk4Z,kBAAkB9xZ,EAAE3gB,MAAM,CAAC2ya,eAAe,OAAOrra,EAAEA,EAAE,IAAI,GAAUA,CAAC,CACnb,SAASsra,GAAGt7a,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEppB,EAAEu7a,UAAU,GAAG,OAAOnyZ,EAAE,CAACA,EAAEppB,EAAEu7a,UAAU,IAAIT,GAAG,IAAIn+a,EAAE,IAAImnM,IAAI16K,EAAEwL,IAAIvL,EAAE1sB,EAAE,WAAiB,KAAXA,EAAEysB,EAAEsE,IAAIrE,MAAgB1sB,EAAE,IAAImnM,IAAI16K,EAAEwL,IAAIvL,EAAE1sB,IAAIA,EAAEurD,IAAIl4C,KAAKrT,EAAE+jC,IAAI1wB,GAAGhQ,EAAEw7a,GAAG1pZ,KAAK,KAAK9xB,EAAEqpB,EAAErZ,GAAGqZ,EAAE3xB,KAAKsI,EAAEA,GAAG,CAAC,SAASy7a,GAAGz7a,GAAG,EAAE,CAAC,IAAIqpB,EAA4E,IAAvEA,EAAE,KAAKrpB,EAAEsH,OAAsB+hB,EAAE,QAApBA,EAAErpB,EAAEq2Z,gBAAyB,OAAOhtY,EAAE+5Y,YAAuB/5Y,EAAE,OAAOrpB,EAAEA,EAAEA,EAAEmja,MAAM,OAAO,OAAOnja,GAAG,OAAO,IAAI,CAChW,SAAS07a,GAAG17a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAG,OAAG,KAAY,EAAPqD,EAAEwF,OAAexF,IAAIqpB,EAAErpB,EAAEo/G,OAAO,OAAOp/G,EAAEo/G,OAAO,IAAIpvG,EAAEovG,OAAO,OAAOpvG,EAAEovG,QAAQ,MAAM,IAAIpvG,EAAE1I,MAAM,OAAO0I,EAAEkzZ,UAAUlzZ,EAAE1I,IAAI,KAAI+hB,EAAE6/F,IAAI,EAAE,IAAK5hH,IAAI,EAAEsta,GAAG5ka,EAAEqZ,EAAE,KAAKrZ,EAAEyja,OAAO,GAAGzza,IAAEA,EAAEo/G,OAAO,MAAMp/G,EAAEyza,MAAM92a,EAASqD,EAAC,CAAC,IAAI27a,GAAGrqY,EAAGsqY,kBAAkBlI,IAAG,EAAG,SAASmI,GAAG77a,EAAEqpB,EAAErZ,EAAEoZ,GAAGC,EAAEoxF,MAAM,OAAOz6G,EAAEy2a,GAAGptZ,EAAE,KAAKrZ,EAAEoZ,GAAGqtM,GAAGptM,EAAErpB,EAAEy6G,MAAMzqG,EAAEoZ,EAAE,CACnV,SAAS0yZ,GAAG97a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAGqT,EAAEA,EAAEhY,OAAO,IAAIg7B,EAAE3J,EAAEryB,IAAqC,OAAjCs8a,GAAGjqZ,EAAE1sB,GAAGysB,EAAE4uZ,GAAGh4a,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,EAAEr2B,GAAGqT,EAAE85I,KAAQ,OAAO9pJ,GAAI0za,IAA2EpgS,IAAGtjI,GAAGyha,GAAGpoZ,GAAGA,EAAE+1F,OAAO,EAAEy8T,GAAG77a,EAAEqpB,EAAED,EAAEzsB,GAAU0sB,EAAEoxF,QAA7GpxF,EAAE+qZ,YAAYp0a,EAAEo0a,YAAY/qZ,EAAE+1F,QAAQ,KAAKp/G,EAAEyza,QAAQ92a,EAAEo/a,GAAG/7a,EAAEqpB,EAAE1sB,GAAoD,CACzN,SAASq/a,GAAGh8a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAG,GAAG,OAAOqD,EAAE,CAAC,IAAIgzB,EAAEhjB,EAAEvT,KAAK,MAAG,oBAAoBu2B,GAAIipZ,GAAGjpZ,SAAI,IAASA,EAAE1G,cAAc,OAAOtc,EAAEmwE,cAAS,IAASnwE,EAAEsc,eAAoDtsB,EAAEs2a,GAAGtma,EAAEvT,KAAK,KAAK2sB,EAAEC,EAAEA,EAAE7jB,KAAK7I,IAAK3F,IAAIqyB,EAAEryB,IAAIgJ,EAAEmja,OAAO95Y,EAASA,EAAEoxF,MAAMz6G,IAArGqpB,EAAE/hB,IAAI,GAAG+hB,EAAE5sB,KAAKu2B,EAAEkpZ,GAAGl8a,EAAEqpB,EAAE2J,EAAE5J,EAAEzsB,GAAyE,CAAW,GAAVq2B,EAAEhzB,EAAEy6G,MAAS,KAAKz6G,EAAEyza,MAAM92a,GAAG,CAAC,IAAI2yF,EAAEt8D,EAAEw/Y,cAA0C,IAAhBxia,EAAE,QAAdA,EAAEA,EAAEmwE,SAAmBnwE,EAAEs7Z,IAAQh8U,EAAElmE,IAAIppB,EAAEhJ,MAAMqyB,EAAEryB,IAAI,OAAO+kb,GAAG/7a,EAAEqpB,EAAE1sB,EAAE,CAA6C,OAA5C0sB,EAAE+1F,OAAO,GAAEp/G,EAAEo2a,GAAGpjZ,EAAE5J,IAAKpyB,IAAIqyB,EAAEryB,IAAIgJ,EAAEmja,OAAO95Y,EAASA,EAAEoxF,MAAMz6G,CAAC,CAC1b,SAASk8a,GAAGl8a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAG,GAAG,OAAOqD,EAAE,CAAC,IAAIgzB,EAAEhzB,EAAEwya,cAAc,GAAGlH,GAAGt4Y,EAAE5J,IAAIppB,EAAEhJ,MAAMqyB,EAAEryB,IAAI,IAAG08a,IAAG,EAAGrqZ,EAAE6oZ,aAAa9oZ,EAAE4J,EAAE,KAAKhzB,EAAEyza,MAAM92a,GAAsC,OAAO0sB,EAAEoqZ,MAAMzza,EAAEyza,MAAMsI,GAAG/7a,EAAEqpB,EAAE1sB,GAAjE,KAAa,OAARqD,EAAEo/G,SAAgBs0T,IAAG,EAAyC,EAAC,OAAOyI,GAAGn8a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAE,CACxN,SAASy/a,GAAGp8a,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEC,EAAE6oZ,aAAav1a,EAAEysB,EAAE1yB,SAASs8B,EAAE,OAAOhzB,EAAEA,EAAEq2Z,cAAc,KAAK,GAAG,WAAWjtY,EAAE5jB,KAAK,GAAG,KAAY,EAAP6jB,EAAE7jB,MAAQ6jB,EAAEgtY,cAAc,CAACgmB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAMrpS,GAAEspS,GAAGC,IAAIA,IAAIzsa,MAAM,CAAC,GAAG,KAAO,WAAFA,GAAc,OAAOhQ,EAAE,OAAOgzB,EAAEA,EAAEqpZ,UAAUrsa,EAAEA,EAAEqZ,EAAEoqZ,MAAMpqZ,EAAEgqZ,WAAW,WAAWhqZ,EAAEgtY,cAAc,CAACgmB,UAAUr8a,EAAEs8a,UAAU,KAAKC,YAAY,MAAMlzZ,EAAE+qZ,YAAY,KAAKlhS,GAAEspS,GAAGC,IAAIA,IAAIz8a,EAAE,KAAKqpB,EAAEgtY,cAAc,CAACgmB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAMnzZ,EAAE,OAAO4J,EAAEA,EAAEqpZ,UAAUrsa,EAAEkjI,GAAEspS,GAAGC,IAAIA,IAAIrzZ,CAAC,MAAM,OACtf4J,GAAG5J,EAAE4J,EAAEqpZ,UAAUrsa,EAAEqZ,EAAEgtY,cAAc,MAAMjtY,EAAEpZ,EAAEkjI,GAAEspS,GAAGC,IAAIA,IAAIrzZ,EAAc,OAAZyyZ,GAAG77a,EAAEqpB,EAAE1sB,EAAEqT,GAAUqZ,EAAEoxF,KAAK,CAAC,SAASiiU,GAAG18a,EAAEqpB,GAAG,IAAIrZ,EAAEqZ,EAAEryB,KAAO,OAAOgJ,GAAG,OAAOgQ,GAAG,OAAOhQ,GAAGA,EAAEhJ,MAAMgZ,KAAEqZ,EAAE+1F,OAAO,IAAI/1F,EAAE+1F,OAAO,QAAO,CAAC,SAAS+8T,GAAGn8a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAG,IAAIq2B,EAAEm9Y,GAAGnga,GAAG+/Z,GAAGt4M,GAAEngO,QAAmD,OAA3C07B,EAAEg9Y,GAAG3mZ,EAAE2J,GAAGsgZ,GAAGjqZ,EAAE1sB,GAAGqT,EAAEgoa,GAAGh4a,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,EAAEr2B,GAAGysB,EAAE0gI,KAAQ,OAAO9pJ,GAAI0za,IAA2EpgS,IAAGlqH,GAAGqoZ,GAAGpoZ,GAAGA,EAAE+1F,OAAO,EAAEy8T,GAAG77a,EAAEqpB,EAAErZ,EAAErT,GAAU0sB,EAAEoxF,QAA7GpxF,EAAE+qZ,YAAYp0a,EAAEo0a,YAAY/qZ,EAAE+1F,QAAQ,KAAKp/G,EAAEyza,QAAQ92a,EAAEo/a,GAAG/7a,EAAEqpB,EAAE1sB,GAAoD,CACla,SAASggb,GAAG38a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAG,GAAGwza,GAAGnga,GAAG,CAAC,IAAIgjB,GAAE,EAAGs9Y,GAAGjnZ,EAAE,MAAM2J,GAAE,EAAW,GAARsgZ,GAAGjqZ,EAAE1sB,GAAM,OAAO0sB,EAAE45Y,UAAU2Z,GAAG58a,EAAEqpB,GAAGqsZ,GAAGrsZ,EAAErZ,EAAEoZ,GAAG0sZ,GAAGzsZ,EAAErZ,EAAEoZ,EAAEzsB,GAAGysB,GAAE,OAAQ,GAAG,OAAOppB,EAAE,CAAC,IAAIsvF,EAAEjmE,EAAE45Y,UAAUhia,EAAEooB,EAAEmpZ,cAAcljV,EAAEnuF,MAAMF,EAAE,IAAIiyB,EAAEo8D,EAAE90C,QAAQX,EAAE7pC,EAAE0mO,YAAY,kBAAkB78L,GAAG,OAAOA,EAAEA,EAAE85X,GAAG95X,GAAyBA,EAAEm2X,GAAG3mZ,EAA1BwwB,EAAEs2X,GAAGnga,GAAG+/Z,GAAGt4M,GAAEngO,SAAmB,IAAImnD,EAAEzuC,EAAEukO,yBAAyB9wO,EAAE,oBAAoBg7C,GAAG,oBAAoB6wC,EAAEo3O,wBAAwBjjU,GAAG,oBAAoB6rF,EAAEumV,kCAAkC,oBAAoBvmV,EAAEsmV,4BAC1d30a,IAAImoB,GAAG8J,IAAI2mB,IAAI87X,GAAGtsZ,EAAEimE,EAAElmE,EAAEywB,GAAGq6X,IAAG,EAAG,IAAI/8V,EAAE9tD,EAAEgtY,cAAc/mU,EAAEt5F,MAAMmhF,EAAE49V,GAAG1rZ,EAAED,EAAEkmE,EAAE3yF,GAAGu2B,EAAE7J,EAAEgtY,cAAcp1Z,IAAImoB,GAAG+tD,IAAIjkD,GAAG48Y,GAAGx4a,SAAS48a,IAAI,oBAAoBz1X,IAAI22X,GAAG/rZ,EAAErZ,EAAEyuC,EAAEr1B,GAAG8J,EAAE7J,EAAEgtY,gBAAgBp1Z,EAAEiza,IAAIsB,GAAGnsZ,EAAErZ,EAAE/O,EAAEmoB,EAAE+tD,EAAEjkD,EAAE2mB,KAAKp2C,GAAG,oBAAoB6rF,EAAEomU,2BAA2B,oBAAoBpmU,EAAEqmU,qBAAqB,oBAAoBrmU,EAAEqmU,oBAAoBrmU,EAAEqmU,qBAAqB,oBAAoBrmU,EAAEomU,2BAA2BpmU,EAAEomU,6BAA6B,oBAAoBpmU,EAAEvhE,oBAAoB1E,EAAE+1F,OAAO,WAClf,oBAAoB9vB,EAAEvhE,oBAAoB1E,EAAE+1F,OAAO,SAAS/1F,EAAEmpZ,cAAcppZ,EAAEC,EAAEgtY,cAAcnjY,GAAGo8D,EAAEnuF,MAAMioB,EAAEkmE,EAAEt5F,MAAMk9B,EAAEo8D,EAAE90C,QAAQX,EAAEzwB,EAAEnoB,IAAI,oBAAoBquF,EAAEvhE,oBAAoB1E,EAAE+1F,OAAO,SAASh2F,GAAE,EAAG,KAAK,CAACkmE,EAAEjmE,EAAE45Y,UAAUwR,GAAGz0a,EAAEqpB,GAAGpoB,EAAEooB,EAAEmpZ,cAAc34X,EAAExwB,EAAE5sB,OAAO4sB,EAAEsmY,YAAY1uZ,EAAE4xa,GAAGxpZ,EAAE5sB,KAAKwE,GAAGquF,EAAEnuF,MAAM04C,EAAEp2C,EAAE4lB,EAAE6oZ,aAAa/6V,EAAEmY,EAAE90C,QAAwB,kBAAhBtnB,EAAEljB,EAAE0mO,cAAiC,OAAOxjN,EAAEA,EAAEygZ,GAAGzgZ,GAAyBA,EAAE88Y,GAAG3mZ,EAA1B6J,EAAEi9Y,GAAGnga,GAAG+/Z,GAAGt4M,GAAEngO,SAAmB,IAAIg8F,EAAEtjF,EAAEukO,0BAA0B91L,EAAE,oBAAoB60C,GAAG,oBAAoBhE,EAAEo3O,0BAC9e,oBAAoBp3O,EAAEumV,kCAAkC,oBAAoBvmV,EAAEsmV,4BAA4B30a,IAAIwC,GAAG0zE,IAAIjkD,IAAIyiZ,GAAGtsZ,EAAEimE,EAAElmE,EAAE8J,GAAGghZ,IAAG,EAAG/8V,EAAE9tD,EAAEgtY,cAAc/mU,EAAEt5F,MAAMmhF,EAAE49V,GAAG1rZ,EAAED,EAAEkmE,EAAE3yF,GAAG,IAAI+G,EAAE2lB,EAAEgtY,cAAcp1Z,IAAIwC,GAAG0zE,IAAIzzE,GAAGosa,GAAGx4a,SAAS48a,IAAI,oBAAoB5gV,IAAI8hV,GAAG/rZ,EAAErZ,EAAEsjF,EAAElqE,GAAG1lB,EAAE2lB,EAAEgtY,gBAAgBx8W,EAAEq6X,IAAIsB,GAAGnsZ,EAAErZ,EAAE6pC,EAAEzwB,EAAE+tD,EAAEzzE,EAAEwvB,KAAI,IAAKurB,GAAG,oBAAoB6wC,EAAEutV,4BAA4B,oBAAoBvtV,EAAEwtV,sBAAsB,oBAAoBxtV,EAAEwtV,qBAAqBxtV,EAAEwtV,oBAAoB1zZ,EAAE1lB,EAAEwvB,GAAG,oBAAoBo8D,EAAEutV,4BAC5fvtV,EAAEutV,2BAA2BzzZ,EAAE1lB,EAAEwvB,IAAI,oBAAoBo8D,EAAErhE,qBAAqB5E,EAAE+1F,OAAO,GAAG,oBAAoB9vB,EAAEo3O,0BAA0Br9S,EAAE+1F,OAAO,QAAQ,oBAAoB9vB,EAAErhE,oBAAoBhtB,IAAIjB,EAAEwya,eAAer7V,IAAIn3E,EAAEq2Z,gBAAgBhtY,EAAE+1F,OAAO,GAAG,oBAAoB9vB,EAAEo3O,yBAAyBzlU,IAAIjB,EAAEwya,eAAer7V,IAAIn3E,EAAEq2Z,gBAAgBhtY,EAAE+1F,OAAO,MAAM/1F,EAAEmpZ,cAAcppZ,EAAEC,EAAEgtY,cAAc3yZ,GAAG4rF,EAAEnuF,MAAMioB,EAAEkmE,EAAEt5F,MAAM0N,EAAE4rF,EAAE90C,QAAQtnB,EAAE9J,EAAEywB,IAAI,oBAAoBy1C,EAAErhE,oBAAoBhtB,IAAIjB,EAAEwya,eAAer7V,IACjfn3E,EAAEq2Z,gBAAgBhtY,EAAE+1F,OAAO,GAAG,oBAAoB9vB,EAAEo3O,yBAAyBzlU,IAAIjB,EAAEwya,eAAer7V,IAAIn3E,EAAEq2Z,gBAAgBhtY,EAAE+1F,OAAO,MAAMh2F,GAAE,EAAG,CAAC,OAAO2zZ,GAAG/8a,EAAEqpB,EAAErZ,EAAEoZ,EAAE4J,EAAEr2B,EAAE,CACnK,SAASogb,GAAG/8a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAEq2B,GAAG0pZ,GAAG18a,EAAEqpB,GAAG,IAAIimE,EAAE,KAAa,IAARjmE,EAAE+1F,OAAW,IAAIh2F,IAAIkmE,EAAE,OAAO3yF,GAAG6za,GAAGnnZ,EAAErZ,GAAE,GAAI+ra,GAAG/7a,EAAEqpB,EAAE2J,GAAG5J,EAAEC,EAAE45Y,UAAU0Y,GAAGrkb,QAAQ+xB,EAAE,IAAIpoB,EAAEquF,GAAG,oBAAoBt/E,EAAEm8Y,yBAAyB,KAAK/iY,EAAEpxB,SAAwI,OAA/HqxB,EAAE+1F,OAAO,EAAE,OAAOp/G,GAAGsvF,GAAGjmE,EAAEoxF,MAAMg8G,GAAGptM,EAAErpB,EAAEy6G,MAAM,KAAKznF,GAAG3J,EAAEoxF,MAAMg8G,GAAGptM,EAAE,KAAKpoB,EAAE+xB,IAAI6oZ,GAAG77a,EAAEqpB,EAAEpoB,EAAE+xB,GAAG3J,EAAEgtY,cAAcjtY,EAAEpzB,MAAM2G,GAAG6za,GAAGnnZ,EAAErZ,GAAE,GAAWqZ,EAAEoxF,KAAK,CAAC,SAASuiU,GAAGh9a,GAAG,IAAIqpB,EAAErpB,EAAEija,UAAU55Y,EAAE4zZ,eAAe5M,GAAGrwa,EAAEqpB,EAAE4zZ,eAAe5zZ,EAAE4zZ,iBAAiB5zZ,EAAEmxB,SAASnxB,EAAEmxB,SAAS61X,GAAGrwa,EAAEqpB,EAAEmxB,SAAQ,GAAIu8X,GAAG/2a,EAAEqpB,EAAEw7Y,cAAc,CAC5e,SAASqY,GAAGl9a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAuC,OAApC+1a,KAAKC,GAAGh2a,GAAG0sB,EAAE+1F,OAAO,IAAIy8T,GAAG77a,EAAEqpB,EAAErZ,EAAEoZ,GAAUC,EAAEoxF,KAAK,CAAC,IAaqL0iU,GAAGC,GAAGC,GAAGC,GAb1LC,GAAG,CAACna,WAAW,KAAK/L,YAAY,KAAK8a,UAAU,GAAG,SAASqL,GAAGx9a,GAAG,MAAM,CAACq8a,UAAUr8a,EAAEs8a,UAAU,KAAKC,YAAY,KAAK,CAClM,SAASkB,GAAGz9a,EAAEqpB,EAAErZ,GAAG,IAA0D/O,EAAtDmoB,EAAEC,EAAE6oZ,aAAav1a,EAAEo5N,GAAEz+N,QAAQ07B,GAAE,EAAGs8D,EAAE,KAAa,IAARjmE,EAAE+1F,OAAqJ,IAAvIn+G,EAAEquF,KAAKruF,GAAE,OAAOjB,GAAG,OAAOA,EAAEq2Z,gBAAiB,KAAO,EAAF15Z,IAASsE,GAAE+xB,GAAE,EAAG3J,EAAE+1F,QAAQ,KAAY,OAAOp/G,GAAG,OAAOA,EAAEq2Z,gBAAc15Z,GAAG,GAAEu2I,GAAE6iF,GAAI,EAAFp5N,GAAQ,OAAOqD,EAA2B,OAAxBqya,GAAGhpZ,GAAwB,QAArBrpB,EAAEqpB,EAAEgtY,gBAA2C,QAAfr2Z,EAAEA,EAAEoja,aAA4B,KAAY,EAAP/5Y,EAAE7jB,MAAQ6jB,EAAEoqZ,MAAM,EAAE,OAAOzza,EAAExE,KAAK6tB,EAAEoqZ,MAAM,EAAEpqZ,EAAEoqZ,MAAM,WAAW,OAAKnkV,EAAElmE,EAAE1yB,SAASsJ,EAAEopB,EAAEmwY,SAAgBvmY,GAAG5J,EAAEC,EAAE7jB,KAAKwtB,EAAE3J,EAAEoxF,MAAMnrB,EAAE,CAAC9pF,KAAK,SAAS9O,SAAS44F,GAAG,KAAO,EAAFlmE,IAAM,OAAO4J,GAAGA,EAAEqgZ,WAAW,EAAErgZ,EAAEk/Y,aAC7e5iV,GAAGt8D,EAAE0qZ,GAAGpuV,EAAElmE,EAAE,EAAE,MAAMppB,EAAEw2a,GAAGx2a,EAAEopB,EAAEpZ,EAAE,MAAMgjB,EAAEmwY,OAAO95Y,EAAErpB,EAAEmja,OAAO95Y,EAAE2J,EAAEqlK,QAAQr4L,EAAEqpB,EAAEoxF,MAAMznF,EAAE3J,EAAEoxF,MAAM47S,cAAcmnB,GAAGxta,GAAGqZ,EAAEgtY,cAAcknB,GAAGv9a,GAAG29a,GAAGt0Z,EAAEimE,IAAqB,GAAG,QAArB3yF,EAAEqD,EAAEq2Z,gBAA2C,QAAfp1Z,EAAEtE,EAAEyma,YAAqB,OAGpM,SAAYpja,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAEq2B,EAAEs8D,GAAG,GAAGt/E,EAAG,OAAW,IAARqZ,EAAE+1F,OAAiB/1F,EAAE+1F,QAAQ,IAAwBw+T,GAAG59a,EAAEqpB,EAAEimE,EAA3BlmE,EAAEwxZ,GAAGtrZ,MAAM9F,EAAE,SAAsB,OAAOH,EAAEgtY,eAAqBhtY,EAAEoxF,MAAMz6G,EAAEy6G,MAAMpxF,EAAE+1F,OAAO,IAAI,OAAKpsF,EAAE5J,EAAEmwY,SAAS58Z,EAAE0sB,EAAE7jB,KAAK4jB,EAAEs0Z,GAAG,CAACl4a,KAAK,UAAU9O,SAAS0yB,EAAE1yB,UAAUiG,EAAE,EAAE,OAAMq2B,EAAEwjZ,GAAGxjZ,EAAEr2B,EAAE2yF,EAAE,OAAQ8vB,OAAO,EAAEh2F,EAAE+5Y,OAAO95Y,EAAE2J,EAAEmwY,OAAO95Y,EAAED,EAAEivK,QAAQrlK,EAAE3J,EAAEoxF,MAAMrxF,EAAE,KAAY,EAAPC,EAAE7jB,OAASixN,GAAGptM,EAAErpB,EAAEy6G,MAAM,KAAKnrB,GAAGjmE,EAAEoxF,MAAM47S,cAAcmnB,GAAGluV,GAAGjmE,EAAEgtY,cAAcknB,GAAUvqZ,GAAE,GAAG,KAAY,EAAP3J,EAAE7jB,MAAQ,OAAOo4a,GAAG59a,EAAEqpB,EAAEimE,EAAE,MAAM,GAAG,OAAO3yF,EAAEnB,KAAK,CAChd,GADid4tB,EAAEzsB,EAAEimG,aAAajmG,EAAEimG,YAAYi7U,QAC3e,IAAI58a,EAAEmoB,EAAE00Z,KAA0C,OAArC10Z,EAAEnoB,EAA0C28a,GAAG59a,EAAEqpB,EAAEimE,EAA/BlmE,EAAEwxZ,GAAlB5nZ,EAAE1D,MAAM9F,EAAE,MAAaJ,OAAE,GAA0B,CAAwB,GAAvBnoB,EAAE,KAAKquF,EAAEtvF,EAAEqza,YAAeK,IAAIzya,EAAE,CAAK,GAAG,QAAPmoB,EAAEutY,IAAc,CAAC,OAAOrnU,GAAGA,GAAG,KAAK,EAAE3yF,EAAE,EAAE,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAASA,EAAE,GAAG,MAAM,KAAK,UAAUA,EAAE,UAAU,MAAM,QAAQA,EAAE,EAChd,KADkdA,EAAE,KAAKA,GAAGysB,EAAE66Y,eAAe30U,IAAI,EAAE3yF,IAC5eA,IAAIq2B,EAAEm/Y,YAAYn/Y,EAAEm/Y,UAAUx1a,EAAEs3a,GAAGj0a,EAAErD,GAAG44a,GAAGnsZ,EAAEppB,EAAErD,GAAG,GAAG,CAA0B,OAAzBohb,KAAgCH,GAAG59a,EAAEqpB,EAAEimE,EAAlClmE,EAAEwxZ,GAAGtrZ,MAAM9F,EAAE,OAAyB,CAAC,MAAG,OAAO7sB,EAAEnB,MAAY6tB,EAAE+1F,OAAO,IAAI/1F,EAAEoxF,MAAMz6G,EAAEy6G,MAAMpxF,EAAE20Z,GAAGlsZ,KAAK,KAAK9xB,GAAGrD,EAAEshb,YAAY50Z,EAAE,OAAKrpB,EAAEgzB,EAAEqkY,YAAYua,GAAGzC,GAAGxya,EAAEimG,aAAa+uU,GAAGtoZ,EAAEiqH,IAAE,EAAGu+R,GAAG,KAAK,OAAO7xa,IAAIkxa,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGC,GAAGrxa,EAAE3J,GAAGi7a,GAAGtxa,EAAEpJ,SAASw6a,GAAG/nZ,GAAGA,EAAEs0Z,GAAGt0Z,EAAED,EAAE1yB,UAAU2yB,EAAE+1F,OAAO,KAAY/1F,EAAC,CALrK60Z,CAAGl+a,EAAEqpB,EAAEimE,EAAElmE,EAAEnoB,EAAEtE,EAAEqT,GAAG,GAAGgjB,EAAE,CAACA,EAAE5J,EAAEmwY,SAASjqU,EAAEjmE,EAAE7jB,KAAevE,GAAVtE,EAAEqD,EAAEy6G,OAAU49E,QAAQ,IAAInlK,EAAE,CAAC1tB,KAAK,SAAS9O,SAAS0yB,EAAE1yB,UAChF,OAD0F,KAAO,EAAF44F,IAAMjmE,EAAEoxF,QAAQ99G,IAAGysB,EAAEC,EAAEoxF,OAAQ44T,WAAW,EAAEjqZ,EAAE8oZ,aAAah/Y,EAAE7J,EAAE2oZ,UAAU,OAAO5oZ,EAAEgtZ,GAAGz5a,EAAEu2B,IAAKirZ,aAA4B,SAAfxhb,EAAEwhb,aAAuB,OAAOl9a,EAAE+xB,EAAEojZ,GAAGn1a,EAAE+xB,IAAIA,EAAEwjZ,GAAGxjZ,EAAEs8D,EAAEt/E,EAAE,OAAQovG,OAAO,EAAGpsF,EAAEmwY,OACnf95Y,EAAED,EAAE+5Y,OAAO95Y,EAAED,EAAEivK,QAAQrlK,EAAE3J,EAAEoxF,MAAMrxF,EAAEA,EAAE4J,EAAEA,EAAE3J,EAAEoxF,MAA8BnrB,EAAE,QAA1BA,EAAEtvF,EAAEy6G,MAAM47S,eAAyBmnB,GAAGxta,GAAG,CAACqsa,UAAU/sV,EAAE+sV,UAAUrsa,EAAEssa,UAAU,KAAKC,YAAYjtV,EAAEitV,aAAavpZ,EAAEqjY,cAAc/mU,EAAEt8D,EAAEqgZ,WAAWrza,EAAEqza,YAAYrja,EAAEqZ,EAAEgtY,cAAcknB,GAAUn0Z,CAAC,CAAoO,OAAzNppB,GAAVgzB,EAAEhzB,EAAEy6G,OAAU49E,QAAQjvK,EAAEgtZ,GAAGpjZ,EAAE,CAACxtB,KAAK,UAAU9O,SAAS0yB,EAAE1yB,WAAW,KAAY,EAAP2yB,EAAE7jB,QAAU4jB,EAAEqqZ,MAAMzja,GAAGoZ,EAAE+5Y,OAAO95Y,EAAED,EAAEivK,QAAQ,KAAK,OAAOr4L,IAAkB,QAAdgQ,EAAEqZ,EAAE2oZ,YAAoB3oZ,EAAE2oZ,UAAU,CAAChya,GAAGqpB,EAAE+1F,OAAO,IAAIpvG,EAAEiU,KAAKjkB,IAAIqpB,EAAEoxF,MAAMrxF,EAAEC,EAAEgtY,cAAc,KAAYjtY,CAAC,CACnd,SAASu0Z,GAAG39a,EAAEqpB,GAA8D,OAA3DA,EAAEq0Z,GAAG,CAACl4a,KAAK,UAAU9O,SAAS2yB,GAAGrpB,EAAEwF,KAAK,EAAE,OAAQ29Z,OAAOnja,EAASA,EAAEy6G,MAAMpxF,CAAC,CAAC,SAASu0Z,GAAG59a,EAAEqpB,EAAErZ,EAAEoZ,GAAwG,OAArG,OAAOA,GAAGupZ,GAAGvpZ,GAAGqtM,GAAGptM,EAAErpB,EAAEy6G,MAAM,KAAKzqG,IAAGhQ,EAAE29a,GAAGt0Z,EAAEA,EAAE6oZ,aAAax7a,WAAY0oH,OAAO,EAAE/1F,EAAEgtY,cAAc,KAAYr2Z,CAAC,CAGkJ,SAASo+a,GAAGp+a,EAAEqpB,EAAErZ,GAAGhQ,EAAEyza,OAAOpqZ,EAAE,IAAID,EAAEppB,EAAEkja,UAAU,OAAO95Y,IAAIA,EAAEqqZ,OAAOpqZ,GAAG+pZ,GAAGpza,EAAEmja,OAAO95Y,EAAErZ,EAAE,CACxc,SAASqua,GAAGr+a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAG,IAAIq2B,EAAEhzB,EAAEq2Z,cAAc,OAAOrjY,EAAEhzB,EAAEq2Z,cAAc,CAACioB,YAAYj1Z,EAAE4qQ,UAAU,KAAKsqJ,mBAAmB,EAAEh4Z,KAAK6C,EAAE6iC,KAAKj8C,EAAEwua,SAAS7hb,IAAIq2B,EAAEsrZ,YAAYj1Z,EAAE2J,EAAEihQ,UAAU,KAAKjhQ,EAAEurZ,mBAAmB,EAAEvrZ,EAAEzM,KAAK6C,EAAE4J,EAAEi5B,KAAKj8C,EAAEgjB,EAAEwrZ,SAAS7hb,EAAE,CAC3O,SAAS8hb,GAAGz+a,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEC,EAAE6oZ,aAAav1a,EAAEysB,EAAEguZ,YAAYpkZ,EAAE5J,EAAE6iC,KAAsC,GAAjC4vX,GAAG77a,EAAEqpB,EAAED,EAAE1yB,SAASsZ,GAAkB,KAAO,GAAtBoZ,EAAE2sM,GAAEz+N,UAAqB8xB,EAAI,EAAFA,EAAI,EAAEC,EAAE+1F,OAAO,QAAQ,CAAC,GAAG,OAAOp/G,GAAG,KAAa,IAARA,EAAEo/G,OAAWp/G,EAAE,IAAIA,EAAEqpB,EAAEoxF,MAAM,OAAOz6G,GAAG,CAAC,GAAG,KAAKA,EAAEsH,IAAI,OAAOtH,EAAEq2Z,eAAe+nB,GAAGp+a,EAAEgQ,EAAEqZ,QAAQ,GAAG,KAAKrpB,EAAEsH,IAAI82a,GAAGp+a,EAAEgQ,EAAEqZ,QAAQ,GAAG,OAAOrpB,EAAEy6G,MAAM,CAACz6G,EAAEy6G,MAAM0oT,OAAOnja,EAAEA,EAAEA,EAAEy6G,MAAM,QAAQ,CAAC,GAAGz6G,IAAIqpB,EAAE,MAAMrpB,EAAE,KAAK,OAAOA,EAAEq4L,SAAS,CAAC,GAAG,OAAOr4L,EAAEmja,QAAQnja,EAAEmja,SAAS95Y,EAAE,MAAMrpB,EAAEA,EAAEA,EAAEmja,MAAM,CAACnja,EAAEq4L,QAAQ8qO,OAAOnja,EAAEmja,OAAOnja,EAAEA,EAAEq4L,OAAO,CAACjvK,GAAG,CAAC,CAAQ,GAAP8pH,GAAE6iF,GAAE3sM,GAAM,KAAY,EAAPC,EAAE7jB,MAAQ6jB,EAAEgtY,cAC/e,UAAU,OAAO15Z,GAAG,IAAK,WAAqB,IAAVqT,EAAEqZ,EAAEoxF,MAAU99G,EAAE,KAAK,OAAOqT,GAAiB,QAAdhQ,EAAEgQ,EAAEkzZ,YAAoB,OAAOiU,GAAGn3a,KAAKrD,EAAEqT,GAAGA,EAAEA,EAAEqoL,QAAY,QAAJroL,EAAErT,IAAYA,EAAE0sB,EAAEoxF,MAAMpxF,EAAEoxF,MAAM,OAAO99G,EAAEqT,EAAEqoL,QAAQroL,EAAEqoL,QAAQ,MAAMgmP,GAAGh1Z,GAAE,EAAG1sB,EAAEqT,EAAEgjB,GAAG,MAAM,IAAK,YAA6B,IAAjBhjB,EAAE,KAAKrT,EAAE0sB,EAAEoxF,MAAUpxF,EAAEoxF,MAAM,KAAK,OAAO99G,GAAG,CAAe,GAAG,QAAjBqD,EAAErD,EAAEuma,YAAuB,OAAOiU,GAAGn3a,GAAG,CAACqpB,EAAEoxF,MAAM99G,EAAE,KAAK,CAACqD,EAAErD,EAAE07L,QAAQ17L,EAAE07L,QAAQroL,EAAEA,EAAErT,EAAEA,EAAEqD,CAAC,CAACq+a,GAAGh1Z,GAAE,EAAGrZ,EAAE,KAAKgjB,GAAG,MAAM,IAAK,WAAWqrZ,GAAGh1Z,GAAE,EAAG,KAAK,UAAK,GAAQ,MAAM,QAAQA,EAAEgtY,cAAc,KAAK,OAAOhtY,EAAEoxF,KAAK,CAC7d,SAASmiU,GAAG58a,EAAEqpB,GAAG,KAAY,EAAPA,EAAE7jB,OAAS,OAAOxF,IAAIA,EAAEkja,UAAU,KAAK75Y,EAAE65Y,UAAU,KAAK75Y,EAAE+1F,OAAO,EAAE,CAAC,SAAS28T,GAAG/7a,EAAEqpB,EAAErZ,GAAyD,GAAtD,OAAOhQ,IAAIqpB,EAAEkqZ,aAAavza,EAAEuza,cAAcyB,IAAI3rZ,EAAEoqZ,MAAS,KAAKzja,EAAEqZ,EAAEgqZ,YAAY,OAAO,KAAK,GAAG,OAAOrza,GAAGqpB,EAAEoxF,QAAQz6G,EAAEy6G,MAAM,MAAMnrF,MAAM9F,EAAE,MAAM,GAAG,OAAOH,EAAEoxF,MAAM,CAA4C,IAAjCzqG,EAAEoma,GAAZp2a,EAAEqpB,EAAEoxF,MAAaz6G,EAAEkya,cAAc7oZ,EAAEoxF,MAAMzqG,EAAMA,EAAEmzZ,OAAO95Y,EAAE,OAAOrpB,EAAEq4L,SAASr4L,EAAEA,EAAEq4L,SAAQroL,EAAEA,EAAEqoL,QAAQ+9O,GAAGp2a,EAAEA,EAAEkya,eAAgB/O,OAAO95Y,EAAErZ,EAAEqoL,QAAQ,IAAI,CAAC,OAAOhvK,EAAEoxF,KAAK,CAO9a,SAASikU,GAAG1+a,EAAEqpB,GAAG,IAAIiqH,GAAE,OAAOtzI,EAAEw+a,UAAU,IAAK,SAASn1Z,EAAErpB,EAAEisD,KAAK,IAAI,IAAIj8C,EAAE,KAAK,OAAOqZ,GAAG,OAAOA,EAAE65Y,YAAYlzZ,EAAEqZ,GAAGA,EAAEA,EAAEgvK,QAAQ,OAAOroL,EAAEhQ,EAAEisD,KAAK,KAAKj8C,EAAEqoL,QAAQ,KAAK,MAAM,IAAK,YAAYroL,EAAEhQ,EAAEisD,KAAK,IAAI,IAAI7iC,EAAE,KAAK,OAAOpZ,GAAG,OAAOA,EAAEkzZ,YAAY95Y,EAAEpZ,GAAGA,EAAEA,EAAEqoL,QAAQ,OAAOjvK,EAAEC,GAAG,OAAOrpB,EAAEisD,KAAKjsD,EAAEisD,KAAK,KAAKjsD,EAAEisD,KAAKosI,QAAQ,KAAKjvK,EAAEivK,QAAQ,KAAK,CAC5U,SAAS1uD,GAAE3pI,GAAG,IAAIqpB,EAAE,OAAOrpB,EAAEkja,WAAWlja,EAAEkja,UAAUzoT,QAAQz6G,EAAEy6G,MAAMzqG,EAAE,EAAEoZ,EAAE,EAAE,GAAGC,EAAE,IAAI,IAAI1sB,EAAEqD,EAAEy6G,MAAM,OAAO99G,GAAGqT,GAAGrT,EAAE82a,MAAM92a,EAAE02a,WAAWjqZ,GAAkB,SAAfzsB,EAAEwhb,aAAsB/0Z,GAAW,SAARzsB,EAAEyiH,MAAeziH,EAAEwma,OAAOnja,EAAErD,EAAEA,EAAE07L,aAAa,IAAI17L,EAAEqD,EAAEy6G,MAAM,OAAO99G,GAAGqT,GAAGrT,EAAE82a,MAAM92a,EAAE02a,WAAWjqZ,GAAGzsB,EAAEwhb,aAAa/0Z,GAAGzsB,EAAEyiH,MAAMziH,EAAEwma,OAAOnja,EAAErD,EAAEA,EAAE07L,QAAyC,OAAjCr4L,EAAEm+a,cAAc/0Z,EAAEppB,EAAEqza,WAAWrja,EAASqZ,CAAC,CAC7V,SAASs1Z,GAAG3+a,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEC,EAAE6oZ,aAAmB,OAANR,GAAGroZ,GAAUA,EAAE/hB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAOqiI,GAAEtgH,GAAG,KAAK,KAAK,EAUtD,KAAK,GAAG,OAAO8mZ,GAAG9mZ,EAAE5sB,OAAO2za,KAAKzmS,GAAEtgH,GAAG,KAVqD,KAAK,EAA2Q,OAAzQD,EAAEC,EAAE45Y,UAAU+T,KAAKpgN,GAAEk5M,IAAIl5M,GAAEa,IAAG6/M,KAAKluZ,EAAE6zZ,iBAAiB7zZ,EAAEoxB,QAAQpxB,EAAE6zZ,eAAe7zZ,EAAE6zZ,eAAe,MAAS,OAAOj9a,GAAG,OAAOA,EAAEy6G,QAAM83T,GAAGlpZ,GAAGA,EAAE+1F,OAAO,EAAE,OAAOp/G,GAAGA,EAAEq2Z,cAAcuO,cAAc,KAAa,IAARv7Y,EAAE+1F,SAAa/1F,EAAE+1F,OAAO,KAAK,OAAOyyT,KAAK+M,GAAG/M,IAAIA,GAAG,QAAOuL,GAAGp9a,EAAEqpB,GAAGsgH,GAAEtgH,GAAU,KAAK,KAAK,EAAE6tZ,GAAG7tZ,GAAG,IAAI1sB,EAAEm6a,GAAGD,GAAGv/a,SAC7e,GAAT0Y,EAAEqZ,EAAE5sB,KAAQ,OAAOuD,GAAG,MAAMqpB,EAAE45Y,UAAUoa,GAAGr9a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAGqD,EAAEhJ,MAAMqyB,EAAEryB,MAAMqyB,EAAE+1F,OAAO,IAAI/1F,EAAE+1F,OAAO,aAAa,CAAC,IAAIh2F,EAAE,CAAC,GAAG,OAAOC,EAAE45Y,UAAU,MAAM3zY,MAAM9F,EAAE,MAAW,OAALmgH,GAAEtgH,GAAU,IAAI,CAAkB,GAAjBrpB,EAAE82a,GAAGH,GAAGr/a,SAAYi7a,GAAGlpZ,GAAG,CAACD,EAAEC,EAAE45Y,UAAUjzZ,EAAEqZ,EAAE5sB,KAAK,IAAIu2B,EAAE3J,EAAEmpZ,cAA+C,OAAjCppZ,EAAEkmZ,IAAIjmZ,EAAED,EAAEmmZ,IAAIv8Y,EAAEhzB,EAAE,KAAY,EAAPqpB,EAAE7jB,MAAewK,GAAG,IAAK,SAAS8lN,GAAE,SAAS1sM,GAAG0sM,GAAE,QAAQ1sM,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ0sM,GAAE,OAAO1sM,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIzsB,EAAE,EAAEA,EAAE4wa,GAAGzoa,OAAOnI,IAAIm5N,GAAEy3M,GAAG5wa,GAAGysB,GAAG,MAAM,IAAK,SAAS0sM,GAAE,QAAQ1sM,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO0sM,GAAE,QACnhB1sM,GAAG0sM,GAAE,OAAO1sM,GAAG,MAAM,IAAK,UAAU0sM,GAAE,SAAS1sM,GAAG,MAAM,IAAK,QAAQ0rY,EAAG1rY,EAAE4J,GAAG8iM,GAAE,UAAU1sM,GAAG,MAAM,IAAK,SAASA,EAAEi5Y,cAAc,CAACwc,cAAc7rZ,EAAEwP,UAAUszL,GAAE,UAAU1sM,GAAG,MAAM,IAAK,WAAW6zY,GAAG7zY,EAAE4J,GAAG8iM,GAAE,UAAU1sM,GAAkB,IAAI,IAAIkmE,KAAvBmnU,GAAGzmZ,EAAEgjB,GAAGr2B,EAAE,KAAkBq2B,EAAE,GAAGA,EAAEvJ,eAAe6lE,GAAG,CAAC,IAAIruF,EAAE+xB,EAAEs8D,GAAG,aAAaA,EAAE,kBAAkBruF,EAAEmoB,EAAE2nF,cAAc9vG,KAAI,IAAK+xB,EAAE8rZ,0BAA0BtQ,GAAGplZ,EAAE2nF,YAAY9vG,EAAEjB,GAAGrD,EAAE,CAAC,WAAWsE,IAAI,kBAAkBA,GAAGmoB,EAAE2nF,cAAc,GAAG9vG,KAAI,IAAK+xB,EAAE8rZ,0BAA0BtQ,GAAGplZ,EAAE2nF,YAC1e9vG,EAAEjB,GAAGrD,EAAE,CAAC,WAAW,GAAGsE,IAAIk7Z,EAAG1yY,eAAe6lE,IAAI,MAAMruF,GAAG,aAAaquF,GAAGwmI,GAAE,SAAS1sM,EAAE,CAAC,OAAOpZ,GAAG,IAAK,QAAQwkZ,EAAGprY,GAAG+rY,EAAG/rY,EAAE4J,GAAE,GAAI,MAAM,IAAK,WAAWwhY,EAAGprY,GAAG4sY,GAAG5sY,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoB4J,EAAE16B,UAAU8wB,EAAE21Z,QAAQtQ,IAAIrlZ,EAAEzsB,EAAE0sB,EAAE+qZ,YAAYhrZ,EAAE,OAAOA,IAAIC,EAAE+1F,OAAO,EAAE,KAAK,CAAC9vB,EAAE,IAAI3yF,EAAE8hG,SAAS9hG,EAAEA,EAAE28B,cAAc,iCAAiCt5B,IAAIA,EAAEk9Z,GAAGltZ,IAAI,iCAAiChQ,EAAE,WAAWgQ,IAAGhQ,EAAEsvF,EAAElzF,cAAc,QAASgqG,UAAU,qBAAuBpmG,EAAEA,EAAEipB,YAAYjpB,EAAE2iG,aAC/f,kBAAkBv5E,EAAE02K,GAAG9/L,EAAEsvF,EAAElzF,cAAc4T,EAAE,CAAC8vL,GAAG12K,EAAE02K,MAAM9/L,EAAEsvF,EAAElzF,cAAc4T,GAAG,WAAWA,IAAIs/E,EAAEtvF,EAAEopB,EAAEoZ,SAAS8sD,EAAE9sD,UAAS,EAAGpZ,EAAE5sB,OAAO8yF,EAAE9yF,KAAK4sB,EAAE5sB,QAAQwD,EAAEsvF,EAAEixE,gBAAgBvgK,EAAEgQ,GAAGhQ,EAAEsva,IAAIjmZ,EAAErpB,EAAEuva,IAAInmZ,EAAE+zZ,GAAGn9a,EAAEqpB,GAAE,GAAG,GAAIA,EAAE45Y,UAAUjja,EAAEA,EAAE,CAAW,OAAVsvF,EAAEonU,GAAG1mZ,EAAEoZ,GAAUpZ,GAAG,IAAK,SAAS8lN,GAAE,SAAS91N,GAAG81N,GAAE,QAAQ91N,GAAGrD,EAAEysB,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ0sM,GAAE,OAAO91N,GAAGrD,EAAEysB,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIzsB,EAAE,EAAEA,EAAE4wa,GAAGzoa,OAAOnI,IAAIm5N,GAAEy3M,GAAG5wa,GAAGqD,GAAGrD,EAAEysB,EAAE,MAAM,IAAK,SAAS0sM,GAAE,QAAQ91N,GAAGrD,EAAEysB,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO0sM,GAAE,QAClf91N,GAAG81N,GAAE,OAAO91N,GAAGrD,EAAEysB,EAAE,MAAM,IAAK,UAAU0sM,GAAE,SAAS91N,GAAGrD,EAAEysB,EAAE,MAAM,IAAK,QAAQ0rY,EAAG90Z,EAAEopB,GAAGzsB,EAAEk4Z,EAAG70Z,EAAEopB,GAAG0sM,GAAE,UAAU91N,GAAG,MAAM,IAAK,SAAiL,QAAQrD,EAAEysB,QAAxK,IAAK,SAASppB,EAAEqia,cAAc,CAACwc,cAAcz1Z,EAAEoZ,UAAU7lC,EAAEq5I,EAAE,CAAC,EAAE5sH,EAAE,CAAC1gB,WAAM,IAASotN,GAAE,UAAU91N,GAAG,MAAM,IAAK,WAAWi9Z,GAAGj9Z,EAAEopB,GAAGzsB,EAAEk5Z,GAAG71Z,EAAEopB,GAAG0sM,GAAE,UAAU91N,GAAiC,IAAIgzB,KAAhByjY,GAAGzmZ,EAAErT,GAAGsE,EAAEtE,EAAa,GAAGsE,EAAEwoB,eAAeuJ,GAAG,CAAC,IAAIE,EAAEjyB,EAAE+xB,GAAG,UAAUA,EAAEyiF,GAAGz1G,EAAEkzB,GAAG,4BAA4BF,EAAuB,OAApBE,EAAEA,EAAEA,EAAEvxB,YAAO,IAAgBu6Z,GAAGl8Z,EAAEkzB,GAAI,aAAaF,EAAE,kBAAkBE,GAAG,aAC7eljB,GAAG,KAAKkjB,IAAIgjY,GAAGl2Z,EAAEkzB,GAAG,kBAAkBA,GAAGgjY,GAAGl2Z,EAAE,GAAGkzB,GAAG,mCAAmCF,GAAG,6BAA6BA,GAAG,cAAcA,IAAImpY,EAAG1yY,eAAeuJ,GAAG,MAAME,GAAG,aAAaF,GAAG8iM,GAAE,SAAS91N,GAAG,MAAMkzB,GAAG4/X,EAAG9yZ,EAAEgzB,EAAEE,EAAEo8D,GAAG,CAAC,OAAOt/E,GAAG,IAAK,QAAQwkZ,EAAGx0Z,GAAGm1Z,EAAGn1Z,EAAEopB,GAAE,GAAI,MAAM,IAAK,WAAWorY,EAAGx0Z,GAAGg2Z,GAAGh2Z,GAAG,MAAM,IAAK,SAAS,MAAMopB,EAAE1gB,OAAO1I,EAAEmrD,aAAa,QAAQ,GAAGkpW,EAAGjrY,EAAE1gB,QAAQ,MAAM,IAAK,SAAS1I,EAAEwiC,WAAWpZ,EAAEoZ,SAAmB,OAAVxP,EAAE5J,EAAE1gB,OAAcktZ,GAAG51Z,IAAIopB,EAAEoZ,SAASxP,GAAE,GAAI,MAAM5J,EAAE5vB,cAAco8Z,GAAG51Z,IAAIopB,EAAEoZ,SAASpZ,EAAE5vB,cAClf,GAAI,MAAM,QAAQ,oBAAoBmD,EAAErE,UAAU0H,EAAE++a,QAAQtQ,IAAI,OAAOz+Z,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWoZ,IAAIA,EAAEu3P,UAAU,MAAM3gR,EAAE,IAAK,MAAMopB,GAAE,EAAG,MAAMppB,EAAE,QAAQopB,GAAE,EAAG,CAACA,IAAIC,EAAE+1F,OAAO,EAAE,CAAC,OAAO/1F,EAAEryB,MAAMqyB,EAAE+1F,OAAO,IAAI/1F,EAAE+1F,OAAO,QAAQ,CAAM,OAALuqB,GAAEtgH,GAAU,KAAK,KAAK,EAAE,GAAGrpB,GAAG,MAAMqpB,EAAE45Y,UAAUqa,GAAGt9a,EAAEqpB,EAAErpB,EAAEwya,cAAcppZ,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAOC,EAAE45Y,UAAU,MAAM3zY,MAAM9F,EAAE,MAAsC,GAAhCxZ,EAAE8ma,GAAGD,GAAGv/a,SAASw/a,GAAGH,GAAGr/a,SAAYi7a,GAAGlpZ,GAAG,CAAyC,GAAxCD,EAAEC,EAAE45Y,UAAUjzZ,EAAEqZ,EAAEmpZ,cAAcppZ,EAAEkmZ,IAAIjmZ,GAAK2J,EAAE5J,EAAEyzI,YAAY7sJ,IAC/e,QADofhQ,EACvf2xa,IAAY,OAAO3xa,EAAEsH,KAAK,KAAK,EAAEkna,GAAGplZ,EAAEyzI,UAAU7sJ,EAAE,KAAY,EAAPhQ,EAAEwF,OAAS,MAAM,KAAK,GAAE,IAAKxF,EAAEwya,cAAcsM,0BAA0BtQ,GAAGplZ,EAAEyzI,UAAU7sJ,EAAE,KAAY,EAAPhQ,EAAEwF,OAASwtB,IAAI3J,EAAE+1F,OAAO,EAAE,MAAMh2F,GAAG,IAAIpZ,EAAEyuF,SAASzuF,EAAEA,EAAEspB,eAAewkI,eAAe10I,IAAKkmZ,IAAIjmZ,EAAEA,EAAE45Y,UAAU75Y,CAAC,CAAM,OAALugH,GAAEtgH,GAAU,KAAK,KAAK,GAA0B,GAAvButM,GAAEb,IAAG3sM,EAAEC,EAAEgtY,cAAiB,OAAOr2Z,GAAG,OAAOA,EAAEq2Z,eAAe,OAAOr2Z,EAAEq2Z,cAAc+M,WAAW,CAAC,GAAG9vR,IAAG,OAAOs+R,IAAI,KAAY,EAAPvoZ,EAAE7jB,OAAS,KAAa,IAAR6jB,EAAE+1F,OAAWqzT,KAAKC,KAAKrpZ,EAAE+1F,OAAO,MAAMpsF,GAAE,OAAQ,GAAGA,EAAEu/Y,GAAGlpZ,GAAG,OAAOD,GAAG,OAAOA,EAAEg6Y,WAAW,CAAC,GAAG,OAC5fpja,EAAE,CAAC,IAAIgzB,EAAE,MAAM1D,MAAM9F,EAAE,MAAqD,KAA7BwJ,EAAE,QAApBA,EAAE3J,EAAEgtY,eAAyBrjY,EAAEowY,WAAW,MAAW,MAAM9zY,MAAM9F,EAAE,MAAMwJ,EAAEs8Y,IAAIjmZ,CAAC,MAAMqpZ,KAAK,KAAa,IAARrpZ,EAAE+1F,SAAa/1F,EAAEgtY,cAAc,MAAMhtY,EAAE+1F,OAAO,EAAEuqB,GAAEtgH,GAAG2J,GAAE,CAAE,MAAM,OAAO6+Y,KAAK+M,GAAG/M,IAAIA,GAAG,MAAM7+Y,GAAE,EAAG,IAAIA,EAAE,OAAe,MAAR3J,EAAE+1F,MAAY/1F,EAAE,IAAI,CAAC,OAAG,KAAa,IAARA,EAAE+1F,QAAkB/1F,EAAEoqZ,MAAMzja,EAAEqZ,KAAED,EAAE,OAAOA,MAAO,OAAOppB,GAAG,OAAOA,EAAEq2Z,gBAAgBjtY,IAAIC,EAAEoxF,MAAM2E,OAAO,KAAK,KAAY,EAAP/1F,EAAE7jB,QAAU,OAAOxF,GAAG,KAAe,EAAV+1N,GAAEz+N,SAAW,IAAI2+N,KAAIA,GAAE,GAAG8nN,OAAO,OAAO10Z,EAAE+qZ,cAAc/qZ,EAAE+1F,OAAO,GAAGuqB,GAAEtgH,GAAU,MAAK,KAAK,EAAE,OAAO2tZ,KACrfoG,GAAGp9a,EAAEqpB,GAAG,OAAOrpB,GAAG6ta,GAAGxkZ,EAAE45Y,UAAU4B,eAAel7R,GAAEtgH,GAAG,KAAK,KAAK,GAAG,OAAO8pZ,GAAG9pZ,EAAE5sB,KAAK46I,UAAU1N,GAAEtgH,GAAG,KAA+C,KAAK,GAA0B,GAAvButM,GAAEb,IAAwB,QAArB/iM,EAAE3J,EAAEgtY,eAA0B,OAAO1sR,GAAEtgH,GAAG,KAAuC,GAAlCD,EAAE,KAAa,IAARC,EAAE+1F,OAA4B,QAAjB9vB,EAAEt8D,EAAEihQ,WAAsB,GAAG7qQ,EAAEs1Z,GAAG1rZ,GAAE,OAAQ,CAAC,GAAG,IAAIijM,IAAG,OAAOj2N,GAAG,KAAa,IAARA,EAAEo/G,OAAW,IAAIp/G,EAAEqpB,EAAEoxF,MAAM,OAAOz6G,GAAG,CAAS,GAAG,QAAXsvF,EAAE6nV,GAAGn3a,IAAe,CAAmG,IAAlGqpB,EAAE+1F,OAAO,IAAIs/T,GAAG1rZ,GAAE,GAAoB,QAAhB5J,EAAEkmE,EAAE8kV,eAAuB/qZ,EAAE+qZ,YAAYhrZ,EAAEC,EAAE+1F,OAAO,GAAG/1F,EAAE80Z,aAAa,EAAE/0Z,EAAEpZ,EAAMA,EAAEqZ,EAAEoxF,MAAM,OAAOzqG,GAAOhQ,EAAEopB,GAAN4J,EAAEhjB,GAAQovG,OAAO,SAC/d,QAAd9vB,EAAEt8D,EAAEkwY,YAAoBlwY,EAAEqgZ,WAAW,EAAErgZ,EAAEygZ,MAAMzza,EAAEgzB,EAAEynF,MAAM,KAAKznF,EAAEmrZ,aAAa,EAAEnrZ,EAAEw/Y,cAAc,KAAKx/Y,EAAEqjY,cAAc,KAAKrjY,EAAEohZ,YAAY,KAAKphZ,EAAEugZ,aAAa,KAAKvgZ,EAAEiwY,UAAU,OAAOjwY,EAAEqgZ,WAAW/jV,EAAE+jV,WAAWrgZ,EAAEygZ,MAAMnkV,EAAEmkV,MAAMzgZ,EAAEynF,MAAMnrB,EAAEmrB,MAAMznF,EAAEmrZ,aAAa,EAAEnrZ,EAAEg/Y,UAAU,KAAKh/Y,EAAEw/Y,cAAcljV,EAAEkjV,cAAcx/Y,EAAEqjY,cAAc/mU,EAAE+mU,cAAcrjY,EAAEohZ,YAAY9kV,EAAE8kV,YAAYphZ,EAAEv2B,KAAK6yF,EAAE7yF,KAAKuD,EAAEsvF,EAAEikV,aAAavgZ,EAAEugZ,aAAa,OAAOvza,EAAE,KAAK,CAACyza,MAAMzza,EAAEyza,MAAMD,aAAaxza,EAAEwza,eAAexja,EAAEA,EAAEqoL,QAA2B,OAAnBnlD,GAAE6iF,GAAY,EAAVA,GAAEz+N,QAAU,GAAU+xB,EAAEoxF,KAAK,CAACz6G,EAClgBA,EAAEq4L,OAAO,CAAC,OAAOrlK,EAAEi5B,MAAMunW,KAAIwrB,KAAK31Z,EAAE+1F,OAAO,IAAIh2F,GAAE,EAAGs1Z,GAAG1rZ,GAAE,GAAI3J,EAAEoqZ,MAAM,QAAQ,KAAK,CAAC,IAAIrqZ,EAAE,GAAW,QAARppB,EAAEm3a,GAAG7nV,KAAa,GAAGjmE,EAAE+1F,OAAO,IAAIh2F,GAAE,EAAmB,QAAhBpZ,EAAEhQ,EAAEo0a,eAAuB/qZ,EAAE+qZ,YAAYpka,EAAEqZ,EAAE+1F,OAAO,GAAGs/T,GAAG1rZ,GAAE,GAAI,OAAOA,EAAEi5B,MAAM,WAAWj5B,EAAEwrZ,WAAWlvV,EAAE4zU,YAAY5vR,GAAE,OAAO3J,GAAEtgH,GAAG,UAAU,EAAEmqY,KAAIxgY,EAAEurZ,mBAAmBS,IAAI,aAAahva,IAAIqZ,EAAE+1F,OAAO,IAAIh2F,GAAE,EAAGs1Z,GAAG1rZ,GAAE,GAAI3J,EAAEoqZ,MAAM,SAASzgZ,EAAEsrZ,aAAahvV,EAAE+oG,QAAQhvK,EAAEoxF,MAAMpxF,EAAEoxF,MAAMnrB,IAAa,QAATt/E,EAAEgjB,EAAEzM,MAAcvW,EAAEqoL,QAAQ/oG,EAAEjmE,EAAEoxF,MAAMnrB,EAAEt8D,EAAEzM,KAAK+oE,EAAE,CAAC,OAAG,OAAOt8D,EAAEi5B,MAAY5iC,EAAE2J,EAAEi5B,KAAKj5B,EAAEihQ,UAC9e5qQ,EAAE2J,EAAEi5B,KAAK5iC,EAAEgvK,QAAQrlK,EAAEurZ,mBAAmB/qB,KAAInqY,EAAEgvK,QAAQ,KAAKroL,EAAE+lN,GAAEz+N,QAAQ47I,GAAE6iF,GAAE3sM,EAAI,EAAFpZ,EAAI,EAAI,EAAFA,GAAKqZ,IAAEsgH,GAAEtgH,GAAU,MAAK,KAAK,GAAG,KAAK,GAAG,OAAO41Z,KAAK71Z,EAAE,OAAOC,EAAEgtY,cAAc,OAAOr2Z,GAAG,OAAOA,EAAEq2Z,gBAAgBjtY,IAAIC,EAAE+1F,OAAO,MAAMh2F,GAAG,KAAY,EAAPC,EAAE7jB,MAAQ,KAAQ,WAAHi3a,MAAiB9yS,GAAEtgH,GAAkB,EAAfA,EAAE80Z,eAAiB90Z,EAAE+1F,OAAO,OAAOuqB,GAAEtgH,GAAG,KAAK,KAAK,GAAe,KAAK,GAAG,OAAO,KAAK,MAAMiG,MAAM9F,EAAE,IAAIH,EAAE/hB,KAAM,CAClX,SAAS43a,GAAGl/a,EAAEqpB,GAAS,OAANqoZ,GAAGroZ,GAAUA,EAAE/hB,KAAK,KAAK,EAAE,OAAO6oa,GAAG9mZ,EAAE5sB,OAAO2za,KAAiB,OAAZpwa,EAAEqpB,EAAE+1F,QAAe/1F,EAAE+1F,OAAS,MAAHp/G,EAAS,IAAIqpB,GAAG,KAAK,KAAK,EAAE,OAAO2tZ,KAAKpgN,GAAEk5M,IAAIl5M,GAAEa,IAAG6/M,KAAe,KAAO,OAAjBt3a,EAAEqpB,EAAE+1F,SAAqB,KAAO,IAAFp/G,IAAQqpB,EAAE+1F,OAAS,MAAHp/G,EAAS,IAAIqpB,GAAG,KAAK,KAAK,EAAE,OAAO6tZ,GAAG7tZ,GAAG,KAAK,KAAK,GAA0B,GAAvButM,GAAEb,IAAwB,QAArB/1N,EAAEqpB,EAAEgtY,gBAA2B,OAAOr2Z,EAAEoja,WAAW,CAAC,GAAG,OAAO/5Y,EAAE65Y,UAAU,MAAM5zY,MAAM9F,EAAE,MAAMkpZ,IAAI,CAAW,OAAS,OAAnB1ya,EAAEqpB,EAAE+1F,QAAsB/1F,EAAE+1F,OAAS,MAAHp/G,EAAS,IAAIqpB,GAAG,KAAK,KAAK,GAAG,OAAOutM,GAAEb,IAAG,KAAK,KAAK,EAAE,OAAOihN,KAAK,KAAK,KAAK,GAAG,OAAO7D,GAAG9pZ,EAAE5sB,KAAK46I,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO4nS,KAC1gB,KAAyB,QAAQ,OAAO,KAAK,CArB7C9B,GAAG,SAASn9a,EAAEqpB,GAAG,IAAI,IAAIrZ,EAAEqZ,EAAEoxF,MAAM,OAAOzqG,GAAG,CAAC,GAAG,IAAIA,EAAE1I,KAAK,IAAI0I,EAAE1I,IAAItH,EAAE+oB,YAAY/Y,EAAEizZ,gBAAgB,GAAG,IAAIjzZ,EAAE1I,KAAK,OAAO0I,EAAEyqG,MAAM,CAACzqG,EAAEyqG,MAAM0oT,OAAOnzZ,EAAEA,EAAEA,EAAEyqG,MAAM,QAAQ,CAAC,GAAGzqG,IAAIqZ,EAAE,MAAM,KAAK,OAAOrZ,EAAEqoL,SAAS,CAAC,GAAG,OAAOroL,EAAEmzZ,QAAQnzZ,EAAEmzZ,SAAS95Y,EAAE,OAAOrZ,EAAEA,EAAEmzZ,MAAM,CAACnzZ,EAAEqoL,QAAQ8qO,OAAOnzZ,EAAEmzZ,OAAOnzZ,EAAEA,EAAEqoL,OAAO,CAAC,EAAE+kP,GAAG,WAAW,EACxTC,GAAG,SAASr9a,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAIzsB,EAAEqD,EAAEwya,cAAc,GAAG71a,IAAIysB,EAAE,CAACppB,EAAEqpB,EAAE45Y,UAAU6T,GAAGH,GAAGr/a,SAAS,IAA4Rg4F,EAAxRt8D,EAAE,KAAK,OAAOhjB,GAAG,IAAK,QAAQrT,EAAEk4Z,EAAG70Z,EAAErD,GAAGysB,EAAEyrY,EAAG70Z,EAAEopB,GAAG4J,EAAE,GAAG,MAAM,IAAK,SAASr2B,EAAEq5I,EAAE,CAAC,EAAEr5I,EAAE,CAAC+L,WAAM,IAAS0gB,EAAE4sH,EAAE,CAAC,EAAE5sH,EAAE,CAAC1gB,WAAM,IAASsqB,EAAE,GAAG,MAAM,IAAK,WAAWr2B,EAAEk5Z,GAAG71Z,EAAErD,GAAGysB,EAAEysY,GAAG71Z,EAAEopB,GAAG4J,EAAE,GAAG,MAAM,QAAQ,oBAAoBr2B,EAAErE,SAAS,oBAAoB8wB,EAAE9wB,UAAU0H,EAAE++a,QAAQtQ,IAAyB,IAAI50X,KAAzB48W,GAAGzmZ,EAAEoZ,GAASpZ,EAAE,KAAcrT,EAAE,IAAIysB,EAAEK,eAAeowB,IAAIl9C,EAAE8sB,eAAeowB,IAAI,MAAMl9C,EAAEk9C,GAAG,GAAG,UAAUA,EAAE,CAAC,IAAI54C,EAAEtE,EAAEk9C,GAAG,IAAIy1C,KAAKruF,EAAEA,EAAEwoB,eAAe6lE,KACjft/E,IAAIA,EAAE,CAAC,GAAGA,EAAEs/E,GAAG,GAAG,KAAK,4BAA4Bz1C,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIsiX,EAAG1yY,eAAeowB,GAAG7mB,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAI/O,KAAK41B,EAAE,OAAO,IAAIA,KAAKzwB,EAAE,CAAC,IAAI8J,EAAE9J,EAAEywB,GAAyB,GAAtB54C,EAAE,MAAMtE,EAAEA,EAAEk9C,QAAG,EAAUzwB,EAAEK,eAAeowB,IAAI3mB,IAAIjyB,IAAI,MAAMiyB,GAAG,MAAMjyB,GAAG,GAAG,UAAU44C,EAAE,GAAG54C,EAAE,CAAC,IAAIquF,KAAKruF,GAAGA,EAAEwoB,eAAe6lE,IAAIp8D,GAAGA,EAAEzJ,eAAe6lE,KAAKt/E,IAAIA,EAAE,CAAC,GAAGA,EAAEs/E,GAAG,IAAI,IAAIA,KAAKp8D,EAAEA,EAAEzJ,eAAe6lE,IAAIruF,EAAEquF,KAAKp8D,EAAEo8D,KAAKt/E,IAAIA,EAAE,CAAC,GAAGA,EAAEs/E,GAAGp8D,EAAEo8D,GAAG,MAAMt/E,IAAIgjB,IAAIA,EAAE,IAAIA,EAAE/O,KAAK41B,EACpf7pC,IAAIA,EAAEkjB,MAAM,4BAA4B2mB,GAAG3mB,EAAEA,EAAEA,EAAEvxB,YAAO,EAAOV,EAAEA,EAAEA,EAAEU,YAAO,EAAO,MAAMuxB,GAAGjyB,IAAIiyB,IAAIF,EAAEA,GAAG,IAAI/O,KAAK41B,EAAE3mB,IAAI,aAAa2mB,EAAE,kBAAkB3mB,GAAG,kBAAkBA,IAAIF,EAAEA,GAAG,IAAI/O,KAAK41B,EAAE,GAAG3mB,GAAG,mCAAmC2mB,GAAG,6BAA6BA,IAAIsiX,EAAG1yY,eAAeowB,IAAI,MAAM3mB,GAAG,aAAa2mB,GAAGi8K,GAAE,SAAS91N,GAAGgzB,GAAG/xB,IAAIiyB,IAAIF,EAAE,MAAMA,EAAEA,GAAG,IAAI/O,KAAK41B,EAAE3mB,GAAG,CAACljB,IAAIgjB,EAAEA,GAAG,IAAI/O,KAAK,QAAQjU,GAAG,IAAI6pC,EAAE7mB,GAAK3J,EAAE+qZ,YAAYv6X,KAAExwB,EAAE+1F,OAAO,EAAC,CAAC,EAAEk+T,GAAG,SAASt9a,EAAEqpB,EAAErZ,EAAEoZ,GAAGpZ,IAAIoZ,IAAIC,EAAE+1F,OAAO,EAAE,EAkBlb,IAAI+/T,IAAG,EAAG5mB,IAAE,EAAG6mB,GAAG,oBAAoBC,QAAQA,QAAQv7O,IAAI+0N,GAAE,KAAK,SAASymB,GAAGt/a,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAEhJ,IAAI,GAAG,OAAOgZ,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,KAAK,CAAC,MAAMoZ,GAAGonH,GAAExwI,EAAEqpB,EAAED,EAAE,MAAMpZ,EAAE1Y,QAAQ,IAAI,CAAC,SAASiob,GAAGv/a,EAAEqpB,EAAErZ,GAAG,IAAIA,GAAG,CAAC,MAAMoZ,GAAGonH,GAAExwI,EAAEqpB,EAAED,EAAE,CAAC,CAAC,IAAIo2Z,IAAG,EAIxR,SAASC,GAAGz/a,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEC,EAAE+qZ,YAAyC,GAAG,QAAhChrZ,EAAE,OAAOA,EAAEA,EAAE8vZ,WAAW,MAAiB,CAAC,IAAIv8a,EAAEysB,EAAEA,EAAE0H,KAAK,EAAE,CAAC,IAAIn0B,EAAE2K,IAAItH,KAAKA,EAAE,CAAC,IAAIgzB,EAAEr2B,EAAEmuL,QAAQnuL,EAAEmuL,aAAQ,OAAO,IAAS93J,GAAGusZ,GAAGl2Z,EAAErZ,EAAEgjB,EAAE,CAACr2B,EAAEA,EAAEm0B,IAAI,OAAOn0B,IAAIysB,EAAE,CAAC,CAAC,SAASs2Z,GAAG1/a,EAAEqpB,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAE+qZ,aAAuB/qZ,EAAE6vZ,WAAW,MAAiB,CAAC,IAAIlpa,EAAEqZ,EAAEA,EAAEyH,KAAK,EAAE,CAAC,IAAI9gB,EAAE1I,IAAItH,KAAKA,EAAE,CAAC,IAAIopB,EAAEpZ,EAAE8Z,OAAO9Z,EAAE86K,QAAQ1hK,GAAG,CAACpZ,EAAEA,EAAE8gB,IAAI,OAAO9gB,IAAIqZ,EAAE,CAAC,CAAC,SAASs2Z,GAAG3/a,GAAG,IAAIqpB,EAAErpB,EAAEhJ,IAAI,GAAG,OAAOqyB,EAAE,CAAC,IAAIrZ,EAAEhQ,EAAEija,UAAiBjja,EAAEsH,IAA8BtH,EAAEgQ,EAAE,oBAAoBqZ,EAAEA,EAAErpB,GAAGqpB,EAAE/xB,QAAQ0I,CAAC,CAAC,CAClf,SAAS4/a,GAAG5/a,GAAG,IAAIqpB,EAAErpB,EAAEkja,UAAU,OAAO75Y,IAAIrpB,EAAEkja,UAAU,KAAK0c,GAAGv2Z,IAAIrpB,EAAEy6G,MAAM,KAAKz6G,EAAEgya,UAAU,KAAKhya,EAAEq4L,QAAQ,KAAK,IAAIr4L,EAAEsH,MAAoB,QAAd+hB,EAAErpB,EAAEija,oBAA4B55Y,EAAEimZ,WAAWjmZ,EAAEkmZ,WAAWlmZ,EAAEokZ,WAAWpkZ,EAAEmmZ,WAAWnmZ,EAAEomZ,MAAMzva,EAAEija,UAAU,KAAKjja,EAAEmja,OAAO,KAAKnja,EAAEuza,aAAa,KAAKvza,EAAEwya,cAAc,KAAKxya,EAAEq2Z,cAAc,KAAKr2Z,EAAEkya,aAAa,KAAKlya,EAAEija,UAAU,KAAKjja,EAAEo0a,YAAY,IAAI,CAAC,SAASyL,GAAG7/a,GAAG,OAAO,IAAIA,EAAEsH,KAAK,IAAItH,EAAEsH,KAAK,IAAItH,EAAEsH,GAAG,CACna,SAASw4a,GAAG9/a,GAAGA,EAAE,OAAO,CAAC,KAAK,OAAOA,EAAEq4L,SAAS,CAAC,GAAG,OAAOr4L,EAAEmja,QAAQ0c,GAAG7/a,EAAEmja,QAAQ,OAAO,KAAKnja,EAAEA,EAAEmja,MAAM,CAA2B,IAA1Bnja,EAAEq4L,QAAQ8qO,OAAOnja,EAAEmja,OAAWnja,EAAEA,EAAEq4L,QAAQ,IAAIr4L,EAAEsH,KAAK,IAAItH,EAAEsH,KAAK,KAAKtH,EAAEsH,KAAK,CAAC,GAAW,EAARtH,EAAEo/G,MAAQ,SAASp/G,EAAE,GAAG,OAAOA,EAAEy6G,OAAO,IAAIz6G,EAAEsH,IAAI,SAAStH,EAAOA,EAAEy6G,MAAM0oT,OAAOnja,EAAEA,EAAEA,EAAEy6G,KAAK,CAAC,KAAa,EAARz6G,EAAEo/G,OAAS,OAAOp/G,EAAEija,SAAS,CAAC,CACzT,SAAS8c,GAAG//a,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEppB,EAAEsH,IAAI,GAAG,IAAI8hB,GAAG,IAAIA,EAAEppB,EAAEA,EAAEija,UAAU55Y,EAAE,IAAIrZ,EAAEyuF,SAASzuF,EAAE8xF,WAAWiF,aAAa/mG,EAAEqpB,GAAGrZ,EAAE+2F,aAAa/mG,EAAEqpB,IAAI,IAAIrZ,EAAEyuF,UAAUp1E,EAAErZ,EAAE8xF,YAAaiF,aAAa/mG,EAAEgQ,IAAKqZ,EAAErZ,GAAI+Y,YAAY/oB,GAA4B,QAAxBgQ,EAAEA,EAAEgwa,2BAA8B,IAAShwa,GAAG,OAAOqZ,EAAE01Z,UAAU11Z,EAAE01Z,QAAQtQ,UAAU,GAAG,IAAIrlZ,GAAc,QAAVppB,EAAEA,EAAEy6G,OAAgB,IAAIslU,GAAG//a,EAAEqpB,EAAErZ,GAAGhQ,EAAEA,EAAEq4L,QAAQ,OAAOr4L,GAAG+/a,GAAG//a,EAAEqpB,EAAErZ,GAAGhQ,EAAEA,EAAEq4L,OAAO,CAC1X,SAAS4nP,GAAGjgb,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEppB,EAAEsH,IAAI,GAAG,IAAI8hB,GAAG,IAAIA,EAAEppB,EAAEA,EAAEija,UAAU55Y,EAAErZ,EAAE+2F,aAAa/mG,EAAEqpB,GAAGrZ,EAAE+Y,YAAY/oB,QAAQ,GAAG,IAAIopB,GAAc,QAAVppB,EAAEA,EAAEy6G,OAAgB,IAAIwlU,GAAGjgb,EAAEqpB,EAAErZ,GAAGhQ,EAAEA,EAAEq4L,QAAQ,OAAOr4L,GAAGigb,GAAGjgb,EAAEqpB,EAAErZ,GAAGhQ,EAAEA,EAAEq4L,OAAO,CAAC,IAAIz1C,GAAE,KAAKs9R,IAAG,EAAG,SAASC,GAAGngb,EAAEqpB,EAAErZ,GAAG,IAAIA,EAAEA,EAAEyqG,MAAM,OAAOzqG,GAAGowa,GAAGpgb,EAAEqpB,EAAErZ,GAAGA,EAAEA,EAAEqoL,OAAO,CACnR,SAAS+nP,GAAGpgb,EAAEqpB,EAAErZ,GAAG,GAAGsqH,IAAI,oBAAoBA,GAAG+lT,qBAAqB,IAAI/lT,GAAG+lT,qBAAqBliB,GAAGnuZ,EAAE,CAAC,MAAM/O,GAAG,CAAC,OAAO+O,EAAE1I,KAAK,KAAK,EAAEixZ,IAAG+mB,GAAGtva,EAAEqZ,GAAG,KAAK,EAAE,IAAID,EAAEw5H,GAAEjmJ,EAAEujb,GAAGt9R,GAAE,KAAKu9R,GAAGngb,EAAEqpB,EAAErZ,GAAOkwa,GAAGvjb,EAAE,QAATimJ,GAAEx5H,KAAkB82Z,IAAIlgb,EAAE4iJ,GAAE5yI,EAAEA,EAAEizZ,UAAU,IAAIjja,EAAEy+F,SAASz+F,EAAE8hG,WAAW74E,YAAYjZ,GAAGhQ,EAAEipB,YAAYjZ,IAAI4yI,GAAE35H,YAAYjZ,EAAEizZ,YAAY,MAAM,KAAK,GAAG,OAAOrgR,KAAIs9R,IAAIlgb,EAAE4iJ,GAAE5yI,EAAEA,EAAEizZ,UAAU,IAAIjja,EAAEy+F,SAASywU,GAAGlva,EAAE8hG,WAAW9xF,GAAG,IAAIhQ,EAAEy+F,UAAUywU,GAAGlva,EAAEgQ,GAAG4wZ,GAAG5ga,IAAIkva,GAAGtsR,GAAE5yI,EAAEizZ,YAAY,MAAM,KAAK,EAAE75Y,EAAEw5H,GAAEjmJ,EAAEujb,GAAGt9R,GAAE5yI,EAAEizZ,UAAU4B,cAAcqb,IAAG,EAClfC,GAAGngb,EAAEqpB,EAAErZ,GAAG4yI,GAAEx5H,EAAE82Z,GAAGvjb,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI47Z,KAAoB,QAAhBnvY,EAAEpZ,EAAEoka,cAAsC,QAAfhrZ,EAAEA,EAAE8vZ,aAAsB,CAACv8a,EAAEysB,EAAEA,EAAE0H,KAAK,EAAE,CAAC,IAAIkC,EAAEr2B,EAAE2yF,EAAEt8D,EAAE83J,QAAQ93J,EAAEA,EAAE1rB,SAAI,IAASgoF,IAAI,KAAO,EAAFt8D,IAAe,KAAO,EAAFA,KAAfusZ,GAAGvva,EAAEqZ,EAAEimE,GAAyB3yF,EAAEA,EAAEm0B,IAAI,OAAOn0B,IAAIysB,EAAE,CAAC+2Z,GAAGngb,EAAEqpB,EAAErZ,GAAG,MAAM,KAAK,EAAE,IAAIuoZ,KAAI+mB,GAAGtva,EAAEqZ,GAAiB,oBAAdD,EAAEpZ,EAAEizZ,WAAgCjxY,sBAAsB,IAAI5I,EAAEjoB,MAAM6O,EAAEwia,cAAcppZ,EAAEpzB,MAAMga,EAAEqmZ,cAAcjtY,EAAE4I,sBAAsB,CAAC,MAAM/wB,GAAGuvI,GAAExgI,EAAEqZ,EAAEpoB,EAAE,CAACk/a,GAAGngb,EAAEqpB,EAAErZ,GAAG,MAAM,KAAK,GAAGmwa,GAAGngb,EAAEqpB,EAAErZ,GAAG,MAAM,KAAK,GAAU,EAAPA,EAAExK,MAAQ+yZ,IAAGnvY,EAAEmvY,KAAI,OAChfvoZ,EAAEqmZ,cAAc8pB,GAAGngb,EAAEqpB,EAAErZ,GAAGuoZ,GAAEnvY,GAAG+2Z,GAAGngb,EAAEqpB,EAAErZ,GAAG,MAAM,QAAQmwa,GAAGngb,EAAEqpB,EAAErZ,GAAG,CAAC,SAASswa,GAAGtgb,GAAG,IAAIqpB,EAAErpB,EAAEo0a,YAAY,GAAG,OAAO/qZ,EAAE,CAACrpB,EAAEo0a,YAAY,KAAK,IAAIpka,EAAEhQ,EAAEija,UAAU,OAAOjzZ,IAAIA,EAAEhQ,EAAEija,UAAU,IAAImc,IAAI/1Z,EAAEzX,SAAQ,SAASyX,GAAG,IAAID,EAAEm3Z,GAAGzuZ,KAAK,KAAK9xB,EAAEqpB,GAAGrZ,EAAEk4C,IAAI7+B,KAAKrZ,EAAE0wB,IAAIrX,GAAGA,EAAE3xB,KAAK0xB,EAAEA,GAAG,GAAE,CAAC,CACzQ,SAASo3Z,GAAGxgb,EAAEqpB,GAAG,IAAIrZ,EAAEqZ,EAAE2oZ,UAAU,GAAG,OAAOhia,EAAE,IAAI,IAAIoZ,EAAE,EAAEA,EAAEpZ,EAAElL,OAAOskB,IAAI,CAAC,IAAIzsB,EAAEqT,EAAEoZ,GAAG,IAAI,IAAI4J,EAAEhzB,EAAEsvF,EAAEjmE,EAAEpoB,EAAEquF,EAAEtvF,EAAE,KAAK,OAAOiB,GAAG,CAAC,OAAOA,EAAEqG,KAAK,KAAK,EAAEs7I,GAAE3hJ,EAAEgia,UAAUid,IAAG,EAAG,MAAMlgb,EAAE,KAAK,EAA4C,KAAK,EAAE4iJ,GAAE3hJ,EAAEgia,UAAU4B,cAAcqb,IAAG,EAAG,MAAMlgb,EAAEiB,EAAEA,EAAEkia,MAAM,CAAC,GAAG,OAAOvgR,GAAE,MAAMtzH,MAAM9F,EAAE,MAAM42Z,GAAGptZ,EAAEs8D,EAAE3yF,GAAGimJ,GAAE,KAAKs9R,IAAG,EAAG,IAAIhtZ,EAAEv2B,EAAEuma,UAAU,OAAOhwY,IAAIA,EAAEiwY,OAAO,MAAMxma,EAAEwma,OAAO,IAAI,CAAC,MAAMtpX,GAAG22F,GAAE7zI,EAAE0sB,EAAEwwB,EAAE,CAAC,CAAC,GAAkB,MAAfxwB,EAAE80Z,aAAmB,IAAI90Z,EAAEA,EAAEoxF,MAAM,OAAOpxF,GAAGo3Z,GAAGp3Z,EAAErpB,GAAGqpB,EAAEA,EAAEgvK,OAAO,CACje,SAASooP,GAAGzgb,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAEkja,UAAU95Y,EAAEppB,EAAEo/G,MAAM,OAAOp/G,EAAEsH,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAiB,GAAdk5a,GAAGn3Z,EAAErpB,GAAG0gb,GAAG1gb,GAAQ,EAAFopB,EAAI,CAAC,IAAIq2Z,GAAG,EAAEz/a,EAAEA,EAAEmja,QAAQuc,GAAG,EAAE1/a,EAAE,CAAC,MAAMH,GAAG2wI,GAAExwI,EAAEA,EAAEmja,OAAOtja,EAAE,CAAC,IAAI4/a,GAAG,EAAEz/a,EAAEA,EAAEmja,OAAO,CAAC,MAAMtja,GAAG2wI,GAAExwI,EAAEA,EAAEmja,OAAOtja,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE2gb,GAAGn3Z,EAAErpB,GAAG0gb,GAAG1gb,GAAK,IAAFopB,GAAO,OAAOpZ,GAAGsva,GAAGtva,EAAEA,EAAEmzZ,QAAQ,MAAM,KAAK,EAAgD,GAA9Cqd,GAAGn3Z,EAAErpB,GAAG0gb,GAAG1gb,GAAK,IAAFopB,GAAO,OAAOpZ,GAAGsva,GAAGtva,EAAEA,EAAEmzZ,QAAmB,GAARnja,EAAEo/G,MAAS,CAAC,IAAIziH,EAAEqD,EAAEija,UAAU,IAAI/M,GAAGv5Z,EAAE,GAAG,CAAC,MAAMkD,GAAG2wI,GAAExwI,EAAEA,EAAEmja,OAAOtja,EAAE,CAAC,CAAC,GAAK,EAAFupB,GAAoB,OAAdzsB,EAAEqD,EAAEija,WAAmB,CAAC,IAAIjwY,EAAEhzB,EAAEwya,cAAcljV,EAAE,OAAOt/E,EAAEA,EAAEwia,cAAcx/Y,EAAE/xB,EAAEjB,EAAEvD,KAAKy2B,EAAElzB,EAAEo0a,YACje,GAAnBp0a,EAAEo0a,YAAY,KAAQ,OAAOlhZ,EAAE,IAAI,UAAUjyB,GAAG,UAAU+xB,EAAEv2B,MAAM,MAAMu2B,EAAEj6B,MAAMm8Z,EAAGv4Z,EAAEq2B,GAAG0jY,GAAGz1Z,EAAEquF,GAAG,IAAIz1C,EAAE68W,GAAGz1Z,EAAE+xB,GAAG,IAAIs8D,EAAE,EAAEA,EAAEp8D,EAAEpuB,OAAOwqF,GAAG,EAAE,CAAC,IAAI7wC,EAAEvrB,EAAEo8D,GAAG7rF,EAAEyvB,EAAEo8D,EAAE,GAAG,UAAU7wC,EAAEg3D,GAAG94G,EAAE8G,GAAG,4BAA4Bg7C,EAAEy9W,GAAGv/Z,EAAE8G,GAAG,aAAag7C,EAAEy3W,GAAGv5Z,EAAE8G,GAAGqvZ,EAAGn2Z,EAAE8hD,EAAEh7C,EAAEo2C,EAAE,CAAC,OAAO54C,GAAG,IAAK,QAAQkuG,EAAGxyG,EAAEq2B,GAAG,MAAM,IAAK,WAAW+iY,GAAGp5Z,EAAEq2B,GAAG,MAAM,IAAK,SAAS,IAAImkD,EAAEx6E,EAAE0la,cAAcwc,YAAYlib,EAAE0la,cAAcwc,cAAc7rZ,EAAEwP,SAAS,IAAI8wD,EAAEtgE,EAAEtqB,MAAM,MAAM4qF,EAAEsiU,GAAGj5Z,IAAIq2B,EAAEwP,SAAS8wD,GAAE,GAAInc,MAAMnkD,EAAEwP,WAAW,MAAMxP,EAAEx5B,aAAao8Z,GAAGj5Z,IAAIq2B,EAAEwP,SACnfxP,EAAEx5B,cAAa,GAAIo8Z,GAAGj5Z,IAAIq2B,EAAEwP,SAASxP,EAAEwP,SAAS,GAAG,IAAG,IAAK7lC,EAAE4ya,IAAIv8Y,CAAC,CAAC,MAAMnzB,GAAG2wI,GAAExwI,EAAEA,EAAEmja,OAAOtja,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAd2gb,GAAGn3Z,EAAErpB,GAAG0gb,GAAG1gb,GAAQ,EAAFopB,EAAI,CAAC,GAAG,OAAOppB,EAAEija,UAAU,MAAM3zY,MAAM9F,EAAE,MAAM7sB,EAAEqD,EAAEija,UAAUjwY,EAAEhzB,EAAEwya,cAAc,IAAI71a,EAAEkgK,UAAU7pI,CAAC,CAAC,MAAMnzB,GAAG2wI,GAAExwI,EAAEA,EAAEmja,OAAOtja,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAd2gb,GAAGn3Z,EAAErpB,GAAG0gb,GAAG1gb,GAAQ,EAAFopB,GAAK,OAAOpZ,GAAGA,EAAEqmZ,cAAcuO,aAAa,IAAIhE,GAAGv3Y,EAAEw7Y,cAAc,CAAC,MAAMhla,GAAG2wI,GAAExwI,EAAEA,EAAEmja,OAAOtja,EAAE,CAAC,MAAM,KAAK,EAG4G,QAAQ2gb,GAAGn3Z,EACnfrpB,GAAG0gb,GAAG1gb,SAJ4Y,KAAK,GAAGwgb,GAAGn3Z,EAAErpB,GAAG0gb,GAAG1gb,GAAqB,MAAlBrD,EAAEqD,EAAEy6G,OAAQ2E,QAAapsF,EAAE,OAAOr2B,EAAE05Z,cAAc15Z,EAAEsma,UAAUx5F,SAASz2S,GAAGA,GAClf,OAAOr2B,EAAEuma,WAAW,OAAOvma,EAAEuma,UAAU7M,gBAAgBsqB,GAAGntB,OAAQ,EAAFpqY,GAAKk3Z,GAAGtgb,GAAG,MAAM,KAAK,GAAsF,GAAnFy+C,EAAE,OAAOzuC,GAAG,OAAOA,EAAEqmZ,cAAqB,EAAPr2Z,EAAEwF,MAAQ+yZ,IAAG1+W,EAAE0+W,KAAI95W,EAAE+hY,GAAGn3Z,EAAErpB,GAAGu4Z,GAAE1+W,GAAG2mY,GAAGn3Z,EAAErpB,GAAG0gb,GAAG1gb,GAAQ,KAAFopB,EAAO,CAA0B,GAAzBywB,EAAE,OAAO75C,EAAEq2Z,eAAkBr2Z,EAAEija,UAAUx5F,SAAS5vR,KAAK4E,GAAG,KAAY,EAAPz+C,EAAEwF,MAAQ,IAAIqzZ,GAAE74Z,EAAEy+C,EAAEz+C,EAAEy6G,MAAM,OAAOh8D,GAAG,CAAC,IAAIh7C,EAAEo1Z,GAAEp6W,EAAE,OAAOo6W,IAAG,CAAe,OAAVvlU,GAAJnc,EAAE0hV,IAAMp+S,MAAatjC,EAAE7vE,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAGm4a,GAAG,EAAEtoW,EAAEA,EAAEgsV,QAAQ,MAAM,KAAK,EAAEmc,GAAGnoW,EAAEA,EAAEgsV,QAAQ,IAAIz/Z,EAAEyzE,EAAE8rV,UAAU,GAAG,oBAAoBv/Z,EAAEsuB,qBAAqB,CAAC5I,EAAE+tD,EAAEnnE,EAAEmnE,EAAEgsV,OAAO,IAAI95Y,EAAED,EAAE1lB,EAAEvC,MACpfkoB,EAAEmpZ,cAAc9ua,EAAE1N,MAAMqzB,EAAEgtY,cAAc3yZ,EAAEsuB,sBAAsB,CAAC,MAAMnyB,GAAG2wI,GAAEpnH,EAAEpZ,EAAEnQ,EAAE,CAAC,CAAC,MAAM,KAAK,EAAEy/a,GAAGnoW,EAAEA,EAAEgsV,QAAQ,MAAM,KAAK,GAAG,GAAG,OAAOhsV,EAAEk/U,cAAc,CAACuqB,GAAGn9a,GAAG,QAAQ,EAAE,OAAO6vF,GAAGA,EAAE6vU,OAAOhsV,EAAE0hV,GAAEvlU,GAAGstV,GAAGn9a,EAAE,CAACg7C,EAAEA,EAAE45I,OAAO,CAACr4L,EAAE,IAAIy+C,EAAE,KAAKh7C,EAAEzD,IAAI,CAAC,GAAG,IAAIyD,EAAE6D,KAAK,GAAG,OAAOm3C,EAAE,CAACA,EAAEh7C,EAAE,IAAI9G,EAAE8G,EAAEw/Z,UAAUppX,EAAa,oBAAV7mB,EAAEr2B,EAAEhG,OAA4Bs2G,YAAYj6E,EAAEi6E,YAAY,UAAU,OAAO,aAAaj6E,EAAE6zE,QAAQ,QAAS5lG,EAAEwC,EAAEw/Z,UAAkC3zU,OAAE,KAA1Bp8D,EAAEzvB,EAAE+ua,cAAc77a,QAAoB,OAAOu8B,GAAGA,EAAEzJ,eAAe,WAAWyJ,EAAE2zE,QAAQ,KAAK5lG,EAAEtK,MAAMkwG,QACzf0vT,GAAG,UAAUjnU,GAAG,CAAC,MAAMzvF,GAAG2wI,GAAExwI,EAAEA,EAAEmja,OAAOtja,EAAE,CAAC,OAAO,GAAG,IAAI4D,EAAE6D,KAAK,GAAG,OAAOm3C,EAAE,IAAIh7C,EAAEw/Z,UAAUpmQ,UAAUhjH,EAAE,GAAGp2C,EAAE+ua,aAAa,CAAC,MAAM3ya,GAAG2wI,GAAExwI,EAAEA,EAAEmja,OAAOtja,EAAE,OAAO,IAAI,KAAK4D,EAAE6D,KAAK,KAAK7D,EAAE6D,KAAK,OAAO7D,EAAE4yZ,eAAe5yZ,IAAIzD,IAAI,OAAOyD,EAAEg3G,MAAM,CAACh3G,EAAEg3G,MAAM0oT,OAAO1/Z,EAAEA,EAAEA,EAAEg3G,MAAM,QAAQ,CAAC,GAAGh3G,IAAIzD,EAAE,MAAMA,EAAE,KAAK,OAAOyD,EAAE40L,SAAS,CAAC,GAAG,OAAO50L,EAAE0/Z,QAAQ1/Z,EAAE0/Z,SAASnja,EAAE,MAAMA,EAAEy+C,IAAIh7C,IAAIg7C,EAAE,MAAMh7C,EAAEA,EAAE0/Z,MAAM,CAAC1kX,IAAIh7C,IAAIg7C,EAAE,MAAMh7C,EAAE40L,QAAQ8qO,OAAO1/Z,EAAE0/Z,OAAO1/Z,EAAEA,EAAE40L,OAAO,CAAC,CAAC,MAAM,KAAK,GAAGmoP,GAAGn3Z,EAAErpB,GAAG0gb,GAAG1gb,GAAK,EAAFopB,GAAKk3Z,GAAGtgb,GAAS,KAAK,IACtd,CAAC,SAAS0gb,GAAG1gb,GAAG,IAAIqpB,EAAErpB,EAAEo/G,MAAM,GAAK,EAAF/1F,EAAI,CAAC,IAAIrpB,EAAE,CAAC,IAAI,IAAIgQ,EAAEhQ,EAAEmja,OAAO,OAAOnzZ,GAAG,CAAC,GAAG6va,GAAG7va,GAAG,CAAC,IAAIoZ,EAAEpZ,EAAE,MAAMhQ,CAAC,CAACgQ,EAAEA,EAAEmzZ,MAAM,CAAC,MAAM7zY,MAAM9F,EAAE,KAAM,CAAC,OAAOJ,EAAE9hB,KAAK,KAAK,EAAE,IAAI3K,EAAEysB,EAAE65Y,UAAkB,GAAR75Y,EAAEg2F,QAAW82S,GAAGv5Z,EAAE,IAAIysB,EAAEg2F,QAAQ,IAAgB6gU,GAAGjgb,EAAT8/a,GAAG9/a,GAAUrD,GAAG,MAAM,KAAK,EAAE,KAAK,EAAE,IAAI2yF,EAAElmE,EAAE65Y,UAAU4B,cAAsBkb,GAAG//a,EAAT8/a,GAAG9/a,GAAUsvF,GAAG,MAAM,QAAQ,MAAMhgE,MAAM9F,EAAE,MAAO,CAAC,MAAM0J,GAAGs9G,GAAExwI,EAAEA,EAAEmja,OAAOjwY,EAAE,CAAClzB,EAAEo/G,QAAQ,CAAC,CAAG,KAAF/1F,IAASrpB,EAAEo/G,QAAQ,KAAK,CAAC,SAASyhU,GAAG7gb,EAAEqpB,EAAErZ,GAAG6oZ,GAAE74Z,EAAE8gb,GAAG9gb,EAAEqpB,EAAErZ,EAAE,CACvb,SAAS8wa,GAAG9gb,EAAEqpB,EAAErZ,GAAG,IAAI,IAAIoZ,EAAE,KAAY,EAAPppB,EAAEwF,MAAQ,OAAOqzZ,IAAG,CAAC,IAAIl8Z,EAAEk8Z,GAAE7lY,EAAEr2B,EAAE89G,MAAM,GAAG,KAAK99G,EAAE2K,KAAK8hB,EAAE,CAAC,IAAIkmE,EAAE,OAAO3yF,EAAE05Z,eAAe8oB,GAAG,IAAI7vV,EAAE,CAAC,IAAIruF,EAAEtE,EAAEuma,UAAUhwY,EAAE,OAAOjyB,GAAG,OAAOA,EAAEo1Z,eAAekC,GAAEt3Z,EAAEk+a,GAAG,IAAItlY,EAAE0+W,GAAO,GAAL4mB,GAAG7vV,GAAMipU,GAAErlY,KAAK2mB,EAAE,IAAIg/W,GAAEl8Z,EAAE,OAAOk8Z,IAAO3lY,GAAJo8D,EAAEupU,IAAMp+S,MAAM,KAAKnrB,EAAEhoF,KAAK,OAAOgoF,EAAE+mU,cAAc0qB,GAAGpkb,GAAG,OAAOu2B,GAAGA,EAAEiwY,OAAO7zU,EAAEupU,GAAE3lY,GAAG6tZ,GAAGpkb,GAAG,KAAK,OAAOq2B,GAAG6lY,GAAE7lY,EAAE8tZ,GAAG9tZ,EAAE3J,EAAErZ,GAAGgjB,EAAEA,EAAEqlK,QAAQwgO,GAAEl8Z,EAAEwib,GAAGl+a,EAAEs3Z,GAAE1+W,CAAC,CAACmnY,GAAGhhb,EAAM,MAAM,KAAoB,KAAfrD,EAAEwhb,eAAoB,OAAOnrZ,GAAGA,EAAEmwY,OAAOxma,EAAEk8Z,GAAE7lY,GAAGguZ,GAAGhhb,EAAM,CAAC,CACvc,SAASghb,GAAGhhb,GAAG,KAAK,OAAO64Z,IAAG,CAAC,IAAIxvY,EAAEwvY,GAAE,GAAG,KAAa,KAARxvY,EAAE+1F,OAAY,CAAC,IAAIpvG,EAAEqZ,EAAE65Y,UAAU,IAAI,GAAG,KAAa,KAAR75Y,EAAE+1F,OAAY,OAAO/1F,EAAE/hB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGixZ,IAAGmnB,GAAG,EAAEr2Z,GAAG,MAAM,KAAK,EAAE,IAAID,EAAEC,EAAE45Y,UAAU,GAAW,EAAR55Y,EAAE+1F,QAAUm5S,GAAE,GAAG,OAAOvoZ,EAAEoZ,EAAE2E,wBAAwB,CAAC,IAAIpxB,EAAE0sB,EAAEsmY,cAActmY,EAAE5sB,KAAKuT,EAAEwia,cAAcK,GAAGxpZ,EAAE5sB,KAAKuT,EAAEwia,eAAeppZ,EAAE6E,mBAAmBtxB,EAAEqT,EAAEqmZ,cAAcjtY,EAAE63Z,oCAAoC,CAAC,IAAIjuZ,EAAE3J,EAAE+qZ,YAAY,OAAOphZ,GAAGiiZ,GAAG5rZ,EAAE2J,EAAE5J,GAAG,MAAM,KAAK,EAAE,IAAIkmE,EAAEjmE,EAAE+qZ,YAAY,GAAG,OAAO9kV,EAAE,CAAQ,GAAPt/E,EAAE,KAAQ,OAAOqZ,EAAEoxF,MAAM,OAAOpxF,EAAEoxF,MAAMnzG,KAAK,KAAK,EACvf,KAAK,EAAE0I,EAAEqZ,EAAEoxF,MAAMwoT,UAAUgS,GAAG5rZ,EAAEimE,EAAEt/E,EAAE,CAAC,MAAM,KAAK,EAAE,IAAI/O,EAAEooB,EAAE45Y,UAAU,GAAG,OAAOjzZ,GAAW,EAARqZ,EAAE+1F,MAAQ,CAACpvG,EAAE/O,EAAE,IAAIiyB,EAAE7J,EAAEmpZ,cAAc,OAAOnpZ,EAAE5sB,MAAM,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWy2B,EAAEytP,WAAW3wQ,EAAEkb,QAAQ,MAAM,IAAK,MAAMgI,EAAEzjB,MAAMO,EAAEP,IAAIyjB,EAAEzjB,KAAK,CAAC,MAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAyJ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAhM,KAAK,GAAG,GAAG,OAAO4Z,EAAEgtY,cAAc,CAAC,IAAIx8W,EAAExwB,EAAE65Y,UAAU,GAAG,OAAOrpX,EAAE,CAAC,IAAI4E,EAAE5E,EAAEw8W,cAAc,GAAG,OAAO53W,EAAE,CAAC,IAAIh7C,EAAEg7C,EAAE2kX,WAAW,OAAO3/Z,GAAGm9Z,GAAGn9Z,EAAE,CAAC,CAAC,CAAC,MAC5c,QAAQ,MAAM6rB,MAAM9F,EAAE,MAAO+uY,IAAW,IAARlvY,EAAE+1F,OAAWugU,GAAGt2Z,EAAE,CAAC,MAAM8tD,GAAGq5D,GAAEnnH,EAAEA,EAAE85Y,OAAOhsV,EAAE,CAAC,CAAC,GAAG9tD,IAAIrpB,EAAE,CAAC64Z,GAAE,KAAK,KAAK,CAAa,GAAG,QAAf7oZ,EAAEqZ,EAAEgvK,SAAoB,CAACroL,EAAEmzZ,OAAO95Y,EAAE85Y,OAAOtK,GAAE7oZ,EAAE,KAAK,CAAC6oZ,GAAExvY,EAAE85Y,MAAM,CAAC,CAAC,SAASyd,GAAG5gb,GAAG,KAAK,OAAO64Z,IAAG,CAAC,IAAIxvY,EAAEwvY,GAAE,GAAGxvY,IAAIrpB,EAAE,CAAC64Z,GAAE,KAAK,KAAK,CAAC,IAAI7oZ,EAAEqZ,EAAEgvK,QAAQ,GAAG,OAAOroL,EAAE,CAACA,EAAEmzZ,OAAO95Y,EAAE85Y,OAAOtK,GAAE7oZ,EAAE,KAAK,CAAC6oZ,GAAExvY,EAAE85Y,MAAM,CAAC,CACvS,SAAS4d,GAAG/gb,GAAG,KAAK,OAAO64Z,IAAG,CAAC,IAAIxvY,EAAEwvY,GAAE,IAAI,OAAOxvY,EAAE/hB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI0I,EAAEqZ,EAAE85Y,OAAO,IAAIuc,GAAG,EAAEr2Z,EAAE,CAAC,MAAM6J,GAAGs9G,GAAEnnH,EAAErZ,EAAEkjB,EAAE,CAAC,MAAM,KAAK,EAAE,IAAI9J,EAAEC,EAAE45Y,UAAU,GAAG,oBAAoB75Y,EAAE2E,kBAAkB,CAAC,IAAIpxB,EAAE0sB,EAAE85Y,OAAO,IAAI/5Y,EAAE2E,mBAAmB,CAAC,MAAMmF,GAAGs9G,GAAEnnH,EAAE1sB,EAAEu2B,EAAE,CAAC,CAAC,IAAIF,EAAE3J,EAAE85Y,OAAO,IAAIwc,GAAGt2Z,EAAE,CAAC,MAAM6J,GAAGs9G,GAAEnnH,EAAE2J,EAAEE,EAAE,CAAC,MAAM,KAAK,EAAE,IAAIo8D,EAAEjmE,EAAE85Y,OAAO,IAAIwc,GAAGt2Z,EAAE,CAAC,MAAM6J,GAAGs9G,GAAEnnH,EAAEimE,EAAEp8D,EAAE,EAAE,CAAC,MAAMA,GAAGs9G,GAAEnnH,EAAEA,EAAE85Y,OAAOjwY,EAAE,CAAC,GAAG7J,IAAIrpB,EAAE,CAAC64Z,GAAE,KAAK,KAAK,CAAC,IAAI53Z,EAAEooB,EAAEgvK,QAAQ,GAAG,OAAOp3L,EAAE,CAACA,EAAEkia,OAAO95Y,EAAE85Y,OAAOtK,GAAE53Z,EAAE,KAAK,CAAC43Z,GAAExvY,EAAE85Y,MAAM,CAAC,CAC7d,IAwBkN+d,GAxB9MC,GAAGppa,KAAK4O,KAAKy6Z,GAAG9vY,EAAGqmX,uBAAuBx/P,GAAG7mH,EAAGsqY,kBAAkByF,GAAG/vY,EAAGwzX,wBAAwB14L,GAAE,EAAEuqL,GAAE,KAAK9zQ,GAAE,KAAKypF,GAAE,EAAEmwM,GAAG,EAAED,GAAG5M,GAAG,GAAG35M,GAAE,EAAEqrN,GAAG,KAAKtM,GAAG,EAAEuM,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,GAAG,KAAKf,GAAG,EAAE3B,GAAG1mU,IAASqpU,GAAG,KAAK3G,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAKwG,IAAG,EAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAE,SAAS/1M,KAAI,OAAO,KAAO,EAAFC,IAAKonL,MAAK,IAAIyuB,GAAGA,GAAGA,GAAGzuB,IAAG,CAChU,SAAS8hB,GAAGt1a,GAAG,OAAG,KAAY,EAAPA,EAAEwF,MAAe,EAAK,KAAO,EAAF4mO,KAAM,IAAIE,GAASA,IAAGA,GAAK,OAAOsmM,GAAG/zK,YAAkB,IAAIqjL,KAAKA,GAAG5d,MAAM4d,IAAU,KAAPlib,EAAEmzZ,IAAkBnzZ,EAAiBA,OAAE,KAAjBA,EAAEhE,OAAO7E,OAAmB,GAAG+pa,GAAGlha,EAAEvD,KAAc,CAAC,SAAS84a,GAAGv1a,EAAEqpB,EAAErZ,EAAEoZ,GAAG,GAAG,GAAG24Z,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAK1yZ,MAAM9F,EAAE,MAAMy1Y,GAAGj/Z,EAAEgQ,EAAEoZ,GAAM,KAAO,EAAFgjN,KAAMpsO,IAAI22Z,KAAE32Z,IAAI22Z,KAAI,KAAO,EAAFvqL,MAAOm1M,IAAIvxa,GAAG,IAAIimN,IAAGksN,GAAGnib,EAAEssO,KAAI81M,GAAGpib,EAAEopB,GAAG,IAAIpZ,GAAG,IAAIo8N,IAAG,KAAY,EAAP/iN,EAAE7jB,QAAUw5a,GAAGxrB,KAAI,IAAIkd,IAAIG,MAAK,CAC1Y,SAASuR,GAAGpib,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAEqib,cA5MzB,SAAYrib,EAAEqpB,GAAG,IAAI,IAAIrZ,EAAEhQ,EAAEika,eAAe76Y,EAAEppB,EAAEkka,YAAYvna,EAAEqD,EAAEsib,gBAAgBtvZ,EAAEhzB,EAAEgka,aAAa,EAAEhxY,GAAG,CAAC,IAAIs8D,EAAE,GAAGivU,GAAGvrY,GAAG/xB,EAAE,GAAGquF,EAAEp8D,EAAEv2B,EAAE2yF,IAAO,IAAIp8D,EAAM,KAAKjyB,EAAE+O,IAAI,KAAK/O,EAAEmoB,KAAGzsB,EAAE2yF,GAAG+0U,GAAGpja,EAAEooB,IAAQ6J,GAAG7J,IAAIrpB,EAAEuib,cAActhb,GAAG+xB,IAAI/xB,CAAC,CAAC,CA4MnL69Z,CAAG9+Z,EAAEqpB,GAAG,IAAID,EAAEy1Y,GAAG7+Z,EAAEA,IAAI22Z,GAAErqL,GAAE,GAAG,GAAG,IAAIljN,EAAE,OAAOpZ,GAAG2tZ,GAAG3tZ,GAAGhQ,EAAEqib,aAAa,KAAKrib,EAAEwib,iBAAiB,OAAO,GAAGn5Z,EAAED,GAAGA,EAAEppB,EAAEwib,mBAAmBn5Z,EAAE,CAAgB,GAAf,MAAMrZ,GAAG2tZ,GAAG3tZ,GAAM,IAAIqZ,EAAE,IAAIrpB,EAAEsH,IA7IsJ,SAAYtH,GAAG0wa,IAAG,EAAGE,GAAG5wa,EAAE,CA6I5Kyib,CAAGC,GAAG5wZ,KAAK,KAAK9xB,IAAI4wa,GAAG8R,GAAG5wZ,KAAK,KAAK9xB,IAAIgva,IAAG,WAAW,KAAO,EAAF5iM,KAAMykM,IAAI,IAAG7ga,EAAE,SAAS,CAAC,OAAOovZ,GAAGh2Y,IAAI,KAAK,EAAEpZ,EAAE8tZ,GAAG,MAAM,KAAK,EAAE9tZ,EAAE+tZ,GAAG,MAAM,KAAK,GAAwC,QAAQ/tZ,EAAEguZ,SAApC,KAAK,UAAUhuZ,EAAEkuZ,GAAsBluZ,EAAE2ya,GAAG3ya,EAAE4ya,GAAG9wZ,KAAK,KAAK9xB,GAAG,CAACA,EAAEwib,iBAAiBn5Z,EAAErpB,EAAEqib,aAAarya,CAAC,CAAC,CAC7c,SAAS4ya,GAAG5ib,EAAEqpB,GAAc,GAAX44Z,IAAI,EAAEC,GAAG,EAAK,KAAO,EAAF91M,IAAK,MAAM98M,MAAM9F,EAAE,MAAM,IAAIxZ,EAAEhQ,EAAEqib,aAAa,GAAGQ,MAAM7ib,EAAEqib,eAAerya,EAAE,OAAO,KAAK,IAAIoZ,EAAEy1Y,GAAG7+Z,EAAEA,IAAI22Z,GAAErqL,GAAE,GAAG,GAAG,IAAIljN,EAAE,OAAO,KAAK,GAAG,KAAO,GAAFA,IAAO,KAAKA,EAAEppB,EAAEuib,eAAel5Z,EAAEA,EAAEy5Z,GAAG9ib,EAAEopB,OAAO,CAACC,EAAED,EAAE,IAAIzsB,EAAEyvO,GAAEA,IAAG,EAAE,IAAIp5M,EAAE+vZ,KAAgD,IAAxCpsB,KAAI32Z,GAAGssO,KAAIjjN,IAAEs4Z,GAAG,KAAK3C,GAAGxrB,KAAI,IAAIwvB,GAAGhjb,EAAEqpB,UAAU45Z,KAAK,KAAK,CAAC,MAAMhib,GAAGiib,GAAGljb,EAAEiB,EAAE,CAAUiya,KAAKkO,GAAG9pb,QAAQ07B,EAAEo5M,GAAEzvO,EAAE,OAAOkmJ,GAAEx5H,EAAE,GAAGstY,GAAE,KAAKrqL,GAAE,EAAEjjN,EAAE4sM,GAAE,CAAC,GAAG,IAAI5sM,EAAE,CAAyC,GAAxC,IAAIA,IAAY,KAAR1sB,EAAEoia,GAAG/+Z,MAAWopB,EAAEzsB,EAAE0sB,EAAEurC,GAAG50D,EAAErD,KAAQ,IAAI0sB,EAAE,MAAMrZ,EAAEsxa,GAAG0B,GAAGhjb,EAAE,GAAGmib,GAAGnib,EAAEopB,GAAGg5Z,GAAGpib,EAAEwzZ,MAAKxjZ,EAAE,GAAG,IAAIqZ,EAAE84Z,GAAGnib,EAAEopB,OAChf,CAAuB,GAAtBzsB,EAAEqD,EAAE1I,QAAQ4ra,UAAa,KAAO,GAAF95Y,KAGnC,SAAYppB,GAAG,IAAI,IAAIqpB,EAAErpB,IAAI,CAAC,GAAW,MAARqpB,EAAE+1F,MAAY,CAAC,IAAIpvG,EAAEqZ,EAAE+qZ,YAAY,GAAG,OAAOpka,GAAe,QAAXA,EAAEA,EAAEmpa,QAAiB,IAAI,IAAI/vZ,EAAE,EAAEA,EAAEpZ,EAAElL,OAAOskB,IAAI,CAAC,IAAIzsB,EAAEqT,EAAEoZ,GAAG4J,EAAEr2B,EAAEq8a,YAAYr8a,EAAEA,EAAE+L,MAAM,IAAI,IAAI2ia,GAAGr4Y,IAAIr2B,GAAG,OAAM,CAAE,CAAC,MAAM2yF,GAAG,OAAM,CAAE,CAAC,CAAC,CAAW,GAAVt/E,EAAEqZ,EAAEoxF,MAAwB,MAAfpxF,EAAE80Z,cAAoB,OAAOnua,EAAEA,EAAEmzZ,OAAO95Y,EAAEA,EAAErZ,MAAM,CAAC,GAAGqZ,IAAIrpB,EAAE,MAAM,KAAK,OAAOqpB,EAAEgvK,SAAS,CAAC,GAAG,OAAOhvK,EAAE85Y,QAAQ95Y,EAAE85Y,SAASnja,EAAE,OAAM,EAAGqpB,EAAEA,EAAE85Y,MAAM,CAAC95Y,EAAEgvK,QAAQ8qO,OAAO95Y,EAAE85Y,OAAO95Y,EAAEA,EAAEgvK,OAAO,CAAC,CAAC,OAAM,CAAE,CAHvX8qP,CAAGxmb,KAAe,KAAV0sB,EAAEy5Z,GAAG9ib,EAAEopB,MAAmB,KAAR4J,EAAE+rY,GAAG/+Z,MAAWopB,EAAE4J,EAAE3J,EAAEurC,GAAG50D,EAAEgzB,KAAK,IAAI3J,GAAG,MAAMrZ,EAAEsxa,GAAG0B,GAAGhjb,EAAE,GAAGmib,GAAGnib,EAAEopB,GAAGg5Z,GAAGpib,EAAEwzZ,MAAKxjZ,EAAqC,OAAnChQ,EAAEojb,aAAazmb,EAAEqD,EAAEqjb,cAAcj6Z,EAASC,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMiG,MAAM9F,EAAE,MAAM,KAAK,EAC8B,KAAK,EAAE85Z,GAAGtjb,EAAE0hb,GAAGC,IAAI,MAD7B,KAAK,EAAU,GAARQ,GAAGnib,EAAEopB,IAAS,UAAFA,KAAeA,GAAiB,IAAbC,EAAEs3Z,GAAG,IAAIntB,MAAU,CAAC,GAAG,IAAIqL,GAAG7+Z,EAAE,GAAG,MAAyB,KAAnBrD,EAAEqD,EAAEika,gBAAqB76Y,KAAKA,EAAE,CAAC+iN,KAAInsO,EAAEkka,aAAalka,EAAEika,eAAetna,EAAE,KAAK,CAACqD,EAAEujb,cAAc1U,GAAGyU,GAAGxxZ,KAAK,KAAK9xB,EAAE0hb,GAAGC,IAAIt4Z,GAAG,KAAK,CAACi6Z,GAAGtjb,EAAE0hb,GAAGC,IAAI,MAAM,KAAK,EAAU,GAARQ,GAAGnib,EAAEopB,IAAS,QAAFA,KAC9eA,EAAE,MAAqB,IAAfC,EAAErpB,EAAEuka,WAAe5na,GAAG,EAAE,EAAEysB,GAAG,CAAC,IAAIkmE,EAAE,GAAGivU,GAAGn1Y,GAAG4J,EAAE,GAAGs8D,GAAEA,EAAEjmE,EAAEimE,IAAK3yF,IAAIA,EAAE2yF,GAAGlmE,IAAI4J,CAAC,CAAqG,GAApG5J,EAAEzsB,EAAqG,IAA3FysB,GAAG,KAAXA,EAAEoqY,KAAIpqY,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAK+3Z,GAAG/3Z,EAAE,OAAOA,GAAU,CAACppB,EAAEujb,cAAc1U,GAAGyU,GAAGxxZ,KAAK,KAAK9xB,EAAE0hb,GAAGC,IAAIv4Z,GAAG,KAAK,CAACk6Z,GAAGtjb,EAAE0hb,GAAGC,IAAI,MAA+B,QAAQ,MAAMryZ,MAAM9F,EAAE,MAAO,CAAC,CAAW,OAAV44Z,GAAGpib,EAAEwzZ,MAAYxzZ,EAAEqib,eAAerya,EAAE4ya,GAAG9wZ,KAAK,KAAK9xB,GAAG,IAAI,CACrX,SAAS40D,GAAG50D,EAAEqpB,GAAG,IAAIrZ,EAAEyxa,GAA2G,OAAxGzhb,EAAE1I,QAAQ++Z,cAAcuO,eAAeoe,GAAGhjb,EAAEqpB,GAAG+1F,OAAO,KAAe,KAAVp/G,EAAE8ib,GAAG9ib,EAAEqpB,MAAWA,EAAEq4Z,GAAGA,GAAG1xa,EAAE,OAAOqZ,GAAGu1Z,GAAGv1Z,IAAWrpB,CAAC,CAAC,SAAS4+a,GAAG5+a,GAAG,OAAO0hb,GAAGA,GAAG1hb,EAAE0hb,GAAGz9Z,KAAKb,MAAMs+Z,GAAG1hb,EAAE,CAE5L,SAASmib,GAAGnib,EAAEqpB,GAAuD,IAApDA,IAAIm4Z,GAAGn4Z,IAAIk4Z,GAAGvhb,EAAEika,gBAAgB56Y,EAAErpB,EAAEkka,cAAc76Y,EAAMrpB,EAAEA,EAAEsib,gBAAgB,EAAEj5Z,GAAG,CAAC,IAAIrZ,EAAE,GAAGuuZ,GAAGl1Y,GAAGD,EAAE,GAAGpZ,EAAEhQ,EAAEgQ,IAAI,EAAEqZ,IAAID,CAAC,CAAC,CAAC,SAASs5Z,GAAG1ib,GAAG,GAAG,KAAO,EAAFosO,IAAK,MAAM98M,MAAM9F,EAAE,MAAMq5Z,KAAK,IAAIx5Z,EAAEw1Y,GAAG7+Z,EAAE,GAAG,GAAG,KAAO,EAAFqpB,GAAK,OAAO+4Z,GAAGpib,EAAEwzZ,MAAK,KAAK,IAAIxjZ,EAAE8ya,GAAG9ib,EAAEqpB,GAAG,GAAG,IAAIrpB,EAAEsH,KAAK,IAAI0I,EAAE,CAAC,IAAIoZ,EAAE21Y,GAAG/+Z,GAAG,IAAIopB,IAAIC,EAAED,EAAEpZ,EAAE4kD,GAAG50D,EAAEopB,GAAG,CAAC,GAAG,IAAIpZ,EAAE,MAAMA,EAAEsxa,GAAG0B,GAAGhjb,EAAE,GAAGmib,GAAGnib,EAAEqpB,GAAG+4Z,GAAGpib,EAAEwzZ,MAAKxjZ,EAAE,GAAG,IAAIA,EAAE,MAAMsf,MAAM9F,EAAE,MAAiF,OAA3ExpB,EAAEojb,aAAapjb,EAAE1I,QAAQ4ra,UAAUlja,EAAEqjb,cAAch6Z,EAAEi6Z,GAAGtjb,EAAE0hb,GAAGC,IAAIS,GAAGpib,EAAEwzZ,MAAY,IAAI,CACvd,SAASgwB,GAAGxjb,EAAEqpB,GAAG,IAAIrZ,EAAEo8N,GAAEA,IAAG,EAAE,IAAI,OAAOpsO,EAAEqpB,EAAE,CAAC,QAAY,KAAJ+iN,GAAEp8N,KAAUgva,GAAGxrB,KAAI,IAAIkd,IAAIG,KAAK,CAAC,CAAC,SAAS4S,GAAGzjb,GAAG,OAAO6hb,IAAI,IAAIA,GAAGv6a,KAAK,KAAO,EAAF8kO,KAAMy2M,KAAK,IAAIx5Z,EAAE+iN,GAAEA,IAAG,EAAE,IAAIp8N,EAAEqxa,GAAGxiL,WAAWz1O,EAAE+pY,GAAE,IAAI,GAAGkuB,GAAGxiL,WAAW,KAAKs0J,GAAE,EAAEnzZ,EAAE,OAAOA,GAAG,CAAC,QAAQmzZ,GAAE/pY,EAAEi4Z,GAAGxiL,WAAW7uP,EAAM,KAAO,GAAXo8N,GAAE/iN,KAAawnZ,IAAI,CAAC,CAAC,SAASoO,KAAKxC,GAAGD,GAAGllb,QAAQs/N,GAAE4lN,GAAG,CAChT,SAASwG,GAAGhjb,EAAEqpB,GAAGrpB,EAAEojb,aAAa,KAAKpjb,EAAEqjb,cAAc,EAAE,IAAIrza,EAAEhQ,EAAEujb,cAAiD,IAAlC,IAAIvza,IAAIhQ,EAAEujb,eAAe,EAAEzU,GAAG9+Z,IAAO,OAAO6yI,GAAE,IAAI7yI,EAAE6yI,GAAEsgR,OAAO,OAAOnzZ,GAAG,CAAC,IAAIoZ,EAAEpZ,EAAQ,OAAN0ha,GAAGtoZ,GAAUA,EAAE9hB,KAAK,KAAK,EAA6B,QAA3B8hB,EAAEA,EAAE3sB,KAAKuvZ,yBAA4B,IAAS5iY,GAAGgnZ,KAAK,MAAM,KAAK,EAAE4G,KAAKpgN,GAAEk5M,IAAIl5M,GAAEa,IAAG6/M,KAAK,MAAM,KAAK,EAAEJ,GAAG9tZ,GAAG,MAAM,KAAK,EAAE4tZ,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGpgN,GAAEb,IAAG,MAAM,KAAK,GAAGo9M,GAAG/pZ,EAAE3sB,KAAK46I,UAAU,MAAM,KAAK,GAAG,KAAK,GAAG4nS,KAAKjva,EAAEA,EAAEmzZ,MAAM,CAAqE,GAApExM,GAAE32Z,EAAE6iJ,GAAE7iJ,EAAEo2a,GAAGp2a,EAAE1I,QAAQ,MAAMg1O,GAAEmwM,GAAGpzZ,EAAE4sM,GAAE,EAAEqrN,GAAG,KAAKE,GAAGD,GAAGvM,GAAG,EAAE0M,GAAGD,GAAG,KAAQ,OAAO5N,GAAG,CAAC,IAAIxqZ,EAC1f,EAAEA,EAAEwqZ,GAAG/ua,OAAOukB,IAAI,GAA2B,QAAhBD,GAARpZ,EAAE6ja,GAAGxqZ,IAAO2qZ,aAAqB,CAAChka,EAAEgka,YAAY,KAAK,IAAIr3a,EAAEysB,EAAE0H,KAAKkC,EAAEhjB,EAAE29D,QAAQ,GAAG,OAAO36C,EAAE,CAAC,IAAIs8D,EAAEt8D,EAAElC,KAAKkC,EAAElC,KAAKn0B,EAAEysB,EAAE0H,KAAKw+D,CAAC,CAACt/E,EAAE29D,QAAQvkD,CAAC,CAACyqZ,GAAG,IAAI,CAAC,OAAO7za,CAAC,CAC3K,SAASkjb,GAAGljb,EAAEqpB,GAAG,OAAE,CAAC,IAAIrZ,EAAE6yI,GAAE,IAAuB,GAAnBqwR,KAAKsE,GAAGlgb,QAAQuyJ,GAAM8tR,GAAG,CAAC,IAAI,IAAIvuZ,EAAEqoH,GAAE4kR,cAAc,OAAOjtY,GAAG,CAAC,IAAIzsB,EAAEysB,EAAE+5K,MAAM,OAAOxmM,IAAIA,EAAEgxE,QAAQ,MAAMvkD,EAAEA,EAAE0H,IAAI,CAAC6mZ,IAAG,CAAE,CAA4C,GAA3CD,GAAG,EAAEj4E,GAAE22D,GAAE3kR,GAAE,KAAKmmS,IAAG,EAAGC,GAAG,EAAE1/Q,GAAG7gK,QAAQ,KAAQ,OAAO0Y,GAAG,OAAOA,EAAEmzZ,OAAO,CAACltM,GAAE,EAAEqrN,GAAGj4Z,EAAEw5H,GAAE,KAAK,KAAK,CAAC7iJ,EAAE,CAAC,IAAIgzB,EAAEhzB,EAAEsvF,EAAEt/E,EAAEmzZ,OAAOlia,EAAE+O,EAAEkjB,EAAE7J,EAAqB,GAAnBA,EAAEijN,GAAErrO,EAAEm+G,OAAO,MAAS,OAAOlsF,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAEx7B,KAAK,CAAC,IAAImiD,EAAE3mB,EAAEurB,EAAEx9C,EAAEwC,EAAEg7C,EAAEn3C,IAAI,GAAG,KAAY,EAAPm3C,EAAEj5C,QAAU,IAAI/B,GAAG,KAAKA,GAAG,KAAKA,GAAG,CAAC,IAAI0zE,EAAE14B,EAAEykX,UAAU/rV,GAAG14B,EAAE21X,YAAYj9V,EAAEi9V,YAAY31X,EAAE43W,cAAcl/U,EAAEk/U,cACxe53W,EAAEg1X,MAAMt8V,EAAEs8V,QAAQh1X,EAAE21X,YAAY,KAAK31X,EAAE43W,cAAc,KAAK,CAAC,IAAI/iU,EAAEmoV,GAAGnsV,GAAG,GAAG,OAAOgE,EAAE,CAACA,EAAE8rB,QAAQ,IAAIs8T,GAAGpoV,EAAEhE,EAAEruF,EAAE+xB,EAAE3J,GAAU,EAAPiqE,EAAE9tF,MAAQ81a,GAAGtoZ,EAAE6mB,EAAExwB,GAAO6J,EAAE2mB,EAAE,IAAIn2C,GAAZ2lB,EAAEiqE,GAAc8gV,YAAY,GAAG,OAAO1wa,EAAE,CAAC,IAAI7D,EAAE,IAAIikM,IAAIjkM,EAAE6gC,IAAIxN,GAAG7J,EAAE+qZ,YAAYv0a,CAAC,MAAM6D,EAAEg9B,IAAIxN,GAAG,MAAMlzB,CAAC,CAAM,GAAG,KAAO,EAAFqpB,GAAK,CAACiyZ,GAAGtoZ,EAAE6mB,EAAExwB,GAAG00Z,KAAK,MAAM/9a,CAAC,CAACkzB,EAAE5D,MAAM9F,EAAE,KAAM,MAAM,GAAG8pH,IAAU,EAAPryI,EAAEuE,KAAO,CAAC,IAAI2wZ,EAAEslB,GAAGnsV,GAAG,GAAG,OAAO6mU,EAAE,CAAC,KAAa,MAARA,EAAE/2S,SAAe+2S,EAAE/2S,OAAO,KAAKs8T,GAAGvlB,EAAE7mU,EAAEruF,EAAE+xB,EAAE3J,GAAGspZ,GAAG+H,GAAGxnZ,EAAEjyB,IAAI,MAAMjB,CAAC,CAAC,CAACgzB,EAAEE,EAAEwnZ,GAAGxnZ,EAAEjyB,GAAG,IAAIg1N,KAAIA,GAAE,GAAG,OAAOwrN,GAAGA,GAAG,CAACzuZ,GAAGyuZ,GAAGx9Z,KAAK+O,GAAGA,EAAEs8D,EAAE,EAAE,CAAC,OAAOt8D,EAAE1rB,KAAK,KAAK,EAAE0rB,EAAEosF,OAAO,MACpf/1F,IAAIA,EAAE2J,EAAEygZ,OAAOpqZ,EAAkByrZ,GAAG9hZ,EAAb+nZ,GAAG/nZ,EAAEE,EAAE7J,IAAW,MAAMrpB,EAAE,KAAK,EAAEiB,EAAEiyB,EAAE,IAAIs1B,EAAEx1B,EAAEv2B,KAAKy5N,EAAEljM,EAAEiwY,UAAU,GAAG,KAAa,IAARjwY,EAAEosF,SAAa,oBAAoB52D,EAAE2jW,0BAA0B,OAAOj2L,GAAG,oBAAoBA,EAAEilN,oBAAoB,OAAOC,KAAKA,GAAGlzX,IAAIguK,KAAK,CAACljM,EAAEosF,OAAO,MAAM/1F,IAAIA,EAAE2J,EAAEygZ,OAAOpqZ,EAAkByrZ,GAAG9hZ,EAAbkoZ,GAAGloZ,EAAE/xB,EAAEooB,IAAW,MAAMrpB,CAAC,EAAEgzB,EAAEA,EAAEmwY,MAAM,OAAO,OAAOnwY,EAAE,CAAC0wZ,GAAG1za,EAAE,CAAC,MAAM0iZ,GAAIrpY,EAAEqpY,EAAG7vQ,KAAI7yI,GAAG,OAAOA,IAAI6yI,GAAE7yI,EAAEA,EAAEmzZ,QAAQ,QAAQ,CAAC,KAAK,CAAS,CAAC,SAAS4f,KAAK,IAAI/ib,EAAEohb,GAAG9pb,QAAsB,OAAd8pb,GAAG9pb,QAAQuyJ,GAAU,OAAO7pJ,EAAE6pJ,GAAG7pJ,CAAC,CACrd,SAAS+9a,KAAQ,IAAI9nN,IAAG,IAAIA,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAO0gM,IAAG,KAAQ,UAAHqe,KAAe,KAAQ,UAAHuM,KAAeY,GAAGxrB,GAAErqL,GAAE,CAAC,SAASw2M,GAAG9ib,EAAEqpB,GAAG,IAAIrZ,EAAEo8N,GAAEA,IAAG,EAAE,IAAIhjN,EAAE25Z,KAAqC,IAA7BpsB,KAAI32Z,GAAGssO,KAAIjjN,IAAEs4Z,GAAG,KAAKqB,GAAGhjb,EAAEqpB,UAAUs6Z,KAAK,KAAK,CAAC,MAAMhnb,GAAGumb,GAAGljb,EAAErD,EAAE,CAAgC,GAAtBu2a,KAAK9mM,GAAEp8N,EAAEoxa,GAAG9pb,QAAQ8xB,EAAK,OAAOy5H,GAAE,MAAMvzH,MAAM9F,EAAE,MAAiB,OAAXmtY,GAAE,KAAKrqL,GAAE,EAASrW,EAAC,CAAC,SAAS0tN,KAAK,KAAK,OAAO9gS,IAAG+gS,GAAG/gS,GAAE,CAAC,SAASogS,KAAK,KAAK,OAAOpgS,KAAIhqC,MAAM+qU,GAAG/gS,GAAE,CAAC,SAAS+gS,GAAG5jb,GAAG,IAAIqpB,EAAE63Z,GAAGlhb,EAAEkja,UAAUlja,EAAEy8a,IAAIz8a,EAAEwya,cAAcxya,EAAEkya,aAAa,OAAO7oZ,EAAEq6Z,GAAG1jb,GAAG6iJ,GAAEx5H,EAAE8uI,GAAG7gK,QAAQ,IAAI,CAC1d,SAASosb,GAAG1jb,GAAG,IAAIqpB,EAAErpB,EAAE,EAAE,CAAC,IAAIgQ,EAAEqZ,EAAE65Y,UAAqB,GAAXlja,EAAEqpB,EAAE85Y,OAAU,KAAa,MAAR95Y,EAAE+1F,QAAc,GAAgB,QAAbpvG,EAAE2ua,GAAG3ua,EAAEqZ,EAAEozZ,KAAkB,YAAJ55R,GAAE7yI,OAAc,CAAW,GAAG,QAAbA,EAAEkva,GAAGlva,EAAEqZ,IAAmC,OAAnBrZ,EAAEovG,OAAO,WAAMyjC,GAAE7yI,GAAS,GAAG,OAAOhQ,EAAmE,OAAXi2N,GAAE,OAAEpzE,GAAE,MAA5D7iJ,EAAEo/G,OAAO,MAAMp/G,EAAEm+a,aAAa,EAAEn+a,EAAEgya,UAAU,IAA4B,CAAa,GAAG,QAAf3oZ,EAAEA,EAAEgvK,SAAyB,YAAJx1C,GAAEx5H,GAASw5H,GAAEx5H,EAAErpB,CAAC,OAAO,OAAOqpB,GAAG,IAAI4sM,KAAIA,GAAE,EAAE,CAAC,SAASqtN,GAAGtjb,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAE+pY,GAAEx2Z,EAAE0kb,GAAGxiL,WAAW,IAAIwiL,GAAGxiL,WAAW,KAAKs0J,GAAE,EAC3Y,SAAYnzZ,EAAEqpB,EAAErZ,EAAEoZ,GAAG,GAAGy5Z,WAAW,OAAOhB,IAAI,GAAG,KAAO,EAAFz1M,IAAK,MAAM98M,MAAM9F,EAAE,MAAMxZ,EAAEhQ,EAAEojb,aAAa,IAAIzmb,EAAEqD,EAAEqjb,cAAc,GAAG,OAAOrza,EAAE,OAAO,KAA2C,GAAtChQ,EAAEojb,aAAa,KAAKpjb,EAAEqjb,cAAc,EAAKrza,IAAIhQ,EAAE1I,QAAQ,MAAMg4B,MAAM9F,EAAE,MAAMxpB,EAAEqib,aAAa,KAAKrib,EAAEwib,iBAAiB,EAAE,IAAIxvZ,EAAEhjB,EAAEyja,MAAMzja,EAAEqja,WAA8J,GA1NtT,SAAYrza,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAEgka,cAAc36Y,EAAErpB,EAAEgka,aAAa36Y,EAAErpB,EAAEika,eAAe,EAAEjka,EAAEkka,YAAY,EAAElka,EAAEuib,cAAcl5Z,EAAErpB,EAAE6jb,kBAAkBx6Z,EAAErpB,EAAEmka,gBAAgB96Y,EAAEA,EAAErpB,EAAEoka,cAAc,IAAIh7Y,EAAEppB,EAAEuka,WAAW,IAAIvka,EAAEA,EAAEsib,gBAAgB,EAAEtya,GAAG,CAAC,IAAIrT,EAAE,GAAG4ha,GAAGvuZ,GAAGgjB,EAAE,GAAGr2B,EAAE0sB,EAAE1sB,GAAG,EAAEysB,EAAEzsB,IAAI,EAAEqD,EAAErD,IAAI,EAAEqT,IAAIgjB,CAAC,CAAC,CA0N5GksY,CAAGl/Z,EAAEgzB,GAAGhzB,IAAI22Z,KAAI9zQ,GAAE8zQ,GAAE,KAAKrqL,GAAE,GAAG,KAAoB,KAAft8N,EAAEmua,eAAoB,KAAa,KAARnua,EAAEovG,QAAawiU,KAAKA,IAAG,EAAGe,GAAG3kB,IAAG,WAAgB,OAAL6kB,KAAY,IAAI,KAAI7vZ,EAAE,KAAa,MAARhjB,EAAEovG,OAAgB,KAAoB,MAAfpvG,EAAEmua,eAAqBnrZ,EAAE,CAACA,EAAEquZ,GAAGxiL,WAAWwiL,GAAGxiL,WAAW,KAChf,IAAIvvK,EAAE6jU,GAAEA,GAAE,EAAE,IAAIlyZ,EAAEmrO,GAAEA,IAAG,EAAEj0E,GAAG7gK,QAAQ,KA1CpC,SAAY0I,EAAEqpB,GAAgB,GAAbqlZ,GAAG90Q,GAAagyQ,GAAV5ra,EAAE0ra,MAAc,CAAC,GAAG,mBAAmB1ra,EAAE,IAAIgQ,EAAE,CAACgW,MAAMhmB,EAAE+1Q,eAAe9rP,IAAIjqB,EAAEg4Q,mBAAmBh4Q,EAAE,CAA8C,IAAIopB,GAAjDpZ,GAAGA,EAAEhQ,EAAEs5B,gBAAgBtpB,EAAE01K,aAAa1pL,QAAemwL,cAAcn8K,EAAEm8K,eAAe,GAAG/iK,GAAG,IAAIA,EAAE2iZ,WAAW,CAAC/7Z,EAAEoZ,EAAEm6J,WAAW,IAAI5mL,EAAEysB,EAAEo6J,aAAaxwJ,EAAE5J,EAAEi6J,UAAUj6J,EAAEA,EAAEk6J,YAAY,IAAItzK,EAAEyuF,SAASzrE,EAAEyrE,QAAQ,CAAC,MAAMu3H,GAAGhmN,EAAE,KAAK,MAAMhQ,CAAC,CAAC,IAAIsvF,EAAE,EAAEruF,GAAG,EAAEiyB,GAAG,EAAE2mB,EAAE,EAAE4E,EAAE,EAAEh7C,EAAEzD,EAAEm3E,EAAE,KAAK9tD,EAAE,OAAO,CAAC,IAAI,IAAIiqE,EAAK7vF,IAAIuM,GAAG,IAAIrT,GAAG,IAAI8G,EAAEg7F,WAAWx9F,EAAEquF,EAAE3yF,GAAG8G,IAAIuvB,GAAG,IAAI5J,GAAG,IAAI3lB,EAAEg7F,WAAWvrE,EAAEo8D,EAAElmE,GAAG,IAAI3lB,EAAEg7F,WAAWnP,GACnf7rF,EAAEo5J,UAAU/3J,QAAW,QAAQwuF,EAAE7vF,EAAEk/F,aAAkBxrB,EAAE1zE,EAAEA,EAAE6vF,EAAE,OAAO,CAAC,GAAG7vF,IAAIzD,EAAE,MAAMqpB,EAA8C,GAA5C8tD,IAAInnE,KAAK6pC,IAAIl9C,IAAIsE,EAAEquF,GAAGnY,IAAInkD,KAAKyrB,IAAIr1B,IAAI8J,EAAEo8D,GAAM,QAAQgE,EAAE7vF,EAAEm/F,aAAa,MAAUzrB,GAAJ1zE,EAAE0zE,GAAM2qB,UAAU,CAACr+F,EAAE6vF,CAAC,CAACtjF,GAAG,IAAI/O,IAAI,IAAIiyB,EAAE,KAAK,CAAClN,MAAM/kB,EAAEgpB,IAAIiJ,EAAE,MAAMljB,EAAE,IAAI,CAACA,EAAEA,GAAG,CAACgW,MAAM,EAAEiE,IAAI,EAAE,MAAMja,EAAE,KAA+C,IAA1C2+Z,GAAG,CAAC7C,YAAY9ra,EAAE6gC,eAAe7wB,GAAG4pJ,IAAG,EAAOi/P,GAAExvY,EAAE,OAAOwvY,IAAG,GAAO74Z,GAAJqpB,EAAEwvY,IAAMp+S,MAAM,KAAoB,KAAfpxF,EAAE80Z,eAAoB,OAAOn+a,EAAEA,EAAEmja,OAAO95Y,EAAEwvY,GAAE74Z,OAAO,KAAK,OAAO64Z,IAAG,CAACxvY,EAAEwvY,GAAE,IAAI,IAAIn1Z,EAAE2lB,EAAE65Y,UAAU,GAAG,KAAa,KAAR75Y,EAAE+1F,OAAY,OAAO/1F,EAAE/hB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GACvK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAA3W,KAAK,EAAE,GAAG,OAAO5D,EAAE,CAAC,IAAI7D,EAAE6D,EAAE8ua,cAAcrc,EAAEzyZ,EAAE2yZ,cAAcjpV,EAAE/jD,EAAE45Y,UAAUz6W,EAAE4kB,EAAEs5P,wBAAwBr9S,EAAEsmY,cAActmY,EAAE5sB,KAAKoD,EAAEgza,GAAGxpZ,EAAE5sB,KAAKoD,GAAGs2Z,GAAG/oV,EAAE6zW,oCAAoCz4X,CAAC,CAAC,MAAM,KAAK,EAAE,IAAI0tK,EAAE7sM,EAAE45Y,UAAU4B,cAAc,IAAI3uM,EAAEz3H,SAASy3H,EAAEnlH,YAAY,GAAG,IAAImlH,EAAEz3H,UAAUy3H,EAAEz/G,iBAAiBy/G,EAAEjtM,YAAYitM,EAAEz/G,iBAAiB,MAAyC,QAAQ,MAAMnnF,MAAM9F,EAAE,MAAO,CAAC,MAAMwsM,GAAGxlF,GAAEnnH,EAAEA,EAAE85Y,OAAOntM,EAAE,CAAa,GAAG,QAAfh2N,EAAEqpB,EAAEgvK,SAAoB,CAACr4L,EAAEmja,OAAO95Y,EAAE85Y,OAAOtK,GAAE74Z,EAAE,KAAK,CAAC64Z,GAAExvY,EAAE85Y,MAAM,CAACz/Z,EAAE87a,GAAGA,IAAG,CAAW,CAwCldsE,CAAG9jb,EAAEgQ,GAAGywa,GAAGzwa,EAAEhQ,GAAG6ra,GAAG8C,IAAI/0Q,KAAK80Q,GAAGC,GAAGD,GAAG,KAAK1ua,EAAE1I,QAAQ0Y,EAAE6wa,GAAG7wa,EAAEhQ,EAAErD,GAAGiha,KAAKxxL,GAAEnrO,EAAEkyZ,GAAE7jU,EAAE+xV,GAAGxiL,WAAW7rO,CAAC,MAAMhzB,EAAE1I,QAAQ0Y,EAAsF,GAApF4xa,KAAKA,IAAG,EAAGC,GAAG7hb,EAAE8hb,GAAGnlb,GAAGq2B,EAAEhzB,EAAEgka,aAAa,IAAIhxY,IAAIooZ,GAAG,MAjOmJ,SAAYp7a,GAAG,GAAGs6H,IAAI,oBAAoBA,GAAGypT,kBAAkB,IAAIzpT,GAAGypT,kBAAkB5lB,GAAGn+Z,OAAE,EAAO,OAAuB,IAAhBA,EAAE1I,QAAQ8nH,OAAW,CAAC,MAAM/1F,GAAG,CAAC,CAiOxRg1Y,CAAGruZ,EAAEizZ,WAAamf,GAAGpib,EAAEwzZ,MAAQ,OAAOnqY,EAAE,IAAID,EAAEppB,EAAEgkb,mBAAmBh0a,EAAE,EAAEA,EAAEqZ,EAAEvkB,OAAOkL,IAAIrT,EAAE0sB,EAAErZ,GAAGoZ,EAAEzsB,EAAE+L,MAAM,CAAC2ya,eAAe1+a,EAAEyiD,MAAMu7X,OAAOh+a,EAAEg+a,SAAS,GAAGK,GAAG,MAAMA,IAAG,EAAGh7a,EAAEi7a,GAAGA,GAAG,KAAKj7a,EAAE,KAAQ,EAAH8hb,KAAO,IAAI9hb,EAAEsH,KAAKu7a,KAAK7vZ,EAAEhzB,EAAEgka,aAAa,KAAO,EAAFhxY,GAAKhzB,IAAIgib,GAAGD,MAAMA,GAAG,EAAEC,GAAGhib,GAAG+hb,GAAG,EAAElR,IAAgB,CAFxFoT,CAAGjkb,EAAEqpB,EAAErZ,EAAEoZ,EAAE,CAAC,QAAQi4Z,GAAGxiL,WAAWliQ,EAAEw2Z,GAAE/pY,CAAC,CAAC,OAAO,IAAI,CAGhc,SAASy5Z,KAAK,GAAG,OAAOhB,GAAG,CAAC,IAAI7hb,EAAEo/Z,GAAG0iB,IAAIz4Z,EAAEg4Z,GAAGxiL,WAAW7uP,EAAEmjZ,GAAE,IAAmC,GAA/BkuB,GAAGxiL,WAAW,KAAKs0J,GAAE,GAAGnzZ,EAAE,GAAGA,EAAK,OAAO6hb,GAAG,IAAIz4Z,GAAE,MAAO,CAAmB,GAAlBppB,EAAE6hb,GAAGA,GAAG,KAAKC,GAAG,EAAK,KAAO,EAAF11M,IAAK,MAAM98M,MAAM9F,EAAE,MAAM,IAAI7sB,EAAEyvO,GAAO,IAALA,IAAG,EAAMysL,GAAE74Z,EAAE1I,QAAQ,OAAOuha,IAAG,CAAC,IAAI7lY,EAAE6lY,GAAEvpU,EAAEt8D,EAAEynF,MAAM,GAAG,KAAa,GAARo+S,GAAEz5S,OAAU,CAAC,IAAIn+G,EAAE+xB,EAAEg/Y,UAAU,GAAG,OAAO/wa,EAAE,CAAC,IAAI,IAAIiyB,EAAE,EAAEA,EAAEjyB,EAAE6D,OAAOouB,IAAI,CAAC,IAAI2mB,EAAE54C,EAAEiyB,GAAG,IAAI2lY,GAAEh/W,EAAE,OAAOg/W,IAAG,CAAC,IAAIp6W,EAAEo6W,GAAE,OAAOp6W,EAAEn3C,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGm4a,GAAG,EAAEhhY,EAAEzrB,GAAG,IAAIvvB,EAAEg7C,EAAEg8D,MAAM,GAAG,OAAOh3G,EAAEA,EAAE0/Z,OAAO1kX,EAAEo6W,GAAEp1Z,OAAO,KAAK,OAAOo1Z,IAAG,CAAK,IAAI1hV,GAAR14B,EAAEo6W,IAAUxgO,QAAQ/kG,EAAE70C,EAAE0kX,OAAa,GAANyc,GAAGnhY,GAAMA,IACnf5E,EAAE,CAACg/W,GAAE,KAAK,KAAK,CAAC,GAAG,OAAO1hV,EAAE,CAACA,EAAEgsV,OAAO7vU,EAAEulU,GAAE1hV,EAAE,KAAK,CAAC0hV,GAAEvlU,CAAC,CAAC,CAAC,CAAC,IAAI5vF,EAAEsvB,EAAEkwY,UAAU,GAAG,OAAOx/Z,EAAE,CAAC,IAAI7D,EAAE6D,EAAE+2G,MAAM,GAAG,OAAO56G,EAAE,CAAC6D,EAAE+2G,MAAM,KAAK,EAAE,CAAC,IAAI07S,EAAEt2Z,EAAEw4L,QAAQx4L,EAAEw4L,QAAQ,KAAKx4L,EAAEs2Z,CAAC,OAAO,OAAOt2Z,EAAE,CAAC,CAACg5Z,GAAE7lY,CAAC,CAAC,CAAC,GAAG,KAAoB,KAAfA,EAAEmrZ,eAAoB,OAAO7uV,EAAEA,EAAE6zU,OAAOnwY,EAAE6lY,GAAEvpU,OAAOjmE,EAAE,KAAK,OAAOwvY,IAAG,CAAK,GAAG,KAAa,MAApB7lY,EAAE6lY,IAAYz5S,OAAY,OAAOpsF,EAAE1rB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGm4a,GAAG,EAAEzsZ,EAAEA,EAAEmwY,QAAQ,IAAI/1V,EAAEp6C,EAAEqlK,QAAQ,GAAG,OAAOjrH,EAAE,CAACA,EAAE+1V,OAAOnwY,EAAEmwY,OAAOtK,GAAEzrV,EAAE,MAAM/jD,CAAC,CAACwvY,GAAE7lY,EAAEmwY,MAAM,CAAC,CAAC,IAAI36W,EAAExoD,EAAE1I,QAAQ,IAAIuha,GAAErwW,EAAE,OAAOqwW,IAAG,CAAK,IAAI3iM,GAAR5mI,EAAEupU,IAAUp+S,MAAM,GAAG,KAAoB,KAAfnrB,EAAE6uV,eAAoB,OAClfjoN,EAAEA,EAAEitM,OAAO7zU,EAAEupU,GAAE3iM,OAAO7sM,EAAE,IAAIimE,EAAE9mC,EAAE,OAAOqwW,IAAG,CAAK,GAAG,KAAa,MAApB53Z,EAAE43Z,IAAYz5S,OAAY,IAAI,OAAOn+G,EAAEqG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGo4a,GAAG,EAAEz+a,GAAG,CAAC,MAAMyxZ,GAAIliR,GAAEvvI,EAAEA,EAAEkia,OAAOzQ,EAAG,CAAC,GAAGzxZ,IAAIquF,EAAE,CAACupU,GAAE,KAAK,MAAMxvY,CAAC,CAAC,IAAI2sM,EAAE/0N,EAAEo3L,QAAQ,GAAG,OAAO29B,EAAE,CAACA,EAAEmtM,OAAOlia,EAAEkia,OAAOtK,GAAE7iM,EAAE,MAAM3sM,CAAC,CAACwvY,GAAE53Z,EAAEkia,MAAM,CAAC,CAAU,GAAT/2L,GAAEzvO,EAAEk0a,KAAQv2S,IAAI,oBAAoBA,GAAG4pT,sBAAsB,IAAI5pT,GAAG4pT,sBAAsB/lB,GAAGn+Z,EAAE,CAAC,MAAM0yZ,GAAI,CAACtpY,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ+pY,GAAEnjZ,EAAEqxa,GAAGxiL,WAAWx1O,CAAC,CAAC,CAAC,OAAM,CAAE,CAAC,SAAS86Z,GAAGnkb,EAAEqpB,EAAErZ,GAAyBhQ,EAAE40a,GAAG50a,EAAjBqpB,EAAE0xZ,GAAG/6a,EAAfqpB,EAAEqxZ,GAAG1qa,EAAEqZ,GAAY,GAAY,GAAGA,EAAE8iN,KAAI,OAAOnsO,IAAIi/Z,GAAGj/Z,EAAE,EAAEqpB,GAAG+4Z,GAAGpib,EAAEqpB,GAAG,CACze,SAASmnH,GAAExwI,EAAEqpB,EAAErZ,GAAG,GAAG,IAAIhQ,EAAEsH,IAAI68a,GAAGnkb,EAAEA,EAAEgQ,QAAQ,KAAK,OAAOqZ,GAAG,CAAC,GAAG,IAAIA,EAAE/hB,IAAI,CAAC68a,GAAG96Z,EAAErpB,EAAEgQ,GAAG,KAAK,CAAM,GAAG,IAAIqZ,EAAE/hB,IAAI,CAAC,IAAI8hB,EAAEC,EAAE45Y,UAAU,GAAG,oBAAoB55Y,EAAE5sB,KAAK0vZ,0BAA0B,oBAAoB/iY,EAAE+xZ,oBAAoB,OAAOC,KAAKA,GAAGlzX,IAAI9+B,IAAI,CAAuBC,EAAEurZ,GAAGvrZ,EAAjBrpB,EAAEk7a,GAAG7xZ,EAAfrpB,EAAE06a,GAAG1qa,EAAEhQ,GAAY,GAAY,GAAGA,EAAEmsO,KAAI,OAAO9iN,IAAI41Y,GAAG51Y,EAAE,EAAErpB,GAAGoib,GAAG/4Z,EAAErpB,IAAI,KAAK,CAAC,CAACqpB,EAAEA,EAAE85Y,MAAM,CAAC,CACnV,SAASqY,GAAGx7a,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAEppB,EAAEu7a,UAAU,OAAOnyZ,GAAGA,EAAEsuB,OAAOruB,GAAGA,EAAE8iN,KAAInsO,EAAEkka,aAAalka,EAAEika,eAAej0Z,EAAE2mZ,KAAI32Z,IAAIssO,GAAEt8N,KAAKA,IAAI,IAAIimN,IAAG,IAAIA,KAAM,UAAFqW,MAAeA,IAAG,IAAIknL,KAAImtB,GAAGqC,GAAGhjb,EAAE,GAAGwhb,IAAIxxa,GAAGoya,GAAGpib,EAAEqpB,EAAE,CAAC,SAAS+6Z,GAAGpkb,EAAEqpB,GAAG,IAAIA,IAAI,KAAY,EAAPrpB,EAAEwF,MAAQ6jB,EAAE,GAAGA,EAAEs1Y,GAAU,KAAQ,WAAfA,KAAK,MAAuBA,GAAG,WAAW,IAAI3uZ,EAAEm8N,KAAc,QAAVnsO,EAAEi0a,GAAGj0a,EAAEqpB,MAAc41Y,GAAGj/Z,EAAEqpB,EAAErZ,GAAGoya,GAAGpib,EAAEgQ,GAAG,CAAC,SAASgua,GAAGh+a,GAAG,IAAIqpB,EAAErpB,EAAEq2Z,cAAcrmZ,EAAE,EAAE,OAAOqZ,IAAIrZ,EAAEqZ,EAAE8oZ,WAAWiS,GAAGpkb,EAAEgQ,EAAE,CACjZ,SAASuwa,GAAGvgb,EAAEqpB,GAAG,IAAIrZ,EAAE,EAAE,OAAOhQ,EAAEsH,KAAK,KAAK,GAAG,IAAI8hB,EAAEppB,EAAEija,UAActma,EAAEqD,EAAEq2Z,cAAc,OAAO15Z,IAAIqT,EAAErT,EAAEw1a,WAAW,MAAM,KAAK,GAAG/oZ,EAAEppB,EAAEija,UAAU,MAAM,QAAQ,MAAM3zY,MAAM9F,EAAE,MAAO,OAAOJ,GAAGA,EAAEsuB,OAAOruB,GAAG+6Z,GAAGpkb,EAAEgQ,EAAE,CAQqK,SAAS2ya,GAAG3ib,EAAEqpB,GAAG,OAAOq0Y,GAAG19Z,EAAEqpB,EAAE,CACjZ,SAASizR,GAAGt8S,EAAEqpB,EAAErZ,EAAEoZ,GAAGnG,KAAK3b,IAAItH,EAAEijB,KAAKsL,IAAIve,EAAEiT,KAAKo1K,QAAQp1K,KAAKw3F,MAAMx3F,KAAKkgZ,OAAOlgZ,KAAKggZ,UAAUhgZ,KAAKxmB,KAAKwmB,KAAK0sY,YAAY,KAAK1sY,KAAKpL,MAAM,EAAEoL,KAAKjsB,IAAI,KAAKisB,KAAKivZ,aAAa7oZ,EAAEpG,KAAKswZ,aAAatwZ,KAAKozY,cAAcpzY,KAAKmxZ,YAAYnxZ,KAAKuvZ,cAAc,KAAKvvZ,KAAKzd,KAAK4jB,EAAEnG,KAAKk7Z,aAAal7Z,KAAKm8F,MAAM,EAAEn8F,KAAK+uZ,UAAU,KAAK/uZ,KAAKowZ,WAAWpwZ,KAAKwwZ,MAAM,EAAExwZ,KAAKigZ,UAAU,IAAI,CAAC,SAAS6O,GAAG/xa,EAAEqpB,EAAErZ,EAAEoZ,GAAG,OAAO,IAAIkzR,GAAGt8S,EAAEqpB,EAAErZ,EAAEoZ,EAAE,CAAC,SAAS6yZ,GAAGj8a,GAAiB,UAAdA,EAAEA,EAAEmjB,aAAuBnjB,EAAEu0P,iBAAiB,CAEpd,SAAS6hL,GAAGp2a,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAEkja,UACuB,OADb,OAAOlzZ,IAAGA,EAAE+ha,GAAG/xa,EAAEsH,IAAI+hB,EAAErpB,EAAEuuB,IAAIvuB,EAAEwF,OAAQmqZ,YAAY3vZ,EAAE2vZ,YAAY3/Y,EAAEvT,KAAKuD,EAAEvD,KAAKuT,EAAEizZ,UAAUjja,EAAEija,UAAUjzZ,EAAEkzZ,UAAUlja,EAAEA,EAAEkja,UAAUlzZ,IAAIA,EAAEkia,aAAa7oZ,EAAErZ,EAAEvT,KAAKuD,EAAEvD,KAAKuT,EAAEovG,MAAM,EAAEpvG,EAAEmua,aAAa,EAAEnua,EAAEgia,UAAU,MAAMhia,EAAEovG,MAAc,SAARp/G,EAAEo/G,MAAepvG,EAAEqja,WAAWrza,EAAEqza,WAAWrja,EAAEyja,MAAMzza,EAAEyza,MAAMzja,EAAEyqG,MAAMz6G,EAAEy6G,MAAMzqG,EAAEwia,cAAcxya,EAAEwya,cAAcxia,EAAEqmZ,cAAcr2Z,EAAEq2Z,cAAcrmZ,EAAEoka,YAAYp0a,EAAEo0a,YAAY/qZ,EAAErpB,EAAEuza,aAAavja,EAAEuja,aAAa,OAAOlqZ,EAAE,KAAK,CAACoqZ,MAAMpqZ,EAAEoqZ,MAAMD,aAAanqZ,EAAEmqZ,cAC/exja,EAAEqoL,QAAQr4L,EAAEq4L,QAAQroL,EAAE6H,MAAM7X,EAAE6X,MAAM7H,EAAEhZ,IAAIgJ,EAAEhJ,IAAWgZ,CAAC,CACxD,SAASsma,GAAGt2a,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAEq2B,GAAG,IAAIs8D,EAAE,EAAM,GAAJlmE,EAAEppB,EAAK,oBAAoBA,EAAEi8a,GAAGj8a,KAAKsvF,EAAE,QAAQ,GAAG,kBAAkBtvF,EAAEsvF,EAAE,OAAOtvF,EAAE,OAAOA,GAAG,KAAKkzZ,EAAG,OAAOsjB,GAAGxma,EAAEtZ,SAASiG,EAAEq2B,EAAE3J,GAAG,KAAKqsF,EAAGpmB,EAAE,EAAE3yF,GAAG,EAAE,MAAM,KAAK0+Z,EAAG,OAAOr7Z,EAAE+xa,GAAG,GAAG/ha,EAAEqZ,EAAI,EAAF1sB,IAAOgzZ,YAAY0L,EAAGr7Z,EAAEyza,MAAMzgZ,EAAEhzB,EAAE,KAAKy8Z,EAAG,OAAOz8Z,EAAE+xa,GAAG,GAAG/ha,EAAEqZ,EAAE1sB,IAAKgzZ,YAAY8M,EAAGz8Z,EAAEyza,MAAMzgZ,EAAEhzB,EAAE,KAAKszZ,EAAG,OAAOtzZ,EAAE+xa,GAAG,GAAG/ha,EAAEqZ,EAAE1sB,IAAKgzZ,YAAY2D,EAAGtzZ,EAAEyza,MAAMzgZ,EAAEhzB,EAAE,KAAK2zZ,EAAG,OAAO+pB,GAAG1ta,EAAErT,EAAEq2B,EAAE3J,GAAG,QAAQ,GAAG,kBAAkBrpB,GAAG,OAAOA,EAAE,OAAOA,EAAEy0P,UAAU,KAAK6mK,EAAGhsU,EAAE,GAAG,MAAMtvF,EAAE,KAAKozZ,EAAG9jU,EAAE,EAAE,MAAMtvF,EAAE,KAAKqzZ,EAAG/jU,EAAE,GACpf,MAAMtvF,EAAE,KAAKyzZ,EAAGnkU,EAAE,GAAG,MAAMtvF,EAAE,KAAK0zZ,EAAGpkU,EAAE,GAAGlmE,EAAE,KAAK,MAAMppB,EAAE,MAAMsvB,MAAM9F,EAAE,IAAI,MAAMxpB,EAAEA,SAASA,EAAE,KAAuD,OAAjDqpB,EAAE0oZ,GAAGziV,EAAEt/E,EAAEqZ,EAAE1sB,IAAKgzZ,YAAY3vZ,EAAEqpB,EAAE5sB,KAAK2sB,EAAEC,EAAEoqZ,MAAMzgZ,EAAS3J,CAAC,CAAC,SAASmtZ,GAAGx2a,EAAEqpB,EAAErZ,EAAEoZ,GAA2B,OAAxBppB,EAAE+xa,GAAG,EAAE/xa,EAAEopB,EAAEC,IAAKoqZ,MAAMzja,EAAShQ,CAAC,CAAC,SAAS09a,GAAG19a,EAAEqpB,EAAErZ,EAAEoZ,GAAuE,OAApEppB,EAAE+xa,GAAG,GAAG/xa,EAAEopB,EAAEC,IAAKsmY,YAAYgE,EAAG3zZ,EAAEyza,MAAMzja,EAAEhQ,EAAEija,UAAU,CAACx5F,UAAS,GAAWzpU,CAAC,CAAC,SAASq2a,GAAGr2a,EAAEqpB,EAAErZ,GAA8B,OAA3BhQ,EAAE+xa,GAAG,EAAE/xa,EAAE,KAAKqpB,IAAKoqZ,MAAMzja,EAAShQ,CAAC,CAC5W,SAASu2a,GAAGv2a,EAAEqpB,EAAErZ,GAA8J,OAA3JqZ,EAAE0oZ,GAAG,EAAE,OAAO/xa,EAAEtJ,SAASsJ,EAAEtJ,SAAS,GAAGsJ,EAAEuuB,IAAIlF,IAAKoqZ,MAAMzja,EAAEqZ,EAAE45Y,UAAU,CAAC4B,cAAc7ka,EAAE6ka,cAAcwf,gBAAgB,KAAK1rP,eAAe34L,EAAE24L,gBAAuBtvK,CAAC,CACtL,SAASwzE,GAAG78F,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAGsmB,KAAK3b,IAAI+hB,EAAEpG,KAAK4hZ,cAAc7ka,EAAEijB,KAAKmga,aAAanga,KAAKs4Z,UAAUt4Z,KAAK3rB,QAAQ2rB,KAAKoha,gBAAgB,KAAKpha,KAAKsga,eAAe,EAAEtga,KAAKo/Z,aAAap/Z,KAAKg6Z,eAAeh6Z,KAAKu3B,QAAQ,KAAKv3B,KAAKu/Z,iBAAiB,EAAEv/Z,KAAKshZ,WAAWvF,GAAG,GAAG/7Y,KAAKq/Z,gBAAgBtjB,IAAI,GAAG/7Y,KAAKkhZ,eAAelhZ,KAAKoga,cAAcpga,KAAK4ga,iBAAiB5ga,KAAKs/Z,aAAat/Z,KAAKihZ,YAAYjhZ,KAAKghZ,eAAehhZ,KAAK+gZ,aAAa,EAAE/gZ,KAAKmhZ,cAAcpF,GAAG,GAAG/7Y,KAAKy5Y,iBAAiBtzY,EAAEnG,KAAK+ga,mBAAmBrnb,EAAEsmB,KAAKqha,gCAC/e,IAAI,CAAC,SAASC,GAAGvkb,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAEq2B,EAAEs8D,EAAEruF,EAAEiyB,GAAgN,OAA7MlzB,EAAE,IAAI68F,GAAG78F,EAAEqpB,EAAErZ,EAAE/O,EAAEiyB,GAAG,IAAI7J,GAAGA,EAAE,GAAE,IAAK2J,IAAI3J,GAAG,IAAIA,EAAE,EAAE2J,EAAE++Y,GAAG,EAAE,KAAK,KAAK1oZ,GAAGrpB,EAAE1I,QAAQ07B,EAAEA,EAAEiwY,UAAUjja,EAAEgzB,EAAEqjY,cAAc,CAAC/qY,QAAQlC,EAAEw7Y,aAAa50Z,EAAEsoC,MAAM,KAAKikY,YAAY,KAAKiI,0BAA0B,MAAMrQ,GAAGnhZ,GAAUhzB,CAAC,CACzP,SAASyuB,GAAGzuB,GAAG,IAAIA,EAAE,OAAO6va,GAAuB7va,EAAE,CAAC,GAAGo9Z,GAA1Bp9Z,EAAEA,EAAEs1Z,mBAA8Bt1Z,GAAG,IAAIA,EAAEsH,IAAI,MAAMgoB,MAAM9F,EAAE,MAAM,IAAIH,EAAErpB,EAAE,EAAE,CAAC,OAAOqpB,EAAE/hB,KAAK,KAAK,EAAE+hB,EAAEA,EAAE45Y,UAAUzoX,QAAQ,MAAMx6C,EAAE,KAAK,EAAE,GAAGmwa,GAAG9mZ,EAAE5sB,MAAM,CAAC4sB,EAAEA,EAAE45Y,UAAUsN,0CAA0C,MAAMvwa,CAAC,EAAEqpB,EAAEA,EAAE85Y,MAAM,OAAO,OAAO95Y,GAAG,MAAMiG,MAAM9F,EAAE,KAAM,CAAC,GAAG,IAAIxpB,EAAEsH,IAAI,CAAC,IAAI0I,EAAEhQ,EAAEvD,KAAK,GAAG0za,GAAGnga,GAAG,OAAOm8F,GAAGnsG,EAAEgQ,EAAEqZ,EAAE,CAAC,OAAOA,CAAC,CACpW,SAASo7Z,GAAGzkb,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,EAAEq2B,EAAEs8D,EAAEruF,EAAEiyB,GAAwK,OAArKlzB,EAAEukb,GAAGv0a,EAAEoZ,GAAE,EAAGppB,EAAErD,EAAEq2B,EAAEs8D,EAAEruF,EAAEiyB,IAAKsnB,QAAQ/rB,GAAG,MAAMze,EAAEhQ,EAAE1I,SAAsB07B,EAAEk2F,GAAhB9/F,EAAE+iN,KAAIxvO,EAAE24a,GAAGtla,KAAe8oD,cAAS,IAASzvC,GAAG,OAAOA,EAAEA,EAAE,KAAKurZ,GAAG5ka,EAAEgjB,EAAEr2B,GAAGqD,EAAE1I,QAAQm8a,MAAM92a,EAAEsia,GAAGj/Z,EAAErD,EAAEysB,GAAGg5Z,GAAGpib,EAAEopB,GAAUppB,CAAC,CAAC,SAAS0kb,GAAG1kb,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAIzsB,EAAE0sB,EAAE/xB,QAAQ07B,EAAEm5M,KAAI78I,EAAEgmV,GAAG34a,GAAsL,OAAnLqT,EAAEye,GAAGze,GAAG,OAAOqZ,EAAEmxB,QAAQnxB,EAAEmxB,QAAQxqC,EAAEqZ,EAAE4zZ,eAAejta,GAAEqZ,EAAE6/F,GAAGl2F,EAAEs8D,IAAK33F,QAAQ,CAAC2zB,QAAQtrB,GAAuB,QAApBopB,OAAE,IAASA,EAAE,KAAKA,KAAaC,EAAEyvC,SAAS1vC,GAAe,QAAZppB,EAAE40a,GAAGj4a,EAAE0sB,EAAEimE,MAAcimV,GAAGv1a,EAAErD,EAAE2yF,EAAEt8D,GAAG6hZ,GAAG70a,EAAErD,EAAE2yF,IAAWA,CAAC,CAC3b,SAASq1V,GAAG3kb,GAAe,OAAZA,EAAEA,EAAE1I,SAAcmjH,OAAyBz6G,EAAEy6G,MAAMnzG,IAAoDtH,EAAEy6G,MAAMwoT,WAAhF,IAA0F,CAAC,SAAS/rV,GAAGl3E,EAAEqpB,GAAqB,GAAG,QAArBrpB,EAAEA,EAAEq2Z,gBAA2B,OAAOr2Z,EAAEoja,WAAW,CAAC,IAAIpzZ,EAAEhQ,EAAEmya,UAAUnya,EAAEmya,UAAU,IAAInia,GAAGA,EAAEqZ,EAAErZ,EAAEqZ,CAAC,CAAC,CAAC,SAASguD,GAAGr3E,EAAEqpB,GAAG6tD,GAAGl3E,EAAEqpB,IAAIrpB,EAAEA,EAAEkja,YAAYhsV,GAAGl3E,EAAEqpB,EAAE,CAnB7S63Z,GAAG,SAASlhb,EAAEqpB,EAAErZ,GAAG,GAAG,OAAOhQ,EAAE,GAAGA,EAAEwya,gBAAgBnpZ,EAAE6oZ,cAAcpC,GAAGx4a,QAAQo8a,IAAG,MAAO,CAAC,GAAG,KAAK1za,EAAEyza,MAAMzja,IAAI,KAAa,IAARqZ,EAAE+1F,OAAW,OAAOs0T,IAAG,EAzE1I,SAAY1za,EAAEqpB,EAAErZ,GAAG,OAAOqZ,EAAE/hB,KAAK,KAAK,EAAE01a,GAAG3zZ,GAAGqpZ,KAAK,MAAM,KAAK,EAAEuE,GAAG5tZ,GAAG,MAAM,KAAK,EAAE8mZ,GAAG9mZ,EAAE5sB,OAAO6za,GAAGjnZ,GAAG,MAAM,KAAK,EAAE0tZ,GAAG1tZ,EAAEA,EAAE45Y,UAAU4B,eAAe,MAAM,KAAK,GAAG,IAAIz7Y,EAAEC,EAAE5sB,KAAK46I,SAAS16I,EAAE0sB,EAAEmpZ,cAAc9pa,MAAMwqI,GAAE4/R,GAAG1pZ,EAAEg1Y,eAAeh1Y,EAAEg1Y,cAAczha,EAAE,MAAM,KAAK,GAAqB,GAAG,QAArBysB,EAAEC,EAAEgtY,eAA2B,OAAG,OAAOjtY,EAAEg6Y,YAAkBlwR,GAAE6iF,GAAY,EAAVA,GAAEz+N,SAAW+xB,EAAE+1F,OAAO,IAAI,MAAQ,KAAKpvG,EAAEqZ,EAAEoxF,MAAM44T,YAAmBoK,GAAGz9a,EAAEqpB,EAAErZ,IAAGkjI,GAAE6iF,GAAY,EAAVA,GAAEz+N,SAA8B,QAAnB0I,EAAE+7a,GAAG/7a,EAAEqpB,EAAErZ,IAAmBhQ,EAAEq4L,QAAQ,MAAKnlD,GAAE6iF,GAAY,EAAVA,GAAEz+N,SAAW,MAAM,KAAK,GAC7d,GADge8xB,EAAE,KAAKpZ,EACrfqZ,EAAEgqZ,YAAe,KAAa,IAARrza,EAAEo/G,OAAW,CAAC,GAAGh2F,EAAE,OAAOq1Z,GAAGz+a,EAAEqpB,EAAErZ,GAAGqZ,EAAE+1F,OAAO,GAAG,CAA6F,GAA1E,QAAlBziH,EAAE0sB,EAAEgtY,iBAAyB15Z,EAAEs3R,UAAU,KAAKt3R,EAAEsvD,KAAK,KAAKtvD,EAAEu8a,WAAW,MAAMhmS,GAAE6iF,GAAEA,GAAEz+N,SAAY8xB,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOC,EAAEoqZ,MAAM,EAAE2I,GAAGp8a,EAAEqpB,EAAErZ,GAAG,OAAO+ra,GAAG/7a,EAAEqpB,EAAErZ,EAAE,CAwE7G40a,CAAG5kb,EAAEqpB,EAAErZ,GAAG0ja,GAAG,KAAa,OAAR1za,EAAEo/G,MAAmB,MAAMs0T,IAAG,EAAGpgS,IAAG,KAAa,QAARjqH,EAAE+1F,QAAgBoyT,GAAGnoZ,EAAE4nZ,GAAG5nZ,EAAExR,OAAiB,OAAVwR,EAAEoqZ,MAAM,EAASpqZ,EAAE/hB,KAAK,KAAK,EAAE,IAAI8hB,EAAEC,EAAE5sB,KAAKmgb,GAAG58a,EAAEqpB,GAAGrpB,EAAEqpB,EAAE6oZ,aAAa,IAAIv1a,EAAEqza,GAAG3mZ,EAAEouM,GAAEngO,SAASg8a,GAAGjqZ,EAAErZ,GAAGrT,EAAEq7a,GAAG,KAAK3uZ,EAAED,EAAEppB,EAAErD,EAAEqT,GAAG,IAAIgjB,EAAE82H,KACvI,OAD4IzgI,EAAE+1F,OAAO,EAAE,kBAAkBziH,GAAG,OAAOA,GAAG,oBAAoBA,EAAE3E,aAAQ,IAAS2E,EAAE83P,UAAUprO,EAAE/hB,IAAI,EAAE+hB,EAAEgtY,cAAc,KAAKhtY,EAAE+qZ,YAC1e,KAAKjE,GAAG/mZ,IAAI4J,GAAE,EAAGs9Y,GAAGjnZ,IAAI2J,GAAE,EAAG3J,EAAEgtY,cAAc,OAAO15Z,EAAE3G,YAAO,IAAS2G,EAAE3G,MAAM2G,EAAE3G,MAAM,KAAKm+a,GAAG9qZ,GAAG1sB,EAAEwxL,QAAQknP,GAAGhsZ,EAAE45Y,UAAUtma,EAAEA,EAAE24Z,gBAAgBjsY,EAAEysZ,GAAGzsZ,EAAED,EAAEppB,EAAEgQ,GAAGqZ,EAAE0zZ,GAAG,KAAK1zZ,EAAED,GAAE,EAAG4J,EAAEhjB,KAAKqZ,EAAE/hB,IAAI,EAAEgsI,IAAGtgH,GAAGy+Y,GAAGpoZ,GAAGwyZ,GAAG,KAAKxyZ,EAAE1sB,EAAEqT,GAAGqZ,EAAEA,EAAEoxF,OAAcpxF,EAAE,KAAK,GAAGD,EAAEC,EAAEsmY,YAAY3vZ,EAAE,CAAqF,OAApF48a,GAAG58a,EAAEqpB,GAAGrpB,EAAEqpB,EAAE6oZ,aAAuB9oZ,GAAVzsB,EAAEysB,EAAEwrY,OAAUxrY,EAAEurY,UAAUtrY,EAAE5sB,KAAK2sB,EAAEzsB,EAAE0sB,EAAE/hB,IAQtU,SAAYtH,GAAG,GAAG,oBAAoBA,EAAE,OAAOi8a,GAAGj8a,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAEy0P,YAAgB4+J,EAAG,OAAO,GAAG,GAAGrzZ,IAAIyzZ,EAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAR2LoxB,CAAGz7Z,GAAGppB,EAAE6ya,GAAGzpZ,EAAEppB,GAAUrD,GAAG,KAAK,EAAE0sB,EAAE8yZ,GAAG,KAAK9yZ,EAAED,EAAEppB,EAAEgQ,GAAG,MAAMhQ,EAAE,KAAK,EAAEqpB,EAAEszZ,GAAG,KAAKtzZ,EAAED,EAAEppB,EAAEgQ,GAAG,MAAMhQ,EAAE,KAAK,GAAGqpB,EAAEyyZ,GAAG,KAAKzyZ,EAAED,EAAEppB,EAAEgQ,GAAG,MAAMhQ,EAAE,KAAK,GAAGqpB,EAAE2yZ,GAAG,KAAK3yZ,EAAED,EAAEypZ,GAAGzpZ,EAAE3sB,KAAKuD,GAAGgQ,GAAG,MAAMhQ,EAAE,MAAMsvB,MAAM9F,EAAE,IACvgBJ,EAAE,IAAK,CAAC,OAAOC,EAAE,KAAK,EAAE,OAAOD,EAAEC,EAAE5sB,KAAKE,EAAE0sB,EAAE6oZ,aAA2CiK,GAAGn8a,EAAEqpB,EAAED,EAArCzsB,EAAE0sB,EAAEsmY,cAAcvmY,EAAEzsB,EAAEk2a,GAAGzpZ,EAAEzsB,GAAcqT,GAAG,KAAK,EAAE,OAAOoZ,EAAEC,EAAE5sB,KAAKE,EAAE0sB,EAAE6oZ,aAA2CyK,GAAG38a,EAAEqpB,EAAED,EAArCzsB,EAAE0sB,EAAEsmY,cAAcvmY,EAAEzsB,EAAEk2a,GAAGzpZ,EAAEzsB,GAAcqT,GAAG,KAAK,EAAEhQ,EAAE,CAAO,GAANg9a,GAAG3zZ,GAAM,OAAOrpB,EAAE,MAAMsvB,MAAM9F,EAAE,MAAMJ,EAAEC,EAAE6oZ,aAA+Bv1a,GAAlBq2B,EAAE3J,EAAEgtY,eAAkB/qY,QAAQmpZ,GAAGz0a,EAAEqpB,GAAG0rZ,GAAG1rZ,EAAED,EAAE,KAAKpZ,GAAG,IAAIs/E,EAAEjmE,EAAEgtY,cAA0B,GAAZjtY,EAAEkmE,EAAEhkE,QAAW0H,EAAE4xY,aAAY,CAAC,GAAG5xY,EAAE,CAAC1H,QAAQlC,EAAEw7Y,cAAa,EAAGtsX,MAAMg3C,EAAEh3C,MAAMksY,0BAA0Bl1V,EAAEk1V,0BAA0BjI,YAAYjtV,EAAEitV,aAAalzZ,EAAE+qZ,YAAYC,UAChfrhZ,EAAE3J,EAAEgtY,cAAcrjY,EAAU,IAAR3J,EAAE+1F,MAAU,CAAuB/1F,EAAE6zZ,GAAGl9a,EAAEqpB,EAAED,EAAEpZ,EAAjCrT,EAAE+9a,GAAGprZ,MAAM9F,EAAE,MAAMH,IAAmB,MAAMrpB,CAAC,CAAM,GAAGopB,IAAIzsB,EAAE,CAAuB0sB,EAAE6zZ,GAAGl9a,EAAEqpB,EAAED,EAAEpZ,EAAjCrT,EAAE+9a,GAAGprZ,MAAM9F,EAAE,MAAMH,IAAmB,MAAMrpB,CAAC,CAAM,IAAI4xa,GAAGzC,GAAG9lZ,EAAE45Y,UAAU4B,cAAcliU,YAAYgvU,GAAGtoZ,EAAEiqH,IAAE,EAAGu+R,GAAG,KAAK7ha,EAAEyma,GAAGptZ,EAAE,KAAKD,EAAEpZ,GAAGqZ,EAAEoxF,MAAMzqG,EAAEA,GAAGA,EAAEovG,OAAe,EAATpvG,EAAEovG,MAAS,KAAKpvG,EAAEA,EAAEqoL,OAAQ,KAAI,CAAM,GAALq6O,KAAQtpZ,IAAIzsB,EAAE,CAAC0sB,EAAE0yZ,GAAG/7a,EAAEqpB,EAAErZ,GAAG,MAAMhQ,CAAC,CAAC67a,GAAG77a,EAAEqpB,EAAED,EAAEpZ,EAAE,CAACqZ,EAAEA,EAAEoxF,KAAK,CAAC,OAAOpxF,EAAE,KAAK,EAAE,OAAO4tZ,GAAG5tZ,GAAG,OAAOrpB,GAAGqya,GAAGhpZ,GAAGD,EAAEC,EAAE5sB,KAAKE,EAAE0sB,EAAE6oZ,aAAal/Y,EAAE,OAAOhzB,EAAEA,EAAEwya,cAAc,KAAKljV,EAAE3yF,EAAEjG,SAASk4a,GAAGxlZ,EAAEzsB,GAAG2yF,EAAE,KAAK,OAAOt8D,GAAG47Y,GAAGxlZ,EAAE4J,KAAK3J,EAAE+1F,OAAO,IACnfs9T,GAAG18a,EAAEqpB,GAAGwyZ,GAAG77a,EAAEqpB,EAAEimE,EAAEt/E,GAAGqZ,EAAEoxF,MAAM,KAAK,EAAE,OAAO,OAAOz6G,GAAGqya,GAAGhpZ,GAAG,KAAK,KAAK,GAAG,OAAOo0Z,GAAGz9a,EAAEqpB,EAAErZ,GAAG,KAAK,EAAE,OAAO+ma,GAAG1tZ,EAAEA,EAAE45Y,UAAU4B,eAAez7Y,EAAEC,EAAE6oZ,aAAa,OAAOlya,EAAEqpB,EAAEoxF,MAAMg8G,GAAGptM,EAAE,KAAKD,EAAEpZ,GAAG6ra,GAAG77a,EAAEqpB,EAAED,EAAEpZ,GAAGqZ,EAAEoxF,MAAM,KAAK,GAAG,OAAOrxF,EAAEC,EAAE5sB,KAAKE,EAAE0sB,EAAE6oZ,aAA2C4J,GAAG97a,EAAEqpB,EAAED,EAArCzsB,EAAE0sB,EAAEsmY,cAAcvmY,EAAEzsB,EAAEk2a,GAAGzpZ,EAAEzsB,GAAcqT,GAAG,KAAK,EAAE,OAAO6ra,GAAG77a,EAAEqpB,EAAEA,EAAE6oZ,aAAalia,GAAGqZ,EAAEoxF,MAAM,KAAK,EAAmD,KAAK,GAAG,OAAOohU,GAAG77a,EAAEqpB,EAAEA,EAAE6oZ,aAAax7a,SAASsZ,GAAGqZ,EAAEoxF,MAAM,KAAK,GAAGz6G,EAAE,CACxZ,GADyZopB,EAAEC,EAAE5sB,KAAK46I,SAAS16I,EAAE0sB,EAAE6oZ,aAAal/Y,EAAE3J,EAAEmpZ,cAClfljV,EAAE3yF,EAAE+L,MAAMwqI,GAAE4/R,GAAG1pZ,EAAEg1Y,eAAeh1Y,EAAEg1Y,cAAc9uU,EAAK,OAAOt8D,EAAE,GAAGq4Y,GAAGr4Y,EAAEtqB,MAAM4mF,IAAI,GAAGt8D,EAAEt8B,WAAWiG,EAAEjG,WAAWo5a,GAAGx4a,QAAQ,CAAC+xB,EAAE0yZ,GAAG/7a,EAAEqpB,EAAErZ,GAAG,MAAMhQ,CAAC,OAAO,IAAc,QAAVgzB,EAAE3J,EAAEoxF,SAAiBznF,EAAEmwY,OAAO95Y,GAAG,OAAO2J,GAAG,CAAC,IAAI/xB,EAAE+xB,EAAEugZ,aAAa,GAAG,OAAOtya,EAAE,CAACquF,EAAEt8D,EAAEynF,MAAM,IAAI,IAAIvnF,EAAEjyB,EAAEuya,aAAa,OAAOtgZ,GAAG,CAAC,GAAGA,EAAEsnB,UAAUpxB,EAAE,CAAC,GAAG,IAAI4J,EAAE1rB,IAAI,EAAC4rB,EAAEg2F,IAAI,EAAEl5G,GAAGA,IAAK1I,IAAI,EAAE,IAAIuyC,EAAE7mB,EAAEohZ,YAAY,GAAG,OAAOv6X,EAAE,CAAY,IAAI4E,GAAf5E,EAAEA,EAAE8qJ,QAAeh3H,QAAQ,OAAOlvB,EAAEvrB,EAAEpC,KAAKoC,GAAGA,EAAEpC,KAAK2tB,EAAE3tB,KAAK2tB,EAAE3tB,KAAKoC,GAAG2mB,EAAE8zB,QAAQz6C,CAAC,CAAC,CAACF,EAAEygZ,OAAOzja,EAAgB,QAAdkjB,EAAEF,EAAEkwY,aAAqBhwY,EAAEugZ,OAAOzja,GAAGoja,GAAGpgZ,EAAEmwY,OAClfnzZ,EAAEqZ,GAAGpoB,EAAEwya,OAAOzja,EAAE,KAAK,CAACkjB,EAAEA,EAAEpC,IAAI,CAAC,MAAM,GAAG,KAAKkC,EAAE1rB,IAAIgoF,EAAEt8D,EAAEv2B,OAAO4sB,EAAE5sB,KAAK,KAAKu2B,EAAEynF,WAAW,GAAG,KAAKznF,EAAE1rB,IAAI,CAAY,GAAG,QAAdgoF,EAAEt8D,EAAEmwY,QAAmB,MAAM7zY,MAAM9F,EAAE,MAAM8lE,EAAEmkV,OAAOzja,EAAgB,QAAd/O,EAAEquF,EAAE4zU,aAAqBjia,EAAEwya,OAAOzja,GAAGoja,GAAG9jV,EAAEt/E,EAAEqZ,GAAGimE,EAAEt8D,EAAEqlK,OAAO,MAAM/oG,EAAEt8D,EAAEynF,MAAM,GAAG,OAAOnrB,EAAEA,EAAE6zU,OAAOnwY,OAAO,IAAIs8D,EAAEt8D,EAAE,OAAOs8D,GAAG,CAAC,GAAGA,IAAIjmE,EAAE,CAACimE,EAAE,KAAK,KAAK,CAAa,GAAG,QAAft8D,EAAEs8D,EAAE+oG,SAAoB,CAACrlK,EAAEmwY,OAAO7zU,EAAE6zU,OAAO7zU,EAAEt8D,EAAE,KAAK,CAACs8D,EAAEA,EAAE6zU,MAAM,CAACnwY,EAAEs8D,CAAC,CAACusV,GAAG77a,EAAEqpB,EAAE1sB,EAAEjG,SAASsZ,GAAGqZ,EAAEA,EAAEoxF,KAAK,CAAC,OAAOpxF,EAAE,KAAK,EAAE,OAAO1sB,EAAE0sB,EAAE5sB,KAAK2sB,EAAEC,EAAE6oZ,aAAax7a,SAAS48a,GAAGjqZ,EAAErZ,GAAWoZ,EAAEA,EAAVzsB,EAAEg3a,GAAGh3a,IAAU0sB,EAAE+1F,OAAO,EAAEy8T,GAAG77a,EAAEqpB,EAAED,EAAEpZ,GACpfqZ,EAAEoxF,MAAM,KAAK,GAAG,OAAgB99G,EAAEk2a,GAAXzpZ,EAAEC,EAAE5sB,KAAY4sB,EAAE6oZ,cAA6B8J,GAAGh8a,EAAEqpB,EAAED,EAAtBzsB,EAAEk2a,GAAGzpZ,EAAE3sB,KAAKE,GAAcqT,GAAG,KAAK,GAAG,OAAOksa,GAAGl8a,EAAEqpB,EAAEA,EAAE5sB,KAAK4sB,EAAE6oZ,aAAalia,GAAG,KAAK,GAAG,OAAOoZ,EAAEC,EAAE5sB,KAAKE,EAAE0sB,EAAE6oZ,aAAav1a,EAAE0sB,EAAEsmY,cAAcvmY,EAAEzsB,EAAEk2a,GAAGzpZ,EAAEzsB,GAAGigb,GAAG58a,EAAEqpB,GAAGA,EAAE/hB,IAAI,EAAE6oa,GAAG/mZ,IAAIppB,GAAE,EAAGswa,GAAGjnZ,IAAIrpB,GAAE,EAAGsza,GAAGjqZ,EAAErZ,GAAG0la,GAAGrsZ,EAAED,EAAEzsB,GAAGm5a,GAAGzsZ,EAAED,EAAEzsB,EAAEqT,GAAG+sa,GAAG,KAAK1zZ,EAAED,GAAE,EAAGppB,EAAEgQ,GAAG,KAAK,GAAG,OAAOyua,GAAGz+a,EAAEqpB,EAAErZ,GAAG,KAAK,GAAG,OAAOosa,GAAGp8a,EAAEqpB,EAAErZ,GAAG,MAAMsf,MAAM9F,EAAE,IAAIH,EAAE/hB,KAAM,EAYxC,IAAIsuI,GAAG,oBAAoBkvS,YAAYA,YAAY,SAAS9kb,GAAGlI,QAAQD,MAAMmI,EAAE,EAAE,SAAS+kb,GAAG/kb,GAAGijB,KAAK+ha,cAAchlb,CAAC,CACjI,SAASilb,GAAGjlb,GAAGijB,KAAK+ha,cAAchlb,CAAC,CAC5J,SAAS4mG,GAAG5mG,GAAG,SAASA,GAAG,IAAIA,EAAEy+F,UAAU,IAAIz+F,EAAEy+F,UAAU,KAAKz+F,EAAEy+F,SAAS,CAAC,SAAS8Q,GAAGvvG,GAAG,SAASA,GAAG,IAAIA,EAAEy+F,UAAU,IAAIz+F,EAAEy+F,UAAU,KAAKz+F,EAAEy+F,WAAW,IAAIz+F,EAAEy+F,UAAU,iCAAiCz+F,EAAE68J,WAAW,CAAC,SAASqoR,KAAK,CAExa,SAASC,GAAGnlb,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAG,IAAIq2B,EAAEhjB,EAAEgwa,oBAAoB,GAAGhtZ,EAAE,CAAC,IAAIs8D,EAAEt8D,EAAE,GAAG,oBAAoBr2B,EAAE,CAAC,IAAIsE,EAAEtE,EAAEA,EAAE,WAAW,IAAIqD,EAAE2kb,GAAGr1V,GAAGruF,EAAEyoB,KAAK1pB,EAAE,CAAC,CAAC0kb,GAAGr7Z,EAAEimE,EAAEtvF,EAAErD,EAAE,MAAM2yF,EADxJ,SAAYtvF,EAAEqpB,EAAErZ,EAAEoZ,EAAEzsB,GAAG,GAAGA,EAAE,CAAC,GAAG,oBAAoBysB,EAAE,CAAC,IAAI4J,EAAE5J,EAAEA,EAAE,WAAW,IAAIppB,EAAE2kb,GAAGr1V,GAAGt8D,EAAEtJ,KAAK1pB,EAAE,CAAC,CAAC,IAAIsvF,EAAEm1V,GAAGp7Z,EAAED,EAAEppB,EAAE,EAAE,MAAK,EAAG,EAAG,GAAGklb,IAAmF,OAA/Ellb,EAAEggb,oBAAoB1wV,EAAEtvF,EAAE+ta,IAAIz+U,EAAEh4F,QAAQu2a,GAAG,IAAI7ta,EAAEy+F,SAASz+F,EAAE8hG,WAAW9hG,GAAGyjb,KAAYn0V,CAAC,CAAC,KAAK3yF,EAAEqD,EAAEosJ,WAAWpsJ,EAAEipB,YAAYtsB,GAAG,GAAG,oBAAoBysB,EAAE,CAAC,IAAInoB,EAAEmoB,EAAEA,EAAE,WAAW,IAAIppB,EAAE2kb,GAAGzxZ,GAAGjyB,EAAEyoB,KAAK1pB,EAAE,CAAC,CAAC,IAAIkzB,EAAEqxZ,GAAGvkb,EAAE,GAAE,EAAG,KAAK,GAAK,EAAG,EAAG,GAAGklb,IAA0G,OAAtGllb,EAAEggb,oBAAoB9sZ,EAAElzB,EAAE+ta,IAAI76Y,EAAE57B,QAAQu2a,GAAG,IAAI7ta,EAAEy+F,SAASz+F,EAAE8hG,WAAW9hG,GAAGyjb,IAAG,WAAWiB,GAAGr7Z,EAAE6J,EAAEljB,EAAEoZ,EAAE,IAAU8J,CAAC,CACpU0gF,CAAG5jG,EAAEqZ,EAAErpB,EAAErD,EAAEysB,GAAG,OAAOu7Z,GAAGr1V,EAAE,CAHpL21V,GAAG9ha,UAAUnrB,OAAO+sb,GAAG5ha,UAAUnrB,OAAO,SAASgI,GAAG,IAAIqpB,EAAEpG,KAAK+ha,cAAc,GAAG,OAAO37Z,EAAE,MAAMiG,MAAM9F,EAAE,MAAMk7Z,GAAG1kb,EAAEqpB,EAAE,KAAK,KAAK,EAAE47Z,GAAG9ha,UAAU4sO,QAAQg1L,GAAG5ha,UAAU4sO,QAAQ,WAAW,IAAI/vP,EAAEijB,KAAK+ha,cAAc,GAAG,OAAOhlb,EAAE,CAACijB,KAAK+ha,cAAc,KAAK,IAAI37Z,EAAErpB,EAAE6ka,cAAc4e,IAAG,WAAWiB,GAAG,KAAK1kb,EAAE,KAAK,KAAK,IAAGqpB,EAAE0kZ,IAAI,IAAI,CAAC,EACzTkX,GAAG9ha,UAAUiia,2BAA2B,SAASplb,GAAG,GAAGA,EAAE,CAAC,IAAIqpB,EAAEm2Y,KAAKx/Z,EAAE,CAACwka,UAAU,KAAKnnZ,OAAOrd,EAAEi5J,SAAS5vI,GAAG,IAAI,IAAIrZ,EAAE,EAAEA,EAAEiwZ,GAAGn7Z,QAAQ,IAAIukB,GAAGA,EAAE42Y,GAAGjwZ,GAAGipJ,SAASjpJ,KAAKiwZ,GAAGl5Y,OAAO/W,EAAE,EAAEhQ,GAAG,IAAIgQ,GAAGqwZ,GAAGrga,EAAE,CAAC,EAEXq/Z,GAAG,SAASr/Z,GAAG,OAAOA,EAAEsH,KAAK,KAAK,EAAE,IAAI+hB,EAAErpB,EAAEija,UAAU,GAAG55Y,EAAE/xB,QAAQ++Z,cAAcuO,aAAa,CAAC,IAAI50Z,EAAE4uZ,GAAGv1Y,EAAE26Y,cAAc,IAAIh0Z,IAAImvZ,GAAG91Y,EAAI,EAAFrZ,GAAKoya,GAAG/4Z,EAAEmqY,MAAK,KAAO,EAAFpnL,MAAO4yM,GAAGxrB,KAAI,IAAIqd,MAAM,CAAC,MAAM,KAAK,GAAG4S,IAAG,WAAW,IAAIp6Z,EAAE4qZ,GAAGj0a,EAAE,GAAG,GAAG,OAAOqpB,EAAE,CAAC,IAAIrZ,EAAEm8N,KAAIopM,GAAGlsZ,EAAErpB,EAAE,EAAEgQ,EAAE,CAAC,IAAGqnE,GAAGr3E,EAAE,GAAG,EAC/bs/Z,GAAG,SAASt/Z,GAAG,GAAG,KAAKA,EAAEsH,IAAI,CAAC,IAAI+hB,EAAE4qZ,GAAGj0a,EAAE,WAAW,GAAG,OAAOqpB,EAAaksZ,GAAGlsZ,EAAErpB,EAAE,UAAXmsO,MAAwB90J,GAAGr3E,EAAE,UAAU,CAAC,EAAEu/Z,GAAG,SAASv/Z,GAAG,GAAG,KAAKA,EAAEsH,IAAI,CAAC,IAAI+hB,EAAEisZ,GAAGt1a,GAAGgQ,EAAEika,GAAGj0a,EAAEqpB,GAAG,GAAG,OAAOrZ,EAAaula,GAAGvla,EAAEhQ,EAAEqpB,EAAX8iN,MAAgB90J,GAAGr3E,EAAEqpB,EAAE,CAAC,EAAEm2Y,GAAG,WAAW,OAAOrM,EAAC,EAAEsM,GAAG,SAASz/Z,EAAEqpB,GAAG,IAAIrZ,EAAEmjZ,GAAE,IAAI,OAAOA,GAAEnzZ,EAAEqpB,GAAG,CAAC,QAAQ8pY,GAAEnjZ,CAAC,CAAC,EAClSynZ,GAAG,SAASz3Z,EAAEqpB,EAAErZ,GAAG,OAAOqZ,GAAG,IAAK,QAAyB,GAAjB8lF,EAAGnvG,EAAEgQ,GAAGqZ,EAAErZ,EAAEjX,KAAQ,UAAUiX,EAAEvT,MAAM,MAAM4sB,EAAE,CAAC,IAAIrZ,EAAEhQ,EAAEgQ,EAAE8xF,YAAY9xF,EAAEA,EAAE8xF,WAAsF,IAA3E9xF,EAAEA,EAAE4xF,iBAAiB,cAAcjgD,KAAKC,UAAU,GAAGv4B,GAAG,mBAAuBA,EAAE,EAAEA,EAAErZ,EAAElL,OAAOukB,IAAI,CAAC,IAAID,EAAEpZ,EAAEqZ,GAAG,GAAGD,IAAIppB,GAAGopB,EAAEjc,OAAOnN,EAAEmN,KAAK,CAAC,IAAIxQ,EAAEu8Z,GAAG9vY,GAAG,IAAIzsB,EAAE,MAAM2yB,MAAM9F,EAAE,KAAKirY,EAAGrrY,GAAG+lF,EAAG/lF,EAAEzsB,EAAE,CAAC,CAAC,CAAC,MAAM,IAAK,WAAWo5Z,GAAG/1Z,EAAEgQ,GAAG,MAAM,IAAK,SAAmB,OAAVqZ,EAAErZ,EAAEtH,QAAektZ,GAAG51Z,IAAIgQ,EAAEwyB,SAASnZ,GAAE,GAAI,EAAEiwY,GAAGkqB,GAAG1pB,GAAG2pB,GACpa,IAAI/mV,GAAG,CAAC2oV,uBAAsB,EAAGC,OAAO,CAACptB,GAAGoS,GAAGpR,GAAGC,GAAGE,GAAGmqB,KAAK/6Z,GAAG,CAAC88Z,wBAAwBjlB,GAAGklB,WAAW,EAAExzX,QAAQ,SAASyzX,oBAAoB,aAC1IC,GAAG,CAACF,WAAW/8Z,GAAG+8Z,WAAWxzX,QAAQvpC,GAAGupC,QAAQyzX,oBAAoBh9Z,GAAGg9Z,oBAAoBE,eAAel9Z,GAAGk9Z,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,gBAAgB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqB/0Y,EAAGqmX,uBAAuB2uB,wBAAwB,SAAStmb,GAAW,OAAO,QAAfA,EAAEw9Z,GAAGx9Z,IAAmB,KAAKA,EAAEija,SAAS,EAAEsiB,wBAAwB98Z,GAAG88Z,yBARjN,WAAc,OAAO,IAAI,EASpUgB,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,KAAKC,kBAAkB,kCAAkC,GAAG,qBAAqBC,+BAA+B,CAAC,IAAIh5U,GAAGg5U,+BAA+B,IAAIh5U,GAAG4/J,YAAY5/J,GAAGi5U,cAAc,IAAI3oB,GAAGtwT,GAAGs5D,OAAOu+Q,IAAIprT,GAAGzsB,EAAE,CAAC,MAAM7tG,IAAG,CAAC,CAACvF,EAAQi9Z,mDAAmDh7T,GAC9YjiG,EAAQi7T,aAAa,SAAS11T,EAAEqpB,GAAG,IAAIrZ,EAAE,EAAE2f,UAAU7qB,aAAQ,IAAS6qB,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAIi3E,GAAGv9E,GAAG,MAAMiG,MAAM9F,EAAE,MAAM,OAbuH,SAAYxpB,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAE,EAAEuG,UAAU7qB,aAAQ,IAAS6qB,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAAC8kO,SAASu+J,EAAGzkY,IAAI,MAAMnF,EAAE,KAAK,GAAGA,EAAE1yB,SAASsJ,EAAE6ka,cAAcx7Y,EAAEsvK,eAAe3oL,EAAE,CAa1R6pJ,CAAG75J,EAAEqpB,EAAE,KAAKrZ,EAAE,EAAEvV,EAAQssb,WAAW,SAAS/mb,EAAEqpB,GAAG,IAAIu9E,GAAG5mG,GAAG,MAAMsvB,MAAM9F,EAAE,MAAM,IAAIxZ,GAAE,EAAGoZ,EAAE,GAAGzsB,EAAEi5I,GAA4P,OAAzP,OAAOvsH,QAAG,IAASA,KAAI,IAAKA,EAAE29Z,sBAAsBh3a,GAAE,QAAI,IAASqZ,EAAEqzY,mBAAmBtzY,EAAEC,EAAEqzY,uBAAkB,IAASrzY,EAAE26Z,qBAAqBrnb,EAAE0sB,EAAE26Z,qBAAqB36Z,EAAEk7Z,GAAGvkb,EAAE,GAAE,EAAG,KAAK,EAAKgQ,EAAE,EAAGoZ,EAAEzsB,GAAGqD,EAAE+ta,IAAI1kZ,EAAE/xB,QAAQu2a,GAAG,IAAI7ta,EAAEy+F,SAASz+F,EAAE8hG,WAAW9hG,GAAU,IAAI+kb,GAAG17Z,EAAE,EACrf5uB,EAAQwsb,YAAY,SAASjnb,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAEy+F,SAAS,OAAOz+F,EAAE,IAAIqpB,EAAErpB,EAAEs1Z,gBAAgB,QAAG,IAASjsY,EAAE,CAAC,GAAG,oBAAoBrpB,EAAEhI,OAAO,MAAMs3B,MAAM9F,EAAE,MAAiC,MAA3BxpB,EAAE4F,OAAOC,KAAK7F,GAAG6gD,KAAK,KAAWvxB,MAAM9F,EAAE,IAAIxpB,GAAI,CAAqC,OAA5BA,EAAE,QAAVA,EAAEw9Z,GAAGn0Y,IAAc,KAAKrpB,EAAEija,SAAkB,EAAExoa,EAAQysb,UAAU,SAASlnb,GAAG,OAAOyjb,GAAGzjb,EAAE,EAAEvF,EAAQ0sb,QAAQ,SAASnnb,EAAEqpB,EAAErZ,GAAG,IAAIu/F,GAAGlmF,GAAG,MAAMiG,MAAM9F,EAAE,MAAM,OAAO27Z,GAAG,KAAKnlb,EAAEqpB,GAAE,EAAGrZ,EAAE,EAC/YvV,EAAQ2sb,YAAY,SAASpnb,EAAEqpB,EAAErZ,GAAG,IAAI42F,GAAG5mG,GAAG,MAAMsvB,MAAM9F,EAAE,MAAM,IAAIJ,EAAE,MAAMpZ,GAAGA,EAAEq3a,iBAAiB,KAAK1qb,GAAE,EAAGq2B,EAAE,GAAGs8D,EAAEsmD,GAAyO,GAAtO,OAAO5lI,QAAG,IAASA,KAAI,IAAKA,EAAEg3a,sBAAsBrqb,GAAE,QAAI,IAASqT,EAAE0sZ,mBAAmB1pY,EAAEhjB,EAAE0sZ,uBAAkB,IAAS1sZ,EAAEg0a,qBAAqB10V,EAAEt/E,EAAEg0a,qBAAqB36Z,EAAEo7Z,GAAGp7Z,EAAE,KAAKrpB,EAAE,EAAE,MAAMgQ,EAAEA,EAAE,KAAKrT,EAAE,EAAGq2B,EAAEs8D,GAAGtvF,EAAE+ta,IAAI1kZ,EAAE/xB,QAAQu2a,GAAG7ta,GAAMopB,EAAE,IAAIppB,EAAE,EAAEA,EAAEopB,EAAEtkB,OAAO9E,IAA2BrD,GAAhBA,GAAPqT,EAAEoZ,EAAEppB,IAAOsnb,aAAgBt3a,EAAEunZ,SAAS,MAAMluY,EAAEi7Z,gCAAgCj7Z,EAAEi7Z,gCAAgC,CAACt0a,EAAErT,GAAG0sB,EAAEi7Z,gCAAgCrga,KAAKjU,EACvhBrT,GAAG,OAAO,IAAIsob,GAAG57Z,EAAE,EAAE5uB,EAAQzC,OAAO,SAASgI,EAAEqpB,EAAErZ,GAAG,IAAIu/F,GAAGlmF,GAAG,MAAMiG,MAAM9F,EAAE,MAAM,OAAO27Z,GAAG,KAAKnlb,EAAEqpB,GAAE,EAAGrZ,EAAE,EAAEvV,EAAQ8sb,uBAAuB,SAASvnb,GAAG,IAAIuvG,GAAGvvG,GAAG,MAAMsvB,MAAM9F,EAAE,KAAK,QAAOxpB,EAAEggb,sBAAqByD,IAAG,WAAW0B,GAAG,KAAK,KAAKnlb,GAAE,GAAG,WAAWA,EAAEggb,oBAAoB,KAAKhgb,EAAE+ta,IAAI,IAAI,GAAE,KAAG,EAAM,EAAEtza,EAAQ+sb,wBAAwBhE,GAC/U/ob,EAAQgtb,oCAAoC,SAASznb,EAAEqpB,EAAErZ,EAAEoZ,GAAG,IAAImmF,GAAGv/F,GAAG,MAAMsf,MAAM9F,EAAE,MAAM,GAAG,MAAMxpB,QAAG,IAASA,EAAEs1Z,gBAAgB,MAAMhmY,MAAM9F,EAAE,KAAK,OAAO27Z,GAAGnlb,EAAEqpB,EAAErZ,GAAE,EAAGoZ,EAAE,EAAE3uB,EAAQu3D,QAAQ,8DChU7L,IAAIvT,EAAI/kD,EAAQ,MAEde,EAAQssb,WAAatoY,EAAEsoY,WACvBtsb,EAAQ2sb,YAAc3oY,EAAE2oY,0CCH1B,SAASM,IAEP,GAC4C,qBAAnCb,gCAC4C,oBAA5CA,+BAA+Ba,SAcxC,IAEEb,+BAA+Ba,SAASA,EAC1C,CAAE,MAAOv5X,GAGPr2D,QAAQD,MAAMs2D,EAChB,CACF,CAKEu5X,GACAz6B,EAAOxyZ,QAAU,EAAjBwyZ,uCChCEpzW,EAAGnqB,EAELmqB,EAAIngD,EAAQ,MACZg2B,EAAIh2B,EAAQ,MAMImgD,EAAEmY,QACKnY,EAAEijX,eAC3Bria,EAAQ,GAAuBo/C,EAAE+iX,qBACJ/iX,EAAE8iX,mBACI9iX,EAAEgjX,yBACJntY,EAAE2xY,4KCXnC,IAAIprX,EAJJ,SAA0B6iB,GACxBA,GACF,EAIO,MAEM6uX,EAAWA,IAAM1xY,gBCR9B,MAAM2xY,EAAaxuY,OAAO03V,IAAI,uBACxB+2C,EAA2B,qBAAfztY,WAA6BA,WAE/C,CAAC,EAED,SAASmoD,IACP,IAAIulV,EAEJ,IAAKtxb,EAAAA,cAAqB,MAAO,CAAC,EAClC,MAAMuxb,EAAkD,OAApCD,EAAiBD,EAAGD,IAAuBE,EAAiBD,EAAGD,GAAc,IAAIz1P,IACrG,IAAI61P,EAAcD,EAAWr6Z,IAAIl3B,EAAAA,eAYjC,OAVKwxb,IACHA,EAAcxxb,EAAAA,cAAoB,MAMlCuxb,EAAWnzZ,IAAIp+B,EAAAA,cAAqBwxb,IAG/BA,CACT,CAEO,MAAMC,EAAiC1lV,IChBvC,SAAS2lV,IAAoD,IAA7B1tY,EAAO7qB,UAAA7qB,OAAA,QAAA3O,IAAAw5B,UAAA,GAAAA,UAAA,GAAGs4Z,EAC/C,OAAO,WAOL,OANqBnxB,EAAAA,EAAAA,YAAWt8W,EAOlC,CACF,CAkBO,MAAM2tY,EAA+BD,IClC5C,IAAIE,ECJ0BC,KAC5B,MAAM,IAAI/4Z,MAAM,wBAAwB,EDInC,MAIDg5Z,EAAcA,CAACtob,EAAGqpB,IAAMrpB,IAAMqpB,EAS7B,SAASk/Z,IAAgD,IAA7B/tY,EAAO7qB,UAAA7qB,OAAA,QAAA3O,IAAAw5B,UAAA,GAAAA,UAAA,GAAGs4Z,EAC3C,MAAME,EAAkB3tY,IAAYytY,EAAoBO,EAAyBN,EAAuB1tY,GACxG,OAAO,SAAqBgnD,GAAoC,IAA1BinV,EAAmB94Z,UAAA7qB,OAAA,QAAA3O,IAAAw5B,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC3D,MAAM,WACJ+4Z,EAAaJ,EAAW,eACxBK,EAA0B,UAC1BC,GACiC,oBAAxBH,EAAqC,CAC9CC,WAAYD,GACVA,EAgBJ,MAAM,MACJt9W,EAAK,aACL09W,EAAY,eACZC,EACAH,eAAgBI,EAChBH,UAAWI,GACTb,IAEEc,IADW5mb,EAAAA,EAAAA,SAAO,IACAqV,EAAAA,EAAAA,aAAY,CAClC,CAAC8pF,EAASzoG,MAAM/C,GACGwrG,EAASxrG,IAyD5BwrG,EAASzoG,MAAO,CAACyoG,EAAUunV,EAAsBJ,KAC7Cjkb,EAAgB0jb,EAAiCS,EAAaK,aAAc/9W,EAAMyG,SAAUk3W,GAAkB39W,EAAMyG,SAAUq3W,EAAiBP,GAErJ,OADAv2W,EAAAA,EAAAA,eAAcztE,GACPA,CACT,CACF,CAyBO,MAAMinE,EAA2B48W,oBEpExC,MAAMY,EAAgB,CACpB5jC,MAAAA,GAAU,EAEV73X,IAAKA,IAAM,IAEN,SAAS07Z,EAAmBj+W,EAAOk+W,GACxC,IAAI77X,EACAy8W,EAAYkf,EAEZG,EAAsB,EAEtBC,GAAiB,EAoBrB,SAASC,IACHX,EAAaY,eACfZ,EAAaY,eAEjB,CAMA,SAASC,IACPJ,IAEK97X,IACHA,EAAc67X,EAAYA,EAAUH,aAAaM,GAAuBr+W,EAAM3b,UAAUg6X,GACxFvf,EAlHN,WACE,MAAMh0X,EAAQ0xY,IACd,IAAI7+X,EAAQ,KACRviC,EAAO,KACX,MAAO,CACLi9B,KAAAA,GACEsF,EAAQ,KACRviC,EAAO,IACT,EAEAg/X,MAAAA,GACEtvW,GAAM,KACJ,IAAIuW,EAAW1D,EAEf,KAAO0D,GACLA,EAASsM,WACTtM,EAAWA,EAAS17B,IACtB,GAEJ,EAEApD,GAAAA,GACE,IAAIu8Y,EAAY,GACZz9W,EAAW1D,EAEf,KAAO0D,GACLy9W,EAAUhmZ,KAAKuoC,GACfA,EAAWA,EAAS17B,KAGtB,OAAOm5Y,CACT,EAEAz6W,SAAAA,CAAUsJ,GACR,IAAI6wX,GAAe,EACfn9X,EAAWjmC,EAAO,CACpBuyC,WACAhoC,KAAM,KACNC,KAAMxK,GASR,OANIimC,EAASz7B,KACXy7B,EAASz7B,KAAKD,KAAO07B,EAErB1D,EAAQ0D,EAGH,WACAm9X,GAA0B,OAAV7gY,IACrB6gY,GAAe,EAEXn9X,EAAS17B,KACX07B,EAAS17B,KAAKC,KAAOy7B,EAASz7B,KAE9BxK,EAAOimC,EAASz7B,KAGdy7B,EAASz7B,KACXy7B,EAASz7B,KAAKD,KAAO07B,EAAS17B,KAE9Bg4B,EAAQ0D,EAAS17B,KAErB,CACF,EAGJ,CAgDkB84Z,GAEhB,CAEA,SAASC,IACPP,IAEI97X,GAAuC,IAAxB87X,IACjB97X,IACAA,OAAcr3D,EACd8za,EAAUzmX,QACVymX,EAAYkf,EAEhB,CAgBA,MAAMN,EAAe,CACnBK,aA/DF,SAAsB18X,GACpBk9X,IACA,MAAMI,EAAkB7f,EAAUz6W,UAAUhD,GAE5C,IAAIw+G,GAAU,EACd,MAAO,KACAA,IACHA,GAAU,EACV8+Q,IACAD,IACF,CAEJ,EAoDEE,iBAlDF,WACE9f,EAAU1kB,QACZ,EAiDEikC,sBACAG,aA1CF,WACE,OAAOJ,CACT,EAyCEG,aAnBF,WACOH,IACHA,GAAiB,EACjBG,IAEJ,EAeEG,eAbF,WACMN,IACFA,GAAiB,EACjBM,IAEJ,EASEG,aAAcA,IAAM/f,GAEtB,OAAO4e,CACT,CCnJO,MACM77W,IADiC,qBAAXhxE,QAAqD,qBAApBA,OAAOyV,UAAqE,qBAAlCzV,OAAOyV,SAASrV,eACzE5F,EAAAA,gBAAwBA,EAAAA,UCO7E,IAAIgha,EAAuB6wB,KC6B3B,QA1CA,SAAiB1yb,GAOd,IAPe,MAChBw1E,EAAK,QACL3wB,EAAO,SACP9jD,EAAQ,YACRuzb,EAAW,eACXtB,EAAiB,OAAM,UACvBC,EAAY,QACbjzb,EACC,MAAMmlP,EAAetkP,EAAAA,SAAc,KACjC,MAAMqyb,EAAeO,EAAmBj+W,GACxC,MAAO,CACLA,QACA09W,eACAC,eAAgBmB,EAAc,IAAMA,OAAc9zb,EAClDwyb,iBACAC,YACD,GACA,CAACz9W,EAAO8+W,EAAatB,EAAgBC,IAClCpmC,EAAgBhsZ,EAAAA,SAAc,IAAM20E,EAAMyG,YAAY,CAACzG,IAC7D6B,GAA0B,KACxB,MAAM,aACJ67W,GACE/tM,EAQJ,OAPA+tM,EAAaY,cAAgBZ,EAAakB,iBAC1ClB,EAAaa,eAETlnC,IAAkBr3U,EAAMyG,YAC1Bi3W,EAAakB,mBAGR,KACLlB,EAAagB,iBACbhB,EAAaY,mBAAgBtzb,CAAS,CACvC,GACA,CAAC2kP,EAAc0nK,IAClB,MAAM0nC,EAAU1vY,GAAWytY,EAE3B,OAAoBzxb,EAAAA,cAAoB0zb,EAAQzzM,SAAU,CACxD/tO,MAAOoyO,GACNpkP,EACL,ECpCO,SAASyzb,IAA6C,IAA7B3vY,EAAO7qB,UAAA7qB,OAAA,QAAA3O,IAAAw5B,UAAA,GAAAA,UAAA,GAAGs4Z,EACxC,MAAME,EACN3tY,IAAYytY,EAAoBO,EAChCN,EAAuB1tY,GACvB,OAAO,WACL,MAAM,MACJ2wB,GACEg9W,IAEJ,OAAOh9W,CACT,CACF,CAiBO,MAAMkD,EAAwB87W,IC5B9B,SAASC,IAAgD,IAA7B5vY,EAAO7qB,UAAA7qB,OAAA,QAAA3O,IAAAw5B,UAAA,GAAAA,UAAA,GAAGs4Z,EAC3C,MAAM55W,EACN7zB,IAAYytY,EAAoBoC,EAAkBF,EAAgB3vY,GAClE,OAAO,WAGL,OAFc6zB,IAEDpN,QACf,CACF,CAuBO,MAAMyK,EAA2B0+W,ICxCxC,SAAStqP,EAAG1yH,EAAGkmB,GACb,OAAIlmB,IAAMkmB,EACK,IAANlmB,GAAiB,IAANkmB,GAAW,EAAIlmB,IAAM,EAAIkmB,EAEpClmB,IAAMA,GAAKkmB,IAAMA,CAE5B,CAEe,SAAS9mB,EAAa89W,EAAMC,GACzC,GAAIzqP,EAAGwqP,EAAMC,GAAO,OAAO,EAE3B,GAAoB,kBAATD,GAA8B,OAATA,GAAiC,kBAATC,GAA8B,OAATA,EAC3E,OAAO,EAGT,MAAMC,EAAQ5kb,OAAOC,KAAKykb,GACpBG,EAAQ7kb,OAAOC,KAAK0kb,GAC1B,GAAIC,EAAM1lb,SAAW2lb,EAAM3lb,OAAQ,OAAO,EAE1C,IAAK,IAAI3B,EAAI,EAAGA,EAAIqnb,EAAM1lb,OAAQ3B,IAChC,IAAKyC,OAAOud,UAAUsG,eAAeC,KAAK6ga,EAAMC,EAAMrnb,MAAQ28L,EAAGwqP,EAAKE,EAAMrnb,IAAKonb,EAAKC,EAAMrnb,KAC1F,OAAO,EAIX,OAAO,CACT,CRrBqC80C,MHEbyyY,EGFazyY,ESIfmwY,EAAAA,iCTHpBA,EAAmCnwY,EIaJA,KAC/Bu/W,EAAuBv/W,CAAE,EKV3B0yY,CAAkBnzB,EAAAA,sBZHMkzB,EYMfz0Y,EAAAA,wBZN2BA,EAAQy0Y,iCaE6Zx0N,EAAxb7sM,EAAE+vB,OAAO03V,IAAI,iBAAiB9gY,EAAEopC,OAAO03V,IAAI,gBAAgB1nX,EAAEgwB,OAAO03V,IAAI,kBAAkBn0Y,EAAEy8C,OAAO03V,IAAI,qBAAqB99W,EAAEomB,OAAO03V,IAAI,kBAAkBxhT,EAAEl2C,OAAO03V,IAAI,kBAAkB7vY,EAAEm4C,OAAO03V,IAAI,iBAAiB59W,EAAEkmB,OAAO03V,IAAI,wBAAwBj3V,EAAET,OAAO03V,IAAI,qBAAqBryV,EAAErF,OAAO03V,IAAI,kBAAkBptY,EAAE01C,OAAO03V,IAAI,uBAAuBtnX,EAAE4vB,OAAO03V,IAAI,cAAcrtY,EAAE21C,OAAO03V,IAAI,cAAcjxY,EAAEu5C,OAAO03V,IAAI,mBACtb,SAAS3gT,EAAEnwF,GAAG,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIm3E,EAAEn3E,EAAEy0P,SAAS,OAAOt9K,GAAG,KAAK9tD,EAAE,OAAOrpB,EAAEA,EAAEvD,MAAQ,KAAK2sB,EAAE,KAAK4J,EAAE,KAAKr2B,EAAE,KAAK8hD,EAAE,KAAK/6C,EAAE,OAAO1D,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEy0P,UAAY,KAAKvhO,EAAE,KAAKjyB,EAAE,KAAK44C,EAAE,KAAKp2C,EAAE,KAAK+lB,EAAE,KAAK8lE,EAAE,OAAOtvF,EAAE,QAAQ,OAAOm3E,GAAG,KAAKnnE,EAAE,OAAOmnE,EAAE,CAAC,CADkM++I,EAAE98K,OAAO03V,IAAI,uDCNtdmc,EAAAA,kVCsEK,MAAM29B,EACXp0b,EAAAA,cAAoD,MAK/C,MAAMq0b,EAAyBr0b,EAAAA,cAEpC,MA0CK,MAAMs0b,EAAoBt0b,EAAAA,cAC/B,MAYK,MAAMu0b,EAAkBv0b,EAAAA,cAC7B,YAaWw0b,EAAex0b,EAAAA,cAAwC,CAClEy0b,OAAQ,KACRz/Y,QAAS,GACT0/Y,aAAa,IAOR,MAAMC,EAAoB30b,EAAAA,cAAyB,MCxEnD,SAAS40b,IACd,OAA4C,MAArC50b,EAAAA,WAAiBu0b,EAC1B,CAYO,SAASM,IAQd,OANED,MADFE,EAAAA,EAAAA,KAAU,GAOH90b,EAAAA,WAAiBu0b,GAAiBvjb,QAC3C,CAkDA,SAASwlE,EACP8B,GAEet4E,EAAAA,WAAiBs0b,GAAmBS,QAKjD/0b,EAAAA,gBAAsBs4E,EAE1B,CAQO,SAAS08W,IACd,IAAI,YAAEN,GAAgB10b,EAAAA,WAAiBw0b,GAGvC,OAAOE,EA2yBT,WACE,IAAI,OAAEO,GAAWC,EAAqBC,EAAeC,mBACjDv1b,EAAKw1b,EAAkBC,EAAoBF,mBAE3CG,EAAYv1b,EAAAA,QAAa,GAsB7B,OArBAw2E,GAA0B,KACxB++W,EAAUz0b,SAAU,CAAI,IAGOd,EAAAA,aAC/B,SAAC4qE,EAAiBpgB,QAAwB,IAAxBA,IAAAA,EAA2B,CAAC,GAKvC+qY,EAAUz0b,UAEG,kBAAP8pE,EACTqqX,EAAOjoZ,SAAS49B,GAEhBqqX,EAAOjoZ,SAAS49B,EAAEyxK,EAAA,CAAIm5M,YAAa31b,GAAO2qD,IAE9C,GACA,CAACyqY,EAAQp1b,GAIb,CAt0BuB41b,GAGvB,WAEIb,MADFE,EAAAA,EAAAA,KAAU,GAOV,IAAIY,EAAoB11b,EAAAA,WAAiBo0b,IACrC,SAAEpjC,EAAQ,UAAEj2W,GAAc/6C,EAAAA,WAAiBs0b,IAC3C,QAAEt/Y,GAAYh1C,EAAAA,WAAiBw0b,IAC7Bv/X,SAAUm/V,GAAqBygC,IAEjCc,EAAqBxqY,KAAKC,WAC5BwqY,EAAAA,EAAAA,IAA2B5gZ,GAAStoC,KAAK0N,GAAUA,EAAM+4Y,gBAGvDoiC,EAAYv1b,EAAAA,QAAa,GAqD7B,OApDAw2E,GAA0B,KACxB++W,EAAUz0b,SAAU,CAAI,IAGOd,EAAAA,aAC/B,SAAC4qE,EAAiBpgB,GAKhB,QALwC,IAAxBA,IAAAA,EAA2B,CAAC,IAKvC+qY,EAAUz0b,QAAS,OAExB,GAAkB,kBAAP8pE,EAET,YADA7vB,EAAU61W,GAAGhmV,GAIf,IAAI1gB,GAAO+pW,EAAAA,EAAAA,IACTrpV,EACAzf,KAAKmE,MAAMqmY,GACXvhC,EACqB,SAArB5pW,EAAQqrY,UASe,MAArBH,GAA0C,MAAb1kC,IAC/B9mW,EAAK+K,SACe,MAAlB/K,EAAK+K,SACD+7V,GACAe,EAAAA,EAAAA,IAAU,CAACf,EAAU9mW,EAAK+K,aAG/BzK,EAAQ7wC,QAAUohC,EAAUphC,QAAUohC,EAAUttB,MACjDy8B,EACAM,EAAQhrD,MACRgrD,EAEJ,GACA,CACEwmW,EACAj2W,EACA46Y,EACAvhC,EACAshC,GAKN,CA1E6CI,EAC7C,CAkKO,SAASC,EACdjlC,EACAC,EACAilC,GAGEpB,MADFE,EAAAA,EAAAA,KAAU,GAOV,IAAI,UAAE/5Y,GAAc/6C,EAAAA,WAAiBs0b,IAC/Bt/Y,QAASihZ,GAAkBj2b,EAAAA,WAAiBw0b,GAC9C0B,EAAaD,EAAcA,EAAc3nb,OAAS,GAClD6nb,EAAeD,EAAaA,EAAWpqY,OAAS,CAAC,EAEjDsqY,GADiBF,GAAaA,EAAWjhY,SACpBihY,EAAaA,EAAW/iC,aAAe,KAC9C+iC,GAAcA,EAAWluR,MAqC3C,IAEIh3J,EAFAqlb,EAAsBxB,IAG1B,GAAI9jC,EAAa,KAAAulC,EACf,IAAIC,EACqB,kBAAhBxlC,GAA2BxgQ,EAAAA,EAAAA,IAAUwgQ,GAAeA,EAGpC,MAAvBqlC,IAC4B,OADFE,EACxBC,EAAkBthY,eAAQ,EAA1BqhY,EAA4Bv9a,WAAWq9a,MAF3CtB,EAAAA,EAAAA,KAAU,GASV9jb,EAAWulb,CACb,MACEvlb,EAAWqlb,EAGb,IAAIphY,EAAWjkD,EAASikD,UAAY,IAChCg+V,EACqB,MAAvBmjC,EACInhY,EACAA,EAAS55C,MAAM+6a,EAAmB9nb,SAAW,IAE/C0mC,GAAU67W,EAAAA,EAAAA,IAAYC,EAAQ,CAAE77V,SAAUg+V,IAkB9C,IAAIujC,EAAkBC,EACpBzhZ,GACEA,EAAQtoC,KAAK0N,GACXhL,OAAO2mB,OAAO,CAAC,EAAG3b,EAAO,CACvB0xC,OAAQ18C,OAAO2mB,OAAO,CAAC,EAAGoga,EAAc/7a,EAAM0xC,QAC9CmJ,UAAU88V,EAAAA,EAAAA,IAAU,CAClBqkC,EAEAr7Y,EAAUw1W,eACNx1W,EAAUw1W,eAAen2Y,EAAM66C,UAAUA,SACzC76C,EAAM66C,WAEZk+V,aACyB,MAAvB/4Y,EAAM+4Y,aACFijC,GACArkC,EAAAA,EAAAA,IAAU,CACRqkC,EAEAr7Y,EAAUw1W,eACNx1W,EAAUw1W,eAAen2Y,EAAM+4Y,cAAcl+V,SAC7C76C,EAAM+4Y,mBAIxB8iC,EACAD,GAMF,OAAIjlC,GAAeylC,EAEfx2b,EAAAA,cAACu0b,EAAgBt0M,SAAQ,CACvB/tO,MAAO,CACLlB,SAAQqrO,EAAA,CACNpnL,SAAU,IACVJ,OAAQ,GACRC,KAAM,GACNt1D,MAAO,KACPu4B,IAAK,WACF/mB,GAEL0lb,eAAgBrgb,EAAAA,GAAe65Y,MAGhCsmC,GAKAA,CACT,CAEA,SAASG,IACP,IAAIt1b,EAoYC,WAAkC,IAAAu1b,EACvC,IAAIv1b,EAAQrB,EAAAA,WAAiB20b,GACzBn1b,EAAQq3b,EAAmBvB,EAAoBwB,eAC/CC,EAAU1B,EAAkBC,EAAoBwB,eAIpD,GAAIz1b,EACF,OAAOA,EAIT,OAAO,OAAPu1b,EAAOp3b,EAAMolO,aAAN,EAAAgyN,EAAeG,EACxB,CAjZcC,GACR57Y,GAAU85W,EAAAA,EAAAA,IAAqB7zZ,GAC5BA,EAAMgS,OAAU,IAAAhS,EAAMi8C,WACzBj8C,aAAiBy3B,MACjBz3B,EAAM+5C,QACN+P,KAAKC,UAAU/pD,GACfunD,EAAQvnD,aAAiBy3B,MAAQz3B,EAAMunD,MAAQ,KAC/CwqC,EAAY,yBACZ6jW,EAAY,CAAE9mb,QAAS,SAAUtD,gBAAiBumF,GAsBtD,OACEpzF,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAI,2CACJA,EAAAA,cAAA,MAAIG,MAAO,CAAE6P,UAAW,WAAaorC,GACpCwN,EAAQ5oD,EAAAA,cAAA,OAAKG,MAAO82b,GAAYruY,GAAe,KAvBtC,KA2BhB,CAEA,MAAMsuY,EAAsBl3b,EAAAA,cAAC22b,EAAqB,MAgB3C,MAAMQ,UAA4Bn3b,EAAAA,UAIvCqzB,WAAAA,CAAY1oB,GACVoyJ,MAAMpyJ,GACN8hB,KAAKjtB,MAAQ,CACXwR,SAAUrG,EAAMqG,SAChBomb,aAAczsb,EAAMysb,aACpB/1b,MAAOsJ,EAAMtJ,MAEjB,CAEA,+BAAOs0Z,CAAyBt0Z,GAC9B,MAAO,CAAEA,MAAOA,EAClB,CAEA,+BAAO08O,CACLpzO,EACAnL,GAUA,OACEA,EAAMwR,WAAarG,EAAMqG,UACD,SAAvBxR,EAAM43b,cAAkD,SAAvBzsb,EAAMysb,aAEjC,CACL/1b,MAAOsJ,EAAMtJ,MACb2P,SAAUrG,EAAMqG,SAChBomb,aAAczsb,EAAMysb,cAQjB,CACL/1b,MAAOsJ,EAAMtJ,OAAS7B,EAAM6B,MAC5B2P,SAAUxR,EAAMwR,SAChBomb,aAAczsb,EAAMysb,cAAgB53b,EAAM43b,aAE9C,CAEAzS,iBAAAA,CAAkBtjb,EAAYg2b,GAC5B/1b,QAAQD,MACN,wDACAA,EACAg2b,EAEJ,CAEA71b,MAAAA,GACE,OAAOirB,KAAKjtB,MAAM6B,MAChBrB,EAAAA,cAACw0b,EAAav0M,SAAQ,CAAC/tO,MAAOua,KAAK9hB,MAAM2sb,cACvCt3b,EAAAA,cAAC20b,EAAkB10M,SAAQ,CACzB/tO,MAAOua,KAAKjtB,MAAM6B,MAClBnB,SAAUusB,KAAK9hB,MAAMnI,aAIzBiqB,KAAK9hB,MAAMzK,QAEf,EASF,SAASq3b,EAAap4b,GAAwD,IAAvD,aAAEm4b,EAAY,MAAEl9a,EAAK,SAAEla,GAA8Bf,EACtEu2b,EAAoB11b,EAAAA,WAAiBo0b,GAazC,OAREsB,GACAA,EAAkBX,QAClBW,EAAkB8B,gBACjBp9a,EAAM4tJ,MAAMyvR,cAAgBr9a,EAAM4tJ,MAAM0vR,iBAEzChC,EAAkB8B,cAAcG,2BAA6Bv9a,EAAM4tJ,MAAMnoK,IAIzEG,EAAAA,cAACw0b,EAAav0M,SAAQ,CAAC/tO,MAAOolb,GAC3Bp3b,EAGP,CAEO,SAASu2b,EACdzhZ,EACAihZ,EACAD,GAC2B,IAAA4B,EAC3B,QAH2B,IAA3B3B,IAAAA,EAA8B,SACc,IAA5CD,IAAAA,EAA+C,MAEhC,MAAXhhZ,EAAiB,KAAA6iZ,EACnB,GAAmB,OAAnBA,EAAI7B,KAAA6B,EAAiBjzN,OAKnB,OAAO,KAFP5vL,EAAUghZ,EAAgBhhZ,OAI9B,CAEA,IAAIwhZ,EAAkBxhZ,EAGlB4vL,EAAS,OAAHgzN,EAAG5B,QAAA,EAAA4B,EAAiBhzN,OAC9B,GAAc,MAAVA,EAAgB,CAClB,IAAIkzN,EAAatB,EAAgBzpW,WAC9B9kC,GAAMA,EAAE+/G,MAAMnoK,KAAM,MAAA+kO,OAAA,EAAAA,EAAS38K,EAAE+/G,MAAMnoK,OAGtCi4b,GAAc,IADhBhD,EAAAA,EAAAA,KAAU,GAMV0B,EAAkBA,EAAgBn7a,MAChC,EACAkG,KAAKC,IAAIg1a,EAAgBlob,OAAQwpb,EAAa,GAElD,CAEA,OAAOtB,EAAgBl1W,aAAY,CAACmzW,EAAQr6a,EAAOiH,KACjD,IAAIhgB,EAAQ+Y,EAAM4tJ,MAAMnoK,GAAW,MAAN+kO,OAAM,EAANA,EAASxqN,EAAM4tJ,MAAMnoK,IAAM,KAEpD43b,EAAuC,KACvCzB,IACFyB,EAAer9a,EAAM4tJ,MAAMyvR,cAAgBP,GAE7C,IAAIliZ,EAAUihZ,EAActlb,OAAO6lb,EAAgBn7a,MAAM,EAAGgG,EAAQ,IAChE02a,EAAcA,KAChB,IAAI73b,EAgBJ,OAdEA,EADEmB,EACSo2b,EACFr9a,EAAM4tJ,MAAMy8E,UAOVzkP,EAAAA,cAACoa,EAAM4tJ,MAAMy8E,UAAS,MACxBrqO,EAAM4tJ,MAAMlzI,QACV1a,EAAM4tJ,MAAMlzI,QAEZ2/Z,EAGXz0b,EAAAA,cAACu3b,EAAa,CACZn9a,MAAOA,EACPk9a,aAAc,CACZ7C,SACAz/Y,UACA0/Y,YAAgC,MAAnBsB,GAEf91b,SAAUA,GACV,EAMN,OAAO81b,IACJ57a,EAAM4tJ,MAAM0vR,eAAiBt9a,EAAM4tJ,MAAMyvR,cAA0B,IAAVp2a,GAC1DrhB,EAAAA,cAACm3b,EAAmB,CAClBnmb,SAAUglb,EAAgBhlb,SAC1Bomb,aAAcpB,EAAgBoB,aAC9B50b,UAAWi1b,EACXp2b,MAAOA,EACPnB,SAAU63b,IACVT,aAAc,CAAE7C,OAAQ,KAAMz/Y,UAAS0/Y,aAAa,KAGtDqD,GACD,GACA,KACL,CAAC,IAEI5C,EAAc,SAAdA,GAAc,OAAdA,EAAc,wBAAdA,EAAc,gCAAdA,EAAc,gCAAdA,CAAc,EAAdA,GAAc,IAMdG,EAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,wBAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,wCAAnBA,EAAmB,wBAAnBA,EAAmB,gCAAnBA,EAAmB,gCAAnBA,EAAmB,wBAAnBA,CAAmB,EAAnBA,GAAmB,IAmBxB,SAASJ,EAAqB8C,GAC5B,IAAI9mT,EAAMlxI,EAAAA,WAAiBo0b,GAE3B,OADUljT,IAAV4jT,EAAAA,EAAAA,KAAU,GACH5jT,CACT,CAEA,SAAS2lT,EAAmBmB,GAC1B,IAAIx4b,EAAQQ,EAAAA,WAAiBq0b,GAE7B,OADU70b,IAAVs1b,EAAAA,EAAAA,KAAU,GACHt1b,CACT,CASA,SAAS61b,EAAkB2C,GACzB,IAAIhwR,EARN,SAAyBgwR,GACvB,IAAIhwR,EAAQhoK,EAAAA,WAAiBw0b,GAE7B,OADUxsR,IAAV8sR,EAAAA,EAAAA,KAAU,GACH9sR,CACT,CAIciwR,GACRC,EAAYlwR,EAAMhzH,QAAQgzH,EAAMhzH,QAAQ1mC,OAAS,GAKrD,OAHE4pb,EAAUlwR,MAAMnoK,KADlBi1b,EAAAA,EAAAA,KAAU,GAIHoD,EAAUlwR,MAAMnoK,EACzB,EC5sB4BG,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAsB,gBA2K3C,SAAS2qE,EAAQ+1I,GAKA,IALC,GACvB91I,EAAE,QACFjxD,EAAO,MACPna,EAAK,SACLq2b,GACcn1O,EAEZk0O,MADFE,EAAAA,EAAAA,KAAU,GAcV,IAAI,QAAE9/Y,GAAYh1C,EAAAA,WAAiBw0b,IAC7Bv/X,SAAUm/V,GAAqBygC,IACjC7nZ,EAAWgoZ,IAIX9qY,GAAO+pW,EAAAA,EAAAA,IACTrpV,GACAgrX,EAAAA,EAAAA,IAA2B5gZ,GAAStoC,KAAK0N,GAAUA,EAAM+4Y,eACzDiB,EACa,SAAbyhC,GAEEsC,EAAWhtY,KAAKC,UAAUlB,GAO9B,OALAlqD,EAAAA,WACE,IAAMgtC,EAASme,KAAKmE,MAAM6oY,GAAW,CAAEx+a,UAASna,QAAOq2b,cACvD,CAAC7oZ,EAAUmrZ,EAAUtC,EAAUl8a,EAASna,IAGnC,IACT,CA4DO,SAAS44b,EAAMjoP,IACpB2kP,EAAAA,EAAAA,KAAU,EAKZ,CAoBO,SAASuD,EAAMr2O,GAOqB,IANzCgvM,SAAUsnC,EAAe,IAAG,SAC5Bp4b,EAAW,KACX8Q,SAAUunb,EAAY,eACtB7B,EAAiBrgb,EAAAA,GAAe65Y,IAAG,UACnCn1W,EACAg6Y,OAAQyD,GAAa,GACTx2O,EAET4yO,MADHE,EAAAA,EAAAA,KAAU,GAQV,IAAI9jC,EAAWsnC,EAAa3+a,QAAQ,OAAQ,KACxCixP,EAAoB5qQ,EAAAA,SACtB,KAAM,CAAGgxZ,WAAUj2W,YAAWg6Y,OAAQyD,KACtC,CAACxnC,EAAUj2W,EAAWy9Y,IAGI,kBAAjBD,IACTA,GAAehoS,EAAAA,EAAAA,IAAUgoS,IAG3B,IAAI,SACFtjY,EAAW,IAAG,OACdJ,EAAS,GAAE,KACXC,EAAO,GAAE,MACTt1D,EAAQ,KAAI,IACZu4B,EAAM,WACJwga,EAEAE,EAAkBz4b,EAAAA,SAAc,KAClC,IAAI04b,GAAmBznC,EAAAA,EAAAA,IAAch8V,EAAU+7V,GAE/C,OAAwB,MAApB0nC,EACK,KAGF,CACL1nb,SAAU,CACRikD,SAAUyjY,EACV7jY,SACAC,OACAt1D,QACAu4B,OAEF2+Z,iBACD,GACA,CAAC1lC,EAAU/7V,EAAUJ,EAAQC,EAAMt1D,EAAOu4B,EAAK2+Z,IASlD,OAAuB,MAAnB+B,EACK,KAIPz4b,EAAAA,cAACs0b,EAAkBr0M,SAAQ,CAAC/tO,MAAO04P,GACjC5qQ,EAAAA,cAACu0b,EAAgBt0M,SAAQ,CAAC//O,SAAUA,EAAUgS,MAAOumb,IAG3D,CAaO,SAASE,EAAMx2O,GAGqB,IAHpB,SACrBjiN,EAAQ,SACR8Q,GACYmxM,EACZ,OD7HO4zO,EC6HU6C,EAAyB14b,GAAW8Q,EACvD,CAuC4B,IAAI4jB,SAAQ,SAEP50B,EAAAA,UAkH1B,SAAS44b,EACd14b,EACAyxZ,QAAoB,IAApBA,IAAAA,EAAuB,IAEvB,IAAIb,EAAwB,GA6D5B,OA3DA9wZ,EAAAA,SAAeob,QAAQlb,GAAU,CAAC40B,EAASzT,KACzC,IAAKrhB,EAAAA,eAAqB80B,GAGxB,OAGF,IAAI+ja,EAAW,IAAIlnC,EAAYtwY,GAE/B,GAAIyT,EAAQ7uB,OAASjG,EAAAA,SAMnB,YAJA8wZ,EAAOrjY,KAAKb,MACVkkY,EACA8nC,EAAyB9ja,EAAQnqB,MAAMzK,SAAU24b,IAMnD/ja,EAAQ7uB,OAASmyb,IADnBtD,EAAAA,EAAAA,KAAU,GAQPhga,EAAQnqB,MAAM0W,OAAUyT,EAAQnqB,MAAMzK,WADzC40b,EAAAA,EAAAA,KAAU,GAKV,IAAI9sR,EAAqB,CACvBnoK,GAAIi1B,EAAQnqB,MAAM9K,IAAMg5b,EAASxuY,KAAK,KACtCynW,cAAeh9X,EAAQnqB,MAAMmnZ,cAC7Bh9X,QAASA,EAAQnqB,MAAMmqB,QACvB2vN,UAAW3vN,EAAQnqB,MAAM85O,UACzBpjO,MAAOyT,EAAQnqB,MAAM0W,MACrB6oC,KAAMp1B,EAAQnqB,MAAMu/C,KACpB4uY,OAAQhka,EAAQnqB,MAAMmub,OACtBh6a,OAAQgW,EAAQnqB,MAAMmU,OACtB24a,aAAc3ia,EAAQnqB,MAAM8sb,aAC5BC,cAAe5ia,EAAQnqB,MAAM+sb,cAC7BqB,iBACiC,MAA/Bjka,EAAQnqB,MAAM+sb,eACgB,MAA9B5ia,EAAQnqB,MAAM8sb,aAChBuB,iBAAkBlka,EAAQnqB,MAAMqub,iBAChCn3O,OAAQ/sL,EAAQnqB,MAAMk3M,OACtBo3O,KAAMnka,EAAQnqB,MAAMsub,MAGlBnka,EAAQnqB,MAAMzK,WAChB8nK,EAAM9nK,SAAW04b,EACf9ja,EAAQnqB,MAAMzK,SACd24b,IAIJ/nC,EAAOrjY,KAAKu6I,EAAM,IAGb8oP,CACT,+BCxqBa,IAAIt0X,EAAEt5B,EAAQ,MAASw5B,EAAEkmB,OAAO03V,IAAI,iBAAiBj3V,EAAET,OAAO03V,IAAI,kBAAkBryV,EAAE74C,OAAOud,UAAUsG,eAAe/lB,EAAEsvB,EAAE0kY,mDAAmDkkB,kBAAkBpyZ,EAAE,CAAC+E,KAAI,EAAGv3B,KAAI,EAAG04b,QAAO,EAAGC,UAAS,GAChP,SAASlsb,EAAEuM,EAAEhQ,EAAEsvF,GAAG,IAAIjmE,EAAED,EAAE,CAAC,EAAEzsB,EAAE,KAAKsE,EAAE,KAAiF,IAAIooB,UAAhF,IAASimE,IAAI3yF,EAAE,GAAG2yF,QAAG,IAAStvF,EAAEuuB,MAAM5xB,EAAE,GAAGqD,EAAEuuB,UAAK,IAASvuB,EAAEhJ,MAAMiK,EAAEjB,EAAEhJ,KAAcgJ,EAAEy+C,EAAE/0B,KAAK1pB,EAAEqpB,KAAKG,EAAEC,eAAeJ,KAAKD,EAAEC,GAAGrpB,EAAEqpB,IAAI,GAAGrZ,GAAGA,EAAEsc,aAAa,IAAIjD,KAAKrpB,EAAEgQ,EAAEsc,kBAAe,IAASlD,EAAEC,KAAKD,EAAEC,GAAGrpB,EAAEqpB,IAAI,MAAM,CAACorO,SAASvhO,EAAEz2B,KAAKuT,EAAEue,IAAI5xB,EAAE3F,IAAIiK,EAAEE,MAAMioB,EAAE4sZ,OAAOtya,EAAEpM,QAAQ,CAACmD,EAAQ4B,SAASw9C,EAAEp/C,EAAQm1b,IAAInsb,EAAEhJ,EAAQo1b,KAAKpsb,6BCD7V,IAAIo2C,EAAET,OAAO03V,IAAI,iBAAiBptY,EAAE01C,OAAO03V,IAAI,gBAAgBtnX,EAAE4vB,OAAO03V,IAAI,kBAAkBrtY,EAAE21C,OAAO03V,IAAI,qBAAqB35T,EAAE/9B,OAAO03V,IAAI,kBAAkBjxY,EAAEu5C,OAAO03V,IAAI,kBAAkB56K,EAAE98K,OAAO03V,IAAI,iBAAiB3gT,EAAE/2C,OAAO03V,IAAI,qBAAqBtoV,EAAEpP,OAAO03V,IAAI,kBAAkB1jU,EAAEh0B,OAAO03V,IAAI,cAAcx9S,EAAEl6C,OAAO03V,IAAI,cAAczkK,EAAEjzL,OAAOE,SACzW,IAAIk6W,EAAE,CAAC4B,UAAU,WAAW,OAAM,CAAE,EAAEI,mBAAmB,WAAW,EAAED,oBAAoB,WAAW,EAAEF,gBAAgB,WAAW,GAAGlC,EAAEvtZ,OAAO2mB,OAAOupM,EAAE,CAAC,EAAE,SAASc,EAAE52N,EAAEqpB,EAAE1sB,GAAGsmB,KAAK9hB,MAAMnB,EAAEijB,KAAKu3B,QAAQnxB,EAAEpG,KAAKkyZ,KAAKr/M,EAAE7yM,KAAKkrK,QAAQxxL,GAAG62Z,CAAC,CACwI,SAASx9L,IAAI,CAAyB,SAAS9iF,EAAElzI,EAAEqpB,EAAE1sB,GAAGsmB,KAAK9hB,MAAMnB,EAAEijB,KAAKu3B,QAAQnxB,EAAEpG,KAAKkyZ,KAAKr/M,EAAE7yM,KAAKkrK,QAAQxxL,GAAG62Z,CAAC,CADxP58L,EAAEzzM,UAAUoxO,iBAAiB,CAAC,EACpQ39B,EAAEzzM,UAAUqO,SAAS,SAASxxB,EAAEqpB,GAAG,GAAG,kBAAkBrpB,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMsvB,MAAM,yHAAyHrM,KAAKkrK,QAAQknO,gBAAgBpyY,KAAKjjB,EAAEqpB,EAAE,WAAW,EAAEutM,EAAEzzM,UAAU6K,YAAY,SAAShuB,GAAGijB,KAAKkrK,QAAQqnO,mBAAmBvyY,KAAKjjB,EAAE,cAAc,EAAgBg2N,EAAE7yM,UAAUyzM,EAAEzzM,UAAsF,IAAIs0M,EAAEvkF,EAAE/vH,UAAU,IAAI6yM,EACrfyB,EAAE5tM,YAAYqpH,EAAEigR,EAAE17L,EAAEb,EAAEzzM,WAAWs0M,EAAEg+M,sBAAqB,EAAG,IAAIniS,EAAEr4H,MAAMC,QAAQi7Y,EAAEvwZ,OAAOud,UAAUsG,eAAe2iN,EAAE,CAAC90O,QAAQ,MAAM60O,EAAE,CAAC59M,KAAI,EAAGv3B,KAAI,EAAG04b,QAAO,EAAGC,UAAS,GACtK,SAAS55N,EAAE/1N,EAAEqpB,EAAE1sB,GAAG,IAAIysB,EAAEpZ,EAAE,CAAC,EAAEkjB,EAAE,KAAKjyB,EAAE,KAAK,GAAG,MAAMooB,EAAE,IAAID,UAAK,IAASC,EAAEryB,MAAMiK,EAAEooB,EAAEryB,UAAK,IAASqyB,EAAEkF,MAAM2E,EAAE,GAAG7J,EAAEkF,KAAKlF,EAAE8sY,EAAEzsY,KAAKL,EAAED,KAAK+iN,EAAE1iN,eAAeL,KAAKpZ,EAAEoZ,GAAGC,EAAED,IAAI,IAAIkmE,EAAE3/D,UAAU7qB,OAAO,EAAE,GAAG,IAAIwqF,EAAEt/E,EAAEtZ,SAASiG,OAAO,GAAG,EAAE2yF,EAAE,CAAC,IAAI,IAAIt8D,EAAE/X,MAAMq0E,GAAG7wC,EAAE,EAAEA,EAAE6wC,EAAE7wC,IAAIzrB,EAAEyrB,GAAG9uB,UAAU8uB,EAAE,GAAGzuC,EAAEtZ,SAASs8B,CAAC,CAAC,GAAGhzB,GAAGA,EAAEssB,aAAa,IAAIlD,KAAKkmE,EAAEtvF,EAAEssB,kBAAe,IAAStc,EAAEoZ,KAAKpZ,EAAEoZ,GAAGkmE,EAAElmE,IAAI,MAAM,CAACqrO,SAAS56M,EAAEp9C,KAAKuD,EAAEuuB,IAAI2E,EAAEl8B,IAAIiK,EAAEE,MAAM6O,EAAEgma,OAAO5pM,EAAE90O,QAAQ,CAChV,SAAS8+Z,EAAEp2Z,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEy0P,WAAW56M,CAAC,CAAoG,IAAI4lT,EAAE,OAAO,SAASn/M,EAAEtgJ,EAAEqpB,GAAG,MAAM,kBAAkBrpB,GAAG,OAAOA,GAAG,MAAMA,EAAEuuB,IAA7K,SAAgBvuB,GAAG,IAAIqpB,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAIrpB,EAAEmQ,QAAQ,SAAQ,SAASnQ,GAAG,OAAOqpB,EAAErpB,EAAE,GAAE,CAA+EitI,CAAO,GAAGjtI,EAAEuuB,KAAKlF,EAAE8uB,SAAS,GAAG,CAC/W,SAASw+W,EAAE32Z,EAAEqpB,EAAE1sB,EAAEysB,EAAEpZ,GAAG,IAAIkjB,SAASlzB,EAAK,cAAckzB,GAAG,YAAYA,IAAElzB,EAAE,MAAK,IAAIiB,GAAE,EAAG,GAAG,OAAOjB,EAAEiB,GAAE,OAAQ,OAAOiyB,GAAG,IAAK,SAAS,IAAK,SAASjyB,GAAE,EAAG,MAAM,IAAK,SAAS,OAAOjB,EAAEy0P,UAAU,KAAK56M,EAAE,KAAKn2C,EAAEzC,GAAE,GAAI,GAAGA,EAAE,OAAW+O,EAAEA,EAAN/O,EAAEjB,GAASA,EAAE,KAAKopB,EAAE,IAAIk3H,EAAEr/I,EAAE,GAAGmoB,EAAEkqH,EAAEtjI,IAAIrT,EAAE,GAAG,MAAMqD,IAAIrD,EAAEqD,EAAEmQ,QAAQsvV,EAAE,OAAO,KAAKk3D,EAAE3mZ,EAAEqZ,EAAE1sB,EAAE,IAAG,SAASqD,GAAG,OAAOA,CAAC,KAAI,MAAMgQ,IAAIomZ,EAAEpmZ,KAAKA,EADnW,SAAWhQ,EAAEqpB,GAAG,MAAM,CAACorO,SAAS56M,EAAEp9C,KAAKuD,EAAEvD,KAAK8xB,IAAIlF,EAAEryB,IAAIgJ,EAAEhJ,IAAImK,MAAMnB,EAAEmB,MAAM60a,OAAOh2a,EAAEg2a,OAAO,CACyQvkS,CAAEzhI,EAAErT,IAAIqT,EAAEue,KAAKttB,GAAGA,EAAEstB,MAAMve,EAAEue,IAAI,IAAI,GAAGve,EAAEue,KAAKpe,QAAQsvV,EAAE,OAAO,KAAKz/V,IAAIqpB,EAAEpF,KAAKjU,IAAI,EAAyB,GAAvB/O,EAAE,EAAEmoB,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOkqH,EAAEtzI,GAAG,IAAI,IAAIsvF,EAAE,EAAEA,EAAEtvF,EAAE8E,OAAOwqF,IAAI,CAC/e,IAAIt8D,EAAE5J,EAAEk3H,EADweptH,EACrflzB,EAAEsvF,GAAeA,GAAGruF,GAAG01Z,EAAEzjY,EAAE7J,EAAE1sB,EAAEq2B,EAAEhjB,EAAE,MAAM,GAAGgjB,EAPsU,SAAWhzB,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAEqsO,GAAGrsO,EAAEqsO,IAAIrsO,EAAE,eAA0CA,EAAE,IAAI,CAO5bg2I,CAAEh2I,GAAG,oBAAoBgzB,EAAE,IAAIhzB,EAAEgzB,EAAEtJ,KAAK1pB,GAAGsvF,EAAE,IAAIp8D,EAAElzB,EAAE8wB,QAAQ8sB,MAA6B38C,GAAG01Z,EAA1BzjY,EAAEA,EAAExqB,MAA0B2gB,EAAE1sB,EAAtBq2B,EAAE5J,EAAEk3H,EAAEptH,EAAEo8D,KAAkBt/E,QAAQ,GAAG,WAAWkjB,EAAE,MAAM7J,EAAEO,OAAO5pB,GAAGsvB,MAAM,mDAAmD,oBAAoBjG,EAAE,qBAAqBzjB,OAAOC,KAAK7F,GAAG6gD,KAAK,MAAM,IAAIx3B,GAAG,6EAA6E,OAAOpoB,CAAC,CACzZ,SAAS0oI,EAAE3pI,EAAEqpB,EAAE1sB,GAAG,GAAG,MAAMqD,EAAE,OAAOA,EAAE,IAAIopB,EAAE,GAAGpZ,EAAE,EAAmD,OAAjD2mZ,EAAE32Z,EAAEopB,EAAE,GAAG,IAAG,SAASppB,GAAG,OAAOqpB,EAAEK,KAAK/sB,EAAEqD,EAAEgQ,IAAI,IAAUoZ,CAAC,CAAC,SAAS6sM,EAAEj2N,GAAG,IAAI,IAAIA,EAAE8vb,QAAQ,CAAC,IAAIzma,EAAErpB,EAAE+vb,SAAQ1ma,EAAEA,KAAM3xB,MAAK,SAAS2xB,GAAM,IAAIrpB,EAAE8vb,UAAU,IAAI9vb,EAAE8vb,UAAQ9vb,EAAE8vb,QAAQ,EAAE9vb,EAAE+vb,QAAQ1ma,EAAC,IAAE,SAASA,GAAM,IAAIrpB,EAAE8vb,UAAU,IAAI9vb,EAAE8vb,UAAQ9vb,EAAE8vb,QAAQ,EAAE9vb,EAAE+vb,QAAQ1ma,EAAC,KAAI,IAAIrpB,EAAE8vb,UAAU9vb,EAAE8vb,QAAQ,EAAE9vb,EAAE+vb,QAAQ1ma,EAAE,CAAC,GAAG,IAAIrpB,EAAE8vb,QAAQ,OAAO9vb,EAAE+vb,QAAQzzb,QAAQ,MAAM0D,EAAE+vb,OAAQ,CAC5Z,IAAIx3B,EAAE,CAACjha,QAAQ,MAAMuha,EAAE,CAACh6J,WAAW,MAAMruH,EAAE,CAACmnR,uBAAuBY,EAAEuM,wBAAwBjM,EAAE+iB,kBAAkBxvM,GAAG3xO,EAAQ8+O,SAAS,CAACr2O,IAAIymI,EAAE/3H,QAAQ,SAAS5R,EAAEqpB,EAAE1sB,GAAGgtI,EAAE3pI,GAAE,WAAWqpB,EAAEjG,MAAMH,KAAK0M,UAAU,GAAEhzB,EAAE,EAAE2kF,MAAM,SAASthF,GAAG,IAAIqpB,EAAE,EAAuB,OAArBsgH,EAAE3pI,GAAE,WAAWqpB,GAAG,IAAUA,CAAC,EAAEo0B,QAAQ,SAASz9C,GAAG,OAAO2pI,EAAE3pI,GAAE,SAASA,GAAG,OAAOA,CAAC,KAAI,EAAE,EAAEq9K,KAAK,SAASr9K,GAAG,IAAIo2Z,EAAEp2Z,GAAG,MAAMsvB,MAAM,yEAAyE,OAAOtvB,CAAC,GAAGvF,EAAQwgP,UAAUrkB,EAAEn8N,EAAQ4B,SAASmtB,EACne/uB,EAAQszZ,SAAS52U,EAAE18E,EAAQu1b,cAAc98S,EAAEz4I,EAAQuzZ,WAAWvqZ,EAAEhJ,EAAQwzZ,SAASzlW,EAAE/tD,EAAQi9Z,mDAAmDlnR,EAC9I/1I,EAAQggP,aAAa,SAASz6O,EAAEqpB,EAAE1sB,GAAG,GAAG,OAAOqD,QAAG,IAASA,EAAE,MAAMsvB,MAAM,iFAAiFtvB,EAAE,KAAK,IAAIopB,EAAE+pY,EAAE,CAAC,EAAEnzZ,EAAEmB,OAAO6O,EAAEhQ,EAAEuuB,IAAI2E,EAAElzB,EAAEhJ,IAAIiK,EAAEjB,EAAEg2a,OAAO,GAAG,MAAM3sZ,EAAE,CAAoE,QAAnE,IAASA,EAAEryB,MAAMk8B,EAAE7J,EAAEryB,IAAIiK,EAAEmrO,EAAE90O,cAAS,IAAS+xB,EAAEkF,MAAMve,EAAE,GAAGqZ,EAAEkF,KAAQvuB,EAAEvD,MAAMuD,EAAEvD,KAAK6vB,aAAa,IAAIgjE,EAAEtvF,EAAEvD,KAAK6vB,aAAa,IAAI0G,KAAK3J,EAAE8sY,EAAEzsY,KAAKL,EAAE2J,KAAKm5M,EAAE1iN,eAAeuJ,KAAK5J,EAAE4J,QAAG,IAAS3J,EAAE2J,SAAI,IAASs8D,EAAEA,EAAEt8D,GAAG3J,EAAE2J,GAAG,CAAC,IAAIA,EAAErD,UAAU7qB,OAAO,EAAE,GAAG,IAAIkuB,EAAE5J,EAAE1yB,SAASiG,OAAO,GAAG,EAAEq2B,EAAE,CAACs8D,EAAEr0E,MAAM+X,GACrf,IAAI,IAAIyrB,EAAE,EAAEA,EAAEzrB,EAAEyrB,IAAI6wC,EAAE7wC,GAAG9uB,UAAU8uB,EAAE,GAAGr1B,EAAE1yB,SAAS44F,CAAC,CAAC,MAAM,CAACmlK,SAAS56M,EAAEp9C,KAAKuD,EAAEvD,KAAK8xB,IAAIve,EAAEhZ,IAAIk8B,EAAE/xB,MAAMioB,EAAE4sZ,OAAO/0a,EAAE,EAAExG,EAAQw1b,cAAc,SAASjwb,GAAqK,OAAlKA,EAAE,CAACy0P,SAASv+B,EAAEkoM,cAAcp+Z,EAAE+0Z,eAAe/0Z,EAAEkwb,aAAa,EAAEz5M,SAAS,KAAKu8H,SAAS,KAAKgnD,cAAc,KAAKm2B,YAAY,OAAQ15M,SAAS,CAACge,SAAS50P,EAAEw3I,SAASr3I,GAAUA,EAAEgzW,SAAShzW,CAAC,EAAEvF,EAAQ2B,cAAc25N,EAAEt7N,EAAQ21b,cAAc,SAASpwb,GAAG,IAAIqpB,EAAE0sM,EAAEjkM,KAAK,KAAK9xB,GAAY,OAATqpB,EAAE5sB,KAAKuD,EAASqpB,CAAC,EAAE5uB,EAAQ41b,UAAU,WAAW,MAAM,CAAC/4b,QAAQ,KAAK,EAC9dmD,EAAQ61b,WAAW,SAAStwb,GAAG,MAAM,CAACy0P,SAAStkK,EAAEn4F,OAAOgI,EAAE,EAAEvF,EAAQ++O,eAAe48K,EAAE37Z,EAAQg1b,KAAK,SAASzvb,GAAG,MAAM,CAACy0P,SAASnhK,EAAEqhU,SAAS,CAACm7B,SAAS,EAAEC,QAAQ/vb,GAAG40Z,MAAM3+L,EAAE,EAAEx7N,EAAQyvZ,KAAK,SAASlqZ,EAAEqpB,GAAG,MAAM,CAACorO,SAASrnL,EAAE3wE,KAAKuD,EAAEmgF,aAAQ,IAAS92D,EAAE,KAAKA,EAAE,EAAE5uB,EAAQ81b,gBAAgB,SAASvwb,GAAG,IAAIqpB,EAAEwvY,EAAEh6J,WAAWg6J,EAAEh6J,WAAW,CAAC,EAAE,IAAI7+P,GAAG,CAAC,QAAQ64Z,EAAEh6J,WAAWx1O,CAAC,CAAC,EAAE5uB,EAAQ+1b,aAAa,WAAW,MAAMlha,MAAM,2DAA4D,EAC1c70B,EAAQid,YAAY,SAAS1X,EAAEqpB,GAAG,OAAOkvY,EAAEjha,QAAQogB,YAAY1X,EAAEqpB,EAAE,EAAE5uB,EAAQq8Z,WAAW,SAAS92Z,GAAG,OAAOu4Z,EAAEjha,QAAQw/Z,WAAW92Z,EAAE,EAAEvF,EAAQ03E,cAAc,WAAW,EAAE13E,EAAQy8Z,iBAAiB,SAASl3Z,GAAG,OAAOu4Z,EAAEjha,QAAQ4/Z,iBAAiBl3Z,EAAE,EAAEvF,EAAQyB,UAAU,SAAS8D,EAAEqpB,GAAG,OAAOkvY,EAAEjha,QAAQ4E,UAAU8D,EAAEqpB,EAAE,EAAE5uB,EAAQ28Z,MAAM,WAAW,OAAOmB,EAAEjha,QAAQ8/Z,OAAO,EAAE38Z,EAAQw8Z,oBAAoB,SAASj3Z,EAAEqpB,EAAE1sB,GAAG,OAAO47Z,EAAEjha,QAAQ2/Z,oBAAoBj3Z,EAAEqpB,EAAE1sB,EAAE,EAC7blC,EAAQu8Z,mBAAmB,SAASh3Z,EAAEqpB,GAAG,OAAOkvY,EAAEjha,QAAQ0/Z,mBAAmBh3Z,EAAEqpB,EAAE,EAAE5uB,EAAQwyE,gBAAgB,SAASjtE,EAAEqpB,GAAG,OAAOkvY,EAAEjha,QAAQ21E,gBAAgBjtE,EAAEqpB,EAAE,EAAE5uB,EAAQwxE,QAAQ,SAASjsE,EAAEqpB,GAAG,OAAOkvY,EAAEjha,QAAQ20E,QAAQjsE,EAAEqpB,EAAE,EAAE5uB,EAAQs8Z,WAAW,SAAS/2Z,EAAEqpB,EAAE1sB,GAAG,OAAO47Z,EAAEjha,QAAQy/Z,WAAW/2Z,EAAEqpB,EAAE1sB,EAAE,EAAElC,EAAQ4H,OAAO,SAASrC,GAAG,OAAOu4Z,EAAEjha,QAAQ+K,OAAOrC,EAAE,EAAEvF,EAAQM,SAAS,SAASiF,GAAG,OAAOu4Z,EAAEjha,QAAQyD,SAASiF,EAAE,EAAEvF,EAAQ+8Z,qBAAqB,SAASx3Z,EAAEqpB,EAAE1sB,GAAG,OAAO47Z,EAAEjha,QAAQkga,qBAAqBx3Z,EAAEqpB,EAAE1sB,EAAE,EAC/elC,EAAQ08Z,cAAc,WAAW,OAAOoB,EAAEjha,QAAQ6/Z,eAAe,EAAE18Z,EAAQu3D,QAAQ,sCCtBjFi7V,EAAOxyZ,QAAU,EAAjBwyZ,kCCAAA,EAAOxyZ,QAAU,EAAjBwyZ,mCCHa,SAASwjC,EAAQx9M,GAG9B,OAAOw9M,EAAU,mBAAqBr3Y,QAAU,iBAAmBA,OAAOE,SAAW,SAAU25L,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqB75L,QAAU65L,EAAEppN,cAAgBuvB,QAAU65L,IAAM75L,OAAOj2B,UAAY,gBAAkB8vN,CACpH,EAAGw9M,EAAQx9M,EACb,CCNe,SAASy9M,EAAezhX,GACrC,IAAI1gD,ECFS,SAAsBkjB,EAAO90B,GAC1C,GAAuB,WAAnB8za,EAAQh/Y,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAIk/Y,EAAOl/Y,EAAM2H,OAAOw3Y,aACxB,QAAaz6b,IAATw6b,EAAoB,CACtB,IAAI33T,EAAM23T,EAAKjna,KAAK+nB,EAAO90B,GAAQ,WACnC,GAAqB,WAAjB8za,EAAQz3T,GAAmB,OAAOA,EACtC,MAAM,IAAIrvG,UAAU,+CACtB,CACA,OAAiB,WAAThN,EAAoBiN,OAASi1B,QAAQpN,EAC/C,CDPY,CAAYw9B,EAAK,UAC3B,MAAwB,WAAjBwhX,EAAQlia,GAAoBA,EAAM3E,OAAO2E,EAClD,CEJA,SAASsia,EAAQl0b,EAAGw6E,GAClB,IAAIt3E,EAAI+F,OAAOC,KAAKlJ,GACpB,GAAIiJ,OAAOu4B,sBAAuB,CAChC,IAAI80M,EAAIrtO,OAAOu4B,sBAAsBxhC,GACrCw6E,IAAM87J,EAAIA,EAAEltO,QAAO,SAAUoxE,GAC3B,OAAOvxE,OAAOmnZ,yBAAyBpwZ,EAAGw6E,GAAGxpD,UAC/C,KAAK9tB,EAAEokB,KAAKb,MAAMvjB,EAAGozO,EACvB,CACA,OAAOpzO,CACT,CACe,SAASixb,EAAen0b,GACrC,IAAK,IAAIw6E,EAAI,EAAGA,EAAIxnD,UAAU7qB,OAAQqyE,IAAK,CACzC,IAAIt3E,EAAI,MAAQ8vB,UAAUwnD,GAAKxnD,UAAUwnD,GAAK,CAAC,EAC/CA,EAAI,EAAI05W,EAAQjrb,OAAO/F,IAAI,GAAI+R,SAAQ,SAAUulE,GCbtC,IAAyBv9B,EAAKrrB,EAAK7lB,EAAVkxC,EDcnBj9C,ECdwB4xB,EDcrB4oD,ECd0BzuE,EDcvB7I,EAAEs3E,ICb3B5oD,EAAM,EAAcA,MACTqrB,EACTh0C,OAAO6nB,eAAemsB,EAAKrrB,EAAK,CAC9B7lB,MAAOA,EACPilB,YAAY,EACZC,cAAc,EACduwB,UAAU,IAGZvE,EAAIrrB,GAAO7lB,CDKX,IAAK9C,OAAOq1C,0BAA4Br1C,OAAOy1C,iBAAiB1+C,EAAGiJ,OAAOq1C,0BAA0Bp7C,IAAMgxb,EAAQjrb,OAAO/F,IAAI+R,SAAQ,SAAUulE,GAC7IvxE,OAAO6nB,eAAe9wB,EAAGw6E,EAAGvxE,OAAOmnZ,yBAAyBltZ,EAAGs3E,GACjE,GACF,CACA,OAAOx6E,CACT,CEZA,SAASo0b,EAAuBrxY,GAC9B,MAAO,yBAA2BA,EAAO,4CAA8CA,EAAhF,iFACT,8CAGA,IAAIsxY,EACuB,oBAAX53Y,QAAyBA,OAAO63Y,YAAc,eAS1DC,EAAe,WACjB,OAAOn5a,KAAKknC,SAAS9G,SAAS,IAAInuC,UAAU,GAAGiC,MAAM,IAAI40C,KAAK,IAChE,EAEIswY,EAAc,CAChBC,KAAM,eAAiBF,IACvBG,QAAS,kBAAoBH,IAC7BI,qBAAsB,WACpB,MAAO,+BAAiCJ,GAC1C,GAOF,SAASh4Y,EAAcU,GACrB,GAAmB,kBAARA,GAA4B,OAARA,EAAc,OAAO,EAGpD,IAFA,IAAI2lW,EAAQ3lW,EAE4B,OAAjCh0C,OAAOwyC,eAAemnW,IAC3BA,EAAQ35Y,OAAOwyC,eAAemnW,GAGhC,OAAO35Y,OAAOwyC,eAAewB,KAAS2lW,CACxC,CAuFA,SAAS6B,EAAYrmW,EAAS0lW,EAAgB8wC,GAC5C,IAAI/hb,EAEJ,GAA8B,oBAAnBixY,GAAqD,oBAAb8wC,GAA+C,oBAAbA,GAAmD,oBAAjB5ha,UAAU,GAC/H,MAAM,IAAIL,MAA8Cyha,EAAuB,IAQjF,GAL8B,oBAAnBtwC,GAAqD,qBAAb8wC,IACjDA,EAAW9wC,EACXA,OAAiBtqZ,GAGK,qBAAbo7b,EAA0B,CACnC,GAAwB,oBAAbA,EACT,MAAM,IAAIjia,MAA8Cyha,EAAuB,IAGjF,OAAOQ,EAASnwC,EAATmwC,CAAsBx2Y,EAAS0lW,EACxC,CAEA,GAAuB,oBAAZ1lW,EACT,MAAM,IAAIzrB,MAA8Cyha,EAAuB,IAGjF,IAAIS,EAAiBz2Y,EACjB02B,EAAegvU,EACfgxC,EAAmB,GACnBC,EAAgBD,EAChBE,GAAgB,EASpB,SAASC,IACHF,IAAkBD,IACpBC,EAAgBD,EAAiB5/a,QAErC,CAQA,SAAS+/D,IACP,GAAI+/W,EACF,MAAM,IAAIria,MAA8Cyha,EAAuB,IAGjF,OAAOt/W,CACT,CA0BA,SAASjiB,EAAUhD,GACjB,GAAwB,oBAAbA,EACT,MAAM,IAAIl9B,MAA8Cyha,EAAuB,IAGjF,GAAIY,EACF,MAAM,IAAIria,MAA8Cyha,EAAuB,IAGjF,IAAIpH,GAAe,EAGnB,OAFAiI,IACAF,EAAczta,KAAKuoC,GACZ,WACL,GAAKm9X,EAAL,CAIA,GAAIgI,EACF,MAAM,IAAIria,MAA8Cyha,EAAuB,IAGjFpH,GAAe,EACfiI,IACA,IAAI/5a,EAAQ65a,EAAcxzZ,QAAQsuB,GAClCklY,EAAc3qa,OAAOlP,EAAO,GAC5B45a,EAAmB,IAVnB,CAWF,CACF,CA4BA,SAASxwX,EAAS3rD,GAChB,IAAK4jC,EAAc5jC,GACjB,MAAM,IAAIga,MAA8Cyha,EAAuB,IAGjF,GAA2B,qBAAhBz7a,EAAO7Y,KAChB,MAAM,IAAI6yB,MAA8Cyha,EAAuB,IAGjF,GAAIY,EACF,MAAM,IAAIria,MAA8Cyha,EAAuB,IAGjF,IACEY,GAAgB,EAChBlgX,EAAe+/W,EAAe//W,EAAcn8D,EAC9C,CAAE,QACAq8a,GAAgB,CAClB,CAIA,IAFA,IAAI1nB,EAAYwnB,EAAmBC,EAE1Bvub,EAAI,EAAGA,EAAI8ma,EAAUnla,OAAQ3B,IAAK,EAEzCqpD,EADey9W,EAAU9ma,KAE3B,CAEA,OAAOmS,CACT,CA4EA,OAHA2rD,EAAS,CACPxkE,KAAM00b,EAAYC,QAEb5hb,EAAQ,CACbyxD,SAAUA,EACVzR,UAAWA,EACXoiB,SAAUA,EACVigX,eAnEF,SAAwBC,GACtB,GAA2B,oBAAhBA,EACT,MAAM,IAAIxia,MAA8Cyha,EAAuB,KAGjFS,EAAiBM,EAKjB7wX,EAAS,CACPxkE,KAAM00b,EAAYE,SAEtB,IAuDSL,GA9CT,WACE,IAAIr7b,EAEAo8b,EAAiBviY,EACrB,OAAO75D,EAAO,CASZ65D,UAAW,SAAmBoiC,GAC5B,GAAwB,kBAAbA,GAAsC,OAAbA,EAClC,MAAM,IAAItiE,MAA8Cyha,EAAuB,KAGjF,SAASiB,IACHpgW,EAAS9gE,MACX8gE,EAAS9gE,KAAK8gD,IAElB,CAIA,OAFAogX,IAEO,CACLxkY,YAFgBukY,EAAeC,GAInC,IACMhB,GAAgB,WACtB,OAAO/ta,IACT,EAAGttB,CACL,EAaqC6Z,CACvC,CAsHA,SAASmhY,EAAgB7lU,GAIvB,IAHA,IAAImnX,EAAcrsb,OAAOC,KAAKilE,GAC1BonX,EAAgB,CAAC,EAEZ/ub,EAAI,EAAGA,EAAI8ub,EAAYntb,OAAQ3B,IAAK,CAC3C,IAAIorB,EAAM0ja,EAAY9ub,GAElB0hE,EAMyB,oBAAlBiG,EAASv8C,KAClB2ja,EAAc3ja,GAAOu8C,EAASv8C,GAElC,CAEA,IASI4ja,EATAC,EAAmBxsb,OAAOC,KAAKqsb,GAWnC,KAjEF,SAA4BpnX,GAC1BllE,OAAOC,KAAKilE,GAAUl5D,SAAQ,SAAU2c,GACtC,IAAIwsB,EAAU+vB,EAASv8C,GAKvB,GAA4B,qBAJTwsB,OAAQ5kD,EAAW,CACpCsG,KAAM00b,EAAYC,OAIlB,MAAM,IAAI9ha,MAA8Cyha,EAAuB,KAGjF,GAEO,qBAFIh2Y,OAAQ5kD,EAAW,CAC5BsG,KAAM00b,EAAYG,yBAElB,MAAM,IAAIhia,MAA8Cyha,EAAuB,IAEnF,GACF,CAiDIsB,CAAmBH,EACrB,CAAE,MAAOv1b,GACPw1b,EAAsBx1b,CACxB,CAEA,OAAO,SAAqB3G,EAAOsf,GAKjC,QAJc,IAAVtf,IACFA,EAAQ,CAAC,GAGPm8b,EACF,MAAMA,EAcR,IAX2C,IAQvCG,GAAa,EACbpzZ,EAAY,CAAC,EAERvC,EAAK,EAAGA,EAAKy1Z,EAAiBttb,OAAQ63B,IAAM,CACnD,IAAIud,EAAOk4Y,EAAiBz1Z,GACxBoe,EAAUm3Y,EAAch4Y,GACxBq4Y,EAAsBv8b,EAAMkkD,GAC5Bs4Y,EAAkBz3Y,EAAQw3Y,EAAqBj9a,GAEnD,GAA+B,qBAApBk9a,EAAiC,CACzBl9a,GAAUA,EAAO7Y,KAClC,MAAM,IAAI6yB,MAA8Cyha,EAAuB,IACjF,CAEA7xZ,EAAUgb,GAAQs4Y,EAClBF,EAAaA,GAAcE,IAAoBD,CACjD,CAGA,OADAD,EAAaA,GAAcF,EAAiBttb,SAAWc,OAAOC,KAAK7P,GAAO8O,QACtDo6B,EAAYlpC,CAClC,CACF,CA8DA,SAAS6hF,IACP,IAAK,IAAIlvB,EAAOh5B,UAAU7qB,OAAQitI,EAAQ,IAAI92H,MAAM0tC,GAAOzO,EAAO,EAAGA,EAAOyO,EAAMzO,IAChF63F,EAAM73F,GAAQvqB,UAAUuqB,GAG1B,OAAqB,IAAjB63F,EAAMjtI,OACD,SAAUmqE,GACf,OAAOA,CACT,EAGmB,IAAjB8iE,EAAMjtI,OACDitI,EAAM,GAGRA,EAAMryI,QAAO,SAAUM,EAAGqpB,GAC/B,OAAO,WACL,OAAOrpB,EAAEqpB,EAAEjG,WAAM,EAAQuM,WAC3B,CACF,GACF,CAmBA,SAASkxX,IACP,IAAK,IAAIl4V,EAAOh5B,UAAU7qB,OAAQ2tb,EAAc,IAAIx3a,MAAM0tC,GAAOzO,EAAO,EAAGA,EAAOyO,EAAMzO,IACtFu4Y,EAAYv4Y,GAAQvqB,UAAUuqB,GAGhC,OAAO,SAAUknW,GACf,OAAO,WACL,IAAIj2U,EAAQi2U,EAAYh+X,WAAM,EAAQuM,WAElC+ia,EAAY,WACd,MAAM,IAAIpja,MAA8Cyha,EAAuB,IACjF,EAEI4B,EAAgB,CAClB/gX,SAAUzG,EAAMyG,SAChB3Q,SAAU,WACR,OAAOyxX,EAAUtva,WAAM,EAAQuM,UACjC,GAEE+jC,EAAQ++X,EAAYvvb,KAAI,SAAUooE,GACpC,OAAOA,EAAWqnX,EACpB,IAEA,OADAD,EAAY76W,EAAQz0D,WAAM,EAAQswC,EAAtBmkB,CAA6B1M,EAAMlK,UACxC2xX,EAAcA,EAAc,CAAC,EAAGznX,GAAQ,CAAC,EAAG,CACjDlK,SAAUyxX,GAEd,CACF,CACF,iDC5rBA,IAAIG,EAAY,YAgFT,IAAIC,EAAuB,SAA8B9yb,EAAGqpB,GACjE,OAAOrpB,IAAMqpB,CACf,EAqBO,SAASipX,EAAejlS,EAAM0lV,GACnC,IAAIC,EAAoD,kBAA3BD,EAAsCA,EAAyB,CAC1FE,cAAeF,GAEbG,EAAwBF,EAAgBC,cACxCA,OAA0C,IAA1BC,EAAmCJ,EAAuBI,EAC1EC,EAAwBH,EAAgBI,QACxCA,OAAoC,IAA1BD,EAAmC,EAAIA,EACjDE,EAAsBL,EAAgBK,oBACtCC,EA7BC,SAAkCL,GACvC,OAAO,SAAoClia,EAAMD,GAC/C,GAAa,OAATC,GAA0B,OAATD,GAAiBC,EAAKjsB,SAAWgsB,EAAKhsB,OACzD,OAAO,EAMT,IAFA,IAAIA,EAASisB,EAAKjsB,OAET3B,EAAI,EAAGA,EAAI2B,EAAQ3B,IAC1B,IAAK8vb,EAAclia,EAAK5tB,GAAI2tB,EAAK3tB,IAC/B,OAAO,EAIX,OAAO,CACT,CACF,CAYmBowb,CAAyBN,GACtC36Y,EAAoB,IAAZ86Y,EA/Gd,SAA8Bn6W,GAC5B,IAAIp8C,EACJ,MAAO,CACLnP,IAAK,SAAaa,GAChB,OAAIsO,GAASo8C,EAAOp8C,EAAMtO,IAAKA,GACtBsO,EAAMn0B,MAGRmqb,CACT,EACAh/T,IAAK,SAAatlG,EAAK7lB,GACrBm0B,EAAQ,CACNtO,IAAKA,EACL7lB,MAAOA,EAEX,EACA8qb,WAAY,WACV,OAAO32Z,EAAQ,CAACA,GAAS,EAC3B,EACA2mB,MAAO,WACL3mB,OAAQ1mC,CACV,EAEJ,CAwF8Bs9b,CAAqBH,GAtFnD,SAAwBF,EAASn6W,GAC/B,IAAIv8C,EAAU,GAEd,SAAShP,EAAIa,GACX,IAAImla,EAAah3Z,EAAQ6mD,WAAU,SAAU1mD,GAC3C,OAAOo8C,EAAO1qD,EAAKsO,EAAMtO,IAC3B,IAEA,GAAImla,GAAc,EAAG,CACnB,IAAI72Z,EAAQH,EAAQg3Z,GAOpB,OALIA,EAAa,IACfh3Z,EAAQ3V,OAAO2sa,EAAY,GAC3Bh3Z,EAAQ62B,QAAQ12B,IAGXA,EAAMn0B,KACf,CAGA,OAAOmqb,CACT,CAwBA,MAAO,CACLnla,IAAKA,EACLmmG,IAxBF,SAAatlG,EAAK7lB,GACZglB,EAAIa,KAASska,IAEfn2Z,EAAQ62B,QAAQ,CACdhlC,IAAKA,EACL7lB,MAAOA,IAGLg0B,EAAQ53B,OAASsub,GACnB12Z,EAAQulB,MAGd,EAaEuxY,WAXF,WACE,OAAO92Z,CACT,EAUE8mB,MARF,WACE9mB,EAAU,EACZ,EAQF,CAmCiEi3Z,CAAeP,EAASE,GAEvF,SAASp8L,IACP,IAAIxuP,EAAQ4vC,EAAM5qB,IAAIiC,WAEtB,GAAIjnB,IAAUmqb,EAAW,CAIvB,GAFAnqb,EAAQ2kG,EAAKjqF,MAAM,KAAMuM,WAErB0ja,EAAqB,CACvB,IACIO,EADUt7Y,EAAMk7Y,aACQrib,MAAK,SAAU0rB,GACzC,OAAOw2Z,EAAoBx2Z,EAAMn0B,MAAOA,EAC1C,IAEIkrb,IACFlrb,EAAQkrb,EAAclrb,MAE1B,CAEA4vC,EAAMu7E,IAAIlkG,UAAWjnB,EACvB,CAEA,OAAOA,CACT,CAMA,OAJAwuP,EAAS28L,WAAa,WACpB,OAAOv7Y,EAAMkL,OACf,EAEO0zM,CACT,8BChIO,SAAS48L,EAAsBrzD,GACpC,IAAK,IAAI93U,EAAOh5B,UAAU7qB,OAAQivb,EAAyB,IAAI94a,MAAM0tC,EAAO,EAAIA,EAAO,EAAI,GAAIzO,EAAO,EAAGA,EAAOyO,EAAMzO,IACpH65Y,EAAuB75Y,EAAO,GAAKvqB,UAAUuqB,GAiF/C,OA9EqB,WACnB,IAAK,IAAI8O,EAAQr5B,UAAU7qB,OAAQitI,EAAQ,IAAI92H,MAAM+tC,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACrF8oF,EAAM9oF,GAASt5B,UAAUs5B,GAG3B,IAEI+qY,EAFAC,EAAkB,EAOlBC,EAAwB,CAC1BC,oBAAgBh+b,GAGdi+b,EAAariT,EAAM9vF,MAQvB,GAN0B,kBAAfmyY,IACTF,EAAwBE,EAExBA,EAAariT,EAAM9vF,OAGK,oBAAfmyY,EACT,MAAM,IAAI9ka,MAAM,qFAAuF8ka,EAAa,KAKtH,IACIC,EADwBH,EACuBC,eAC/CA,OAA4C,IAA3BE,EAAoCN,EAAyBM,EAM9EC,EAAsBr5a,MAAMC,QAAQi5a,GAAkBA,EAAiB,CAACA,GACxE5gB,EA3DR,SAAyBxhS,GACvB,IAAIwhS,EAAet4Z,MAAMC,QAAQ62H,EAAM,IAAMA,EAAM,GAAKA,EAExD,IAAKwhS,EAAa18P,OAAM,SAAU09Q,GAChC,MAAsB,oBAARA,CAChB,IAAI,CACF,IAAIC,EAAkBjhB,EAAarwa,KAAI,SAAUqxb,GAC/C,MAAsB,oBAARA,EAAqB,aAAeA,EAAIx7b,MAAQ,WAAa,YAAcw7b,CAC3F,IAAG1zY,KAAK,MACR,MAAM,IAAIvxB,MAAM,kGAAoGkla,EAAkB,IACxI,CAEA,OAAOjhB,CACT,CA8CuBkhB,CAAgB1iT,GAC/B2iT,EAAqBj0D,EAAQr9W,WAAM,EAAQ,CAAC,WAG9C,OAFA6wa,IAEOG,EAAWhxa,MAAM,KAAMuM,UAChC,GAAGxoB,OAAOmtb,IAEN9yV,EAAWi/R,GAAQ,WAIrB,IAHA,IAAIn+U,EAAS,GACTx9C,EAASyua,EAAazua,OAEjB3B,EAAI,EAAGA,EAAI2B,EAAQ3B,IAG1Bm/C,EAAOr+B,KAAKsvZ,EAAapwa,GAAGigB,MAAM,KAAMuM,YAK1C,OADAqka,EAAcU,EAAmBtxa,MAAM,KAAMk/B,EAE/C,IAeA,OAdA18C,OAAO2mB,OAAOi1E,EAAU,CACtB4yV,WAAYA,EACZM,mBAAoBA,EACpBnhB,aAAcA,EACdhiW,WAAY,WACV,OAAOyiX,CACT,EACAW,eAAgB,WACd,OAAOV,CACT,EACAW,oBAAqB,WACnB,OAAOX,EAAkB,CAC3B,IAEKzyV,CACT,CAIF,mBACO,IAAIlwB,EAAgCwiX,UAAsBxhD,+BC9FpD,SAASt/W,EAAEhzB,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAE8E,OAAO9E,EAAEikB,KAAKoF,GAAGrpB,EAAE,KAAK,EAAEgQ,GAAG,CAAC,IAAIoZ,EAAEpZ,EAAE,IAAI,EAAErT,EAAEqD,EAAEopB,GAAG,KAAG,EAAEkmE,EAAE3yF,EAAE0sB,IAA0B,MAAMrpB,EAA7BA,EAAEopB,GAAGC,EAAErpB,EAAEgQ,GAAGrT,EAAEqT,EAAEoZ,CAAc,CAAC,CAAC,SAASnoB,EAAEjB,GAAG,OAAO,IAAIA,EAAE8E,OAAO,KAAK9E,EAAE,EAAE,CAAC,SAASkzB,EAAElzB,GAAG,GAAG,IAAIA,EAAE8E,OAAO,OAAO,KAAK,IAAIukB,EAAErpB,EAAE,GAAGgQ,EAAEhQ,EAAEiiD,MAAM,GAAGjyC,IAAIqZ,EAAE,CAACrpB,EAAE,GAAGgQ,EAAEhQ,EAAE,IAAI,IAAIopB,EAAE,EAAEzsB,EAAEqD,EAAE8E,OAAO0jD,EAAE7rD,IAAI,EAAEysB,EAAEo/B,GAAG,CAAC,IAAI/J,EAAE,GAAGr1B,EAAE,GAAG,EAAE+pY,EAAEnzZ,EAAEy+C,GAAG/6C,EAAE+6C,EAAE,EAAE2uB,EAAEptE,EAAE0D,GAAG,GAAG,EAAE4rF,EAAE6jU,EAAEnjZ,GAAGtM,EAAE/G,GAAG,EAAE2yF,EAAEliB,EAAE+lV,IAAInzZ,EAAEopB,GAAGgkD,EAAEptE,EAAE0D,GAAGsM,EAAEoZ,EAAE1lB,IAAI1D,EAAEopB,GAAG+pY,EAAEnzZ,EAAEy+C,GAAGzuC,EAAEoZ,EAAEq1B,OAAQ,MAAG/6C,EAAE/G,GAAG,EAAE2yF,EAAEliB,EAAEp9D,IAA0B,MAAMhQ,EAA7BA,EAAEopB,GAAGgkD,EAAEptE,EAAE0D,GAAGsM,EAAEoZ,EAAE1lB,CAAc,EAAC,CAAC,OAAO2lB,CAAC,CAC3c,SAASimE,EAAEtvF,EAAEqpB,GAAG,IAAIrZ,EAAEhQ,EAAE83T,UAAUzuS,EAAEyuS,UAAU,OAAO,IAAI9nT,EAAEA,EAAEhQ,EAAE3J,GAAGgzB,EAAEhzB,EAAE,CAAC,GAAG,kBAAkBw+b,aAAa,oBAAoBA,YAAYhia,IAAI,CAAC,IAAIgnB,EAAEg7Y,YAAYp6b,EAAQgpa,aAAa,WAAW,OAAO5pX,EAAEhnB,KAAK,CAAC,KAAK,CAAC,IAAIrJ,EAAEtpB,KAAKuD,EAAE+lB,EAAEqJ,MAAMp4B,EAAQgpa,aAAa,WAAW,OAAOj6Y,EAAEqJ,MAAMpvB,CAAC,CAAC,CAAC,IAAI0zE,EAAE,GAAGt3E,EAAE,GAAGq2N,EAAE,EAAE/lI,EAAE,KAAKmD,EAAE,EAAE+4I,GAAE,EAAGr2F,GAAE,EAAGw9Q,GAAE,EAAG19L,EAAE,oBAAoB7iM,WAAWA,WAAW,KAAK2jM,EAAE,oBAAoBllM,aAAaA,aAAa,KAAKskM,EAAE,qBAAqB8+N,aAAaA,aAAa,KACnT,SAAS5hT,EAAElzI,GAAG,IAAI,IAAIqpB,EAAEpoB,EAAEpB,GAAG,OAAOwpB,GAAG,CAAC,GAAG,OAAOA,EAAEyvC,SAAS5lC,EAAErzB,OAAQ,MAAGwpB,EAAEusD,WAAW51E,GAAgD,MAA9CkzB,EAAErzB,GAAGwpB,EAAEyuS,UAAUzuS,EAAE0ra,eAAe/ha,EAAEmkD,EAAE9tD,EAAa,CAACA,EAAEpoB,EAAEpB,EAAE,CAAC,CAAC,SAAS43N,EAAEz3N,GAAa,GAAVwzZ,GAAE,EAAGtgR,EAAElzI,IAAOg2I,EAAE,GAAG,OAAO/0I,EAAEk2E,GAAG6+D,GAAE,EAAG1C,EAAE6iR,OAAO,CAAC,IAAI9sY,EAAEpoB,EAAEpB,GAAG,OAAOwpB,GAAG+iN,EAAE3U,EAAEpuM,EAAEusD,UAAU51E,EAAE,CAAC,CACra,SAASm2Z,EAAEn2Z,EAAEqpB,GAAG2sH,GAAE,EAAGw9Q,IAAIA,GAAE,EAAG58L,EAAEuV,GAAGA,GAAG,GAAGE,GAAE,EAAG,IAAIr8N,EAAEsjF,EAAE,IAAS,IAAL4/C,EAAE7pH,GAAO8mE,EAAElvF,EAAEk2E,GAAG,OAAOgZ,MAAMA,EAAE4kW,eAAe1ra,IAAIrpB,IAAI+1N,MAAM,CAAC,IAAI3sM,EAAE+mE,EAAEr3B,SAAS,GAAG,oBAAoB1vC,EAAE,CAAC+mE,EAAEr3B,SAAS,KAAKw6B,EAAEnD,EAAE6kW,cAAc,IAAIr4b,EAAEysB,EAAE+mE,EAAE4kW,gBAAgB1ra,GAAGA,EAAE5uB,EAAQgpa,eAAe,oBAAoB9ma,EAAEwzF,EAAEr3B,SAASn8D,EAAEwzF,IAAIlvF,EAAEk2E,IAAIjkD,EAAEikD,GAAG+7D,EAAE7pH,EAAE,MAAM6J,EAAEikD,GAAGgZ,EAAElvF,EAAEk2E,EAAE,CAAC,GAAG,OAAOgZ,EAAE,IAAI3nC,GAAE,MAAO,CAAC,IAAI/J,EAAEx9C,EAAEpB,GAAG,OAAO4+C,GAAG2tL,EAAE3U,EAAEh5K,EAAEm3B,UAAUvsD,GAAGm/B,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ2nC,EAAE,KAAKmD,EAAEtjF,EAAEq8N,GAAE,CAAE,CAAC,CAD1a,qBAAqB96L,gBAAW,IAASA,UAAU0jZ,iBAAY,IAAS1jZ,UAAU0jZ,WAAWC,gBAAgB3jZ,UAAU0jZ,WAAWC,eAAepja,KAAKyf,UAAU0jZ,YAC2Q,IACzPtrT,EAD6P8H,GAAE,EAAG2kR,EAAE,KAAKjqL,GAAG,EAAEszH,EAAE,EAAEn/M,GAAG,EACvc,SAASy1E,IAAI,QAAOt7N,EAAQgpa,eAAenjR,EAAEm/M,EAAO,CAAC,SAASk3D,IAAI,GAAG,OAAOP,EAAE,CAAC,IAAIp2Z,EAAEvF,EAAQgpa,eAAenjR,EAAEtgJ,EAAE,IAAIqpB,GAAE,EAAG,IAAIA,EAAE+sY,GAAE,EAAGp2Z,EAAE,CAAC,QAAQqpB,EAAEsgH,KAAK8H,GAAE,EAAG2kR,EAAE,KAAK,CAAC,MAAM3kR,GAAE,CAAE,CAAO,GAAG,oBAAoBukF,EAAErsF,EAAE,WAAWqsF,EAAE2gM,EAAE,OAAO,GAAG,qBAAqBw+B,eAAe,CAAC,IAAIl/N,EAAE,IAAIk/N,eAAe58B,EAAEtiM,EAAEm/N,MAAMn/N,EAAEo/N,MAAMC,UAAU3+B,EAAEhtR,EAAE,WAAW4uR,EAAEg9B,YAAY,KAAK,CAAC,MAAM5rT,EAAE,WAAWmsF,EAAE6gM,EAAE,EAAE,EAAE,SAASrjR,EAAEtzI,GAAGo2Z,EAAEp2Z,EAAEyxI,IAAIA,GAAE,EAAG9H,IAAI,CAAC,SAASyiG,EAAEpsO,EAAEqpB,GAAG8iN,EAAErW,GAAE,WAAW91N,EAAEvF,EAAQgpa,eAAe,GAAEp6Y,EAAE,CAC5d5uB,EAAQspa,sBAAsB,EAAEtpa,EAAQkpa,2BAA2B,EAAElpa,EAAQqpa,qBAAqB,EAAErpa,EAAQopa,wBAAwB,EAAEppa,EAAQ+6b,mBAAmB,KAAK/6b,EAAQmpa,8BAA8B,EAAEnpa,EAAQ6oa,wBAAwB,SAAStja,GAAGA,EAAE84D,SAAS,IAAI,EAAEr+D,EAAQg7b,2BAA2B,WAAWz/S,GAAGq2F,IAAIr2F,GAAE,EAAG1C,EAAE6iR,GAAG,EAC1U17Z,EAAQi7b,wBAAwB,SAAS11b,GAAG,EAAEA,GAAG,IAAIA,EAAElI,QAAQD,MAAM,mHAAmH4nW,EAAE,EAAEz/V,EAAE+X,KAAK4M,MAAM,IAAI3kB,GAAG,CAAC,EAAEvF,EAAQipa,iCAAiC,WAAW,OAAOpwU,CAAC,EAAE74F,EAAQk7b,8BAA8B,WAAW,OAAO10b,EAAEk2E,EAAE,EAAE18E,EAAQm7b,cAAc,SAAS51b,GAAG,OAAOszF,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIjqE,EAAE,EAAE,MAAM,QAAQA,EAAEiqE,EAAE,IAAItjF,EAAEsjF,EAAEA,EAAEjqE,EAAE,IAAI,OAAOrpB,GAAG,CAAC,QAAQszF,EAAEtjF,CAAC,CAAC,EAAEvV,EAAQo7b,wBAAwB,WAAW,EAC9fp7b,EAAQ+oa,sBAAsB,WAAW,EAAE/oa,EAAQq7b,yBAAyB,SAAS91b,EAAEqpB,GAAG,OAAOrpB,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIgQ,EAAEsjF,EAAEA,EAAEtzF,EAAE,IAAI,OAAOqpB,GAAG,CAAC,QAAQiqE,EAAEtjF,CAAC,CAAC,EAChMvV,EAAQ4oa,0BAA0B,SAASrja,EAAEqpB,EAAErZ,GAAG,IAAIoZ,EAAE3uB,EAAQgpa,eAA8F,OAA/E,kBAAkBzzZ,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAEgtL,QAA6B,EAAEhtL,EAAEoZ,EAAEpZ,EAAEoZ,EAAGpZ,EAAEoZ,EAASppB,GAAG,KAAK,EAAE,IAAIrD,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzMqD,EAAE,CAAC3J,GAAG6/N,IAAIp9J,SAASzvC,EAAE2ra,cAAch1b,EAAE41E,UAAU5lE,EAAE+kb,eAAvDp4b,EAAEqT,EAAErT,EAAoEm7T,WAAW,GAAG9nT,EAAEoZ,GAAGppB,EAAE83T,UAAU9nT,EAAEgjB,EAAEnzB,EAAEG,GAAG,OAAOiB,EAAEk2E,IAAIn3E,IAAIiB,EAAEpB,KAAK2zZ,GAAG58L,EAAEuV,GAAGA,GAAG,GAAGqnL,GAAE,EAAGpnL,EAAE3U,EAAEznN,EAAEoZ,MAAMppB,EAAE83T,UAAUn7T,EAAEq2B,EAAEmkD,EAAEn3E,GAAGg2I,GAAGq2F,IAAIr2F,GAAE,EAAG1C,EAAE6iR,KAAYn2Z,CAAC,EACnevF,EAAQ8oa,qBAAqBxtM,EAAEt7N,EAAQs7b,sBAAsB,SAAS/1b,GAAG,IAAIqpB,EAAEiqE,EAAE,OAAO,WAAW,IAAItjF,EAAEsjF,EAAEA,EAAEjqE,EAAE,IAAI,OAAOrpB,EAAEojB,MAAMH,KAAK0M,UAAU,CAAC,QAAQ2jE,EAAEtjF,CAAC,CAAC,CAAC,+BCf7Ji9Y,EAAOxyZ,QAAU,EAAjBwyZ,mCCMW,IAAItwZ,EAAEjD,EAAQ,MAAwE,IAAIw5B,EAAE,oBAAoBttB,OAAOk6L,GAAGl6L,OAAOk6L,GAA1G,SAAW9/L,EAAEqpB,GAAG,OAAOrpB,IAAIqpB,IAAI,IAAIrpB,GAAG,EAAEA,IAAI,EAAEqpB,IAAIrpB,IAAIA,GAAGqpB,IAAIA,CAAC,EAAiDwwB,EAAEl9C,EAAE5B,SAAS0jD,EAAE9hD,EAAET,UAAUwH,EAAE/G,EAAEswE,gBAAgBzjD,EAAE7sB,EAAEw1E,cACtM,SAASgF,EAAEn3E,GAAG,IAAIqpB,EAAErpB,EAAEg5a,YAAYh5a,EAAEA,EAAE0I,MAAM,IAAI,IAAI0gB,EAAEC,IAAI,OAAO6J,EAAElzB,EAAEopB,EAAE,CAAC,MAAM4J,GAAG,OAAM,CAAE,CAAC,CAA4B,IAAIkjM,EAAE,qBAAqBl6N,QAAQ,qBAAqBA,OAAOyV,UAAU,qBAAqBzV,OAAOyV,SAASrV,cAAzI,SAAW4D,EAAEqpB,GAAG,OAAOA,GAAG,EAD+F,SAAWrpB,EAAEqpB,GAAG,IAAID,EAAEC,IAAI2J,EAAE6mB,EAAE,CAACm8Y,KAAK,CAACttb,MAAM0gB,EAAE4vZ,YAAY3vZ,KAAKrZ,EAAEgjB,EAAE,GAAGgja,KAAK1mW,EAAEt8D,EAAE,GAAwJ,OAArJtvB,GAAE,WAAWsM,EAAEtH,MAAM0gB,EAAEpZ,EAAEgpa,YAAY3vZ,EAAE8tD,EAAEnnE,IAAIs/E,EAAE,CAAC0mW,KAAKhmb,GAAG,GAAE,CAAChQ,EAAEopB,EAAEC,IAAIo1B,GAAE,WAA6B,OAAlB04B,EAAEnnE,IAAIs/E,EAAE,CAAC0mW,KAAKhmb,IAAWhQ,GAAE,WAAWm3E,EAAEnnE,IAAIs/E,EAAE,CAAC0mW,KAAKhmb,GAAG,GAAE,GAAE,CAAChQ,IAAIwpB,EAAEJ,GAAUA,CAAC,EAC5M3uB,EAAQ+8Z,0BAAqB,IAAS76Z,EAAE66Z,qBAAqB76Z,EAAE66Z,qBAAqBthM,+BCD7T,IAAIj1N,EAAEvH,EAAQ,MAASgK,EAAEhK,EAAQ,MAA+F,IAAI+J,EAAE,oBAAoBmC,OAAOk6L,GAAGl6L,OAAOk6L,GAA1G,SAAW9/L,EAAEqpB,GAAG,OAAOrpB,IAAIqpB,IAAI,IAAIrpB,GAAG,EAAEA,IAAI,EAAEqpB,IAAIrpB,IAAIA,GAAGqpB,IAAIA,CAAC,EAAiD8tD,EAAEzzE,EAAE8zZ,qBAAqB33Z,EAAEoB,EAAEoB,OAAO6zN,EAAEj1N,EAAE/E,UAAUi0F,EAAElvF,EAAEgrE,QAAQzjB,EAAEvnD,EAAEkxE,cAC/P13E,EAAQ2tb,iCAAiC,SAASpob,EAAEqpB,EAAE1sB,EAAEk9C,EAAEy1C,GAAG,IAAIt/E,EAAEnQ,EAAE,MAAM,GAAG,OAAOmQ,EAAE1Y,QAAQ,CAAC,IAAI07B,EAAE,CAACmgP,UAAS,EAAGzqQ,MAAM,MAAMsH,EAAE1Y,QAAQ07B,CAAC,MAAMA,EAAEhjB,EAAE1Y,QAAQ0Y,EAAEmgF,GAAE,WAAW,SAASnwF,EAAEA,GAAG,IAAIgQ,EAAE,CAAiB,GAAhBA,GAAE,EAAGoZ,EAAEppB,EAAEA,EAAE65C,EAAE75C,QAAM,IAASsvF,GAAGt8D,EAAEmgP,SAAS,CAAC,IAAI9pP,EAAE2J,EAAEtqB,MAAM,GAAG4mF,EAAEjmE,EAAErpB,GAAG,OAAOkzB,EAAE7J,CAAC,CAAC,OAAO6J,EAAElzB,CAAC,CAAK,GAAJqpB,EAAE6J,EAAKzvB,EAAE2lB,EAAEppB,GAAG,OAAOqpB,EAAE,IAAI1sB,EAAEk9C,EAAE75C,GAAG,YAAG,IAASsvF,GAAGA,EAAEjmE,EAAE1sB,GAAU0sB,GAAED,EAAEppB,EAASkzB,EAAEv2B,EAAC,CAAC,IAASysB,EAAE8J,EAAPljB,GAAE,EAAOyuC,OAAE,IAAS9hD,EAAE,KAAKA,EAAE,MAAM,CAAC,WAAW,OAAOqD,EAAEqpB,IAAI,EAAE,OAAOo1B,OAAE,EAAO,WAAW,OAAOz+C,EAAEy+C,IAAI,EAAE,GAAE,CAACp1B,EAAE1sB,EAAEk9C,EAAEy1C,IAAI,IAAIlmE,EAAE+tD,EAAEn3E,EAAEgQ,EAAE,GAAGA,EAAE,IACnc,OAAhDkmN,GAAE,WAAWljM,EAAEmgP,UAAS,EAAGngP,EAAEtqB,MAAM0gB,CAAC,GAAE,CAACA,IAAIo/B,EAAEp/B,GAAUA,CAAC,+BCRtD6jY,EAAOxyZ,QAAU,EAAjBwyZ,kCCAAA,EAAOxyZ,QAAU,EAAjBwyZ,4CCyCcvpZ,EAAIA,GAAA,QAAAyzE,EAAAxnD,UAAA7qB,OAA+BjF,EAAAob,MAAAk8D,EAAA,EAAAA,EAAA,KAAAx6E,EAAA,EAAAA,EAAAw6E,EAAAx6E,IAAAkD,EAAAlD,EAAA,GAAAgzB,UAAAhzB,GAQtB,MAElB2yB,MAAA,8BACqB5rB,GAC7B7D,EAAKiF,OAAS,IAAMjF,EAAKqD,KAAI,SAAAQ,GAAA,UAASA,EAAA,OAAMm9C,KAAK,KAAO,iECvC3Cs2B,EAAQzzE,GAAA,QACdA,KAAWA,EAAM48I,EAAA,UAKXzgJ,EAAY6D,GAAA,IAAAyzE,EAAA,QACtBzzE,IAAA,SAawBA,GAAA,IACxBA,GAA0B,iBAAVA,EAAoB,OAAO,MAC1CyzE,EAAQvxE,OAAOwyC,eAAe10C,GAAA,GACtB,OAAVyzE,EAAA,SACI,IAEFt3E,EACL+F,OAAO6jB,eAAeC,KAAKytD,EAAO,gBAAkBA,EAAMttD,YAAA,OAEvDhqB,IAAS+F,QAGG,mBAAR/F,GACPizI,SAAS36F,SAASzuB,KAAK7pB,KAAUysO,CAAA,CA1B7B,CAEU5oO,IACduX,MAAMC,QAAQxX,MACZA,EAAMyoO,OAAA,QAAAh1J,EACNzzE,EAAMmmB,mBAAA,IAAAstD,OAAA,EAANA,EAAoBg1J,KACtBz8M,EAAMhsB,IACNysF,EAAMzsF,GAAA,UA0BQ/G,EAASkD,GAAA,OACnBs3E,EAAQt3E,IAAQ6D,EAAI,GAAI7D,GACtBA,EAAMygJ,GAAazgJ,CAAA,CA8B3B,SAAgBsD,EAAKO,EAAUyzE,EAAWt3E,QAAA,IAAAA,IAAAA,GAAA,GAAiB,IACtDozO,EAAYvvO,IACb7D,EAAiB+F,OAAOC,KAAOowb,GAASvyb,GAAKkO,SAAQ,SAAAjV,GACjDkD,GAAiC,iBAARlD,GAAkBw6E,EAAKx6E,EAAK+G,EAAI/G,GAAM+G,EAAA,IAGrEA,EAAIkO,SAAQ,SAAC/R,EAAYlD,GAAA,OAAew6E,EAAKx6E,EAAOkD,EAAO6D,EAAA,aAK7CuvO,EAAYvvO,GAAA,IAErByzE,EAAgCzzE,EAAM48I,GAAA,OACrCnpE,EACJA,EAAMh0E,EAAQ,EACbg0E,EAAMh0E,EAAQ,EACbg0E,EAAMh0E,EACR8X,MAAMC,QAAQxX,GAAA,EAEdgsB,EAAMhsB,GAAA,EAENysF,EAAMzsF,GAAA,aAMMwyN,EAAIxyN,EAAYyzE,GAAA,WACxB87J,EAAYvvO,GAChBA,EAAMwkD,IAAIivB,GACVvxE,OAAOud,UAAUsG,eAAeC,KAAKhmB,EAAOyzE,EAAA,UAIhCn3E,EAAI0D,EAA2ByzE,GAAA,WAEvC87J,EAAYvvO,GAA0BA,EAAMgqB,IAAIypD,GAAQzzE,EAAMyzE,EAAA,CAItE,SAAgBnkD,EAAItvB,EAAYyzE,EAA6Bt3E,GAAA,IACtDlD,EAAIs2O,EAAYvvO,GAAA,IAClB/G,EAAoB+G,EAAMkxB,IAAIuiD,EAAgBt3E,GAAA,IACzClD,EACR+G,EAAMg9B,IAAI7gC,GACJ6D,EAAMyzE,GAAkBt3E,CAAA,UAIhBmQ,EAAGtM,EAAQyzE,GAAA,OAEtBzzE,IAAMyzE,EACI,IAANzzE,GAAW,EAAIA,GAAM,EAAIyzE,EAEzBzzE,GAAMA,GAAKyzE,GAAMA,CAAA,UAKVznD,EAAMhsB,GAAA,OACdk/I,GAAUl/I,aAAkByuL,GAAA,UAIpBhiG,EAAMzsF,GAAA,OACdD,GAAUC,aAAkBogM,GAAA,UAGpBt6K,EAAO9lB,GAAA,OACfA,EAAMuvO,GAASvvO,EAAM7D,CAAA,UAIbg6C,EAAYn2C,GAAA,GACvBuX,MAAMC,QAAQxX,GAAO,OAAOuX,MAAMkI,UAAUtR,MAAM6X,KAAKhmB,GAAA,IACrDyzE,EAAc++W,EAA0Bxyb,UACvCyzE,EAAYmpE,GAAA,QACfzgJ,EAAOo2b,EAAQ9+W,GACVx6E,EAAI,EAAGA,EAAIkD,EAAKiF,OAAQnI,IAAK,KAC/BwG,EAAWtD,EAAKlD,GAChBs2O,EAAO97J,EAAYh0E,IAAA,IACrB8vO,EAAK90L,WACR80L,EAAK90L,UAAA,EACL80L,EAAKrlN,cAAA,IAKFqlN,EAAKvlN,KAAOulN,EAAKr+M,OACpBuiD,EAAYh0E,GAAO,CAClByqB,cAAA,EACAuwB,UAAA,EACAxwB,WAAYslN,EAAKtlN,WACjBjlB,MAAOhF,EAAKP,IAAA,QAGRyC,OAAOkkB,OAAOlkB,OAAOwyC,eAAe10C,GAAOyzE,EAAA,UAWnC/tD,EAAU1lB,EAAU/G,GAAA,gBAAAA,IAAAA,GAAA,GAC/B22F,EAAS5vF,IAAQyzE,EAAQzzE,KAAS7D,EAAY6D,KAC9CuvO,EAAYvvO,GAAO,IACtBA,EAAIkxB,IAAMlxB,EAAIg9B,IAAMh9B,EAAI8/C,MAAQ9/C,EAAIg0C,OAASz2C,GAE9C2E,OAAOuwb,OAAOzyb,GACV/G,GAAMwG,EAAKO,GAAK,SAACA,EAAKyzE,GAAA,OAAU/tD,EAAO+tD,GAAA,EAAO,QALazzE,CAAA,CAShE,SAASzC,IACRyC,EAAI,YAGW4vF,EAAS5vF,GAAA,OACb,MAAPA,GAA8B,iBAARA,GAEnBkC,OAAOwwb,SAAS1yb,EAAA,UCxKR2lB,EACf8tD,GAAA,IAEMt3E,EAASw2b,EAAQl/W,GAAA,OAClBt3E,GACJ6D,EAAI,GAAIyzE,GAGFt3E,CAAA,UAGQ4+C,EACf/6C,EACAyzE,GAEKk/W,EAAQ3yb,KAAY2yb,EAAQ3yb,GAAayzE,EAAA,CClC/C,SAAgBtzD,IAAA,OAER00Y,CAAA,UAkBQnhV,EACf1zE,EACAyzE,GAEIA,IACH9tD,EAAU,WACV3lB,EAAMwyN,EAAW,GACjBxyN,EAAMgsB,EAAkB,GACxBhsB,EAAMysF,EAAiBhZ,EAAA,UAITmY,EAAY5rF,GAC3B0yZ,EAAW1yZ,GACXA,EAAM8lB,EAAQ5X,QAAQ+3H,GAEtBjmI,EAAM8lB,EAAU,cAGD4sY,EAAW1yZ,GACtBA,IAAU60Z,IACbA,EAAe70Z,EAAMm2C,EAAA,UAIP2O,EAAW9kD,GAAA,OAClB60Z,EArCD,CACN/uY,EAAS,GACTqwB,EAmCkC0+W,EAlClCt3Z,EAkCgDyC,EA/BhD+6C,GAAA,EACA56B,EAAoB,GAiCtB,SAAS8lH,EAAYjmI,GAAA,IACdyzE,EAAoBzzE,EAAM48I,GAAA,IAE/BnpE,EAAMh0E,GAAA,IACNg0E,EAAMh0E,EAENg0E,EAAMC,IACFD,EAAMmY,GAAA,CAAW,UC9DPmwQ,EAActoR,EAAax6E,GAC1CA,EAAMknB,EAAqBlnB,EAAM6sB,EAAQ1kB,OAAA,IACnC3B,EAAYxG,EAAM6sB,EAAS,GAC3BypN,OAAA,IAAa97J,GAAwBA,IAAWh0E,EAAA,OACjDxG,EAAMsE,EAAOm1Z,GACjB/sY,EAAU,OAAOsgH,EAAiBhtI,EAAOw6E,EAAQ87J,GAC9CA,GACC9vO,EAAUm9I,GAAam/M,IAC1BnwQ,EAAY3yF,GACZ+G,EAAI,IAED7D,EAAYs3E,KAEfA,EAAS4+I,EAASp5N,EAAOw6E,GACpBx6E,EAAMk9C,GAASuzB,EAAYzwE,EAAOw6E,IAEpCx6E,EAAMu5N,GACT7sM,EAAU,WAAW0sM,EACpB5yN,EAAUm9I,GAAazgJ,EACvBs3E,EACAx6E,EAAMu5N,EACNv5N,EAAM+yB,IAKRynD,EAAS4+I,EAASp5N,EAAOwG,EAAW,IAErCmsF,EAAY3yF,GACRA,EAAMu5N,GACTv5N,EAAMwzF,EAAgBxzF,EAAMu5N,EAAUv5N,EAAM+yB,GAEtCynD,IAAWsgJ,EAAUtgJ,OAAA,CAAS,CAGtC,SAAS4+I,EAASryN,EAAuByzE,EAAYt3E,GAAA,GAEhDyzF,EAASnc,GAAQ,OAAOA,EAAA,IAEtBx6E,EAAoBw6E,EAAMmpE,GAAA,IAE3B3jJ,EAAA,OACJwG,EACCg0E,GACA,SAACh0E,EAAK8vO,GAAA,OACLj9F,EAAiBtyI,EAAW/G,EAAOw6E,EAAOh0E,EAAK8vO,EAAYpzO,EAAA,OAGtDs3E,EAAA,GAGJx6E,EAAMq5I,IAAWtyI,EAAW,OAAOyzE,EAAA,IAElCx6E,EAAM8iW,EAAA,OACVryR,EAAY1pE,EAAW/G,EAAMkD,GAAA,GACtBlD,EAAMkD,EAAA,IAGTlD,EAAM22I,EAAY,CACtB32I,EAAM22I,GAAA,EACN32I,EAAMq5I,EAAOnyH,IAAA,IACPovN,EAAA,IAELt2O,EAAMwG,GAAA,IAAiCxG,EAAMwG,EACzCxG,EAAMs2O,EAAQp5L,EAAYl9C,EAAMu2B,GACjCv2B,EAAMs2O,EAKN/c,EAAa+c,EACbjzO,GAAA,EAAQ,IACRrD,EAAMwG,IACT+yN,EAAa,IAAIpyB,IAAImvC,GACrBA,EAAOzvL,QACPxjD,GAAA,GAEDmD,EAAK+yN,GAAY,SAAC/+I,EAAKh0E,GAAA,OACtB6yI,EAAiBtyI,EAAW/G,EAAOs2O,EAAQ97J,EAAKh0E,EAAYtD,EAAMG,EAAA,IAGnEotE,EAAY1pE,EAAWuvO,GAAA,GAEnBpzO,GAAQ6D,EAAUwyN,GACrB7sM,EAAU,WAAWooH,EACpB90I,EACAkD,EACA6D,EAAUwyN,EACVxyN,EAAUgsB,EAAA,QAIN/yB,EAAMs2O,CAAA,CAGd,SAASj9F,EACRr5I,EACAwG,EACA8vO,EACAjzO,EACAgQ,EACA0f,EACAygE,GAAA,GAGIhZ,EAAQnnE,GAAa,KASlBwZ,EAAMusM,EAASp5N,EAAWqT,EAP/B0f,GACAvsB,GAAA,IACAA,EAAaA,IACZ+yN,EAAK/yN,EAA8CwzZ,EAAY32Z,GAC7D0vB,EAAUvoB,OAAOnH,QAAA,GACjB,GAGJgzB,EAAIigN,EAAcjzO,EAAMwpB,IAGpB2tD,EAAQ3tD,GAEL,OADN7sB,EAAU8hD,GAAA,CAAiB,MAElB0xC,GACV8iJ,EAAavyM,IAAI1wB,GAAA,GAGdnQ,EAAYmQ,KAAgBsjF,EAAStjF,GAAa,KAChDrT,EAAUsE,EAAO60N,GAAen5N,EAAUknB,EAAqB,EAAG,OAQvEkyM,EAASp5N,EAAWqT,GAEf7M,GAAgBA,EAAY6yI,EAAOn8F,GACvCuzB,EAAYzwE,EAAWqT,EAAA,EAI1B,SAASo9D,EAAY1pE,EAAmByzE,EAAYt3E,QAAA,IAAAA,IAAAA,GAAA,IAE9C6D,EAAMm2C,GAAWn2C,EAAMzC,EAAO60N,GAAepyN,EAAM+6C,GACvDr1B,EAAO+tD,EAAOt3E,EAAA,CCqEhB,SAASwsO,EAAK3oO,EAAgByzE,GAAA,IACvBt3E,EAAQ6D,EAAM48I,GAAA,OACLzgJ,EAAQ2pB,EAAO3pB,GAAS6D,GACzByzE,EAAA,CAcf,SAASm8D,EACR5vI,EACAyzE,GAAA,GAGMA,KAAQzzE,EAAA,QACV7D,EAAQ+F,OAAOwyC,eAAe10C,GAC3B7D,GAAO,KACPlD,EAAOiJ,OAAOmnZ,yBAAyBltZ,EAAOs3E,GAAA,GAChDx6E,EAAM,OAAOA,EACjBkD,EAAQ+F,OAAOwyC,eAAev4C,EAAA,WAKhBqzB,EAAYxvB,GACtBA,EAAM+7V,IACV/7V,EAAM+7V,GAAA,EACF/7V,EAAMm2C,GACT3mB,EAAYxvB,EAAMm2C,GAAA,UAKL+8K,EAAYlzN,GACtBA,EAAMuvO,IACVvvO,EAAMuvO,EAAQp5L,EAAYn2C,EAAM7D,GAAA,CCtDlC,SAAgB4xI,EACf/tI,EACAyzE,EACAt3E,GAAA,IAGMlD,EAAiB+yB,EAAMynD,GAC1B9tD,EAAU,UAAU2sM,EAAU7+I,EAAOt3E,GACrCswF,EAAMhZ,GACN9tD,EAAU,UAAU4sM,EAAU9+I,EAAOt3E,GACrC6D,EAAM0yZ,EAAA,SDvLT1yZ,EACAyzE,GAAA,IAEMt3E,EAAUob,MAAMC,QAAQxX,GACxB/G,EAAoB,CACzBwG,EAAOtD,EAAA,EAAkC,EAEzCm2I,EAAQ7+D,EAASA,EAAO6+D,EAASnyH,IAEjC47U,GAAA,EAEAnsN,GAAA,EAEAqjR,EAAW,CAAC,EAEZ98W,EAASs9B,EAETt3E,EAAO6D,EAEPwvB,EAAQ,KAER+/M,EAAO,KAEP77J,EAAS,KACT+7U,GAAA,GASGhwZ,EAAYxG,EACZs2O,EAA2Chf,GAC3Cp0N,IACHsD,EAAS,CAACxG,GACVs2O,EAAQqjN,IAAA,IAAApgO,EAGeqgO,MAAMC,UAAUrzb,EAAQ8vO,GAAzCjzO,EAAAk2N,EAAAugO,OAAQzja,EAAAkjM,EAAAwgO,MAAA,OACf/5b,EAAMu2B,EAASF,EACfr2B,EAAMy6E,EAAUp3E,EACTgzB,CAAA,CC4IE,CACWmkD,EAAOt3E,GACxBwpB,EAAU,OAAO8sY,EAAgBh/U,EAAOt3E,GAAA,OAE7BA,EAASA,EAAOm2I,EAASnyH,KACjC2F,EAAQvF,KAAKtnB,GACZA,CAAA,UC9NQg6Z,EAAQh6Z,GAAA,OAClBw6E,EAAQx6E,IAAQ+G,EAAI,GAAI/G,GAI9B,SAAS+G,EAAYyzE,GAAA,IACft3E,EAAYs3E,GAAQ,OAAOA,EAAA,IAE5Bx6E,EADEu5N,EAAgC/+I,EAAMmpE,GAEtCtwI,EAAWijO,EAAY97J,GAAA,GACzB++I,EAAO,KAERA,EAAMupI,IACNvpI,EAAM/yN,EAAQ,IAAMkmB,EAAU,OAAO+iN,EAAYlW,IAElD,OAAOA,EAAMr2N,EAEdq2N,EAAM5iF,GAAA,EACN32I,EAAOm5N,EAAW3+I,EAAOnnE,GACzBkmN,EAAM5iF,GAAA,CAAa,MAEnB32I,EAAOm5N,EAAW3+I,EAAOnnE,GAAA,OAG1B7M,EAAKxG,GAAM,SAACw6E,EAAKt3E,GACZq2N,GAASl2N,EAAIk2N,EAAMr2N,EAAOs3E,KAASt3E,GACvCmzB,EAAIr2B,EAAMw6E,EAAKzzE,EAAY7D,GAAA,QAGrBmQ,EAA4B,IAAI8zL,IAAInnM,GAAQA,CAAA,CAxBpD,CAHoBA,EAAA,CA8BpB,SAASm5N,EAAWpyN,EAAYyzE,GAAA,OAEvBA,GAAA,cAEC,IAAIg7G,IAAIzuL,GAAA,cAGRuX,MAAMklC,KAAKz8C,GAAA,OAEbm2C,EAAYn2C,EAAA,UClCJsyN,IAAA,SA8ENn2N,EACR6D,EACAyzE,GAAA,IAEIt3E,EAAO6vB,EAAYhsB,GAAA,OACnB7D,EACHA,EAAK8tB,WAAawpD,EAElBznD,EAAYhsB,GAAQ7D,EAAO,CAC1B+tB,cAAA,EACAD,WAAAwpD,EACAzpD,IAAA,eACOypD,EAAQl0D,KAAKq9H,GAAA,OAGZ2zE,GAAYvmM,IAAIypD,EAAOzzE,EAAA,EAE/BkxB,IAAA,SAAeuiD,GAAA,IACRt3E,EAAQojB,KAAKq9H,GAGnB2zE,GAAYr/L,IAAI/0B,EAAO6D,EAAMyzE,EAAA,GAIzBt3E,CAAA,UAIClD,EAAiB+G,GAAA,IAKpB,IAAIyzE,EAAIzzE,EAAOoB,OAAS,EAAGqyE,GAAK,EAAGA,IAAK,KACtCt3E,EAAkB6D,EAAOyzE,GAAGmpE,GAAA,IAC7BzgJ,EAAM4/V,EAAA,OACF5/V,EAAMsD,GAAA,OAERnD,EAAgBH,IAAQqzB,EAAYrzB,GAAA,aAGpCozO,EAAiBpzO,IAAQqzB,EAAYrzB,GAAA,WA6DrCozO,EAAiBvvO,GAAA,QAClByzE,EAAiBzzE,EAAjB7D,EAAOA,EAAU6D,EAAVwvB,EAIRv2B,EAAOs5b,EAAQp2b,GACZsD,EAAIxG,EAAKmI,OAAS,EAAG3B,GAAK,EAAGA,IAAK,KACpC8vO,EAAWt2O,EAAKwG,GAAA,GAClB8vO,IAAQ3yF,EAAA,KACNtgJ,EAAYm3E,EAAM87J,GAAA,YAEpBjzO,IAA4Bk2N,EAAI/+I,EAAO87J,GAAA,SACnC,IAKDjgN,EAAQnzB,EAAOozO,GACfvjN,EAAoBsD,GAASA,EAAMstH,GAAA,GACrC5wH,EAAQA,EAAM7vB,IAAUG,GAAagQ,EAAGgjB,EAAOhzB,GAAA,QAC3C,MAOJmwF,IAAgBhZ,EAAMmpE,GAAA,OACrB3jJ,EAAKmI,SAAWmxb,EAAQ9+W,GAAOryE,QAAUqrF,EAAc,EAAI,YAG1DnwF,EAAgB0D,GAAA,IACjByzE,EAAUzzE,EAAVwvB,EAAA,GACHikD,EAAOryE,SAAWpB,EAAM7D,EAAMiF,OAAQ,OAAO,MAS3CjF,EAAa+F,OAAOmnZ,yBACzB51U,EACAA,EAAOryE,OAAS,MAGbjF,IAAeA,EAAW6tB,IAAK,OAAO,MAErC,IAAI/wB,EAAI,EAAGA,EAAIw6E,EAAOryE,OAAQnI,IAAA,IAC7Bw6E,EAAO1tD,eAAe9sB,GAAI,OAAO,UAGhC,CAU0C,IAxK5C+yB,EAAoD,CAAC,EA2K3D+uB,EAAW,MAAO,CACjB03W,EAAA,SA5MAzyZ,EACAyzE,GAAA,IAEMx6E,EAAUse,MAAMC,QAAQxX,GACxBP,EAAA,SA1BiBO,EAAkByzE,GAAA,GACrCzzE,EAAS,SACN/G,EAAYse,MAAMk8D,EAAKryE,QACpB3B,EAAI,EAAGA,EAAIg0E,EAAKryE,OAAQ3B,IAChCyC,OAAO6nB,eAAe9wB,EAAO,GAAKwG,EAAGtD,EAAcsD,GAAA,IAAG,OAChDxG,CAAA,KAEDs2O,EAAcijN,EAA0B/+W,UACvC87J,EAAY3yF,GAAA,QACb41E,EAAO+/N,EAAQhjN,GACZjzO,EAAI,EAAGA,EAAIk2N,EAAKpxN,OAAQ9E,IAAK,KAC/BgzB,EAAWkjM,EAAKl2N,GACtBizO,EAAYjgN,GAAOnzB,EAClBmzB,EACAtvB,KAAauvO,EAAYjgN,GAAKrF,WAAA,QAGzB/nB,OAAOkkB,OAAOlkB,OAAOwyC,eAAe++B,GAAO87J,EAAA,CAS7C,CAAuBt2O,EAAS+G,GAEhCuvO,EAAwC,CAC7C9vO,EAAOxG,EAAA,EAAgC,EACvCq5I,EAAQ7+D,EAASA,EAAO6+D,EAASnyH,IACjC47U,GAAA,EACAnsN,GAAA,EACAqjR,EAAW,CAAC,EACZ98W,EAASs9B,EAETt3E,EAAO6D,EAEPwvB,EAAQ/vB,EACR8vO,EAAO,KACP3jJ,GAAA,EACA6jU,GAAA,GAAW,OAGZvtZ,OAAO6nB,eAAetqB,EAAOm9I,EAAa,CACzC53I,MAAOuqO,EAEP90L,UAAA,IAEMh7C,CAAA,EAkLPwmI,EAAA,SAvPAjmI,EACA7D,EACAozO,GAEKA,EASJ97J,EAAQt3E,IACPA,EAAOygJ,GAA0BtK,IAAWtyI,GAE7C/G,EAAiB+G,EAAM8lB,IAXnB9lB,EAAMwyN,GAAA,SAwHHxyN,EAAuByzE,GAAA,GAC1BA,GAA4B,iBAAXA,EAAA,KAChBt3E,EAA8Bs3E,EAAOmpE,GAAA,GACtCzgJ,EAAA,KACElD,EAAmCkD,EAAnCA,EAAOozO,EAA4BpzO,EAA5BqzB,EAAQF,EAAoBnzB,EAApB82Z,EAAW3mZ,EAASnQ,EAATsD,EAAA,OAC7B6M,EAKH7M,EAAK8vO,GAAQ,SAAA97J,GACPA,IAAgBmpE,SAAA,IAEhB3jJ,EAAcw6E,IAAuB++I,EAAIv5N,EAAOw6E,GAGzCnkD,EAAUmkD,IAErBzzE,EAAuBuvO,EAAO97J,KAJ9BnkD,EAAUmkD,IAAA,EACVjkD,EAAYrzB,IAAA,IAOdsD,EAAKxG,GAAO,SAAA+G,QAAA,IAEPuvO,EAAOvvO,IAAuBwyN,EAAI+c,EAAQvvO,KAC7CsvB,EAAUtvB,IAAA,EACVwvB,EAAYrzB,GAAA,SAGR,GAAI,IAAAmQ,EAA8B,IACpChQ,EAAgBH,KACnBqzB,EAAYrzB,GACZmzB,EAAUluB,QAAA,GAGPmuO,EAAOnuO,OAASnI,EAAMmI,OAAA,IACpB,IAAI4qB,EAAIujN,EAAOnuO,OAAQ4qB,EAAI/yB,EAAMmI,OAAQ4qB,IAAKsD,EAAUtD,IAAA,OAAK,IAE7D,IAAIygE,EAAIxzF,EAAMmI,OAAQqrF,EAAI8iJ,EAAOnuO,OAAQqrF,IAAKn9D,EAAUm9D,IAAA,EAAK,QAI7D3mE,EAAMzR,KAAKC,IAAIi7N,EAAOnuO,OAAQnI,EAAMmI,QAEjC+0C,EAAI,EAAGA,EAAIrwB,EAAKqwB,IAEnBo5L,EAAOxpN,eAAeowB,KAC1B7mB,EAAU6mB,IAAA,QAAK,IAEZ7mB,EAAU6mB,IAAkBn2C,EAAuBuvO,EAAOp5L,GAAA,IAzKrD,CACcn2C,EAAM8lB,EAAS,IAGvC7sB,EAAiB+G,EAAM8lB,GAAA,EA+OxB4iN,EAAA,SAboB1oO,GAAA,WACbA,EAAMP,EACV8vO,EAAiBvvO,GACjB1D,EAAgB0D,EAAA,aC9OLuyN,IAAA,SA6PNt5N,EAAoB+G,GAAA,IACvB7D,EAAY6D,GAAM,OAAOA,EAAA,GAC1BuX,MAAMC,QAAQxX,GAAM,OAAOA,EAAIR,IAAIvG,GAAA,GACnC+yB,EAAMhsB,GACT,OAAO,IAAIyuL,IACVl3K,MAAMklC,KAAKz8C,EAAIg5B,WAAWx5B,KAAI,SAAAQ,GAAA,MAAY,CAAAA,EAAC,GAAG/G,EAAA+G,EAAA,YAE5CysF,EAAMzsF,GAAM,OAAO,IAAIogM,IAAI7oL,MAAMklC,KAAKz8C,GAAKR,IAAIvG,IAAA,IAC7Cw6E,EAASvxE,OAAOkkB,OAAOlkB,OAAOwyC,eAAe10C,IAAA,IAC9C,IAAMP,KAAOO,EAAKyzE,EAAOh0E,GAAOxG,EAAoB+G,EAAIP,IAAA,OACzD+yN,EAAIxyN,EAAKyoO,KAAYh1J,EAAOg1J,GAAazoO,EAAIyoO,IAC1Ch1J,CAAA,UAGCnkD,EAA2BtvB,GAAA,OAC/ByzE,EAAQzzE,GACJ/G,EAAoB+G,GACdA,CAAA,KA5QTsM,EAAM,MA+QZyuC,EAAW,UAAW,CACrBsjD,EAAA,SAlGyB5qB,EAAUt3E,GAAA,OACnCA,EAAQ+R,SAAQ,SAAA/R,GAAA,QACRsD,EAAYtD,EAAZ6gD,KAAMw1K,EAAMr2N,EAAN6iF,GAET1vD,EAAYmkD,EACPznD,EAAI,EAAGA,EAAIvsB,EAAK2B,OAAS,EAAG4qB,IAAK,KACnCygE,EAAa8iJ,EAAYjgN,GAC3BxJ,EAAIrmB,EAAKusB,GACI,iBAANlG,GAA+B,iBAANA,IACnCA,EAAI,GAAKA,GAAA,IAKR2mE,GAAA,IAAkCA,GAC5B,cAAN3mE,GAA2B,gBAANA,GAEtB9lB,EAAI,IACe,mBAATsvB,GAA6B,cAANxJ,GAAmB9lB,EAAI,IAErC,iBADpBsvB,EAAOhzB,EAAIgzB,EAAMxJ,KACa9lB,EAAI,GAAIP,EAAK09C,KAAK,UAG3ChH,EAAOo5L,EAAYjgN,GACnB5J,EAAQzsB,EAAoBkD,EAAM6I,OAClCzH,EAAMkC,EAAKA,EAAK2B,OAAS,UACvBoxN,GAAA,IAzMM,iBA2MJr8K,GAAA,cAEC7mB,EAAK4B,IAAI3zB,EAAKmoB,GAAA,OAGrB1lB,EAAI,mBAMIsvB,EAAK/xB,GAAOmoB,EAAA,KAElBpZ,EAAA,OACI6pC,GAAA,aAES,MAAR54C,EACJ+xB,EAAK/O,KAAKmF,GACV4J,EAAKjM,OAAO9lB,EAAY,EAAGmoB,GAAA,cAEvB4J,EAAK4B,IAAI3zB,EAAKmoB,GAAA,cAEd4J,EAAK0N,IAAItX,GAAA,eAER4J,EAAK/xB,GAAOmoB,EAAA,IAjOX,gBAoOHywB,GAAA,cAEC7mB,EAAKjM,OAAO9lB,EAAY,iBAExB+xB,EAAK0kB,OAAOz2C,GAAA,cAEZ+xB,EAAK0kB,OAAO73C,EAAM6I,OAAA,sBAEXsqB,EAAK/xB,GAAA,QAGrByC,EAAI,GAAIwyN,GAAA,IAIJ/+I,CAAA,EA6BPs6D,EAAA,SA7QA/tI,EACAyzE,EACAt3E,EACAlD,GAAA,OAEQ+G,EAAMP,GAAA,qCAgFdO,EACAyzE,EACAt3E,EACAlD,GAAA,IAEOs2O,EAAgBvvO,EAAhB7D,EAAO6vB,EAAShsB,EAATuvO,EACd9vO,EAAKO,EAAMizZ,GAAY,SAACjzZ,EAAKP,GAAA,IACtBgtF,EAAYnwF,EAAIizO,EAAOvvO,GACvB8lB,EAAQxpB,EAAI0vB,EAAQhsB,GACpBm2C,EAAM12C,EAAyB+yN,EAAI+c,EAAOvvO,GAnGlC,UAmGmDsM,EAjGpD,YAkGTmgF,IAAc3mE,GApGJ,YAoGaqwB,EAAA,KACrBzwB,EAAO+tD,EAAShwE,OAAOzD,GAC7B7D,EAAQokB,KApGK,WAoGA41B,EAAgB,CAAC6oC,GAAA7oC,EAAI6G,KAAAt3B,GAAQ,CAACs5D,GAAA7oC,EAAI6G,KAAAt3B,EAAM1gB,MAAA8gB,IACrD7sB,EAAesnB,KACd41B,IAAO7pC,EACJ,CAAC0yE,GAvGQ,SAuGIhiC,KAAAt3B,GAvGJ,WAwGTywB,EACA,CAAC6oC,GAAI1yE,EAAK0wC,KAAAt3B,EAAM1gB,MAAOsqB,EAAwBm9D,IAC/C,CAACzN,GA5GS,UA4GIhiC,KAAAt3B,EAAM1gB,MAAOsqB,EAAwBm9D,IAAA,KAlG1C,CAKXzsF,EACAyzE,EACAt3E,EACAlD,GAAA,8BAgBH+G,EACAyzE,EACAt3E,EACAlD,GAAA,IAEKwG,EAAoBO,EAApB7D,EAAOozO,EAAavvO,EAAbizZ,EACRzgM,EAAQxyN,EAAMuvO,EAAA,GAGd/c,EAAMpxN,OAAS3B,EAAM2B,OAAQ,KAAA9E,EAEd,CAACk2N,EAAO/yN,GAAxBA,EAAAnD,EAAA,GAAOk2N,EAAAl2N,EAAA,OAAA0vB,EACoB,CAAC/yB,EAAgBkD,GAA5CA,EAAA6vB,EAAA,GAAS/yB,EAAA+yB,EAAA,OAIP,IAAIygE,EAAI,EAAGA,EAAIhtF,EAAM2B,OAAQqrF,IAAA,GAC7B8iJ,EAAU9iJ,IAAM+lI,EAAM/lI,KAAOhtF,EAAMgtF,GAAI,KACpC3mE,EAAO2tD,EAAShwE,OAAO,CAACgpF,IAC9BtwF,EAAQokB,KAAK,CACZy+D,GAtDY,UAuDZhiC,KAAAl3B,EAGA9gB,MAAOsqB,EAAwBkjM,EAAM/lI,MAEtCxzF,EAAesnB,KAAK,CACnBy+D,GA7DY,UA8DZhiC,KAAAl3B,EACA9gB,MAAOsqB,EAAwB7vB,EAAMgtF,KAAA,KAMnC,IAAIt2C,EAAI12C,EAAM2B,OAAQ+0C,EAAIq8K,EAAMpxN,OAAQ+0C,IAAK,KAC3CzwB,EAAO+tD,EAAShwE,OAAO,CAAC0yC,IAC9Bh6C,EAAQokB,KAAK,CACZy+D,GAAI1yE,EACJ0wC,KAAAt3B,EAGA1gB,MAAOsqB,EAAwBkjM,EAAMr8K,KAAA,CAGnC12C,EAAM2B,OAASoxN,EAAMpxN,QACxBnI,EAAesnB,KAAK,CACnBy+D,GAjFa,UAkFbhiC,KAAMy2B,EAAShwE,OAAO,CAAC,WACvBuB,MAAOvF,EAAM2B,QAAA,CAjEZ,CAI2BpB,EAAOyzE,EAAUt3E,EAASlD,GAAA,uBA4FxD+G,EACAyzE,EACAt3E,EACAlD,GAAA,IAEKwG,EAAgBO,EAAhB7D,EAAOozO,EAASvvO,EAATuvO,EAER/c,EAAI,EACR/yN,EAAMyO,SAAQ,SAAClO,GAAA,IACTuvO,EAAO/qL,IAAIxkD,GAAQ,KACjBP,EAAOg0E,EAAShwE,OAAO,CAAC+uN,IAC9Br2N,EAAQokB,KAAK,CACZy+D,GA5HW,SA6HXhiC,KAAAv9C,EACAuF,MAAAhF,IAED/G,EAAe42D,QAAQ,CACtBmvB,GAAI1yE,EACJ0wC,KAAAv9C,EACAuF,MAAAhF,GAAA,CAGFwyN,GAAA,IAEDA,EAAI,EACJ+c,EAAOrhO,SAAQ,SAAClO,GAAA,IACVP,EAAM+kD,IAAIxkD,GAAQ,KAChBuvO,EAAO97J,EAAShwE,OAAO,CAAC+uN,IAC9Br2N,EAAQokB,KAAK,CACZy+D,GAAI1yE,EACJ0wC,KAAAuyL,EACAvqO,MAAAhF,IAED/G,EAAe42D,QAAQ,CACtBmvB,GAlJW,SAmJXhiC,KAAAuyL,EACAvqO,MAAAhF,GAAA,CAGFwyN,GAAA,IAnIuD,CAGpDxyN,EACDyzE,EACAt3E,EACAlD,GAAA,EAuPHo5N,EAAA,SArHAryN,EACAyzE,EACAt3E,EACAlD,GAEAkD,EAAQokB,KAAK,CACZy+D,GApKc,UAqKdhiC,KAAM,GACNh4C,MAAOyuE,IAAgBsgJ,OAAA,EAAsBtgJ,IAE9Cx6E,EAAesnB,KAAK,CACnBy+D,GAzKc,UA0KdhiC,KAAM,GACNh4C,MAAOhF,GAAA,wFC1FF,IAAAwvI,EPnFJqlR,EQpBE/nR,EACa,oBAAXp3F,QAAiD,iBAAhBA,OAAO,KACnCwpG,EAAwB,oBAARuvC,IAChB1uL,EAAwB,oBAARqgM,IAChB0vN,EACK,oBAAV+iC,YAAA,IACAA,MAAMC,WACM,oBAAZx0B,QAKKvqM,EAAmBjnF,EAC7Bp3F,OAAO03V,IAAI,mBAAA59P,EAAA,IACR,oBAAkBA,GAUXi5F,EAA2B37F,EACrCp3F,OAAO03V,IAAI,mBACV,qBAESxwP,EAA6B9P,EACvCp3F,OAAO03V,IAAI,eACV,iBVAExkK,GUIa,oBAAVlzL,QAAyBA,OAAOE,SVJhB,GAAA1zC,OAAOud,UAAU0G,aA4B7Bosa,EACO,oBAAZj0B,SAA2BA,QAAQ6uB,QACvC7uB,QAAQ6uB,aAAA,IACDjrb,OAAOu4B,sBACd,SAAAz6B,GAAA,OACAkC,OAAOm0C,oBAAoBr2C,GAAKyD,OAC/BvB,OAAOu4B,sBAAsBz6B,GAAA,EAEHkC,OAAOm0C,oBAEzBm8Y,EACZtwb,OAAOq1C,2BACP,SAAmCv3C,GAAA,IAE5ByzE,EAAW,CAAC,EAAD,OACjB8+W,EAAQvyb,GAAQkO,SAAQ,SAAA/R,GACvBs3E,EAAIt3E,GAAO+F,OAAOmnZ,yBAAyBrpZ,EAAQ7D,EAAA,IAE7Cs3E,CAAA,ECnEHk/W,EA4BF,CAAC,EGyDQpiO,GAAwC,CACpDvmM,IAAA,SAAIhqB,EAAOyzE,GAAA,GACNA,IAASmpE,EAAa,OAAO58I,EAAA,IAE3B/G,EAAS6sB,EAAO9lB,GAAA,IACjBwyN,EAAIv5N,EAAQw6E,GAAA,OAwInB,SAA2BzzE,EAAmByzE,EAAat3E,GAAA,IAAAlD,EACpDwG,EAAOmwI,EAAuBn8D,EAAQt3E,GAAA,OACrCsD,EACJ,UAAWA,EACVA,EAAKuF,MAAA,QAAA/L,EAGLwG,EAAKuqB,WAAA,IAAA/wB,OAAA,EAALA,EAAU+sB,KAAKhmB,EAAMwvB,QAAA,CACtB,CARJ,CAtI4BxvB,EAAO/G,EAAQw6E,GAAA,IAEnCh0E,EAAQxG,EAAOw6E,GAAA,OACjBzzE,EAAM4vI,IAAezzI,EAAYsD,GAC7BA,EAIJA,IAAUkpO,EAAK3oO,EAAM7D,EAAOs3E,IAC/By/I,EAAYlzN,GACJA,EAAMuvO,EAAO97J,GAAes6D,EACnC/tI,EAAMsyI,EAAO/0I,EACbkC,EACAO,IAGKP,CAAA,EAER+kD,IAAA,SAAIxkD,EAAOyzE,GAAA,OACHA,KAAQ3tD,EAAO9lB,EAAA,EAEvBmtb,QAAA,SAAQntb,GAAA,OACAs+Z,QAAQ6uB,QAAQrna,EAAO9lB,GAAA,EAE/BkxB,IAAA,SACClxB,EACAyzE,EACAt3E,GAAA,IAEMlD,EAAO22I,EAAuB9pH,EAAO9lB,GAAQyzE,GAAA,GAC/C,MAAAx6E,OAAA,EAAAA,EAAMi4B,IAAA,OAGTj4B,EAAKi4B,IAAIlL,KAAKhmB,EAAMwvB,EAAQrzB,IAAA,EACrB,IAEH6D,EAAM+7V,EAAW,KAGft8V,EAAUkpO,EAAK7iN,EAAO9lB,GAAQyzE,GAE9B87J,EAAiC,MAAA9vO,OAAA,EAAAA,EAAUm9I,GAAA,GAC7C2yF,GAAgBA,EAAapzO,IAAUA,EAAA,OAC1C6D,EAAMuvO,EAAO97J,GAAQt3E,EACrB6D,EAAMizZ,EAAUx/U,IAAA,GAAQ,EACjB,GAEJnnE,EAAGnQ,EAAOsD,UAAA,IAAatD,GAAuBq2N,EAAIxyN,EAAM7D,EAAOs3E,IAClE,OAAO,EACRy/I,EAAYlzN,GACZwvB,EAAYxvB,EAAA,QAIXA,EAAMuvO,EAAO97J,KAAUt3E,SAAA,IAEtBA,GAAuBs3E,KAAQzzE,EAAMuvO,IAEtCp0L,OAAOi4B,MAAMj3E,IAAUg/C,OAAOi4B,MAAMpzE,EAAMuvO,EAAO97J,MAKnDzzE,EAAMuvO,EAAO97J,GAAQt3E,EACrB6D,EAAMizZ,EAAUx/U,IAAA,IAAQ,CAJhB,EAOTw/W,eAAA,SAAejzb,EAAOyzE,GAAA,gBAEjBk1J,EAAK3oO,EAAM7D,EAAOs3E,IAAuBA,KAAQzzE,EAAM7D,GAC1D6D,EAAMizZ,EAAUx/U,IAAA,EAChBy/I,EAAYlzN,GACZwvB,EAAYxvB,WAGLA,EAAMizZ,EAAUx/U,GAGpBzzE,EAAMuvO,UAAcvvO,EAAMuvO,EAAM97J,IAAA,CAC7B,EAIR41U,yBAAA,SAAyBrpZ,EAAOyzE,GAAA,IACzBt3E,EAAQ2pB,EAAO9lB,GACf/G,EAAOqla,QAAQjV,yBAAyBltZ,EAAOs3E,GAAA,OAChDx6E,EACE,CACNwhD,UAAA,EACAvwB,aAAA,IAAclqB,EAAMP,GAA2C,WAATg0E,EACtDxpD,WAAYhxB,EAAKgxB,WACjBjlB,MAAO7I,EAAMs3E,IALIx6E,CAAA,EAQnB8wB,eAAA,WACC/pB,EAAI,KAEL00C,eAAA,SAAe10C,GAAA,OACPkC,OAAOwyC,eAAe10C,EAAM7D,EAAA,EAEpCypB,eAAA,WACC5lB,EAAI,MAQA4yb,GAA8C,CAAC,EACrDnzb,EAAK8wN,IAAa,SAACvwN,EAAKyzE,GAEvBm/W,GAAW5yb,GAAO,kBACjBisB,UAAU,GAAKA,UAAU,GAAG,GACrBwnD,EAAG/zD,MAAMH,KAAM0M,UAAA,KAGxB2ma,GAAWK,eAAiB,SAASx/W,EAAOt3E,GAAA,OAGpCy2b,GAAW1ha,IAAKlL,KAAKzG,KAAMk0D,EAAOt3E,OAAA,EAAM,EAEhDy2b,GAAW1ha,IAAM,SAASuiD,EAAOt3E,EAAMlD,GAAA,OAE/Bs3N,GAAYr/L,IAAKlL,KAAKzG,KAAMk0D,EAAM,GAAIt3E,EAAMlD,EAAOw6E,EAAM,SCpMpDy/W,GAAb,oBAAAj6b,EAKaw6E,GAAA,IAAAx6E,EAAA,UAAAy5Z,EAJW5C,EAAA,KAAA19L,GAAA,EAEA,KAAA+gO,QA4BH,SAAC1/W,EAAWh0E,EAAc8vO,GAAA,GAEzB,mBAAT97J,GAAyC,mBAAXh0E,EAAuB,KACzD+yN,EAAc/yN,EACpBA,EAASg0E,EAAA,IAEHn3E,EAAOrD,EAAA,OACN,SAEN+G,GAAA,IAAAyzE,EAAA,cAAAzzE,IAAAA,EAAOwyN,GAAA,QAAAr2N,EAAA8vB,UAAA7qB,OACJnI,EAAAse,MAAApb,EAAA,EAAAA,EAAA,KAAAozO,EAAA,EAAAA,EAAApzO,EAAAozO,IAAAt2O,EAAAs2O,EAAA,GAAAtjN,UAAAsjN,GAAA,OAEIjzO,EAAK62b,QAAQnzb,GAAM,SAACA,GAAA,IAAA7D,EAAA,OAAAA,EAAmBsD,GAAOumB,KAAAtG,MAAAvjB,EAAA,CAAKs3E,EAAMzzE,GAAAyD,OAAUxK,GAAA,SAQxEq2B,EAAA,GAJkB,mBAAX7vB,GAAuBO,EAAI,YAClCuvO,GAAwD,mBAAlBA,GACzCvvO,EAAI,GAKD7D,EAAYs3E,GAAO,KAChBnnE,EAAQw4C,EAAW7rD,GACnB+yB,EAAQ+hH,EAAY90I,EAAMw6E,OAAA,GAC5BgZ,GAAA,EAAW,IAEdn9D,EAAS7vB,EAAOusB,GAChBygE,GAAA,CAAW,SAGPA,EAAUb,EAAYt/E,GACrBomZ,EAAWpmZ,EAAA,OAEM,oBAAZob,SAA2B4H,aAAkB5H,QAChD4H,EAAOt7B,MACb,SAAAgM,GAAA,OACC0zE,EAAkBpnE,EAAOijO,GAClBwsH,EAAc/7V,EAAQsM,EAAA,IAE9B,SAAAtM,GAAA,MACC4rF,EAAYt/E,GACNtM,CAAA,KAIT0zE,EAAkBpnE,EAAOijO,GAClBwsH,EAAczsU,EAAQhjB,GAAA,CACvB,IAAKmnE,GAAwB,iBAATA,EAAmB,cAC7CnkD,EAAS7vB,EAAOg0E,MACUnkD,EAASmkD,GAC/BnkD,IAAWykM,IAASzkM,OAAA,GACpBr2B,EAAKm5N,GAAa1sM,EAAO4J,GAAA,GACzBigN,EAAe,KACZzpN,EAAa,GACbqwB,EAAc,GACpBxwB,EAAU,WAAW0sM,EAA4B5+I,EAAMnkD,EAAQxJ,EAAGqwB,GAClEo5L,EAAczpN,EAAGqwB,EAAA,QAEX7mB,CAAA,CACDtvB,EAAI,GAAIyzE,EAAA,OAAAslU,mBAG0B,SAAC/4Y,EAAWyzE,GAAA,GAEjC,mBAATzzE,EAAA,OACH,SAACyzE,GAAA,QAAAt3E,EAAA8vB,UAAA7qB,OAAe3B,EAAA8X,MAAApb,EAAA,EAAAA,EAAA,KAAAozO,EAAA,EAAAA,EAAApzO,EAAAozO,IAAA9vO,EAAA8vO,EAAA,GAAAtjN,UAAAsjN,GAAA,OACtBt2O,EAAK8/Y,mBAAmBtlU,GAAO,SAACA,GAAA,OAAezzE,EAAA0f,WAAA,GAAK+zD,GAAAhwE,OAAUhE,GAAA,SAG5DtD,EAAkBsD,EAChB8vO,EAASt2O,EAAKk6b,QAAQnzb,EAAMyzE,GAAQ,SAACzzE,EAAYyzE,GACtDt3E,EAAU6D,EACVP,EAAiBg0E,CAAA,UAGK,oBAAZ/rD,SAA2B6nN,aAAkB7nN,QAChD6nN,EAAOv7O,MAAK,SAAAgM,GAAA,MAAa,CAACA,EAAW7D,EAAUsD,EAAA,IAEhD,CAAC8vO,EAAQpzO,EAAUsD,EAAA,EAzGQ,kBAAvB,MAAAg0E,OAAA,EAAAA,EAAQ2/W,aAClB7za,KAAK8za,cAAc5/W,EAAQ2/W,YACM,kBAAvB,MAAA3/W,OAAA,EAAAA,EAAQ6/W,aAClB/za,KAAKg0a,cAAc9/W,EAAQ6/W,WAAA,KAAA7zb,EAAAxG,EAAAwmB,UAAA,OAAAhgB,EAyG7B+zb,YAAA,SAAiCv6b,GAC3BkD,EAAYlD,IAAO+G,EAAI,GACxByzE,EAAQx6E,KAAOA,EAAOg6Z,EAAQh6Z,IAAA,IAC5BwG,EAAQqlD,EAAWvlC,MACnBgwN,EAAQxhG,EAAYxuH,KAAMtmB,OAAA,GAAM,OACtCs2O,EAAM3yF,GAAa6yQ,GAAA,EACnBiD,EAAWjzZ,GACJ8vO,CAAA,EAAA9vO,EAGRg0b,YAAA,SACChgX,EACAt3E,GAAA,IAOesD,GALWg0E,GAAUA,EAAcmpE,IAK3CtK,EAAA,OACP5+D,EAAkBj0E,EAAOtD,GAClB4/V,OAAA,EAAyBt8V,EAAA,EAAAA,EAQjC8zb,cAAA,SAAcvzb,GAAA,KACRoyN,EAAcpyN,CAAA,EAAAP,EASpB4zb,cAAA,SAAc5/W,GACTA,IAAUq8U,GACb9vZ,EAAI,SAEA0yZ,EAAcj/U,CAAA,EAAAh0E,EAGpB2qY,aAAA,SAAkCpqY,EAAS7D,GAAA,IAGtClD,EAAA,IACCA,EAAIkD,EAAQiF,OAAS,EAAGnI,GAAK,EAAGA,IAAK,KACnCwG,EAAQtD,EAAQlD,GAAA,GACI,IAAtBwG,EAAMu9C,KAAK57C,QAA6B,YAAb3B,EAAMu/E,GAAkB,CACtDh/E,EAAOP,EAAMuF,MAAA,OAMX/L,GAAK,IACRkD,EAAUA,EAAQgS,MAAMlV,EAAI,QAGvBs2O,EAAmB5pN,EAAU,WAAW04E,EAAA,OAC1C5qB,EAAQzzE,GAEJuvO,EAAiBvvO,EAAM7D,GAGxBojB,KAAK4za,QAAQnzb,GAAM,SAACA,GAAA,OAC1BuvO,EAAiBvvO,EAAO7D,EAAA,KAAAlD,CAAA,CAxL3B,GIZMy6b,GAAQ,IAAIR,GAqBL3+Y,GAAoBm/Y,GAAMP,QAO1BQ,GAA0CD,GAAM36C,mBAAmB3qX,KAC/Esla,IAuBYE,IAfgBF,GAAMH,cAAcnla,KAAKsla,IAQzBA,GAAML,cAAcjla,KAAKsla,IAO1BA,GAAMtpD,aAAah8W,KAAKsla,KAMzBA,GAAMF,YAAYpla,KAAKsla,IAUvBA,GAAMD,YAAYrla,KAAKsla,IAAA,cEzF9CG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBthc,IAAjBuhc,EACH,OAAOA,EAAaj9b,QAGrB,IAAIwyZ,EAASsqC,EAAyBE,GAAY,CAGjDh9b,QAAS,CAAC,GAOX,OAHAk9b,EAAoBF,GAAU/ta,KAAKujY,EAAOxyZ,QAASwyZ,EAAQA,EAAOxyZ,QAAS+8b,GAGpEvqC,EAAOxyZ,OACf,CAGA+8b,EAAoB/4Y,EAAIk5Y,ECxBxBH,EAAoB9zb,EAAKupZ,IACxB,IAAI5tY,EAAS4tY,GAAUA,EAAO2qC,WAC7B,IAAO3qC,EAAiB,QACxB,IAAM,EAEP,OADAuqC,EAAoBpua,EAAE/J,EAAQ,CAAErf,EAAGqf,IAC5BA,CAAM,QCNd,IACIw4a,EADAC,EAAWlyb,OAAOwyC,eAAkBwB,GAASh0C,OAAOwyC,eAAewB,GAASA,GAASA,EAAa,UAQtG49Y,EAAoB33b,EAAI,SAAS6I,EAAOlD,GAEvC,GADU,EAAPA,IAAUkD,EAAQua,KAAKva,IAChB,EAAPlD,EAAU,OAAOkD,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPlD,GAAakD,EAAMkvb,WAAY,OAAOlvb,EAC1C,GAAW,GAAPlD,GAAoC,oBAAfkD,EAAMhR,KAAqB,OAAOgR,CAC5D,CACA,IAAIqvb,EAAKnyb,OAAOkkB,OAAO,MACvB0ta,EAAoBrgX,EAAE4gX,GACtB,IAAIpyV,EAAM,CAAC,EACXkyV,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAIxgc,EAAiB,EAAPkO,GAAYkD,EAAyB,iBAAXpR,KAAyBugc,EAAe35Z,QAAQ5mC,GAAUA,EAAUwgc,EAASxgc,GACxHsO,OAAOm0C,oBAAoBziD,GAASsa,SAAS2c,GAASo3E,EAAIp3E,GAAO,IAAO7lB,EAAM6lB,KAI/E,OAFAo3E,EAAa,QAAI,IAAM,EACvB6xV,EAAoBpua,EAAE2ua,EAAIpyV,GACnBoyV,CACR,MCxBAP,EAAoBpua,EAAI,CAAC3uB,EAAS64E,KACjC,IAAI,IAAI/kD,KAAO+kD,EACXkkX,EAAoBvkN,EAAE3/J,EAAY/kD,KAASipa,EAAoBvkN,EAAEx4O,EAAS8zB,IAC5E3oB,OAAO6nB,eAAehzB,EAAS8zB,EAAK,CAAEZ,YAAY,EAAMD,IAAK4lD,EAAW/kD,IAE1E,ECNDipa,EAAoBxka,EAAI,CAAC,EAGzBwka,EAAoB76b,EAAKq7b,GACjB5sa,QAAQoF,IAAI5qB,OAAOC,KAAK2xb,EAAoBxka,GAAGtzB,QAAO,CAACk5D,EAAUrqC,KACvEipa,EAAoBxka,EAAEzE,GAAKypa,EAASp/X,GAC7BA,IACL,KCNJ4+X,EAAoBthO,EAAK8hO,GAEjB,aAAeA,EAAf,qBCFRR,EAAoBS,SAAYD,IAEf,ECHjBR,EAAoBloW,EAAI,WACvB,GAA0B,kBAAfl1C,WAAyB,OAAOA,WAC3C,IACC,OAAOn3B,MAAQ,IAAI6vH,SAAS,cAAb,EAChB,CAAE,MAAOn2I,GACR,GAAsB,kBAAXX,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBw7b,EAAoBvkN,EAAI,CAACr5L,EAAKvqB,IAAUzpB,OAAOud,UAAUsG,eAAeC,KAAKkwB,EAAKvqB,SCAlF,IAAI6oa,EAAa,CAAC,EACdC,EAAoB,gBAExBX,EAAoB39Y,EAAI,CAAC+I,EAAKhF,EAAMrvB,EAAKypa,KACxC,GAAGE,EAAWt1Y,GAAQs1Y,EAAWt1Y,GAAK3+B,KAAK25B,OAA3C,CACA,IAAIi9G,EAAQu9R,EACZ,QAAWjic,IAARo4B,EAEF,IADA,IAAI8pa,EAAU5mb,SAASwoV,qBAAqB,UACpC92V,EAAI,EAAGA,EAAIk1b,EAAQvzb,OAAQ3B,IAAK,CACvC,IAAIusB,EAAI2oa,EAAQl1b,GAChB,GAAGusB,EAAE+3E,aAAa,QAAU7kD,GAAOlzB,EAAE+3E,aAAa,iBAAmB0wV,EAAoB5pa,EAAK,CAAEssI,EAASnrI,EAAG,KAAO,CACpH,CAEGmrI,IACHu9R,GAAa,GACbv9R,EAASppJ,SAASrV,cAAc,WAEzBk8b,QAAU,QACjBz9R,EAAOz0G,QAAU,IACboxY,EAAoBl5B,IACvBzjQ,EAAO1vG,aAAa,QAASqsY,EAAoBl5B,IAElDzjQ,EAAO1vG,aAAa,eAAgBgtY,EAAoB5pa,GAExDssI,EAAOprJ,IAAMmzC,GAEds1Y,EAAWt1Y,GAAO,CAAChF,GACnB,IAAI26Y,EAAmB,CAACxna,EAAM55B,KAE7B0jK,EAAOlsG,QAAUksG,EAAOzoJ,OAAS,KACjCsf,aAAa00B,GACb,IAAIoyY,EAAUN,EAAWt1Y,GAIzB,UAHOs1Y,EAAWt1Y,GAClBi4G,EAAO/4D,YAAc+4D,EAAO/4D,WAAW74E,YAAY4xI,GACnD29R,GAAWA,EAAQ5mb,SAASqmC,GAAQA,EAAG9gD,KACpC45B,EAAM,OAAOA,EAAK55B,EAAM,EAExBivD,EAAUnzB,WAAWsla,EAAiBzma,KAAK,UAAM37B,EAAW,CAAEsG,KAAM,UAAW4gB,OAAQw9I,IAAW,MACtGA,EAAOlsG,QAAU4pY,EAAiBzma,KAAK,KAAM+oI,EAAOlsG,SACpDksG,EAAOzoJ,OAASmmb,EAAiBzma,KAAK,KAAM+oI,EAAOzoJ,QACnDgmb,GAAc3mb,SAASu6C,KAAKjjC,YAAY8xI,EApCkB,CAoCX,MCvChD28R,EAAoBrgX,EAAK18E,IACH,qBAAX2+C,QAA0BA,OAAOC,aAC1CzzC,OAAO6nB,eAAehzB,EAAS2+C,OAAOC,YAAa,CAAE3wC,MAAO,WAE7D9C,OAAO6nB,eAAehzB,EAAS,aAAc,CAAEiO,OAAO,GAAO,ECL9D8ub,EAAoBhua,EAAI,UCKxB,IAAIiva,EAAkB,CACrB,IAAK,GAGNjB,EAAoBxka,EAAEokD,EAAI,CAAC4gX,EAASp/X,KAElC,IAAI8/X,EAAqBlB,EAAoBvkN,EAAEwlN,EAAiBT,GAAWS,EAAgBT,QAAW7hc,EACtG,GAA0B,IAAvBuic,EAGF,GAAGA,EACF9/X,EAAS30C,KAAKy0a,EAAmB,QAC3B,CAGL,IAAIjlY,EAAU,IAAIroC,SAAQ,CAACC,EAAS8hC,IAAYurY,EAAqBD,EAAgBT,GAAW,CAAC3sa,EAAS8hC,KAC1GyL,EAAS30C,KAAKy0a,EAAmB,GAAKjlY,GAGtC,IAAI7Q,EAAM40Y,EAAoBhua,EAAIgua,EAAoBthO,EAAE8hO,GAEpDngc,EAAQ,IAAIy3B,MAgBhBkoa,EAAoB39Y,EAAE+I,GAfFzrD,IACnB,GAAGqgc,EAAoBvkN,EAAEwlN,EAAiBT,KAEf,KAD1BU,EAAqBD,EAAgBT,MACRS,EAAgBT,QAAW7hc,GACrDuic,GAAoB,CACtB,IAAIC,EAAYxhc,IAAyB,SAAfA,EAAMsF,KAAkB,UAAYtF,EAAMsF,MAChEm8b,EAAUzhc,GAASA,EAAMkmB,QAAUlmB,EAAMkmB,OAAO5N,IACpD5X,EAAM+5C,QAAU,iBAAmBomZ,EAAU,cAAgBW,EAAY,KAAOC,EAAU,IAC1F/gc,EAAMkB,KAAO,iBACblB,EAAM4E,KAAOk8b,EACb9gc,EAAM+nD,QAAUg5Y,EAChBF,EAAmB,GAAG7gc,EACvB,CACD,GAEwC,SAAWmgc,EAASA,EAE/D,CACD,EAcF,IAAIa,EAAuB,CAACC,EAA4Bt9b,KACvD,IAKIi8b,EAAUO,EALVe,EAAWv9b,EAAK,GAChBw9b,EAAcx9b,EAAK,GACnBy9b,EAAUz9b,EAAK,GAGI2H,EAAI,EAC3B,GAAG41b,EAASl3Y,MAAMxrD,GAAgC,IAAxBoic,EAAgBpic,KAAa,CACtD,IAAIohc,KAAYuB,EACZxB,EAAoBvkN,EAAE+lN,EAAavB,KACrCD,EAAoB/4Y,EAAEg5Y,GAAYuB,EAAYvB,IAGhD,GAAGwB,EAAsBA,EAAQzB,EAClC,CAEA,IADGsB,GAA4BA,EAA2Bt9b,GACrD2H,EAAI41b,EAASj0b,OAAQ3B,IACzB60b,EAAUe,EAAS51b,GAChBq0b,EAAoBvkN,EAAEwlN,EAAiBT,IAAYS,EAAgBT,IACrES,EAAgBT,GAAS,KAE1BS,EAAgBT,GAAW,CAC5B,EAIGkB,EAAqB7+Y,KAA+B,yBAAIA,KAA+B,0BAAK,GAChG6+Y,EAAmBtnb,QAAQinb,EAAqB/ma,KAAK,KAAM,IAC3Dona,EAAmBj1a,KAAO40a,EAAqB/ma,KAAK,KAAMona,EAAmBj1a,KAAK6N,KAAKona,kFC6HvC,IAAIp1P,IAAI,CACtD,oCACA,sBACA,eC4IiE,IAAI3R,IAkCvE,MACMgnQ,EAAsB3ic,EAAsB,gBAqQ5C,SAAU4ic,EAAaliP,GAKR,IALS,SAC5BswM,EAAQ,SACR9wZ,EAAQ,OACR2ic,EAAM,OACNr9b,GACmBk7M,EACfoiP,EAAa9ic,EAAAA,SACS,MAAtB8ic,EAAWhic,UACbgic,EAAWhic,SAAUouZ,EAAAA,EAAAA,IAAqB,CAAE1pZ,SAAQyqZ,UAAU,KAGhE,IAAIp3L,EAAUiqO,EAAWhic,SACpBtB,EAAOujc,GAAgB/ic,EAAAA,SAAe,CACzC8e,OAAQ+5M,EAAQ/5M,OAChB9N,SAAU6nN,EAAQ7nN,YAEhB,mBAAEgyb,GAAuBH,GAAU,CAAC,EACpC7na,EAAWh7B,EAAAA,aACZkP,IACC8zb,GAAsBL,EAClBA,GAAoB,IAAMI,EAAa7zb,KACvC6zb,EAAa7zb,EAAS,GAE5B,CAAC6zb,EAAcC,IAKjB,OAFAhjc,EAAAA,iBAAsB,IAAM64N,EAAQy3L,OAAOt1X,IAAW,CAAC69L,EAAS79L,IAG9Dh7B,EAAAA,cAACq4b,EAAAA,GAAM,CACLrnC,SAAUA,EACV9wZ,SAAUA,EACV8Q,SAAUxR,EAAMwR,SAChB0lb,eAAgBl3b,EAAMsf,OACtBi8B,UAAW89K,GAGjB,CAoHoB,qBAAXrzN,QACoB,qBAApBA,OAAOyV,UACPzV,OAAOyV,SAASrV,cAkZzB,IAAKuvb,EAQAG,GARL,SAAKH,GACHA,EAAA,4CACAA,EAAA,sBACAA,EAAA,oCACAA,EAAA,wBACAA,EAAA,+CACD,EAND,CAAKA,IAAAA,EAMJ,KAED,SAAKG,GACHA,EAAA,wBACAA,EAAA,0BACAA,EAAA,2CACD,CAJD,CAAKA,IAAAA,EAIJ,4BC5rCD,MAoBA,EApBkBn2b,IAEA,IAFC,QACf21B,GACQ31B,EACR,MAAMG,GAAOC,EAAAA,EAAAA,iBAAgBC,GAAUA,EAAMF,OAEvC2jc,EAAkB3jc,QAAuBK,IAAdL,EAAKM,MAAwBN,EAAKM,KAAKiI,UAAcvI,EAAKM,KAAKiI,SAASyG,OAAS,EAGlH,OACI5M,EAAAA,EAAAA,MAAAwqE,EAAAA,SAAA,CAAAhsE,SAAA,CACK+ic,GACGnua,GAEFmua,IACEhjc,EAAAA,EAAAA,KAAC0qE,EAAAA,GAAQ,CAACC,GAAG,aAElB,wGCXX,MAuDA,EAvDejgE,IAEX,MAAM8/D,GAAWC,EAAAA,EAAAA,kBACXprE,GAAOC,EAAAA,EAAAA,iBAAgBC,GAAUA,EAAMF,QAEtC4jc,EAAeC,GAAoBnjc,EAAAA,SAAwBV,QAAuBK,IAAdL,EAAKM,MAAuBN,EAAKM,KAAKiI,UAAavI,EAAKM,KAAKiI,SAASyG,OAAS,IACnJ80b,EAAaC,GAAkBrjc,EAAAA,UAAwB,GAkB9D,OACI0B,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EACOgjc,IACCjjc,EAAAA,EAAAA,KAAC0qE,EAAAA,GAAQ,CAACC,GAAG,WAEfs4X,IACExhc,EAAAA,EAAAA,MAACud,EAAAA,EAAc,CACXjZ,KAAK,QACLQ,WAAW,UACXoK,SAAS,QACTmzB,QAAQ,OACRv5B,KAAMlL,EAAKM,KAAKilB,UAAUqwC,OAAO,GAAK51D,EAAKM,KAAKklB,SAASowC,OAAO,GAChE/1C,YA5BKhZ,IACG,YAAhBA,EAAE8J,KAAKzF,KACP64b,GAAe,GAGM,WAAhBl9b,EAAE8J,KAAKzF,OACZigE,GACII,EAAAA,EAAAA,IAAO,CACHjrE,KAAM,CAAC,KAEfujc,GAAiB,GAEjB14X,EAASK,EAAAA,aAAaC,KAAKC,iBAC/B,EAeqC9qE,SAAA,EAEzBD,EAAAA,EAAAA,KAACgrP,EAAAA,EAAkB,CAACzgP,KAAK,UAAU3I,KAAK,UACxC5B,EAAAA,EAAAA,KAACgrP,EAAAA,EAAkB,CAACzgP,KAAK,SAAS3I,KAAK,cAG7Cuhc,IACEnjc,EAAAA,EAAAA,KAAC2G,EAAAA,EAAM,CACH6F,MAAOnN,EAAKM,KAAKilB,UAAY,IAAMvlB,EAAKM,KAAKklB,SAC7CvO,QAAUpQ,GAAMk9b,GAAe,GAAOnjc,UAEtCwB,EAAAA,EAAAA,MAAA,KAAGvB,MAAO,CAAE4H,OAAQ,OAAQyO,UAAW,UAAWtW,SAAA,CAC7CZ,EAAKM,KAAK4E,MAAKvE,EAAAA,EAAAA,KAAA,gBAI1B,ECVd,QA5CA,WACI,OACIA,EAAAA,EAAAA,KAACD,EAAAA,SAAc,CAAAE,UACXwB,EAAAA,EAAAA,MAAC49W,EAAAA,EAAM,CAACn/W,MAAO,CAAEgQ,QAAS,OAAQjQ,SAAA,EAC9BD,EAAAA,EAAAA,KAACu/W,EAAAA,EAAa,CAAAt/W,UACVD,EAAAA,EAAAA,KAAA,OAAKgZ,IAAI,aAAaC,IAAI,MAAM/Y,MAAO,CAAE2H,OAAQ,aAGrD7H,EAAAA,EAAAA,KAACy/W,EAAAA,EAAY,CAACv/W,MAAO,CAAE2G,MAAO,MAE9B7G,EAAAA,EAAAA,KAACu/W,EAAAA,EAAa,CAAAt/W,UACVD,EAAAA,EAAAA,KAAA,QAAME,MAAO,CAAE4K,MAAO,WAAY7K,SAAC,uDAKvCD,EAAAA,EAAAA,KAACy/W,EAAAA,EAAY,KAEbz/W,EAAAA,EAAAA,KAACu/W,EAAAA,EAAa,CAACl/W,UAAU,UAASJ,UAC9BD,EAAAA,EAAAA,KAAA,UAAQK,UAAU,qEAAoEJ,UAClFwB,EAAAA,EAAAA,MAAC6d,EAAAA,EAAc,CAAArf,SAAA,EACXD,EAAAA,EAAAA,KAAA,QAAMK,UAAU,iCAChBL,EAAAA,EAAAA,KAACuf,EAAAA,EAAK,CACFC,MAAM,MACNjZ,WAAW,OACXR,KAAK,QACLI,SAAS,mBAMzBnG,EAAAA,EAAAA,KAACu/W,EAAAA,EAAa,CAAAt/W,UACVD,EAAAA,EAAAA,KAAA,QAAMK,UAAU,0BAGpBL,EAAAA,EAAAA,KAACu/W,EAAAA,EAAa,CAAAt/W,UACVD,EAAAA,EAAAA,KAACqjc,EAAY,UAKjC,yJC1BA,MAAMC,EAAkB54b,IACpB,MAAM64b,EAAsC,gBAAhB74b,EAAMvB,OAA4D,MAA/BuB,EAAMG,SAASnD,aACxD,WAAhBgD,EAAMvB,OAAkD,MAA1BuB,EAAMG,SAASlD,OAKnD,OACI3H,EAAAA,EAAAA,KAAA,MAAIE,MAJM,CACV4K,MAAO,SAGW,sBAAqB,EAAE7K,SACpCsjc,GAAYvjc,EAAAA,EAAAA,KAAA,QAAMK,UAAU,iCAAoC,MAChE,EAGPmjc,EAAkB94b,IACpB,MAAM64b,EAAuC,gBAAhB74b,EAAMvB,OAA4D,MAA/BuB,EAAMG,SAASnD,aACzD,WAAhBgD,EAAMvB,OAAkD,MAA1BuB,EAAMG,SAASlD,OAKnD,OACI3H,EAAAA,EAAAA,KAAA,MAAIE,MAJM,CACV4K,MAAO,SAGW,sBAAqB,EAAE7K,SACpCsjc,GAAYvjc,EAAAA,EAAAA,KAAA,QAAMK,UAAU,iCAAoC,MAChE,EAKPoyE,EAA0B,CAC5BnjE,OAAQ,CACJgZ,MAAO,MACPC,QAAS,IAGb+B,KAAM,CAAC,CAAEnhB,MAAO,OAAQgf,IAAK,SAI3BO,EAAiB,WACjBC,GAAWC,EAAAA,EAAAA,GAFK,OAmHtB,EA/GsBle,IAClB,MAAMrL,GAAOC,EAAAA,EAAAA,iBAAgBC,GAAeA,EAAMF,OAE5CkF,EAAOxE,EAAAA,SAAuBV,QAAuBK,IAAdL,EAAKM,WAA2CD,IAAnBL,EAAKM,KAAK4E,MAAuBlF,EAAKM,KAAK4E,KAAO,IACrHuY,EAASC,GAAchd,EAAAA,SAAwBwE,EAAKC,SAAS,WAE9D,KAAEO,EAAI,MAAE3D,EAAK,UAAE4D,IAAc86E,EAAAA,EAAAA,qBAAoB,SAEhDhyE,EAAYC,GAAiBhO,EAAAA,SAAuB,SAE3DA,EAAAA,WAAgB,KACZwF,OAAOG,iBAAiB,SAAUJ,EAAa,GAChD,IACHvF,EAAAA,WAAgB,KACZgO,EAAexI,OAAOC,YAAc,IAAO,KAAK,GACjD,CAACT,IAEJ,MAAMO,EAAeA,KACjByI,EAAexI,OAAOC,YAAc,IAAO,KAAK,GAE7Ci+b,EAAaC,GAAkB3jc,EAAAA,UAAwB,IAEvDmuE,EAAWC,GAAgBpuE,EAAAA,SAAsB0yE,IAEjDtkE,EAAaC,GAAkBrO,EAAAA,SAAuB,KAEtDkO,EAAeC,GAAoBnO,EAAAA,SAEvC,CAAC,GAaJ,OACIC,EAAAA,EAAAA,KAACD,EAAAA,SAAc,CAAAE,SACc,IAAvBkO,EAAYE,OACRyO,GAAW2mb,GACThic,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EACID,EAAAA,EAAAA,KAAA,OAAKK,UAAU,iBAAgBJ,SAAE,gBACjCD,EAAAA,EAAAA,KAAC2jc,EAAAA,QAAS,CACNvkc,SAAW0H,GAAqB48b,GAAe,SAIvDjic,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,CACM6c,IACE9c,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACH4E,WAAY,UACZ3E,KAAK,cACLC,QAASA,IAAM6hc,GAAe,GAC9Bxjc,MAAO,CAAEiG,SAAU,WAAYC,IAAK,OAAQC,MAAO,OAAQQ,MAAO,QAASP,OAAQ,MAAOrG,SACzF,eAGRmB,GAASpB,EAAAA,EAAAA,KAACyP,EAAAA,QAAe,IAAOzK,GAAYhF,EAAAA,EAAAA,KAAC8F,EAAAA,EAAM,CAACC,KAAK,QAAQC,KAAK,uBAA0BjB,GACjGtD,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EACID,EAAAA,EAAAA,KAAA,OAAKK,UAAU,iBAAgBJ,SAAC,cAChCwB,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACDpN,MAAO,CAAE2H,OAAQiG,GACjBzN,UAAU,4BACV0E,MAAMqpE,EAAAA,EAAAA,SAAQrpE,EAAK0H,KAAKuD,IAAS,IAC1BA,EACH,CAAC0Y,GAAiBza,EAAc0a,EAAS3Y,QACxCk+D,MACDA,EACJS,kBAAoBzoE,IAAkCioE,EAAajoE,EAAEgoE,UAAU,EAC/E3/D,UAAU,EACVC,YAAY,EACZC,WAAW,EACXC,aAAa,EACbE,cAAe8Z,EACf7Z,WAAY,CACRC,SAAS,EACTC,KAAM,UAEVC,kBArDG9I,IAC3B,MAAM+I,GAAWC,EAAAA,EAAAA,IAAiB,CAC9BxO,MAAOwF,EACP+H,cAAeA,EACfU,YAtCU,QAwCdT,EAAiBe,GAEjBb,EAAee,OAAOC,KAAKH,GAAU,GAAG,EA8CjBlJ,KAAM,QAAQ9F,SAAA,EAEbD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,EAAMc,OAAO,UAC/DtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,QAAQqD,MAAM,QAAQgC,YAAY,KACpDxO,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,cAAcqD,MAAM,aAAagC,YAAY,EAAOhB,KAAM81b,KAC5Etjc,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,aAAaqD,MAAM,cAAcgC,YAAY,KAC/DxO,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,aAAaqD,MAAM,cAAcgC,YAAY,KAC/DxO,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,gBAAgBqD,MAAM,kBAAkBgC,YAAY,KACtExO,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,gBAAgBqD,MAAM,kBAAkBgC,YAAY,KACtExO,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,SAASqD,MAAM,SAASgC,YAAY,EAAOhB,KAAMg2b,OACxD,OAEjB,SAIVxjc,EAAAA,EAAAA,KAAE4jc,EAAAA,EAAU,CACR1/b,SAAUiK,EACVhK,UAAU,EACVC,YAAY,qBACZhF,SAAUA,IAAMgP,EAAe,OAG1B,eCzJzB,MAAMy1b,EAAc,CAChB,CACI,GAAM,EACN,MAAS,YACT,YAAe,qEACf,OAAU,0BACV,SAAY,8BAEhB,CACI,GAAM,EACN,MAAS,wBACT,YAAe,kCACf,OAAU,yBACV,SAAY,2BAEhB,CACI,GAAM,EACN,MAAS,yBACT,YAAe,gEACf,OAAU,0BACV,SAAY,0BAEhB,CACI,GAAM,EACN,MAAS,oBACT,YAAe,6BACf,OAAU,0BACV,SAAY,sBAEhB,CACI,GAAM,EACN,MAAS,iBACT,YAAe,uBACf,OAAU,0BACV,SAAY,mBAEhB,CACI,GAAM,EACN,MAAS,gCACT,YAAe,sCACf,OAAU,0BACV,SAAY,gCAEhB,CACI,GAAM,EACN,MAAS,yBACT,YAAe,wBACf,OAAU,0BACV,SAAY,0BAEhB,CACI,GAAM,EACN,MAAS,mBACT,YAAe,kBACf,OAAU,0BACV,SAAY,qBAEhB,CACI,GAAM,EACN,MAAS,qBACT,YAAe,oBACf,OAAU,0BACV,SAAY,uBAEhB,CACI,GAAM,GACN,MAAS,kCACT,YAAe,8CACf,OAAU,0BACV,SAAY,iCAEhB,CACI,GAAM,GACN,MAAS,+BACT,YAAe,kDACf,OAAU,0BACV,SAAY,iCAEhB,CACI,GAAM,GACN,MAAS,oBACT,YAAe,oBACf,OAAU,0BACV,SAAY,sBAEhB,CACI,GAAM,GACN,MAAS,sBACT,YAAe,0EACf,OAAU,0BACV,SAAY,gCAEhB,CACI,GAAM,GACN,MAAS,yBACT,YAAe,yBACf,OAAU,0BACV,SAAY,0BAEhB,CACI,GAAM,GACN,MAAS,qBACT,YAAe,6BACf,OAAU,0BACV,SAAY,sBAEhB,CACI,GAAM,GACN,MAAS,mBACT,YAAe,wBACf,OAAU,0BACV,SAAY,0BAEhB,CACI,GAAM,GACN,MAAS,gCACT,YAAe,6CACf,OAAU,0BACV,SAAY,iCAEhB,CACI,GAAM,GACN,MAAS,mBACT,YAAe,kBACf,OAAU,0BACV,SAAY,qBAEjB,CACK,GAAM,GACN,MAAS,qBACV,YAAe,oBACd,OAAU,0BACV,SAAY,uBAEhB,CACI,GAAM,GACN,MAAS,mBACT,YAAe,kBACf,OAAU,0BACV,SAAY,qBAElB,CACM,GAAM,GACN,MAAS,uBACT,YAAe,yDACf,OAAU,0BACV,SAAY,wBAEhB,CACI,GAAM,GACN,MAAS,oBACT,YAAe,oBACf,OAAU,0BACV,SAAY,uBAIdr5a,EAAqC,GAErCK,EAA2C,CAC7CvC,MAAO,MACPC,QAAS,CAAC,CAAEpf,MAAO,UAAW2hB,SAAU,WAAY7Y,MAAO,MAGzDwW,EAAgB,KAChBC,EAAiB,WACjBC,GAAWC,EAAAA,EAAAA,GAAOH,GAIlB8D,EAAO,IAAIqhD,EAAAA,EAAY,MAE7Bi2X,EAAY1ob,SAASioC,IACjBA,EAAE0gZ,OAASv3a,EAAK6xD,UACZh7B,EAAE0gZ,OAAS1gZ,EAAE0gZ,OAAS,GALV,0BAOf,IAGL,MAqEA,GArEsBp5b,IAClB,MAAOoD,EAAYC,GAAiBhO,EAAAA,SAAuB,SAE3DA,EAAAA,WAAgB,KACZwF,OAAOG,iBAAiB,SAAUJ,GAClCyI,EAAexI,OAAOC,YAAc,IAAO,KAAK,GACjD,IAEH,MAAMF,EAAeA,KACjByI,EAAexI,OAAOC,YAAc,IAAO,KAAK,GAG7C8kB,EAAMI,GAAW3qB,EAAAA,SAAeyqB,IAChClb,EAAQic,GAAaxrB,EAAAA,SAAe8qB,IACpC5c,EAAeC,GAAoBnO,EAAAA,SAEvC,CAAC,GAiBJ,OACI0B,EAAAA,EAAAA,MAAC1B,EAAAA,SAAc,CAAAE,SAAA,EACZD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,iBAAgBJ,SAAC,cAChCwB,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACApN,MAAO,CAAE2H,OAAQiG,GACjBzN,UAAU,iBACV0E,MAAMslB,EAAAA,EAAAA,UAAQ3E,EAAAA,EAAAA,UAASm+a,EAAav0b,GAASgb,GAAM7d,KAAKuD,IAAI,IACrDA,EACH,CAAC0Y,GAAiBza,EAAc0a,EAAS3Y,QAE7CzB,UAAU,EACV+b,KAAMA,EACNC,aAAerkB,GAA2BwkB,EAAQxkB,EAAEokB,MACpD9b,YAAY,EACZc,OAAQA,EACRmW,eAAiBvf,GAA6BqlB,EAAUrlB,EAAEoJ,QAC1Db,WAAW,EACXC,aAAa,EACbC,YAAa8Z,EACb7Z,cAAe8Z,EACf7Z,WAAY,CACRC,SAAS,EACT2lP,MAAM,EACNjnP,MAAM,EACNuB,KAAM,UAEVC,kBAzCmBtO,IAC3B,MAAMqjc,GAAmB70b,EAAAA,EAAAA,IAAiB,CACtCxO,QACAuN,cAAeA,EACfU,YAAa8Z,IAEjBva,EAAiB61b,GAEjB,IAAKjsa,EAAK7lB,GAAS9C,OAAO82B,QAAQ89Z,GAAkB,GACpD,IAAc,IAAV9xb,EAAgB,CAChB,IAAIk6C,EAAM5mD,OAAOwL,SAAS4jD,SAAW,KAAOpvD,OAAOwL,SAASrH,KAAO,aAAem6b,GAAa/ra,EAAM,GAAGksa,SACxGz+b,OAAOwV,KAAKoxC,EAChB,GA8BQpmD,KAAM,QAAQ9F,SAAA,EAEdD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,QAAQqF,YAAY,EAAMc,OAAO,OAAOzI,MAAM,WAChE7G,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,cAAcqF,YAAY,EAAMc,OAAO,UACzDtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,SAASqF,YAAY,EAAOa,OAAO,iBAAiBxI,MAAM,eAEnE,EC9PnBo9b,GAAa,CACf,CACI,GAAM,EACN,MAAS,4BACT,SAAY,wEAGdC,GAAc,CAChB,CACI,GAAM,EACN,MAAS,4BACT,SAAY,uEAEhB,CACI,GAAM,EACN,MAAS,2BACT,SAAY,4EAEhB,CACI,GAAM,EACN,MAAS,wBACT,SAAY,yEAEhB,CACI,GAAM,EACN,MAAS,4BACT,SAAY,4EAEhB,CACI,GAAM,EACN,MAAS,2BACT,SAAY,4EAIdz7a,GAAgB,KAChBC,GAAiB,WACjBC,IAAWC,EAAAA,EAAAA,GAAOH,IAmExB,GAjEuB/d,IACnB,MAAMrL,GAAOC,EAAAA,EAAAA,iBAAgBC,GAAUA,EAAMF,QACtC8kc,EAAQC,GAAarkc,EAAAA,SAAgBV,QAAuBK,IAAdL,EAAKM,MAAuBN,EAAKM,KAAK4E,MAASlF,EAAKM,KAAK4E,KAAKC,SAAS,SAAa0/b,GAAcD,KAEhJn2b,EAAYC,GAAiBhO,EAAAA,SAAuB,SAE3DA,EAAAA,WAAgB,KACZwF,OAAOG,iBAAiB,SAAUJ,GAClCyI,EAAexI,OAAOC,YAAc,IAAO,KAAK,GACjD,IAEH,MAAMF,EAAeA,KACjByI,EAAexI,OAAOC,YAAc,IAAO,KAAK,GAG7CyI,EAAeC,GAAoBnO,EAAAA,SAEvC,CAAC,GAiBJ,OACI0B,EAAAA,EAAAA,MAAC1B,EAAAA,SAAc,CAAAE,SAAA,EACXD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,iBAAgBJ,SAAC,gBAChCD,EAAAA,EAAAA,KAAA,KAAGE,MAAO,CAAE4K,MAAO,MAAOiF,UAAW,SAAUoP,SAAS,WAAYlf,SAAC,oCAGvED,EAAAA,EAAAA,KAACsN,EAAAA,EAAI,CACCpN,MAAO,CAAE2H,OAAQiG,GACjBzN,UAAU,iBACV0E,KAAMo/b,EAAO13b,KAAKuD,IAAQ,IACnBA,EACH,CAAC0Y,IAAiBza,EAAc0a,GAAS3Y,QAE7CvB,WAAW,EACXC,aAAa,EACbC,YAAa8Z,GACb7Z,cAAe8Z,GACf7Z,WAAY,CACRC,SAAS,EACT2lP,MAAM,EACNjnP,MAAM,EACNuB,KAAM,UAEVC,kBAtCmBtO,IAC3B,MAAMqjc,GAAmB70b,EAAAA,EAAAA,IAAiB,CACtCxO,QACAuN,cAAeA,EACfU,YAAa8Z,KAEjBva,EAAiB61b,GAEjB,IAAKjsa,EAAK7lB,GAAS9C,OAAO82B,QAAQ89Z,GAAkB,GACpD,IAAc,IAAV9xb,EAAgB,CAChB,IAAIk6C,EAAMg4Y,GAAQrsa,EAAM,GAAGksa,SAC3Bz+b,OAAOwV,KAAKoxC,EAChB,GA2BQpmD,KAAM,QAAQ9F,UAEdD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,QAAQqF,YAAY,EAAMc,OAAO,aAE1C,+CC/EzB,MAAM66D,GAAiBz/D,IACnB,MAAM/C,EAAS+C,EAAMG,SAASlD,OAK9B,OACI3H,EAAAA,EAAAA,KAAA,MAAIE,MAJM,CACV4K,MAAO,SAGW,sBAAqB,EAAE7K,SACzB,MAAX0H,GAAiB3H,EAAAA,EAAAA,KAAA,QAAMK,UAAU,iCAAoC,MACrE,EAIPgkc,GAA6B,CAC/B/0b,OAAQ,CACJgZ,MAAO,MACPC,QAAS,CACL,CAAEpf,MAAO,OAAQ2hB,SAAU,WAAY7Y,MAAO,kBAGtDqY,KAAM,CAAC,CAAEnhB,MAAO,OAAQgf,IAAK,SAE3Bm8a,GAA4B,CAC9Bh1b,OAAQ,CACJgZ,MAAO,MACPC,QAAS,CACL,CAAEpf,MAAO,OAAQ2hB,SAAU,WAAY7Y,MAAO,iBAGtDqY,KAAM,CAAC,CAAEnhB,MAAO,OAAQgf,IAAK,SAE3Bo8a,GAAgC,CAClCj1b,OAAQ,CACJgZ,MAAO,MACPC,QAAS,CACL,CAAEpf,MAAO,OAAQ2hB,SAAU,WAAY7Y,MAAO,YAGtDqY,KAAM,CAAC,CAAEnhB,MAAO,OAAQgf,IAAK,SAE3Bq8a,GAAgC,CAClCl1b,OAAQ,CACJgZ,MAAO,MACPC,QAAS,CACL,CAAEpf,MAAO,OAAQ2hB,SAAU,WAAY7Y,MAAO,YAGtDqY,KAAM,CAAC,CAAEnhB,MAAO,OAAQgf,IAAK,SAE3Bs8a,GAA+B,CACjCn1b,OAAQ,CACJgZ,MAAO,MACPC,QAAS,CACL,CAAEpf,MAAO,OAAQ2hB,SAAU,WAAY7Y,MAAO,WAGtDqY,KAAM,CAAC,CAAEnhB,MAAO,OAAQgf,IAAK,SAG3BM,GAAgB,MAChBC,GAAiB,WACjBC,IAAWC,EAAAA,EAAAA,GAAOH,IAElBi8a,GAAkB,CAAC,cAAe,SAAU,eAAgB,SAAU,SA6R5E,GA3RqBh6b,IACjB,MAAMrL,GAAOC,EAAAA,EAAAA,iBAAgBC,GAAeA,EAAMF,OAE5CkF,EAAOxE,EAAAA,SAAuBV,QAAuBK,IAAdL,EAAKM,WAA2CD,IAAnBL,EAAKM,KAAK4E,MAAuBlF,EAAKM,KAAK4E,KAAO,IACrHuY,EAASC,GAAchd,EAAAA,SAAwBwE,EAAKC,SAAS,WAE9D,KAAEO,EAAI,MAAE3D,EAAK,UAAE4D,IAAc66E,EAAAA,EAAAA,oBAAmB,SAE/C/xE,EAAYC,GAAiBhO,EAAAA,SAAuB,SAE3DA,EAAAA,WAAgB,KACZwF,OAAOG,iBAAiB,SAAUJ,EAAa,GAChD,IACHvF,EAAAA,WAAgB,KACZgO,EAAexI,OAAOC,YAAc,IAAO,KAAK,GACjD,CAACT,IAEJ,MAAMO,EAAeA,KACjByI,EAAexI,OAAOC,YAAc,IAAO,KAAK,GAG7Cm/b,EAAcC,GAAmB7kc,EAAAA,SAAsBskc,KACvDQ,EAAaC,GAAkB/kc,EAAAA,SAAsBukc,KACrDS,EAAiBC,GAAsBjlc,EAAAA,SAAsBwkc,KAC7DU,EAAiBC,GAAsBnlc,EAAAA,SAAsBykc,KAC7DW,EAAgBC,GAAqBrlc,EAAAA,SAAsB0kc,KAE3Dh5b,EAAaC,GAAkB3L,EAAAA,SAAuB,IAMtDoO,EAAaC,GAAkBrO,EAAAA,SAAuB,KAEtDslc,EAAaC,GAAkBvlc,EAAAA,UAAwB,IAEvDwlc,EAAiBC,GAAsBzlc,EAAAA,SAAsD,CAAC,IAC9F0lc,EAAqBC,GAA0B3lc,EAAAA,SAAsD,CAAC,IACtG4lc,EAAkBC,GAAuB7lc,EAAAA,SAAsD,CAAC,IAChG8lc,EAAqBC,GAA0B/lc,EAAAA,SAAsD,CAAC,IACtGgmc,EAAoBC,GAAyBjmc,EAAAA,SAAsD,CAAC,GAqD3G,OACIC,EAAAA,EAAAA,KAACD,EAAAA,SAAc,CAAAE,SACc,IAAvBkO,EAAYE,OACRyO,GAAWuob,GACT5jc,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EACID,EAAAA,EAAAA,KAAA,OAAKK,UAAU,iBAAgBJ,SAAE,OAASykc,GAAMj5b,MAChDzL,EAAAA,EAAAA,KAACksE,GAAAA,EAAS,CACN3nE,KAAMmgc,GAAMj5b,GACZrM,SAAW0H,GAAqBw+b,GAAe,SAIvD7jc,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,CACM6c,GAAY4nb,GAAMj5b,GAAa4C,OAAS,GAA8B,WAAvBq2b,GAAMj5b,KACnDzL,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACH4E,WAAY,UACZ3E,KAAK,cACLC,QAASA,IAAMyjc,GAAe,GAC9Bplc,MAAO,CAAEiG,SAAU,WAAYC,IAAK,OAAQC,MAAO,OAAQQ,MAAO,QAASP,OAAQ,MAAOrG,SACzF,OAASykc,GAAMj5b,KAGvBrK,GAASpB,EAAAA,EAAAA,KAACyP,EAAAA,QAAe,IAAOzK,GAAYhF,EAAAA,EAAAA,KAAC8F,EAAAA,EAAM,CAACC,KAAK,QAAQC,KAAK,uBAA0BjB,GACjGtD,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EACID,EAAAA,EAAAA,KAAA,OAAKK,UAAU,iBAAgBJ,SAAC,YAChCwB,EAAAA,EAAAA,MAACuK,GAAAA,EAAQ,CAACC,SAAUR,EAAaS,SA1FhChG,IACrBwF,EAAexF,EAAE+F,SAAS,EAyFsD/L,MAAO,CAAE2J,WAAY,OAAQ5J,SAAA,EACrFD,EAAAA,EAAAA,KAACuM,GAAAA,EAAW,CAACC,MAAM,eAAcvM,UAC7BwB,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACDpN,MAAO,CAAE2H,OAAQiG,GACjBzN,UAAU,4BACV0E,MAAMqpE,EAAAA,EAAAA,SAAQrpE,EAAK0H,KAAKuD,IAAS,IAC1BA,EACH,CAAC0Y,IAAiB68a,EAAgB58a,GAAS3Y,QAC1C60b,MACDA,EACJl2X,kBAAoBzoE,IAAkC4+b,EAAe5+b,EAAEgoE,UAAU,EACjF3/D,UAAU,EACVC,YAAY,EACZC,WAAW,EACXC,aAAa,EACbE,cAAe8Z,GACf7Z,WAAY,CACRC,SAAS,EACTC,KAAM,UAEVC,kBAhGH9I,IAC7B,MAAM+I,GAAWC,EAAAA,EAAAA,IAAiB,CAC9BxO,MAAOwF,EACP+H,cAAes3b,EACf52b,YAAa8Z,KAEjB+8a,EAAmBv2b,GAEnBb,EAAee,OAAOC,KAAKH,GAAU,GAAG,EAyFRlJ,KAAM,QAAQ9F,SAAA,EAEdD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,EAAMc,OAAO,UAC/DtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,WAAWqD,MAAM,WAAWgC,YAAY,EAAOc,OAAO,UACxEtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,QAAQqD,MAAM,QAAQgC,YAAY,EAAOc,OAAO,UAClEtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,SAASqD,MAAM,SAASgC,YAAY,EAAMc,OAAO,UACnEtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,KAClDxO,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,SAASqD,MAAM,SAASgC,YAAY,EAAOhB,KAAM28D,WAG3EnqE,EAAAA,EAAAA,KAACuM,GAAAA,EAAW,CAACC,MAAM,UAASvM,UACxBwB,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACDpN,MAAO,CAAE2H,OAAQiG,GACjBzN,UAAU,aACV0E,MAAMqpE,EAAAA,EAAAA,SAAQrpE,EAAK0H,KAAKuD,IAAS,IAC1BA,EACH,CAAC0Y,IAAiB+8a,EAAoB98a,GAAS3Y,QAC9C+0b,MACDA,EACJp2X,kBAAoBzoE,IAAkC8+b,EAAmB9+b,EAAEgoE,UAAU,EACrF3/D,UAAU,EACVC,YAAY,EACZC,WAAW,EACXC,aAAa,EACbE,cAAe8Z,GACf7Z,WAAY,CACRC,SAAS,EACTC,KAAM,UAEVC,kBApHC9I,IACjC,MAAM+I,GAAWC,EAAAA,EAAAA,IAAiB,CAC9BxO,MAAOwF,EACP+H,cAAew3b,EACf92b,YAAa8Z,KAEjBi9a,EAAuBz2b,GAEvBb,EAAee,OAAOC,KAAKH,GAAU,GAAG,EA6GRlJ,KAAM,QAAQ9F,SAAA,EAEdD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,EAAMc,OAAO,UAC/DtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,QAAQqD,MAAM,QAAQgC,YAAY,EAAMc,OAAO,UACjEtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,SAASqD,MAAM,SAASgC,YAAY,EAAMc,OAAO,UACnEtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,KAClDxO,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,SAASqD,MAAM,SAASgC,YAAY,EAAOhB,KAAM28D,WAG3EnqE,EAAAA,EAAAA,KAACuM,GAAAA,EAAW,CAACC,MAAM,gBAAevM,UAC9BwB,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACDpN,MAAO,CAAE2H,OAAQiG,GACjBzN,UAAU,aACV0E,MAAMqpE,EAAAA,EAAAA,SAAQrpE,EAAK0H,KAAKuD,IAAS,IAC1BA,EACH,CAAC0Y,IAAiBi9a,EAAiBh9a,GAAS3Y,QAC3C20b,MACDA,EACJh2X,kBAAoBzoE,IAAkC0+b,EAAgB1+b,EAAEgoE,UAAU,EAClF3/D,UAAU,EACVC,YAAY,EACZC,WAAW,EACXC,aAAa,EACbE,cAAe8Z,GACf7Z,WAAY,CACRC,SAAS,EACTC,KAAM,UAEVC,kBAvIF9I,IAC9B,MAAM+I,GAAWC,EAAAA,EAAAA,IAAiB,CAC9BxO,MAAOwF,EACP+H,cAAe03b,EACfh3b,YAAa8Z,KAEjBm9a,EAAoB32b,GAEpBb,EAAee,OAAOC,KAAKH,GAAU,GAAG,EAgIRlJ,KAAM,QAAQ9F,SAAA,EAEdD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,EAAMc,OAAO,UAC/DtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,WAAWqD,MAAM,WAAWgC,YAAY,EAAMc,OAAO,UACvEtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,QAAQqD,MAAM,QAAQgC,YAAY,EAAMc,OAAO,UACjEtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,cAAcqD,MAAM,cAAcgC,YAAY,EAAMc,OAAO,UAC7EtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,KAClDxO,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,SAASqD,MAAM,SAASgC,YAAY,EAAOhB,KAAM28D,WAGvEnqE,EAAAA,EAAAA,KAACuM,GAAAA,EAAW,CAACC,MAAM,SAAQvM,UACvBwB,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACDpN,MAAO,CAAE2H,OAAQiG,GACjBzN,UAAU,4BACV0E,MAAMqpE,EAAAA,EAAAA,SAAQrpE,EAAK0H,KAAKuD,IAAS,IAC1BA,EACH,CAAC0Y,IAAiBm9a,EAAoBl9a,GAAS3Y,QAC9Ci1b,MACDA,EACJt2X,kBAAoBzoE,IAAkCg/b,EAAmBh/b,EAAEgoE,UAAU,EACrF3/D,UAAU,EACVC,YAAY,EACZC,WAAW,EACXC,aAAa,EACbE,cAAe8Z,GACf7Z,WAAY,CACRC,SAAS,EACTC,KAAM,UAEVC,kBA3JH9I,IACjC,MAAM+I,GAAWC,EAAAA,EAAAA,IAAiB,CAC9BxO,MAAOwF,EACP+H,cAAe43b,EACfl3b,YAAa8Z,KAEjBq9a,EAAuB72b,GAEvBb,EAAee,OAAOC,KAAKH,GAAU,GAAG,EAoJJlJ,KAAM,QAAQ9F,SAAA,EAEdD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,EAAMc,OAAO,UAC/DtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,WAAWqD,MAAM,WAAWgC,YAAY,EAAMc,OAAO,UACvEtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,QAAQqD,MAAM,QAAQgC,YAAY,EAAMc,OAAO,UACjEtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,cAAcqD,MAAM,IAAIgC,YAAY,KACtDxO,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,KAClDxO,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,SAASqD,MAAM,SAASgC,YAAY,EAAOhB,KAAM28D,WAG3EnqE,EAAAA,EAAAA,KAACuM,GAAAA,EAAW,CAACC,MAAM,QAAOvM,UACtBwB,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACDpN,MAAO,CAAE2H,OAAQiG,GACjBzN,UAAU,4BACV0E,MAAMqpE,EAAAA,EAAAA,SAAQrpE,EAAK0H,KAAKuD,IAAS,IAC1BA,EACH,CAAC0Y,IAAiBq9a,EAAmBp9a,GAAS3Y,QAC7Cm1b,MACDA,EACJx2X,kBAAoBzoE,IAAkCk/b,EAAkBl/b,EAAEgoE,UAAU,EACpF3/D,UAAU,EACVC,YAAY,EACZC,WAAW,EACXC,aAAa,EACbE,cAAe8Z,GACf7Z,WAAY,CACRC,SAAS,EACTC,KAAM,UAEVC,kBA/KJ9I,IAChC,MAAM+I,GAAWC,EAAAA,EAAAA,IAAiB,CAC9BxO,MAAOwF,EACP+H,cAAe83b,EACfp3b,YAAa8Z,KAEjBu9a,EAAsB/2b,GAEtBb,EAAee,OAAOC,KAAKH,GAAU,GAAG,EAwKJlJ,KAAM,QAAQ9F,SAAA,EAEdD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,EAAMc,OAAO,UAC/DtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,WAAWqD,MAAM,WAAWgC,YAAY,EAAMc,OAAO,UACvEtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,QAAQqD,MAAM,QAAQgC,YAAY,EAAMc,OAAO,UACjEtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,cAAcqD,MAAM,IAAIgC,YAAY,KACtDxO,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,KAClDxO,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,SAASqD,MAAM,SAASgC,YAAY,EAAOhB,KAAM28D,gBAI7E,SAElBnqE,EAAAA,EAAAA,KAACqqE,GAAAA,EAAU,CACPloD,SAAUhU,EACV5J,KAAMmgc,GAAMj5b,GACZtH,UAAU,EACVC,YAAY,mBACZhF,SAAUA,IAAMgP,EAAe,OAG1B,6DCzWzB,MAAMqkE,GAA0B,CAC5BnjE,OAAQ,CACJgZ,MAAO,MACPC,QAAS,IAGb+B,KAAM,CAAC,CAAEnhB,MAAO,OAAQgf,IAAK,SA6CjC,GA1CsBzd,IAElB,MAAM,KAAE3F,EAAI,MAAE3D,EAAK,UAAE4D,IAAcwK,EAAAA,EAAAA,qBAAoB,KAEhD1B,EAAYC,GAAiBhO,EAAAA,SAAuB,SAE3DA,EAAAA,WAAgB,KACZwF,OAAOG,iBAAiB,SAAUJ,EAAa,GAChD,IAEHvF,EAAAA,WAAgB,KACZgO,EAAexI,OAAOC,YAAc,IAAO,KAAK,GACjD,CAACT,IAEJ,MAAMO,EAAeA,KACjByI,EAAexI,OAAOC,YAAc,IAAO,KAAK,GAG7C0oE,EAAWC,GAAgBpuE,EAAAA,SAAsB0yE,IAExD,OACIhxE,EAAAA,EAAAA,MAAC1B,EAAAA,SAAc,CAAAE,SAAA,EACXD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,iBAAgBJ,SAAC,aAC/BmB,GAASpB,EAAAA,EAAAA,KAACyP,EAAAA,QAAe,IAAMzK,GAAYhF,EAAAA,EAAAA,KAAC8F,EAAAA,EAAM,CAACC,KAAK,QAAQC,KAAK,uBAA0BjB,GAC5FtD,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACDpN,MAAO,CAAE2H,OAAQiG,GACjBzN,UAAU,cACV0E,MAAMqpE,EAAAA,EAAAA,SAAQrpE,EAAMmpE,MAChBA,EACJS,kBAAoBzoE,IAAkCioE,EAAajoE,EAAEgoE,UAAU,EAC/E3/D,UAAU,EACVC,YAAY,EACZC,WAAW,EACXC,aAAa,EACb3I,KAAM,QAAQ9F,SAAA,EAEdD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,OAAOqD,MAAM,OAAOgC,YAAY,EAAMc,OAAO,UAC/DtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,cAAcqD,MAAM,cAAcgC,YAAY,OACzD,OACF,EC/CnBikE,GAA0B,CAC5BnjE,OAAQ,CACJgZ,MAAO,MACPC,QAAS,IAGb+B,KAAM,CAAC,CAAEnhB,MAAO,MAAOgf,IAAK,SA2ChC,GAxCsBzd,IAClB,MAAM,KAAE3F,EAAI,MAAE3D,EAAK,UAAE4D,IAAc+6E,EAAAA,EAAAA,qBAAoB,SAEhDjyE,EAAYC,GAAiBhO,EAAAA,SAAuB,SAE3DA,EAAAA,WAAgB,KACZwF,OAAOG,iBAAiB,SAAUJ,EAAa,GAChD,IACHvF,EAAAA,WAAgB,KACZgO,EAAexI,OAAOC,YAAc,IAAO,KAAK,GACjD,CAACT,IAEJ,MAAMO,EAAeA,KACjByI,EAAexI,OAAOC,YAAc,IAAO,KAAK,GAG7C0oE,EAAWC,GAAgBpuE,EAAAA,SAAsB0yE,IAExD,OACIhxE,EAAAA,EAAAA,MAAC1B,EAAAA,SAAc,CAAAE,SAAA,EACXD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,iBAAgBJ,SAAC,aAC/BmB,GAASpB,EAAAA,EAAAA,KAACyP,EAAAA,QAAe,IAAOzK,GAAYhF,EAAAA,EAAAA,KAAC8F,EAAAA,EAAM,CAACC,KAAK,QAAQC,KAAK,uBAA0BjB,GAC7FtD,EAAAA,EAAAA,MAAC6L,EAAAA,EAAI,CACDpN,MAAO,CAAE2H,OAAQiG,GACjBzN,UAAU,cACV0E,MAAMqpE,EAAAA,EAAAA,SAAQrpE,EAAMmpE,MAChBA,EACJS,kBAAoBzoE,IAAkCioE,EAAajoE,EAAEgoE,UAAU,EAC/E3/D,UAAU,EACVC,YAAY,EACZC,WAAW,EACXC,aAAa,EACb3I,KAAM,QAAQ9F,SAAA,EAEdD,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,MAAMqD,MAAM,KAAKgC,YAAY,EAAOc,OAAO,aAC7DtP,EAAAA,EAAAA,KAACuN,EAAAA,EAAU,CAACpE,MAAM,QAAQqD,MAAM,QAAQgC,YAAY,EAAMc,OAAO,YAC1D,OACF,iBC1CzB,MAAM22b,GAAY,CACd,CAAE17b,KAAM,QAASs1G,IAAK,YAAa9xC,MAAO,GAAIm4X,YAAa,QAE3D,CAAE37b,KAAM,eAAgB3I,KAAM,eAAgBmsE,MAAO,GAAIm4X,YAAa,QACtE,CAAEnzZ,WAAW,GACb,CAAExoC,KAAM,WAAYs1G,IAAK,YAAa9xC,MAAO,GAAIm4X,YAAa,QAC9D,CAAE37b,KAAM,aAAc3I,KAAM,WAAYmsE,MAAO,GAAIm4X,YAAa,SAG9DC,GAAa,CACf,CAAE57b,KAAM,QAASs1G,IAAK,YAAa9xC,MAAO,GAAIm4X,YAAa,QAE3D,CAAE37b,KAAM,eAAgB3I,KAAM,eAAgBmsE,MAAO,GAAIm4X,YAAa,QACtE,CAAEnzZ,WAAW,GACb,CAAExoC,KAAM,WAAYs1G,IAAK,YAAa9xC,MAAO,GAAIm4X,YAAa,QAC9D,CAAE37b,KAAM,aAAc3I,KAAM,WAAYmsE,MAAO,GAAIm4X,YAAa,QAChE,CAAEnzZ,WAAW,GACb,CAAExoC,KAAM,QAAS3I,KAAM,YAAamsE,MAAO,QAASm4X,YAAa,QACjE,CAAE37b,KAAM,WAAYs1G,IAAK,gBAAiB9xC,MAAO,QAASm4X,YAAa,SAEvE,CAAE37b,KAAM,SAAU3I,KAAM,cAAemsE,MAAO,QAASm4X,YAAa,SACpE,CAAE37b,KAAM,OAAQs1G,IAAK,gBAAiB9xC,MAAO,QAASm4X,YAAa,SACnE,CAAEnzZ,WAAW,GACb,CAAExoC,KAAM,WAAYs1G,IAAK,kBAAmB9xC,MAAO,QAASm4X,YAAa,SACzE,CAAE37b,KAAM,WAAYs1G,IAAK,cAAe9xC,MAAO,QAASm4X,YAAa,SACrE,CAAEnzZ,WAAW,GACb,CAAExoC,KAAM,kBAAmBs1G,IAAK,gBAAiB9xC,MAAO,GAAIm4X,YAAa,SAGvE5nK,GAAc5zR,IAEZjJ,EAAAA,EAAAA,MAACw/W,EAAAA,EAAU,IAAKv2W,EAAKzK,SAAA,CAChByK,EAAM9I,MAAO5B,EAAAA,EAAAA,KAAA,QAAMK,UAAW,sBAAwBqK,EAAM9I,KAAM2C,KAAK,kBAAoBvE,EAAAA,EAAAA,KAAA,OAAKgZ,IAAKtO,EAAMm1G,IAAK5mG,IAAI,kBACrHjZ,EAAAA,EAAAA,KAAA,QAAMK,UAAW,gBAAwC,UAAtBqK,EAAMw7b,YAA0B,gBAAkB,IAAIjmc,SAAEyK,EAAMH,UA6F7G,GAxF+BG,IAC3B,MAAMrL,GAAOC,EAAAA,EAAAA,iBAAgBC,GAAUA,EAAMF,QACtC4f,EAAOuhR,GAAYzgS,EAAAA,SAAgBV,QAAuBK,IAAdL,EAAKM,MAAuBN,EAAKM,KAAK4E,MAASlF,EAAKM,KAAK4E,KAAKC,SAAS,SAAa2hc,GAAaF,KAE7Il3X,EAAUq3X,GAAermc,EAAAA,UAAe,IACxCsmc,EAAcC,GAAmBvmc,EAAAA,SAAeV,QAAuBK,IAAdL,EAAKM,MAAuBN,EAAKM,KAAK4E,OACjGlF,EAAKM,KAAK4E,KAAKC,SAAS,UAAYnF,EAAKM,KAAK4E,KAAKC,SAAS,gBAAkB,QAAU,iBACtF+hc,EAAeC,GAAoBzmc,EAAAA,SAAe,IAezD,OACI0B,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,EACID,EAAAA,EAAAA,KAACugX,EAAAA,EAAM,CACHxxS,SAAUA,EACV5oE,SAAU,QACV4I,KAAM,OACNyxW,MAAM,EACNvhW,MAAOA,EAAMxS,KAAKuD,IAAI,IACfA,EACH/D,SAAU+D,EAAKzF,OAAS87b,EACxBnmc,MAA8B,SAArB8P,EAAKk2b,aAA4Bl2b,EAAK+9D,QAAUw4X,EAAkB,CAAEn2V,QAAS,QAAW,CAAEA,QAAS,YAEhHpgG,KAAMsuR,GACNpyR,SAtBMhG,IACdogc,EAAgBpgc,EAAEy6W,WAAWj2W,MAAMH,MAC9BrE,EAAEy6W,WAAWj2W,MAAMqjE,QAAUw4X,GAAsD,SAAnCrgc,EAAEy6W,WAAWj2W,MAAMw7b,YACpEM,EAAiB,IAEjBA,EAAiBtgc,EAAEy6W,WAAWj2W,MAAMqjE,MACxC,EAgB2B9tE,UAEnBwB,EAAAA,EAAAA,MAACs/W,EAAAA,EAAa,CAAA9gX,SAAA,CACS,UAAjBomc,IACErmc,EAAAA,EAAAA,KAACymc,KAAS,IAEK,iBAAjBJ,IACErmc,EAAAA,EAAAA,KAAC0mc,KAAY,IAEE,aAAjBL,IACErmc,EAAAA,EAAAA,KAAC2mc,GAAY,IAEE,eAAjBN,IACErmc,EAAAA,EAAAA,KAAC4mc,GAAa,IAEC,UAAjBP,IACErmc,EAAAA,EAAAA,KAAC6mc,EAAY,IAEE,aAAjBR,IACErmc,EAAAA,EAAAA,KAAC6mc,EAAY,IAEE,WAAjBR,IACErmc,EAAAA,EAAAA,KAAC8mc,GAAW,IAEG,SAAjBT,IACErmc,EAAAA,EAAAA,KAAC+mc,IAAQ,IAEM,aAAjBV,IACErmc,EAAAA,EAAAA,KAACgnc,GAAY,IAEE,aAAjBX,IACErmc,EAAAA,EAAAA,KAACinc,GAAY,IAEE,aAAjBZ,IACErmc,EAAAA,EAAAA,KAACknc,GAAAA,EAAY,IAEE,oBAAjBb,IACErmc,EAAAA,EAAAA,KAACmnc,GAAAA,EAAU,UAIvBnnc,EAAAA,EAAAA,KAAA,OAAAC,UAEID,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACHC,MAAmB,IAAbmtE,EAAoB,uBAAyB,wBACnDltE,QAvEUulc,KACtBhB,GAAar3X,EAAS,EAuEV7uE,MAAO,CAAEiG,SAAU,WAAYC,IAAI,OAAQ8V,KAAK,aAGtD,ECpId,GATcxR,IAGNjJ,EAAAA,EAAAA,MAAC1B,EAAAA,SAAc,CAAAE,SAAA,EACXD,EAAAA,EAAAA,KAACqnc,EAAc,KACfrnc,EAAAA,EAAAA,KAACsnc,GAAiB,6GCFvB,MAAM54U,GAAOA,CACnBz6F,EACApY,EACAwmD,MAVD,SAAcpY,EAAcmb,EAAqB/C,GAChD,MAAMlZ,EAAU,IAAI0qV,QAAQ5pV,EAAMmb,GAClCmtU,MAAMppV,GAASloD,MAAKxB,GAAYA,EAASy3J,SAAQj2J,MAAK,SAAUxB,GAC/D4iE,EAAS5iE,EACV,GACD,CAYC25D,CAAK,2BAA6BnlC,EALX,CACtBi8B,OAAQ,OACR7B,QAAS,CAAE,eAAgB,oBAC3BxyC,KAAMqvC,KAAKC,UAAUtvC,IAEqCwmD,EAAS,ECmGrE,GAlGe33D,IAEX,MAAM8/D,GAAWC,EAAAA,EAAAA,kBACXprE,GAAOC,EAAAA,EAAAA,iBAAgBC,GAAUA,EAAMF,QAEtC4jc,EAAeC,GAAoBnjc,EAAAA,SAAwBV,QAAuBK,IAAdL,EAAKM,MAAuBN,EAAKM,KAAKiI,UAAavI,EAAKM,KAAKiI,SAASyG,OAAS,IAEnJ88D,EAAcC,GAAmBrrE,EAAAA,SAAuB,IAGzDwnc,EAAcr+b,IACZA,EAAOiyC,SACP+nZ,GAAiB,GACjB93X,EAAgBliE,EAAOiyC,WAEvBqvB,GACI+J,EAAAA,EAAAA,IAAM,CACF50E,KAAMuJ,KAEdg6b,GAAiB,GACjB93X,EAAgB,IACpB,EAOJ,OACI3pE,EAAAA,EAAAA,MAAA,OAAAxB,SAAA,CACMgjc,IACEjjc,EAAAA,EAAAA,KAAC0qE,EAAAA,GAAQ,CAACC,GAAG,OAEds4X,IACCjjc,EAAAA,EAAAA,KAAA,OACIE,MAAO,CAAE0M,gBAAiB,YAAa/F,MAAO,QAASgB,OAAQ,QAASC,OAAQ,OAAQjF,UAAW,QAAS5C,UAE5GwB,EAAAA,EAAAA,MAACo+W,GAAAA,EAAI,CAAC3/W,MAAO,CAAE2G,MAAO,QAASV,SAAU,WAAYC,IAAK,OAAQugG,OAAQ,OAAQzqF,KAAM,QAASjc,SAAA,EAC7FD,EAAAA,EAAAA,KAACogX,GAAAA,EAAS,CACNpnW,IAAI,4BACJ9Y,MAAO,CACH4H,OAAQ,WAGhB9H,EAAAA,EAAAA,KAACmgX,GAAAA,EAAQ,CAAAlgX,UACLD,EAAAA,EAAAA,KAACM,GAAAA,EAAI,CACDwB,SAtBN+I,IAClB6jH,GAAK,sBAAuB,CAAE9mH,SAAUiD,EAASjD,SAAUqvD,SAAUpsD,EAASosD,UAAYswY,EAAW,EAsB7Ehmc,OAASC,IACLC,EAAAA,EAAAA,MAACO,GAAAA,EAAW,CAAC9B,MAAO,CAAEic,SAAU,KAAMlc,SAAA,EAClCwB,EAAAA,EAAAA,MAAA,YACIpB,UAAW,kBACX+1B,QAASA,KAAQg1C,EAAgB,GAAG,EAAGnrE,SAAA,EAEvCwB,EAAAA,EAAAA,MAACsG,GAAAA,EAAY,CAAA9H,SAAA,EACVD,EAAAA,EAAAA,KAACgI,GAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,cAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC7BD,EAAAA,EAAAA,KAACoC,GAAAA,EAAK,CACF/B,UAAU,YACViC,KAAM,WACNC,UAAW0F,GAAAA,WAKvBxG,EAAAA,EAAAA,MAACsG,GAAAA,EAAY,CAAA9H,SAAA,EACVD,EAAAA,EAAAA,KAACgI,GAAAA,EAAK,CAAC3H,UAAU,eAAcJ,SAAC,cAChCD,EAAAA,EAAAA,KAAA,OAAKK,UAAU,oBAAmBJ,UAC7BD,EAAAA,EAAAA,KAACoC,GAAAA,EAAK,CACF/B,UAAU,YACViC,KAAM,WACN0D,KAAK,WACLzD,UAAW0F,GAAAA,cAO3BjI,EAAAA,EAAAA,KAAA,KAAGE,MAAO,CAAE4K,MAAO,MAAO0gE,WAAW,OAAQvrE,SAAEkrE,EAAe,OAC9DnrE,EAAAA,EAAAA,KAAC2B,EAAAA,EAAM,CACHzB,MAAO,CAAE2G,MAAO,MAAOiB,OAAQ,QAC/BvB,WAAY,UACZP,KAAK,SACL3F,UAAU,uEACVqG,UAAWlF,EAAgBqgB,YAAY5hB,SAC1C,wBAU3B,EC5Fd,SAdA,WACE,OACID,EAAAA,EAAAA,KAAA,OAAKK,UAAU,MAAKJ,UAChBD,EAAAA,EAAAA,KAAC2ic,EAAa,CAAA1ic,UACVwB,EAAAA,EAAAA,MAACi3b,EAAAA,GAAM,CAAAz4b,SAAA,EACHD,EAAAA,EAAAA,KAACm4b,EAAAA,GAAK,CAACluY,KAAK,SAASp1B,SAAS70B,EAAAA,EAAAA,KAACwnc,GAAK,OACpCxnc,EAAAA,EAAAA,KAACm4b,EAAAA,GAAK,CAACluY,KAAK,IAAIp1B,SAAS70B,EAAAA,EAAAA,KAACync,EAAS,CAAC5ya,SAAS70B,EAAAA,EAAAA,KAAC0nc,GAAI,SAClD1nc,EAAAA,EAAAA,KAACm4b,EAAAA,GAAK,CAACluY,KAAK,IAAIp1B,SAAS70B,EAAAA,EAAAA,KAACync,EAAS,CAAC5ya,SAAS70B,EAAAA,EAAAA,KAAC0qE,EAAAA,GAAQ,CAACC,GAAG,gBAK5E,iBClBA,MAYA,GAZyBg9X,IACnBA,GAAeA,aAAuBtrT,UACxC,6BAAqBp7I,MAAK/B,IAAkD,IAAjD,OAAE0oc,EAAM,OAAEC,EAAM,OAAEC,EAAM,OAAEC,EAAM,QAAEC,GAAS9oc,EACpE0oc,EAAOD,GACPE,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAQL,EAAY,GAExB,ECHWjpN,EAAAA,WACX1jO,SAASitb,eAAe,SAErB1mc,QACHvB,EAAAA,EAAAA,KAACD,EAAAA,WAAgB,CAAAE,UACfD,EAAAA,EAAAA,KAACggP,GAAAA,GAAQ,CAACtrK,MAAOA,EAAAA,MAAMz0E,UACnBD,EAAAA,EAAAA,KAACkoc,GAAG,SAQZC","sources":["components/AgencyNew.tsx","components/AgencyView.tsx","components/EventNew.tsx","components/EventView.tsx","components/EventsGrid.tsx","components/Exam/ExamNewServices.tsx","components/FloatingContainerLabel.tsx","components/Exam/ExamVaccineRow.tsx","components/Exam/ExamNewVaccinations.tsx","components/Exam/ExamNewSchedule.tsx","components/Exam/ExamEdit.tsx","components/Exam/ExamViewAttachments.tsx","components/Exam/ExamPDF.tsx","components/Exam/ExamTab.tsx","components/Exam/Exam.tsx","components/Exam/ExamNew.tsx","components/Exam/ExamNewClientPet.tsx","components/Exam/ExamNewComments.tsx","components/Exam/ExamNewEligibility.tsx","components/Exam/ExamNewQuestionnaire.tsx","components/Exam/ExamNewRecord.tsx","components/Exam/ExamNewWaivers.tsx","components/Exam/ExamViewClientPet.tsx","components/Exam/ExamsGrid.tsx","components/Exam/InlineExamsGrid.tsx","components/FollowupExamsGrid.tsx","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/HoursService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimeList.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/DayPeriodService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/MinutesService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/SecondsService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/DOMService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimePart.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datetimepicker/DateTimeSelector.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datetimepicker/DateTimePicker.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimeSelector.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimePicker.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/HorizontalViewList.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/MultiViewCalendar.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/daterangepicker/DateRangePicker.js","../node_modules/@progress/kendo-react-upload/dist/es/interfaces/UploadFileStatus.js","../node_modules/@progress/kendo-react-upload/dist/es/messages/index.js","../node_modules/@progress/kendo-react-upload/dist/es/utils/utils.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadListActionButton.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadListSingleItem.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadListMultiItem.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadListGroup.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadList.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadInput.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadAddButton.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadActionButtons.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadStatus.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadDropZone.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadUI.js","../node_modules/@progress/kendo-react-upload/dist/es/UploadNavigation.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/@progress/kendo-react-upload/dist/es/utils/stateUtils.js","../node_modules/@progress/kendo-react-upload/dist/es/utils/connectionUtils.js","../node_modules/@progress/kendo-react-upload/dist/es/utils/validationUtils.js","../node_modules/@progress/kendo-react-upload/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-upload/dist/es/Upload.js","components/FormComponents.tsx","components/InlinePersonsGrid.tsx","components/InlinePetsGrid.tsx","components/NavigateToLogin.tsx","components/PersonNew.tsx","components/PersonPassword.tsx","components/PersonView.tsx","components/Pet.tsx","components/PetsGrid.tsx","components/ScheduleGrid.tsx","components/VaccineNew.tsx","components/VaccinesGrid.tsx","components/validators.tsx","store/auth-slice.ts","store/store.ts","../node_modules/@reduxjs/toolkit/src/query/react/useSerializedStableValue.ts","../node_modules/@reduxjs/toolkit/src/query/react/constants.ts","../node_modules/@reduxjs/toolkit/src/query/react/useShallowStableValue.ts","../node_modules/@reduxjs/toolkit/src/query/defaultSerializeQueryArgs.ts","../node_modules/@reduxjs/toolkit/src/query/endpointDefinitions.ts","../node_modules/@reduxjs/toolkit/src/query/react/buildHooks.ts","../node_modules/@reduxjs/toolkit/src/query/utils/capitalize.ts","../node_modules/@reduxjs/toolkit/src/query/tsHelpers.ts","../node_modules/@reduxjs/toolkit/src/query/react/module.ts","../node_modules/@reduxjs/toolkit/src/query/react/index.ts","store/sunbright-api.ts","../node_modules/@progress/kendo-data-query/dist/es/utils.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-descriptor.interface.js","../node_modules/tslib/tslib.es6.js","../node_modules/@progress/kendo-data-query/dist/es/funcs.js","../node_modules/@progress/kendo-data-query/dist/es/filter-serialization.common.js","../node_modules/@progress/kendo-data-query/dist/es/odata.operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter.operators.js","../node_modules/@progress/kendo-data-query/dist/es/odata-filtering.operators.js","../node_modules/@progress/kendo-data-query/dist/es/accessor.js","../node_modules/@progress/kendo-data-query/dist/es/mvc/operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/operators.enum.js","../node_modules/@progress/kendo-data-query/dist/es/mvc/deserialization.js","../node_modules/@progress/kendo-data-query/dist/es/sorting/sort-array.operator.js","../node_modules/@progress/kendo-data-query/dist/es/transducers.js","../node_modules/@progress/kendo-data-query/dist/es/grouping/aggregate.operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-no-eval.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-expression.factory.js","../node_modules/@progress/kendo-data-query/dist/es/grouping/group.operators.js","../node_modules/@progress/kendo-data-query/dist/es/array.operators.js","../node_modules/@progress/kendo-date-math/dist/es/add-days.js","../node_modules/@progress/kendo-date-math/dist/es/add-months.js","../node_modules/@progress/kendo-date-math/dist/es/adjust-dst.js","../node_modules/@progress/kendo-date-math/dist/es/clone-date.js","../node_modules/@progress/kendo-date-math/dist/es/create-date.js","../node_modules/@progress/kendo-date-math/dist/es/day-of-week.js","../node_modules/@progress/kendo-date-math/dist/es/direction.enum.js","../node_modules/@progress/kendo-date-math/dist/es/first-day-of-month.js","../node_modules/@progress/kendo-date-math/dist/es/get-date.js","../node_modules/@progress/kendo-date-math/dist/es/is-equal-date.js","../node_modules/@progress/kendo-date-math/dist/es/is-equal.js","../node_modules/@progress/kendo-date-math/dist/es/last-day-of-month.js","../node_modules/@progress/kendo-drawing/dist/es/common/class.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/named-colors.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/parse-color.js","../node_modules/@progress/kendo-drawing/dist/es/common/support.js","../node_modules/@progress/kendo-drawing/dist/es/core/has-observers.js","../node_modules/@progress/kendo-drawing/dist/es/core/options-store.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close-or-less.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersection.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/arc.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/constants.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/ellipse-extreme-angles.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/matrix.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/point.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/rect.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/size.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/to-matrix.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/transformation.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/transform.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/stops-array.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-options.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/gradient-stop.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/gradient.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/linear-gradient.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/radial-gradient.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/circle.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/text.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/rect.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/circle.js","../node_modules/@progress/kendo-drawing/dist/es/html/core.js","../node_modules/@progress/kendo-drawing/dist/es/common/template.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/measurable.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/paintable.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/traversable.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-accessors.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-geometry.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-points.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/utils.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/ttf.js","../node_modules/@progress/pako-esm/dist/pako-esm5.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/deflate.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/core.js","../node_modules/@progress/kendo-drawing/dist/es/pdf/drawing.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/element.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/elements-array.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/group.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/image.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/geometry-elements-array.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/is-out-of-end-point.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/calculate-curve-at.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/to-cubic-polynomial.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/complex-number.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/solve-cubic-equation.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/has-roots-in-range.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersections-count.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/segment.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/curve-intersections-count.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/points-to-curve.js","../node_modules/@progress/kendo-drawing/dist/es/parsing/shape-map.js","../node_modules/@progress/kendo-drawing/dist/es/parsing/parse-path.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/path.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-bounding-box.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-clippend-bounding-box.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/lru-cache.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/measure-text.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/text-metrics.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/util.js","../node_modules/@progress/kendo-drawing/dist/es/util/append.js","../node_modules/@progress/kendo-drawing/dist/es/util/arabic-to-roman.js","../node_modules/@progress/kendo-drawing/dist/es/util/constants.js","../node_modules/@progress/kendo-drawing/dist/es/util/create-promise.js","../node_modules/@progress/kendo-drawing/dist/es/util/defined.js","../node_modules/@progress/kendo-drawing/dist/es/util/definition-id.js","../node_modules/@progress/kendo-drawing/dist/es/util/deg.js","../node_modules/@progress/kendo-drawing/dist/es/util/encode-base64.js","../node_modules/@progress/kendo-drawing/dist/es/util/encode-utf.js","../node_modules/@progress/kendo-drawing/dist/es/util/is-transparent.js","../node_modules/@progress/kendo-drawing/dist/es/util/last.js","../node_modules/@progress/kendo-drawing/dist/es/util/limit-value.js","../node_modules/@progress/kendo-drawing/dist/es/util/merge-sort.js","../node_modules/@progress/kendo-drawing/dist/es/util/rad.js","../node_modules/@progress/kendo-drawing/dist/es/util/round.js","../node_modules/@progress/kendo-drawing/dist/es/util/value-or-default.js","../node_modules/orderedmap/dist/index.js","../node_modules/prosemirror-model/dist/index.js","../node_modules/prosemirror-transform/dist/index.js","../node_modules/prosemirror-state/dist/index.js","../node_modules/@progress/kendo-editor-common/dist/es/config/constants.js","../node_modules/@progress/kendo-editor-common/node_modules/tslib/tslib.es6.mjs","../node_modules/@progress/kendo-editor-common/dist/es/utils.js","../node_modules/@progress/kendo-editor-common/dist/es/DOMSerializer.js","../node_modules/@progress/kendo-editor-common/dist/es/source.js","../node_modules/@progress/kendo-editor-common/dist/es/mark.js","../node_modules/@progress/kendo-editor-common/dist/es/inline-style.js","../node_modules/@progress/kendo-editor-common/dist/es/link.js","../node_modules/@progress/kendo-editor-common/dist/es/blockNode.js","../node_modules/@progress/kendo-editor-common/dist/es/align.js","../node_modules/@progress/kendo-editor-common/dist/es/cleanFormatting.js","../node_modules/prosemirror-schema-list/dist/index.js","../node_modules/@progress/kendo-editor-common/dist/es/config/list-settings.js","../node_modules/@progress/kendo-editor-common/dist/es/config/indent-rules.js","../node_modules/@progress/kendo-editor-common/dist/es/indent.js","../node_modules/prosemirror-commands/dist/index.js","../node_modules/@progress/kendo-editor-common/dist/es/lists.js","../node_modules/@progress/kendo-editor-common/dist/es/config/align-rules.js","../node_modules/prosemirror-view/dist/index.js","../node_modules/w3c-keyname/index.js","../node_modules/prosemirror-keymap/dist/index.js","../node_modules/prosemirror-tables/dist/index.js","../node_modules/@progress/kendo-editor-common/dist/es/config/schema.js","../node_modules/@progress/kendo-editor-common/dist/es/config/commands.js","../node_modules/@progress/kendo-editor-common/dist/es/listConvert.js","../node_modules/@progress/kendo-editor-common/dist/es/config/keymap.js","../node_modules/@progress/kendo-editor-common/dist/es/paste.js","../node_modules/@progress/kendo-editor-common/dist/es/find-replace.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/spaces-fix.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/csp-fix.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/highlight.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/resize-utils.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/image-resize.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/caret-color.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/table-resize/table-view.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/table-resize/utils.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/table-resize/column-resize.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/table-resize/table-resize.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/table-resize/row-resize.js","../node_modules/@progress/kendo-editor-common/dist/es/plugins/table-resize/index.js","../node_modules/prosemirror-dropcursor/dist/index.js","../node_modules/prosemirror-gapcursor/dist/index.js","../node_modules/rope-sequence/dist/index.js","../node_modules/prosemirror-history/dist/index.js","../node_modules/prosemirror-inputrules/dist/index.js","../node_modules/@progress/kendo-editor-common/dist/es/table.js","../node_modules/@progress/kendo-file-saver/dist/es/save-as.js","../node_modules/@progress/kendo-file-saver/dist/es/base64.js","../node_modules/@progress/kendo-intl/dist/es/cldr/default-data.js","../node_modules/@progress/kendo-intl/dist/es/common/is-string.js","../node_modules/@progress/kendo-intl/dist/es/errors.js","../node_modules/@progress/kendo-intl/dist/es/error-details.js","../node_modules/@progress/kendo-intl/dist/es/cldr/info.js","../node_modules/@progress/kendo-intl/dist/es/common/constants.js","../node_modules/@progress/kendo-intl/dist/es/cldr/load-numbers.js","../node_modules/@progress/kendo-intl/dist/es/cldr/load-dates.js","../node_modules/@progress/kendo-intl/dist/es/cldr/territory.js","../node_modules/@progress/kendo-intl/dist/es/cldr/load-units.js","../node_modules/@progress/kendo-intl/dist/es/cldr/load.js","../node_modules/@progress/kendo-intl/dist/es/cldr/date-field-name.js","../node_modules/@progress/kendo-intl/dist/es/cldr/date-format-names.js","../node_modules/@progress/kendo-intl/dist/es/cldr/parse-range-date.js","../node_modules/@progress/kendo-intl/dist/es/cldr/currency.js","../node_modules/@progress/kendo-intl/dist/es/cldr/constants.js","../node_modules/@progress/kendo-intl/dist/es/cldr/first-day.js","../node_modules/@progress/kendo-intl/dist/es/cldr/weekend-range.js","../node_modules/@progress/kendo-intl/dist/es/cldr/number-symbols.js","../node_modules/@progress/kendo-intl/dist/es/common/is-negative-zero.js","../node_modules/@progress/kendo-intl/dist/es/numbers/format-currency-symbol.js","../node_modules/@progress/kendo-intl/dist/es/numbers/group-integer.js","../node_modules/@progress/kendo-intl/dist/es/numbers/is-currency-style.js","../node_modules/@progress/kendo-intl/dist/es/common/pad.js","../node_modules/@progress/kendo-intl/dist/es/common/round.js","../node_modules/@progress/kendo-intl/dist/es/numbers/standard-number-format.js","../node_modules/@progress/kendo-intl/dist/es/numbers/utils.js","../node_modules/@progress/kendo-intl/dist/es/numbers/custom-number-format.js","../node_modules/@progress/kendo-intl/dist/es/numbers/format-options.js","../node_modules/@progress/kendo-intl/dist/es/numbers/format-number.js","../node_modules/@progress/kendo-intl/dist/es/common/is-number.js","../node_modules/@progress/kendo-intl/dist/es/numbers/parse-number.js","../node_modules/@progress/kendo-intl/dist/es/common/format-string.js","../node_modules/@progress/kendo-intl/dist/es/dates/date-pattern.js","../node_modules/@progress/kendo-intl/dist/es/dates/date-name-type.js","../node_modules/@progress/kendo-intl/dist/es/dates/format-names.js","../node_modules/@progress/kendo-intl/dist/es/common/is-date.js","../node_modules/@progress/kendo-intl/dist/es/dates/constants.js","../node_modules/@progress/kendo-intl/dist/es/dates/format-date.js","../node_modules/@progress/kendo-intl/dist/es/dates/time-utils.js","../node_modules/@progress/kendo-intl/dist/es/dates/parse-date.js","../node_modules/@progress/kendo-intl/dist/es/dates/split-date-format.js","../node_modules/@progress/kendo-intl/dist/es/format.js","../node_modules/@progress/kendo-licensing/dist/index-esm.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/@progress/kendo-react-animation/dist/es/AnimationChild.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@progress/kendo-react-animation/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-animation/dist/es/Animation.js","../node_modules/@progress/kendo-react-animation/dist/es/Reveal.js","../node_modules/@progress/kendo-react-animation/dist/es/util.js","../node_modules/@progress/kendo-react-buttons/dist/es/Button.js","../node_modules/@progress/kendo-react-buttons/dist/es/ButtonGroup.js","../node_modules/@progress/kendo-react-buttons/dist/es/Chip/Chip.js","../node_modules/@progress/kendo-react-buttons/dist/es/Chip/ChipList.js","../node_modules/@progress/kendo-react-buttons/dist/es/Chip/data-reducer.js","../node_modules/@progress/kendo-react-buttons/dist/es/Chip/focus-reducer.js","../node_modules/@progress/kendo-react-buttons/dist/es/Chip/selection-reducer.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/ButtonItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/DropDownButton.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/DropDownButtonItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/SplitButton.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/SplitButtonItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/utils/navigation.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/utils/popup.js","../node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarSpacer.js","../node_modules/@progress/kendo-react-buttons/dist/es/FloatingActionButton/FloatingActionButtonItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/FloatingActionButton/utils.js","../node_modules/@progress/kendo-react-buttons/dist/es/FloatingActionButton/FloatingActionButton.js","../node_modules/@progress/kendo-react-buttons/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-buttons/dist/es/toolbar/Toolbar.js","../node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarSeparator.js","../node_modules/@progress/kendo-react-buttons/dist/es/util.js","../node_modules/@progress/kendo-react-common/dist/es/Draggable.js","../node_modules/@progress/kendo-react-common/dist/es/browser-support.service.js","../node_modules/@progress/kendo-react-common/dist/es/canUseDOM.js","../node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-common/dist/es/clone.js","../node_modules/@progress/kendo-react-common/dist/es/contexts/ZIndexContext.js","../node_modules/@progress/kendo-react-common/dist/es/drag-n-drop/context/index.js","../node_modules/@progress/kendo-react-common/dist/es/events/dispatchEvent.js","../node_modules/@progress/kendo-react-common/dist/es/constants/index.js","../node_modules/@progress/kendo-react-common/dist/es/fieldList.js","../node_modules/@progress/kendo-react-common/dist/es/focus.js","../node_modules/@progress/kendo-react-common/dist/es/getActiveElement.js","../node_modules/@progress/kendo-react-common/dist/es/getTabIndex.js","../node_modules/@progress/kendo-react-common/dist/es/getter.js","../node_modules/@progress/kendo-react-common/dist/es/guid.js","../node_modules/@progress/kendo-react-common/dist/es/hasRelativeStackingContext.js","../node_modules/@progress/kendo-react-common/dist/es/hocs/AsyncFocusBlur.js","../node_modules/@progress/kendo-react-common/dist/es/hocs/withPropsContext.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useAsyncFocusBlur.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useCustomComponent.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useDir.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useDocument.js","../node_modules/@progress/kendo-draggable-common/dist/es/drag-n-drop.js","../node_modules/@progress/kendo-draggable-common/dist/es/algorithms/intersect.js","../node_modules/@progress/kendo-draggable-common/dist/es/utils/index.js","../node_modules/@progress/kendo-draggable-common/dist/es/auto-scroll.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useDraggable.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useInheritedState.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useMouse.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/usePropsContext.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useRtl.js","../node_modules/@progress/kendo-react-common/dist/es/icons/Icon.js","../node_modules/@progress/kendo-react-common/dist/es/icons/IconWrap.js","../node_modules/@progress/kendo-react-common/dist/es/icons/IconsContext.js","../node_modules/@progress/kendo-react-common/dist/es/icons/SvgIcon.js","../node_modules/@progress/kendo-react-common/dist/es/icons/constants.js","../node_modules/@progress/kendo-react-common/dist/es/icons/utils.js","../node_modules/@progress/kendo-react-common/dist/es/keys.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useCollection.js","../node_modules/@progress/kendo-react-common/dist/es/canUseRef.js","../node_modules/@progress/kendo-react-common/dist/es/FormComponent.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useWindow.js","../node_modules/@progress/kendo-react-common/dist/es/typography/constants.js","../node_modules/@progress/kendo-react-common/dist/es/typography/Typography.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useControlledState.js","../node_modules/@progress/kendo-react-common/dist/es/drag-n-drop/index.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/useDroppable.js","../node_modules/@progress/kendo-react-common/dist/es/Droppable.js","../node_modules/@progress/kendo-react-common/dist/es/memoize.js","../node_modules/@progress/kendo-react-common/dist/es/navigation.js","../node_modules/@progress/kendo-react-common/dist/es/noop.js","../node_modules/@progress/kendo-react-common/dist/es/scrollbarWidth.js","../node_modules/@progress/kendo-react-common/dist/es/setter.js","../node_modules/@progress/kendo-react-common/dist/es/theme.js","../node_modules/@progress/kendo-react-common/dist/es/tree-utils/FieldsService.js","../node_modules/@progress/kendo-react-common/dist/es/tree-utils/SortedPublicItemIds.js","../node_modules/@progress/kendo-react-common/dist/es/tree-utils/itemIdUtils.js","../node_modules/@progress/kendo-react-common/dist/es/tree-utils/itemUtils.js","../node_modules/@progress/kendo-react-common/dist/es/tree-utils/misc.js","../node_modules/@progress/kendo-react-common/dist/es/treeDataOperations.js","../node_modules/@progress/kendo-react-common/dist/es/validate-package.js","../node_modules/@progress/kendo-react-common/dist/es/watermark/WatermarkOverlay.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/utils/index.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/TableKeyboardNavigationContext.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/constants.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/hooks.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/utils.js","../node_modules/@progress/kendo-react-data-tools/dist/es/selection/constants.js","../node_modules/@progress/kendo-react-data-tools/dist/es/selection/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/ViewList.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarNavigationItem.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Navigation.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DOMService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/ScrollSyncService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Calendar.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarHeaderTitle.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Header.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/TodayCommand.js","../node_modules/@progress/kendo-date-math/dist/es/day.enum.js","../node_modules/@progress/kendo-date-math/dist/es/week-in-year.js","../node_modules/@progress/kendo-date-math/dist/es/prev-day-of-week.js","../node_modules/@progress/kendo-date-math/dist/es/constants.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarCell.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarWeekCell.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/WeekNamesService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/View.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/CalendarViewEnum.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/NavigationAction.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/SelectionRange.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/CenturyViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DecadeViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/MonthViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/YearViewService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/BusViewService.js","../node_modules/@progress/kendo-date-math/dist/es/set-year.js","../node_modules/@progress/kendo-date-math/dist/es/add-years.js","../node_modules/@progress/kendo-date-math/dist/es/add-decades.js","../node_modules/@progress/kendo-date-math/dist/es/add-centuries.js","../node_modules/@progress/kendo-date-math/dist/es/normalize-year.js","../node_modules/@progress/kendo-date-math/dist/es/first-decade-of-century.js","../node_modules/@progress/kendo-date-math/dist/es/last-decade-of-century.js","../node_modules/@progress/kendo-date-math/dist/es/first-year-of-decade.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-centuries.js","../node_modules/@progress/kendo-date-math/dist/es/last-year-of-decade.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-decades.js","../node_modules/@progress/kendo-date-math/dist/es/add-weeks.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-months.js","../node_modules/@progress/kendo-date-math/dist/es/set-month.js","../node_modules/@progress/kendo-date-math/dist/es/first-month-of-year.js","../node_modules/@progress/kendo-date-math/dist/es/last-month-of-year.js","../node_modules/@progress/kendo-date-math/dist/es/duration-in-years.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/NavigationService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/common/AdaptiveMode.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/common/constants.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/models/mask.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/models/kendo-date.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/DateInput.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datepicker/ToggleButton.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/common/PickerWrap.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/datepicker/DatePicker.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/hooks/usePickerFloatingLabel.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/messages/index.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/models/TimePart.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/utils.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/Virtualization.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/services/RowHeightService.js","../node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/services/ScrollerService.js","../node_modules/@progress/kendo-react-dialogs/dist/es/DialogTitleBar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/Dialog.js","../node_modules/@progress/kendo-react-dialogs/dist/es/DialogActionsBar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/StageEnum.js","../node_modules/@progress/kendo-react-dialogs/dist/es/messages/index.js","../node_modules/@progress/kendo-react-dialogs/dist/es/WindowTitlebar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/WindowResizeHandlers.js","../node_modules/@progress/kendo-react-dialogs/dist/es/MiddleLayerOptimization.js","../node_modules/@progress/kendo-react-dialogs/dist/es/Window.js","../node_modules/@progress/kendo-react-dialogs/dist/es/WindowActionsBar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/constants.js","../node_modules/@progress/kendo-react-dialogs/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-dialogs/dist/es/utils.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/AutoComplete/AutoComplete.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/ComboBox/ComboBox.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListDefaultItem.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/DropDownList/DropDownList.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/MultiColumnList.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/MultiColumnComboBox/MultiColumnComboBox.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/settings.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/MultiSelect/MultiSelect.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/MultiSelect/TagList.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/AdaptiveMode.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ClearButton.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/VirtualScroll.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/Navigation.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/DropDownBase.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/GroupStickyHeader.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListGroupItem.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/List.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListContainer.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListFilter.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListItem.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/SearchBar.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/constants.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/common/utils.js","../node_modules/@progress/kendo-react-treeview/dist/es/utils/getItemIdUponKeyboardNavigation.js","../node_modules/@progress/kendo-react-treeview/dist/es/utils/consts.js","../node_modules/@progress/kendo-react-treeview/dist/es/TreeViewItem.js","../node_modules/@progress/kendo-react-treeview/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-treeview/dist/es/TreeView.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/DropDownTree/useDropdownWidth.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/DropDownTree/ListNoData.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/DropDownTree/DropDownTree.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/MultiSelectTree/MultiSelectTree.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/MultiSelectTree/utils.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/messages/index.js","../node_modules/@progress/kendo-react-dropdowns/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-editor/dist/es/config/defaultStyles.js","../node_modules/@progress/kendo-react-editor/dist/es/utils/controlled-value.js","../node_modules/@progress/kendo-react-editor/dist/es/utils/browser-detection.js","../node_modules/@progress/kendo-react-editor/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-editor/dist/es/Editor.js","../node_modules/@progress/kendo-react-editor/dist/es/config/toolsSettings.js","../node_modules/@progress/kendo-react-editor/dist/es/dialogs/FindReplace.js","../node_modules/@progress/kendo-react-editor/dist/es/dialogs/insertLink.js","../node_modules/@progress/kendo-react-editor/dist/es/dialogs/insertImage.js","../node_modules/@progress/kendo-react-editor/dist/es/dialogs/viewHtml.js","../node_modules/@progress/kendo-react-editor/dist/es/dialogs/main.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/insertTable/popupGrid.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/insertTable/popup.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/insertTable/tool.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/align.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/fontStyle.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/formatBlock.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/applyColor.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/proseMirrorTool.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/history.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/indent.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/inlineFormat.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/insertLink.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/insertImage.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/lists.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/outdent.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/tableEdit.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/unlink.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/viewHtml.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/print.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/pdf.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/selectAll.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/cleanFormatting.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/findReplace.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/lists-styled.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/table-wizard/utils.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/main.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/table-wizard/cellPropsUtils.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/table-wizard/tableCellProperties.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/table-wizard/tablePropsUtils.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/table-wizard/tableProperties.js","../node_modules/@progress/kendo-react-editor/dist/es/main.js","../node_modules/@progress/kendo-react-editor/dist/es/messages/index.js","../node_modules/@progress/kendo-react-editor/dist/es/tools/utils.js","../node_modules/@progress/kendo-react-editor/dist/es/utils/index.js","../node_modules/@progress/kendo-react-editor/dist/es/config/shortcuts.js","../node_modules/@progress/kendo-react-editor/dist/es/utils/props-key.js","../node_modules/@progress/kendo-react-form/dist/es/Field.js","../node_modules/@progress/kendo-react-form/dist/es/FieldWrapper.js","../node_modules/@progress/kendo-react-form/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-form/dist/es/Form.js","../node_modules/@progress/kendo-react-form/dist/es/FormContext.js","../node_modules/@progress/kendo-react-form/dist/es/FormElement.js","../node_modules/@progress/kendo-react-form/dist/es/FieldArray.js","../node_modules/@progress/kendo-react-data-tools/dist/es/navigation/TableKeyboardNavigation.js","../node_modules/@progress/kendo-react-data-tools/dist/es/virtualization/columns.js","../node_modules/@progress/kendo-react-data-tools/dist/es/messages/index.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerNumericButtons.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerInput.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerPageSizes.js","../node_modules/@progress/kendo-react-data-tools/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-data-tools/dist/es/pager/Pager.js","../node_modules/@progress/kendo-react-data-tools/dist/es/selection/TableSelection.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/DropClue.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/DragClue.js","../node_modules/@progress/kendo-react-grid/dist/es/header/Header.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnDraggable.js","../node_modules/@progress/kendo-react-data-tools/dist/es/drag/ColumnResizer.js","../node_modules/@progress/kendo-react-data-tools/dist/es/header/HeaderThElement.js","../node_modules/@progress/kendo-react-grid/dist/es/header/HeaderRow.js","../node_modules/@progress/kendo-react-grid/dist/es/header/FilterRow.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/GroupingIndicator.js","../node_modules/@progress/kendo-react-grid/dist/es/header/GroupPanel.js","../node_modules/@progress/kendo-react-grid/dist/es/footer/Footer.js","../node_modules/@progress/kendo-react-grid/dist/es/VirtualScroll.js","../node_modules/@progress/kendo-react-grid/dist/es/VirtualScrollFixed.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnResize.js","../node_modules/@progress/kendo-react-grid/dist/es/header/GridHeaderSelectionCell.js","../node_modules/@progress/kendo-react-grid/dist/es/footer/FooterRow.js","../node_modules/@progress/kendo-react-grid/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridDetailCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridDetailHierarchyCell.js","../node_modules/@progress/kendo-react-grid/dist/es/Grid.js","../node_modules/@progress/kendo-react-grid/dist/es/paging/GridPagerSettings.js","../node_modules/@progress/kendo-react-grid/dist/es/GridColumn.js","../node_modules/@progress/kendo-react-grid/dist/es/GridNoRecords.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridEditCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridFilterCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridGroupCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridHierarchyCell.js","../node_modules/@progress/kendo-react-grid/dist/es/cells/GridSelectionCell.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuWrapper.js","../node_modules/@progress/kendo-react-grid/dist/es/constants/index.js","../node_modules/@progress/kendo-react-grid/dist/es/drag/CommonDragLogic.js","../node_modules/@progress/kendo-react-grid/dist/es/filterCommon.js","../node_modules/@progress/kendo-react-grid/dist/es/header/GridHeaderCell.js","../node_modules/@progress/kendo-react-grid/dist/es/interfaces/GridSortSettings.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItemGroup.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItem.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuGroup.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuSort.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItemContent.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilterCell.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilterUI.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilter.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuCheckboxFilter.js","../node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuColumnsList.js","../node_modules/@progress/kendo-react-grid/dist/es/rows/GridDetailRow.js","../node_modules/@progress/kendo-react-grid/dist/es/GridToolbar.js","../node_modules/@progress/kendo-react-grid/dist/es/StatusBar.js","../node_modules/@progress/kendo-react-grid/dist/es/messages/index.js","../node_modules/@progress/kendo-react-grid/dist/es/rows/GridRow.js","../node_modules/@progress/kendo-react-grid/dist/es/utils/index.js","../node_modules/@progress/kendo-react-indicators/dist/es/badge/Badge.js","../node_modules/@progress/kendo-react-indicators/dist/es/badge/BadgeContainer.js","../node_modules/@progress/kendo-react-indicators/dist/es/loader/Loader.js","../node_modules/@progress/kendo-react-indicators/dist/es/skeleton/Skeleton.js","../node_modules/@progress/kendo-react-indicators/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-inputs/dist/es/checkbox/Checkbox.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-cache.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorContrastLabels.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/svg-calc.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorContrastSvg.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorGradient.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/HexInput.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorInput.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-palette.service.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorPalette.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/Picker.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorPicker.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/models/palette-presets.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/color.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-parser.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/misc.js","../node_modules/@progress/kendo-react-inputs/dist/es/input/Input.js","../node_modules/@progress/kendo-react-inputs/dist/es/input/InputPrefix.js","../node_modules/@progress/kendo-react-inputs/dist/es/colors/FlatColorPicker.js","../node_modules/@progress/kendo-inputs-common/dist/es/maskedtextbox/parsing/result.js","../node_modules/@progress/kendo-inputs-common/dist/es/maskedtextbox/parsing/stream.js","../node_modules/@progress/kendo-inputs-common/dist/es/maskedtextbox/parsing/parsers.js","../node_modules/@progress/kendo-inputs-common/dist/es/maskedtextbox/parsing/combinators.js","../node_modules/@progress/kendo-inputs-common/dist/es/maskedtextbox/masking.service.js","../node_modules/@progress/kendo-drawing/dist/es/common/observable.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-styles.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-size.js","../node_modules/@progress/kendo-drawing/dist/es/util/event-element.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-padding.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-offset.js","../node_modules/@progress/kendo-drawing/dist/es/util/event-coordinates.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-scale.js","../node_modules/@progress/kendo-drawing/dist/es/core/surface.js","../node_modules/@progress/kendo-drawing/dist/es/util/bind-events.js","../node_modules/@progress/kendo-drawing/dist/es/util/unbind-events.js","../node_modules/@progress/kendo-drawing/dist/es/util/promise-all.js","../node_modules/@progress/kendo-drawing/dist/es/core/base-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/node-map.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/group-node.js","../node_modules/@progress/kendo-drawing/dist/es/util/now.js","../node_modules/@progress/kendo-drawing/dist/es/common/animation-frame.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/root-node.js","../node_modules/@progress/kendo-drawing/dist/es/common/throttle.js","../node_modules/@progress/kendo-drawing/dist/es/search/quad-root.js","../node_modules/@progress/kendo-drawing/dist/es/search/quad-node.js","../node_modules/@progress/kendo-drawing/dist/es/search/shapes-quad-tree.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/surface-cursor.js","../node_modules/@progress/kendo-drawing/dist/es/core/constants.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/utils/render-path.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/path-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/arc-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/circle-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/image-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/multi-path-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/rect-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/text-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/surface.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-attribute.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-all-attributes.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-style.js","../node_modules/@progress/kendo-drawing/dist/es/svg/node-map.js","../node_modules/@progress/kendo-drawing/dist/es/svg/constants.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-svg.js","../node_modules/@progress/kendo-drawing/dist/es/svg/node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/gradient-stop-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/gradient-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/linear-gradient-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/radial-gradient-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/clip-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/definition-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/root-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/path-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/arc-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/circle-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/group-node.js","../node_modules/@progress/kendo-drawing/dist/es/common/html-encode.js","../node_modules/@progress/kendo-drawing/dist/es/svg/image-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/multi-path-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/rect-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/text-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/surface.js","../node_modules/@progress/kendo-drawing/dist/es/surface-factory.js","../node_modules/@progress/kendo-drawing/dist/es/common/log-to-console.js","../node_modules/@progress/kendo-drawing/dist/es/surface.js","../node_modules/@progress/kendo-inputs-common/dist/es/common/drawing-utils.js","../node_modules/@progress/kendo-inputs-common/dist/es/signature/signature-pad.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/export-image.js","../node_modules/@progress/kendo-react-inputs/dist/es/signature/Signature.js","../node_modules/@progress/kendo-react-inputs/dist/es/signature/utils/index.js","../node_modules/@progress/kendo-react-inputs/dist/es/input/InputClearValue.js","../node_modules/@progress/kendo-react-inputs/dist/es/input/InputSeparator.js","../node_modules/@progress/kendo-react-inputs/dist/es/input/InputSuffix.js","../node_modules/@progress/kendo-react-inputs/dist/es/input/InputValidationIcon.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/result.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/stream.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/parsers.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/combinators.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/masking.service.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/MaskedTextBox.js","../node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/utils.js","../node_modules/@progress/kendo-react-inputs/dist/es/messages/index.js","../node_modules/@progress/kendo-react-inputs/dist/es/numerictextbox/NumericTextBox.js","../node_modules/@progress/kendo-react-inputs/dist/es/numerictextbox/utils/index.js","../node_modules/@progress/kendo-react-inputs/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-inputs/dist/es/radiobutton/RadioButton.js","../node_modules/@progress/kendo-react-inputs/dist/es/radiobutton/RadioGroup.js","../node_modules/@progress/kendo-react-inputs/dist/es/range-slider/RangeSlider.js","../node_modules/@progress/kendo-react-inputs/dist/es/range-slider/range-raducer.js","../node_modules/@progress/kendo-react-inputs/dist/es/rating/Rating.js","../node_modules/@progress/kendo-react-inputs/dist/es/rating/RatingItem.js","../node_modules/@progress/kendo-react-inputs/dist/es/rating/rating-reducer.js","../node_modules/@progress/kendo-react-inputs/dist/es/rating/utils/index.js","../node_modules/@progress/kendo-react-inputs/dist/es/slider/Slider.js","../node_modules/@progress/kendo-react-inputs/dist/es/slider/SliderLabel.js","../node_modules/@progress/kendo-react-inputs/dist/es/switch/Switch.js","../node_modules/@progress/kendo-react-inputs/dist/es/textarea/TextArea.js","../node_modules/@progress/kendo-react-inputs/dist/es/textbox/Textbox.js","../node_modules/@progress/kendo-react-intl/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlService.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationService.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/messages.js","../node_modules/@progress/kendo-react-intl/dist/es/globalization/GlobalizationContext.js","../node_modules/@progress/kendo-react-intl/dist/es/hooks/useInternationalization.js","../node_modules/@progress/kendo-react-intl/dist/es/hooks/useLocalization.js","../node_modules/@progress/kendo-react-intl/dist/es/intlUtils.js","../node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlProvider.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/loadMessages.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationProvider.js","../node_modules/@progress/kendo-react-labels/dist/es/Error.js","../node_modules/@progress/kendo-react-labels/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-labels/dist/es/Hint.js","../node_modules/@progress/kendo-react-labels/dist/es/Label.js","../node_modules/@progress/kendo-react-labels/dist/es/messages/index.js","../node_modules/@progress/kendo-react-labels/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-layout/dist/es/actionsheet/ActionSheet.js","../node_modules/@progress/kendo-react-layout/dist/es/actionsheet/ActionSheetContent.js","../node_modules/@progress/kendo-react-layout/dist/es/actionsheet/ActionSheetFooter.js","../node_modules/@progress/kendo-react-layout/dist/es/actionsheet/ActionSheetHeader.js","../node_modules/@progress/kendo-react-layout/dist/es/actionsheet/ActionSheetItem.js","../node_modules/@progress/kendo-react-layout/dist/es/appbar/AppBar.js","../node_modules/@progress/kendo-react-layout/dist/es/appbar/AppBarSection.js","../node_modules/@progress/kendo-react-layout/dist/es/appbar/AppBarSpacer.js","../node_modules/@progress/kendo-react-layout/dist/es/card/Card.js","../node_modules/@progress/kendo-react-layout/dist/es/card/CardBody.js","../node_modules/@progress/kendo-react-layout/dist/es/card/CardImage.js","../node_modules/@progress/kendo-react-layout/dist/es/card/interfaces/Enums.js","../node_modules/@progress/kendo-react-layout/dist/es/drawer/Drawer.js","../node_modules/@progress/kendo-react-layout/dist/es/drawer/DrawerContent.js","../node_modules/@progress/kendo-react-layout/dist/es/drawer/DrawerItem.js","../node_modules/@progress/kendo-react-layout/dist/es/drawer/DrawerNavigation.js","../node_modules/@progress/kendo-react-layout/dist/es/drawer/context/DrawerContext.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/itemsIdsUtils.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/consts.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/misc.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemLink.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemArrow.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemInternal.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItemInternalsList.js","../node_modules/@progress/kendo-react-layout/dist/es/splitter/SplitterBar.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/PanelBarItem.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/util.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/interfaces/NavigationAction.js","../node_modules/@progress/kendo-react-layout/dist/es/panelbar/PanelBar.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/MenuItem.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/prepareInputItemsForInternalWork.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/getNewItemIdUponKeyboardNavigation.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/DirectionHolder.js","../node_modules/@progress/kendo-react-layout/dist/es/splitter/messages/index.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/MouseOverHandler.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/components/Menu.js","../node_modules/@progress/kendo-react-layout/dist/es/menu/utils/hoverDelay.js","../node_modules/@progress/kendo-react-layout/dist/es/splitter/SplitterPane.js","../node_modules/@progress/kendo-react-layout/dist/es/splitter/Splitter.js","../node_modules/@progress/kendo-react-layout/dist/es/card/CardHeader.js","../node_modules/@progress/kendo-react-layout/dist/es/card/CardTitle.js","../node_modules/@progress/kendo-react-layout/dist/es/card/CardActions.js","../node_modules/@progress/kendo-react-layout/dist/es/card/CardSubtitle.js","../node_modules/@progress/kendo-react-layout/dist/es/card/CardFooter.js","../node_modules/@progress/kendo-react-layout/dist/es/card/Avatar.js","../node_modules/@progress/kendo-react-layout/dist/es/stepper/messages/index.js","../node_modules/@progress/kendo-react-layout/dist/es/stepper/context/StepperContext.js","../node_modules/@progress/kendo-react-layout/dist/es/stepper/Step.js","../node_modules/@progress/kendo-react-layout/dist/es/stepper/contants.js","../node_modules/@progress/kendo-react-layout/dist/es/stepper/Stepper.js","../node_modules/@progress/kendo-react-layout/dist/es/tilelayout/ResizeHandlers.js","../node_modules/@progress/kendo-react-layout/dist/es/tilelayout/InternalTile.js","../node_modules/@progress/kendo-react-layout/dist/es/tilelayout/TileLayout.js","../node_modules/@progress/kendo-react-layout/dist/es/bottomnavigation/models/utils.js","../node_modules/@progress/kendo-react-layout/dist/es/bottomnavigation/BottomNavigationItem.js","../node_modules/@progress/kendo-react-layout/dist/es/bottomnavigation/BottomNavigation.js","../node_modules/@progress/kendo-react-layout/dist/es/gridlayout/GridLayout.js","../node_modules/@progress/kendo-react-layout/dist/es/gridlayout/GridLayoutItem.js","../node_modules/@progress/kendo-react-layout/dist/es/breadcrumb/BreadcrumbListItem.js","../node_modules/@progress/kendo-react-layout/dist/es/breadcrumb/BreadcrumbDelimiter.js","../node_modules/@progress/kendo-react-layout/dist/es/breadcrumb/BreadcrumbLink.js","../node_modules/@progress/kendo-react-layout/dist/es/breadcrumb/BreadcrumbOrderedList.js","../node_modules/@progress/kendo-react-layout/dist/es/breadcrumb/Breadcrumb.js","../node_modules/@progress/kendo-react-layout/dist/es/timeline/TimelineCard.js","../node_modules/@progress/kendo-react-layout/dist/es/timeline/utils.js","../node_modules/@progress/kendo-react-layout/dist/es/timeline/TimelineHorizontal.js","../node_modules/@progress/kendo-react-layout/dist/es/timeline/TimelineVertical.js","../node_modules/@progress/kendo-react-layout/dist/es/timeline/Timeline.js","../node_modules/@progress/kendo-react-layout/dist/es/contextmenu/ContextMenu.js","../node_modules/@progress/kendo-react-layout/dist/es/expansionpanel/ExpansionPanel.js","../node_modules/@progress/kendo-react-layout/dist/es/expansionpanel/ExpansionPanelContent.js","../node_modules/@progress/kendo-react-layout/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-layout/dist/es/stacklayout/StackLayout.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStrip.js","../node_modules/@progress/kendo-react-animation/dist/es/Fade.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripContent.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripNavigation.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripNavigationItem.js","../node_modules/@progress/kendo-react-layout/dist/es/tabstrip/TabStripTab.js","../node_modules/@progress/kendo-react-pdf/dist/es/KendoDrawingAdapter.js","../node_modules/@progress/kendo-react-pdf/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-pdf/dist/es/PDFExport.js","../node_modules/@progress/kendo-react-pdf/dist/es/PDFMargin.js","../node_modules/@progress/kendo-react-pdf/dist/es/getPageMargin.js","../node_modules/@progress/kendo-react-pdf/dist/es/common/dom-queries.js","../node_modules/@progress/kendo-react-pdf/dist/es/grid/grid-query.js","../node_modules/@progress/kendo-react-pdf/dist/es/common/utils.js","../node_modules/@progress/kendo-react-pdf/dist/es/grid/export-element.js","../node_modules/@progress/kendo-react-pdf/dist/es/grid/provideSaveGridPDF.js","../node_modules/@progress/kendo-react-pdf/dist/es/grid/GridPDFExport.js","../node_modules/@progress/kendo-react-pdf/dist/es/common/table-query.js","../node_modules/@progress/kendo-react-pdf/dist/es/treelist/export-element.js","../node_modules/@progress/kendo-react-pdf/dist/es/treelist/provideSaveTreeListPDF.js","../node_modules/@progress/kendo-react-pdf/dist/es/treelist/TreeListPDFExport.js","../node_modules/@progress/kendo-react-pdf/dist/es/savePDF.js","../node_modules/@progress/kendo-react-popup/dist/es/animation.js","../node_modules/@progress/kendo-popup-common/dist/es/align-point.js","../node_modules/@progress/kendo-popup-common/dist/es/align.js","../node_modules/@progress/kendo-popup-common/dist/es/collision.js","../node_modules/@progress/kendo-popup-common/dist/es/restrict-to-view.js","../node_modules/@progress/kendo-popup-common/dist/es/utils.js","../node_modules/@progress/kendo-popup-common/dist/es/owner-document.js","../node_modules/@progress/kendo-popup-common/dist/es/window.js","../node_modules/@progress/kendo-popup-common/dist/es/document.js","../node_modules/@progress/kendo-popup-common/dist/es/scrollbar-width.js","../node_modules/@progress/kendo-popup-common/dist/es/window-viewport.js","../node_modules/@progress/kendo-popup-common/dist/es/scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/offset.js","../node_modules/@progress/kendo-popup-common/dist/es/element-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/offset-parent.js","../node_modules/@progress/kendo-popup-common/dist/es/offset-parent-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/parent-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/position.js","../node_modules/@progress/kendo-popup-common/dist/es/parents.js","../node_modules/@progress/kendo-popup-common/dist/es/siblings.js","../node_modules/@progress/kendo-popup-common/dist/es/dom-utils.js","../node_modules/@progress/kendo-popup-common/dist/es/add-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/bounding-offset.js","../node_modules/@progress/kendo-popup-common/dist/es/position-with-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/remove-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/sibling-container.js","../node_modules/@progress/kendo-popup-common/dist/es/align-element.js","../node_modules/@progress/kendo-popup-common/dist/es/position-element.js","../node_modules/@progress/kendo-react-popup/dist/es/util.js","../node_modules/@progress/kendo-react-popup/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-popup/dist/es/PopupWithoutContext.js","../node_modules/@progress/kendo-react-popup/dist/es/Popup.js","../node_modules/@progress/kendo-react-animation/dist/es/hooks/useAnimation.js","../node_modules/@progress/kendo-react-progressbars/dist/es/common/utils.js","../node_modules/@progress/kendo-react-progressbars/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-progressbars/dist/es/progressbar/ProgressBar.js","../node_modules/@progress/kendo-react-progressbars/dist/es/progressbar/hooks/usePrevious.js","../node_modules/@progress/kendo-react-progressbars/dist/es/common/constants.js","../node_modules/@progress/kendo-svg-icons/dist/index.es.js","../node_modules/@reduxjs/toolkit/src/query/core/apiState.ts","../node_modules/@reduxjs/toolkit/src/query/utils/joinUrls.ts","../node_modules/@reduxjs/toolkit/src/query/utils/isAbsoluteUrl.ts","../node_modules/@reduxjs/toolkit/src/query/utils/flatten.ts","../node_modules/@reduxjs/toolkit/src/query/utils/copyWithStructuralSharing.ts","../node_modules/@reduxjs/toolkit/src/query/fetchBaseQuery.ts","../node_modules/@reduxjs/toolkit/src/query/HandledError.ts","../node_modules/@reduxjs/toolkit/src/query/retry.ts","../node_modules/@reduxjs/toolkit/src/query/core/setupListeners.ts","../node_modules/@reduxjs/toolkit/src/query/utils/isNotNullish.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildInitiate.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildThunks.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildSlice.ts","../node_modules/@reduxjs/toolkit/src/query/utils/isOnline.ts","../node_modules/@reduxjs/toolkit/src/query/utils/isDocumentVisible.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildSelectors.ts","../node_modules/@reduxjs/toolkit/src/query/createApi.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/cacheCollection.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/batchActions.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/invalidationByTags.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/polling.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/cacheLifecycle.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/queryLifecycle.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/devMiddleware.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/windowEventHandling.ts","../node_modules/@reduxjs/toolkit/src/query/core/module.ts","../node_modules/@reduxjs/toolkit/src/query/core/index.ts","../node_modules/redux-thunk/es/index.js","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/isPlainObject.ts","../node_modules/@reduxjs/toolkit/src/tsHelpers.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts","../node_modules/@reduxjs/toolkit/src/matchers.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/index.ts","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-dom/server.browser.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/utils/useSyncExternalStore.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/connect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/utils/shallowEqual.js","../node_modules/react-redux/es/index.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/node_modules/react-is/index.js","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/redux/es/redux.js","../node_modules/reselect/es/defaultMemoize.js","../node_modules/reselect/es/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","../node_modules/use-sync-external-store/shim/index.js","../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/plugins/es5.ts","../node_modules/immer/src/plugins/patches.ts","../node_modules/immer/src/immer.ts","../node_modules/immer/src/utils/env.ts","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","components/AuthGuard.tsx","components/AvatarButton.tsx","components/ApplicationBar.tsx","components/AgenciesGrid.tsx","components/LeafletsGrid.tsx","components/UserGuideGrid.tsx","components/PersonsGrid.tsx","components/ServicesGrid.tsx","components/FindingsGrid.tsx","components/ApplicationDrawer.tsx","components/Home.tsx","helpers/fetch-wrapper.ts","components/Login.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { Field } from \"@progress/kendo-react-form\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport { DropDownListChangeEvent } from \"@progress/kendo-react-dropdowns\";\r\nimport {\r\n Form,\r\n FormElement,\r\n FormRenderProps,\r\n FormSubmitClickEvent,\r\n} from \"@progress/kendo-react-form\";\r\nimport {\r\n Toolbar,\r\n Button,\r\n} from \"@progress/kendo-react-buttons\";\r\n\r\nimport { FormInput, FormCheckbox } from \"./FormComponents\";\r\nimport { requiredValidator, emailValidator, phoneValidator, userNameValidator } from \"./validators\";\r\n\r\nimport { useNewAgencyMutation } from '../store/sunbright-api';\r\n\r\nimport { useAppSelector } from \"../store/store\";\r\n\r\n\r\nexport interface AgencyNewProps {\r\n agencyData?: any;\r\n onReturn: any;\r\n}\r\nconst AgencyNew = ({\r\n agencyData,\r\n onReturn,\r\n}: AgencyNewProps) => {\r\n\r\n const auth = useAppSelector((state: any) => state.auth);\r\n const personID = (auth && (auth.user !== undefined) && (auth.user.id !== undefined)) ? auth.user.id : -1;\r\n\r\n const [newAgency, response] = useNewAgencyMutation();\r\n\r\n const PersonNewForm = React.useRef(null);\r\n\r\n const submitForm = (event: FormSubmitClickEvent) => {\r\n\r\n const { isValid } = event;\r\n\r\n if (isValid) {\r\n const postExam = PersonNewForm.current.values;\r\n\r\n postExam.uid = agencyData ? agencyData.uid : 0;\r\n\r\n newAgency(postExam)\r\n .unwrap()\r\n .then((payload) => { })\r\n .catch((error) => {\r\n console.log(error)\r\n });\r\n onReturn(true);\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n (\r\n
\r\n \r\n \r\n Submit\r\n \r\n (onReturn ? onReturn(false) : null)}\r\n >\r\n Cancel\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n )}\r\n />\r\n \r\n
\r\n );\r\n}\r\nexport default AgencyNew;","import * as React from \"react\";\r\nimport {\r\n Form,\r\n Field,\r\n FormElement,\r\n FormRenderProps,\r\n FieldWrapper,\r\n} from \"@progress/kendo-react-form\";\r\nimport {\r\n Toolbar,\r\n Button,\r\n ButtonGroup,\r\n} from \"@progress/kendo-react-buttons\";\r\n\r\nimport { Label } from \"@progress/kendo-react-labels\";\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\n\r\nimport InlineExamsGrid from './Exam/InlineExamsGrid'\r\nimport InlinePersonsGrid from './InlinePersonsGrid'\r\nimport InlinePetsGrid from './InlinePetsGrid'\r\n\r\nimport AgencyNew from './AgencyNew'\r\nimport NavigateToLogin from \"./NavigateToLogin\";\r\n\r\nimport { useAppSelector } from \"../store/store\";\r\nimport { useGetAgencyQuery } from '../store/sunbright-api';\r\n\r\nexport interface AgencyViewProps {\r\n agencyID: string;\r\n viewOnly: boolean;\r\n returnLabel: string;\r\n onReturn?: any;\r\n}\r\n\r\nconst AgencyView = ({\r\n agencyID,\r\n viewOnly,\r\n returnLabel,\r\n onReturn,\r\n}: AgencyViewProps) => {\r\n const auth = useAppSelector((state) => state.auth);\r\n const [canEdit, setCanEdit] = React.useState(auth && (auth.user !== undefined) && auth.user.role &&\r\n auth.user.role.includes(\"Admin\") && !viewOnly);\r\n\r\n const [isEdit, setIsEdit] = React.useState(false);\r\n\r\n const { data, error, isLoading } = useGetAgencyQuery(agencyID);\r\n\r\n const [agencyData, setAgencyData] = React.useState(null);\r\n\r\n const [formHeight, setFormHeight] = React.useState(\"600px\");\r\n\r\n const handleResize = () => {\r\n setFormHeight((window.innerHeight - 110) + \"px\");\r\n };\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n }, []);\r\n\r\n React.useEffect(() => {\r\n setFormHeight((window.innerHeight - 110) + \"px\");\r\n\r\n if (data) {\r\n setAgencyData(data);\r\n }\r\n }, [data]);\r\n\r\n const editReturned = (refresh: boolean) => {\r\n setIsEdit(false);\r\n if (refresh) {\r\n setAgencyData(null);\r\n }\r\n }\r\n\r\n return (\r\n \r\n
\r\n {error ? () : isLoading ? : agencyData ? (\r\n
\r\n \r\n \r\n onReturn() }\r\n >\r\n {returnLabel}\r\n \r\n \r\n \r\n {canEdit && (\r\n
\r\n \r\n {canEdit && setIsEdit(true)}>\r\n Edit\r\n }\r\n \r\n Print\r\n \r\n \r\n
)}\r\n {isEdit ?\r\n \r\n editReturned(refresh)}\r\n />\r\n \r\n :\r\n (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n Case Workers\r\n \r\n Exams\r\n \r\n Pets\r\n \r\n
\r\n )}\r\n />\r\n }\r\n
)\r\n :\r\n null\r\n }\r\n
\r\n \r\n );\r\n};\r\nexport default AgencyView;\r\n","import * as React from \"react\";\r\nimport {\r\n Toolbar,\r\n Button,\r\n ButtonGroup,\r\n} from \"@progress/kendo-react-buttons\";\r\nimport {\r\n Form,\r\n Field,\r\n FormElement,\r\n FormRenderProps,\r\n FormSubmitClickEvent,\r\n} from \"@progress/kendo-react-form\";\r\n\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport { requiredValidator } from \"./validators\";\r\n\r\nimport { FormDatePicker, FormDropDownList, FormInput, FormCheckbox } from \"./FormComponents\";\r\n\r\nimport { useNewFollowUpMutation } from '../store/sunbright-api';\r\n\r\nconst clinicTypes = [\r\n \"One Health Wellness Clinic\",\r\n \"Pet Fair & People Care\",\r\n \"Spay Neuter Clinic\",\r\n \"Booster Clinic\",\r\n];\r\n\r\nexport interface EventNewProps {\r\n followUpData?: any;\r\n onReturn: any;\r\n}\r\n\r\nconst EventNew = ({\r\n followUpData,\r\n onReturn,\r\n}: EventNewProps) => {\r\n\r\n const [newFollowUp, response] = useNewFollowUpMutation();\r\n\r\n const FollowUpForm = React.useRef(null);\r\n\r\n const [formHeight, setFormHeight] = React.useState(\"100px\");\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n setFormHeight((window.innerHeight - 90) + \"px\");\r\n }, []);\r\n\r\n const handleResize = () => {\r\n setFormHeight((window.innerHeight - 90) + \"px\");\r\n };\r\n\r\n const findingValues: any = (followUpData: any) => {\r\n\r\n if (followUpData && followUpData.fields && (followUpData.fields != null)) {\r\n\r\n const oneHealthFields: number[] = [354, 355, 356, 357, 358, 359, 360, 378, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 378, 380, 381, 383];\r\n const hoursFields: number[] = [349, 350, 351, 352, 353];\r\n var findings = followUpData.fields.reduce(function (result: any, field: any) {\r\n var answerKey: string = \"\";\r\n\r\n if (field.t === \"grid\") {\r\n for (field of field.results) {\r\n if (oneHealthFields.includes(field.findingID)) {\r\n result[\"A\" + field.findingID] = field.a;\r\n result[\"B\" + field.findingID] = true;\r\n } else if (hoursFields.includes(field.findingID)) {\r\n result[\"A\" + field.findingID] = field.a;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }, {})\r\n\r\n findings.starttime = new Date(followUpData.starttime);\r\n findings.type = followUpData.type;\r\n findings.host = followUpData.host;\r\n\r\n return findings;\r\n } else {\r\n return [];\r\n }\r\n\r\n\r\n };\r\n\r\n const submitForm = (event: FormSubmitClickEvent) => {\r\n\r\n const { isValid } = event;\r\n\r\n if (isValid) {\r\n const postFollowUp = FollowUpForm.current.values;\r\n\r\n postFollowUp.uid = followUpData ? followUpData.id : 0;\r\n\r\n newFollowUp(postFollowUp)\r\n .unwrap()\r\n .then((payload) => { onReturn(true) })\r\n .catch((error) => {\r\n console.log(error)\r\n });\r\n }\r\n }\r\n\r\n return (\r\n \r\n\r\n \r\n (\r\n
\r\n \r\n \r\n Submit\r\n \r\n \r\n onReturn(false)}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n Event\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n One Health Services\r\n \r\n\r\n
\r\n \r\n \r\n \r\n Offered\r\n Number of Engagements\r\n \r\n
\r\n \r\n\r\n \r\n Smoking Cessation (NRT - patches, gums, lozenges, sprays)\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Dental/Oral care, supplies, consultations, or referrals\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Harms reduction (naloxone, clean kits, needle exchange, safe inhalation, etc.)\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Immunizations - influenza\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Immunizations - COVID\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Immunizations - TDAP, pneumococcal, MMR or other \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Primary nursing care (wound, blood pressure, consult, referral to community)\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Zoonotic infectious disease information / counselling (ticks, lyme dz,rabies)\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Personal safety / security\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Pharmacist consult\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Sexual health/testing \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Healthy eating\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Active living\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Social services (social worker consult, housing support, community referral)\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Mental health support (counselling, support in vet apppointment, referral)\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Hand care\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Foot care\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Hair cuts\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Tax preparation with CRA\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Vision support (OneSight): free eyeglasses / vouchers\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Ticket defense / legal advice\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n Clothing distribution\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n \r\n Hours\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n )}\r\n />\r\n
\r\n \r\n );\r\n};\r\nexport default EventNew;\r\n","import * as React from \"react\";\r\nimport {\r\n Form,\r\n Field,\r\n FormElement,\r\n FormRenderProps,\r\n FieldWrapper,\r\n} from \"@progress/kendo-react-form\";\r\nimport { Editor } from \"@progress/kendo-react-editor\";\r\nimport {\r\n Grid,\r\n GridColumn,\r\n GridCellProps,\r\n} from \"@progress/kendo-react-grid\";\r\nimport {\r\n Button, ButtonGroup, Toolbar} from \"@progress/kendo-react-buttons\";\r\nimport {\r\n TabStrip,\r\n TabStripSelectEventArguments,\r\n TabStripTab,\r\n} from \"@progress/kendo-react-layout\";\r\n\r\nimport { Label } from \"@progress/kendo-react-labels\";\r\nimport { TextBox, TextArea } from \"@progress/kendo-react-inputs\";\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\n\r\nimport NavigateToLogin from \"./NavigateToLogin\";\r\n\r\nimport { useAppSelector } from \"../store/store\";\r\nimport { useGetFollowUpQuery } from '../store/sunbright-api';\r\n\r\nimport EventNew from './EventNew'\r\nimport FollowupExamsGrid from './FollowupExamsGrid'\r\n\r\nconst info = [\r\n {\r\n t: \"Clients/Pets\",\r\n text: \"Clients/Pets:\",\r\n h: \"40px\",\r\n gap: \"0px\"\r\n },\r\n {\r\n t: \"One Health Services\",\r\n text: \"One Health Services:\",\r\n h: \"40px\",\r\n gap: \"0px\"\r\n },\r\n {\r\n t: \"Hours\",\r\n text: \"Hours:\",\r\n h: \"40px\",\r\n gap: \"0px\"\r\n },\r\n]\r\nexport interface EventViewProps {\r\n eventID: number;\r\n onReturn?: any;\r\n}\r\n\r\nconst toReactComponent = (html: any) => \r\n\r\nconst cellWithHtml = (props: GridCellProps) => {\r\n const fieldVal = props.field ? props.dataItem[props.field] : null;\r\n\r\n const color = (fieldVal && props.dataItem.alert) ? (fieldVal.includes(props.dataItem.alert) ? \"red\" : \"green\") : \"\";\r\n const style = { color: color };\r\n\r\n let displayVal = toReactComponent(fieldVal);\r\n\r\n return (\r\n \r\n {displayVal}\r\n \r\n );\r\n};\r\n\r\nconst EventView = ({\r\n eventID,\r\n onReturn\r\n}: EventViewProps) => {\r\n const auth = useAppSelector((state) => state.auth);\r\n const [canEdit, setCanEdit] = React.useState(auth && (auth.user !== undefined) && auth.user.role &&\r\n auth.user.role.includes(\"Admin\"));\r\n\r\n const [isEdit, setIsEdit] = React.useState(false);\r\n\r\n const { data: followup, error: followupError, isLoading: followupLoading } = useGetFollowUpQuery(eventID);\r\n\r\n const [followUpData, setFollowUpData] = React.useState(null);\r\n\r\n const [selectedTab, setSelectedTab] = React.useState(0);\r\n const followupTabStripRef = React.useRef(null);\r\n const [tabStripHeight, setTabStripHeight] = React.useState(\"600px\");\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n }, []);\r\n React.useEffect(() => {\r\n setTabStripHeight((window.innerHeight - 120) + \"px\");\r\n }, [followup]);\r\n\r\n const handleResize = () => {\r\n setTabStripHeight((window.innerHeight - 120) + \"px\");\r\n };\r\n\r\n const handleSelectTab = (e: TabStripSelectEventArguments) => {\r\n setSelectedTab(e.selected);\r\n if (followupTabStripRef && followupTabStripRef.current && followupTabStripRef.current._element && followupTabStripRef.current._element.children)\r\n followupTabStripRef.current._element.children[1].scrollTop = 0;\r\n };\r\n\r\n React.useEffect(() => {\r\n if (followup) {\r\n setFollowUpData(followup);\r\n }\r\n }, [followup]);\r\n\r\n const editReturned = (refresh: boolean) => {\r\n setIsEdit(false);\r\n if (refresh) {\r\n setFollowUpData(null);\r\n }\r\n }\r\n\r\n return (\r\n \r\n {followupError ? () : followupLoading ? () : followUpData ?\r\n (
\r\n \r\n \r\n onReturn()}\r\n >\r\n Return to Follow Up\r\n \r\n \r\n \r\n \r\n \r\n\r\n {canEdit && (\r\n
\r\n \r\n {canEdit &&\r\n setIsEdit(true)}>\r\n Edit\r\n \r\n }\r\n \r\n
)}\r\n {isEdit ?\r\n \r\n editReturned(refresh)}\r\n />\r\n \r\n :\r\n
\r\n (\r\n \r\n
\r\n {followUpData.fields.map((field: any) => {\r\n return ((field.t === \"info\") ?\r\n (
\r\n \r\n
)\r\n :\r\n ((field.t === \"finding\") ?\r\n (\r\n
\r\n \r\n \r\n
\r\n
) :\r\n (\r\n \r\n \r\n )\r\n )\r\n )\r\n })}\r\n
\r\n
\r\n )}\r\n />\r\n
\r\n }\r\n
\r\n \r\n \r\n \r\n \r\n
) : null}\r\n
\r\n );\r\n};\r\nexport default EventView;\r\n","import * as React from \"react\";\r\n\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\n\r\nimport {\r\n Grid,\r\n GridColumn,\r\n GridSelectionChangeEvent,\r\n getSelectedState,\r\n} from \"@progress/kendo-react-grid\";\r\n\r\nimport EventNew from \"./EventNew\";\r\nimport EventView from \"./EventView\";\r\n\r\nimport { useGetFollowUpsQuery } from '../store/sunbright-api';\r\n\r\nconst DATA_ITEM_KEY = \"uid\";\r\nconst SELECTED_FIELD = \"selected\";\r\n\r\nconst EventsGrid = (props: any) => {\r\n const { data: followups, error: followupsError, isLoading: followupsLoading } = useGetFollowUpsQuery(\"\");\r\n\r\n const [gridHeight, setGridHeight] = React.useState(\"600px\");\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n }, []);\r\n React.useEffect(() => {\r\n setGridHeight((window.innerHeight - 120) + \"px\");\r\n }, [followups]);\r\n\r\n const handleResize = () => {\r\n setGridHeight((window.innerHeight - 100) + \"px\");\r\n };\r\n\r\n const [newFollowUp, setNewFollowUp] = React.useState(false);\r\n\r\n const [selectedState, setSelectedState] = React.useState<{\r\n [id: string]: boolean | number[];\r\n }>({});\r\n\r\n const [selectedUID, setSelectedUID] = React.useState(\"\");\r\n\r\n const handleSelectionChange = (e: GridSelectionChangeEvent) => {\r\n const newState = getSelectedState({\r\n event: e,\r\n selectedState: selectedState,\r\n dataItemKey: DATA_ITEM_KEY,\r\n })\r\n setSelectedState(newState);\r\n\r\n setSelectedUID(Object.keys(newState)[0]);\r\n };\r\n\r\n\r\n return (\r\n \r\n {(selectedUID.length !== 0) ?\r\n (< EventView\r\n eventID={+selectedUID}\r\n onReturn={() => setSelectedUID(\"\")}\r\n />\r\n ) :\r\n (newFollowUp ?\r\n (
\r\n setNewFollowUp(false)}\r\n />\r\n
) :\r\n (
\r\n
Event Follow Up
\r\n {followupsError ? (<>Not Authorized) : followupsLoading ? : followups ? (\r\n
\r\n setNewFollowUp(true)}\r\n style={{ position: \"absolute\", top: \"46px\", right: \"64px\", width: \"128px\", zIndex:\"99\" }}>\r\n New Follow Up\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n ) : null}\r\n
)\r\n )}\r\n
\r\n );\r\n}\r\nexport default EventsGrid;\r\n","import * as React from \"react\";\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\nimport { Field } from \"@progress/kendo-react-form\";\r\n\r\nimport { FormMultiSelect, FormInput } from \"../FormComponents\";\r\n\r\nimport NavigateToLogin from \"../NavigateToLogin\";\r\n\r\nimport { useGetServicesQuery } from '../../store/sunbright-api';\r\n\r\nconst ExamNewServices = () => {\r\n\r\n const requestedServices: string[] = [\"Spay Neuter Request\", \"External Referral Request\", \"Booster Request\"];\r\n\r\n const { data, error, isLoading } = useGetServicesQuery(\"\");\r\n\r\n return (\r\n \r\n {error ? () : isLoading ? : data ? (\r\n
\r\n \r\n \r\n Services Performed\r\n \r\n Select any services that were not performed by a CVO veterinary team as part of an exam.\r\n\r\n Click here when done}\r\n data={data.map((item: any) => item.name)}\r\n />\r\n \r\n \r\n
) : null}\r\n
\r\n );\r\n}\r\nexport default ExamNewServices;\r\n\r\n","export interface FloatingContainerLabelProps {\r\n label?: string | React.ReactNode;\r\n}\r\n\r\nconst FloatingContainerLabel = ({\r\n label,\r\n children,\r\n ...props\r\n}: FloatingContainerLabelProps & React.FieldsetHTMLAttributes) => {\r\n return (\r\n \r\n \r\n {label}\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default FloatingContainerLabel;\r\n","import { Chip } from \"@progress/kendo-react-buttons\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport { Field } from \"@progress/kendo-react-form\";\r\n\r\nimport { FormDropDownList, FormInput, FormDatePicker } from \"../FormComponents\";\r\nimport FloatingContainerLabel from \"../FloatingContainerLabel\";\r\nimport { requiredValidator } from \"../validators\";\r\n\r\nexport interface ExamVaccineRowProps {\r\n vac: any;\r\n idx: number;\r\n species: string;\r\n vaccines: any[];\r\n}\r\n\r\nexport const ExamVaccineRow = ({\r\n vac,\r\n idx,\r\n species,\r\n vaccines,\r\n}: ExamVaccineRowProps) => {\r\n\r\n const label = (\r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import * as React from \"react\";\r\n\r\nimport { Field, FormRenderProps } from \"@progress/kendo-react-form\";\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\n\r\nimport { FormDatePicker, FormTextArea } from \"../FormComponents\";\r\nimport { ExamVaccineRow } from \"./ExamVaccineRow\";\r\nimport { useGetVaccinesQuery } from '../../store/sunbright-api';\r\n\r\nimport { requiredValidator } from \"../validators\";\r\n\r\nexport interface ExamNewVaccinationsProps {\r\n species: string;\r\n vac2: string;\r\n vac3: string;\r\n vac4: string;\r\n}\r\n\r\ninterface Vaccine {\r\n type: string;\r\n tag: string;\r\n due: string;\r\n location: string;\r\n}\r\n\r\nconst ExamNewVaccinations = ({\r\n species,\r\n vac2, vac3, vac4,\r\n}: ExamNewVaccinationsProps) => {\r\n\r\n const speciesEnum = (species === \"Cat\") ? 1 : ((species === \"Dog\") ? 2 : 0);\r\n const { data: vaccines, error: vaccinesError, isLoading: vaccinesLoading } = useGetVaccinesQuery(speciesEnum);\r\n\r\n const allVaccines: Vaccine[] = [\r\n { type: \"A311\", tag: \"A312\", due: \"A313\", location: \"A314\" },\r\n { type: \"A315\", tag: \"A316\", due: \"A317\", location: \"A318\" },\r\n { type: \"A319\", tag: \"A320\", due: \"A321\", location: \"A322\" },\r\n { type: \"A341\", tag: \"A342\", due: \"A343\", location: \"A344\" },\r\n { type: \"A345\", tag: \"A346\", due: \"A347\", location: \"A348\" },\r\n ];\r\n\r\n const [showIndex, setShowIndex] = React.useState(vac4 ? 4 : (vac3 ? 3 : (vac2 ? 2 : 1) ));\r\n\r\n const addVaccine = () => {\r\n if (showIndex < 4) {\r\n setShowIndex(showIndex + 1);\r\n }\r\n }\r\n\r\n return (\r\n \r\n\r\n
\r\n \r\n \r\n Vaccines\r\n {(showIndex < 4) &&\r\n Add Vaccine\r\n \r\n }\r\n \r\n\r\n {allVaccines.filter((vac, idx) => (idx <= showIndex)).map((vac, idx) => (\r\n \r\n ))}\r\n\r\n \r\n Date\r\n \r\n \r\n \r\n Notes\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\nexport default ExamNewVaccinations;\r\n\r\n","import * as React from \"react\";\r\n\r\nimport { Field, FormRenderProps } from \"@progress/kendo-react-form\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport { FormDateTimePicker, FormDropDownList } from \"../FormComponents\";\r\nimport { DateTimePickerChangeEvent } from \"@progress/kendo-react-dateinputs/\"\r\n\r\nimport { useGetVetNamesQuery } from '../../store/sunbright-api';\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\n\r\nexport interface ExamNewScheduleProps {\r\n formRenderProps: FormRenderProps;\r\n}\r\n\r\nconst ExamNewSchedule = ({\r\n formRenderProps,\r\n}: ExamNewScheduleProps) => {\r\n\r\n const { data: vetnames, error: vetnamesError, isLoading: vetnamesLoading } = useGetVetNamesQuery(1);\r\n\r\n const handleFromTimeChange = (e: DateTimePickerChangeEvent) => {\r\n if (e.value) {\r\n formRenderProps.onChange(\"A334\", { value: e.value });\r\n }\r\n }\r\n\r\n const deleteFromTime = () => {\r\n formRenderProps.onChange(\"A333\", { value: \"\" });\r\n formRenderProps.onChange(\"A334\", { value: \"\" });\r\n }\r\n const deleteToTime = () => {\r\n formRenderProps.onChange(\"A334\", { value: \"\" });\r\n }\r\n\r\n return (\r\n \r\n\r\n
\r\n\r\n \r\n \r\n Schedule\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\nexport default ExamNewSchedule;\r\n\r\n","import * as React from \"react\";\r\nimport {\r\n Toolbar,\r\n Button,\r\n ButtonGroup,\r\n} from \"@progress/kendo-react-buttons\";\r\nimport {\r\n Form,\r\n FormElement,\r\n FormRenderProps,\r\n FormSubmitClickEvent,\r\n} from \"@progress/kendo-react-form\";\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\nimport { SvgIcon } from \"@progress/kendo-react-common\";\r\nimport { printIcon } from \"@progress/kendo-svg-icons\";\r\n\r\nimport ExamNewClientPet from \"./ExamNewClientPet\";\r\nimport ExamNewServices from \"./ExamNewServices\";\r\nimport ExamNewEligibility from \"./ExamNewEligibility\";\r\nimport ExamNewWaivers from \"./ExamNewWaivers\";\r\nimport ExamNewQuestionnaire from \"./ExamNewQuestionnaire\";\r\nimport ExamNewRecord from \"./ExamNewRecord\";\r\nimport ExamNewVaccinations from \"./ExamNewVaccinations\";\r\nimport ExamNewSchedule from \"./ExamNewSchedule\";\r\nimport ExamNewComments from \"./ExamNewComments\";\r\n\r\nimport { useEditExamMutation } from '../../store/sunbright-api';\r\n\r\nexport interface ExamEditProps {\r\n examID: string;\r\n examData: any;\r\n category: string;\r\n fields: any,\r\n onReturn?: any;\r\n}\r\n\r\nconst ExamEdit = ({\r\n examID,\r\n examData,\r\n category,\r\n fields,\r\n onReturn,\r\n}: ExamEditProps) => {\r\n\r\n const [editExam, response] = useEditExamMutation();\r\n\r\n const ExamEditForm = React.useRef(null);\r\n\r\n const [formHeight, setFormHeight] = React.useState(\"100px\");\r\n\r\n const [isError, setIsError] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n setFormHeight((window.innerHeight - 90) + \"px\");\r\n }, []);\r\n\r\n const handleResize = () => {\r\n setFormHeight((window.innerHeight - 90) + \"px\");\r\n };\r\n\r\n const examValues: any = (examData: any) => {\r\n const dateOptions = { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' };\r\n\r\n return {\r\n status: examData.status,\r\n opened: examData.opened ? examData.opened.toLocaleDateString(\"en-US\", dateOptions).substring(5) : \"\",\r\n submitted: examData.submitted ? examData.submitted.toLocaleDateString(\"en-US\", dateOptions).substring(5) : \"\",\r\n ownerfirst: examData.ownerfirst,\r\n ownerlast: examData.ownerlast,\r\n ownermobile: examData.ownermobile,\r\n owneremail: examData.owneremail,\r\n owneraddress1: examData.owneraddress1,\r\n ownercity: examData.ownercity,\r\n ownerprovince: examData.ownerprovince,\r\n ownerpostalcode: examData.ownerpostalcode,\r\n petname: examData.petname,\r\n petspecies: examData.petspecies,\r\n petbreed: examData.petbreed,\r\n petbreedother: examData.petbreedother,\r\n petcolor: examData.petcolor,\r\n petdob: (examData.petdob && (examData.petdob.length > 0)) ? new Date(examData.petdob) : null,\r\n petgender: examData.petgender,\r\n petweight: examData.petweight,\r\n petemployee: examData.petemployee,\r\n petmicrochipref: examData.petmicrochipref,\r\n petmicrochiptag: examData.petmicrochiptag,\r\n petalert: examData.petalert,\r\n cwagency: examData.cwagency,\r\n cwname: examData.cwname,\r\n cwemail: examData.cwemail,\r\n vetname: examData.vetname,\r\n vetphone: examData.vetphone,\r\n vetaddress: examData.vetaddress,\r\n }\r\n }\r\n\r\n const findingValues: any = (fields: any) => {\r\n var defaultValues: any = {};\r\n\r\n const dateFields: number[] = [149, 200, 313, 317, 321, 333, 334, 336, 343, 347];\r\n const multiFields: number[] = [170, 171, 175, 387, 392, 182, 183,\r\n 199, 202, 206, 207, 209, 215, 218, 219, 231, 233, 236, 237, 324, 382];\r\n\r\n var findings = fields.reduce(function (result:any, field:any) {\r\n var answerKey: string = \"\";\r\n var answerKey2: string = \"\";\r\n\r\n if (field.t === \"finding\") {\r\n answerKey = \"A\" + field.result.findingID;\r\n\r\n if ((field.result.a.length === 0) && (defaultValues[answerKey])) {\r\n field.result.a = defaultValues[answerKey];\r\n }\r\n\r\n if (multiFields.includes(field.result.findingID)) {\r\n result[answerKey] = field.result.a.split(\" | \");\r\n }\r\n else if ((field.result.findingID === 311) || (field.result.findingID === 317)) {\r\n result[answerKey] = (field.result.a === \"Yes\");\r\n }\r\n else if (dateFields.includes(field.result.findingID)) {\r\n result[answerKey] = (field.result.a.length > 0) ? new Date(field.result.a) : \"\";\r\n }\r\n else {\r\n result[answerKey] = field.result.a;\r\n }\r\n result[\"N\" + field.result.findingID] = field.result.n;\r\n }\r\n else if (field.t === \"grid\") {\r\n for (field of field.results) {\r\n answerKey = \"A\" + field.findingID;\r\n\r\n if ((field.a.length === 0) && (defaultValues[answerKey])) {\r\n field.a = defaultValues[answerKey];\r\n }\r\n\r\n if (dateFields.includes(field.findingID)) {\r\n result[answerKey] = (field.a.length > 0) ? new Date(field.a) : \"\";\r\n } else if (multiFields.includes(field.findingID)) {\r\n result[answerKey] = field.a.split(\" | \");\r\n }\r\n else {\r\n result[answerKey] = field.a;\r\n }\r\n result[\"N\" + field.findingID] = field.n;\r\n }\r\n }\r\n else if (field.t === \"grid2\") {\r\n\r\n for (field of field.results) {\r\n answerKey = \"A\" + field.findingID;\r\n answerKey2 = \"A\" + (field.findingID + 1);\r\n result[answerKey] = (field.a1 === \"Yes\");\r\n result[answerKey2] = (field.a2 === \"Yes\");\r\n }\r\n }\r\n\r\n return result;\r\n }, {})\r\n\r\n if (Object.keys(findings).length === 0) {\r\n findings[\"A203\"] = \"Vaccination and Wellness exam\";\r\n findings[\"A204\"] = \"No\";\r\n findings[\"A208\"] = \"No health concerns identified by client\";\r\n findings[\"A209\"] = [\"BAR (bright, alert, responsive)\"];\r\n findings[\"A210\"] = \"Normal\";\r\n findings[\"A211\"] = \"Normal\";\r\n findings[\"A212\"] = \"Normal\";\r\n findings[\"A213\"] = \"Normal\";\r\n findings[\"A214\"] = \"Normal\";\r\n findings[\"A215\"] = [\"Normal\"];\r\n findings[\"A216\"] = \"No\";\r\n findings[\"A217\"] = \"No\";\r\n findings[\"A218\"] = [\"None\"];\r\n findings[\"A219\"] = [\"None\"];\r\n findings[\"A220\"] = \"2\";\r\n findings[\"A225\"] = (examData.petSpecies === \"Cat\") ? \"5\" : \"4-5\";\r\n findings[\"A229\"] = \"Less than 2\";\r\n findings[\"A230\"] = \"Normal\";\r\n findings[\"A231\"] = [\"Normal\"];\r\n findings[\"A233\"] = [\"Normal\"];\r\n findings[\"A234\"] = \"0\";\r\n findings[\"A235\"] = \"No\";\r\n findings[\"A236\"] = [\"Normal\"];\r\n findings[\"A237\"] = [\"Normal\"];\r\n findings[\"A238\"] = \"Normal\";\r\n findings[\"A239\"] = \"Normal\";\r\n findings[\"A240\"] = \"Normal\";\r\n findings[\"A241\"] = \"No\";\r\n findings[\"A242\"] = \"Normal\";\r\n findings[\"A243\"] = \"Normal\";\r\n findings[\"A244\"] = \"Normal\";\r\n findings[\"A245\"] = \"Normal\";\r\n findings[\"A246\"] = \"Healthy, OK to vaccinate\";\r\n findings[\"A247\"] = \"No problems documented\";\r\n findings[\"A248\"] = \"Drug Name: \\rDrug concentration (mg): \\rDose administered (in mg, mL, or tube): \\rRoute of Administration (oral, topical, injection SC, injection IM):\";\r\n findings[\"A249\"] = \"Drug Name: \\rDrug concentration (mg): \\rDirections for owner, including route of administration: \\rNumber dispensed (in mL, tablets, or tubes): \\rDuration of therapy (days):\";\r\n findings[\"A250\"] = \"Recheck at a future Outreach clinic\";\r\n findings[\"A255\"] = true;\r\n findings[\"A257\"] = true;\r\n findings[\"A259\"] = true;\r\n findings[\"A261\"] = true;\r\n findings[\"A263\"] = true;\r\n findings[\"A379\"] = \"No\";\r\n }\r\n\r\n findings[\"A310\"] = \"Private\"; // Comments (default)\r\n findings[\"N310-prev\"] = findings[\"N310\"];\r\n findings[\"N310\"] = \"\"; // Show but do not change previous comments\r\n\r\n return findings;\r\n };\r\n\r\n const [initialValues, setInitialValues] = React.useState((category === \"Info\") ? examValues(examData) : findingValues(fields));\r\n\r\n const postForm = (saveOnly: boolean) => {\r\n const postExam = ExamEditForm.current.values;\r\n postExam.Category = category;\r\n postExam.ExamID = examID;\r\n postExam.OwnerID = examData.ownerid;\r\n postExam.PetID = examData.petid;\r\n if (saveOnly) {\r\n postExam.Action = \"Save\";\r\n }\r\n\r\n editExam(postExam)\r\n .unwrap()\r\n .then((payload) => { })\r\n .catch((error) => {\r\n console.log(error)\r\n });\r\n onReturn(true);\r\n }\r\n\r\n const saveForm = () => {\r\n postForm(true);\r\n }\r\n\r\n\r\n const submitForm = (event: FormSubmitClickEvent) => {\r\n\r\n const { isValid } = event;\r\n\r\n if (isValid) {\r\n postForm(false);\r\n }\r\n else {\r\n setIsError(true)\r\n }\r\n }\r\n\r\n return (\r\n \r\n\r\n {(isError) &&\r\n  Missing Fields
}\r\n onClose={(e) => setIsError(false)}>\r\n

\r\n Not all of the required fields have been entered.

Please review the entire form.\r\n

\r\n \r\n }\r\n\r\n \r\n (\r\n
\r\n \r\n {((true) && \r\n Submit\r\n )}\r\n \r\n {((category === \"ExamRecord\") && \r\n Save\r\n )}\r\n onReturn(false)}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n
\r\n \r\n {(category === \"Info\") && }\r\n {(category === \"Schedule\") && }\r\n {(category === \"Services\") && }\r\n {(category === \"Eligibility\") && }\r\n {(category === \"Waivers\") && }\r\n {(category === \"Questionnaire\") && }\r\n {(category === \"ExamRecord\") && }\r\n {(category === \"Vaccinations\") && }\r\n {(category === \"Comments\") && }\r\n \r\n
\r\n
\r\n )}\r\n />\r\n
\r\n \r\n );\r\n};\r\nexport default ExamEdit;\r\n","import * as React from \"react\";\r\n\r\nimport { Field } from \"@progress/kendo-react-form\";\r\nimport { UploadOnAddEvent } from '@progress/kendo-react-upload';\r\nimport {\r\n Form,\r\n FormElement,\r\n FormRenderProps,\r\n} from \"@progress/kendo-react-form\";\r\nimport {\r\n Grid,\r\n GridColumn,\r\n GridSelectionChangeEvent,\r\n getSelectedState,\r\n GridCellProps,\r\n} from \"@progress/kendo-react-grid\";\r\n\r\nimport { getter } from \"@progress/kendo-react-common\";\r\n\r\nimport { FormUpload } from \"../FormComponents\";\r\n\r\nimport { useUploadFileMutation } from '../../store/sunbright-api';\r\n\r\nexport interface ExamViewAttachmentsProps {\r\n examID: string;\r\n fields: any;\r\n category: string;\r\n}\r\n\r\n\r\nconst ExamViewAttachments = ({\r\n examID,\r\n fields,\r\n category,\r\n ...windowProps\r\n}: ExamViewAttachmentsProps) => {\r\n\r\n const linkCell = (props: GridCellProps) => {\r\n const filename = props.dataItem.Filename;\r\n const regionID = props.dataItem.RegionID;\r\n\r\n return (\r\n \r\n {filename}\r\n \r\n );\r\n };\r\n\r\n const [uploadFile, response] = useUploadFileMutation();\r\n\r\n const fileAdded = (e: UploadOnAddEvent) => {\r\n\r\n let file = e?.affectedFiles[0]?.getRawFile ? e?.affectedFiles[0]?.getRawFile() : undefined;\r\n var bodyFormData: any = new FormData();\r\n bodyFormData.append('file', file);\r\n bodyFormData.append('examID', examID);\r\n\r\n uploadFile(bodyFormData)\r\n .unwrap()\r\n .then((payload) => { })\r\n .catch((error) => {\r\n console.log(error)\r\n });\r\n } \r\n\r\n return (\r\n \r\n (\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n )}\r\n />\r\n

\r\n ({\r\n Filename: item.result.a,\r\n RegionID: item.result.n,\r\n }))}\r\n resizable={false}\r\n reorderable={false}\r\n size={\"small\"}\r\n >\r\n \r\n \r\n\r\n \r\n );\r\n};\r\nexport default ExamViewAttachments;\r\n","import * as React from \"react\";\r\nimport {\r\n Form,\r\n Field,\r\n FormElement,\r\n FormRenderProps,\r\n FieldWrapper,\r\n} from \"@progress/kendo-react-form\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nimport { Label } from \"@progress/kendo-react-labels\";\r\nimport { TextBox, TextArea } from \"@progress/kendo-react-inputs\";\r\nimport { Editor } from \"@progress/kendo-react-editor\";\r\nimport {\r\n Grid,\r\n GridColumn,\r\n} from \"@progress/kendo-react-grid\";\r\n\r\nexport interface FindingsProps {\r\n legend: string;\r\n fields: any;\r\n info: any[];\r\n formatFindingField: any;\r\n qWidth: string,\r\n cellWithHtml: any,\r\n}\r\n\r\nconst Findings = ({\r\n legend,\r\n fields,\r\n info,\r\n formatFindingField,\r\n qWidth,\r\n cellWithHtml,\r\n ...windowProps\r\n}: FindingsProps) => {\r\n\r\n return (\r\n \r\n

\r\n {legend}\r\n {fields.map((field: any) => {\r\n return ((field.t === \"info\") ?\r\n (
\r\n
\r\n
\r\n {(field.i && info[field.i - 1].text) ? info[field.i - 1].text : \"\"}\r\n
\r\n
)\r\n :\r\n ((field.t === \"finding\") ?\r\n (\r\n
\r\n \r\n \r\n
\r\n
) :\r\n ((field.t === \"grid\") ?\r\n (\r\n \r\n \r\n \r\n ) :\r\n (\r\n \r\n \r\n \r\n )\r\n )))\r\n })}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport interface ExamPDFProps {\r\n examData: any;\r\n info: any[];\r\n formatFindingField: any;\r\n qWidth: string,\r\n cellWithHtml: any,\r\n}\r\n\r\nconst ExamPDF = ({\r\n examData,\r\n info,\r\n formatFindingField,\r\n qWidth,\r\n cellWithHtml,\r\n ...windowProps\r\n}: ExamPDFProps) => {\r\n\r\n return (\r\n \r\n \r\n
\r\n \"CVO\"/\r\n
\r\n
\r\n
{examData.regionName + \" Community Veterinary Outreach Mobile\"}
\r\n
{examData.vetaddress}
\r\n
{\"Ph: \" + examData.vetphone}
\r\n
{\"email: \" + examData.regionEmail}
\r\n
\r\n
\r\n 0)) ? (new Date(examData.petdob)).toLocaleDateString() : null,\r\n petgender: examData.petgender,\r\n petweight: examData.petweight,\r\n petmicrochipref: examData.petmicrochipref,\r\n }}\r\n render={(formRenderProps: FormRenderProps) => (\r\n \r\n \r\n Owner\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n Pet\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n />\r\n\r\n
\r\n );\r\n};\r\nexport default ExamPDF;\r\n","import * as React from \"react\";\r\nimport {\r\n Form,\r\n Field,\r\n FormElement,\r\n FormRenderProps,\r\n FieldWrapper,\r\n} from \"@progress/kendo-react-form\";\r\nimport { Editor} from \"@progress/kendo-react-editor\";\r\nimport {\r\n Grid,\r\n GridColumn,\r\n GridCellProps,\r\n} from \"@progress/kendo-react-grid\";\r\nimport { Button, ButtonGroup } from \"@progress/kendo-react-buttons\";\r\n\r\nimport { Label } from \"@progress/kendo-react-labels\";\r\nimport { TextBox, TextArea } from \"@progress/kendo-react-inputs\";\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\n\r\nimport { PDFExport, savePDF } from \"@progress/kendo-react-pdf\";\r\n\r\nimport { useAppSelector } from \"../../store/store\";\r\nimport ExamEdit from \"./ExamEdit\";\r\nimport ExamViewClientPet from './ExamViewClientPet';\r\nimport ExamViewAttachments from './ExamViewAttachments';\r\nimport ExamPDF from './ExamPDF';\r\n\r\nconst info = [\r\n {\r\n t: \"

Service Eligibility<\\/strong><\\/h2>\",\r\n h: \"60px\",\r\n gap: \"0px\"\r\n },\r\n {\r\n t: \"

Participant (Client, Pet Owner or Guardian) Release Agreement<\\/strong><\\/h2>\\r\\n

Community Veterinary Outreach (“CVO”) is a volunteer-based registered charity that provides veterinary care and treatment to animals to improve the health of the animal and support the well-being of their owners or guardians. CVO accepts participants (client, pet owner, or guardian) on a referral basis from community partnerships that include area shelters, municipal public health, community health centres and mental health organizations. The care and treatment provided by CVO involves risk and CVO cannot assume responsibility for you or your pets’ exposure to these risks. Therefore, in order to participate with CVO and allow your pets to receive care and treatment, please review and sign this Agreement. If you have not yet reached the age of 18, a parent or legal guardian must sign this Agreement for you. If you have any questions please contact the primary referral agency for this clinic, A copy of this Agreement will be provided to you upon request.<\\/p>\\r\\n

ALL<\\/strong> sections of this form MUST<\\/strong> be completed to be accepted.
<\\/p>\\r\\n

I am 18 years of age or older and am bringing my pet voluntarily to CVO to be treated and to receive veterinary care. I agree to allow CVO to treat my pet on my own free will.<\\/p>\\r\\n

I understand that my pet and I may be exposed to other animals and pet owners while being treated by CVO. Other animals may carry certain diseases which can spread to me and\\/or my pet. Also, these other animals can bite, scratch, or otherwise injure my pet or me, and these other animals do not belong to CVO. By allowing CVO to treat my pet, I will not hold CVO, or any social agency working with CVO (including the primary referral agency indicated above), liable or responsible for any loss, damage, illness or injury, including death, suffered by my pet or me at a CVO clinic or treatment event.<\\/p>\\r\\n

I have read and I understand this Agreement and the referring working (witnessed herein) acting on behalf of the CVO has explained this Agreement to me before signing freely and voluntarily.<\\/p>\\r\\n

Please date and sign in front of a witness who is at least 18 years old:<\\/strong><\\/p>\\r\\n\\r\\n


\",\r\n h: \"480px\",\r\n gap: \"0px\"\r\n },\r\n {\r\n t: \"

Community Veterinary Outreach Health Screening<\\/strong><\\/h2>\\r\\nAs part of our COVID-19 Health and Safety Plan, we are implementing health screening for all clients and volunteers who physically participate in any Outreach event.

All clients and volunteers must complete this waiver and sign with their initials.\",\r\n h: \"160px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"Fever, Chills, Cough, Difficulty breathing
Sore throat, Difficulty swallowing
Congested or runny nose
Loss of taste or smell
Pink eye, Headache,
Digestive issues
Muscle aches, Extreme tiredness, Dizziness/ balance issues\",\r\n h: \"140px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"Note: if you or the member of your household who was told to isolate subsequently took a COVID-19 test and received a negative result, answer 'NO' to this question.\",\r\n h: \"60px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"Close contact includes living in the same house, or being at a distance of less than 2 metres from a person for a period of more than 15 minutes.\",\r\n h: \"60px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"We expect our volunteers and clients to exercise good judgement and to not attend an Outreach event if feeling unwell or concerned about putting others at risk. If you have reason to believe you may have been exposed to COVID-19, are waiting for the results of a COVID test on yourself, or have had close contact with someone who may have been exposed, you cannot be allowed to enter the event venue or come into contact with others related to this event. A reminder that current public health requirements mandate isolation for a period of 10 days (BC) or 14 days (MB, ON) following the onset of symptoms, even if symptoms resolve. If, in the past 10 or 14 days, you have experienced any symptoms of COVID-19, do not attend the Outreach event unless you have received a negative COVID-19 test. All volunteers and clients must adhere to all safety procedures at any Outreach event, including only one person entering with their pet, wearing of a mask over the mouth and nose at all times, and sanitizing hands before entering the venue.\",\r\n h: \"170px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"

Personal Information Policy<\\/strong><\\/h2>\\r\\n\" +\r\n \"I understand that Community Veterinary Outreach has a Personal Information policy in accordance with the requirements of the Personal Information Protection and Electronic Documents Act.

By signing below, I am consenting to the collection, use and disclosure of my personal information(such as name, phone number, address, and pet's medical records) in accordance with the purposes set out in the Policy which includes the following:

\" +\r\n \"1. Maintaining complete and accurate client files, and complying with the requirements of provincial acts and regulations;
\" +\r\n \"2. Providing goods and services to veterinary clients, including contacting clients to schedule appointments and follow up on patient treatment
\" +\r\n \"3. Communicating and working with third parties providing veterinary medical or other services to clients, including other veterinary facilities, laboratories, and insurance companies for which you have an existing policy
\" +\r\n \"4. Sharing your pet's medical records, including rabies vaccination status, to support the public health department's efforts to track the risk of rabies transmission in your municipality; and
\" +\r\n \"5. Use of non- identified information collected from the referral form for research purposes in order to fulfill Community Veterinary Outreach's mandate of 'contributing to the scientific knowledge base on social issues involving animals.'

\" +\r\n \"I understand that:
\" +\r\n \"1. My personal information will not be used or disclosed for purposes other than those for which it was collected.Except with my consent, or except where use or disclosure is required by law;
\" +\r\n \"2. I have the right to view my personal information and have it amended, if inaccurate or incomplete; and
\" +\r\n \"3. A copy of the Policy will be provided on request.

\" +\r\n \"I consent to photographs being taken of myself and my pet, and waive ownership of any photographic records taken by Community Veterinary Outreach and agree to permit Community Veterinary Outreach to use my image, or my pet's image, (in photograph, digital, or electronic form) for and in Community Veterinary Outreach publications, posters, web-site or other medial, without limitation, and agree not to make any claim for misappropriation of personality, breach of privacy, or other loss or damages against Community Veterinary Outreach in respect thereof. Any photos taken will not be distributed for use by a third party.\",\r\n h: \"600px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"

Referral Questionnaire<\\/strong><\\/h2>\" +\r\n \"Community Veterinary Outreach's program provides preventative veterinary care only.\\n\\nPet owners should NOT wait for a clinic if they have a sick or injured pet.They should be strongly advised to seek veterinary care immediately.\\n\\n\" +\r\n \"Referred clients must meet all of the following criteria:\\n\\n\" +\r\n \"1. Client is homeless, transitionally-housed or vulnerably-housed (COH or CHRN definition of homeless)\\n\" +\r\n \"2. Client is receiving government social support or has no income; or if the client has no ID - is making regular use of shelter or agency services\\n\" +\r\n \"3. Client does NOT have an existing veterinarian - client - patient relationship (VPCR), defined as having their animal examined or treated by a veterinarian in the past 12 months.\\n\\n\" +\r\n \"All information collected is strictly confidential and during analysis of data all personal and/or identifying information will be stripped and destroyed. This questionnaire is voluntary and veterinary services will not be withheld if any or all of the questions, other than essential client and pet information needed by law, are not answered.\\n\" +\r\n \"Answering questions regarding pet bites will not result in a legal complaint by Community Veterinary Outreach.\\n\\n\",\r\n h: \"360px\",\r\n gap: \"0px\"\r\n },\r\n {\r\n t: \"Client Information\",\r\n text: \"Client Information\",\r\n h: \"40px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"Pet Ownership Information\",\r\n text: \"Pet Ownership Information\",\r\n h: \"40px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"We are dedicated to improving the health of both people and pets, and may have human healthcare and social support services available at veterinary outreach clinics. To help us understand how we can best support you, please answer the following questions.\",\r\n h: \"60px\",\r\n c: \"\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"Pet History\",\r\n text: \"Pet History:\",\r\n h: \"40px\",\r\n gap: \"0px\"\r\n },\r\n {\r\n t: \"Any change in the following:\",\r\n text: \"Any change in the following:\",\r\n h: \"40px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"Have you noted any of the following:\",\r\n text: \"Have you noted any of the following:\",\r\n h: \"40px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"Physical Exam Findings:\",\r\n text: \"Physical Exam Findings:\",\r\n h: \"40px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"Assessment, Diagnostics, Treatment:\",\r\n text: \"Assessment, Diagnostics, Treatment:\",\r\n h: \"40px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"Services Performed:\",\r\n text: \"Services Performed:\",\r\n h: \"40px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"Personnel:\",\r\n text: \"Personnel:\",\r\n h: \"40px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"Client Communication:\",\r\n text: \"Client Communication:\",\r\n h: \"40px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"-\",\r\n text: \"-\",\r\n h: \"40px\",\r\n gap: \"32px\"\r\n },\r\n {\r\n t: \"If there are any questions while completing this form, please e-mail info@vetoutreach.org for further direction.\",\r\n h: \"32px\",\r\n gap: \"0px\"\r\n },\r\n {\r\n t: \"If there are any questions while completing this form, please e-mail saskatoon@vetoutreach.org for further direction.\",\r\n h: \"32px\",\r\n gap: \"0px\"\r\n },\r\n {\r\n t: \"Follow Up Services Requested:\",\r\n text: \"Follow Up Services Requested:\",\r\n h: \"40px\",\r\n gap: \"32px\"\r\n },\r\n]\r\n\r\nexport interface ExamTabProps {\r\n examID: string;\r\n examData: any;\r\n category: string,\r\n viewOnly:boolean,\r\n qWidth: string,\r\n}\r\n\r\nconst toReactComponent = (html:any) => \r\n\r\nconst cellWithHtml = (props: GridCellProps) => {\r\n const drugFields: number[] = [248, 249];\r\n\r\n const fieldVal = props.field ? props.dataItem[props.field] : null;\r\n\r\n const color = (fieldVal && props.dataItem.alert) ? (fieldVal.includes(props.dataItem.alert) ? \"red\" : \"green\") : \"\";\r\n const style = { color: color };\r\n\r\n let displayVal = fieldVal;\r\n if (fieldVal && (fieldVal != null) && drugFields.includes(props.dataItem.findingID)) {\r\n const fieldWithBold = fieldVal.replace(/(Drug Name:)(.*)(\\n|\\r])/g, \"$1$2$3\");\r\n displayVal = toReactComponent(fieldWithBold.replaceAll(\"\\r\", \"
\").replaceAll(\"\\n\", \"
\"));\r\n }\r\n else if (fieldVal !== null) {\r\n displayVal = toReactComponent(fieldVal);\r\n }\r\n\r\n return (\r\n \r\n {displayVal}\r\n \r\n );\r\n};\r\n\r\nconst ExamTab = ({\r\n examID,\r\n examData,\r\n category,\r\n viewOnly,\r\n qWidth,\r\n ...windowProps\r\n}: ExamTabProps) => {\r\n\r\n const auth = useAppSelector((state) => state.auth);\r\n const [canEdit, setCanEdit] = React.useState(examData && (examData.status !== \"Closed\") &&\r\n auth && (auth.user !== undefined) && auth.user.role && (category !== \"Attachments\") &&\r\n ((auth.user.role.includes(\"Admin\") || auth.user.role.includes(\"Veterinarian\") ||\r\n (auth.user.role.includes(\"Intake\") && (category !== \"Comments\")))));\r\n\r\n const [canPrint, setCanPrint] = React.useState(category === \"Vaccinations\");\r\n const [canPDF, setCanPDF] = React.useState((category === \"Vaccinations\") || (category === \"ExamRecord\"));\r\n\r\n const pdfExportComponent = React.useRef(null);\r\n\r\n const [isEdit, setIsEdit] = React.useState(false);\r\n\r\n const [fields, setFields] = React.useState(null);\r\n\r\n React.useEffect(() => {\r\n if (examData) {\r\n\r\n var categories = [\r\n { name: \"Info\", fields: [] },\r\n { name: \"Schedule\", fields: examData.schedule.fields },\r\n { name: \"Services\", fields: examData.services.fields },\r\n { name: \"Eligibility\", fields: examData.eligibility.fields },\r\n { name: \"Waivers\", fields: examData.waivers.fields },\r\n { name: \"Questionnaire\", fields: examData.questionnaire.fields },\r\n { name: \"ExamRecord\", fields: examData.examRecord.fields },\r\n { name: \"Vaccinations\", fields: examData.vaccinations.fields },\r\n { name: \"Comments\", fields: examData.comments.fields },\r\n { name: \"Attachments\", fields: examData.attachments.fields }\r\n ];\r\n\r\n const match: any = categories.find(({ name }) => name === category);\r\n setFields(match.fields);\r\n }\r\n }, [examData, category]);\r\n\r\n const editReturned = (refresh: boolean) => {\r\n setIsEdit(false);\r\n if (refresh) {\r\n setFields(null);\r\n }\r\n }\r\n\r\n const formatFindingField: any = (field: any) => {\r\n\r\n const dateFields: number[] = [149, 313, 317, 321, 336, 343, 347];\r\n const timeFields: number[] = [333, 334];\r\n\r\n if (field && field.result && dateFields.includes(field.result.findingID)) {\r\n return field.result.a ? (new Date(field.result.a)).toLocaleDateString() : \"\";\r\n }\r\n else if (field && field.result && timeFields.includes(field.result.findingID)) {\r\n return field.result.a ? (new Date(field.result.a)).toLocaleString() : \"\";\r\n }\r\n\r\n return field.result.a;\r\n }\r\n\r\n const printOrPDF = (print: boolean) => {\r\n if ((category === \"ExamRecord\") && !print) {\r\n if (pdfExportComponent.current) {\r\n pdfExportComponent.current.save();\r\n }\r\n }\r\n else {\r\n const printWindow = window.open('', '_blank');\r\n if (printWindow) {\r\n printWindow.document.write('' + category + ' ');\r\n if (category === \"Vaccinations\") {\r\n printWindow.document.write(\"
\\\"CVO\\\"
\");\r\n\r\n let vaccineDate = \"2024-01-13\"; // First release for Toronto did not have a vaccination date as part of the page.\r\n // Subsequent releases include a required date field (A336). \r\n // This default should always be overwritten.\r\n\r\n examData.vaccinations.fields.forEach((field: any) => {\r\n if ((field.t === \"finding\") && (field.result.findingID === 336)) {\r\n vaccineDate = field.result.a.slice(0, 10);\r\n }\r\n })\r\n\r\n let dob = \"\";\r\n const dobSplit = examData.petdob.split(\" \");\r\n if (dobSplit.length >= 1) {\r\n dob = dobSplit[0];\r\n }\r\n\r\n printWindow.document.write(\r\n \"
\" +\r\n \"


\" + examData.regionName + \" Community Veterinary Outreach Mobile
\" +\r\n \"
\" + examData.vetaddress + \"
\" +\r\n \"
Ph: \" + examData.vetphone + \"
\" +\r\n \"
email: \" + examData.regionEmail + \"
\" +\r\n \"


This is to certify that '\" + examData.petname + \"' (\" + examData.ownerfirst + \" \" + examData.ownerlast + \") \" +\r\n \"was vaccinated on \" + vaccineDate + \".

\" +\r\n \"

\" + examData.petspecies + \": \" + examData.petgender + \" / \" + examData.petbreed +\r\n \" / \" + examData.petbreedother + \" / \" + examData.petcolor +\r\n \"
Birthdate: \" + dob + \"

\" +\r\n \"
\");\r\n\r\n examData.vaccinations.fields.forEach((field: any) => {\r\n if (field.t === \"grid\") {\r\n printWindow.document.write(\"


\");\r\n field.results.forEach((result: any) => {\r\n if ((result.findingID === 311) || (result.findingID === 315) || (result.findingID === 319) ||\r\n (result.findingID === 341) || (result.findingID === 345)) {\r\n printWindow.document.write(\"

\" + result.a + \"
\");\r\n } else if ((result.findingID === 313) || (result.findingID === 317) || (result.findingID === 321) ||\r\n (result.findingID === 343) || (result.findingID === 347)) {\r\n printWindow.document.write(\"
\" + result.q + \": \" + result.a.slice(0, 10) + \"
\");\r\n } else {\r\n printWindow.document.write(\"
\" + result.q + \": \" + result.a + \"
\");\r\n }\r\n })\r\n printWindow.document.write(\"

\");\r\n }\r\n })\r\n printWindow.document.write(\"
\");\r\n\r\n printWindow.document.write(\"


Veterinarian: \" + examData.vetname + \" (\" + examData.vetcredentials + \")

\");\r\n\r\n if (examData.vetsignaturetype !== \"\") {\r\n printWindow.document.write(\"

\");\r\n }\r\n }\r\n printWindow.document.write('');\r\n printWindow.document.close();\r\n\r\n printWindow.onload = function () {\r\n if (print) {\r\n printWindow.print();\r\n } else {\r\n savePDF(printWindow.document.body, {\r\n paperSize: \"Letter\",\r\n margin: 40,\r\n fileName: examData.petname + \"-\" + examData.ownerfirst + examData.ownerlast + \"-vaccination\",\r\n });\r\n }\r\n printWindow.close();\r\n }\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n {!viewOnly && (\r\n
\r\n \r\n {canEdit && setIsEdit(true)}>\r\n Edit\r\n }\r\n {canPrint && printOrPDF(true)}\r\n themeColor={\"primary\"}>\r\n Print\r\n }\r\n {canPDF && printOrPDF(false)}\r\n themeColor={\"primary\"}>\r\n PDF\r\n }\r\n \r\n
)\r\n }\r\n {(canPDF && (category===\"ExamRecord\")) &&\r\n
\r\n \r\n \r\n \r\n
\r\n }\r\n {isEdit ?\r\n (\r\n editReturned(refresh)}\r\n />\r\n )\r\n :\r\n ((fields === null) ? :\r\n ((category === \"Info\") ?\r\n \r\n : \r\n ((category === \"Attachments\") ?\r\n \r\n :\r\n (\r\n \r\n
\r\n {fields.map((field: any) => {\r\n return ((field.t === \"info\") ?\r\n (
\r\n \r\n
)\r\n :\r\n ((field.t === \"finding\") ?\r\n (\r\n
\r\n \r\n \r\n
\r\n
) :\r\n ((field.t === \"grid\") ?\r\n (\r\n \r\n \r\n \r\n ) :\r\n (\r\n \r\n \r\n \r\n )\r\n )))\r\n })}\r\n
\r\n
\r\n )}\r\n />)))\r\n }\r\n
\r\n );\r\n};\r\nexport default ExamTab;\r\n","import * as React from \"react\";\r\nimport {\r\n Form,\r\n FormRenderProps,\r\n} from \"@progress/kendo-react-form\";\r\nimport {\r\n TabStrip,\r\n TabStripSelectEventArguments,\r\n TabStripTab,\r\n} from \"@progress/kendo-react-layout\";\r\nimport {\r\n Toolbar,\r\n Button,\r\n DropDownButton,\r\n ButtonGroup,\r\n} from \"@progress/kendo-react-buttons\";\r\nimport { Badge, BadgeContainer } from \"@progress/kendo-react-indicators\";\r\nimport {\r\n Grid,\r\n GridColumn,\r\n} from \"@progress/kendo-react-grid\";\r\n\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\nimport { Dialog, DialogActionsBar } from \"@progress/kendo-react-dialogs\";\r\n\r\nimport { useAppSelector } from \"../../store/store\";\r\nimport { useGetExamQuery } from '../../store/sunbright-api';\r\nimport { useEditExamStatusMutation } from '../../store/sunbright-api';\r\n\r\nimport ExamTab from './ExamTab';\r\nimport NavigateToLogin from \"../NavigateToLogin\";\r\n\r\nexport interface ExamProps {\r\n examID: string;\r\n viewOnly: boolean;\r\n returnLabel: string;\r\n onReturn?: any;\r\n}\r\n\r\nconst Exam = ({\r\n examID,\r\n viewOnly,\r\n returnLabel,\r\n onReturn,\r\n}: ExamProps) => {\r\n\r\n const auth = useAppSelector((state) => state.auth);\r\n const [canClose, setCanClose] = React.useState(auth && (auth.user !== undefined) && auth.user.role &&\r\n (auth.user.role.includes(\"Admin\") || auth.user.role.includes(\"Veterinarian\")));\r\n const [isAdmin, setIsAdmin] = React.useState(auth && (auth.user !== undefined) && auth.user.role &&\r\n auth.user.role.includes(\"Admin\"));\r\n const [isIntake, setIsIntake] = React.useState(auth && (auth.user !== undefined) && auth.user.role &&\r\n auth.user.role.includes(\"Intake\"));\r\n\r\n const [showFinalize, setShowFinalize] = React.useState(false);\r\n\r\n const [confirmFinalize, setConfirmFinalize] = React.useState(false);\r\n const [confirmStatus, setConfirmStatus] = React.useState(\"\");\r\n\r\n const [hasServices, setHasServices] = React.useState(false);\r\n const [hasComments, setHasComments] = React.useState(false);\r\n const [hasAttachments, setHasAttachments] = React.useState(false);\r\n\r\n const [examHeader, setExamHeader] = React.useState(\"\");\r\n\r\n const [editExamStatus, response] = useEditExamStatusMutation();\r\n\r\n const examTabStripRef = React.useRef(null);\r\n\r\n const { data, error, isLoading } = useGetExamQuery(examID);\r\n\r\n const [selectedTab, setSelectedTab] = React.useState(0);\r\n\r\n const [tabStripHeight, setTabStripHeight] = React.useState(\"600px\");\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n }, []);\r\n React.useEffect(() => {\r\n setTabStripHeight((window.innerHeight - 120) + \"px\");\r\n if (data) {\r\n\r\n let allServices:string = (data.services && data.services.fields && (data.services.fields.length > 0)) ? data.services.fields[0].result.a : \"\";\r\n let closableService: boolean = allServices.includes(\"Spay Neuter\") ||\r\n allServices.includes(\"External Vet Clinic Referral\") ||\r\n allServices.includes(\"Weigh\") ||\r\n allServices.includes(\"Microchip Implant\") ||\r\n allServices.includes(\"Nail Trim\") ||\r\n allServices.includes(\"Grooming\") ||\r\n allServices.includes(\"Pet Food and Supplies\");\r\n setShowFinalize(canClose && ((data.status === 'Open') || closableService));\r\n\r\n setHasServices(allServices.length > 0);\r\n setHasComments(data.comments && data.comments.fields && (data.comments.fields.length > 0));\r\n setHasAttachments(data.attachments && data.attachments.fields && (data.attachments.fields.length > 0));\r\n\r\n\r\n let gender = \"\";\r\n const genderSplit = data.petgender.split(\", \");\r\n if (genderSplit.length === 1) {\r\n gender = genderSplit[0].substring(0, 1);\r\n }\r\n else if (genderSplit.length === 2) {\r\n gender = genderSplit[1].substring(0, 1) + genderSplit[0].substring(0, 1)\r\n }\r\n\r\n let age = ((new Date()).getTime() - (new Date(data.petdob)).getTime()) / (365 * 24 * 60 * 60 * 1000);\r\n\r\n setExamHeader(data.petname + \" (\" + data.ownerfirst + \" \" + data.ownerlast + \") / \" +\r\n data.petspecies + \" / \" + gender + \" / \" + data.petweight + \" kg / \" + age.toFixed(2) + \" yrs\");\r\n }\r\n\r\n }, [data]);\r\n\r\n const handleResize = () => {\r\n setTabStripHeight((window.innerHeight - 120) + \"px\");\r\n };\r\n\r\n const handleSelectTab = (e: TabStripSelectEventArguments) => {\r\n setSelectedTab(e.selected);\r\n if (examTabStripRef && examTabStripRef.current && examTabStripRef.current._element && examTabStripRef.current._element.children)\r\n examTabStripRef.current._element.children[1].scrollTop = 0;\r\n };\r\n\r\n const ExamForm = React.useRef(null);\r\n\r\n const actionExam = (action:string) => {\r\n const postExam = ExamForm.current.values;\r\n postExam.ExamID = examID;\r\n postExam.Category = \"Status\";\r\n postExam.status = action;\r\n\r\n editExamStatus(postExam)\r\n .unwrap()\r\n .then((payload) => { })\r\n .catch((error) => {\r\n console.log(error)\r\n });\r\n onReturn();\r\n }\r\n\r\n const closedStatuses: string = \"Closed Cancelled NoShow Deleted\";\r\n\r\n return (\r\n \r\n
\r\n {error ? () : isLoading ? () : data ? (\r\n
\r\n {(!viewOnly && confirmFinalize) && \r\n  Please confirm
}\r\n onClose={(e) => setConfirmFinalize(false)}>\r\n

\r\n Closed exams cannot be edited.

Are you sure you want to finalize this exam?\r\n

\r\n \r\n actionExam(\"Closed\")}\r\n >\r\n Yes\r\n \r\n setConfirmFinalize(false)}\r\n >\r\n No\r\n \r\n \r\n \r\n }\r\n {(confirmStatus.length > 0) &&\r\n  Please confirm
}\r\n onClose={(e) => setConfirmStatus(\"\")}>\r\n

\r\n Are you sure you want to set the status to: {confirmStatus}\r\n

\r\n \r\n actionExam(confirmStatus)}\r\n >\r\n Yes\r\n \r\n setConfirmStatus(\"\")}\r\n >\r\n No\r\n \r\n \r\n \r\n }\r\n {!viewOnly &&\r\n \r\n \r\n onReturn()}\r\n >\r\n {returnLabel}\r\n \r\n {(showFinalize && !closedStatuses.includes(data.status)) &&\r\n setConfirmFinalize(true)}\r\n >\r\n Finalize Exam\r\n \r\n }\r\n {(isAdmin && closedStatuses.includes(data.status)) &&\r\n actionExam(\"Open\")}\r\n >\r\n Open Exam\r\n \r\n }\r\n {(isAdmin && !closedStatuses.includes(data.status)) &&\r\n setConfirmStatus(e.item)}\r\n />\r\n }\r\n \r\n
\r\n { examHeader }\r\n
\r\n
\r\n }\r\n (\r\n
\r\n
\r\n )}\r\n />\r\n \r\n \r\n \r\n \r\n {(viewOnly || !isIntake) && \r\n \r\n \r\n }\r\n \r\n Services\r\n \r\n :\r\n \"Services\"\r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {(viewOnly || !isIntake) && < TabStripTab title=\"Exam Record\">\r\n \r\n \r\n }\r\n {(viewOnly || !isIntake) && \r\n \r\n \r\n }\r\n \r\n Comments\r\n \r\n :\r\n \"Comments\"\r\n }>\r\n \r\n \r\n \r\n Attachments\r\n \r\n :\r\n \"Attachments\"\r\n }>\r\n \r\n \r\n \r\n

) : null}\r\n
\r\n \r\n );\r\n};\r\nexport default Exam;\r\n","import * as React from \"react\";\r\nimport {\r\n Form,\r\n FormElement,\r\n FormRenderProps,\r\n FormSubmitClickEvent,\r\n} from \"@progress/kendo-react-form\";\r\nimport {\r\n Toolbar,\r\n Button,\r\n ButtonGroup,\r\n} from \"@progress/kendo-react-buttons\";\r\nimport { Stepper } from \"@progress/kendo-react-layout\";\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\n\r\nimport ExamNewClientPet from \"./ExamNewClientPet\";\r\nimport ExamNewEligibility from \"./ExamNewEligibility\";\r\nimport ExamNewWaivers from \"./ExamNewWaivers\";\r\nimport ExamNewQuestionnaire from \"./ExamNewQuestionnaire\";\r\nimport ExamNewComments from \"./ExamNewComments\";\r\n\r\nimport { useNewExamMutation } from '../../store/sunbright-api';\r\n\r\nexport interface ExamNewProps {\r\n onReturn?: any;\r\n}\r\ninterface stepsInterface {\r\n isValid: boolean | undefined;\r\n label: string;\r\n icon: string;\r\n optional?: boolean;\r\n}\r\n\r\nconst ExamNew = ({\r\n onReturn,\r\n}: ExamNewProps) => {\r\n\r\n const [addNewExam, response] = useNewExamMutation();\r\n\r\n const ExamNewForm = React.useRef(null);\r\n const FormDiv = React.useRef(null);\r\n\r\n const [formHeight, setFormHeight] = React.useState(\"100px\");\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n setFormHeight((window.innerHeight - 190) + \"px\");\r\n }, []);\r\n\r\n const handleResize = () => {\r\n setFormHeight((window.innerHeight - 190) + \"px\");\r\n };\r\n\r\n const [clientName, setClientName] = React.useState(\"XX\");\r\n const [petName, setPetName] = React.useState(\"YY\");\r\n\r\n const stepPages = [\r\n ExamNewClientPet({ newExam:true, form: ExamNewForm }),\r\n ExamNewEligibility(),\r\n ExamNewWaivers({ clientName: clientName, petName: petName }),\r\n ExamNewQuestionnaire({ form : ExamNewForm }),\r\n ExamNewComments({ newExam: true, examID:\"\" })\r\n ];\r\n\r\n const [step, setStep] = React.useState(0);\r\n const [formState, setFormState] = React.useState({});\r\n const [steps, setSteps] = React.useState>([\r\n {\r\n label: \"Owner/Pet\",\r\n icon: \"k-i-info-circle\",\r\n isValid: undefined,\r\n },\r\n {\r\n label: \"Eligibility\",\r\n icon: \"k-i-user\",\r\n isValid: undefined,\r\n },\r\n {\r\n label: \"Waivers\",\r\n icon: \"k-i-signature\",\r\n isValid: undefined,\r\n },\r\n {\r\n label: \"Questionnaire\",\r\n icon: \"k-i-question-circle\",\r\n isValid: undefined,\r\n },\r\n {\r\n label: \"Comments\",\r\n icon: \"k-i-comment\",\r\n isValid: undefined,\r\n },\r\n ]);\r\n\r\n const [submitted, setSubmitted] = React.useState(false);\r\n\r\n const lastStepIndex = steps.length - 1;\r\n const isLastStep = lastStepIndex === step;\r\n\r\n const onStepSubmit = React.useCallback(\r\n (event: FormSubmitClickEvent) => {\r\n const { isValid, values } = event;\r\n\r\n const currentSteps = steps.map(\r\n (currentStep: stepsInterface, index: number) => ({\r\n ...currentStep,\r\n isValid: index === step ? isValid : currentStep.isValid,\r\n })\r\n );\r\n\r\n setSteps(currentSteps);\r\n\r\n if (!isValid) {\r\n return;\r\n }\r\n\r\n if ((step === 0) && ExamNewForm && ExamNewForm.current && ExamNewForm.current.values) {\r\n setClientName(ExamNewForm.current.values.ownerfirst + \" \" + ExamNewForm.current.values.ownerlast);\r\n setPetName(ExamNewForm.current.values.petname);\r\n }\r\n\r\n setStep(() => Math.min(step + 1, lastStepIndex));\r\n setFormState(values);\r\n\r\n FormDiv.current.children[0].children[0].scrollTop = 0;\r\n\r\n if (isLastStep) {\r\n const postExam = ExamNewForm.current.values;\r\n postExam.category = \"New\";\r\n\r\n addNewExam(postExam)\r\n .unwrap()\r\n .then(() => { })\r\n .catch((error) => {\r\n console.log(error)\r\n })\r\n\r\n setSubmitted(true);\r\n }\r\n },\r\n [steps, isLastStep, step, lastStepIndex]\r\n );\r\n\r\n const onPrevClick = React.useCallback(\r\n (event:any) => {\r\n event.preventDefault();\r\n setStep(() => Math.max(step - 1, 0));\r\n\r\n FormDiv.current.children[0].children[0].scrollTop = 0;\r\n },\r\n [step, setStep]\r\n );\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n onReturn() }\r\n >\r\n Return to Exams\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n (\r\n
\r\n \r\n {stepPages[step]}\r\n \r\n \r\n \r\n Previous\r\n \r\n \r\n {isLastStep ? \"Submit\" : \"Next\"}\r\n \r\n \r\n
\r\n )}\r\n />\r\n
\r\n \r\n {(submitted &&\r\n \r\n

\r\n Thank you for your submission.
\r\n

\r\n \r\n )}\r\n
\r\n );\r\n};\r\nexport default ExamNew;\r\n","import * as React from \"react\";\r\nimport { Field } from \"@progress/kendo-react-form\";\r\nimport { DropDownListChangeEvent, DropDownListFilterChangeEvent} from \"@progress/kendo-react-dropdowns\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport {\r\n CompositeFilterDescriptor,\r\n filterBy,\r\n FilterDescriptor,\r\n} from \"@progress/kendo-data-query\";\r\n\r\nimport { FormInput, FormDropDownList, FormDatePicker } from \"../FormComponents\";\r\nimport { requiredValidator, emailValidator, phoneValidator } from \"../validators\";\r\n\r\nimport { useGetAgencyNamesQuery } from '../../store/sunbright-api';\r\nimport { useLazyGetCwNamesQuery } from '../../store/sunbright-api';\r\nimport { useLazyGetClientNamesQuery } from '../../store/sunbright-api';\r\nimport { useLazyGetPersonQuery } from '../../store/sunbright-api';\r\nimport { useLazyGetPetNamesQuery } from '../../store/sunbright-api';\r\nimport { useLazyGetPetQuery } from '../../store/sunbright-api';\r\n\r\nimport { useAppSelector } from \"../../store/store\";\r\n\r\nconst allSpecies = [\r\n \"Dog\",\r\n \"Cat\",\r\n \"Equine\",\r\n \"Bovine\",\r\n \"Caprine\",\r\n \"Ovine\",\r\n \"Porcine\",\r\n \"Avian\",\r\n \"Ferret\",\r\n \"Rabbit\",\r\n \"Small Rodent\",\r\n \"Amphibian\",\r\n \"Reptile\",\r\n \"Fish\",\r\n \"Exotic\",\r\n \"Small Mammal/Other\"\r\n];\r\n\r\nconst dogBreeds = [\r\n \"Mixed breed - weight < 10 kg\",\r\n \"Mixed breed - weight > 20 kg\",\r\n \"Mixed breed - weight 10-20 kg\",\r\n \"Airedale Terrier\",\r\n \"Alaskan Malamute\",\r\n \"American Akita\",\r\n \"American Bulldog\",\r\n \"American Cocker Spaniel\",\r\n \"American Eskimo Dog\",\r\n \"American Hairless Terrier\",\r\n \"American Mastiff\",\r\n \"American Pit Bull Terrier\",\r\n \"American Staffordshire\",\r\n \"Australian Cattle Dog\",\r\n \"Australian Shepherd\",\r\n \"Australian Silky Terrier\",\r\n \"Basenji\",\r\n \"Basset Hound\",\r\n \"Beagle\",\r\n \"Bearded Collie\",\r\n \"Bernese Mountain Dog\",\r\n \"Bichon Frise\",\r\n \"Bloodhound\",\r\n \"Border Collie\",\r\n \"Boston Terrier\",\r\n \"Bouvier de Flandres\",\r\n \"Boxer\",\r\n \"Brittany\",\r\n \"Bull Terrier\",\r\n \"Bull Terrier (Miniature)\",\r\n \"Bulldog\",\r\n \"Bullmastiff\",\r\n \"Cairn Terrier\",\r\n \"Cardigan Welsh Corgi\",\r\n \"Cavalier King Charles Spaniel\",\r\n \"Chihuahua\",\r\n \"Chinese Crested Dog\",\r\n \"Chow Chow\",\r\n \"Corgi\",\r\n \"Dachshund\",\r\n \"Dalmation\",\r\n \"Doberman Pinscher\",\r\n \"Dogue de Bordeaux\",\r\n \"English Cocker Spaniel\",\r\n \"English Mastiff\",\r\n \"English Setter\",\r\n \"English Springer Spaniel\",\r\n \"English Toy Terrier (Black & Tan)\",\r\n \"Finnish Spitz\",\r\n \"Fox Terrier (Smooth)\",\r\n \"French Brittany\",\r\n \"French Bulldog\",\r\n \"German Pinscher\",\r\n \"German Shepherd Dog\",\r\n \"Giant Schnauzer\",\r\n \"Golden Retriever\",\r\n \"Gordon Setter\",\r\n \"Great Dane\",\r\n \"Great Pyrenees\",\r\n \"Greater Swiss Mountain Dog\",\r\n \"Greyhound\",\r\n \"Griffon Bruxellois\",\r\n \"Havanese\",\r\n \"Irish Setter\",\r\n \"Irish Staffordshire Bull Terrier\",\r\n \"Irish Wolfhound\",\r\n \"Jack Russell Terrier\",\r\n \"King Charles Spaniel\",\r\n \"King Shepherd\",\r\n \"Labrador Retriever\",\r\n \"Leonberger\",\r\n \"Lhasa Apso\",\r\n \"Maltese\",\r\n \"Manchester Terrier\",\r\n \"Minature Schnauzer\",\r\n \"Newfoundland\",\r\n \"Nova Scotia Duck-Tolling\",\r\n \"Old English Sheepdog\",\r\n \"Papillon\",\r\n \"Pembroke Welsh Corgi\",\r\n \"Pointer\",\r\n \"Pomeranian\",\r\n \"Poodle\",\r\n \"Pug\",\r\n \"Rat Terrier\",\r\n \"Retriever\",\r\n \"Rhodesian Ridgeback\",\r\n \"Rottweiler\",\r\n \"Rough Collie\",\r\n \"Schipperke\",\r\n \"Scottish Terrier\",\r\n \"Shar Pei\",\r\n \"Shetland Sheepdog\",\r\n \"Shiba Inu\",\r\n \"Shih Tzu\",\r\n \"Siberian Husky\",\r\n \"Smooth Collie\",\r\n \"Soft-Coated Wheaton Terrier\",\r\n \"St. Bernard\",\r\n \"Staffordshire Bull Terrier\",\r\n \"Standard Schnauzer\",\r\n \"Terrier\",\r\n \"Weimaraner\",\r\n \"West Highland White Terrier\",\r\n \"Whippet\",\r\n \"Yorkshire Terrier\"\r\n];\r\n\r\nconst catBreeds = [\r\n \"Mixed breed - domestic long hair\",\r\n \"Mixed breed - domestic medium hair\",\r\n \"Mixed breed - domestic shorthair\",\r\n \"British Shorthair\",\r\n \"Burmese\",\r\n \"Calico\",\r\n \"Domestic Long Hair\",\r\n \"Domestic Medium Hair\",\r\n \"Hairless\",\r\n \"himAlayan\",\r\n \"Maine Coone\",\r\n \"Persian\",\r\n \"Rex\",\r\n \"Scottish Fold\",\r\n \"Siamese\",\r\n \"Tortoiseshell\",\r\n];\r\n\r\nconst otherBreeds = [\r\n \"N/A\"\r\n];\r\n\r\nconst allGenders = [\"Female\", \"Male\", \"Neutered, Male\", \"Spayed, Female\", \"Unknown\"];\r\n\r\nexport interface ExamNewClientPetProps {\r\n newExam: boolean,\r\n form: any,\r\n}\r\nconst ExamNewClientPet = ({\r\n newExam,\r\n form,\r\n}: ExamNewClientPetProps) => {\r\n\r\n const auth = useAppSelector((state: any) => state.auth);\r\n const personID = (auth && (auth.user !== undefined) && (auth.user.id !== undefined)) ? auth.user.id : -1;\r\n const role = (auth && (auth.user !== undefined) && (auth.user.role !== undefined)) ? auth.user.role : \"\";\r\n\r\n const { data: agencynames, error: agencynamesError, isLoading: agencynamesLoading } = useGetAgencyNamesQuery(personID);\r\n\r\n const [getCwNames, { data: cwnames, error: cwnamesError, isLoading: cwnamesLoading }] = useLazyGetCwNamesQuery();\r\n const [getClientNames, { data: clientnames, error: clientnamesError, isLoading: cliennamestLoading }] = useLazyGetClientNamesQuery();\r\n const [getClient, { data: client, error: clientError, isLoading: clientLoading }] = useLazyGetPersonQuery();\r\n const [getPetNames, { data: petnames, error: petnamesError, isLoading: petnamesLoading }] = useLazyGetPetNamesQuery();\r\n const [getPet, { data: pet, error: petError, isLoading: petLoading }] = useLazyGetPetQuery();\r\n\r\n const [clientnamesFiltered, setClientNamesFiltered] = React.useState([]);\r\n\r\n // eslint-disable-next-line react-hooks/rules-of-hooks\r\n\r\n const [singleAgency, setSingleAgency] = React.useState(false);\r\n const [singleCaseWorker, setSingleCaseWorker] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n const single: boolean = Array.isArray(agencynames) && (agencynames.length === 1);\r\n setSingleAgency(single);\r\n\r\n if (newExam && single) {\r\n form.current.onChange(\"agencynamecombo\", agencynames[0]);\r\n form.current.values.agencynamecombo = agencynames[0];\r\n getCwNames(agencynames[0].uid);\r\n }\r\n }, [agencynames]);\r\n\r\n React.useEffect(() => {\r\n const single: boolean = Array.isArray(cwnames) && (cwnames.length === 1);\r\n setSingleCaseWorker(single);\r\n\r\n if (newExam && single) {\r\n form.current.onChange(\"cwnamecombo\", cwnames[0]);\r\n form.current.values.cwnamecombo = cwnames[0];\r\n getClientNames(cwnames[0].uid);\r\n }\r\n }, [cwnames]);\r\n\r\n React.useEffect(() => {\r\n setClientNamesFiltered(clientnames);\r\n }, [clientnames]);\r\n\r\n React.useEffect(() => {\r\n if (client) {\r\n form.current.onChange(\"ownerfirst\", { value: client.firstName });\r\n form.current.onChange(\"ownerlast\", { value: client.lastName });\r\n form.current.onChange(\"ownermobile\", { value: client.mobilePhone });\r\n form.current.onChange(\"owneremail\", { value: client.email });\r\n form.current.onChange(\"owneraddress1\", { value: client.address1 });\r\n form.current.onChange(\"ownercity\", { value: client.city });\r\n form.current.onChange(\"ownerprovince\", { value: client.province });\r\n form.current.onChange(\"ownerpostalcode\", { value: client.postalCode });\r\n\r\n const multiFields: number[] = [170, 171, 175, 387, 392, 182, 183,\r\n 199, 202, 206, 207, 209, 215, 218, 219, 231, 233, 236, 237, 324, 382];\r\n const dateFields: number[] = [149];\r\n\r\n client.eligibility.fields.forEach((field: any) => {\r\n var answerKey: string = \"\";\r\n\r\n if (field.t === \"finding\") {\r\n answerKey = \"A\" + field.result.findingID;\r\n\r\n if (multiFields.includes(field.result.findingID)) {\r\n form.current.values[answerKey] = field.result.a.split(\" | \");\r\n }\r\n else {\r\n form.current.values[answerKey] = field.result.a;\r\n }\r\n form.current.values[\"N\" + field.result.findingID] = field.result.n;\r\n }\r\n })\r\n client.waivers.fields.forEach((field: any) => {\r\n var answerKey: string = \"\";\r\n\r\n if (field.t === \"finding\") {\r\n answerKey = \"A\" + field.result.findingID;\r\n\r\n if (multiFields.includes(field.result.findingID)) {\r\n form.current.values[answerKey] = field.result.a.split(\" | \");\r\n }\r\n else if (dateFields.includes(field.result.findingID)) {\r\n form.current.values[answerKey] = (field.result.a.length > 0) ? new Date(field.result.a) : \"\";\r\n }\r\n else {\r\n form.current.values[answerKey] = field.result.a;\r\n }\r\n form.current.values[\"N\" + field.result.findingID] = field.result.n;\r\n }\r\n })\r\n client.questionnaire.fields.forEach((field: any) => {\r\n var answerKey: string = \"\";\r\n\r\n if (field.t === \"finding\") {\r\n answerKey = \"A\" + field.result.findingID;\r\n\r\n if (multiFields.includes(field.result.findingID)) {\r\n form.current.values[answerKey] = field.result.a.split(\" | \");\r\n }\r\n else {\r\n form.current.values[answerKey] = field.result.a;\r\n }\r\n form.current.values[\"N\" + field.result.findingID] = field.result.n;\r\n }\r\n })\r\n setPetValue(null);\r\n getPet(\"-1\");\r\n }\r\n }, [client]);\r\n\r\n React.useEffect(() => {\r\n form.current.onChange(\"petnamecombo\", { value: null });\r\n }, [petnames]);\r\n\r\n React.useEffect(() => {\r\n if (pet) {\r\n form.current.onChange(\"petname\", { value: pet.petName });\r\n form.current.onChange(\"petspecies\", { value: pet.species });\r\n form.current.onChange(\"petbreed\", { value: pet.breed });\r\n form.current.onChange(\"petbreedother\", { value: pet.breedOther });\r\n form.current.onChange(\"petcolor\", { value: pet.color });\r\n form.current.onChange(\"petdob\", { value: (pet.dob && (pet.dob.length > 0)) ? new Date(pet.dob) : null });\r\n form.current.onChange(\"petgender\", { value: pet.gender });\r\n const weight: string[] = pet.weight.split(' ');\r\n form.current.onChange(\"petweight\", { value: weight[0] });\r\n form.current.onChange(\"petmicrochiptag\", { value: pet.microchipTag });\r\n form.current.onChange(\"petmicrochipref\", { value: pet.microchipRef });\r\n form.current.onChange(\"petalert\", { value: pet.alert });\r\n }\r\n }, [pet]);\r\n\r\n const [clientValue, setClientValue] = React.useState(null);\r\n const [petValue, setPetValue] = React.useState(null);\r\n\r\n const handleAgencyChange = (e: DropDownListChangeEvent) => {\r\n getCwNames(e.value.uid);\r\n }\r\n\r\n const handleCwChange = (e: DropDownListChangeEvent) => {\r\n getClientNames(e.value.uid);\r\n }\r\n\r\n const handleClientChange = (e: DropDownListChangeEvent) => {\r\n setClientValue(e.value);\r\n\r\n getClient(e.value.uid);\r\n getPetNames(e.value.uid);\r\n }\r\n\r\n const filterClientNames = (filter: FilterDescriptor | CompositeFilterDescriptor) => {\r\n const data = clientnames.slice();\r\n return filterBy(data, filter);\r\n };\r\n\r\n const handleClientFilterChange = (e: DropDownListFilterChangeEvent) => {\r\n setClientNamesFiltered(filterClientNames(e.filter));\r\n }\r\n\r\n const handlePetChange = (e: DropDownListChangeEvent) => {\r\n setPetValue(e.value);\r\n\r\n getPet(e.value.uid);\r\n }\r\n\r\n const [breedList, setBreedList] = React.useState(otherBreeds);\r\n\r\n const handleSpeciesChange = (e: DropDownListChangeEvent) => {\r\n if (e.value === \"Dog\") {\r\n setBreedList(dogBreeds);\r\n } else if (e.value === \"Cat\") {\r\n setBreedList(catBreeds);\r\n } else {\r\n setBreedList(otherBreeds);\r\n }\r\n form.current.onChange(\"breed\", { value: null });\r\n }\r\n\r\n return (\r\n (agencynames ?\r\n (\r\n
\r\n \r\n { !newExam && (\r\n
\r\n \r\n Case Worker:\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n\r\n
\r\n Owner: \r\n
\r\n { newExam && (\r\n \r\n \r\n \r\n 10)}\r\n onFilterChange={handleClientFilterChange}\r\n onChange={handleClientChange}\r\n validator={requiredValidator}\r\n />\r\n
\r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Pet:\r\n \r\n
\r\n {newExam && (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {!newExam && (\r\n \r\n \r\n \r\n )}\r\n \r\n
) : null)\r\n );\r\n}\r\nexport default ExamNewClientPet;","import { Field } from \"@progress/kendo-react-form\";\r\n\r\nimport { TextArea } from \"@progress/kendo-react-inputs\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\n\r\nimport { FormTextArea, FormDropDownList } from \"../FormComponents\";\r\nimport { requiredValidator } from \"../validators\";\r\n\r\nexport interface ExamNewCommentsProps {\r\n examID: string,\r\n newExam: boolean,\r\n}\r\nconst ExamNewComments = ({\r\n examID,\r\n newExam,\r\n}: ExamNewCommentsProps) => {\r\n\r\n return (\r\n
\r\n \r\n \r\n Add Comment\r\n \r\n {!newExam &&\r\n \r\n \r\n
\r\n \r\n }\r\n \r\n

\r\n {!newExam &&\r\n \r\n }\r\n \r\n {newExam &&\r\n

\r\n Click the 'Submit' button (bottom-right) to submit exam for processing.\r\n
\r\n }\r\n
\r\n );\r\n}\r\n\r\nexport default ExamNewComments;\r\n","import { Field } from \"@progress/kendo-react-form\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\n\r\nimport { FormInput, FormDropDownList } from \"../FormComponents\";\r\nimport { requiredValidator } from \"../validators\";\r\n\r\nconst ExamNewEligibility = () => {\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\nexport default ExamNewEligibility;\r\n","import * as React from \"react\";\r\n\r\nimport { Field, FormRenderProps } from \"@progress/kendo-react-form\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport { DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\n\r\nimport { FormDropDownList, FormInput, FormMultiSelect } from \"../FormComponents\";\r\nimport { requiredValidator } from \"../validators\";\r\n\r\nimport { useAppSelector } from \"../../store/store\";\r\n\r\nconst prefaceQuestionnaire: string = \"

Referral Questionnaire<\\/strong><\\/h2>\" +\r\n \"Community Veterinary Outreach's program provides preventative veterinary care only.

Pet owners should NOT wait for a clinic if they have a sick or injured pet.They should be strongly advised to seek veterinary care immediately.

\" +\r\n \"Referred clients must meet all of the following criteria:

\" +\r\n \"1. Client is homeless, transitionally-housed or vulnerably-housed (CHRN definition of homeless)
\" +\r\n \"2. Client is receiving ODSP, OW, or has no income; or if the client has no ID - is making regular use of shelter or agency services
\" +\r\n \"3. Client does NOT have an existing veterinarian - client - patient relationship(VPCR), defined as having their animal examined or treated by a veterinarian in the past 12 months.

\" +\r\n \"All information collected is strictly confidential and during analysis of data all personal and/or identifying information will be stripped and destroyed. This questionnaire is voluntary and veterinary services will not be withheld if any or all of the questions, other than essential client and pet information needed by law, are not answered.
\" +\r\n \"Answering questions regarding pet bites will not result in a legal complaint by Community Veterinary Outreach.

\" +\r\n \"If there are any questions while completing this form, please e-mail info@vetoutreach.org for further direction.\";\r\n\r\nexport interface ExamNewQuestionnaireProps {\r\n form: any;\r\n}\r\nconst ExamNewQuestionnaire = ({\r\n form\r\n}: ExamNewQuestionnaireProps) => {\r\n\r\n const auth = useAppSelector((state) => state.auth);\r\n const [isVancouver, setIsVancouver] = React.useState((auth!.user!.region === 7) || (auth!.user!.region === 1));\r\n\r\n const [tobaccoUse, setTobaccoUse] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (form) {\r\n setTobaccoUse(form.current && form.current.valueGetter && (form.current.valueGetter(\"A385\") === 'Yes'));\r\n }\r\n }, [form]);\r\n\r\n\r\n const onTobaccoUseChange = (e: DropDownListChangeEvent) => {\r\n setTobaccoUse(e.value === \"Yes\");\r\n }\r\n\r\n return (\r\n
\r\n \r\n\r\n \r\n \r\n Client Information\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Click here when done}\r\n data={[\"He/Him/His\", \"She/Her/Hers\", \"They/Them/Theirs\", \"Ze/Hir\", \"Not Listed\"]}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Click here when done}\r\n data={[\"Income support or assistance\", \"Disability support\", \"Personal needs allowance\",\r\n \"Child and family benefits\", \"Seniors Supplement\", \"Employment Income\", \"Other (Please Describe)\"]}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Click here when done}\r\n data={[\"Unsheltered\", \"Living in public or private spaces without consent or contract\", \"Living in places not intended for permanent human habitation\",\r\n \"Emergency sheltered - living in emergency shelters e.g. homeless, domestic/family violence, natural disaster/fire)\",\r\n \"Provisionally accommodated\", \"Living in interim/transitional housing\", \"Living temporarily with others (couch surfing, hidden homeless)\",\r\n \"Living in short term, temporary rental accommodations\", \"Living in institutional care without permanent housing (penal institution, medical/mental health institution, residential treatment or withdrawal management centres, childrens institution/group home)\",\r\n \"Living in accommodation/reception centres for recently arrived immigrants and refugees\",\r\n \"At risk of homelessness\", \"Precarious employment\", \"Sudden unemployment\", \"Loss of supports\", \"Facing eviction\",\r\n \"Severe and/or persistent mental illness and/or active substance use\", \"Domestic/family violence\", \"Inadequate/unsuited institutional care\"]}\r\n validator={requiredValidator}\r\n />\r\n \r\n Pet Ownership Information\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n We are dedicated to improving the health of both people and pets, and may have human healthcare and social support services available at veterinary outreach clinics. To help us understand how we can best support you, please answer the following questions\r\n
\r\n {!isVancouver && (
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
)}\r\n {isVancouver && (
\r\n \r\n \r\n \r\n \r\n {(tobaccoUse &&
\r\n \r\n \r\n \r\n \r\n Click here when done}\r\n data={[\"Cigarettes\", \"E-cigarettes/vapes\", \"Cigar\", \"Pipe\", \"Smokeless tobacco/Nicotine pouches\", \"Tobacco mixed with cannabis\"]}\r\n validator={requiredValidator}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Click here when done}\r\n data={[\"Your own health and wellbeing\", \"The health and wellbeing of others in your life\",\r\n \"Your pet’s health and wellbeing\", \"Advice or pressure from your friends or family\",\r\n \"Advice or pressure from your doctor or other healthcare provider(s)\", \"To save money\"]}\r\n validator={requiredValidator}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n
)}\r\n
)}\r\n \r\n Click here when done}\r\n data={[\"A doctors office\", \"A hospital outpatient clinic\", \"A community health centre (or CLSC)\", \"A walk-in clinic\",\r\n \"A hospital emergency room\", \"Other (Please Describe)\", \"Outreach nurse\", \"Other social service setting (e.g. CMHA)\",\r\n \"CVO One Health Clinic\", \"Don't know/prefer not to say\"]}\r\n />\r\n \r\n \r\n \r\n Click here when done}\r\n data={[\"Smoking Cessation Services\", \"Healthy Eating / Active Living Services\", \"Flu Vaccination\", \"Dental Screening\",\r\n \"Housing support\", \"Primary health care\", \"Mental health support\", \"Addictions support\",\r\n \"Substance use support\", \"COVID information\", \"Other (Please Describe)\"]}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

\r\n );\r\n}\r\n\r\nexport default ExamNewQuestionnaire;\r\n","import * as React from \"react\";\r\n\r\nimport { Field, FormRenderProps } from \"@progress/kendo-react-form\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport { DropDownList, DropDownListChangeEvent } from '@progress/kendo-react-dropdowns';\r\nimport { InputChangeEvent } from \"@progress/kendo-react-inputs\";\r\n\r\nimport { FormDropDownList, FormInput, FormTextArea, FormMultiSelect, FormDatePicker, FormCheckbox } from \"../FormComponents\";\r\nimport { requiredValidator } from \"../validators\";\r\n\r\nexport interface ExamNewRecordProps {\r\n species: string;\r\n formRenderProps: FormRenderProps;\r\n}\r\n\r\nconst ExamNewRecord = ({\r\n species,\r\n formRenderProps\r\n}: ExamNewRecordProps) => {\r\n\r\n const [newMicrochip, setNewMicrochip] = React.useState(false);\r\n const [partialExam, setPartialExam] = React.useState(formRenderProps.valueGetter(\"A379\") === \"Yes\");\r\n const [reqdSuffix, setReqdSuffix] = React.useState((formRenderProps.valueGetter(\"A379\") === \"Yes\") ? \"\" : \"*\");\r\n\r\n const onResponseChange = (event: DropDownListChangeEvent, name:string) => {\r\n if (event.target.index > 0) {\r\n const currentValue = formRenderProps.valueGetter(name);\r\n formRenderProps.onChange(name, {\r\n value: ((currentValue ? (currentValue + \"\\r\") : \"\") + event.target.value)\r\n });\r\n }\r\n }\r\n\r\n const onResponseDrugChange = (event: DropDownListChangeEvent, name: string) => {\r\n if (event.target.index > 0) {\r\n const currentValue = formRenderProps.valueGetter(name);\r\n formRenderProps.onChange(name, {\r\n value: ((currentValue ? (currentValue + \"\\r\") : \"\") + event.target.value.value)\r\n });\r\n }\r\n }\r\n\r\n const onInputChange = (event: InputChangeEvent, name: string) => {\r\n if (name === \"A339\") {\r\n setNewMicrochip(event.value.length > 0);\r\n }\r\n }\r\n\r\n const onPartialExamChange = (e: DropDownListChangeEvent) => {\r\n setPartialExam(e.value === \"Yes\");\r\n setReqdSuffix((e.value === \"Yes\") ? \"\" : \"*\");\r\n }\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n \r\n Exam Record\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n Pet History\r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"Family member/friend\", \"Stray\", \"Litter from my own pet or a friend/family's pet\",\r\n \"Advertisement (Kijiji, newspaper)\", \"Humane Society/Shelter/Animal Services\",\r\n \"Pet store\", \"Breeder\", \"Other\"]}\r\n validator={partialExam ? [] : requiredValidator}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n\r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"Case or social worker\", \"Housing worker\", \"Street outreach\", \"Drop in staff\", \"Health professional\",\r\n \"Friend\", \"Family member\", \"Other\", \"Flyer/poster\", \"I’ve been to a CVO clinic before\"]}\r\n />\r\n \r\n \r\n\r\n \r\n onResponseChange(e, \"A203\")}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"Walking outdoors\", \"Playing/games indoors\", \"Playing/games outdoors\",\r\n \"Obedience or trick training\", \"Other (Please describe)\"]}\r\n />\r\n \r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"Dry food\", \"Wet food\", \"Dry and wet food\",\r\n \"Home cooked\", \"Raw\", \"Human food\"]}\r\n />\r\n \r\n \r\n\r\n \r\n onResponseChange(e, \"A208\")}\r\n />\r\n\r\n \r\n Any change in the following:\r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"BAR (bright, alert, responsive)\", \"QAR (quiet, alert, responsive)\", \"Lethargic\",\r\n \"Anxious/fearful\", \"Other (Text Box)\"]}\r\n validator={partialExam ? [] : requiredValidator}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"Normal\", \"Peeing outside the box or in the house\", \"Pooping outside the box or in the house\",\r\n \"Spraying\"]}\r\n validator={partialExam ? [] : requiredValidator}\r\n />\r\n \r\n \r\n\r\n \r\n Have you noted any of the following?\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"None\", \"Yes-chronic\", \"Yes- acute (< 2 weeks)\", \"Gulping, licking, excessive gas, eating foreign objects\",\r\n \"Regurgitation (spitting up with no heaving)\", \"Other (please describe)\"]}\r\n validator={partialExam ? [] : requiredValidator}\r\n />\r\n \r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"None\", \"Yes - chronic\", \"Yes- acute (< 2 weeks)\", \"Soft or liquid feces, with normal frequency of BM\",\r\n \"Straining, red blood, frequency or mucous seen\",\r\n \"Parasites seen\", \"Constipation\", \"Other (Please describe)\"]}\r\n validator={partialExam ? [] : requiredValidator}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n Physical Exam Findings\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"Normal\", \"Otitis externa\", \"Not examined\", \"Erythema\",\r\n \"Swelling\", \"Discharge\", \"Aural hematoma(s)\", \"Other (Please describe)\"]}\r\n validator={partialExam ? [] : requiredValidator}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"Not examined\", \"Normal\", \"Callus (thickened skin overlying pressure points)\",\r\n \"Collarettes (circular, peeling skin lesions)\", \"Crusts (dried exudate containing blood/serum/scales/pus)\",\r\n \"Depigmentation (loss of pigmentation)\", \"Discharge and/or exudate\", \"Erosion and/or ulcer\",\r\n \"Erythema (reddening of the skin, often in patches)\", \"Excoriation (erosion/ulcer caused by self-trauma, usually linear)\",\r\n \"Feline Miliary dermatitis (very small, crusted elevations <1 cm)\", \"Fissure (deep split through the skin)\",\r\n \"Hyperkeratosis (thickening of nasal planum/paw pads)\", \"Hyperpigmentation (increased pigmentation)\",\r\n \"Lichenification (thickening/hardening of skin)\", \"Nodule (solid elevation >1 cm in diameter)\",\r\n \"Papules (solid elevated lesions < 1 cm)\", \"Plaque (flat elevation of skin >1cm in diameter)\",\r\n \"Pruritus (patient noticeably pruritic during consultation)\", \"Pustules\", \"Scaling (flakes of cornified cells)\",\r\n \"Scar\", \"Subcutaneous or subcutaneous mass\", \"Swelling\",\r\n \"Vesicles and/or bullae (sharply demarcated elevation of skin containing clear fluid)\",\r\n \"Wheal (hive)\", \"Other: Specify\"]}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"Not examined\", \"Normal\", \"History of dental pain (dropping food, avoiding dry)\",\r\n \"Missing teeth\", \"Fractured teeth\", \"Halitosis\", \"Mild calculus\", \"Significant calculus – multiple teeth\",\r\n \"Gingival recession and root exposure\", \"Obvious periodontal disease (pockets, bleeding/ pus, loose teeth)\",\r\n \"Feline resorptive lesions\", \"Other (please describe)\"]}\r\n />\r\n \r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"Normal\", \"Not examined\", \"Masses / nodules\", \"Ulceration/ wounds\",\r\n \"Tongue abnormalities\", \"Other (please describe)\"]}\r\n validator={partialExam ? [] : requiredValidator}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n Assessment, Diagnostics, Treatment\r\n \r\n\r\n \r\n onResponseChange(e, \"A246\")}\r\n />\r\n\r\n \r\n onResponseChange(e, \"A247\")}\r\n />\r\n\r\n \r\n onResponseDrugChange(e, \"A248\")}\r\n />\r\n\r\n \r\n onResponseDrugChange(e, \"A249\")}\r\n />\r\n\r\n \r\n onResponseChange(e, \"A250\")}\r\n />\r\n\r\n \r\n onResponseChange(e, \"A251\")}\r\n />\r\n\r\n \r\n Services Performed\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n onInputChange(e, \"A339\")}\r\n />\r\n \r\n \r\n\r\n \r\n Follow Up Services Requested\r\n \r\n\r\n \r\n Click here when done}\r\n data={[\"Spay Neuter Request\", \"External Referral Request\", \"Booster Request\", \"Microchip Request\"]}\r\n />\r\n \r\n \r\n\r\n \r\n Client Communication\r\n \r\n\r\n
\r\n \r\n \r\n Discussed\r\n Handout\r\n \r\n\r\n \r\n Core Vaccines\r\n \r\n \r\n \r\n\r\n \r\n Vaccine Side Effects\r\n \r\n \r\n \r\n\r\n \r\n Vaccine Schedule\r\n \r\n \r\n \r\n\r\n \r\n Parasites / Deworming\r\n \r\n \r\n \r\n\r\n \r\n Spay / Neuter\r\n \r\n \r\n \r\n\r\n \r\n Dental Care\r\n \r\n \r\n \r\n\r\n \r\n Exercise\r\n \r\n \r\n \r\n\r\n \r\n Grooming\r\n \r\n \r\n \r\n\r\n \r\n Training/Behavior\r\n \r\n \r\n \r\n\r\n \r\n Fleas\r\n \r\n \r\n \r\n\r\n \r\n Diet\r\n \r\n \r\n \r\n\r\n \r\n Change in smoking behaviour\r\n \r\n \r\n \r\n\r\n \r\n Physical exercise recommendation\r\n \r\n \r\n \r\n\r\n
\r\n\r\n \r\n\r\n \r\n Personnel\r\n \r\n\r\n {(!newMicrochip) &&\r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\nexport default ExamNewRecord;\r\n\r\n","import { Field } from \"@progress/kendo-react-form\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\n\r\nimport { FormDatePicker, FormInput, FormDropDownList } from \"../FormComponents\";\r\nimport { requiredValidator } from \"../validators\";\r\n\r\nconst prefaceRelease = \"

Participant (Client, Pet Owner or Guardian) Release Agreement<\\/strong><\\/h2>\\r\\n

Community Veterinary Outreach (“CVO”) is a volunteer-based registered charity that provides veterinary care and treatment to animals to improve the health of the animal and support the well-being of their owners or guardians. CVO accepts participants (client, pet owner, or guardian) on a referral basis from community partnerships that include area shelters, municipal public health, community health centres and mental health organizations. The care and treatment provided by CVO involves risk and CVO cannot assume responsibility for you or your pets’ exposure to these risks. Therefore, in order to participate with CVO and allow your pets to receive care and treatment, please review and sign this Agreement. If you have not yet reached the age of 18, a parent or legal guardian must sign this Agreement for you. If you have any questions please contact the primary referral agency for this clinic. A copy of this Agreement will be provided to you upon request.<\\/p>\\r\\n

ALL<\\/strong> sections of this form MUST<\\/strong> be completed to be accepted.
<\\/p>\\r\\n

I am 18 years of age or older and am bringing my pet voluntarily to CVO to be treated and to receive veterinary care. I agree to allow CVO to treat my pet on my own free will.<\\/p>\\r\\n

I understand that my pet and I may be exposed to other animals and pet owners while being treated by CVO. Other animals may carry certain diseases which can spread to me and\\/or my pet. Also, these other animals can bite, scratch, or otherwise injure my pet or me, and these other animals do not belong to CVO. By allowing CVO to treat my pet, I will not hold CVO, or any social agency working with CVO (including the primary referral agency indicated above), liable or responsible for any loss, damage, illness or injury, including death, suffered by my pet or me at a CVO clinic or treatment event.<\\/p>\\r\\n

I have read and I understand this Agreement and the referring working (witnessed herein) acting on behalf of the CVO has explained this Agreement to me before signing freely and voluntarily.<\\/p>\\r\\n

Please date and sign in front of a witness who is at least 18 years old:<\\/strong><\\/p>\\r\\n\\r\\n


\";\r\nconst prefacePIP = \"

Personal Information Policy<\\/strong><\\/h2>\\r\\n\" +\r\n \"I understand that Community Veterinary Outreach has a Personal Information policy in accordance with the requirements of the Personal Information Protection and Electronic Documents Act.

By signing below, I am consenting to the collection, use and disclosure of my personal information(such as name, phone number, address, and pet's medical records) in accordance with the purposes set out in the Policy which includes the following:

\" +\r\n \"1. Maintaining complete and accurate client files, and complying with provincial acts and regulations;
\" +\r\n \"2. Providing goods and services to veterinary clients, including contacting clients to schedule appointments and follow up on patient treatment
\" +\r\n \"3. Communicating and working with third parties providing veterinary medical or other services to clients, including other veterinary facilities, laboratories, and insurance companies for which you have an existing policy
\" +\r\n \"4. Sharing your pet's medical records, including rabies vaccination status, to support the public health department's efforts to track the risk of rabies transmission in your municipality; and
\" +\r\n \"5. Use of non- identified information collected from the referral form for research purposes in order to fulfill Community Veterinary Outreach's mandate of 'contributing to the scientific knowledge base on social issues involving animals.'

\" +\r\n \"I understand that:
\" +\r\n \"1. My personal information will not be used or disclosed for purposes other than those for which it was collected.Except with my consent, or except where use or disclosure is required by law;
\" +\r\n \"2. I have the right to view my personal information and have it amended, if inaccurate or incomplete; and
\" +\r\n \"3. A copy of the Policy will be provided on request.

\" +\r\n \"I consent to photographs being taken of myself and my pet, and waive ownership of any photographic records taken by Community Veterinary Outreach and agree to permit Community Veterinary Outreach to use my image, or my pet's image, (in photograph, digital, or electronic form) for and in Community Veterinary Outreach publications, posters, web-site or other medial, without limitation, and agree not to make any claim for misappropriation of personality, breach of privacy, or other loss or damages against Community Veterinary Outreach in respect thereof. Any photos taken will not be distributed for use by a third party.\";\r\n\r\nexport interface ExamNewWaiversProps {\r\n clientName: string,\r\n petName: string,\r\n}\r\n\r\nconst ExamNewWaivers = ({\r\n clientName,\r\n petName\r\n}: ExamNewWaiversProps) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n )\r\n}\r\nexport default ExamNewWaivers;","import * as React from \"react\";\r\nimport {\r\n Form,\r\n Field,\r\n FormElement,\r\n FormRenderProps,\r\n FieldWrapper,\r\n} from \"@progress/kendo-react-form\";\r\nimport { StackLayout, GridLayout, GridLayoutItem } from \"@progress/kendo-react-layout\";\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nimport { Label } from \"@progress/kendo-react-labels\";\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\n\r\nimport InlineExamsGrid from './InlineExamsGrid'\r\nimport NavigateToLogin from \"../NavigateToLogin\";\r\nimport { useGetPetQuery } from '../../store/sunbright-api';\r\n\r\nexport interface ExamViewClientPetProps {\r\n examID: string;\r\n petID: string;\r\n examData: any;\r\n viewOnly: boolean;\r\n category: string,\r\n}\r\n\r\nconst ExamViewClientPet = ({\r\n examID,\r\n petID,\r\n examData,\r\n viewOnly,\r\n category,\r\n ...windowProps\r\n}: ExamViewClientPetProps) => {\r\n\r\n const { data: petData, error, isLoading } = useGetPetQuery(petID);\r\n\r\n const dateOptions = { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' };\r\n\r\n return (\r\n \r\n {error ? () : isLoading ? : petData ? (\r\n
\r\n 0)) ? (new Date(examData.petdob)).toLocaleDateString() : null,\r\n petgender: examData.petgender,\r\n petweight: examData.petweight,\r\n petemployee: examData.petemployee,\r\n petmicrochipref: examData.petmicrochipref,\r\n petmicrochiptag: examData.petmicrochiptag,\r\n petalert: examData.petalert,\r\n cwagency: examData.cwagency,\r\n cwname: examData.cwname,\r\n cwemail: examData.cwemail,\r\n vetname: examData.vetname,\r\n vetphone: examData.vetphone,\r\n vetaddress: examData.vetaddress,\r\n }}\r\n render={(formRenderProps: FormRenderProps) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n Owner\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n Pet\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n )}\r\n />\r\n\r\n {!viewOnly &&
\r\n PREVIOUS EXAMS\r\n < InlineExamsGrid\r\n data={petData.exams}\r\n examIdentifier={examData.id}\r\n petTitle={examData.petname + \" (\" + examData.ownerfirst + \" \" + examData.ownerlast + \")\"}\r\n returnToLabel=\"Return to Exam\"\r\n />\r\n
}\r\n
) : null}\r\n \r\n );\r\n};\r\nexport default ExamViewClientPet;\r\n","import * as React from \"react\";\r\n\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\n\r\nimport {\r\n TabStrip,\r\n TabStripSelectEventArguments,\r\n TabStripTab,\r\n} from \"@progress/kendo-react-layout\";\r\n\r\nimport {\r\n Grid,\r\n GridColumn,\r\n GridCellProps,\r\n GridSortChangeEvent,\r\n GridFilterChangeEvent,\r\n GridSelectionChangeEvent,\r\n getSelectedState,\r\n} from \"@progress/kendo-react-grid\";\r\nimport { getter } from \"@progress/kendo-react-common\";\r\nimport {\r\n orderBy,\r\n SortDescriptor,\r\n filterBy,\r\n CompositeFilterDescriptor,\r\n} from \"@progress/kendo-data-query\";\r\n\r\nimport NavigateToLogin from \"../NavigateToLogin\";\r\n\r\nimport { useGetExamsActiveQuery } from '../../store/sunbright-api';\r\nimport { useGetExamsQuery } from '../../store/sunbright-api';\r\n\r\nimport Exam from \"./Exam\";\r\nimport ExamNew from \"./ExamNew\";\r\n\r\nconst cellWithColor = (props: GridCellProps) => {\r\n const status = props.dataItem.Status;\r\n const color = (status === \"Closed\" || status === \"Pending\") ? \"#999\" : ((status === \"Submitted\") ? \"#5cb85c\" : \"#5bc0de\"); // gray : green : blue\r\n\r\n const style = {\r\n color: color,\r\n fontWeight: \"900\",\r\n };\r\n const field = props.field || \"\";\r\n return (\r\n \r\n {props.dataItem[field]}\r\n \r\n );\r\n};\r\n\r\nconst initialSortActive: Array = [\r\n { field: \"id\", dir: \"desc\" },\r\n];\r\nconst initialSortClosed: Array = [\r\n { field: \"id\", dir: \"desc\" },\r\n];\r\n\r\nconst initialFilterActive: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: []\r\n};\r\nconst initialFilterClosed: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: []\r\n};\r\n\r\nconst DATA_ITEM_KEY = \"uid\";\r\nconst SELECTED_FIELD = \"selected\";\r\nconst idGetter = getter(DATA_ITEM_KEY);\r\n\r\nconst ExamsGrid = (props: any) => {\r\n const { data:dataActive, error:errorActive, isLoading:isLoadingActive } = useGetExamsActiveQuery(\"test\");\r\n const { data, error, isLoading } = useGetExamsQuery(\"test\");\r\n\r\n const [gridHeightActive, setGridHeightActive] = React.useState(\"600px\");\r\n const [gridHeight, setGridHeight] = React.useState(\"600px\");\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n }, []);\r\n React.useEffect(() => {\r\n setGridHeightActive((window.innerHeight - 140) + \"px\");\r\n }, [dataActive]);\r\n React.useEffect(() => {\r\n setGridHeight((window.innerHeight - 140) + \"px\");\r\n }, [data]);\r\n\r\n const handleResize = () => {\r\n setGridHeightActive((window.innerHeight - 140) + \"px\");\r\n setGridHeight((window.innerHeight - 140) + \"px\");\r\n };\r\n\r\n const [sortActive, setSortActive] = React.useState(initialSortActive);\r\n const [sortClosed, setSortClosed] = React.useState(initialSortClosed);\r\n const [filterActive, setFilterActive] = React.useState(initialFilterActive);\r\n const [filterClosed, setFilterClosed] = React.useState(initialFilterClosed);\r\n\r\n const [selectedTab, setSelectedTab] = React.useState(0);\r\n\r\n const handleSelectTab = (e: TabStripSelectEventArguments) => {\r\n setSelectedTab(e.selected);\r\n };\r\n\r\n const [selectedUID, setSelectedUID] = React.useState(\"\");\r\n\r\n const [newExam, setNewExam] = React.useState(false);\r\n\r\n const [selectedStateActive, setSelectedStateActive] = React.useState<{\r\n [id: string]: boolean | number[];\r\n }>({});\r\n\r\n const handleSelectionChangeActive = (e: GridSelectionChangeEvent) => {\r\n const newState = getSelectedState({\r\n event: e,\r\n selectedState: selectedStateActive,\r\n dataItemKey: DATA_ITEM_KEY,\r\n })\r\n setSelectedStateActive(newState);\r\n\r\n setSelectedUID(Object.keys(newState)[0]);\r\n };\r\n\r\n const [selectedStateClosed, setSelectedStateClosed] = React.useState<{\r\n [id: string]: boolean | number[];\r\n }>({});\r\n\r\n const handleSelectionChangeClosed = (e: GridSelectionChangeEvent) => {\r\n const newState = getSelectedState({\r\n event: e,\r\n selectedState: selectedStateClosed,\r\n dataItemKey: DATA_ITEM_KEY,\r\n })\r\n setSelectedStateClosed(newState);\r\n\r\n setSelectedUID(Object.keys(newState)[0]);\r\n };\r\n\r\n return (\r\n \r\n {(selectedUID.length !== 0) ?\r\n (< Exam\r\n examID={selectedUID}\r\n returnLabel=\"Return to Exams\"\r\n viewOnly={false}\r\n onReturn={() => setSelectedUID(\"\")}\r\n />\r\n ) :\r\n (newExam ?\r\n ( setNewExam(false)}\r\n />) :\r\n (
\r\n setNewExam(true)}\r\n style={{ position: \"absolute\", top: \"46px\", right: \"64px\", width: \"128px\", zIndex:\"99\" }}>\r\n New Exam\r\n \r\n \r\n \r\n {errorActive ? () : isLoadingActive ? : dataActive ? (\r\n ({\r\n ...item,\r\n [SELECTED_FIELD]: selectedStateActive[idGetter(item)]\r\n })), filterActive), sortActive)}\r\n sortable={true}\r\n sort={sortActive}\r\n onSortChange={(e: GridSortChangeEvent) => setSortActive(e.sort)}\r\n filterable={true}\r\n filter={filterActive}\r\n onFilterChange={(e: GridFilterChangeEvent) => setFilterActive(e.filter)}\r\n resizable={true}\r\n reorderable={true}\r\n dataItemKey={DATA_ITEM_KEY}\r\n selectedField={SELECTED_FIELD}\r\n selectable={{\r\n enabled: true,\r\n mode: \"single\",\r\n }}\r\n onSelectionChange={handleSelectionChangeActive}\r\n size={\"small\"}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n \r\n \r\n {error ? () : isLoading ? : data ? (\r\n ({\r\n ...item,\r\n [SELECTED_FIELD]: selectedStateClosed[idGetter(item)]\r\n })), filterClosed), sortClosed)}\r\n sortable={true}\r\n sort={sortClosed}\r\n onSortChange={(e: GridSortChangeEvent) => setSortClosed(e.sort)}\r\n filterable={true}\r\n filter={filterClosed}\r\n onFilterChange={(e: GridFilterChangeEvent) => setFilterClosed(e.filter)}\r\n resizable={true}\r\n reorderable={true}\r\n dataItemKey={DATA_ITEM_KEY}\r\n selectedField={SELECTED_FIELD}\r\n selectable={{\r\n enabled: true,\r\n mode: \"single\",\r\n }}\r\n onSelectionChange={handleSelectionChangeClosed}\r\n size={\"small\"}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n \r\n \r\n
)\r\n )}\r\n
\r\n );\r\n}\r\nexport default ExamsGrid;\r\n","import * as React from \"react\";\r\n\r\nimport {\r\n Grid,\r\n GridColumn,\r\n GridCellProps,\r\n GridSortChangeEvent,\r\n GridSelectionChangeEvent,\r\n getSelectedState,\r\n GridProps\r\n} from \"@progress/kendo-react-grid\";\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\nimport { getter } from \"@progress/kendo-react-common\";\r\nimport {\r\n orderBy,\r\n SortDescriptor,\r\n filterBy,\r\n CompositeFilterDescriptor,\r\n} from \"@progress/kendo-data-query\";\r\n\r\nimport Exam from './Exam'\r\nexport interface InlineExamsGridProps extends GridProps {\r\n data: any;\r\n petTitle: string;\r\n examIdentifier?: string;\r\n returnToLabel: string;\r\n}\r\n\r\nconst cellWithColor = (props: GridCellProps) => {\r\n const status = props.dataItem.Status;\r\n const color = (status === \"Closed\" || status === \"Pending\") ? \"#999\" : ((status === \"Submitted\") ? \"#5cb85c\" : \"#5bc0de\"); // gray : green : blue\r\n\r\n const style = {\r\n color: color,\r\n fontWeight: \"900\"\r\n };\r\n const field = props.field || \"\";\r\n return (\r\n \r\n {props.dataItem[field]}\r\n \r\n );\r\n};\r\n\r\nconst initialSort: Array = [\r\n { field: \"submitted\", dir: \"desc\" },\r\n];\r\n\r\nconst DATA_ITEM_KEY = \"uid\";\r\nconst SELECTED_FIELD = \"selected\";\r\nconst idGetter = getter(DATA_ITEM_KEY);\r\n\r\nconst InlineExamsGrid = ({\r\n data,\r\n petTitle,\r\n returnToLabel,\r\n examIdentifier,\r\n ...gridProps\r\n}: InlineExamsGridProps) => {\r\n\r\n const [selectedUID, setSelectedUID] = React.useState(\"\");\r\n\r\n const [selectedState, setSelectedState] = React.useState<{\r\n [id: string]: boolean | number[];\r\n }>({});\r\n\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [showExam, setShowExam] = React.useState(false);\r\n\r\n const initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [{ field: \"id\", operator: \"ne\", value: examIdentifier ? examIdentifier : \"\"}]\r\n };\r\n\r\n const handleSelectionChange = (e: GridSelectionChangeEvent) => {\r\n const newState = getSelectedState({\r\n event: e,\r\n selectedState: selectedState,\r\n dataItemKey: DATA_ITEM_KEY,\r\n })\r\n setSelectedState(newState);\r\n setSelectedUID(Object.keys(newState)[0]);\r\n\r\n setShowExam(true);\r\n };\r\n\r\n return (\r\n \r\n {!showExam ?\r\n ( ({\r\n ...item,\r\n [SELECTED_FIELD]: selectedState[idGetter(item)]\r\n })), initialFilter), sort)}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => setSort(e.sort)}\r\n resizable={true}\r\n reorderable={true}\r\n dataItemKey={DATA_ITEM_KEY}\r\n selectedField={SELECTED_FIELD}\r\n selectable={{\r\n enabled: true,\r\n mode: \"single\",\r\n }}\r\n onSelectionChange={(e) => handleSelectionChange(e)}\r\n size={\"small\"}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) :\r\n ( setShowExam(false)}\r\n >\r\n setSelectedUID(\"\")}\r\n />\r\n )\r\n }\r\n \r\n );\r\n}\r\nexport default InlineExamsGrid;\r\n","import * as React from \"react\";\r\n\r\nimport {\r\n Grid,\r\n GridColumn,\r\n GridCellProps,\r\n GridSortChangeEvent,\r\n GridFilterChangeEvent,\r\n GridSelectionChangeEvent,\r\n getSelectedState,\r\n GridProps\r\n} from \"@progress/kendo-react-grid\";\r\nimport { Button, ButtonGroup } from \"@progress/kendo-react-buttons\";\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\nimport { getter } from \"@progress/kendo-react-common\";\r\nimport {\r\n orderBy,\r\n SortDescriptor,\r\n filterBy,\r\n CompositeFilterDescriptor,\r\n} from \"@progress/kendo-data-query\";\r\nimport { GridPDFExport } from \"@progress/kendo-react-pdf\";\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\n\r\nimport Exam from './Exam/Exam'\r\nimport NavigateToLogin from \"./NavigateToLogin\";\r\n\r\nimport { useGetFollowUpExamsQuery } from '../store/sunbright-api';\r\n\r\nexport interface FollowupExamsGridProps extends GridProps {\r\n eventID: number;\r\n}\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: []\r\n};\r\n\r\nconst DATA_ITEM_KEY = \"uid\";\r\nconst SELECTED_FIELD = \"selected\";\r\nconst idGetter = getter(DATA_ITEM_KEY);\r\n\r\nconst FollupExamsGrid = ({\r\n eventID,\r\n ...gridProps\r\n}: FollowupExamsGridProps) => {\r\n\r\n const { data: followupExams, error: error, isLoading: loading } = useGetFollowUpExamsQuery(eventID);\r\n\r\n const [selectedUID, setSelectedUID] = React.useState(\"\");\r\n const [selectedPet, setSelectedPet] = React.useState(\"\");\r\n\r\n const [selectedState, setSelectedState] = React.useState<{\r\n [id: string]: boolean | number[];\r\n }>({});\r\n\r\n const [showExam, setShowExam] = React.useState(false);\r\n\r\n const [filter, setFilter] = React.useState(initialFilter);\r\n\r\n const handleSelectionChange = (e: GridSelectionChangeEvent) => {\r\n const newState = getSelectedState({\r\n event: e,\r\n selectedState: selectedState,\r\n dataItemKey: DATA_ITEM_KEY,\r\n })\r\n setSelectedState(newState);\r\n setSelectedUID(Object.keys(newState)[0]);\r\n\r\n if (e && e.dataItems && (e.dataItems.length > 0)) {\r\n setSelectedPet(e.dataItems[0].pet)\r\n }\r\n\r\n setShowExam(true);\r\n };\r\n\r\n const grid = (\r\n
\r\n {error ? () : loading ? : followupExams ? (\r\n setFilter(e.filter)}\r\n resizable={true}\r\n reorderable={true}\r\n dataItemKey={DATA_ITEM_KEY}\r\n selectedField={SELECTED_FIELD}\r\n selectable={{\r\n enabled: true,\r\n mode: \"single\",\r\n }}\r\n size={\"small\"}\r\n onSelectionChange={(e) => handleSelectionChange(e)}\r\n data={filterBy(followupExams.map((item: any) => ({\r\n ...item,\r\n [SELECTED_FIELD]: selectedState[idGetter(item)]\r\n })), filter)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n
\r\n );\r\n const pdfGrid = (\r\n handleSelectionChange(e)}\r\n data={followupExams}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n let gridPDFExport: GridPDFExport | null;\r\n const exportPDF = () => {\r\n if (gridPDFExport !== null) {\r\n gridPDFExport.save(followupExams ? filterBy(followupExams.map((item: any) => ({\r\n ...item\r\n })), filter) : undefined);\r\n }\r\n };\r\n\r\n return (\r\n \r\n {!showExam ?\r\n (
\r\n
\r\n \r\n exportPDF()}\r\n themeColor={\"primary\"}>\r\n PDF\r\n \r\n \r\n
\r\n
\r\n { grid }\r\n (gridPDFExport = pdfExport)}>\r\n { pdfGrid }\r\n \r\n
\r\n
) :\r\n ( setShowExam(false)}\r\n >\r\n setSelectedUID(\"\")}\r\n />\r\n )\r\n }\r\n
\r\n );\r\n}\r\nexport default FollupExamsGrid;\r\n","import { getDate, isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setHours } from '../utils';\nvar HOURS_IN_DAY = 24;\nvar clampToRange = function (rangeValue) { return function (value) { return value % rangeValue; }; };\nvar clamp = clampToRange(HOURS_IN_DAY);\nvar stepper = function (start, step) { return function (idx) { return clamp(start + (idx * step)); }; };\nvar distanceFromMin = function (value, min) { return clamp(HOURS_IN_DAY + value - min); };\nvar limit = function (borderValue) { return function (barrier, value) {\n var useBarrier = !value || getDate(barrier).getTime() === getDate(value).getTime();\n return useBarrier ? barrier : setHours(barrier, borderValue);\n}; };\nvar limitDown = limit(0);\nvar limitUp = limit(HOURS_IN_DAY - 1);\n/**\n * @hidden\n */\nvar HoursService = /** @class */ (function () {\n function HoursService(intl) {\n this.intl = intl;\n this.boundRange = false;\n this.insertUndividedMax = false;\n this.min = null;\n this.max = null;\n this.step = 0;\n this.toListItem = null;\n }\n HoursService.prototype.apply = function (value, candidate) {\n return setHours(value, candidate.getHours());\n };\n HoursService.prototype.configure = function (settings) {\n var _this = this;\n var _a = settings.boundRange, boundRange = _a === void 0 ? this.boundRange : _a, _b = settings.insertUndividedMax, insertUndividedMax = _b === void 0 ? this.insertUndividedMax : _b, _c = settings.min, min = _c === void 0 ? this.min : _c, _d = settings.max, max = _d === void 0 ? this.max : _d, part = settings.part, _e = settings.step, step = _e === void 0 ? this.step : _e;\n this.boundRange = boundRange;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = function (hour) {\n var date = setHours(MIDNIGHT_DATE, hour);\n return {\n text: _this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n };\n HoursService.prototype.data = function (selectedValue) {\n var _this = this;\n var min = this.range(selectedValue)[0];\n var getHour = stepper(min, this.step);\n var convertToItem = function (idx) { return (_this.toListItem && _this.toListItem(getHour(idx))); };\n var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n if (selectedValue) {\n this.addMissing(data, selectedValue);\n }\n return data;\n };\n HoursService.prototype.isRangeChanged = function (min, max) {\n if (!this.min || !this.max) {\n return false;\n }\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n };\n HoursService.prototype.limitRange = function (min, max, value) {\n return this.boundRange ? [limitDown(min, value), limitUp(max, value)] : [min, max];\n };\n HoursService.prototype.total = function (value) {\n var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n var missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n };\n HoursService.prototype.selectedIndex = function (value) {\n return Math.ceil(this.divideByStep(value));\n };\n HoursService.prototype.valueInList = function (value) {\n if (!value) {\n return true;\n }\n var matchMax = this.insertUndividedMax && this.lastHour(value) === value.getHours();\n return matchMax || !this.isMissing(value);\n };\n HoursService.prototype.addLast = function (data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value) && this.toListItem) {\n data.push(this.toListItem(this.lastHour(value)));\n }\n return data;\n };\n HoursService.prototype.addMissing = function (data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n if (this.toListItem) {\n var missingItem = this.toListItem(value.getHours());\n data.splice(this.selectedIndex(value), 0, missingItem);\n }\n return data;\n };\n HoursService.prototype.countFromMin = function (value) {\n var _a = this.range(value), min = _a[0], max = _a[1];\n return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n };\n HoursService.prototype.isMissing = function (value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n };\n HoursService.prototype.isLastMissing = function (value) {\n return this.max !== null && this.isMissing(setHours(this.max, this.lastHour(value)));\n };\n HoursService.prototype.divideByStep = function (value) {\n return distanceFromMin(value.getHours(), this.min.getHours()) / this.step;\n };\n HoursService.prototype.lastHour = function (value) {\n return this.range(value)[1];\n };\n HoursService.prototype.range = function (value) {\n var _a = this.limitRange(this.min, this.max, value), min = _a[0], max = _a[1];\n return [min.getHours(), max.getHours()];\n };\n return HoursService;\n}());\nexport { HoursService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _a, _b;\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { getActiveElement, Keys, noop } from '@progress/kendo-react-common';\nimport { provideIntlService, registerForIntl } from '@progress/kendo-react-intl';\nimport { Virtualization } from '../virtualization/Virtualization';\nimport { TIME_PART } from './models';\nimport { SecondsService, MinutesService, HoursService, DayPeriodService, DOMService } from './services';\nimport { debounce, MAX_TIME, MIDNIGHT_DATE } from '../utils';\nvar SCROLL_THRESHOLD = 2; // < 2px threshold\nvar SNAP_THRESHOLD = 0.05; // % of the item height\nvar SCROLL_THROTTLE = 100; // ms\nvar SKIP = 0;\nvar MOBILE_MODE_OFFSET = 9;\nvar getters = (_a = {},\n _a[Keys.end] = function (data, _) { return data[data.length - 1]; },\n _a[Keys.home] = function (data, _) { return data[0]; },\n _a[Keys.up] = function (data, index) { return data[index - 1]; },\n _a[Keys.down] = function (data, index) { return data[index + 1]; },\n _a);\nvar services = (_b = {},\n _b[TIME_PART.dayperiod] = DayPeriodService,\n _b[TIME_PART.hour] = HoursService,\n _b[TIME_PART.minute] = MinutesService,\n _b[TIME_PART.second] = SecondsService,\n _b);\n/**\n * @hidden\n */\nvar TimeList = /** @class */ (function (_super) {\n __extends(TimeList, _super);\n function TimeList(props) {\n var _this = _super.call(this, props) || this;\n _this.intl = null;\n _this._element = null;\n _this.service = null;\n _this.virtualization = null;\n _this.topOffset = 0;\n _this.bottomOffset = 0;\n _this.itemHeight = 0;\n _this.listHeight = 0;\n _this.topThreshold = 0;\n _this.bottomThreshold = 0;\n _this.animateToIndex = false;\n _this.focus = function (args) {\n Promise.resolve().then(function () {\n if (!_this.element) {\n return;\n }\n _this.element.focus(args);\n });\n };\n _this.itemOffset = function (scrollTop) {\n if (!_this.virtualization || !_this.service) {\n return -1;\n }\n var valueIndex = _this.service.selectedIndex(_this.props.value);\n var activeIndex = _this.virtualization.activeIndex();\n var offset = _this.virtualization.itemOffset(activeIndex);\n var distance = Math.abs(Math.ceil(scrollTop) - offset);\n if (valueIndex === activeIndex && distance < SCROLL_THRESHOLD) {\n return offset;\n }\n var scrollUp = valueIndex > activeIndex;\n var moveToNext = scrollUp && distance >= _this.bottomThreshold || !scrollUp && distance > _this.topThreshold;\n return moveToNext ? _this.virtualization.itemOffset(activeIndex + 1) : offset;\n };\n _this.calculateHeights = function () {\n if (!_this.dom.didCalculate) {\n return;\n }\n _this.itemHeight = _this.dom.itemHeight;\n _this.listHeight = _this.dom.timeListHeight;\n _this.topOffset = (_this.listHeight - _this.itemHeight) / 2;\n _this.bottomOffset = _this.listHeight - _this.itemHeight;\n if (_this.props.mobileMode) {\n _this.topOffset += MOBILE_MODE_OFFSET;\n _this.bottomOffset += MOBILE_MODE_OFFSET * 2;\n }\n _this.topThreshold = _this.itemHeight * SNAP_THRESHOLD;\n _this.bottomThreshold = _this.itemHeight * (1 - SNAP_THRESHOLD);\n };\n _this.configureServices = function (_a) {\n var _b = _a === void 0 ? _this.props : _a, min = _b.min, max = _b.max, value = _b.value;\n if (_this.service) {\n var _c = _this.service.limitRange(min || _this.min, max || _this.max, value || _this.props.value), newMin = _c[0], newMax = _c[1];\n _this.service.configure(_this.serviceSettings({ min: newMin, max: newMax }));\n }\n };\n _this.serviceSettings = function (settings) {\n var defaults = {\n boundRange: _this.props.boundRange || TimeList.defaultProps.boundRange,\n insertUndividedMax: false,\n min: cloneDate(_this.min),\n max: cloneDate(_this.max),\n part: _this.props.part,\n step: _this.step\n };\n var result = Object.assign({}, defaults, settings);\n result.boundRange = result.part.type !== 'hour' || _this.props.boundRange || TimeList.defaultProps.boundRange;\n return result;\n };\n _this.handleScrollAction = function (_a) {\n var target = _a.target, animationInProgress = _a.animationInProgress;\n if (!_this.virtualization || !_this.service) {\n return;\n }\n if (target && !animationInProgress) {\n _this.animateToIndex = false;\n var index = _this.virtualization.itemIndex(_this.itemOffset(target.scrollTop));\n var dataItem = _this.service.data(_this.props.value)[index];\n _this.handleChange(dataItem);\n }\n };\n _this.handleFocus = function (event) {\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handleMouseOver = function () {\n if (!_this._element) {\n return;\n }\n var activeElement = getActiveElement(document);\n if (document && activeElement !== _this._element && _this.props.show) {\n _this._element.focus({ preventScroll: true });\n }\n };\n _this.handleKeyDown = function (event) {\n if (!_this.service) {\n return;\n }\n var keyCode = event.keyCode;\n if (keyCode === Keys.down\n || keyCode === Keys.up\n || keyCode === Keys.end\n || keyCode === Keys.home) {\n event.preventDefault();\n }\n var getter = getters[event.keyCode] || noop;\n var dataItem = getter(_this.service.data(_this.props.value), _this.service.selectedIndex(_this.props.value));\n if (dataItem) {\n _this.handleChange(dataItem);\n }\n };\n _this.handleChange = debounce(function (dataItem) {\n if (!_this.service) {\n return;\n }\n var candidate = _this.service.apply(_this.props.value, dataItem.value);\n if (_this.props.value.getTime() === candidate.getTime()) {\n return;\n }\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, candidate);\n }\n }, SCROLL_THROTTLE);\n _this.dom = new DOMService();\n return _this;\n }\n Object.defineProperty(TimeList.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"animate\", {\n get: function () {\n return Boolean(this.props.smoothScroll && this.animateToIndex);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"min\", {\n get: function () {\n return this.props.min || TimeList.defaultProps.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"max\", {\n get: function () {\n return this.props.max || TimeList.defaultProps.max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"step\", {\n get: function () {\n return this.props.step !== undefined && this.props.step !== 0\n ? Math.floor(this.props.step)\n : TimeList.defaultProps.step;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n TimeList.prototype.componentDidMount = function () {\n var _this = this;\n // Async calculation of height to avoid animation cancellation\n Promise.resolve().then(function () {\n if (!_this._element) {\n return;\n }\n _this.dom.calculateHeights(_this._element);\n _this.forceUpdate();\n });\n };\n /**\n * @hidden\n */\n TimeList.prototype.componentDidUpdate = function () {\n if (!this.virtualization || !this.service) {\n return;\n }\n var index = this.service.selectedIndex(this.props.value);\n this.virtualization[this.animate ? 'animateToIndex' : 'scrollToIndex'](index);\n this.animateToIndex = true;\n };\n /**\n * @hidden\n */\n TimeList.prototype.render = function () {\n var _this = this;\n if (!this.props.part.type || !services[this.props.part.type]) {\n return;\n }\n this.calculateHeights();\n this.intl = provideIntlService(this);\n this.service = new services[this.props.part.type](this.intl);\n this.configureServices();\n var data = this.service.data(this.props.value);\n var transform = 'translateY(' + this.topOffset + 'px)';\n var total = this.service.total(this.props.value);\n var list = (React.createElement(\"ul\", { style: { transform: transform, msTransform: transform }, className: \"k-reset\" }, data.map(function (item, idx) {\n return (React.createElement(\"li\", { key: idx, className: \"k-item\", onClick: function () { _this.handleChange(item); } },\n React.createElement(\"span\", null, item.text)));\n })));\n return (React.createElement(\"div\", { className: \"k-time-list\", id: String(this.props.id || ''), tabIndex: this.props.disabled ? -1 : 0, ref: function (el) { _this._element = el; }, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, onMouseOver: this.handleMouseOver }, this.dom.didCalculate\n ? (React.createElement(Virtualization, { bottomOffset: this.bottomOffset, children: list, className: \"k-time-container\", itemHeight: this.itemHeight, maxScrollDifference: this.listHeight, onScrollAction: this.handleScrollAction, ref: function (el) { _this.virtualization = el; }, role: \"presentation\", skip: SKIP, tabIndex: -1, take: total, topOffset: this.topOffset, total: total }))\n : (React.createElement(\"div\", { className: \"k-time-container\" }, list))));\n };\n TimeList.propTypes = {\n id: PropTypes.number,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n part: function (props, propName, componentName) {\n var prop = props[propName];\n if (!prop || !services[prop.type]) {\n throw new Error(\"\\n Invalid prop '\".concat(propName, \"' supplied to \").concat(componentName, \".\\n Supported part types are hour|minute|second|dayperiod.\\n \"));\n }\n return null;\n },\n step: function (props, propName, componentName) {\n var prop = props[propName];\n if (prop !== undefined && prop <= 0) {\n throw new Error(\"\\n Invalid prop '\".concat(propName, \"' supplied to \").concat(componentName, \".\\n \").concat(propName, \" cannot be less than 1.\\n \"));\n }\n return null;\n },\n value: PropTypes.instanceOf(Date),\n smoothScroll: PropTypes.bool,\n show: PropTypes.bool\n };\n TimeList.defaultProps = {\n boundRange: false,\n max: MAX_TIME,\n min: MIDNIGHT_DATE,\n step: 1,\n smoothScroll: true\n };\n return TimeList;\n}(React.Component));\nexport { TimeList };\nregisterForIntl(TimeList);\n","import { cloneDate } from '@progress/kendo-date-math';\nvar setHours = function (date, hours) {\n var clone = cloneDate(date);\n clone.setHours(hours);\n return clone;\n};\nvar isAM = function (value) { return value !== null && value < 12; };\nvar isPM = function (value) { return value !== null && (!value || value > 11); };\nvar inRange = function (value, min, max) { return ((!min && !max) || (value >= min && value <= max)); };\nvar inReverseRange = function (value, min, max) { return ((!min && !max) || value >= min || value <= max); };\n/**\n * @hidden\n */\nvar DayPeriodService = /** @class */ (function () {\n function DayPeriodService(intl) {\n this.intl = intl;\n this.min = null;\n this.max = null;\n this.part = null;\n }\n /**\n * @hidden\n */\n DayPeriodService.prototype.apply = function (value, candidate) {\n var hour = value.getHours();\n var hourAM = isAM(hour);\n var candidateAM = isAM(candidate.getHours());\n if ((hourAM && candidateAM) || (!hourAM && !candidateAM)) {\n return value;\n }\n var _a = this.normalizedRange(), min = _a[0], _b = _a[1], max = _b === void 0 ? 24 : _b;\n var result = hour + (candidateAM ? -12 : 12);\n return setHours(value, Math.min(Math.max(min, result), (max || 24)));\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.configure = function (settings) {\n var _a = settings.min, min = _a === void 0 ? this.min : _a, _b = settings.max, max = _b === void 0 ? this.max : _b, _c = settings.part, part = _c === void 0 ? this.part : _c;\n this.min = min;\n this.max = max;\n this.part = part;\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.data = function (_) {\n var names = this.part && this.part.names;\n if (!names || !this.min) {\n return [];\n }\n var data = [];\n var _a = this.normalizedRange(), min = _a[0], max = _a[1];\n var dayPeriod = this.intl.dateFormatNames(names);\n if (isAM(min)) {\n data.push({ text: dayPeriod.am, value: setHours(this.min, min) });\n }\n if (isPM(max)) {\n data.push({ text: dayPeriod.pm, value: setHours(this.min, Math.max(12, max)) });\n }\n return this.min.getHours() !== min ? data.reverse() : data;\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.isRangeChanged = function (_, __) {\n return false;\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.limitRange = function (min, max, _) {\n return [min, max];\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.total = function () {\n var _a = this.normalizedRange(), min = _a[0], max = _a[1];\n if (!min && !max) {\n return 2;\n }\n if (min > 11 || max < 12) {\n return 1;\n }\n return 2;\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.selectedIndex = function (value) {\n if (!this.valueInList(value) || !this.min) {\n return -1;\n }\n var index = Math.floor(value.getHours() / 12);\n return this.min.getHours() === this.normalizedRange()[0] ? index : (index === 0 ? 1 : 0);\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.valueInList = function (value) {\n if (!this.min || !this.max) {\n return false;\n }\n var reverse = this.min.getHours() !== this.normalizedRange()[0];\n var isInRange = reverse ? inReverseRange : inRange;\n return isInRange(value.getHours(), this.min.getHours(), this.max.getHours());\n };\n DayPeriodService.prototype.normalizedRange = function () {\n var minHour = this.min.getHours();\n var maxHour = this.max.getHours();\n return [\n Math.min(minHour, maxHour),\n Math.max(minHour, maxHour)\n ];\n };\n return DayPeriodService;\n}());\nexport { DayPeriodService };\n","import { isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setMinutes } from '../utils';\nvar MINUTES_IN_HOUR = 60;\nvar clampToRange = function (rangeValue) { return function (value) { return value % rangeValue; }; };\nvar clamp = clampToRange(MINUTES_IN_HOUR);\nvar stepper = function (start, step) { return function (idx) { return clamp(start + (idx * step)); }; };\nvar distanceFromMin = function (value, min) { return clamp(MINUTES_IN_HOUR + value - min); };\nvar limit = function (borderValue) { return function (barrier, value) {\n var useBarrier = !value || barrier.getHours() === value.getHours();\n return useBarrier ? barrier : setMinutes(barrier, borderValue);\n}; };\nvar limitDown = limit(0);\nvar limitUp = limit(MINUTES_IN_HOUR - 1);\n/**\n * @hidden\n */\nvar MinutesService = /** @class */ (function () {\n function MinutesService(intl) {\n this.intl = intl;\n this.toListItem = null;\n this.min = null;\n this.max = null;\n this.step = 0;\n this.insertUndividedMax = false;\n }\n MinutesService.prototype.apply = function (value, candidate) {\n return setMinutes(value, candidate.getMinutes());\n };\n MinutesService.prototype.configure = function (settings) {\n var _this = this;\n var _a = settings.insertUndividedMax, insertUndividedMax = _a === void 0 ? this.insertUndividedMax : _a, _b = settings.min, min = _b === void 0 ? this.min : _b, _c = settings.max, max = _c === void 0 ? this.max : _c, part = settings.part, _d = settings.step, step = _d === void 0 ? this.step : _d;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = function (minute) {\n var date = setMinutes(MIDNIGHT_DATE, minute);\n return {\n text: _this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n };\n MinutesService.prototype.data = function (selectedValue) {\n var _this = this;\n var min = this.range(selectedValue)[0];\n var getMinute = stepper(min, this.step);\n var convertToItem = function (idx) { return (_this.toListItem && _this.toListItem(getMinute(idx))); };\n var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n if (selectedValue) {\n this.addMissing(data, selectedValue);\n }\n return data;\n };\n MinutesService.prototype.isRangeChanged = function (min, max) {\n return (this.min !== null && this.max !== null) && (!isEqual(this.min, min) || !isEqual(this.max, max));\n };\n MinutesService.prototype.limitRange = function (min, max, value) {\n return [limitDown(min, value), limitUp(max, value)];\n };\n MinutesService.prototype.total = function (value) {\n var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n var missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n };\n MinutesService.prototype.selectedIndex = function (value) {\n return Math.ceil(this.divideByStep(value));\n };\n MinutesService.prototype.valueInList = function (value) {\n if (!value) {\n return true;\n }\n var matchMax = this.insertUndividedMax && this.lastMinute(value) === value.getMinutes();\n return matchMax || !this.isMissing(value);\n };\n MinutesService.prototype.addLast = function (data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value) && this.toListItem) {\n data.push(this.toListItem(this.lastMinute(value)));\n }\n return data;\n };\n MinutesService.prototype.addMissing = function (data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n if (this.toListItem) {\n var missingItem = this.toListItem(value.getMinutes());\n data.splice(this.selectedIndex(value), 0, missingItem);\n }\n return data;\n };\n MinutesService.prototype.countFromMin = function (value) {\n var _a = this.range(value), min = _a[0], max = _a[1];\n return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n };\n MinutesService.prototype.isMissing = function (value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n };\n MinutesService.prototype.isLastMissing = function (value) {\n return this.max !== null && this.isMissing(setMinutes(this.max, this.lastMinute(value)));\n };\n MinutesService.prototype.divideByStep = function (value) {\n return distanceFromMin(value.getMinutes(), this.min.getMinutes()) / this.step;\n };\n MinutesService.prototype.lastMinute = function (value) {\n return this.range(value)[1];\n };\n MinutesService.prototype.range = function (value) {\n var _a = this.limitRange(this.min, this.max, value), min = _a[0], max = _a[1];\n return [min.getMinutes(), max.getMinutes()];\n };\n return MinutesService;\n}());\nexport { MinutesService };\n","import { isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setSeconds } from '../utils';\nvar SECONDS_IN_HOUR = 60;\nvar clampToRange = function (rangeValue) { return function (value) { return value % rangeValue; }; };\nvar clamp = clampToRange(SECONDS_IN_HOUR);\nvar stepper = function (start, step) { return function (idx) { return clamp(start + (idx * step)); }; };\nvar distanceFromMin = function (value, min) { return clamp(SECONDS_IN_HOUR + value - min); };\nvar limit = function (borderValue) { return function (barrier, value) {\n var useBarrier = !value ||\n (barrier.getMinutes() === value.getMinutes() && barrier.getHours() === value.getHours());\n return useBarrier ? barrier : setSeconds(barrier, borderValue);\n}; };\nvar limitDown = limit(0);\nvar limitUp = limit(SECONDS_IN_HOUR - 1);\n/**\n * @hidden\n */\nvar SecondsService = /** @class */ (function () {\n function SecondsService(intl) {\n this.intl = intl;\n this.toListItem = null;\n this.min = null;\n this.max = null;\n this.step = 0;\n this.insertUndividedMax = false;\n }\n SecondsService.prototype.apply = function (value, candidate) {\n return setSeconds(value, candidate.getSeconds());\n };\n SecondsService.prototype.configure = function (settings) {\n var _this = this;\n var _a = settings.insertUndividedMax, insertUndividedMax = _a === void 0 ? this.insertUndividedMax : _a, _b = settings.min, min = _b === void 0 ? this.min : _b, _c = settings.max, max = _c === void 0 ? this.max : _c, part = settings.part, _d = settings.step, step = _d === void 0 ? this.step : _d;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = function (minute) {\n var date = setSeconds(MIDNIGHT_DATE, minute);\n return {\n text: _this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n };\n SecondsService.prototype.data = function (selectedValue) {\n var _this = this;\n var min = this.range(selectedValue)[0];\n var getSecond = stepper(min, this.step);\n var convertToItem = function (idx) { return (_this.toListItem && _this.toListItem(getSecond(idx))); };\n var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n if (selectedValue) {\n this.addMissing(data, selectedValue);\n }\n return data;\n };\n SecondsService.prototype.isRangeChanged = function (min, max) {\n return this.min !== null && this.max !== null && (!isEqual(this.min, min) || !isEqual(this.max, max));\n };\n SecondsService.prototype.limitRange = function (min, max, value) {\n return [limitDown(min, value), limitUp(max, value)];\n };\n SecondsService.prototype.total = function (value) {\n var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n var missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n };\n SecondsService.prototype.selectedIndex = function (value) {\n return Math.ceil(this.divideByStep(value));\n };\n SecondsService.prototype.valueInList = function (value) {\n if (!value) {\n return true;\n }\n var matchMax = this.insertUndividedMax && this.lastSecond(value) === value.getSeconds();\n return matchMax || !this.isMissing(value);\n };\n SecondsService.prototype.divideByStep = function (value) {\n return distanceFromMin(value.getSeconds(), this.min.getSeconds()) / this.step;\n };\n SecondsService.prototype.addLast = function (data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value) && this.toListItem) {\n data.push(this.toListItem(this.lastSecond(value)));\n }\n return data;\n };\n SecondsService.prototype.addMissing = function (data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n if (this.toListItem) {\n var missingItem = this.toListItem(value.getSeconds());\n data.splice(this.selectedIndex(value), 0, missingItem);\n }\n return data;\n };\n SecondsService.prototype.countFromMin = function (value) {\n var _a = this.range(value), min = _a[0], max = _a[1];\n return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n };\n SecondsService.prototype.isMissing = function (value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n };\n SecondsService.prototype.isLastMissing = function (value) {\n return this.max !== null && this.isMissing(setSeconds(this.max, this.lastSecond(value)));\n };\n SecondsService.prototype.lastSecond = function (value) {\n return this.range(value)[1];\n };\n SecondsService.prototype.range = function (value) {\n var _a = this.limitRange(this.min, this.max, value), min = _a[0], max = _a[1];\n return [min.getSeconds(), max.getSeconds()];\n };\n return SecondsService;\n}());\nexport { SecondsService };\n","import { domContainerFactory as containerFactory } from '../../utils';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DOMService = /** @class */ (function () {\n function DOMService() {\n this.itemHeight = 0;\n this.timeListHeight = 0;\n this.didCalculate = false;\n }\n DOMService.prototype.ensureHeights = function () {\n if (this.timeListHeight !== undefined) {\n return;\n }\n this.calculateHeights();\n };\n DOMService.prototype.calculateHeights = function (container) {\n if (!canUseDOM) {\n return;\n }\n var div = containerFactory('div');\n var span = containerFactory('span');\n var ul = containerFactory('ul');\n var li = containerFactory('li');\n var listItem = function () { return li('02', 'k-item'); };\n var list = function () { return ul([listItem()], 'k-reset'); };\n var scrollable = function () { return (div([list()], 'k-content k-scrollable k-time-container')); };\n var timeListWrapper = function () {\n return div([\n span('minute', 'k-title'),\n div([scrollable()], 'k-time-list')\n ], 'k-time-list-wrapper', { left: '-10000px', position: 'absolute' });\n };\n var timeWrapper = timeListWrapper();\n var listContainer = container && container.querySelector('.k-time-container');\n var hostContainer = listContainer || document.body;\n var wrapper = hostContainer.appendChild(timeWrapper);\n this.timeListHeight = wrapper.querySelector('.k-scrollable').offsetHeight;\n this.itemHeight = wrapper.querySelector('li').offsetHeight;\n hostContainer.removeChild(wrapper);\n this.didCalculate = true;\n };\n return DOMService;\n}());\nexport { DOMService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, getActiveElement, Keys } from '@progress/kendo-react-common';\nimport { provideIntlService, provideLocalizationService, registerForIntl, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, now, selectNow } from '../messages';\nimport { TimeList } from './TimeList';\nimport { MIDNIGHT_DATE, MIN_TIME, MAX_TIME } from '../utils';\nimport { TIME_PART } from './models/TimePart';\nimport { generateSnappers, getNow, isInTimeRange, snapTime, timeInRange } from './utils';\nimport { Button } from '@progress/kendo-react-buttons';\nvar formatRegExp = new RegExp(\"\".concat(TIME_PART.hour, \"|\").concat(TIME_PART.minute, \"|\").concat(TIME_PART.second, \"|\").concat(TIME_PART.dayperiod, \"|literal\"));\n/**\n * @hidden\n */\nexport var Direction;\n(function (Direction) {\n Direction[Direction[\"Left\"] = 0] = \"Left\";\n Direction[Direction[\"Right\"] = 1] = \"Right\";\n})(Direction || (Direction = {}));\n/**\n * @hidden\n */\nvar TimePart = /** @class */ (function (_super) {\n __extends(TimePart, _super);\n function TimePart(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this._nowButton = null;\n _this.dateFormatParts = [];\n _this.timeLists = [];\n _this.focus = function (args) {\n Promise.resolve().then(function () {\n var timeList = _this.timeLists[0];\n if ((_this.state.activeListIndex === -1) && !_this.hasActiveButton() && timeList && timeList.element) {\n timeList.focus(args);\n }\n });\n };\n _this.timeFormatReducer = function (acc, current) { return acc + current.pattern; };\n // Filtering only the time part of the format.\n // Literal types are added if the previous part is\n // part of a time format.\n _this.timeFormatFilter = function (part, index, all) {\n var prevItem = index >= 1 && all[index - 1];\n if (!prevItem) {\n return formatRegExp.test(part.type || '');\n }\n if (prevItem && part.type === 'literal') {\n return formatRegExp.test(prevItem.type || '');\n }\n return formatRegExp.test(part.type || '');\n };\n _this.focusList = function (dir) {\n if (!_this.timeLists.length) {\n return;\n }\n _this.timeLists.reduce(_this.listReducer, ([]))\n .map(function (state) { return dir === Direction.Right ? state.next : state.prev; })\n .map(function (list) { return list && list.element && list.element.focus({ preventScroll: true }); });\n };\n _this.listReducer = function (state, list, idx, all) {\n if (state.length || list.props.id !== _this.state.activeListIndex) {\n return state;\n }\n return [{\n next: all[idx + 1] || list,\n prev: all[idx - 1] || list\n }];\n };\n _this.showNowButton = function () {\n return !_this.hasSteps() && _this.props.nowButton && isInTimeRange(getNow(), _this.min, _this.max);\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n switch (keyCode) {\n case Keys.left:\n event.preventDefault();\n _this.focusList(Direction.Left);\n return;\n case Keys.right:\n event.preventDefault();\n _this.focusList(Direction.Right);\n return;\n default:\n return;\n }\n };\n _this.handleListBlur = function () {\n _this.nextTick(function () {\n _this.setState({ activeListIndex: -1 });\n });\n };\n _this.handleListFocus = function (idx) {\n clearTimeout(_this.nextTickId);\n _this.setState({\n activeListIndex: idx\n });\n };\n _this.handleChange = function (candidate) {\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, candidate);\n }\n };\n _this.snapTime = snapTime(generateSnappers(_this.props.steps, _this.props.min || TimePart.defaultProps.min));\n _this.state = {\n activeListIndex: -1\n };\n _this.hasActiveButton = _this.hasActiveButton.bind(_this);\n return _this;\n }\n Object.defineProperty(TimePart.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"value\", {\n get: function () {\n return timeInRange(this.snapTime(cloneDate(this.props.value || MIDNIGHT_DATE)), this.min, this.max);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"intl\", {\n get: function () {\n return provideIntlService(this);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"min\", {\n get: function () {\n return this.snapTime(this.props.min || TimePart.defaultProps.min);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"max\", {\n get: function () {\n return this.snapTime(this.props.max || TimePart.defaultProps.max);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"steps\", {\n get: function () {\n return this.props.steps || TimePart.defaultProps.steps;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"boundRange\", {\n get: function () {\n return this.props.boundRange !== undefined\n ? this.props.boundRange\n : TimePart.defaultProps.boundRange;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n TimePart.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n TimePart.prototype.componentDidMount = function () {\n var onMount = this.props.onMount;\n if (onMount) {\n onMount.call(undefined, this.value);\n }\n };\n /**\n * @hidden\n */\n TimePart.prototype.render = function () {\n var _this = this;\n var _a = this.props, format = _a.format, smoothScroll = _a.smoothScroll, onNowClick = _a.onNowClick, className = _a.className, disabled = _a.disabled, mobileMode = _a.mobileMode, show = _a.show;\n this.snapTime = snapTime(generateSnappers(this.steps, this.min));\n this.dateFormatParts = this.intl\n .splitDateFormat(format || TimePart.defaultProps.format)\n .filter(this.timeFormatFilter);\n var rootClassName = classNames({\n 'k-disabled': disabled,\n 'k-time-part': mobileMode\n }, className);\n this.timeLists = [];\n var localizationService = provideLocalizationService(this);\n var selectNowMessage = localizationService.toLanguageString(selectNow, messages[selectNow]);\n return (React.createElement(\"div\", { className: rootClassName },\n React.createElement(\"div\", { className: \"k-time-header\" },\n React.createElement(\"span\", { className: \"k-title\" }, this.intl.formatDate(this.value, this.dateFormatParts.reduce(this.timeFormatReducer, ''))),\n this.showNowButton() &&\n React.createElement(Button, __assign({ type: \"button\", ref: function (btn) { _this._nowButton = btn; }, className: \"k-time-now\", fillMode: \"flat\", themeColor: 'primary', title: selectNowMessage }, { 'aria-label': selectNowMessage }, { onClick: onNowClick, tabIndex: disabled ? -1 : 0 }), localizationService.toLanguageString(now, messages[now]))),\n React.createElement(\"div\", { className: \"k-time-list-container\", onKeyDown: this.handleKeyDown },\n React.createElement(\"span\", { className: \"k-time-highlight\" }),\n this.dateFormatParts.map(function (part, idx) {\n return (part.type !== 'literal'\n ? React.createElement(\"div\", { key: idx, className: classNames('k-time-list-wrapper', {\n 'k-focus': idx === _this.state.activeListIndex\n }), role: \"presentation\", tabIndex: -1 },\n React.createElement(\"span\", { className: \"k-title\", onMouseDown: function (e) { e.preventDefault(); } }, _this.intl.dateFieldName(part)),\n React.createElement(TimeList, { min: _this.min, max: _this.max, boundRange: _this.boundRange, part: part, step: part.type ? _this.steps[part.type] : 1, smoothScroll: smoothScroll, ref: function (el) { if (!el) {\n return;\n } _this.timeLists.push(el); }, id: idx, onFocus: function () { _this.handleListFocus(idx); }, onBlur: _this.handleListBlur, onChange: _this.handleChange, value: _this.value, disabled: disabled, show: show, mobileMode: mobileMode }))\n : React.createElement(\"div\", { key: idx, className: \"k-time-separator\" }, part.pattern));\n }))));\n };\n TimePart.prototype.nextTick = function (f) {\n // XXX: use window.setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n clearTimeout(this.nextTickId);\n this.nextTickId = window.setTimeout(function () { return f(); });\n };\n TimePart.prototype.hasActiveButton = function () {\n var activeElement = getActiveElement(document);\n return (this._nowButton && activeElement === this._nowButton.element);\n };\n TimePart.prototype.hasSteps = function () {\n var _this = this;\n var keys = Object.keys(this.steps);\n return keys.length !== keys.reduce(function (acc, k) { return acc + _this.steps[k]; }, 0);\n };\n TimePart.propTypes = {\n cancelButton: PropTypes.bool,\n disabled: PropTypes.bool,\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n skeleton: PropTypes.string,\n pattern: PropTypes.string,\n date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n era: PropTypes.oneOf(['narrow', 'short', 'long']),\n year: PropTypes.oneOf(['numeric', '2-digit']),\n month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: PropTypes.oneOf(['numeric', '2-digit']),\n weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n hour: PropTypes.oneOf(['numeric', '2-digit']),\n hour12: PropTypes.bool,\n minute: PropTypes.oneOf(['numeric', '2-digit']),\n second: PropTypes.oneOf(['numeric', '2-digit']),\n timeZoneName: PropTypes.oneOf(['short', 'long'])\n })\n ]),\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n nowButton: PropTypes.bool,\n steps: PropTypes.shape({\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n smoothScroll: PropTypes.bool,\n tabIndex: PropTypes.number,\n value: PropTypes.instanceOf(Date),\n show: PropTypes.bool\n };\n TimePart.defaultProps = {\n value: null,\n disabled: false,\n nowButton: true,\n cancelButton: true,\n format: 'hh:mm a',\n min: MIN_TIME,\n max: MAX_TIME,\n steps: {},\n boundRange: false\n };\n return TimePart;\n}(React.Component));\nexport { TimePart };\nregisterForIntl(TimePart);\nregisterForLocalization(TimePart);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, date, time, dateTimePickerCancel as cancel, dateTimePickerSet as set } from '../messages';\nimport { Button, ButtonGroup } from '@progress/kendo-react-buttons';\nimport { Calendar } from '../calendar/components/Calendar';\nimport { TimePart } from '../timepicker/TimePart';\nimport { setTime, getToday, MIN_TIME, MAX_TIME } from '../utils';\nimport { isEqualDate } from '@progress/kendo-date-math';\nimport { Keys, classNames, getActiveElement } from '@progress/kendo-react-common';\nimport { MIDNIGHT_DATE } from '../utils';\nimport { getNow } from '../timepicker/utils';\n/**\n * @hidden\n */\nvar DateTimeSelector = /** @class */ (function (_super) {\n __extends(DateTimeSelector, _super);\n function DateTimeSelector(props) {\n var _this = _super.call(this, props) || this;\n _this._calendar = null;\n _this._timePart = null;\n _this._cancelButton = null;\n _this._acceptButton = null;\n _this._calendarWrap = null;\n _this.shouldFocusPart = false;\n _this.focus = function (args) {\n // Async to avoid stealing the focus from the DateInput on close\n Promise.resolve().then(function () {\n if (_this.state.tab === 'time' && _this._timePart) {\n _this._timePart.focus(args);\n }\n var calendarElement = _this.calendarElement();\n if (_this.state.tab === 'date' && calendarElement) {\n calendarElement.focus(args);\n }\n });\n };\n _this.calendarElement = function () {\n return (_this._calendar && _this._calendar.element) ||\n (_this._calendarWrap && _this._calendarWrap.querySelector('.k-widget.k-calendar'));\n };\n _this.move = function (direction) {\n if (direction === 'right' && _this.state.tab === 'time') {\n return;\n }\n if (direction === 'left' && _this.state.tab === 'date') {\n return;\n }\n var nextPart = direction === 'left' ? 'date' : 'time';\n _this.shouldFocusPart = true;\n _this.setState({ tab: nextPart });\n };\n _this.dateTimeFooter = function () {\n var cancelButton = _this.props.cancelButton;\n var cancelMessage = _this.localizationService.toLanguageString(cancel, messages[cancel]);\n var setMessage = _this.localizationService.toLanguageString(set, messages[set]);\n return (React.createElement(\"div\", { className: \"k-datetime-footer k-actions k-actions-stretched \" },\n cancelButton && React.createElement(Button, __assign({ type: \"button\", ref: function (btn) { _this._cancelButton = btn; }, className: \"k-time-cancel\", onClick: _this.handleReject, title: cancelMessage }, { 'aria-label': cancelMessage }), cancelMessage),\n React.createElement(Button, __assign({ type: \"button\", themeColor: \"primary\", ref: function (btn) { _this._acceptButton = btn; }, className: \"k-time-accept\", disabled: !_this.hasDateValue, onClick: _this.handleAccept, title: setMessage }, { 'aria-label': setMessage }), setMessage)));\n };\n _this.handleReject = function (event) {\n _this.setState({ dateValue: _this.props.value, timeValue: _this.props.value || MIDNIGHT_DATE });\n var value = _this.mergeDate(_this.props.value, _this.props.value || MIDNIGHT_DATE);\n if (_this.props.onReject) {\n var args = {\n nativeEvent: event.nativeEvent,\n syntheticEvent: event,\n target: _this,\n value: value\n };\n _this.props.onReject.call(undefined, args);\n }\n };\n _this.handleAccept = function (event, timeOverride) {\n if (!_this.state.dateValue || !_this.state.timeValue || !_this.hasDateValue) {\n return;\n }\n var value = _this.mergeDate(_this.state.dateValue, timeOverride || _this.state.timeValue);\n _this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: value,\n target: _this\n });\n };\n _this.handleNowClick = function (event) {\n _this.setState({ timeValue: getNow() });\n _this.handleAccept(event, getNow());\n };\n _this.handleCalendarValueChange = function (event) {\n event.syntheticEvent.stopPropagation();\n _this.setState({ dateValue: event.value, tab: 'time' });\n _this.shouldFocusPart = true;\n };\n _this.handleTimeListContainerChange = function (candidate) {\n _this.setState({ timeValue: candidate });\n };\n _this.handleDateClick = function (event) {\n event.stopPropagation();\n _this.move('left');\n };\n _this.handleTimeClick = function (event) {\n event.stopPropagation();\n _this.move('right');\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode, altKey = event.altKey;\n switch (keyCode) {\n case Keys.enter:\n if (!_this.hasActiveButton() && _this.hasDateValue) {\n _this.handleAccept(event);\n }\n return;\n case Keys.left:\n if (!altKey) {\n return;\n }\n _this.move('left');\n return;\n case Keys.right:\n if (!altKey) {\n return;\n }\n _this.move('right');\n return;\n default:\n return;\n }\n };\n _this.handleTimePartMount = function (value) {\n _this.setState({ timeValue: value });\n };\n _this.state = {\n tab: 'date',\n dateValue: _this.props.value,\n timeValue: _this.props.value || MIDNIGHT_DATE\n };\n return _this;\n }\n Object.defineProperty(DateTimeSelector.prototype, \"calendar\", {\n get: function () {\n return this._calendar;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"timePart\", {\n get: function () {\n return this._timePart;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"hasDateValue\", {\n get: function () {\n return this.state.dateValue !== null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"localizationService\", {\n get: function () {\n return provideLocalizationService(this);\n },\n enumerable: false,\n configurable: true\n });\n DateTimeSelector.prototype.componentDidUpdate = function () {\n if (this.shouldFocusPart) {\n this.focus({ preventScroll: true });\n }\n this.shouldFocusPart = false;\n };\n DateTimeSelector.prototype.render = function () {\n var _this = this;\n var _a = this.props, disabled = _a.disabled, min = _a.min, max = _a.max, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate, format = _a.format, mobileMode = _a.mobileMode, footerActions = _a.footerActions;\n var rootClassName = classNames({\n 'k-date-tab': this.state.tab === 'date',\n 'k-time-tab': this.state.tab === 'time',\n 'k-disabled': disabled\n }, 'k-datetime-wrap');\n var dateMessage = this.localizationService.toLanguageString(date, messages[date]);\n var timeMessage = this.localizationService.toLanguageString(time, messages[time]);\n var calendarProps = {\n min: min,\n max: max,\n weekNumber: weekNumber,\n focusedDate: focusedDate,\n disabled: disabled || this.state.tab !== 'date',\n value: this.state.dateValue,\n onChange: this.handleCalendarValueChange,\n navigation: false,\n mobileMode: mobileMode\n };\n return (React.createElement(\"div\", { onKeyDown: this.handleKeyDown, className: rootClassName, tabIndex: -1 },\n React.createElement(\"div\", { className: \"k-datetime-buttongroup\" },\n React.createElement(ButtonGroup, { width: \"100%\" },\n React.createElement(Button, { type: \"button\", selected: this.state.tab === 'date', togglable: true, onClick: this.handleDateClick }, dateMessage),\n React.createElement(Button, { type: \"button\", selected: this.state.tab === 'time', togglable: true, onClick: this.handleTimeClick }, timeMessage))),\n React.createElement(\"div\", { className: \"k-datetime-selector\" },\n React.createElement(\"div\", { className: \"k-datetime-calendar-wrap\", ref: function (e) { return _this._calendarWrap = e; } }, this.props.calendar ?\n React.createElement(this.props.calendar, __assign({}, calendarProps)) :\n React.createElement(Calendar, __assign({ ref: function (calendar) { _this._calendar = calendar; } }, calendarProps))),\n React.createElement(\"div\", { className: \"k-datetime-time-wrap\" },\n React.createElement(\"div\", { className: mobileMode ? 'k-reset k-timeselector-lg k-timeselector' : '' }, React.createElement(TimePart, { key: 1, onNowClick: this.handleNowClick, disabled: disabled || this.state.tab !== 'time', ref: function (timePart) { _this._timePart = timePart; }, min: this.minTime || MIN_TIME, max: this.maxTime || MAX_TIME, steps: this.props.steps, value: this.state.timeValue, format: format, onChange: this.handleTimeListContainerChange, onMount: this.handleTimePartMount, mobileMode: mobileMode })))),\n footerActions && this.dateTimeFooter()));\n };\n Object.defineProperty(DateTimeSelector.prototype, \"minTime\", {\n get: function () {\n return this.props.minTime !== undefined\n ? this.props.minTime\n : this.normalizeRange(this.props.min, this.state.dateValue);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"maxTime\", {\n get: function () {\n return this.props.maxTime !== undefined\n ? this.props.maxTime\n : this.normalizeRange(this.props.max, this.state.dateValue);\n },\n enumerable: false,\n configurable: true\n });\n DateTimeSelector.prototype.normalizeRange = function (candidate, value) {\n return isEqualDate(candidate, value || getToday())\n ? candidate\n : null;\n };\n DateTimeSelector.prototype.hasActiveButton = function () {\n if (!this._acceptButton) {\n return false;\n }\n var activeElement = getActiveElement(document);\n return (this._acceptButton && activeElement === this._acceptButton.element)\n || (this._cancelButton && activeElement === this._cancelButton.element);\n };\n DateTimeSelector.prototype.mergeTime = function (current, candidate) {\n return current && candidate ? setTime(candidate, current) : candidate;\n };\n DateTimeSelector.prototype.mergeDate = function (candidate, value) {\n return candidate ? setTime(candidate || getToday(), value) : value;\n };\n /**\n * @hidden\n */\n DateTimeSelector.defaultProps = {\n footerActions: true\n };\n return DateTimeSelector;\n}(React.Component));\nexport { DateTimeSelector };\nregisterForLocalization(DateTimeSelector);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys, AsyncFocusBlur, createPropsContext, withPropsContext, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { calendarIcon } from '@progress/kendo-svg-icons';\nimport { DateInput } from '../dateinput/DateInput';\nimport { validatePackage, canUseDOM } from '@progress/kendo-react-common';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { packageMetadata } from '../package-metadata';\nimport { MIN_DATE, MAX_DATE, isInDateRange, MAX_TIME } from '../utils';\nimport { MOBILE_MEDIUM_DEVISE } from '../common/constants';\nimport { dateTimePickerCancel, dateTimePickerSet, messages, toggleDateTimeSelector } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { DateTimeSelector } from './DateTimeSelector';\nimport { isInTimeRange } from '../timepicker/utils';\nimport { MIN_TIME } from '../utils';\nimport { PickerFloatingLabel } from '../hooks/usePickerFloatingLabel';\nimport { AdaptiveMode } from '../common/AdaptiveMode';\nimport { ActionSheetContent } from '@progress/kendo-react-layout';\n/** @hidden */\nvar DateTimePickerWithoutContext = /** @class */ (function (_super) {\n __extends(DateTimePickerWithoutContext, _super);\n function DateTimePickerWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this._popupId = guid();\n _this._element = null;\n _this._dateInput = React.createRef();\n _this._dateTimeSelector = null;\n _this.shouldFocusDateInput = false;\n _this.prevShow = false;\n /**\n * @hidden\n */\n _this.focus = function () {\n var dateInputElement = _this.dateInputElement();\n if (dateInputElement) {\n dateInputElement.focus();\n }\n };\n _this.renderPicker = function () {\n var _a = _this.props, disabled = _a.disabled, minTime = _a.minTime, maxTime = _a.maxTime, format = _a.format, calendar = _a.calendar, cancelButton = _a.cancelButton, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate;\n return (React.createElement(DateTimeSelector, { ref: function (dateTimeSelector) { _this._dateTimeSelector = dateTimeSelector; }, cancelButton: cancelButton, steps: _this.props.steps, value: _this.value, onChange: _this.handleValueChange, onReject: _this.handleReject, disabled: disabled, weekNumber: weekNumber, min: _this.min, max: _this.max, minTime: minTime, maxTime: maxTime, focusedDate: focusedDate, format: format, calendar: calendar, mobileMode: _this.mobileMode, footerActions: !_this.mobileMode }));\n };\n _this.renderAdaptivePopup = function () {\n var _a = _this.state.windowWidth, windowWidth = _a === void 0 ? 0 : _a;\n var cancelText = provideLocalizationService(_this)\n .toLanguageString(dateTimePickerCancel, messages[dateTimePickerCancel]);\n var applyText = provideLocalizationService(_this)\n .toLanguageString(dateTimePickerSet, messages[dateTimePickerSet]);\n var actionSheetProps = {\n expand: _this.show,\n onClose: _this.handleBlur,\n adaptiveTitle: _this.props.adaptiveTitle,\n windowWidth: windowWidth,\n footer: {\n cancelText: cancelText,\n onCancel: function (event) { var _a; return (_a = _this._dateTimeSelector) === null || _a === void 0 ? void 0 : _a.handleReject(event); },\n applyText: applyText,\n onApply: function (event) { var _a; return (_a = _this._dateTimeSelector) === null || _a === void 0 ? void 0 : _a.handleAccept(event); }\n }\n };\n return (React.createElement(AdaptiveMode, __assign({}, actionSheetProps),\n React.createElement(ActionSheetContent, { className: '!k-overflow-hidden' }, _this.renderPicker())));\n };\n _this.handleReject = function () {\n _this.shouldFocusDateInput = true;\n _this.setShow(false);\n };\n _this.handleValueChange = function (event) {\n _this.setState({\n value: cloneDate(event.value || undefined)\n });\n _this.valueDuringOnChange = event.value;\n _this.showDuringOnChange = false;\n if (!_this.mobileMode) {\n _this.shouldFocusDateInput = true;\n }\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n show: _this.show,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n _this.showDuringOnChange = undefined;\n _this.setShow(false);\n };\n _this.handleFocus = function () {\n _this.setState({ focused: true });\n };\n _this.handleBlur = function () {\n _this.setState({ focused: false });\n _this.setShow(false);\n };\n _this.handleDateIconClick = function () {\n if (_this.props.disabled) {\n return;\n }\n _this.shouldFocusDateInput = true;\n _this.setShow(!_this.show);\n };\n _this.handleIconMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleKeyDown = function (event) {\n var altKey = event.altKey, keyCode = event.keyCode;\n if (keyCode === Keys.esc) {\n _this.shouldFocusDateInput = true;\n _this.setShow(false);\n return;\n }\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n _this.shouldFocusDateInput = keyCode === Keys.up;\n _this.setShow(keyCode === Keys.down);\n }\n };\n _this.dateInputElement = function () {\n return (_this.dateInput && _this.dateInput.element) ||\n (_this.element && _this.element.querySelector('.k-dateinput > input.k-input-inner'));\n };\n validatePackage(packageMetadata);\n _this.state = {\n value: _this.props.defaultValue || DateTimePickerWithoutContext.defaultProps.defaultValue,\n show: _this.props.defaultShow || DateTimePickerWithoutContext.defaultProps.defaultShow,\n focused: false\n };\n return _this;\n }\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"document\", {\n get: function () {\n if (!canUseDOM) {\n return;\n }\n // useful only for user actions\n return (this.element && this.element.ownerDocument) || document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"element\", {\n /**\n * Gets the wrapping element of the DateTimePicker.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"dateInput\", {\n /**\n * Gets the DateInput component inside the DateTimePicker component.\n */\n get: function () {\n return this._dateInput.current;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"value\", {\n /**\n * Gets the value of the DateTimePicker.\n */\n get: function () {\n var value = this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n return (value !== null) ? cloneDate(value) : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"show\", {\n /**\n * Gets the popup state of the DateTimePicker.\n */\n get: function () {\n return this.showDuringOnChange !== undefined\n ? this.showDuringOnChange\n : this.props.show !== undefined\n ? this.props.show\n : this.state.show;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the DateTimePicker.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"mobileMode\", {\n /**\n * The mobile mode of the ComboBox.\n */\n get: function () {\n var isAdaptive = this.state.windowWidth && this.state.windowWidth <= MOBILE_MEDIUM_DEVISE && this.props.adaptive;\n return !!isAdaptive;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : DateTimePickerWithoutContext.defaultProps.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : DateTimePickerWithoutContext.defaultProps.max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DateTimePicker is set.\n */\n get: function () {\n var inRange = isInDateRange(this.value, this.min, this.max)\n && isInTimeRange(this.value, this.props.minTime || MIN_TIME, this.props.maxTime || MAX_TIME);\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== null) && inRange;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : DateTimePickerWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : DateTimePickerWithoutContext.defaultProps.required;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateTimePickerWithoutContext.prototype, \"dateInputComp\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.dateInput || DateTimePickerWithoutContext.defaultProps.dateInput;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.prototype.componentDidMount = function () {\n var _a;\n this.observerResize = canUseDOM && window.ResizeObserver && new window.ResizeObserver(this.calculateMedia.bind(this));\n if (this.show) {\n // If defaultShow is true during the initial render, the popup is not aligned.\n this.forceUpdate();\n }\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.observe(this.document.body);\n }\n };\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.prototype.componentDidUpdate = function () {\n var dateInputElement = this.dateInputElement();\n if (this._dateTimeSelector && this.show && !this.prevShow) {\n this._dateTimeSelector.focus({ preventScroll: true });\n }\n if (dateInputElement\n && !this.show\n && this.shouldFocusDateInput) {\n dateInputElement.focus({ preventScroll: true });\n }\n this.prevShow = this.show;\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.prototype.componentWillUnmount = function () {\n var _a;\n clearTimeout(this.nextTickId);\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.disconnect();\n }\n };\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.prototype.render = function () {\n var _this = this;\n var _a = this.props, _b = _a.size, size = _b === void 0 ? DateTimePickerWithoutContext.defaultProps.size : _b, _c = _a.rounded, rounded = _c === void 0 ? DateTimePickerWithoutContext.defaultProps.rounded : _c, _d = _a.fillMode, fillMode = _d === void 0 ? DateTimePickerWithoutContext.defaultProps.fillMode : _d, disabled = _a.disabled, tabIndex = _a.tabIndex, title = _a.title, id = _a.id, format = _a.format, formatPlaceholder = _a.formatPlaceholder, min = _a.min, max = _a.max, className = _a.className, width = _a.width, name = _a.name, validationMessage = _a.validationMessage, required = _a.required, validityStyles = _a.validityStyles, minTime = _a.minTime, maxTime = _a.maxTime, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy, _e = _a.popup, PopupComponent = _e === void 0 ? Popup : _e;\n var isValid = !this.validityStyles || this.validity.valid;\n var dataInputProps = {\n id: id,\n ariaLabelledBy: ariaLabelledBy,\n ariaDescribedBy: ariaDescribedBy,\n format: format,\n formatPlaceholder: formatPlaceholder,\n disabled: disabled,\n title: title,\n validityStyles: validityStyles,\n validationMessage: validationMessage,\n required: required,\n min: min,\n max: max,\n minTime: minTime,\n maxTime: maxTime,\n name: name,\n tabIndex: !this.show ? tabIndex : -1,\n valid: this.validity.valid,\n value: this.value,\n onChange: this.handleValueChange,\n steps: this.props.steps,\n label: undefined,\n placeholder: !this.state.focused ? this.props.placeholder : null,\n ariaExpanded: this.show,\n size: null,\n fillMode: null,\n rounded: null\n };\n var dateTimePicker = (React.createElement(AsyncFocusBlur, { onFocus: this.handleFocus, onBlur: this.handleBlur, onSyncFocus: this.props.onFocus, onSyncBlur: this.props.onBlur }, function (_a) {\n var _b;\n var onFocus = _a.onFocus, onBlur = _a.onBlur;\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { ref: function (div) {\n _this._element = div;\n }, className: classNames('k-input', 'k-datetimepicker', (_b = {},\n _b[\"k-input-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _b[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _b[\"k-input-\".concat(fillMode)] = fillMode,\n _b['k-invalid'] = !isValid,\n _b['k-required'] = _this.required,\n _b['k-disabled'] = _this.props.disabled,\n _b), className), onKeyDown: _this.handleKeyDown, style: { width: width }, onFocus: !_this.mobileMode ? onFocus : undefined, onBlur: onBlur, onClick: _this.mobileMode ? _this.handleDateIconClick : undefined },\n React.createElement(_this.dateInputComp, __assign({ _ref: _this._dateInput, ariaRole: \"combobox\", ariaControls: _this._popupId, readonly: _this.mobileMode }, dataInputProps)),\n React.createElement(Button, __assign({ tabIndex: -1, type: \"button\", icon: 'calendar', svgIcon: calendarIcon, onMouseDown: _this.handleIconMouseDown, onClick: _this.mobileMode ? undefined : _this.handleDateIconClick, title: provideLocalizationService(_this)\n .toLanguageString(toggleDateTimeSelector, messages[toggleDateTimeSelector]), className: \"k-input-button\", rounded: null }, {\n 'aria-label': provideLocalizationService(_this)\n .toLanguageString(toggleDateTimeSelector, messages[toggleDateTimeSelector])\n })),\n React.createElement(PopupComponent, { show: _this.show, animate: _this.element !== null, anchor: _this.element, popupClass: \"k-datetime-container k-reset\", id: _this._popupId, anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n }, popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n } }, !_this.mobileMode && _this.renderPicker())),\n _this.mobileMode && _this.renderAdaptivePopup()));\n }));\n return this.props.label\n ? (React.createElement(PickerFloatingLabel, { dateInput: this._dateInput, label: this.props.label, editorId: id, editorValid: isValid, editorDisabled: this.props.disabled, children: dateTimePicker, style: { width: this.props.width } }))\n : dateTimePicker;\n };\n DateTimePickerWithoutContext.prototype.setShow = function (show) {\n var _a = this.props, onOpen = _a.onOpen, onClose = _a.onClose;\n if (this.show === show) {\n return;\n }\n this.setState({ show: show });\n if (show && onOpen) {\n onOpen.call(undefined, {\n target: this\n });\n }\n if (!show && onClose) {\n onClose.call(undefined, {\n target: this\n });\n }\n };\n DateTimePickerWithoutContext.prototype.nextTick = function (f) {\n // XXX: use window.setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n // Handles multiple focus events happening at the same time.\n clearTimeout(this.nextTickId);\n this.nextTickId = window.setTimeout(function () { return f(); });\n };\n DateTimePickerWithoutContext.prototype.calculateMedia = function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n this.setState({ windowWidth: entry.target.clientWidth });\n }\n ;\n };\n ;\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.displayName = 'DateTimePicker';\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.propTypes = {\n className: PropTypes.string,\n defaultShow: PropTypes.bool,\n defaultValue: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n focusedDate: PropTypes.instanceOf(Date),\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n skeleton: PropTypes.string,\n pattern: PropTypes.string,\n date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n era: PropTypes.oneOf(['narrow', 'short', 'long']),\n year: PropTypes.oneOf(['numeric', '2-digit']),\n month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: PropTypes.oneOf(['numeric', '2-digit']),\n weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n hour: PropTypes.oneOf(['numeric', '2-digit']),\n hour12: PropTypes.bool,\n minute: PropTypes.oneOf(['numeric', '2-digit']),\n second: PropTypes.oneOf(['numeric', '2-digit']),\n timeZoneName: PropTypes.oneOf(['short', 'long'])\n })\n ]),\n formatPlaceholder: PropTypes.oneOfType([\n PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n PropTypes.shape({\n year: PropTypes.string,\n month: PropTypes.string,\n day: PropTypes.string,\n hour: PropTypes.string,\n minute: PropTypes.string,\n second: PropTypes.string\n })\n ]),\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n min: PropTypes.instanceOf(Date),\n max: PropTypes.instanceOf(Date),\n name: PropTypes.string,\n popupSettings: PropTypes.shape({\n animate: PropTypes.bool,\n appendTo: PropTypes.any,\n popupClass: PropTypes.string\n }),\n show: PropTypes.bool,\n tabIndex: PropTypes.number,\n title: PropTypes.string,\n value: PropTypes.instanceOf(Date),\n weekNumber: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool,\n cancelButton: PropTypes.bool,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline'])\n };\n /**\n * @hidden\n */\n DateTimePickerWithoutContext.defaultProps = {\n defaultShow: false,\n defaultValue: null,\n disabled: false,\n format: 'g',\n max: MAX_DATE,\n min: MIN_DATE,\n popupSettings: {},\n tabIndex: 0,\n weekNumber: false,\n required: false,\n validityStyles: true,\n cancelButton: true,\n dateInput: DateInput,\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid'\n };\n return DateTimePickerWithoutContext;\n}(React.Component));\nexport { DateTimePickerWithoutContext };\n/**\n * Represents the PropsContext of the `DateTimePicker` component.\n * Used for global configuration of all `DateTimePicker` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var DateTimePickerPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare */\n/**\n * Represents the KendoReact DateTimePicker Component.\n *\n * Accepts properties of type [DateTimePickerProps]({% slug api_dateinputs_datetimepickerprops %}).\n * Obtaining the `ref` returns an object of type [DateTimePickerHandle]({% slug api_dateinputs_datetimepickerhandle %}).\n */\nexport var DateTimePicker = withPropsContext(DateTimePickerPropsContext, DateTimePickerWithoutContext);\nDateTimePicker.displayName = 'KendoReactDateTimePicker';\nregisterForLocalization(DateTimePickerWithoutContext);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, getActiveElement, Keys } from '@progress/kendo-react-common';\nimport { provideIntlService, registerForIntl, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, timePickerCancel, timePickerSet } from '../messages';\nimport { MIN_TIME, MAX_TIME, MIDNIGHT_DATE } from '../utils';\nimport { generateGetters, getNow, valueMerger } from './utils';\nimport { TimePart } from './TimePart';\nimport { Button } from '@progress/kendo-react-buttons';\n/**\n * @hidden\n */\nexport var Direction;\n(function (Direction) {\n Direction[Direction[\"Left\"] = 0] = \"Left\";\n Direction[Direction[\"Right\"] = 1] = \"Right\";\n})(Direction || (Direction = {}));\n/**\n * @hidden\n */\nvar TimeSelector = /** @class */ (function (_super) {\n __extends(TimeSelector, _super);\n function TimeSelector(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this._cancelButton = null;\n _this._acceptButton = null;\n _this.timePart = null;\n _this.focusActiveList = function () {\n if (!_this.timePart) {\n return;\n }\n _this.timePart.focus({ preventScroll: true });\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n switch (keyCode) {\n case Keys.enter:\n if (!_this.hasActiveButton()) {\n _this.handleAccept(event);\n }\n return;\n default:\n return;\n }\n };\n _this.handleAccept = function (event) {\n var value = _this.mergeValue(cloneDate(_this.value || getNow()), _this.timePart ? _this.timePart.value : _this.current);\n _this.setState({ value: value });\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n };\n _this.handleReject = function (event) {\n _this.setState({ current: _this.value });\n var onReject = _this.props.onReject;\n if (onReject) {\n onReject.call(undefined, event);\n }\n };\n _this.handleNowClick = function (event) {\n var now = _this.mergeValue(cloneDate(_this.value || getNow()), getNow());\n _this.setState({\n current: now,\n value: now\n });\n _this.valueDuringOnChange = now;\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n };\n _this.handleChange = function (candidate) {\n _this.setState({ current: candidate });\n var handleTimeChange = _this.props.handleTimeChange;\n if (handleTimeChange) {\n handleTimeChange.call(undefined, {\n time: candidate\n });\n }\n };\n _this.dateFormatParts = _this.intl.splitDateFormat(_this.props.format || TimeSelector.defaultProps.format);\n _this.mergeValue = valueMerger(generateGetters(_this.dateFormatParts));\n _this.hasActiveButton = _this.hasActiveButton.bind(_this);\n _this.state = {\n current: _this.props.value || MIDNIGHT_DATE,\n value: _this.props.value || TimeSelector.defaultProps.value\n };\n return _this;\n }\n Object.defineProperty(TimeSelector.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimeSelector.prototype, \"value\", {\n get: function () {\n var value = this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n return (value !== null)\n ? cloneDate(value)\n : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimeSelector.prototype, \"intl\", {\n get: function () {\n return provideIntlService(this);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimeSelector.prototype, \"current\", {\n get: function () {\n return this.state.current !== null\n ? cloneDate(this.state.current)\n : null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n TimeSelector.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n TimeSelector.prototype.render = function () {\n var _this = this;\n var _a = this.props, format = _a.format, cancelButton = _a.cancelButton, disabled = _a.disabled, tabIndex = _a.tabIndex, className = _a.className, smoothScroll = _a.smoothScroll, min = _a.min, max = _a.max, boundRange = _a.boundRange, nowButton = _a.nowButton, steps = _a.steps, show = _a.show, mobileMode = _a.mobileMode;\n var localizationService = provideLocalizationService(this);\n var cancelMessage = localizationService.toLanguageString(timePickerCancel, messages[timePickerCancel]);\n var setMessage = localizationService.toLanguageString(timePickerSet, messages[timePickerSet]);\n return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, tabIndex: !disabled ? tabIndex || 0 : undefined, className: classNames('k-timeselector', className, {\n 'k-disabled': disabled\n }), onKeyDown: this.handleKeyDown },\n React.createElement(TimePart, { ref: function (el) { _this.timePart = el; }, value: this.current, onChange: this.handleChange, onNowClick: this.handleNowClick, format: format, smoothScroll: smoothScroll, min: min, max: max, boundRange: boundRange, disabled: disabled, nowButton: nowButton, steps: steps, show: show, mobileMode: mobileMode }),\n this.props.footer && React.createElement(\"div\", { className: \"k-time-footer k-actions k-actions-stretched\" },\n cancelButton &&\n React.createElement(Button, __assign({ type: \"button\", ref: function (btn) { _this._cancelButton = btn; }, className: \"k-time-cancel\", onClick: this.handleReject, title: cancelMessage }, { 'aria-label': cancelMessage }), cancelMessage),\n React.createElement(Button, __assign({ type: \"button\", ref: function (btn) { _this._acceptButton = btn; }, className: \"k-time-accept\", themeColor: 'primary', onClick: this.handleAccept, title: setMessage }, { 'aria-label': setMessage }), setMessage))));\n };\n TimeSelector.prototype.nextTick = function (f) {\n // XXX: use window.setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n clearTimeout(this.nextTickId);\n this.nextTickId = window.setTimeout(function () { return f(); });\n };\n TimeSelector.prototype.hasActiveButton = function () {\n if (!this._acceptButton || !this._acceptButton.element) {\n return false;\n }\n var activeElement = getActiveElement(document);\n return (this._acceptButton && activeElement === this._acceptButton.element)\n || (this._cancelButton && activeElement === this._cancelButton.element);\n };\n TimeSelector.propTypes = {\n cancelButton: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n skeleton: PropTypes.string,\n pattern: PropTypes.string,\n date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n era: PropTypes.oneOf(['narrow', 'short', 'long']),\n year: PropTypes.oneOf(['numeric', '2-digit']),\n month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: PropTypes.oneOf(['numeric', '2-digit']),\n weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n hour: PropTypes.oneOf(['numeric', '2-digit']),\n hour12: PropTypes.bool,\n minute: PropTypes.oneOf(['numeric', '2-digit']),\n second: PropTypes.oneOf(['numeric', '2-digit']),\n timeZoneName: PropTypes.oneOf(['short', 'long'])\n })\n ]),\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n nowButton: PropTypes.bool,\n steps: PropTypes.shape({\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n smoothScroll: PropTypes.bool,\n tabIndex: PropTypes.number,\n value: PropTypes.instanceOf(Date),\n show: PropTypes.bool\n };\n TimeSelector.defaultProps = {\n value: null,\n disabled: false,\n cancelButton: true,\n format: 't',\n min: MIN_TIME,\n max: MAX_TIME,\n boundRange: false,\n footer: true\n };\n return TimeSelector;\n}(React.Component));\nexport { TimeSelector };\nregisterForIntl(TimeSelector);\nregisterForLocalization(TimeSelector);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys, AsyncFocusBlur, createPropsContext, withPropsContext, kendoThemeMaps, canUseDOM } from '@progress/kendo-react-common';\nimport { clockIcon } from '@progress/kendo-svg-icons';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { messages, toggleTimeSelector, toggleClock, timePickerSet, timePickerCancel } from '../messages';\nimport { DateInput } from '../dateinput/DateInput';\nimport { TimeSelector } from './TimeSelector';\nimport { MIDNIGHT_DATE, MIN_TIME, MAX_TIME, setTime } from '../utils';\nimport { isInRange, isSmallerThanMin, isBiggerThanMax } from './utils';\nimport { PickerFloatingLabel } from '../hooks/usePickerFloatingLabel';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { MOBILE_MEDIUM_DEVISE } from '../common/constants';\nimport { AdaptiveMode } from '../common/AdaptiveMode';\nimport { ActionSheetContent } from '@progress/kendo-react-layout';\n/** @hidden */\nvar TimePickerWithoutContext = /** @class */ (function (_super) {\n __extends(TimePickerWithoutContext, _super);\n function TimePickerWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this._popupId = guid();\n _this._element = null;\n _this._dateInput = React.createRef();\n _this._timeSelector = null;\n _this.shouldFocusDateInput = false;\n _this.prevShow = false;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this.dateInput) {\n _this.dateInput.focus();\n }\n };\n _this.renderTimeSelector = function () {\n var _a = _this.props, smoothScroll = _a.smoothScroll, cancelButton = _a.cancelButton, nowButton = _a.nowButton, disabled = _a.disabled, format = _a.format, steps = _a.steps;\n return (React.createElement(TimeSelector, { ref: _this.setTimeSelectorRef, className: _this.mobileMode ? 'k-reset k-timeselector-lg' : '', mobileMode: _this.mobileMode, show: _this.show, cancelButton: cancelButton, disabled: disabled, nowButton: nowButton, format: format, min: _this.min, max: _this.max, steps: steps, smoothScroll: smoothScroll, value: _this.value, footer: _this.mobileMode ? false : true, handleTimeChange: _this.mobileMode && _this.handleTimeChange, onChange: _this.handleValueChange, onReject: _this.handleValueReject }));\n };\n _this.renderPopup = function () {\n var _a = _this.popupSettings, popupClass = _a.popupClass, otherPopupSettings = __rest(_a, [\"popupClass\"]);\n var popupClassNames = classNames('k-group k-reset', popupClass);\n var popupProps = __assign({ popupClass: 'k-timepicker-popup', show: _this.show, animate: _this.element !== null, anchor: _this.element, className: popupClassNames, id: _this._popupId, anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n }, popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n } }, otherPopupSettings);\n return (_this.props.popup\n ? React.createElement(_this.props.popup, __assign({}, popupProps), _this.renderTimeSelector())\n : React.createElement(Popup, __assign({}, popupProps), _this.renderTimeSelector()));\n };\n _this.renderAdaptivePopup = function () {\n var _a = _this.state.windowWidth, windowWidth = _a === void 0 ? 0 : _a;\n var actionSheetProps = {\n expand: _this.show,\n onClose: _this.handleBlur,\n adaptiveTitle: _this.props.adaptiveTitle,\n windowWidth: windowWidth,\n footer: {\n cancelText: _this.localizationService.toLanguageString(toggleClock, messages[timePickerCancel]),\n onCancel: _this.handleValueReject,\n applyText: _this.localizationService.toLanguageString(timePickerSet, messages[timePickerSet]),\n onApply: function (event) { return _this.handleValueChange(event); }\n }\n };\n return (React.createElement(AdaptiveMode, __assign({}, actionSheetProps),\n React.createElement(ActionSheetContent, { className: '!k-overflow-hidden' }, _this.renderTimeSelector())));\n };\n _this.setTimeSelectorRef = function (timeSelector) {\n _this._timeSelector = timeSelector;\n };\n _this.nextValue = function (nextProps, nextState) {\n return nextProps.value !== undefined\n ? nextProps.value\n : nextState.value;\n };\n _this.nextShow = function (nextProps, nextState) {\n return nextProps.show !== undefined\n ? nextProps.show\n : nextState.show;\n };\n _this.handleInputValueChange = function (event) {\n var value = _this.mergeTime(event.value);\n _this.handleValueChange(__assign(__assign({}, event), { value: value }));\n };\n _this.handleTimeChange = function (date) {\n _this.setState({ candidate: date.time });\n };\n _this.handleValueChange = function (event) {\n _this.setState({\n value: cloneDate(event.value || _this.state.candidate)\n });\n _this.valueDuringOnChange = event.value;\n _this.showDuringOnChange = false;\n _this.shouldFocusDateInput = true;\n var onChange = _this.props.onChange;\n var value = _this.value || _this.state.candidate;\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: value,\n show: _this.show,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n _this.showDuringOnChange = undefined;\n _this.setShow(false);\n };\n _this.handleFocus = function () {\n _this.setState({ focused: true });\n };\n _this.handleBlur = function () {\n _this.setState({ focused: false });\n _this.setShow(false);\n };\n _this.handleValueReject = function (_) {\n _this.setShow(false);\n };\n _this.handleIconClick = function (_) {\n if (_this.props.disabled) {\n return;\n }\n _this.shouldFocusDateInput = true;\n _this.setShow(!_this.show);\n };\n _this.handleIconMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleKeyDown = function (event) {\n var altKey = event.altKey, keyCode = event.keyCode;\n if (keyCode === Keys.esc) {\n _this.shouldFocusDateInput = true;\n _this.setShow(false);\n return;\n }\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n _this.shouldFocusDateInput = keyCode === Keys.up;\n _this.setShow(keyCode === Keys.down);\n }\n };\n validatePackage(packageMetadata);\n _this.state = {\n value: _this.props.defaultValue || TimePickerWithoutContext.defaultProps.defaultValue,\n show: _this.props.defaultShow || TimePickerWithoutContext.defaultProps.defaultShow,\n focused: false,\n candidate: null\n };\n _this.normalizeTime = _this.normalizeTime.bind(_this);\n _this.setShow = _this.setShow.bind(_this);\n _this.mergeTime = _this.mergeTime.bind(_this);\n return _this;\n }\n Object.defineProperty(TimePickerWithoutContext.prototype, \"document\", {\n get: function () {\n if (!canUseDOM) {\n return;\n }\n // useful only for user actions\n return (this.element && this.element.ownerDocument) || document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"element\", {\n /**\n * Gets the wrapping element of the TimePicker.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"dateInput\", {\n /**\n * Gets the DateInput component inside the TimePicker component.\n */\n get: function () {\n return this._dateInput.current;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"timeSelector\", {\n /**\n * Gets the TimeSelector component inside the TimePicker component.\n */\n get: function () {\n return this._timeSelector;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"value\", {\n /**\n * Gets the value of the TimePicker.\n */\n get: function () {\n var value = this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n return (value !== null) ? cloneDate(value) : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"show\", {\n /**\n * Gets the popup state of the TimeSelector.\n */\n get: function () {\n return this.showDuringOnChange !== undefined\n ? this.showDuringOnChange\n : this.props.show !== undefined\n ? this.props.show\n : this.state.show;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the TimePicker.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the TimePicker is set.\n */\n get: function () {\n var value = this.value && this.normalizeTime(this.value);\n var min = this.normalizeTime(this.min);\n var max = this.normalizeTime(this.max);\n var inRange = isInRange(value, min, max);\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== null) && inRange;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n rangeOverflow: isBiggerThanMax(value, max),\n rangeUnderflow: isSmallerThanMin(value, min),\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"mobileMode\", {\n /**\n * The mobile mode of the ComboBox.\n */\n get: function () {\n var isAdaptive = this.state.windowWidth && this.state.windowWidth <= MOBILE_MEDIUM_DEVISE && this.props.adaptive;\n return !!isAdaptive;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : TimePickerWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : TimePickerWithoutContext.defaultProps.required;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"popupSettings\", {\n get: function () {\n return this.props.popupSettings || TimePickerWithoutContext.defaultProps.popupSettings;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined ? this.props.min : TimePickerWithoutContext.defaultProps.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined ? this.props.max : TimePickerWithoutContext.defaultProps.max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"dateInputComp\", {\n get: function () {\n return this.props.dateInput || TimePickerWithoutContext.defaultProps.dateInput;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TimePickerWithoutContext.prototype, \"localizationService\", {\n get: function () {\n return provideLocalizationService(this);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n TimePickerWithoutContext.prototype.componentDidMount = function () {\n var _a;\n this.observerResize = canUseDOM && window.ResizeObserver && new window.ResizeObserver(this.calculateMedia.bind(this));\n if (this.show) {\n // If defaultShow is true during the initial render, the popup is not aligned.\n this.forceUpdate();\n }\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.observe(this.document.body);\n }\n };\n /**\n * @hidden\n */\n TimePickerWithoutContext.prototype.componentDidUpdate = function () {\n if (this._timeSelector && this.show && !this.prevShow) {\n this._timeSelector.focusActiveList();\n }\n else if (this.dateInput\n && this.dateInput.element\n && !this.show\n && this.shouldFocusDateInput) {\n this.dateInput.element.focus({ preventScroll: true });\n }\n this.prevShow = this.show;\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n TimePickerWithoutContext.prototype.componentWillUnmount = function () {\n var _a;\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.disconnect();\n }\n };\n ;\n /**\n * @hidden\n */\n TimePickerWithoutContext.prototype.render = function () {\n var _this = this;\n var _a = this.props, _b = _a.size, size = _b === void 0 ? TimePickerWithoutContext.defaultProps.size : _b, _c = _a.rounded, rounded = _c === void 0 ? TimePickerWithoutContext.defaultProps.rounded : _c, _d = _a.fillMode, fillMode = _d === void 0 ? TimePickerWithoutContext.defaultProps.fillMode : _d, disabled = _a.disabled, tabIndex = _a.tabIndex, title = _a.title, id = _a.id, className = _a.className, format = _a.format, formatPlaceholder = _a.formatPlaceholder, width = _a.width, name = _a.name, steps = _a.steps, validationMessage = _a.validationMessage, required = _a.required, validityStyles = _a.validityStyles, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy;\n var isValid = !this.validityStyles || this.validity.valid;\n var dateInputProps = {\n disabled: disabled,\n format: format,\n formatPlaceholder: formatPlaceholder,\n id: id,\n ariaLabelledBy: ariaLabelledBy,\n ariaDescribedBy: ariaDescribedBy,\n max: this.normalizeTime(this.max),\n min: this.normalizeTime(this.min),\n name: name,\n onChange: this.handleInputValueChange,\n required: required,\n steps: steps,\n tabIndex: !this.show ? tabIndex : -1,\n title: title,\n valid: this.validity.valid,\n validationMessage: validationMessage,\n validityStyles: validityStyles,\n value: this.value && this.normalizeTime(this.value),\n label: undefined,\n placeholder: !this.state.focused ? this.props.placeholder : null,\n ariaHasPopup: 'dialog',\n ariaExpanded: this.show,\n size: null,\n fillMode: null,\n rounded: null,\n readonly: this.mobileMode\n };\n var toggleClockMessage = this.localizationService.toLanguageString(toggleClock, messages[toggleClock]);\n var toggleTimeMessage = this.localizationService\n .toLanguageString(toggleTimeSelector, messages[toggleTimeSelector]);\n var timepicker = (React.createElement(AsyncFocusBlur, { onFocus: this.handleFocus, onBlur: !this.mobileMode ? this.handleBlur : undefined, onSyncBlur: this.props.onBlur, onSyncFocus: this.props.onFocus }, function (_a) {\n var _b;\n var onFocus = _a.onFocus, onBlur = _a.onBlur;\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { ref: function (span) { _this._element = span; }, className: classNames('k-input', 'k-timepicker', (_b = {},\n _b[\"k-input-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _b[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _b[\"k-input-\".concat(fillMode)] = fillMode,\n _b['k-invalid'] = !isValid,\n _b['k-required'] = _this.required,\n _b['k-disabled'] = _this.props.disabled,\n _b), className), onKeyDown: _this.handleKeyDown, style: { width: width }, onFocus: onFocus, onBlur: onBlur, onClick: _this.mobileMode ? _this.handleIconClick : undefined },\n React.createElement(_this.dateInputComp, __assign({ _ref: _this._dateInput, ariaRole: \"combobox\", ariaControls: _this._popupId }, dateInputProps)),\n React.createElement(Button, __assign({ tabIndex: -1, type: \"button\", icon: 'clock', svgIcon: clockIcon, onMouseDown: _this.handleIconMouseDown, onClick: _this.mobileMode ? undefined : _this.handleIconClick, title: toggleTimeMessage, className: \"k-input-button\", rounded: null }, {\n 'aria-label': toggleClockMessage\n })),\n !_this.mobileMode && _this.renderPopup()),\n _this.mobileMode && _this.renderAdaptivePopup()));\n }));\n return this.props.label\n ? (React.createElement(PickerFloatingLabel, { dateInput: this._dateInput, label: this.props.label, editorId: id, editorValid: isValid, editorDisabled: this.props.disabled, children: timepicker, style: { width: this.props.width } }))\n : timepicker;\n };\n TimePickerWithoutContext.prototype.normalizeTime = function (date) {\n return setTime(MIDNIGHT_DATE, date);\n };\n TimePickerWithoutContext.prototype.setShow = function (show) {\n var _a = this.props, onOpen = _a.onOpen, onClose = _a.onClose;\n if (this.show === show) {\n return;\n }\n this.setState({ show: show });\n if (show && onOpen) {\n onOpen.call(undefined, {\n target: this\n });\n }\n if (!show && onClose) {\n onClose.call(undefined, {\n target: this\n });\n }\n };\n TimePickerWithoutContext.prototype.mergeTime = function (value) {\n return this.value && value ? setTime(this.value, value) : value;\n };\n TimePickerWithoutContext.prototype.calculateMedia = function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n this.setState({ windowWidth: entry.target.clientWidth });\n }\n ;\n };\n ;\n /**\n * @hidden\n */\n TimePickerWithoutContext.displayName = 'TimePicker';\n /**\n * @hidden\n */\n TimePickerWithoutContext.propTypes = {\n className: PropTypes.string,\n cancelButton: PropTypes.bool,\n nowButton: PropTypes.bool,\n defaultShow: PropTypes.bool,\n defaultValue: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n skeleton: PropTypes.string,\n pattern: PropTypes.string,\n date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n era: PropTypes.oneOf(['narrow', 'short', 'long']),\n year: PropTypes.oneOf(['numeric', '2-digit']),\n month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: PropTypes.oneOf(['numeric', '2-digit']),\n weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n hour: PropTypes.oneOf(['numeric', '2-digit']),\n hour12: PropTypes.bool,\n minute: PropTypes.oneOf(['numeric', '2-digit']),\n second: PropTypes.oneOf(['numeric', '2-digit']),\n timeZoneName: PropTypes.oneOf(['short', 'long'])\n })\n ]),\n formatPlaceholder: PropTypes.oneOfType([\n PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n PropTypes.shape({\n year: PropTypes.string,\n month: PropTypes.string,\n day: PropTypes.string,\n hour: PropTypes.string,\n minute: PropTypes.string,\n second: PropTypes.string\n })\n ]),\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n min: PropTypes.instanceOf(Date),\n max: PropTypes.instanceOf(Date),\n name: PropTypes.string,\n popupSettings: PropTypes.shape({\n animate: PropTypes.bool,\n appendTo: PropTypes.any,\n popupClass: PropTypes.string\n }),\n show: PropTypes.bool,\n steps: PropTypes.shape({\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n smoothScroll: PropTypes.bool,\n tabIndex: PropTypes.number,\n title: PropTypes.string,\n value: PropTypes.instanceOf(Date),\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline'])\n };\n /**\n * @hidden\n */\n TimePickerWithoutContext.defaultProps = {\n defaultShow: false,\n defaultValue: null,\n disabled: false,\n format: 't',\n max: MAX_TIME,\n min: MIN_TIME,\n popupSettings: {},\n tabIndex: 0,\n steps: {},\n required: false,\n validityStyles: true,\n dateInput: DateInput,\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid'\n };\n return TimePickerWithoutContext;\n}(React.Component));\nexport { TimePickerWithoutContext };\n/**\n * Represents the PropsContext of the `TimePicker` component.\n * Used for global configuration of all `TimePicker` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var TimePickerPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare */\n/**\n * Represents the KendoReact TimePicker Component.\n *\n * Accepts properties of type [TimePicker]({% slug api_dateinputs_timepickerprops %}).\n * Obtaining the `ref` returns an object of type [TimePickerHandle]({% slug api_dateinputs_timepickerhandle %}).\n */\nexport var TimePicker = withPropsContext(TimePickerPropsContext, TimePickerWithoutContext);\nTimePicker.displayName = 'KendoReactTimePicker';\nregisterForLocalization(TimePickerWithoutContext);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { View } from './View';\nimport { CalendarViewEnum } from '../models';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { MAX_DATE, MIN_DATE } from '../../utils';\nvar DEFAULT_FETCH_MONTHS_COUNT = 2;\n/**\n * @hidden\n */\nvar HorizontalViewList = /** @class */ (function (_super) {\n __extends(HorizontalViewList, _super);\n function HorizontalViewList(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this.isActive = false;\n _this.focusActiveDate = function () {\n if (!_this._element) {\n return;\n }\n var focusedCell = _this._element.querySelector('td.k-focus');\n var nextActiveCell = _this._element.querySelector('.k-state-pending-focus');\n if (focusedCell && focusedCell[0]) {\n focusedCell[0].classList.remove('k-focus');\n }\n if (nextActiveCell) {\n nextActiveCell.classList.add('k-focus');\n }\n _this.isActive = true;\n };\n _this.blurActiveDate = function () {\n if (!_this._element) {\n return;\n }\n var focusedCell = _this._element.querySelector('td.k-focus');\n if (focusedCell) {\n focusedCell.classList.remove('k-focus');\n }\n _this.isActive = false;\n };\n _this.rotateSelectionRange = function (selectionRange) {\n if (selectionRange.start === null || selectionRange.end === null) {\n return selectionRange;\n }\n var needRotate = selectionRange.end < selectionRange.start;\n return {\n start: needRotate ? selectionRange.end : selectionRange.start,\n end: needRotate ? selectionRange.start : selectionRange.end\n };\n };\n _this.handleDateChange = function (event, isTodayClick) {\n if (isTodayClick === void 0) { isTodayClick = false; }\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: cloneDate(event.value),\n target: _this,\n isTodayClick: isTodayClick\n };\n onChange.call(undefined, args);\n }\n };\n return _this;\n }\n Object.defineProperty(HorizontalViewList.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HorizontalViewList.prototype, \"weekNumber\", {\n get: function () {\n return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HorizontalViewList.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : HorizontalViewList.defaultProps.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HorizontalViewList.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : HorizontalViewList.defaultProps.max;\n },\n enumerable: false,\n configurable: true\n });\n HorizontalViewList.prototype.componentDidUpdate = function () {\n if (this.isActive) {\n this.focusActiveDate();\n }\n };\n HorizontalViewList.prototype.render = function () {\n var _this = this;\n var selectionRange = this.props.allowReverse\n ? this.rotateSelectionRange(this.props.selectionRange)\n : this.props.selectionRange;\n var rootClassNames = classNames('k-calendar-view k-align-items-start k-justify-content-center', {\n 'k-vstack': this.props.verticalView,\n 'k-hstack': !this.props.verticalView,\n 'k-calendar-monthview': this.props.activeView === CalendarViewEnum.month,\n 'k-calendar-yearview': this.props.activeView === CalendarViewEnum.year,\n 'k-calendar-decadeview': this.props.activeView === CalendarViewEnum.decade,\n 'k-calendar-centuryview': this.props.activeView === CalendarViewEnum.century\n });\n return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, className: rootClassNames }, this.props.dates.map(function (date) { return (React.createElement(\"table\", { className: \"k-calendar-table k-content\", key: date.getTime(), role: \"grid\" },\n React.createElement(View, { bus: _this.props.bus, service: _this.props.service, key: date.getTime(), direction: \"horizontal\", activeView: _this.props.activeView, cellUID: _this.props.cellUID, viewDate: date, min: _this.min, max: _this.max, focusedDate: _this.props.focusedDate, selectionRange: selectionRange, selectedDate: _this.props.value, showWeekNumbers: _this.weekNumber, onChange: _this.handleDateChange, onCellEnter: _this.props.onCellEnter, cell: _this.props.cell, weekCell: _this.props.weekCell }))); })));\n };\n HorizontalViewList.defaultProps = {\n showWeekNumbers: false,\n views: DEFAULT_FETCH_MONTHS_COUNT,\n take: DEFAULT_FETCH_MONTHS_COUNT,\n allowReverse: true,\n min: MIN_DATE,\n max: MAX_DATE\n };\n return HorizontalViewList;\n}(React.Component));\nexport { HorizontalViewList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForIntl, provideIntlService, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { classNames, guid, Keys, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { cloneDate, isEqualDate, getDate, firstDayOfMonth, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { chevronLeftIcon, chevronRightIcon } from '@progress/kendo-svg-icons';\nimport { Action, CalendarViewEnum, EMPTY_SELECTIONRANGE } from '../models';\nimport { Header } from './Header';\nimport { MIN_DATE, MAX_DATE } from '../../utils';\nimport { messages, prevView, nextView } from '../../messages';\nimport { BusViewService, NavigationService } from '../services';\nimport { dateInRange, isInRange, viewInRange, getToday, nullable } from '../../utils';\nimport { HorizontalViewList } from './HorizontalViewList';\nimport { TodayCommand } from './TodayCommand';\nvar extractDateFromValue = function (min, max, value) {\n if (min === void 0) { min = MultiViewCalendarWithoutContext.defaultProps.min; }\n if (max === void 0) { max = MultiViewCalendarWithoutContext.defaultProps.max; }\n return value instanceof Date && !Array.isArray(value) && isInRange(getDate(value), min, max)\n ? getDate(value)\n : null;\n};\nvar extractMultipleFromValue = function (min, max, value) {\n if (min === void 0) { min = MultiViewCalendarWithoutContext.defaultProps.min; }\n if (max === void 0) { max = MultiViewCalendarWithoutContext.defaultProps.max; }\n return Array.isArray(value)\n ? value.filter(function (date) { return isInRange(date, min, max); }).map(function (date) { return getDate(date); })\n : null;\n};\nvar extractRangeFromValue = function (value) {\n return typeof value === 'object' && !(value instanceof Date) && value !== null && !Array.isArray(value)\n ? value\n : EMPTY_SELECTIONRANGE;\n};\nvar extractFocusedDate = function (single, multiple, range) {\n return single || (multiple && multiple[0]) || (range && range.start);\n};\nvar extractActiveRange = function (range, single) {\n return range.start === null && single === null\n ? 'start'\n : range.end === null\n ? 'end'\n : 'start';\n};\n/** @hidden */\nvar MultiViewCalendarWithoutContext = /** @class */ (function (_super) {\n __extends(MultiViewCalendarWithoutContext, _super);\n function MultiViewCalendarWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this.dates = [];\n _this.selectedDate = null;\n _this.selectedMultiple = null;\n _this.selectedRange = EMPTY_SELECTIONRANGE;\n _this._focusedDate = new Date();\n _this.cellUID = guid();\n _this.activeRangeEnd = 'start';\n _this._element = null;\n _this.intl = null;\n _this.localization = null;\n _this.service = null;\n _this.wrapperID = guid();\n _this.calendarViewList = null;\n _this.isActive = false;\n _this.calculateFocusFromValue = true;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._element) {\n _this._element.focus();\n }\n };\n _this.clampRange = function (value) { return ({ start: value, end: null }); };\n _this.rangeWithFocused = function (range, focusedDate) {\n return {\n start: range.start,\n end: range.end === null && range.start !== null && _this.isActive ? focusedDate : range.end\n };\n };\n _this.generateRange = function (candidate, value) {\n var end = value.end, start = value.start;\n var shouldSwap = value.start !== null && candidate.getTime() <= value.start.getTime();\n if (!_this.props.allowReverse && shouldSwap) {\n return { start: candidate, end: _this.selectedRange.start };\n }\n return _this.activeRange !== 'end'\n ? ({ start: candidate, end: end })\n : ({ start: start || _this.selectedDate, end: candidate });\n };\n _this.canNavigate = function (action) {\n if (!_this.service) {\n return false;\n }\n var candidate = _this.service.move(_this.focusedDate, action);\n return (_this.min <= candidate && candidate <= _this.max)\n || _this.service.isInSameView(candidate, _this.min)\n || _this.service.isInSameView(candidate, _this.max);\n };\n _this.navigate = function (action, date) {\n _this.calculateFocusFromValue = false;\n var candidate = _this.move(action, date);\n _this.setState({ navigateDate: candidate, focusedDate: candidate });\n };\n _this.move = function (action, date) {\n return _this.clampDate(_this.service.move(date, action));\n };\n _this.clampDate = function (value) {\n return dateInRange(value, _this.min, _this.max);\n };\n _this.shouldAutoCorrect = function (candidate, value) {\n var end = value.end, start = value.start;\n if (_this.activeRange !== 'end') {\n return end !== null && candidate > end;\n }\n else {\n return start !== null && candidate < start;\n }\n };\n _this.handleCellEnter = function (value) {\n if (_this.props.mode === 'range') {\n _this.calculateFocusFromValue = false;\n _this.setState({\n focusedDate: value\n });\n }\n };\n _this.handleMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleClick = function (_) {\n if (!_this._element) {\n return;\n }\n _this._element.focus({ preventScroll: true });\n };\n _this.handleFocus = function (event) {\n _this.isActive = true;\n if (!_this.calendarViewList) {\n return;\n }\n _this.calendarViewList.focusActiveDate();\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n _this.isActive = false;\n if (!_this.calendarViewList) {\n return;\n }\n _this.calendarViewList.blurActiveDate();\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handleTodayClick = function (event) {\n if (!_this.todayIsInRange) {\n return;\n }\n _this.handleDateChange(event);\n };\n _this.handlePrevButtonClick = function () {\n var action = Action.PrevView;\n if (_this.state.activeView > 0 && _this.focusedDate.getFullYear() > _this.dates[0].getFullYear()) {\n _this.navigate(action, _this.move(action, _this.focusedDate));\n }\n else {\n var inMonthDate = _this.isInMonth(_this.focusedDate, _this.dates[1])\n ? _this.move(action, _this.focusedDate)\n : _this.focusedDate;\n _this.navigate(action, inMonthDate);\n }\n };\n _this.handleNextButtonClick = function () {\n _this.navigate(Action.NextView, _this.focusedDate);\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n if (keyCode === Keys.enter) {\n var args = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.focusedDate,\n target: _this\n };\n _this.handleDateChange(args);\n }\n else {\n var candidate = dateInRange(_this.navigation.move(_this.focusedDate, _this.navigation.action(event), _this.state.activeView, _this.service, event), _this.min, _this.max);\n if (isEqualDate(_this.focusedDate, candidate)) {\n return;\n }\n if (_this.dates && _this.service && !_this.service.isInArray(candidate, _this.dates)) {\n _this.setState({ navigateDate: candidate });\n }\n ;\n _this.calculateFocusFromValue = false;\n _this.setState({ focusedDate: candidate });\n }\n event.preventDefault();\n };\n _this.handleViewChange = function (_a) {\n var view = _a.view;\n _this.calculateFocusFromValue = false;\n _this.setState(function (state) { return ({ activeView: view, navigateDate: state.focusedDate }); });\n };\n _this.handleDateChange = function (event) {\n var focusedDate = cloneDate(event.value);\n var canNavigateDown = _this.bus.canMoveDown(_this.state.activeView);\n if (_this.props.disabled) {\n return;\n }\n if (canNavigateDown) {\n if (event.isTodayClick) {\n _this.bus.moveToBottom(_this.state.activeView);\n }\n else {\n _this.bus.moveDown(_this.state.activeView, event.syntheticEvent);\n _this.setState({ focusedDate: focusedDate });\n return;\n }\n }\n _this.calculateFocusFromValue = true;\n var value;\n switch (_this.props.mode) {\n case 'single':\n value = cloneDate(event.value);\n break;\n case 'multiple':\n if (Array.isArray(_this.selectedMultiple)) {\n var result = _this.selectedMultiple.slice();\n var index_1 = -1;\n result.forEach(function (date, idx) {\n if (isEqualDate(date, event.value)) {\n index_1 = idx;\n }\n });\n index_1 !== -1\n ? result.splice(index_1, 1)\n : result.push(cloneDate(event.value));\n value = result.slice();\n }\n else {\n if (_this.selectedDate) {\n value = [cloneDate(_this.selectedDate), cloneDate(event.value)];\n }\n else {\n value = [cloneDate(event.value)];\n }\n }\n break;\n case 'range':\n var hasSelection = _this.selectedRange.start !== null\n && _this.selectedRange.end !== null\n && _this.activeRange === 'start';\n value = hasSelection\n ? _this.clampRange(event.value)\n : _this.generateRange(event.value, _this.selectedRange);\n _this.activeRangeEnd = _this.activeRange !== 'end' ? 'end' : 'start';\n break;\n default:\n value = cloneDate(event.value);\n break;\n }\n _this.valueDuringOnChange = value;\n if (event.isTodayClick) {\n _this.setState({ navigateDate: focusedDate });\n }\n _this.setState({ value: value, focusedDate: focusedDate });\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: value,\n target: _this\n };\n onChange.call(undefined, args);\n }\n _this.valueDuringOnChange = undefined;\n };\n var value = props.value !== undefined\n ? props.value\n : props.defaultValue || MultiViewCalendarWithoutContext.defaultProps.defaultValue;\n var selectedDate = extractDateFromValue(_this.min, _this.max, value);\n var selectedMultiple = extractMultipleFromValue(_this.min, _this.max, value);\n var selectedRange = extractRangeFromValue(value);\n var calculatedFocus = extractFocusedDate(selectedDate, selectedMultiple, selectedRange);\n var activeView = viewInRange(CalendarViewEnum[props.defaultActiveView], _this.bottomView, _this.topView);\n var focusedDate = dateInRange(props.focusedDate || calculatedFocus || getToday(), _this.min, _this.max);\n _this.state = {\n value: value,\n activeView: activeView,\n focusedDate: focusedDate,\n navigateDate: focusedDate\n };\n _this.activeRangeEnd = extractActiveRange(selectedRange, selectedDate);\n _this.bus = new BusViewService(_this.handleViewChange);\n _this.navigation = new NavigationService(_this.bus);\n _this.calculateFocusFromValue = false;\n _this.lastView = activeView;\n _this.lastViewsCount = _this.props.views || HorizontalViewList.defaultProps.views;\n return _this;\n }\n Object.defineProperty(MultiViewCalendarWithoutContext.prototype, \"isRtl\", {\n get: function () {\n return this.props.dir === 'rtl';\n },\n enumerable: false,\n configurable: true\n });\n ;\n Object.defineProperty(MultiViewCalendarWithoutContext.prototype, \"element\", {\n /**\n * Gets the wrapping element of the MultiViewCalendar component.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendarWithoutContext.prototype, \"value\", {\n /**\n * Gets the value of the MultiViewCalendar.\n */\n get: function () {\n return this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendarWithoutContext.prototype, \"focusedDate\", {\n /**\n * Gets the current focused date of the MultiViewCalendar.\n */\n get: function () {\n return cloneDate(this._focusedDate);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendarWithoutContext.prototype, \"min\", {\n get: function () {\n return getDate(this.props.min !== undefined\n ? this.props.min\n : MultiViewCalendarWithoutContext.defaultProps.min);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendarWithoutContext.prototype, \"max\", {\n get: function () {\n return getDate(this.props.max !== undefined\n ? this.props.max\n : MultiViewCalendarWithoutContext.defaultProps.max);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendarWithoutContext.prototype, \"bottomView\", {\n get: function () {\n return CalendarViewEnum[this.props.bottomView !== undefined\n ? this.props.bottomView\n : MultiViewCalendarWithoutContext.defaultProps.bottomView];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendarWithoutContext.prototype, \"topView\", {\n get: function () {\n return CalendarViewEnum[this.props.topView !== undefined\n ? this.props.topView\n : MultiViewCalendarWithoutContext.defaultProps.topView];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendarWithoutContext.prototype, \"activeRange\", {\n get: function () {\n return this.props.activeRangeEnd !== undefined\n ? this.props.activeRangeEnd\n : this.activeRangeEnd;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendarWithoutContext.prototype, \"todayIsInRange\", {\n get: function () {\n return isInRange(getToday(), getDate(this.min), getDate(this.max));\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n MultiViewCalendarWithoutContext.prototype.componentDidMount = function () {\n this.calculateFocusFromValue = true;\n };\n /**\n * @hidden\n */\n MultiViewCalendarWithoutContext.prototype.componentDidUpdate = function () {\n if (this.calendarViewList) {\n (this.isActive ? this.calendarViewList.focusActiveDate : this.calendarViewList.blurActiveDate)();\n }\n var stateValue = extractDateFromValue(this.min, this.max, this.value);\n this.calculateFocusFromValue = Boolean(this.selectedDate\n && stateValue\n && (this.selectedDate.getTime() && stateValue.getTime()));\n this.lastView = this.state.activeView;\n this.lastViewsCount = this.props.views || HorizontalViewList.defaultProps.views;\n };\n /**\n * @hidden\n */\n MultiViewCalendarWithoutContext.prototype.render = function () {\n var _this = this;\n if (this.props._ref) {\n this.props._ref(this);\n }\n this.intl = provideIntlService(this);\n this.localization = provideLocalizationService(this);\n this.bus.configure(this.bottomView, this.topView);\n var activeView = viewInRange(this.state.activeView, this.bottomView, this.topView);\n this.service = this.bus.service(activeView, this.intl);\n // console.log('this.service', this.service);\n this.selectedDate = extractDateFromValue(this.min, this.max, this.value);\n this.selectedMultiple = extractMultipleFromValue(this.min, this.max, this.value);\n this.selectedRange = extractRangeFromValue(this.value);\n var calculatedFocus = extractFocusedDate(this.selectedDate, this.selectedMultiple, this.selectedRange);\n this._focusedDate = dateInRange(this.calculateFocusFromValue && calculatedFocus !== null\n ? calculatedFocus\n : this.state.focusedDate, this.min, this.max);\n var wrapperClassName = classNames('k-widget k-calendar k-calendar-range', {\n 'k-disabled': this.props.disabled\n }, this.props.className);\n var visualizedRange = this.rangeWithFocused(this.selectedRange, this.focusedDate);\n var prevViewTitle = this.localization.toLanguageString(prevView, messages[prevView]);\n var nextViewTittle = this.localization.toLanguageString(nextView, messages[nextView]);\n var isPrevDisabled = !this.canNavigate(Action.PrevView);\n var isNextDisabled = !this.canNavigate(Action.NextView);\n var prevBtnAria = { 'aria-disabled': isPrevDisabled };\n var nextBtnAria = { 'aria-disabled': isNextDisabled };\n var didViewChange = this.lastView !== activeView;\n var isDateInMonth = this.dates && this.isInMonth(this.state.navigateDate, this.dates[0]);\n var didViewsCountChange = this.lastViewsCount !== this.props.views;\n if (!isDateInMonth || didViewChange || didViewsCountChange) {\n this.dates = this.service.datesList(this.state.navigateDate, this.props.views || HorizontalViewList.defaultProps.views);\n }\n var activeDate = cloneDate(this.dates && this.dates[0] ? this.dates[0] : getToday());\n return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, className: wrapperClassName, id: this.props.id || this.wrapperID, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, tabIndex: !this.props.disabled ? this.props.tabIndex : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, onMouseDown: this.handleMouseDown, onClick: this.handleClick, onKeyDown: this.handleKeyDown, \"aria-disabled\": this.props.disabled, dir: this.props.dir },\n React.createElement(Header, { key: \".kendo.calendar.header.\".concat(activeDate.getTime()), activeView: activeView, currentDate: activeDate, min: this.min, max: this.max, rangeLength: this.props.views, bus: this.bus, service: this.service, headerTitle: this.props.headerTitle, verticalView: this.props.mobileMode, commands: (React.createElement(React.Fragment, null,\n React.createElement(Button, __assign({ type: \"button\", className: \"k-calendar-nav-prev\", icon: this.isRtl ? 'chevron-right' : 'chevron-left', svgIcon: this.isRtl ? chevronRightIcon : chevronLeftIcon, fillMode: \"flat\", title: prevViewTitle, disabled: isPrevDisabled, onClick: this.handlePrevButtonClick }, prevBtnAria)),\n React.createElement(TodayCommand, { min: this.min, max: this.max, onClick: this.handleTodayClick, disabled: !this.todayIsInRange }),\n React.createElement(Button, __assign({ type: \"button\", className: \"k-calendar-nav-next\", icon: this.isRtl ? 'chevron-left' : 'chevron-right', svgIcon: this.isRtl ? chevronLeftIcon : chevronRightIcon, fillMode: \"flat\", title: nextViewTittle, disabled: isNextDisabled, onClick: this.handleNextButtonClick }, nextBtnAria)))) }),\n React.createElement(HorizontalViewList, { ref: function (el) { _this.calendarViewList = el; }, dates: this.dates, activeView: activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, bus: this.bus, service: this.service, selectionRange: visualizedRange, value: this.selectedMultiple || this.selectedDate, cellUID: this.cellUID, views: this.props.views, onChange: this.handleDateChange, showWeekNumbers: this.props.weekNumber, onCellEnter: this.handleCellEnter, cell: this.props.cell, weekCell: this.props.weekCell, headerTitle: this.props.headerTitle, verticalView: this.props.mobileMode })));\n };\n // protected isListInRange = (list: Date[]): boolean => {\n // return this.min < list[0]\n // && this.max > list[Math.max(0, (this.props.views || MultiViewCalendarWithoutContext.defaultProps.views) - 1)];\n // };\n MultiViewCalendarWithoutContext.prototype.isInMonth = function (date, month) {\n return !!month && firstDayOfMonth(month) <= date && date <= lastDayOfMonth(month);\n };\n /**\n * @hidden\n */\n MultiViewCalendarWithoutContext.displayName = 'MultiViewCalendar';\n /**\n * @hidden\n */\n MultiViewCalendarWithoutContext.propTypes = {\n activeRangeEnd: PropTypes.oneOf(['start', 'end']),\n allowReverse: PropTypes.bool,\n bottomView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n className: PropTypes.string,\n defaultActiveView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n defaultValue: PropTypes.oneOfType([\n nullable(PropTypes.instanceOf(Date)),\n PropTypes.arrayOf(PropTypes.instanceOf(Date)),\n PropTypes.shape({\n start: nullable(PropTypes.instanceOf(Date)),\n end: nullable(PropTypes.instanceOf(Date))\n })\n ]),\n disabled: PropTypes.bool,\n focusedDate: PropTypes.instanceOf(Date),\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n mode: PropTypes.oneOf(['single', 'multiple', 'range']),\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n tabIndex: PropTypes.number,\n topView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n value: PropTypes.oneOfType([\n nullable(PropTypes.instanceOf(Date)),\n PropTypes.arrayOf(PropTypes.instanceOf(Date)),\n PropTypes.shape({\n start: nullable(PropTypes.instanceOf(Date).isRequired),\n end: nullable(PropTypes.instanceOf(Date).isRequired)\n })\n ]),\n views: function (props, propName, componentName) {\n var views = props[propName];\n if (views !== undefined && views < 1) {\n return new Error(\"Invalid prop '\".concat(propName, \"' supplied to\") +\n \"'\".concat(componentName, \"'. The '\").concat(propName, \"' property cannot be less than 1'\"));\n }\n return null;\n },\n weekNumber: PropTypes.bool,\n dir: PropTypes.string\n };\n /**\n * @hidden\n */\n MultiViewCalendarWithoutContext.defaultProps = {\n disabled: false,\n min: MIN_DATE,\n max: MAX_DATE,\n navigation: true,\n defaultActiveView: 'month',\n defaultValue: null,\n topView: 'century',\n tabIndex: 0,\n bottomView: 'month',\n views: 2,\n allowReverse: false\n };\n return MultiViewCalendarWithoutContext;\n}(React.Component));\nexport { MultiViewCalendarWithoutContext };\n/**\n * Represents the PropsContext of the `MultiViewCalendar` component.\n * Used for global configuration of all `MultiViewCalendar` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var MultiViewCalendarPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the KendoReact MultiViewCalendar Component.\n *\n * Accepts properties of type [MultiViewCalendarProps]({% slug api_dateinputs_multiviewcalendarprops %}).\n * Obtaining the `ref` returns an object of type [MultiViewCalendarHandle]({% slug api_dateinputs_multiviewcalendarhandle %}).\n */\nexport var MultiViewCalendar = withPropsContext(MultiViewCalendarPropsContext, MultiViewCalendarWithoutContext);\nMultiViewCalendar.displayName = 'KendoReactMultiViewCalendar';\nregisterForIntl(MultiViewCalendarWithoutContext);\nregisterForLocalization(MultiViewCalendarWithoutContext);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { guid, classNames, Keys, createPropsContext, withPropsContext, IconWrap, getActiveElement } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { arrowsSwapIcon } from '@progress/kendo-svg-icons';\nimport { validatePackage, canUseDOM } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { DateInput, DateInputWithoutContext } from '../dateinput/DateInput';\nimport { MultiViewCalendar } from '../calendar/components/MultiViewCalendar';\nimport { EMPTY_SELECTIONRANGE } from '../calendar/models';\nimport { MIN_DATE, MAX_DATE } from '../utils';\nimport { MOBILE_MEDIUM_DEVISE } from '../common/constants';\nimport { swapStartEnd, start, end, separator, messages, dateRangePickerSet, dateRangePickerCancel } from '../messages';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { nullable } from '../utils';\nimport { AdaptiveMode } from '../common/AdaptiveMode';\nimport { ActionSheetContent } from '@progress/kendo-react-layout';\n/** @hidden */\nvar DateRangePickerWithoutContext = /** @class */ (function (_super) {\n __extends(DateRangePickerWithoutContext, _super);\n function DateRangePickerWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this._calendar = null;\n _this._startDateInput = React.createRef();\n _this._endDateInput = React.createRef();\n _this._popupId = guid();\n _this._startInputId = guid();\n _this._endInputId = guid();\n _this.shouldFocusDateInput = false;\n _this.shouldFocusCalendar = false;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this.startDateInput) {\n _this.startDateInput.focus();\n }\n };\n _this.setCalendarRef = function (calendar) {\n _this._calendar = calendar;\n };\n _this.focusCalendarElement = function () {\n if (_this._calendar && _this._calendar.element) {\n _this._calendar.element.focus({ preventScroll: true });\n }\n };\n _this.calculateValue = function (props, state) {\n var value = props.value !== undefined\n ? props.value\n : state.value;\n return value || EMPTY_SELECTIONRANGE;\n };\n _this.calculateShow = function (nextProps, nextState) {\n return nextProps.show !== undefined\n ? nextProps.show\n : nextState.show;\n };\n _this.renderCalendar = function () {\n var value = _this.value || EMPTY_SELECTIONRANGE;\n var calendarProps = __assign(__assign({ min: _this.min, max: _this.max, allowReverse: _this.props.allowReverse, mode: 'range', focusedDate: _this.props.focusedDate, disabled: _this.props.disabled, className: _this.mobileMode ? 'k-calendar-lg' : '', mobileMode: _this.mobileMode }, _this.props.calendarSettings), { value: value, dir: _this.props.dir, onChange: _this.handleCalendarChange });\n return _this.props.calendar\n ? React.createElement(_this.props.calendar, __assign({}, calendarProps))\n : React.createElement(MultiViewCalendar, __assign({}, calendarProps, { ref: _this.setCalendarRef }));\n };\n _this.renderPopup = function () {\n var popupProps = __assign(__assign({ popupClass: 'k-daterangepicker-popup', animate: _this._element !== null, anchor: _this._element, id: _this._popupId, anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n }, popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n } }, _this.props.popupSettings), { show: _this.show });\n return (_this.props.popup\n ? React.createElement(_this.props.popup, __assign({}, popupProps), _this.renderCalendar())\n : React.createElement(Popup, __assign({}, popupProps), _this.renderCalendar()));\n };\n _this.renderAdaptivePopup = function () {\n var _a = _this.state.windowWidth, windowWidth = _a === void 0 ? 0 : _a;\n var actionSheetProps = {\n expand: _this.show,\n onClose: function (event) { return _this.handleCancel(event); },\n adaptiveTitle: _this.props.adaptiveTitle,\n windowWidth: windowWidth,\n footer: {\n cancelText: _this.localizationService.toLanguageString(dateRangePickerCancel, messages[dateRangePickerCancel]),\n onCancel: _this.handleCancel,\n applyText: _this.localizationService.toLanguageString(dateRangePickerSet, messages[dateRangePickerSet]),\n onApply: _this.handleBlur\n }\n };\n return (React.createElement(AdaptiveMode, __assign({}, actionSheetProps),\n React.createElement(ActionSheetContent, { className: '!k-overflow-hidden' },\n React.createElement(\"div\", { className: 'k-scrollable-wrap' }, _this.renderCalendar()))));\n };\n _this.handleReverseClick = function (event) {\n var value = {\n start: _this.value.end,\n end: _this.value.start\n };\n var args = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n };\n _this.handleChange(value, args);\n };\n _this.handleReverseMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleFocus = function (event) {\n clearTimeout(_this.nextTickId);\n if (!_this.shouldFocusDateInput) {\n _this.setShow(true);\n if (_this.mobileMode) {\n _this.setState({ currentValue: _this.value });\n }\n }\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n _this.nextTick(function () {\n _this.setShow(false);\n });\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handleCancel = function (event) {\n _this.nextTick(function () {\n _this.setShow(false);\n _this.setState({ currentValue: EMPTY_SELECTIONRANGE });\n });\n var onCancel = _this.props.onCancel;\n if (onCancel) {\n onCancel.call(undefined, event);\n }\n };\n _this.handleEndChange = function (event) {\n var value = {\n start: _this.value.start,\n end: cloneDate(event.value || undefined)\n };\n _this.handleChange(value, event);\n };\n _this.handleStartChange = function (event) {\n var value = {\n start: cloneDate(event.value || undefined),\n end: _this.value.end\n };\n _this.handleChange(value, event);\n };\n _this.extractRangeFromValue = function (event) {\n if (!Array.isArray(event.value) && !(event.value instanceof Date)) {\n return event.value || EMPTY_SELECTIONRANGE;\n }\n var candidate = Array.isArray(event.value) ? event.value[0] : event.value;\n return {\n start: _this.value.end !== null ? candidate : _this.value.start,\n end: _this.value.start !== null ? candidate : _this.value.end\n };\n };\n _this.handleCalendarChange = function (event) {\n var value = _this.extractRangeFromValue(event);\n _this.handleChange(value, event);\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode, altKey = event.altKey;\n var activeElement = getActiveElement(document);\n if (keyCode === Keys.esc) {\n event.preventDefault();\n _this.shouldFocusDateInput = true;\n _this.setShow(false);\n }\n else if (altKey && keyCode === Keys.down) {\n event.preventDefault();\n _this.shouldFocusCalendar = true;\n _this.setShow(true);\n }\n else if (keyCode === Keys.tab\n && _this.show\n && _this._calendar\n && _this._calendar.element\n && _this.endDateInput\n && _this.endDateInput.element\n && document\n && activeElement === _this.endDateInput.element) {\n event.preventDefault();\n _this.focusCalendarElement();\n }\n };\n _this.handleChange = function (value, event) {\n _this.setState({ value: value });\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n show: _this.show,\n target: _this\n };\n onChange.call(undefined, args);\n }\n _this.valueDuringOnChange = undefined;\n };\n validatePackage(packageMetadata);\n _this.state = {\n show: _this.props.show || _this.props.defaultShow || DateRangePickerWithoutContext.defaultProps.defaultShow,\n value: _this.props.value || _this.props.defaultValue || DateRangePickerWithoutContext.defaultProps.defaultValue,\n currentValue: EMPTY_SELECTIONRANGE\n };\n _this.nextTick = _this.nextTick.bind(_this);\n _this.setShow = _this.setShow.bind(_this);\n _this.focusCalendarElement = _this.focusCalendarElement.bind(_this);\n _this.focusDateInputElement = _this.focusDateInputElement.bind(_this);\n return _this;\n }\n Object.defineProperty(DateRangePickerWithoutContext.prototype, \"element\", {\n /**\n * Gets the wrapping element of the DateRangePicker.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateRangePickerWithoutContext.prototype, \"startDateInput\", {\n /**\n * Gets the start DateInput component inside the DatePicker component.\n */\n get: function () {\n return this._startDateInput.current;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateRangePickerWithoutContext.prototype, \"endDateInput\", {\n /**\n * Gets the end DateInput component inside the DatePicker component.\n */\n get: function () {\n return this._endDateInput.current;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateRangePickerWithoutContext.prototype, \"calendar\", {\n /**\n * Gets the MultiVieCalendar inside the DateRangePicker.\n */\n get: function () {\n return this._calendar;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateRangePickerWithoutContext.prototype, \"value\", {\n /**\n * Gets the value of the DateRangePicker.\n */\n get: function () {\n var value = this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n return value || EMPTY_SELECTIONRANGE;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateRangePickerWithoutContext.prototype, \"show\", {\n /**\n * Gets the popup state of the DateRangePicker.\n */\n get: function () {\n return this.showDuringOnChange !== undefined\n ? this.showDuringOnChange\n : this.props.show !== undefined\n ? this.props.show\n : this.state.show;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateRangePickerWithoutContext.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : DateRangePickerWithoutContext.defaultProps.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateRangePickerWithoutContext.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : DateRangePickerWithoutContext.defaultProps.max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateRangePickerWithoutContext.prototype, \"document\", {\n get: function () {\n if (!canUseDOM) {\n return;\n }\n // useful only for user actions\n return (this.element && this.element.ownerDocument) || document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateRangePickerWithoutContext.prototype, \"localizationService\", {\n get: function () {\n var localization = provideLocalizationService(this);\n return localization;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateRangePickerWithoutContext.prototype, \"mobileMode\", {\n /**\n * The mobile mode of the DateRangePicker.\n */\n get: function () {\n var isAdaptive = this.state.windowWidth && this.state.windowWidth <= MOBILE_MEDIUM_DEVISE && this.props.adaptive;\n return !!isAdaptive;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n DateRangePickerWithoutContext.prototype.componentDidMount = function () {\n var _a;\n this.observerResize = canUseDOM && window.ResizeObserver && new window.ResizeObserver(this.calculateMedia.bind(this));\n if (this.show) {\n // If defaultShow is true during the initial render, the popup is not aligned.\n this.forceUpdate();\n }\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.observe(this.document.body);\n }\n };\n /**\n * @hidden\n */\n DateRangePickerWithoutContext.prototype.componentDidUpdate = function () {\n if (this.shouldFocusCalendar) {\n this.focusCalendarElement();\n }\n if (this.shouldFocusDateInput) {\n this.focusDateInputElement();\n }\n this.shouldFocusCalendar = false;\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n DateRangePickerWithoutContext.prototype.componentWillUnmount = function () {\n var _a;\n clearTimeout(this.nextTickId);\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.disconnect();\n }\n };\n /**\n * @hidden\n */\n DateRangePickerWithoutContext.prototype.render = function () {\n var _this = this;\n var value = this.value || EMPTY_SELECTIONRANGE;\n var valueToShow = (this.mobileMode && this.show) ? this.state.currentValue : value;\n var startDateInputId = (this.props.startDateInputSettings || {}).id || this._startInputId;\n var endDateInputId = (this.props.endDateInputSettings || {}).id || this._endInputId;\n var rootClassName = classNames('k-daterangepicker', {\n 'k-disabled': this.props.disabled\n }, this.props.className);\n var startMessage = this.localizationService.toLanguageString(start, messages[start]);\n var endMessage = this.localizationService.toLanguageString(end, messages[end]);\n var separatorMessage = this.localizationService.toLanguageString(separator, messages[separator]);\n var startDateInputProps = __assign(__assign({ disableSelection: this.mobileMode && true, label: startMessage, format: this.props.format, min: this.min, max: this.max, id: this._startInputId, disabled: this.props.disabled, valid: this.props.valid, tabIndex: this.props.tabIndex, ariaExpanded: this.show }, this.props.startDateInputSettings), { value: valueToShow.start, onChange: this.handleStartChange });\n var endDateInputProps = __assign(__assign({ disableSelection: this.mobileMode && true, label: endMessage, format: this.props.format, min: this.min, max: this.max, id: this._endInputId, disabled: this.props.disabled, valid: this.props.valid, tabIndex: this.props.tabIndex, ariaExpanded: this.show }, this.props.endDateInputSettings), { value: valueToShow.end, onChange: this.handleEndChange });\n var reverseButton = (React.createElement(Button, __assign({ type: \"button\", className: \"k-select\", fillMode: \"flat\", title: provideLocalizationService(this)\n .toLanguageString(swapStartEnd, messages[swapStartEnd]), onMouseDown: this.handleReverseMouseDown, onClick: this.handleReverseClick }, {\n 'aria-controls': startDateInputId + ' ' + endDateInputId,\n 'aria-label': provideLocalizationService(this)\n .toLanguageString(swapStartEnd, messages[swapStartEnd])\n }),\n React.createElement(IconWrap, { style: { transform: 'rotate(90deg)' }, name: \"arrows-swap\", icon: arrowsSwapIcon })));\n return (React.createElement(React.Fragment, null,\n React.createElement(\"span\", { ref: function (span) {\n _this._element = span;\n }, className: rootClassName, style: this.props.style, id: this.props.id, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, tabIndex: this.props.tabIndex, onFocus: this.handleFocus, onBlur: !this.mobileMode ? this.handleBlur : undefined, onKeyDown: this.handleKeyDown, dir: this.props.dir },\n this.props.startDateInput\n ? React.createElement(this.props.startDateInput, __assign({}, startDateInputProps))\n : React.createElement(DateInput, __assign({}, startDateInputProps, { ref: this._startDateInput, ariaRole: \"combobox\", ariaControls: this._popupId, readonly: this.mobileMode })),\n (this.props.allowReverse\n || (this.props.calendarSettings && this.props.calendarSettings.allowReverse))\n && this.props.swapButton\n ? (reverseButton)\n : (separatorMessage),\n this.props.endDateInput\n ? React.createElement(this.props.endDateInput, __assign({}, endDateInputProps))\n : React.createElement(DateInput, __assign({}, endDateInputProps, { ref: this._endDateInput, ariaRole: \"combobox\", ariaControls: this._popupId, readonly: this.mobileMode })),\n !this.mobileMode && this.renderPopup()),\n this.mobileMode && this.renderAdaptivePopup()));\n };\n DateRangePickerWithoutContext.prototype.focusDateInputElement = function () {\n if (!document || !this.startDateInput || !this.startDateInput.element\n || !this.endDateInput || !this.endDateInput.element) {\n return;\n }\n var activeElement = getActiveElement(document);\n if ((this.value.start === null || this.value.end !== null)\n && activeElement !== this.endDateInput.element) {\n this.startDateInput.element.focus({ preventScroll: true });\n }\n else if (activeElement !== this.startDateInput.element) {\n this.endDateInput.element.focus({ preventScroll: true });\n }\n };\n DateRangePickerWithoutContext.prototype.nextTick = function (f) {\n // XXX: use window.setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n // Handles multiple focus events happening at the same time.\n clearTimeout(this.nextTickId);\n this.nextTickId = window.setTimeout(function () { return f(); });\n };\n DateRangePickerWithoutContext.prototype.setShow = function (show) {\n var _a = this.props, onOpen = _a.onOpen, onClose = _a.onClose;\n if (this.show === show) {\n return;\n }\n this.setState({ show: show });\n if (show && onOpen) {\n onOpen.call(undefined, {\n target: this\n });\n }\n if (!show && onClose) {\n onClose.call(undefined, {\n target: this\n });\n }\n };\n DateRangePickerWithoutContext.prototype.calculateMedia = function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n this.setState({ windowWidth: entry.target.clientWidth });\n }\n ;\n };\n ;\n /**\n * @hidden\n */\n DateRangePickerWithoutContext.displayName = 'DateRangePicker';\n /**\n * @hidden\n */\n DateRangePickerWithoutContext.propTypes = {\n allowReverse: PropTypes.bool,\n calendarSettings: PropTypes.any,\n className: PropTypes.string,\n defaultShow: PropTypes.bool,\n defaultValue: PropTypes.shape({\n start: nullable(PropTypes.instanceOf(Date).isRequired),\n end: nullable(PropTypes.instanceOf(Date).isRequired)\n }),\n disabled: PropTypes.bool,\n endDateInputSettings: PropTypes.shape(DateInputWithoutContext.propTypes),\n focusedDate: PropTypes.instanceOf(Date),\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n skeleton: PropTypes.string,\n pattern: PropTypes.string,\n date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n era: PropTypes.oneOf(['narrow', 'short', 'long']),\n year: PropTypes.oneOf(['numeric', '2-digit']),\n month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: PropTypes.oneOf(['numeric', '2-digit']),\n weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n hour: PropTypes.oneOf(['numeric', '2-digit']),\n hour12: PropTypes.bool,\n minute: PropTypes.oneOf(['numeric', '2-digit']),\n second: PropTypes.oneOf(['numeric', '2-digit']),\n timeZoneName: PropTypes.oneOf(['short', 'long'])\n })\n ]),\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n popupSettings: PropTypes.any,\n show: PropTypes.bool,\n startDateInputSettings: PropTypes.any,\n style: PropTypes.any,\n swapButton: PropTypes.any,\n tabIndex: PropTypes.number,\n dir: PropTypes.string,\n value: PropTypes.shape({\n start: nullable(PropTypes.instanceOf(Date).isRequired),\n end: nullable(PropTypes.instanceOf(Date).isRequired)\n })\n };\n /**\n * @hidden\n */\n DateRangePickerWithoutContext.defaultProps = {\n allowReverse: false,\n defaultShow: false,\n defaultValue: EMPTY_SELECTIONRANGE,\n disabled: false,\n format: 'd',\n max: MAX_DATE,\n min: MIN_DATE,\n swapButton: false\n };\n return DateRangePickerWithoutContext;\n}(React.Component));\nexport { DateRangePickerWithoutContext };\n/**\n * Represents the PropsContext of the `DateRangePicker` component.\n * Used for global configuration of all `DateRangePicker` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var DateRangePickerPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare */\n/**\n * Represents the KendoReact DateRangePicker Component.\n *\n * Accepts properties of type [DateRangePickerProps]({% slug api_dateinputs_daterangepickerprops %}).\n * Obtaining the `ref` returns an object of type [DateRangePickerHandle]({% slug api_dateinputs_daterangepickerhandle %}).\n */\nexport var DateRangePicker = withPropsContext(DateRangePickerPropsContext, DateRangePickerWithoutContext);\nDateRangePicker.displayName = 'KendoReactDateRangePicker';\nregisterForLocalization(DateRangePickerWithoutContext);\n","/**\n * Lists the possible states of a file.\n */\nexport var UploadFileStatus;\n(function (UploadFileStatus) {\n /**\n * Indicates that the file upload process has failed.\n */\n UploadFileStatus[UploadFileStatus[\"UploadFailed\"] = 0] = \"UploadFailed\";\n /**\n * An initially selected fake file without a set state.\n */\n UploadFileStatus[UploadFileStatus[\"Initial\"] = 1] = \"Initial\";\n /**\n * The file is selected.\n */\n UploadFileStatus[UploadFileStatus[\"Selected\"] = 2] = \"Selected\";\n /**\n * The file is in the process of uploading.\n */\n UploadFileStatus[UploadFileStatus[\"Uploading\"] = 3] = \"Uploading\";\n /**\n * The file is successfully uploaded.\n */\n UploadFileStatus[UploadFileStatus[\"Uploaded\"] = 4] = \"Uploaded\";\n /**\n * The remove process has failed.\n */\n UploadFileStatus[UploadFileStatus[\"RemoveFailed\"] = 5] = \"RemoveFailed\";\n /**\n * The file is in the process of removing.\n */\n UploadFileStatus[UploadFileStatus[\"Removing\"] = 6] = \"Removing\";\n})(UploadFileStatus || (UploadFileStatus = {}));\n","var _a;\n/**\n * @hidden\n */\nexport var cancel = 'upload.cancel';\n/**\n * @hidden\n */\nexport var clearSelectedFiles = 'upload.clearSelectedFiles';\n/**\n * @hidden\n */\nexport var dropFilesHere = 'upload.dropFilesHere';\n/**\n * @hidden\n */\nexport var headerStatusUploaded = 'upload.headerStatusUploaded';\n/**\n * @hidden\n */\nexport var headerStatusUploading = 'upload.headerStatusUploading';\n/**\n * @hidden\n */\nexport var invalidFileExtension = 'upload.invalidFileExtension';\n/**\n * @hidden\n */\nexport var invalidFiles = 'upload.invalidFiles';\n/**\n * @hidden\n */\nexport var invalidMaxFileSize = 'upload.invalidMaxFileSize';\n/**\n * @hidden\n */\nexport var invalidMinFileSize = 'upload.invalidMinFileSize';\n/**\n * @hidden\n */\nexport var remove = 'upload.remove';\n/**\n * @hidden\n */\nexport var retry = 'upload.retry';\n/**\n * @hidden\n */\nexport var select = 'upload.select';\n/**\n * @hidden\n */\nexport var selectTitle = 'upload.selectTitle';\n/**\n * @hidden\n */\nexport var selectNoFilesTitle = 'upload.selectNoFilesTitle';\n/**\n * @hidden\n */\nexport var uploadSelectedFiles = 'upload.uploadSelectedFiles';\n/**\n * @hidden\n */\nexport var total = 'upload.total';\n/**\n * @hidden\n */\nexport var files = 'upload.files';\n/**\n * @hidden\n */\nexport var statusUploaded = 'upload.statusUploaded';\n/**\n * @hidden\n */\nexport var statusUploadFailed = 'upload.statusUploadFailed';\n/**\n * @hidden\n */\nexport var dropZoneHint = 'upload.dropZoneHint';\n/**\n * @hidden\n */\nexport var dropZoneNote = 'upload.defaultDropZoneNote';\n/**\n * @hidden\n */\nexport var restrictionsDropZoneNote = 'upload.dropZoneNote';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[cancel] = 'Cancel',\n _a[clearSelectedFiles] = 'Clear',\n _a[dropFilesHere] = 'Drop files here to upload',\n _a[headerStatusUploaded] = 'Done',\n _a[headerStatusUploading] = 'Uploading...',\n _a[invalidFileExtension] = 'File type not allowed.',\n _a[invalidFiles] = 'Invalid file(s). Please check file upload requirements.',\n _a[invalidMaxFileSize] = 'File size too large.',\n _a[invalidMinFileSize] = 'File size too small.',\n _a[remove] = 'Remove',\n _a[retry] = 'Retry',\n _a[select] = 'Select files...',\n _a[selectTitle] = 'Press to select more files',\n _a[selectNoFilesTitle] = 'No files selected',\n _a[uploadSelectedFiles] = 'Upload',\n _a[total] = 'Total',\n _a[files] = 'files',\n _a[statusUploaded] = 'File(s) successfully uploaded.',\n _a[statusUploadFailed] = 'File(s) failed to upload.',\n _a[dropZoneHint] = 'Drag and drop files here to upload.',\n _a[dropZoneNote] = '',\n _a[restrictionsDropZoneNote] = 'Only {0} files are allowed.',\n _a);\n","import { UploadFileStatus } from '../interfaces/UploadFileStatus';\nimport { guid } from '@progress/kendo-react-common';\nvar ampRegExp = /&/g;\nvar ltRegExp = //g;\nvar htmlEncode = function (value) {\n return ('' + value).replace(ampRegExp, '&')\n .replace(ltRegExp, '<')\n .replace(gtRegExp, '>')\n .replace(quoteRegExp, '"')\n .replace(aposRegExp, ''');\n};\nvar getFileExtension = function (fileName) {\n var rFileExtension = /\\.([^\\.]+)$/;\n var matches = fileName.match(rFileExtension);\n return matches ? matches[0] : '';\n};\nvar getFileInfo = function (rawFile) {\n var fileName = rawFile.name;\n var fileSize = rawFile.size;\n return {\n extension: getFileExtension(fileName),\n name: htmlEncode(fileName),\n getRawFile: function () { return rawFile; },\n size: fileSize,\n status: UploadFileStatus.Selected,\n progress: 0,\n uid: ''\n };\n};\nvar getAllFileInfo = function (rawFiles) {\n var allFileInfo = new Array();\n var i;\n for (i = 0; i < rawFiles.length; i++) {\n allFileInfo.push(getFileInfo(rawFiles[i]));\n }\n return allFileInfo;\n};\nvar fileHasValidationErrors = function (file) {\n if (file.validationErrors && file.validationErrors.length > 0) {\n return true;\n }\n return false;\n};\nvar filesHaveValidationErrors = function (files) {\n for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {\n var file = files_1[_i];\n if (fileHasValidationErrors(file)) {\n return true;\n }\n }\n return false;\n};\nvar getTotalFilesSizeMessage = function (files) {\n var totalSize = 0;\n var i;\n if (typeof files[0].size === 'number') {\n for (i = 0; i < files.length; i++) {\n if (files[i].size) {\n totalSize += (files[i].size || 0);\n }\n }\n }\n else {\n return '';\n }\n totalSize /= 1024;\n if (totalSize < 1024) {\n return totalSize.toFixed(2) + ' KB';\n }\n else {\n return (totalSize / 1024).toFixed(2) + ' MB';\n }\n};\nvar assignGuidToFiles = function (files, batchFiles) {\n var uid = guid();\n return files.map(function (file) {\n file.uid = batchFiles ? uid : guid();\n return file;\n });\n};\nvar getFileStatus = function (currentFiles) {\n var isUploading = false;\n var isUploaded = false;\n var isUploadFailed = false;\n var isUploadValidationFailed = false;\n var checkFilesStatus = function (files) {\n files.forEach(function (file) {\n if (file.status === UploadFileStatus.Uploading) {\n isUploading = true;\n }\n if (file.status === UploadFileStatus.Uploaded) {\n isUploaded = true;\n }\n if (file.status === UploadFileStatus.UploadFailed) {\n isUploadFailed = true;\n }\n if (fileHasValidationErrors(file)) {\n isUploadValidationFailed = true;\n }\n });\n };\n if (Array.isArray(currentFiles)) {\n checkFilesStatus(currentFiles);\n }\n else {\n Object.keys(currentFiles).forEach(function (key) {\n checkFilesStatus(currentFiles[key]);\n });\n }\n return [isUploading, isUploaded, isUploadFailed, isUploadValidationFailed];\n};\nexport default {\n fileHasValidationErrors: fileHasValidationErrors,\n filesHaveValidationErrors: filesHaveValidationErrors,\n getTotalFilesSizeMessage: getTotalFilesSizeMessage,\n getAllFileInfo: getAllFileInfo,\n getFileInfo: getFileInfo,\n getFileExtension: getFileExtension,\n htmlEncode: htmlEncode,\n assignGuidToFiles: assignGuidToFiles,\n getFileStatus: getFileStatus\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { cancelIcon, xIcon, arrowRotateCwSmallIcon } from '@progress/kendo-svg-icons';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, cancel, retry, remove } from './messages';\n/**\n * @hidden\n */\nvar UploadListActionButton = /** @class */ (function (_super) {\n __extends(UploadListActionButton, _super);\n function UploadListActionButton(props) {\n var _this = _super.call(this, props) || this;\n _this.buttonClassNames = function (type) {\n var _a = _this.state, actionFocused = _a.actionFocused, retryFocused = _a.retryFocused;\n return classNames('k-icon-button k-upload-action', _this.props.disabled ? 'k-disabled' : '', (actionFocused && type === 'action') || (retryFocused && type === 'retry') ? 'k-focus' : '');\n };\n _this.onRetryFocus = function () {\n _this.setState({\n retryFocused: true\n });\n };\n _this.onRetryBlur = function () {\n _this.setState({\n retryFocused: false\n });\n };\n _this.onActionFocus = function () {\n _this.setState({\n actionFocused: true\n });\n };\n _this.onActionBlur = function () {\n _this.setState({\n actionFocused: false\n });\n };\n _this.onActionClick = function () {\n var _a = _this.props, status = _a.status, uid = _a.uid, disabled = _a.disabled, onCancel = _a.onCancel, onRemove = _a.onRemove;\n if (disabled || status === UploadFileStatus.Removing) {\n return;\n }\n if (status === UploadFileStatus.Uploading) {\n onCancel.call(undefined, uid);\n }\n else {\n onRemove.call(undefined, uid);\n }\n };\n _this.onRetryClick = function () {\n var _a = _this.props, uid = _a.uid, disabled = _a.disabled, onRetry = _a.onRetry;\n if (disabled) {\n return;\n }\n onRetry.call(undefined, uid);\n };\n _this.state = {\n retryFocused: false,\n actionFocused: false\n };\n return _this;\n }\n UploadListActionButton.prototype.actionButtonTitle = function (status, localizationService) {\n if (status === UploadFileStatus.Uploading) {\n return localizationService.toLanguageString(cancel, messages[cancel]);\n }\n return localizationService.toLanguageString(remove, messages[remove]);\n };\n UploadListActionButton.prototype.retryButtonTitle = function (localizationService) {\n return localizationService.toLanguageString(retry, messages[retry]);\n };\n UploadListActionButton.prototype.render = function () {\n var _a = this.props, status = _a.status, progress = _a.progress;\n var isRetryVisible = status === UploadFileStatus.UploadFailed;\n var isProgressVisible = status === UploadFileStatus.Uploading;\n var isActionHidden = (status === UploadFileStatus.Uploaded || status === UploadFileStatus.Initial) &&\n !this.props.async.removeUrl;\n var localizationService = provideLocalizationService(this);\n var percent = '%';\n return (React.createElement(\"span\", { className: 'k-upload-actions' },\n isProgressVisible ?\n React.createElement(\"span\", { className: 'k-upload-pct' },\n progress,\n percent) :\n undefined,\n isRetryVisible ?\n (React.createElement(Button, { type: \"button\", themeColor: 'base', fillMode: 'flat', tabIndex: -1, className: this.buttonClassNames('retry'), onFocus: this.onRetryFocus, onBlur: this.onRetryBlur, onClick: this.onRetryClick, \"aria-label\": this.retryButtonTitle(localizationService), title: this.retryButtonTitle(localizationService), icon: 'arrow-rotate-cw-small', svgIcon: arrowRotateCwSmallIcon })) :\n undefined,\n !isActionHidden ?\n (React.createElement(Button, { type: \"button\", themeColor: 'base', fillMode: 'flat', tabIndex: -1, className: this.buttonClassNames('action'), onFocus: this.onActionFocus, onBlur: this.onActionBlur, onClick: this.onActionClick, \"aria-label\": this.actionButtonTitle(status, localizationService), title: this.actionButtonTitle(status, localizationService), icon: status === UploadFileStatus.Uploading ? 'cancel' : 'x', svgIcon: status === UploadFileStatus.Uploading ? cancelIcon : xIcon })) :\n undefined));\n };\n return UploadListActionButton;\n}(React.Component));\nexport { UploadListActionButton };\nregisterForLocalization(UploadListActionButton);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames, IconWrap } from '@progress/kendo-react-common';\nimport { ProgressBar } from '@progress/kendo-react-progressbars';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, statusUploaded, statusUploadFailed } from './messages';\nimport utils from './utils/utils';\nimport { UploadListActionButton } from './UploadListActionButton';\nimport { fileAudioIcon, fileConfigIcon, fileDataIcon, fileIcon, fileImageIcon, filePdfIcon, filePresentationIcon, fileProgrammingIcon, fileTxtIcon, fileVideoIcon, fileZipIcon } from '@progress/kendo-svg-icons';\n/**\n * @hidden\n */\nvar UploadListSingleItem = /** @class */ (function (_super) {\n __extends(UploadListSingleItem, _super);\n function UploadListSingleItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n UploadListSingleItem.prototype.getFileExtension = function (file) {\n return file.extension ? file.extension.substring(1) : '';\n };\n /**\n * @hidden\n */\n UploadListSingleItem.prototype.getFileValidationMessage = function (file, isUploadFailed) {\n var localizationService = provideLocalizationService(this);\n var validationMessage = '';\n if (isUploadFailed) {\n validationMessage = localizationService.toLanguageString(statusUploadFailed, messages[statusUploadFailed]);\n }\n else if (file.validationErrors && file.validationErrors.length > 0) {\n var messageKey = \"upload.\".concat(file.validationErrors[0]);\n validationMessage = localizationService.toLanguageString(messageKey, messages[messageKey]);\n }\n return validationMessage;\n };\n /**\n * @hidden\n */\n UploadListSingleItem.prototype.getFileExtensionIcon = function (file) {\n switch (file.extension) {\n case '.png':\n case '.jpg':\n case '.jpeg':\n case '.tiff':\n case '.bmp':\n case '.gif':\n return { name: 'file-image', icon: fileImageIcon };\n case '.mp3':\n case '.mp4':\n case '.wav':\n return { name: 'file-audio', icon: fileAudioIcon };\n case '.mkv':\n case '.webm':\n case '.flv':\n case '.gifv':\n case '.avi':\n case '.wmv':\n return { name: 'file-video', icon: fileVideoIcon };\n case '.txt':\n return { name: 'file-txt', icon: fileTxtIcon };\n case '.pdf':\n return { name: 'file-pdf', icon: filePdfIcon };\n case '.ppt':\n case '.pptx':\n return { name: 'file-presentation', icon: filePresentationIcon };\n case '.csv':\n case '.xls':\n case '.xlsx':\n return { name: 'file-data', icon: fileDataIcon };\n case '.html':\n case '.css':\n case '.js':\n case '.ts':\n return { name: 'file-programming', icon: fileProgrammingIcon };\n case '.exe':\n return { name: 'file-config', icon: fileConfigIcon };\n case '.zip':\n case '.rar':\n return { name: 'file-zip', icon: fileZipIcon };\n default:\n return { name: 'file', icon: fileIcon };\n }\n };\n /**\n * @hidden\n */\n UploadListSingleItem.prototype.renderValidationError = function (file, isUploadFailed) {\n return (React.createElement(\"span\", { className: 'k-file-info', key: '2' },\n React.createElement(\"span\", { className: 'k-file-name', title: file.name }, file.name),\n React.createElement(\"span\", { className: 'k-file-validation-message' }, this.getFileValidationMessage(file, isUploadFailed))));\n };\n /**\n * @hidden\n */\n UploadListSingleItem.prototype.renderFileDetails = function (file) {\n var localizationService = provideLocalizationService(this);\n var successMessage = localizationService.toLanguageString(statusUploaded, messages[statusUploaded]);\n return (React.createElement(\"span\", { className: 'k-file-info', key: '2' },\n React.createElement(\"span\", { className: 'k-file-name', title: file.name }, file.name),\n file.progress !== 100 ?\n React.createElement(\"span\", { className: 'k-file-size' }, utils.getTotalFilesSizeMessage([file])) :\n React.createElement(\"span\", { className: 'k-file-validation-message' }, successMessage)));\n };\n /**\n * @hidden\n */\n UploadListSingleItem.prototype.render = function () {\n var _a = this.props, files = _a.files, others = __rest(_a, [\"files\"]);\n var file = files[0];\n var _b = utils.getFileStatus([file]), isUploaded = _b[1], isUploadFailed = _b[2], isUploadValidationFailed = _b[3];\n var showProgressBar = !isUploadValidationFailed && !isUploaded && !isUploadFailed;\n return (React.createElement(\"div\", { className: classNames('k-file-single') },\n showProgressBar && React.createElement(ProgressBar, { value: file.progress || 0 }),\n React.createElement(\"span\", { className: 'k-file-icon-wrapper', key: '1' },\n React.createElement(IconWrap, __assign({ className: 'k-file-icon' }, this.getFileExtensionIcon(file), { size: 'xxlarge' })),\n React.createElement(\"span\", { className: 'k-file-state' })),\n isUploadValidationFailed || isUploadFailed ?\n this.renderValidationError(file, isUploadFailed) :\n this.renderFileDetails(file),\n React.createElement(UploadListActionButton, __assign({ uid: file.uid, status: file.status, progress: file.progress }, others))));\n };\n return UploadListSingleItem;\n}(React.Component));\nexport { UploadListSingleItem };\nregisterForLocalization(UploadListSingleItem);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames, IconWrap } from '@progress/kendo-react-common';\nimport { ProgressBar } from '@progress/kendo-react-progressbars';\nimport utils from './utils/utils';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, total, files as filesM, statusUploadFailed, statusUploaded } from './messages';\nimport { UploadListActionButton } from './UploadListActionButton';\nimport { copyIcon } from '@progress/kendo-svg-icons';\n/**\n * @hidden\n */\nvar UploadListMultiItem = /** @class */ (function (_super) {\n __extends(UploadListMultiItem, _super);\n function UploadListMultiItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.mapFiles = function () {\n var files = _this.props.files;\n return files.map(function (file) {\n return (React.createElement(\"span\", { key: file.name, className: 'k-file-info' },\n React.createElement(\"span\", { className: 'k-file-name', title: file.name }, file.name),\n utils.fileHasValidationErrors(file) ?\n (React.createElement(\"span\", { className: 'k-file-validation-message' }, _this.getFileValidationMessage(file))) :\n (React.createElement(\"span\", { key: \"\".concat(file.name, \"-size\"), className: 'k-file-size' }, utils.getTotalFilesSizeMessage([file])))));\n });\n };\n /**\n * @hidden\n */\n _this.progress = function () {\n var files = _this.props.files;\n var sum = 0;\n files.forEach(function (file) {\n sum += file.progress || 0;\n });\n return sum / files.length;\n };\n return _this;\n }\n /**\n * @hidden\n */\n UploadListMultiItem.prototype.getFileValidationMessage = function (file) {\n var localizationService = provideLocalizationService(this);\n var validationMessage = '';\n if (file.validationErrors && file.validationErrors.length > 0) {\n var messageKey = \"upload.\".concat(file.validationErrors[0]);\n validationMessage = localizationService.toLanguageString(messageKey, messages[messageKey]);\n }\n return validationMessage;\n };\n UploadListMultiItem.prototype.render = function () {\n var _a = this.props, files = _a.files, others = __rest(_a, [\"files\"]);\n var _b = utils.getFileStatus(files), isUploaded = _b[1], isUploadFailed = _b[2], isUploadValidationFailed = _b[3];\n var localizationService = provideLocalizationService(this);\n var totalMessage = localizationService.toLanguageString(total, messages[total]);\n var filesMessage = localizationService.toLanguageString(filesM, messages[filesM]);\n var uploadFailedMessage = localizationService.toLanguageString(statusUploadFailed, messages[statusUploadFailed]);\n var successMessage = localizationService.toLanguageString(statusUploaded, messages[statusUploaded]);\n var progress = this.progress();\n return (React.createElement(\"div\", { className: classNames('k-file-multiple') },\n !isUploadValidationFailed && !isUploaded && !isUploadFailed &&\n React.createElement(ProgressBar, { value: progress || 0 }),\n React.createElement(\"span\", { className: 'k-file-icon-wrapper' },\n React.createElement(IconWrap, { className: 'k-file-icon', name: 'copy', icon: copyIcon, size: 'xxlarge' })),\n React.createElement(\"span\", { className: \"k-multiple-files-wrapper\" },\n this.mapFiles(),\n !isUploadFailed ?\n (progress !== 100 ?\n (React.createElement(\"span\", { className: 'k-file-summary' }, \"\".concat(totalMessage, \": \").concat(files.length, \" \").concat(filesMessage, \", \").concat(utils.getTotalFilesSizeMessage(files)))) :\n (React.createElement(\"span\", { className: 'k-file-summary k-text-success' }, \"\".concat(files.length, \" \").concat(successMessage)))) :\n (React.createElement(\"span\", { className: 'k-file-validation-message' }, \"\".concat(files.length, \" \").concat(uploadFailedMessage)))),\n React.createElement(UploadListActionButton, __assign({ uid: files[0].uid, status: files[0].status, progress: progress }, others))));\n };\n return UploadListMultiItem;\n}(React.Component));\nexport { UploadListMultiItem };\nregisterForLocalization(UploadListMultiItem);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames, getActiveElement } from '@progress/kendo-react-common';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nimport { UploadListSingleItem } from './UploadListSingleItem';\nimport { UploadListMultiItem } from './UploadListMultiItem';\nimport utils from './utils/utils';\n/**\n * @hidden\n */\nvar UploadListGroup = /** @class */ (function (_super) {\n __extends(UploadListGroup, _super);\n function UploadListGroup() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._element = null;\n _this.onClick = function () {\n _this.props.onClick.call(undefined, _this.props.index);\n };\n return _this;\n }\n UploadListGroup.prototype.componentDidUpdate = function () {\n var _a = this.props, navigationIndex = _a.navigationIndex, index = _a.index;\n var activeElement = getActiveElement(document);\n if (navigationIndex === index &&\n this._element &&\n activeElement !== this._element) {\n this._element.focus();\n }\n };\n UploadListGroup.prototype.render = function () {\n var _this = this;\n var _a = this.props, files = _a.files, async = _a.async, disabled = _a.disabled, navigationIndex = _a.navigationIndex, index = _a.index, listItemUI = _a.listItemUI, onCancel = _a.onCancel, onRemove = _a.onRemove, onRetry = _a.onRetry;\n var firstFile = files[0];\n var isFileSuccess = firstFile.status === UploadFileStatus.Uploaded ||\n firstFile.status === UploadFileStatus.Initial;\n var liClassName = classNames('k-file', utils.filesHaveValidationErrors(files) ? 'k-file-error k-file-invalid' : '', firstFile.status === UploadFileStatus.UploadFailed || firstFile.status === UploadFileStatus.RemoveFailed ?\n 'k-file-error' : '', firstFile.status === UploadFileStatus.Uploading ? 'k-file-progress' : '', isFileSuccess ? 'k-file-success' : '', navigationIndex === index ? 'k-focus' : '');\n var itemOptions = {\n async: async,\n disabled: disabled,\n onCancel: onCancel,\n onRemove: onRemove,\n onRetry: onRetry\n };\n var ItemComponent = listItemUI || (files.length === 1 ? UploadListSingleItem : UploadListMultiItem);\n return (React.createElement(\"li\", { ref: function (ref) { return _this._element = ref; }, className: liClassName, \"data-uid\": firstFile.uid, tabIndex: -1, onClick: this.onClick },\n React.createElement(ItemComponent, __assign({ files: files }, itemOptions))));\n };\n return UploadListGroup;\n}(React.Component));\nexport { UploadListGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { UploadListGroup } from './UploadListGroup';\n/**\n * @hidden\n */\nvar UploadList = /** @class */ (function (_super) {\n __extends(UploadList, _super);\n function UploadList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n UploadList.prototype.mapListGroups = function () {\n var _a = this.props, groupedFiles = _a.groupedFiles, navigationIndex = _a.navigationIndex, others = __rest(_a, [\"groupedFiles\", \"navigationIndex\"]);\n return Object\n .keys(groupedFiles)\n .map(function (key, index) {\n var files = groupedFiles[key];\n return (React.createElement(UploadListGroup, __assign({ key: key, files: files, index: index, navigationIndex: navigationIndex }, others)));\n });\n };\n UploadList.prototype.render = function () {\n var ulClassName = classNames('k-upload-files', 'k-reset');\n return (React.createElement(\"ul\", { className: ulClassName }, this.mapListGroups()));\n };\n return UploadList;\n}(React.Component));\nexport { UploadList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport * as React from 'react';\nimport { selectTitle, selectNoFilesTitle, select, messages } from './messages';\nvar CHROME_REGEX = /(chrome)[ \\/]([\\w.]+)/i;\nvar SAFARI_REGEX = /(webkit)[ \\/]([\\w.]+)/i;\n/**\n * @hidden\n */\nvar UploadInput = /** @class */ (function (_super) {\n __extends(UploadInput, _super);\n function UploadInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._input = null;\n _this.onMouseDown = function (e) {\n if (_this.props.onMouseDown) {\n _this.props.onMouseDown(e);\n }\n };\n _this.onAdd = function () {\n var ua = navigator.userAgent;\n var input = _this._input;\n if (input) {\n if (_this.props.onAdd && input.files) {\n _this.props.onAdd.call(undefined, input.files);\n }\n /*\n Chrome and Internet Explorer do not trigger a `change` event\n when a file with the same name is selected a number of consecutive times.\n As a workaround, clear the input value after handling the file.\n */\n if (!(!ua.match(CHROME_REGEX) && ua.match(SAFARI_REGEX))) {\n input.type = '';\n input.type = 'file';\n }\n }\n };\n return _this;\n }\n Object.defineProperty(UploadInput.prototype, \"actionElement\", {\n get: function () {\n return this._input;\n },\n enumerable: false,\n configurable: true\n });\n UploadInput.prototype.render = function () {\n var _this = this;\n var _a = this.props, multiple = _a.multiple, async = _a.async, disabled = _a.disabled, accept = _a.accept, hasFiles = _a.hasFiles, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy, id = _a.id;\n var localizationService = provideLocalizationService(this);\n var message = hasFiles ? selectTitle : selectNoFilesTitle;\n var selectMessage = localizationService.toLanguageString(message, messages[message]);\n var selectLabel = localizationService.toLanguageString(select, messages[select]);\n return (React.createElement(\"input\", { id: id, ref: function (ref) { return _this._input = ref; }, className: 'k-hidden', autoComplete: 'off', name: async.saveField, accept: accept, type: 'file', multiple: multiple, disabled: disabled, onChange: this.onAdd, onMouseDown: this.onMouseDown, title: selectMessage, \"aria-label\": (ariaLabelledBy !== undefined) ? undefined : selectLabel, \"aria-labelledby\": ariaLabelledBy, \"aria-describedby\": ariaDescribedBy }));\n };\n return UploadInput;\n}(React.Component));\nexport { UploadInput };\nregisterForLocalization(UploadInput);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { messages, select } from './messages';\nimport { UploadInput } from './UploadInput';\n/** @hidden */\nvar defaultSelectMessageUI = function (props) { return React.createElement(\"span\", { \"aria-hidden\": true }, props.message); };\n/**\n * @hidden\n */\nvar UploadAddButton = /** @class */ (function (_super) {\n __extends(UploadAddButton, _super);\n function UploadAddButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._element = null;\n _this._uploadInput = null;\n _this.focus = function () {\n if (_this._element) {\n _this._element.focus();\n }\n };\n _this.onClick = function () {\n if (_this.actionElement) {\n _this.actionElement.click();\n }\n _this.props.onClick.call(undefined, _this.props.addButtonIndex);\n };\n _this.onInputMouseDown = function (e) {\n if (_this._element) {\n e.preventDefault();\n _this._element.focus();\n }\n };\n return _this;\n }\n Object.defineProperty(UploadAddButton.prototype, \"actionElement\", {\n get: function () {\n if (this._uploadInput) {\n return this._uploadInput.actionElement;\n }\n },\n enumerable: false,\n configurable: true\n });\n UploadAddButton.prototype.componentDidUpdate = function (prevProps) {\n var _a = this.props, navigationIndex = _a.navigationIndex, addButtonIndex = _a.addButtonIndex, notFocusedIndex = _a.notFocusedIndex;\n if (navigationIndex !== prevProps.navigationIndex &&\n prevProps.navigationIndex !== notFocusedIndex &&\n navigationIndex === addButtonIndex &&\n this._element) {\n this._element.focus();\n }\n };\n UploadAddButton.prototype.render = function () {\n var _this = this;\n var _a = this.props, navigationIndex = _a.navigationIndex, addButtonIndex = _a.addButtonIndex, tabIndex = _a.tabIndex, id = _a.id, selectMessageUI = _a.selectMessageUI, others = __rest(_a, [\"navigationIndex\", \"addButtonIndex\", \"tabIndex\", \"id\", \"selectMessageUI\"]);\n var localizationService = provideLocalizationService(this);\n var selectMessage = localizationService.toLanguageString(select, messages[select]);\n var SelectMessageUI = selectMessageUI ? selectMessageUI : defaultSelectMessageUI;\n return (React.createElement(\"div\", { className: 'k-upload-button-wrap' },\n React.createElement(Button, { type: \"button\", id: id, className: classNames('k-upload-button', navigationIndex === addButtonIndex ? 'k-focus' : ''), themeColor: 'base', tabIndex: tabIndex, onClick: this.onClick, \"aria-label\": selectMessage },\n React.createElement(SelectMessageUI, { message: selectMessage })),\n React.createElement(UploadInput, __assign({ id: id }, others, { onMouseDown: this.onInputMouseDown, ref: function (ref) { return _this._uploadInput = ref; } }))));\n };\n return UploadAddButton;\n}(React.Component));\nexport { UploadAddButton };\nregisterForLocalization(UploadAddButton);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, clearSelectedFiles, uploadSelectedFiles } from './messages';\n/**\n * @hidden\n */\nvar UploadActionButtons = /** @class */ (function (_super) {\n __extends(UploadActionButtons, _super);\n function UploadActionButtons() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._uploadElement = null;\n _this._clearElement = null;\n _this.onClearClick = function () {\n if (_this.props.disabled) {\n return;\n }\n if (_this.props.onClear) {\n _this.props.onClear.call(undefined);\n }\n };\n _this.onUploadClick = function () {\n if (_this.props.disabled) {\n return;\n }\n _this.props.onClick.call(undefined, _this.props.uploadButtonIndex);\n if (_this.props.onUpload) {\n _this.props.onUpload.call(undefined);\n }\n };\n return _this;\n }\n UploadActionButtons.prototype.componentDidUpdate = function (prevProps) {\n var _a = this.props, navigationIndex = _a.navigationIndex, clearButtonIndex = _a.clearButtonIndex, uploadButtonIndex = _a.uploadButtonIndex;\n if (navigationIndex !== prevProps.navigationIndex) {\n if (navigationIndex === clearButtonIndex && this._clearElement) {\n this._clearElement.focus();\n }\n if (navigationIndex === uploadButtonIndex && this._uploadElement) {\n this._uploadElement.focus();\n }\n }\n };\n UploadActionButtons.prototype.render = function () {\n var _this = this;\n var _a = this.props, disabled = _a.disabled, navigationIndex = _a.navigationIndex, clearButtonIndex = _a.clearButtonIndex, uploadButtonIndex = _a.uploadButtonIndex, actionsLayout = _a.actionsLayout;\n var localizationService = provideLocalizationService(this);\n var wrapperClasses = classNames('k-actions', 'k-hstack', {\n 'k-justify-content-start': actionsLayout === 'start',\n 'k-justify-content-center': actionsLayout === 'center',\n 'k-justify-content-end': actionsLayout === 'end',\n 'k-justify-content-stretch': actionsLayout === 'stretched'\n });\n var clearButtonClasses = classNames('k-button k-button-md k-rounded-md k-button-solid k-button-solid-base', 'k-clear-selected', disabled ? 'k-disabled' : '', navigationIndex === clearButtonIndex ? 'k-focus' : '');\n var uploadButtonClasses = classNames('k-button k-button-md k-rounded-md k-button-solid k-button-solid-primary', 'k-primary', 'k-upload-selected', disabled ? 'k-disabled' : '', navigationIndex === uploadButtonIndex ? 'k-focus' : '');\n return (React.createElement(\"div\", { className: wrapperClasses },\n React.createElement(\"button\", { ref: function (ref) { return _this._clearElement = ref; }, type: 'button', className: clearButtonClasses, tabIndex: -1, onClick: this.onClearClick }, localizationService\n .toLanguageString(clearSelectedFiles, messages[clearSelectedFiles])),\n React.createElement(\"button\", { ref: function (ref) { return _this._uploadElement = ref; }, type: 'button', className: uploadButtonClasses, tabIndex: -1, onClick: this.onUploadClick }, localizationService\n .toLanguageString(uploadSelectedFiles, messages[uploadSelectedFiles]))));\n };\n return UploadActionButtons;\n}(React.Component));\nexport { UploadActionButtons };\nregisterForLocalization(UploadActionButtons);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames, IconWrap } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, headerStatusUploading, headerStatusUploaded } from './messages';\nimport { checkIcon, exclamationCircleIcon, uploadIcon } from '@progress/kendo-svg-icons';\n/**\n * @hidden\n */\nvar UploadStatus = /** @class */ (function (_super) {\n __extends(UploadStatus, _super);\n function UploadStatus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n UploadStatus.prototype.render = function () {\n var _a = this.props, isUploading = _a.isUploading, isUploaded = _a.isUploaded, isUploadFailed = _a.isUploadFailed;\n var className = classNames('k-upload-status');\n var statusName = (!isUploading && !isUploadFailed && isUploaded) ? 'check' :\n (!isUploading && isUploadFailed ? 'exclamation-circle' : (isUploading ? 'upload' : ''));\n var svgIcon = (!isUploading && !isUploadFailed && isUploaded) ? { icon: checkIcon } :\n (!isUploading && isUploadFailed ? { icon: exclamationCircleIcon } : (isUploading ? { icon: uploadIcon } : {})); // (isUploading ? 'loading' : ''));\n var statusText = '';\n var localizationService = provideLocalizationService(this);\n if (isUploading) {\n statusText = localizationService\n .toLanguageString(headerStatusUploading, messages[headerStatusUploading]);\n }\n else if (isUploaded || isUploadFailed) {\n statusText = localizationService\n .toLanguageString(headerStatusUploaded, messages[headerStatusUploaded]);\n }\n return (React.createElement(\"div\", { className: className },\n React.createElement(IconWrap, __assign({ name: statusName }, svgIcon)),\n statusText));\n };\n return UploadStatus;\n}(React.Component));\nexport { UploadStatus };\nregisterForLocalization(UploadStatus);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, dropFilesHere } from './messages';\nimport utils from './utils/utils';\nimport { UploadStatus } from './UploadStatus';\n/**\n * @hidden\n */\nvar TIME_TO_CHECK_DRAG = 100;\n/**\n * @hidden\n */\nvar UploadDropZone = /** @class */ (function (_super) {\n __extends(UploadDropZone, _super);\n function UploadDropZone() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._lastDocumentDragOver = null;\n _this._lastElementDragOver = null;\n _this._documentActive = false;\n _this._elementActive = false;\n _this.onDocumentDragEnter = function () {\n if (!_this.documentActive) {\n _this.documentActive = true;\n var documentInterval = function () {\n if (_this.isDragOver(_this._lastDocumentDragOver)) {\n _this.documentActive = false;\n clearInterval(_this._documentInterval);\n _this._documentInterval = null;\n _this._lastDocumentDragOver = null;\n }\n };\n _this._documentInterval = setInterval(documentInterval, TIME_TO_CHECK_DRAG);\n }\n };\n _this.onDocumentDragOver = function () {\n _this._lastDocumentDragOver = new Date();\n };\n _this.onElementDragEnter = function () {\n if (!_this.elementActive) {\n _this.elementActive = true;\n var elementInterval = function () {\n if (_this.isDragOver(_this._lastElementDragOver)) {\n _this.elementActive = false;\n clearInterval(_this._elementInterval);\n _this._elementInterval = null;\n _this._lastElementDragOver = null;\n }\n };\n _this._elementInterval = setInterval(elementInterval, TIME_TO_CHECK_DRAG);\n }\n };\n _this.onElementDragOver = function (event) {\n event.preventDefault();\n _this._lastElementDragOver = new Date();\n };\n _this.onDrop = function (event) {\n event.preventDefault();\n var droppedFiles = event.dataTransfer.files;\n if (droppedFiles.length > 0 &&\n !_this.props.disabled &&\n _this.props.onAdd &&\n (_this.props.multiple || droppedFiles.length <= 1)) {\n _this.props.onAdd.call(undefined, droppedFiles);\n }\n };\n _this.isDragOver = function (prevDate) {\n return (new Date().getTime() - (prevDate || new Date()).getTime()) > TIME_TO_CHECK_DRAG;\n };\n return _this;\n }\n Object.defineProperty(UploadDropZone.prototype, \"documentActive\", {\n get: function () {\n return this._documentActive;\n },\n set: function (active) {\n var prevActive = this.documentActive;\n this._documentActive = active;\n if (active !== prevActive) {\n this.forceUpdate();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadDropZone.prototype, \"elementActive\", {\n get: function () {\n return this._elementActive;\n },\n set: function (active) {\n var currentActive = this._elementActive;\n this._elementActive = active;\n if (active !== currentActive) {\n this.setState({});\n }\n },\n enumerable: false,\n configurable: true\n });\n UploadDropZone.prototype.componentDidMount = function () {\n document.addEventListener('dragenter', this.onDocumentDragEnter);\n document.addEventListener('dragover', this.onDocumentDragOver);\n };\n UploadDropZone.prototype.componentWillUnmount = function () {\n document.removeEventListener('dragenter', this.onDocumentDragEnter);\n document.removeEventListener('dragover', this.onDocumentDragOver);\n };\n UploadDropZone.prototype.render = function () {\n var _a = this.props, addButtonComponent = _a.addButtonComponent, fileGroup = _a.fileGroup;\n var localizationService = provideLocalizationService(this);\n var dropFilesMessage = localizationService\n .toLanguageString(dropFilesHere, messages[dropFilesHere]);\n var className = classNames('k-dropzone k-upload-dropzone', this.documentActive ? 'k-dropzone-active' : '', this.elementActive ? 'k-dropzone-hovered' : '');\n var _b = utils.getFileStatus(fileGroup), isUploading = _b[0], isUploaded = _b[1], isUploadFailed = _b[2], isUploadValidationFailed = _b[3];\n var dropZoneClassName = classNames('k-dropzone-hint', {\n // Unsure about that, since it hides the \"Drop Files Message\" when we remove all uploaded components.\n // 'k-hidden': this.isDragged && !this.elementActive\n });\n return (React.createElement(\"div\", { className: className, onDrop: this.onDrop, onDragEnter: this.onElementDragEnter, onDragOver: this.onElementDragOver },\n addButtonComponent,\n isUploading || isUploaded || isUploadFailed || isUploadValidationFailed\n ? React.createElement(UploadStatus, { isUploading: isUploading, isUploaded: isUploaded, isUploadFailed: isUploadFailed })\n : React.createElement(\"div\", { className: dropZoneClassName }, dropFilesMessage)));\n };\n return UploadDropZone;\n}(React.Component));\nexport { UploadDropZone };\nregisterForLocalization(UploadDropZone);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { UploadList } from './UploadList';\nimport { UploadAddButton } from './UploadAddButton';\nimport { UploadActionButtons } from './UploadActionButtons';\nimport { UploadDropZone } from './UploadDropZone';\nvar ADD_BUTTON_NAV_INDEX = -1;\n/**\n * @hidden\n */\nvar UploadUI = /** @class */ (function (_super) {\n __extends(UploadUI, _super);\n function UploadUI() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._container = null;\n _this._uploadAddButton = null;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._uploadAddButton) {\n return _this._uploadAddButton.focus();\n }\n };\n /**\n * @hidden\n */\n _this.onAdd = function (files) {\n if (_this.props.onAdd) {\n _this.props.onAdd.call(undefined, files);\n }\n };\n /**\n * @hidden\n */\n _this.onRetry = function (uid) {\n if (_this.props.onRetry) {\n _this.props.onRetry.call(undefined, uid);\n }\n };\n /**\n * @hidden\n */\n _this.onCancel = function (uid) {\n if (_this.props.onCancel) {\n _this.props.onCancel.call(undefined, uid);\n }\n };\n /**\n * @hidden\n */\n _this.onClear = function () {\n if (_this.props.onClear) {\n _this.props.onClear.call(undefined);\n }\n };\n /**\n * @hidden\n */\n _this.onUpload = function () {\n if (_this.props.onUpload) {\n _this.props.onUpload.call(undefined);\n }\n };\n /**\n * @hidden\n */\n _this.onRemove = function (uid) {\n if (_this.props.onRemove) {\n _this.props.onRemove.call(undefined, uid);\n }\n };\n /**\n * @hidden\n */\n _this.onKeyDown = function (event) {\n if (_this.props.onKeyDown) {\n _this.props.onKeyDown.call(undefined, event, _this.isRtl);\n }\n };\n /**\n * @hidden\n */\n _this.onFocus = function (event) {\n if (_this.props.onFocus) {\n _this.props.onFocus.call(undefined, event);\n }\n };\n /**\n * @hidden\n */\n _this.onBlur = function (event) {\n if (_this.props.onBlur) {\n _this.props.onBlur.call(undefined, event);\n }\n };\n /**\n * @hidden\n */\n _this.onClick = function (navIndex) {\n if (_this.props.onClick) {\n _this.props.onClick.call(undefined, navIndex);\n }\n };\n return _this;\n }\n Object.defineProperty(UploadUI.prototype, \"async\", {\n get: function () {\n var _a = this.props, autoUpload = _a.autoUpload, batch = _a.batch, withCredentials = _a.withCredentials, saveField = _a.saveField, saveHeaders = _a.saveHeaders, saveMethod = _a.saveMethod, saveUrl = _a.saveUrl, responseType = _a.responseType, removeField = _a.removeField, removeHeaders = _a.removeHeaders, removeMethod = _a.removeMethod, removeUrl = _a.removeUrl;\n return {\n autoUpload: autoUpload,\n batch: batch,\n withCredentials: withCredentials,\n saveField: saveField,\n saveHeaders: saveHeaders,\n saveMethod: saveMethod,\n saveUrl: saveUrl,\n responseType: responseType,\n removeField: removeField,\n removeHeaders: removeHeaders,\n removeMethod: removeMethod,\n removeUrl: removeUrl\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"groupsCount\", {\n get: function () {\n return Object.keys(this.props.groupedFiles).length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"lastGroupIndex\", {\n get: function () {\n return this.groupsCount - 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"addButtonIndex\", {\n get: function () {\n return ADD_BUTTON_NAV_INDEX;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"clearButtonIndex\", {\n get: function () {\n return this.lastGroupIndex + 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"uploadButtonIndex\", {\n get: function () {\n return this.lastGroupIndex + 2;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"isRtl\", {\n get: function () {\n return this._container && (getComputedStyle(this._container).direction === 'rtl') || false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadUI.prototype, \"actionElement\", {\n /**\n * @hidden\n */\n get: function () {\n if (this._uploadAddButton) {\n return this._uploadAddButton.actionElement;\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n UploadUI.prototype.render = function () {\n var _this = this;\n var _a = this.props, multiple = _a.multiple, disabled = _a.disabled, tabIndex = _a.tabIndex, accept = _a.accept, showFileList = _a.showFileList, groupedFiles = _a.groupedFiles, navigationIndex = _a.navigationIndex, showActionButtons = _a.showActionButtons, actionsLayout = _a.actionsLayout, notFocusedIndex = _a.notFocusedIndex, listItemUI = _a.listItemUI, id = _a.id, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy, selectMessageUI = _a.selectMessageUI;\n var className = classNames('k-upload', this.props.className, disabled ? 'k-disabled' : '');\n var addButtonComponent = (React.createElement(UploadAddButton, { id: id, ariaLabelledBy: ariaLabelledBy, ariaDescribedBy: ariaDescribedBy, ref: function (ref) { return _this._uploadAddButton = ref; }, accept: accept, async: this.async, addButtonIndex: this.addButtonIndex, navigationIndex: navigationIndex, notFocusedIndex: notFocusedIndex, tabIndex: tabIndex, multiple: multiple, disabled: disabled, hasFiles: groupedFiles ? Object.keys(groupedFiles).length > 0 : false, selectMessageUI: selectMessageUI, onAdd: this.onAdd, onClick: this.onClick }));\n return (React.createElement(\"div\", { ref: function (ref) { return _this._container = ref; }, className: className, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur },\n React.createElement(UploadDropZone, { addButtonComponent: addButtonComponent, fileGroup: groupedFiles, disabled: disabled, multiple: multiple, onAdd: this.onAdd }),\n showFileList ?\n React.createElement(UploadList, { groupedFiles: groupedFiles, disabled: disabled, async: this.async, navigationIndex: navigationIndex, listItemUI: listItemUI, onCancel: this.onCancel, onRemove: this.onRemove, onRetry: this.onRetry, onClick: this.onClick }) : undefined,\n showActionButtons ?\n React.createElement(UploadActionButtons, { disabled: disabled, navigationIndex: navigationIndex, clearButtonIndex: this.clearButtonIndex, uploadButtonIndex: this.uploadButtonIndex, actionsLayout: actionsLayout, onUpload: this.onUpload, onClear: this.onClear, onClick: this.onClick }) : undefined));\n };\n UploadUI.defaultProps = {\n disabled: false,\n groupedFiles: {},\n multiple: true,\n actionsLayout: 'end'\n };\n return UploadUI;\n}(React.Component));\nexport { UploadUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Keys, canUseDOM, getActiveElement } from '@progress/kendo-react-common';\nimport { UploadUI } from './UploadUI';\n/**\n * @hidden\n */\nvar NOT_FOCUSED_INDEX = -2;\n/**\n * @hidden\n */\nvar DEFAULT_INDEX = -1;\n/**\n * @hidden\n */\nvar UploadNavigation = /** @class */ (function (_super) {\n __extends(UploadNavigation, _super);\n function UploadNavigation(props) {\n var _this = _super.call(this, props) || this;\n _this._uploadUI = null;\n _this.focus = function () {\n if (_this._uploadUI) {\n _this._uploadUI.focus();\n }\n };\n _this.onKeyDown = function (event, isRtl) {\n var navIndex = _this.navIndex;\n var groupKeys = Object.keys(_this.props.groupedFiles);\n var maxFileIndex = (groupKeys.length - 1);\n var maxNavIndex = _this.props.autoUpload || groupKeys.length === 0 ? maxFileIndex : maxFileIndex + 1;\n var cancelButtonIndex = maxFileIndex + 1;\n var uploadButtonIndex = cancelButtonIndex + 1;\n var prevIndex = navIndex === NOT_FOCUSED_INDEX ? DEFAULT_INDEX : navIndex;\n var nextIndex = navIndex;\n switch (event.keyCode) {\n case Keys.up:\n if (navIndex > -1) {\n nextIndex = prevIndex - 1;\n }\n break;\n case Keys.down:\n if (navIndex < maxNavIndex) {\n nextIndex = prevIndex + 1;\n }\n break;\n case Keys.left:\n if (isRtl) {\n if (navIndex === cancelButtonIndex) {\n nextIndex = prevIndex + 1;\n }\n }\n else {\n if (navIndex === uploadButtonIndex) {\n nextIndex = prevIndex - 1;\n }\n }\n break;\n case Keys.right:\n if (isRtl) {\n if (navIndex === uploadButtonIndex) {\n nextIndex = prevIndex - 1;\n }\n }\n else {\n if (navIndex === cancelButtonIndex) {\n nextIndex = prevIndex + 1;\n }\n }\n break;\n case Keys.enter:\n if (navIndex === DEFAULT_INDEX || navIndex === NOT_FOCUSED_INDEX) {\n var activeElement = getActiveElement(document);\n if (_this.actionElement\n && canUseDOM\n && (activeElement === null || activeElement === void 0 ? void 0 : activeElement.className.indexOf('k-upload-button')) === -1) {\n _this.actionElement.click();\n }\n }\n if (navIndex >= 0 && navIndex <= maxFileIndex) {\n _this.onRetry(groupKeys[navIndex]);\n }\n break;\n case Keys.space:\n if (navIndex === DEFAULT_INDEX || navIndex === NOT_FOCUSED_INDEX) {\n if (_this.actionElement) {\n _this.actionElement.click();\n }\n }\n event.preventDefault();\n break;\n case Keys.tab:\n nextIndex = NOT_FOCUSED_INDEX;\n break;\n case Keys.delete:\n if (navIndex >= 0 && navIndex <= maxFileIndex) {\n nextIndex = prevIndex - 1;\n _this.onRemove(groupKeys[navIndex]);\n }\n break;\n case Keys.esc:\n if (navIndex >= 0 && navIndex <= maxFileIndex) {\n nextIndex = prevIndex - 1;\n _this.onCancel(groupKeys[navIndex]);\n }\n break;\n default:\n }\n _this.navIndex = nextIndex;\n };\n _this.onCancel = function (uid) {\n if (_this.props.onCancel) {\n _this.props.onCancel.call(undefined, uid);\n }\n };\n _this.onClear = function () {\n _this.navIndex = DEFAULT_INDEX;\n if (_this.props.onClear) {\n _this.props.onClear.call(undefined);\n }\n };\n _this.onUpload = function () {\n _this.navIndex = DEFAULT_INDEX;\n if (_this.props.onUpload) {\n _this.props.onUpload.call(undefined);\n }\n };\n _this.onRetry = function (uid) {\n if (_this.props.onRetry) {\n _this.props.onRetry.call(undefined, uid);\n }\n };\n _this.onRemove = function (uid) {\n _this.navIndex = _this.navIndex > DEFAULT_INDEX ? _this.navIndex - 1 : DEFAULT_INDEX;\n if (_this.props.onRemove) {\n _this.props.onRemove.call(undefined, uid);\n }\n };\n _this.onAdd = function (files) {\n _this.navIndex = DEFAULT_INDEX;\n if (_this.props.onAdd) {\n _this.props.onAdd.call(undefined, files);\n }\n };\n _this.onClick = function (navIndex) {\n _this.navIndex = navIndex;\n };\n _this.onFocus = function () {\n if (_this._blurTimeout) {\n clearTimeout(_this._blurTimeout);\n _this._blurTimeout = undefined;\n }\n };\n _this.onBlurTimeout = function () {\n _this.navIndex = NOT_FOCUSED_INDEX;\n _this._blurTimeout = undefined;\n };\n _this.onBlur = function () {\n clearTimeout(_this._blurTimeout);\n _this._blurTimeout = window.setTimeout(_this.onBlurTimeout);\n };\n _this._navIndex = NOT_FOCUSED_INDEX;\n return _this;\n }\n Object.defineProperty(UploadNavigation.prototype, \"navIndex\", {\n get: function () {\n return this._navIndex;\n },\n set: function (navIndex) {\n var prevNavIndex = this.navIndex;\n this._navIndex = navIndex;\n if (navIndex !== prevNavIndex) {\n this.forceUpdate();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(UploadNavigation.prototype, \"actionElement\", {\n get: function () {\n if (this._uploadUI) {\n return this._uploadUI.actionElement;\n }\n },\n enumerable: false,\n configurable: true\n });\n UploadNavigation.prototype.componentDidUpdate = function (prevProps) {\n var prevGroupLength = Object.keys(prevProps.groupedFiles).length;\n var groupLength = Object.keys(this.props.groupedFiles).length;\n if (prevGroupLength > groupLength && this.navIndex > DEFAULT_INDEX) {\n this.navIndex = this.navIndex - (prevGroupLength - groupLength);\n }\n };\n UploadNavigation.prototype.render = function () {\n var _this = this;\n var _a = this.props, onClear = _a.onClear, onRemove = _a.onRemove, onRetry = _a.onRetry, onCancel = _a.onCancel, onUpload = _a.onUpload, onAdd = _a.onAdd, others = __rest(_a, [\"onClear\", \"onRemove\", \"onRetry\", \"onCancel\", \"onUpload\", \"onAdd\"]);\n return (React.createElement(UploadUI, __assign({ ref: function (ref) { return _this._uploadUI = ref; }, className: this.props.className, onKeyDown: this.onKeyDown, navigationIndex: this.navIndex, notFocusedIndex: NOT_FOCUSED_INDEX, onAdd: this.onAdd, onClear: this.onClear, onUpload: this.onUpload, onRemove: this.onRemove, onRetry: this.onRetry, onCancel: this.onCancel, onClick: this.onClick, onFocus: this.onFocus, onBlur: this.onBlur }, others)));\n };\n return UploadNavigation;\n}(React.Component));\nexport { UploadNavigation };\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst isStandardBrowserEnv = (() => {\n let product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n})();\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\n const isStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n isStandardBrowserEnv,\n isStandardBrowserWebWorkerEnv,\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n const cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n// Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })();\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n const responseType = config.responseType;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let contentType;\n\n if (utils.isFormData(requestData)) {\n if (platform.isStandardBrowserEnv || platform.isStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else if(!requestHeaders.getContentType(/^\\s*multipart\\/form-data/)){\n requestHeaders.setContentType('multipart/form-data'); // mobile/desktop app frameworks\n } else if(utils.isString(contentType = requestHeaders.getContentType())){\n // fix semicolon duplication issue for ReactNative FormData implementation\n requestHeaders.setContentType(contentType.replace(/^\\s*(multipart\\/form-data);+/, '$1'))\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (platform.isStandardBrowserEnv) {\n // Add xsrf header\n // regarding CVE-2023-45857 config.withCredentials condition was removed temporarily\n const xsrfValue = isURLSameOrigin(fullPath) && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.6.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { UploadFileStatus } from '../interfaces/UploadFileStatus';\nvar copyState = function (state) {\n return (state || []).map(function (file) {\n return __assign({}, file);\n });\n};\nvar add = function (file, filesState) {\n filesState.push(file);\n};\nvar addMany = function (fileList, filesState) {\n fileList.forEach(function (file) { return add(file, filesState); });\n};\nvar groupFilesByUid = function (files) {\n var fileGroup = {};\n files.forEach(function (file) {\n if (fileGroup[file.uid]) {\n fileGroup[file.uid].push(file);\n }\n else {\n fileGroup[file.uid] = [file];\n }\n });\n return fileGroup;\n};\nvar filesForUpload = function (files) {\n var notUploadedGroups = {};\n groupForEach(files, function (currentFiles, uid) {\n var currentFilesValid = true;\n currentFiles.forEach(function (file) {\n if (file.status !== UploadFileStatus.Selected ||\n (file.validationErrors && file.validationErrors.length > 0)) {\n currentFilesValid = false;\n }\n });\n if (currentFilesValid) {\n notUploadedGroups[uid] = currentFiles;\n }\n });\n return notUploadedGroups;\n};\nvar setFilesStatus = function (filesGroup, status) {\n groupForEach(filesGroup, function (currentFiles) {\n currentFiles.forEach(function (file) {\n file.status = status;\n });\n });\n};\nvar flatFileGroup = function (fileGroup) {\n var transformed = [];\n groupForEach(fileGroup, function (currentFiles) {\n transformed.push.apply(transformed, currentFiles);\n });\n return transformed;\n};\nvar groupForEach = function (fileGroup, callBack) {\n Object.keys(fileGroup).forEach(function (uidKey) {\n callBack(fileGroup[uidKey], uidKey);\n });\n};\nexport default {\n copyState: copyState,\n addMany: addMany,\n add: add,\n groupFilesByUid: groupFilesByUid,\n filesForUpload: filesForUpload,\n setFilesStatus: setFilesStatus,\n flatFileGroup: flatFileGroup,\n groupForEach: groupForEach\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar populateClientFormData = function (data, clientData) {\n Object.keys(clientData).forEach(function (key) {\n data.append(key, clientData[key]);\n });\n};\nvar populateUploadFormData = function (files, saveField, clientData) {\n var data = new FormData();\n populateClientFormData(data, clientData);\n files.forEach(function (file) {\n var rawFile = file.getRawFile ? file.getRawFile() : '';\n if (rawFile) {\n data.append(saveField, rawFile, file.name);\n }\n else {\n data.append(saveField, rawFile);\n }\n });\n return data;\n};\nvar populateRemoveFormData = function (fileNames, removeField, clientData) {\n var data = new FormData();\n populateClientFormData(data, clientData);\n fileNames.forEach(function (fileName) {\n data.append(removeField, fileName);\n });\n return data;\n};\nvar populateRequestOptions = function (headers, async) {\n return {\n headers: headers,\n responseType: async.responseType,\n withCredentials: async.withCredentials\n };\n};\nvar cloneRequestHeaders = function (headers) {\n var cloned = {};\n Object.keys(headers).forEach(function (key) {\n cloned[key] = headers[key];\n });\n return cloned;\n};\nvar convertAxiosResponse = function (event) {\n var data = event.data, config = event.config, others = __rest(event, [\"data\", \"config\"]);\n return __assign({ response: data }, others);\n};\nexport default {\n populateClientFormData: populateClientFormData,\n populateUploadFormData: populateUploadFormData,\n populateRemoveFormData: populateRemoveFormData,\n populateRequestOptions: populateRequestOptions,\n cloneRequestHeaders: cloneRequestHeaders,\n convertAxiosResponse: convertAxiosResponse\n};\n","var INVALIDMAXFILESIZE = 'invalidMaxFileSize';\nvar INVALIDMINFILESIZE = 'invalidMinFileSize';\nvar INVALIDFILEEXTENSION = 'invalidFileExtension';\nvar validateFileExtension = function (file, allowedExtensions) {\n if (allowedExtensions.length > 0) {\n if (allowedExtensions.indexOf((file.extension || '').toLowerCase()) < 0) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDFILEEXTENSION) < 0) {\n file.validationErrors.push(INVALIDFILEEXTENSION);\n }\n }\n }\n};\nvar validateFileSize = function (file, minFileSize, maxFileSize) {\n if (minFileSize !== 0 && (file.size || 0) < minFileSize) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDMINFILESIZE) < 0) {\n file.validationErrors.push(INVALIDMINFILESIZE);\n }\n }\n if (maxFileSize !== 0 && (file.size || 0) > maxFileSize) {\n file.validationErrors = file.validationErrors || [];\n if (file.validationErrors.indexOf(INVALIDMAXFILESIZE) < 0) {\n file.validationErrors.push(INVALIDMAXFILESIZE);\n }\n }\n};\nvar parseAllowedExtensions = function (extensions) {\n var allowedExtensions = extensions.map(function (ext) {\n var parsedExt = (ext.substring(0, 1) === '.') ? ext : ('.' + ext);\n return parsedExt.toLowerCase();\n });\n return allowedExtensions;\n};\nvar validateFiles = function (files, restrictionInfo) {\n var allowedExtensions = parseAllowedExtensions(restrictionInfo.allowedExtensions || []);\n var maxFileSize = restrictionInfo.maxFileSize || 0;\n var minFileSize = restrictionInfo.minFileSize || 0;\n var i;\n for (i = 0; i < files.length; i++) {\n validateFileExtension(files[i], allowedExtensions);\n validateFileSize(files[i], minFileSize, maxFileSize);\n }\n};\nexport default {\n validateFiles: validateFiles\n};\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-upload',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698930399,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { getTabIndex } from '@progress/kendo-react-common';\nimport { UploadFileStatus } from './interfaces/UploadFileStatus';\nimport { UploadNavigation } from './UploadNavigation';\nimport axios from 'axios';\nimport utils from './utils/utils';\nimport stateUtils from './utils/stateUtils';\nimport connectionUtils from './utils/connectionUtils';\nimport validationUtils from './utils/validationUtils';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nvar Upload = /** @class */ (function (_super) {\n __extends(Upload, _super);\n function Upload(props) {\n var _this = _super.call(this, props) || this;\n _this._httpSubscriptions = {};\n _this._uploadNavigation = null;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._uploadNavigation) {\n _this._uploadNavigation.focus();\n }\n };\n /**\n * Upload the selected files. Usable when the upload action is triggered by external code.\n */\n _this.triggerUpload = function () {\n _this.onUpload();\n };\n /**\n * @hidden\n */\n _this.uploadFiles = function (filesForUpload) {\n var async = _this.async;\n stateUtils.setFilesStatus(filesForUpload, UploadFileStatus.Uploading);\n stateUtils.groupForEach(filesForUpload, function (currentFiles, uid) {\n var headers = connectionUtils.cloneRequestHeaders(async.saveHeaders || {});\n var additionalData = {};\n var eventData = {\n target: _this,\n files: currentFiles,\n headers: headers,\n additionalData: additionalData\n };\n if (_this.props.onBeforeUpload) {\n _this.props.onBeforeUpload.call(undefined, eventData);\n }\n var requestOptions = connectionUtils.populateRequestOptions(eventData.headers, _this.async);\n var formData = connectionUtils.populateUploadFormData(currentFiles, async.saveField, eventData.additionalData);\n if (_this.isCustomSave) {\n _this.props.saveUrl(currentFiles, { formData: formData, requestOptions: requestOptions }, _this.onUploadProgress)\n .then(function (event) { return _this.onUploadSuccess(event.uid); })\n .catch(function (event) { return _this.onUploadError(event.uid); });\n }\n else {\n var cancelTokenSource = axios.CancelToken.source();\n _this._httpSubscriptions[uid] = cancelTokenSource;\n axios(__assign(__assign({ method: async.saveMethod, url: async.saveUrl, data: formData, cancelToken: cancelTokenSource.token }, requestOptions), { onUploadProgress: function (event) { return _this.onUploadProgress(uid, event); } }))\n .then(function (event) { return _this.onUploadSuccess(uid, event); })\n .catch(function (event) { return _this.onUploadError(uid, event); });\n }\n });\n };\n /**\n * @hidden\n */\n _this.removeFiles = function (filesForRemove) {\n var async = _this.async;\n stateUtils.groupForEach(filesForRemove, function (currentFiles, uid) {\n var headers = connectionUtils.cloneRequestHeaders(async.removeHeaders || {});\n var additionalData = {};\n var eventData = {\n target: _this,\n files: currentFiles,\n headers: headers,\n additionalData: additionalData\n };\n if (_this.props.onBeforeRemove) {\n _this.props.onBeforeRemove.call(undefined, eventData);\n }\n var fileNames = currentFiles.map(function (file) { return file.name; });\n var requestOptions = connectionUtils.populateRequestOptions(eventData.headers, _this.async);\n var formData = connectionUtils.populateRemoveFormData(fileNames, async.removeField, eventData.additionalData);\n if (_this.isCustomRemove) {\n _this.props.removeUrl(currentFiles, { formData: formData, requestOptions: requestOptions })\n .then(function (event) { return _this.onRemoveSuccess(event.uid); })\n .catch(function (event) { return _this.onRemoveError(event.uid); });\n }\n else {\n axios(__assign({ method: async.removeMethod, url: async.removeUrl, data: formData }, requestOptions))\n .then(function (event) { return _this.onRemoveSuccess(uid, event); })\n .catch(function (event) { return _this.onRemoveError(uid, event); });\n }\n });\n };\n /**\n * @hidden\n */\n _this.onUpload = function () {\n var newState = _this.fileStateCopy;\n var groupedFiles = stateUtils.groupFilesByUid(newState);\n var filesForUpload = stateUtils.filesForUpload(groupedFiles);\n _this.uploadFiles(filesForUpload);\n var onStatusChangeEvent = function () {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: stateUtils.flatFileGroup(filesForUpload)\n };\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onStatusChangeEvent();\n }\n else {\n _this.setState({ files: newState }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onAdd = function (files) {\n // The problem when removing rawFile is that there is no reliable way of preserving it internally.\n // For example, uid + filename - the filename can be changed at any moment.\n var selectedFiles = utils.getAllFileInfo(files);\n var newState;\n selectedFiles = utils.assignGuidToFiles(selectedFiles, _this.async.batch);\n validationUtils.validateFiles(selectedFiles, _this.props.restrictions);\n if (!_this.props.multiple) {\n newState = [];\n }\n else {\n newState = _this.fileStateCopy;\n }\n stateUtils.addMany(selectedFiles, newState);\n if (_this.async.autoUpload) {\n var groupedFiles = stateUtils.groupFilesByUid(newState);\n _this.uploadFiles(stateUtils.filesForUpload(groupedFiles));\n }\n var onAddEvent = function () {\n if (_this.props.onAdd) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: selectedFiles\n };\n _this.props.onAdd.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onAddEvent();\n }\n else {\n _this.setState({ files: newState }, onAddEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onUploadProgress = function (uid, event) {\n var percentComplete = Math.round(100 * event.loaded / (event.total || 0)) || 0;\n var newState = _this.fileStateCopy;\n var filesWithProgress = newState.filter(function (file) { return file.uid === uid; });\n if (!filesWithProgress.length) {\n return;\n }\n filesWithProgress.forEach(function (file) {\n file.progress = percentComplete;\n });\n var onProgressEvent = function () {\n if (_this.props.onProgress) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: filesWithProgress\n };\n _this.props.onProgress.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onProgressEvent();\n }\n else {\n _this.setState({ files: newState }, onProgressEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onUploadSuccess = function (uid, event) {\n var newState = _this.fileStateCopy;\n var successFiles = newState.filter(function (file) { return file.uid === uid; });\n successFiles.forEach(function (file) {\n file.status = UploadFileStatus.Uploaded;\n });\n delete _this._httpSubscriptions[uid];\n var onStatusChangeEvent = function () {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: successFiles,\n response: event ? connectionUtils.convertAxiosResponse(event) : undefined\n };\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onStatusChangeEvent();\n }\n else {\n _this.setState({ files: newState }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onUploadError = function (uid, event) {\n var newState = _this.fileStateCopy;\n var failedFiles = newState.filter(function (file) { return file.uid === uid; });\n failedFiles.forEach(function (file) {\n file.status = UploadFileStatus.UploadFailed;\n });\n delete _this._httpSubscriptions[uid];\n if (!failedFiles.length) {\n return;\n }\n var onStatusChangeEvent = function () {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: failedFiles,\n response: event ? connectionUtils.convertAxiosResponse(event) : undefined\n };\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onStatusChangeEvent();\n }\n else {\n _this.setState({ files: newState }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onRemove = function (uid) {\n var _a;\n var newState = _this.fileStateCopy;\n var filesForRemove = newState.filter(function (file) { return file.uid === uid; });\n var filesToKeep = newState.filter(function (file) { return file.uid !== uid; });\n var remoteRemoveStatuses = [\n UploadFileStatus.Uploaded,\n UploadFileStatus.Initial,\n UploadFileStatus.RemoveFailed\n ];\n if (remoteRemoveStatuses.indexOf(filesForRemove[0].status) > -1) {\n var fileGroup = (_a = {},\n _a[uid] = filesForRemove,\n _a);\n stateUtils.setFilesStatus(fileGroup, UploadFileStatus.Removing);\n _this.removeFiles(fileGroup);\n var onStatusChangeEvent = function () {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: filesForRemove\n };\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onStatusChangeEvent();\n }\n else {\n _this.setState({ files: newState }, onStatusChangeEvent);\n }\n }\n else {\n var onRemoveEvent = function () {\n if (_this.props.onRemove) {\n var eventData = {\n target: _this,\n newState: filesToKeep,\n affectedFiles: filesForRemove\n };\n _this.props.onRemove.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onRemoveEvent();\n }\n else {\n _this.setState({ files: filesToKeep }, onRemoveEvent);\n }\n }\n };\n /**\n * @hidden\n */\n _this.onRemoveSuccess = function (uid, event) {\n var newState = _this.fileStateCopy;\n var filesForRemove = newState.filter(function (file) { return file.uid === uid; });\n var filesToKeep = newState.filter(function (file) { return file.uid !== uid; });\n var onRemoveEvent = function () {\n if (_this.props.onRemove) {\n var eventData = {\n target: _this,\n newState: filesToKeep,\n affectedFiles: filesForRemove,\n response: event ? connectionUtils.convertAxiosResponse(event) : undefined\n };\n _this.props.onRemove.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onRemoveEvent();\n }\n else {\n _this.setState({ files: filesToKeep }, onRemoveEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onRemoveError = function (uid, event) {\n var newState = _this.fileStateCopy;\n var failedFiles = newState.filter(function (file) { return file.uid === uid; });\n failedFiles.forEach(function (file) {\n file.status = UploadFileStatus.RemoveFailed;\n });\n var onStatusChangeEvent = function () {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: failedFiles,\n response: event ? connectionUtils.convertAxiosResponse(event) : undefined\n };\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onStatusChangeEvent();\n }\n else {\n _this.setState({ files: newState }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onRetry = function (uid) {\n var newState = _this.fileStateCopy;\n var filesForRetry = stateUtils.groupFilesByUid(newState.filter(function (file) { return file.uid === uid; }));\n stateUtils.setFilesStatus(filesForRetry, UploadFileStatus.Uploading);\n _this.uploadFiles(filesForRetry);\n var onStatusChangeEvent = function () {\n if (_this.props.onStatusChange) {\n var eventData = {\n target: _this,\n newState: newState,\n affectedFiles: stateUtils.flatFileGroup(filesForRetry)\n };\n _this.props.onStatusChange.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onStatusChangeEvent();\n }\n else {\n _this.setState({ files: newState }, onStatusChangeEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onCancel = function (uid) {\n var newState = _this.fileStateCopy;\n var filesToKeep = newState.filter(function (file) { return file.uid !== uid; });\n var filesForRemove = newState.filter(function (file) { return file.uid === uid; });\n if (_this._httpSubscriptions[uid]) {\n _this._httpSubscriptions[uid].cancel();\n delete _this._httpSubscriptions[uid];\n }\n if (_this.props.onCancel) {\n var eventData = {\n target: _this,\n uid: uid\n };\n _this.props.onCancel.call(undefined, eventData);\n }\n var onRemoveEvent = function () {\n if (_this.props.onRemove) {\n var eventData = {\n target: _this,\n newState: filesToKeep,\n affectedFiles: filesForRemove\n };\n _this.props.onRemove.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onRemoveEvent();\n }\n else {\n _this.setState({ files: filesToKeep }, onRemoveEvent);\n }\n };\n /**\n * @hidden\n */\n _this.onClear = function () {\n if (!_this.files.length) {\n return;\n }\n Object.keys(_this._httpSubscriptions).forEach(function (key) {\n _this._httpSubscriptions[key].cancel();\n });\n _this._httpSubscriptions = {};\n var onRemoveEvent = function () {\n if (_this.props.onRemove) {\n var eventData = {\n target: _this,\n newState: [],\n affectedFiles: _this.fileStateCopy\n };\n _this.props.onRemove.call(undefined, eventData);\n }\n };\n if (_this.isControlled) {\n onRemoveEvent();\n }\n else {\n _this.setState({ files: [] }, onRemoveEvent);\n }\n };\n validatePackage(packageMetadata);\n _this.state = {\n files: props.defaultFiles || []\n };\n return _this;\n }\n Object.defineProperty(Upload.prototype, \"async\", {\n get: function () {\n var _a = this.props, autoUpload = _a.autoUpload, batch = _a.batch, removeField = _a.removeField, removeHeaders = _a.removeHeaders, removeMethod = _a.removeMethod, removeUrl = _a.removeUrl, responseType = _a.responseType, saveField = _a.saveField, saveHeaders = _a.saveHeaders, saveMethod = _a.saveMethod, saveUrl = _a.saveUrl, withCredentials = _a.withCredentials;\n return {\n autoUpload: autoUpload,\n batch: batch,\n removeField: removeField,\n removeHeaders: removeHeaders,\n removeMethod: removeMethod,\n removeUrl: removeUrl,\n responseType: responseType,\n saveField: saveField,\n saveHeaders: saveHeaders,\n saveMethod: saveMethod,\n saveUrl: saveUrl,\n withCredentials: withCredentials\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"files\", {\n get: function () {\n var files = this.isControlled ? this.props.files : this.state.files;\n return files || [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"isControlled\", {\n get: function () {\n return !this.props.defaultFiles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"isCustomSave\", {\n get: function () {\n return this.props.saveUrl && typeof this.props.saveUrl === 'function';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"isCustomRemove\", {\n get: function () {\n return this.props.removeUrl && typeof this.props.removeUrl === 'function';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"fileStateCopy\", {\n get: function () {\n if (this.isControlled) {\n return stateUtils.copyState(this.props.files);\n }\n else {\n return stateUtils.copyState(this.state.files);\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Upload.prototype, \"actionElement\", {\n /**\n * @hidden\n */\n get: function () {\n if (this._uploadNavigation) {\n return this._uploadNavigation.actionElement;\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Upload.prototype.render = function () {\n var _this = this;\n var _a = this.props, showFileList = _a.showFileList, onAdd = _a.onAdd, onRemove = _a.onRemove, onCancel = _a.onCancel, autoUpload = _a.autoUpload, showActionButtons = _a.showActionButtons, actionsLayout = _a.actionsLayout, tabIndex = _a.tabIndex, disabled = _a.disabled, others = __rest(_a, [\"showFileList\", \"onAdd\", \"onRemove\", \"onCancel\", \"autoUpload\", \"showActionButtons\", \"actionsLayout\", \"tabIndex\", \"disabled\"]);\n var groupedFiles = stateUtils.groupFilesByUid(this.files);\n var filesForUpload = stateUtils.filesForUpload(groupedFiles);\n return (React.createElement(UploadNavigation, __assign({ groupedFiles: groupedFiles, className: this.props.className, showFileList: showFileList && !!Object.keys(groupedFiles).length, showActionButtons: showActionButtons && !autoUpload && !!Object.keys(filesForUpload).length, actionsLayout: actionsLayout, autoUpload: autoUpload, disabled: disabled, onAdd: this.onAdd, onRemove: this.onRemove, onClear: this.onClear, onUpload: this.onUpload, onRetry: this.onRetry, onCancel: this.onCancel, tabIndex: getTabIndex(tabIndex, disabled), ref: function (ref) { return _this._uploadNavigation = ref; } }, others)));\n };\n /**\n * @hidden\n */\n Upload.defaultProps = {\n autoUpload: true,\n batch: false,\n removeField: 'fileNames',\n removeHeaders: {},\n removeMethod: 'POST',\n removeUrl: '',\n responseType: 'json',\n saveField: 'files',\n saveHeaders: {},\n saveMethod: 'POST',\n saveUrl: '',\n withCredentials: true,\n restrictions: {\n allowedExtensions: [],\n maxFileSize: 0,\n minFileSize: 0\n },\n multiple: true,\n showFileList: true,\n showActionButtons: true,\n actionsLayout: 'end',\n disabled: false\n };\n /**\n * @hidden\n */\n Upload.propTypes = {\n autoUpload: PropTypes.bool,\n batch: PropTypes.bool,\n withCredentials: PropTypes.bool,\n saveField: PropTypes.string,\n saveHeaders: PropTypes.object,\n saveMethod: PropTypes.string,\n saveUrl: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n responseType: PropTypes.oneOf(['arraybuffer', 'blob', 'json', 'text']),\n removeField: PropTypes.string,\n removeHeaders: PropTypes.object,\n removeMethod: PropTypes.string,\n removeUrl: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n multiple: PropTypes.bool,\n disabled: PropTypes.bool,\n showFileList: PropTypes.bool,\n showActionButtons: PropTypes.bool,\n actionsLayout: PropTypes.oneOf(['start', 'center', 'end', 'stretched']),\n tabIndex: PropTypes.number,\n accept: PropTypes.string,\n listItemUI: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.string,\n PropTypes.shape({ render: PropTypes.func.isRequired })\n ]),\n restrictions: PropTypes.shape({\n allowedExtensions: PropTypes.arrayOf(PropTypes.string),\n maxFileSize: PropTypes.number,\n minFileSize: PropTypes.number\n }),\n files: PropTypes.arrayOf(PropTypes.shape({\n uid: PropTypes.string,\n name: PropTypes.string,\n extension: PropTypes.string,\n size: PropTypes.number,\n validationErrors: PropTypes.arrayOf(PropTypes.string),\n status: PropTypes.oneOf([\n UploadFileStatus.Initial,\n UploadFileStatus.RemoveFailed,\n UploadFileStatus.Removing,\n UploadFileStatus.Selected,\n UploadFileStatus.UploadFailed,\n UploadFileStatus.Uploaded,\n UploadFileStatus.Uploading\n ]),\n progress: PropTypes.number,\n getRawFile: PropTypes.func\n })),\n defaultFiles: PropTypes.arrayOf(PropTypes.shape({\n uid: PropTypes.string,\n name: PropTypes.string,\n extension: PropTypes.string,\n size: PropTypes.number,\n validationErrors: PropTypes.arrayOf(PropTypes.string),\n status: PropTypes.oneOf([\n UploadFileStatus.Initial,\n UploadFileStatus.RemoveFailed,\n UploadFileStatus.Removing,\n UploadFileStatus.Selected,\n UploadFileStatus.UploadFailed,\n UploadFileStatus.Uploaded,\n UploadFileStatus.Uploading\n ]),\n progress: PropTypes.number,\n getRawFile: PropTypes.func\n }))\n };\n return Upload;\n}(React.Component));\nexport { Upload };\n","import * as React from 'react';\r\n\r\nimport { FieldRenderProps, FieldWrapper } from '@progress/kendo-react-form';\r\nimport {\r\n Input, MaskedTextBox, NumericTextBox,\r\n Checkbox, ColorPicker, Switch, RadioGroup,\r\n Slider, SliderLabel, RangeSlider, TextArea, Rating\r\n} from '@progress/kendo-react-inputs';\r\nimport {\r\n DatePicker, TimePicker, DateTimePicker,\r\n DateRangePicker, DateInput\r\n} from '@progress/kendo-react-dateinputs';\r\nimport { Label, Error, Hint, FloatingLabel } from '@progress/kendo-react-labels';\r\nimport { Upload } from '@progress/kendo-react-upload';\r\nimport { DropDownList, AutoComplete, MultiSelect, ComboBox, MultiColumnComboBox } from '@progress/kendo-react-dropdowns';\r\n\r\ninterface columnsInterface {\r\n field: string,\r\n header: any,\r\n width: string\r\n}\r\n\r\nexport const FormInput = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, type, optional, ...others } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\n\r\nexport const FormRadioGroup = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, id, label, valid, disabled, hint, visited, modified, ...others } = fieldRenderProps;\r\n const editorRef = React.useRef(null);\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormNumericTextBox = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, ...others } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormCheckbox = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, id, valid, disabled, hint, optional, label, visited, modified, ...others } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n\r\n return (\r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormSwitch = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, optional, id, valid, disabled, hint, ...others } = fieldRenderProps;\r\n const editorRef = React.useRef(null);\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n return (\r\n \r\n \r\n {label}\r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormMaskedTextBox = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, hint, optional, ...others } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormTextArea = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, hint, disabled, optional, ...others } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormColorPicker = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, wrapperStyle, ...others } = fieldRenderProps;\r\n const editorRef = React.useRef(null);\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n return (\r\n \r\n \r\n {label}\r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormSlider = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, data, min, max, ...others } = fieldRenderProps;\r\n\r\n const editorRef = React.useRef(null);\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n return (\r\n \r\n \r\n {label}\r\n \r\n
\r\n \r\n {\r\n data.map((value:any) => (\r\n \r\n {value.toString()}\r\n \r\n ))\r\n }\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormRangeSlider = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, hint, disabled, data, min, max, ...others } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n {\r\n data.map((value:any) => {\r\n return (\r\n \r\n {value.toString()}\r\n \r\n )\r\n })\r\n }\r\n \r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormRating = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, hint, disabled, optional, ...others } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormUpload = (fieldRenderProps: FieldRenderProps) => {\r\n const { value, id, optional, label, hint, validationMessage, touched, ...others } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n const onChangeHandler = (event: any) => {\r\n fieldRenderProps.onChange({ value: event.newState });\r\n };\r\n const onRemoveHandler = (event: any) => {\r\n fieldRenderProps.onChange({ value: event.newState });\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormDropDownList = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, wrapperStyle, ...others } = fieldRenderProps;\r\n const editorRef = React.useRef(null);\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n return (\r\n \r\n \r\n {label}\r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormAutoComplete = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, wrapperStyle, ...others } = fieldRenderProps;\r\n const editorRef = React.useRef(null);\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n return (\r\n \r\n \r\n {label}\r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormComboBox = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, wrapperStyle, ...others } = fieldRenderProps;\r\n const editorRef = React.useRef(null);\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormMultiColumnComboBox = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, wrapperStyle, ...others } = fieldRenderProps;\r\n const editorRef = React.useRef(null);\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n const columns: Array = [\r\n { field: 'id', header: header, width: '100px' },\r\n { field: 'name', header: 'Name', width: '300px' },\r\n { field: 'position', header: 'Position', width: '300px' }\r\n ];\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormMultiSelect = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, wrapperStyle, ...others } = fieldRenderProps;\r\n const editorRef = React.useRef(null);\r\n const showValidationMessage = touched && validationMessage;\r\n const showHint = !showValidationMessage && hint;\r\n const hintId = showHint ? `${id}_hint` : \"\";\r\n const errorId = showValidationMessage ? `${id}_error` : \"\";\r\n const labelId = label ? `${id}_label` : \"\";\r\n\r\n return (\r\n \r\n \r\n {label}\r\n \r\n
\r\n \r\n {showHint && {hint}}\r\n {showValidationMessage && {validationMessage}}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormDatePicker = (fieldRenderProps: FieldRenderProps) => {\r\n const {\r\n validationMessage, touched, label, id, valid,\r\n disabled, hint, wrapperStyle, hintDirection, ...others\r\n } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormDateTimePicker = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, wrapperStyle, ...others } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormTimePicker = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, wrapperStyle, ...others } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormDateInput = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, wrapperStyle, ...others } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormDateRangePicker = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, wrapperStyle, ...others } = fieldRenderProps;\r\n const editorRef = React.useRef(null);\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n const labelId: string = label ? `${id}_label` : '';\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const FormFloatingNumericTextBox = (fieldRenderProps: FieldRenderProps) => {\r\n const { validationMessage, touched, label, id, valid, disabled, hint, optional, value, ...others } = fieldRenderProps;\r\n\r\n const showValidationMessage: string | false | null = touched && validationMessage;\r\n const showHint: boolean = !showValidationMessage && hint\r\n const hintId: string = showHint ? `${id}_hint` : '';\r\n const errorId: string = showValidationMessage ? `${id}_error` : '';\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n {\r\n showHint &&\r\n {hint}\r\n }\r\n {\r\n showValidationMessage &&\r\n {validationMessage}\r\n }\r\n
\r\n
\r\n );\r\n};","import * as React from \"react\";\r\n\r\nimport {\r\n Grid,\r\n GridColumn,\r\n GridCellProps,\r\n GridSelectionChangeEvent,\r\n GridSortChangeEvent,\r\n getSelectedState,\r\n GridProps\r\n} from \"@progress/kendo-react-grid\";\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\nimport { getter } from \"@progress/kendo-react-common\";\r\nimport {\r\n orderBy,\r\n SortDescriptor,\r\n} from \"@progress/kendo-data-query\";\r\n\r\nimport PersonView from './PersonView'\r\nexport interface InlinePersonsGridProps extends GridProps {\r\n data: any;\r\n role: string;\r\n returnToLabel: string;\r\n}\r\n\r\nconst cellWithCheck = (props: GridCellProps) => {\r\n const active = props.dataItem.active;\r\n\r\n const style = {\r\n color: \"green\",\r\n };\r\n return (\r\n \r\n {active === \"1\" ? : null}\r\n \r\n );\r\n};\r\n\r\nconst DATA_ITEM_KEY = \"uid\";\r\nconst SELECTED_FIELD = \"selected\";\r\nconst idGetter = getter(DATA_ITEM_KEY);\r\n\r\nconst initialSort: Array = [\r\n { field: \"name\", dir: \"asc\" },\r\n];\r\n\r\nconst InlinePersonsGrid = ({\r\n data,\r\n role,\r\n returnToLabel,\r\n ...gridProps\r\n}: InlinePersonsGridProps) => {\r\n\r\n const [selectedUID, setSelectedUID] = React.useState(\"\");\r\n\r\n const [selectedState, setSelectedState] = React.useState<{\r\n [id: string]: boolean | number[];\r\n }>({});\r\n\r\n const [sort, setSort] = React.useState(initialSort);\r\n\r\n const handleSelectionChange = (e: GridSelectionChangeEvent) => {\r\n const newState = getSelectedState({\r\n event: e,\r\n selectedState: selectedState,\r\n dataItemKey: DATA_ITEM_KEY,\r\n })\r\n setSelectedState(newState);\r\n\r\n setSelectedUID(Object.keys(newState)[0]);\r\n };\r\n\r\n return (\r\n \r\n {(selectedUID.length === 0) ?\r\n ( ({\r\n ...item,\r\n [SELECTED_FIELD]: selectedState[idGetter(item)]\r\n })), sort)}\r\n resizable={true}\r\n reorderable={true}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => setSort(e.sort)}\r\n dataItemKey={DATA_ITEM_KEY}\r\n selectedField={SELECTED_FIELD}\r\n selectable={{\r\n enabled: true,\r\n mode: \"single\",\r\n }}\r\n onSelectionChange={handleSelectionChange}\r\n size={\"small\"}\r\n >\r\n \r\n \r\n \r\n \r\n ) :\r\n ( setSelectedUID(\"\")}\r\n contentStyle={{ width: \"1170px\" }}>\r\n setSelectedUID(\"\")}\r\n />\r\n )\r\n }\r\n \r\n );\r\n}\r\nexport default InlinePersonsGrid;\r\n","import * as React from \"react\";\r\n\r\nimport {\r\n Grid,\r\n GridColumn,\r\n GridCellProps,\r\n GridSelectionChangeEvent,\r\n GridSortChangeEvent,\r\n getSelectedState,\r\n GridProps\r\n} from \"@progress/kendo-react-grid\";\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\nimport { getter } from \"@progress/kendo-react-common\";\r\nimport {\r\n orderBy,\r\n SortDescriptor,\r\n} from \"@progress/kendo-data-query\";\r\n\r\nimport Pet from './Pet'\r\nexport interface InlinePetsGridProps extends GridProps {\r\n data: any;\r\n returnToLabel: string;\r\n}\r\n\r\nconst cellWithCheck = (props: GridCellProps) => {\r\n const active = props.dataItem.active;\r\n\r\n const style = {\r\n color: \"green\",\r\n };\r\n return (\r\n \r\n {active === \"1\" ? : null}\r\n \r\n );\r\n};\r\n\r\nconst DATA_ITEM_KEY = \"uid\";\r\nconst SELECTED_FIELD = \"selected\";\r\nconst idGetter = getter(DATA_ITEM_KEY);\r\n\r\nconst initialSort: Array = [\r\n { field: \"name\", dir: \"asc\" },\r\n];\r\n\r\nconst InlinePetsGrid = ({\r\n data,\r\n returnToLabel,\r\n ...gridProps\r\n}: InlinePetsGridProps) => {\r\n\r\n const [selectedUID, setSelectedUID] = React.useState(\"\");\r\n\r\n const [selectedState, setSelectedState] = React.useState<{\r\n [id: string]: boolean | number[];\r\n }>({});\r\n\r\n const [sort, setSort] = React.useState(initialSort);\r\n\r\n const handleSelectionChange = (e: GridSelectionChangeEvent) => {\r\n const newState = getSelectedState({\r\n event: e,\r\n selectedState: selectedState,\r\n dataItemKey: DATA_ITEM_KEY,\r\n })\r\n setSelectedState(newState);\r\n\r\n setSelectedUID(Object.keys(newState)[0]);\r\n };\r\n\r\n return (\r\n \r\n {(selectedUID.length === 0) ?\r\n ( ({\r\n ...item,\r\n [SELECTED_FIELD]: selectedState[idGetter(item)]\r\n })), sort)}\r\n resizable={true}\r\n reorderable={true}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => setSort(e.sort)}\r\n dataItemKey={DATA_ITEM_KEY}\r\n selectedField={SELECTED_FIELD}\r\n selectable={{\r\n enabled: true,\r\n mode: \"single\",\r\n }}\r\n onSelectionChange={handleSelectionChange}\r\n size={\"small\"}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n ) :\r\n ( setSelectedUID(\"\")}\r\n contentStyle={{ width: \"1170px\" }}>\r\n setSelectedUID(\"\")}\r\n hideExams={true }\r\n />\r\n )\r\n }\r\n \r\n );\r\n}\r\nexport default InlinePetsGrid;\r\n","import * as React from \"react\";\r\n\r\nimport { useAppDispatch, useAppSelector } from \"../store/store\";\r\nimport { logout } from \"../store/auth-slice\";\r\nimport { Navigate } from 'react-router-dom';\r\nimport { sunbrightApi } from '../store/sunbright-api';\r\n\r\nconst NavigateToLogin = (props: any) => {\r\n\r\n const dispatch = useAppDispatch();\r\n\r\n const logoutAndReset = () => {\r\n dispatch(\r\n logout({\r\n user: {},\r\n }));\r\n\r\n dispatch(sunbrightApi.util.resetApiState());\r\n\r\n return \"/login\";\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default NavigateToLogin;\r\n","import * as React from \"react\";\r\nimport { Field } from \"@progress/kendo-react-form\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport { DropDownListChangeEvent } from \"@progress/kendo-react-dropdowns\";\r\nimport {\r\n Form,\r\n FormElement,\r\n FormRenderProps,\r\n FormSubmitClickEvent,\r\n} from \"@progress/kendo-react-form\";\r\nimport {\r\n Toolbar,\r\n Button,\r\n} from \"@progress/kendo-react-buttons\";\r\n\r\nimport { FormInput, FormDropDownList, FormCheckbox } from \"./FormComponents\";\r\nimport { requiredValidator, emailValidator, phoneValidator, userNameValidator, passwordValidator } from \"./validators\";\r\n\r\nimport { useGetAgencyNamesQuery } from '../store/sunbright-api';\r\nimport { useLazyGetCwNamesQuery } from '../store/sunbright-api';\r\nimport { useNewPersonMutation } from '../store/sunbright-api';\r\n\r\nimport { useAppSelector } from \"../store/store\";\r\n\r\n\r\nexport interface PersonNewProps {\r\n role: string;\r\n personData?: any;\r\n onReturn: any;\r\n}\r\nconst PersonNew = ({\r\n role,\r\n personData,\r\n onReturn,\r\n}: PersonNewProps) => {\r\n\r\n const auth = useAppSelector((state: any) => state.auth);\r\n const personID = (auth && (auth.user !== undefined) && (auth.user.id !== undefined)) ? auth.user.id : -1;\r\n\r\n const { data: agencynames, error: agencynamesError, isLoading: agencynamesLoading } = useGetAgencyNamesQuery(personID);\r\n const [getCwNames, { data: cwnames, error: cwnamesError, isLoading: cwnamesLoading }] = useLazyGetCwNamesQuery();\r\n\r\n const [newPerson, response] = useNewPersonMutation();\r\n\r\n const PersonNewForm = React.useRef(null);\r\n\r\n React.useEffect(() => {\r\n if (agencynames && personData && personData.agencynamecombo && (personData.agencynamecombo.uid > 0)) {\r\n getCwNames(personData.agencynamecombo.uid);\r\n }\r\n }, [agencynames]);\r\n\r\n const [errorMessage, setErrorMessage] = React.useState(\"\");\r\n\r\n const handleAgencyChange = (e: DropDownListChangeEvent) => {\r\n getCwNames(e.value.uid);\r\n PersonNewForm.current.onChange(\"cwnamecombo\", { value: null });\r\n }\r\n\r\n const submitForm = (event: FormSubmitClickEvent) => {\r\n\r\n const { isValid } = event;\r\n\r\n if (isValid) {\r\n const postExam = PersonNewForm.current.values;\r\n\r\n postExam.role = role;\r\n postExam.uid = personData ? personData.uid : 0;\r\n\r\n newPerson(postExam)\r\n .unwrap()\r\n .then((payload) => { onReturn(true) })\r\n .catch((error) => {\r\n setErrorMessage(\"Username already exists.\")\r\n });\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n (\r\n
\r\n \r\n \r\n Submit\r\n \r\n (onReturn ? onReturn(false) : null)}\r\n >\r\n Cancel\r\n \r\n
\r\n {role}\r\n
\r\n
\r\n
\r\n \r\n
\r\n { setErrorMessage(\"\") }}\r\n >\r\n {((role === \"Case Worker\") || (role === \"Client\")) &&\r\n \r\n \r\n {(role === \"Client\") &&\r\n \r\n }\r\n
\r\n {(role === \"Case Worker\") &&
}\r\n \r\n }\r\n\r\n \r\n {(role === \"Veterinarian\") &&\r\n \r\n }\r\n \r\n \r\n {(role === \"Veterinarian\") &&\r\n \r\n }\r\n {((role === \"Case Worker\") || (role === \"Client\")) &&\r\n \r\n }\r\n \r\n {(role === \"Admin\") &&\r\n
\r\n }\r\n \r\n {((role === \"Case Worker\") || (role === \"Client\")) &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {(role !== \"Client\") && (\r\n \r\n \r\n {(!personData) &&\r\n \r\n }\r\n {(role === \"Veterinarian\") &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n \r\n
\r\n {(personData) &&\r\n
\r\n }\r\n {(role !== \"Intake\") &&\r\n
\r\n }\r\n
\r\n )}\r\n \r\n
\r\n \r\n

{errorMessage + \" \"}

\r\n
\r\n
\r\n )}\r\n />\r\n
\r\n \r\n );\r\n}\r\nexport default PersonNew;","import * as React from \"react\";\r\nimport { Field } from \"@progress/kendo-react-form\";\r\nimport {\r\n Form,\r\n FormElement,\r\n FormRenderProps,\r\n FormSubmitClickEvent,\r\n} from \"@progress/kendo-react-form\";\r\nimport {\r\n Toolbar,\r\n Button,\r\n} from \"@progress/kendo-react-buttons\";\r\n\r\nimport { FormInput } from \"./FormComponents\";\r\nimport { passwordValidator } from \"./validators\";\r\n\r\nimport { useAppSelector } from \"../store/store\";\r\n\r\nimport { useNewPersonMutation } from '../store/sunbright-api';\r\n\r\nexport interface PersonPasswordProps {\r\n role: string;\r\n personData?: any;\r\n onReturn: any;\r\n}\r\nconst PersonPassword = ({\r\n role,\r\n personData,\r\n onReturn,\r\n}: PersonPasswordProps) => {\r\n\r\n const auth = useAppSelector((state: any) => state.auth);\r\n const personID = (auth && (auth.user !== undefined) && (auth.user.id !== undefined)) ? auth.user.id : -1;\r\n\r\n const PersonPasswordForm = React.useRef(null);\r\n\r\n const [newPerson, response] = useNewPersonMutation();\r\n\r\n const [errorMessage, setErrorMessage] = React.useState(\"\");\r\n\r\n const submitForm = (event: FormSubmitClickEvent) => {\r\n\r\n const { isValid } = event;\r\n\r\n if (isValid) {\r\n const postExam = PersonPasswordForm.current.values;\r\n\r\n if (postExam.password != postExam.passwordConfirm) {\r\n setErrorMessage(\"Passwords do not match.\");\r\n }\r\n else {\r\n postExam.uid = personData ? personData.uid : 0;\r\n\r\n newPerson(postExam)\r\n .unwrap()\r\n .then((payload) => { })\r\n .catch((error) => {\r\n console.log(error)\r\n });\r\n onReturn(true);\r\n }\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n (\r\n
\r\n \r\n \r\n Submit\r\n \r\n (onReturn ? onReturn(false) : null)}\r\n >\r\n Cancel\r\n \r\n \r\n
\r\n \r\n
\r\n { setErrorMessage(\"\") }}\r\n >\r\n {(role !== \"Client\") &&\r\n
\r\n \r\n \r\n
\r\n }\r\n \r\n
\r\n \r\n

{errorMessage + \" \"}

\r\n
\r\n
\r\n )}\r\n />\r\n
\r\n \r\n );\r\n}\r\nexport default PersonPassword;","import * as React from \"react\";\r\nimport {\r\n Form,\r\n Field,\r\n FormElement,\r\n FormRenderProps,\r\n FieldWrapper,\r\n} from \"@progress/kendo-react-form\";\r\nimport {\r\n Toolbar,\r\n Button,\r\n ButtonGroup,\r\n} from \"@progress/kendo-react-buttons\";\r\nimport { Dialog } from \"@progress/kendo-react-dialogs\";\r\n\r\nimport { Label } from \"@progress/kendo-react-labels\";\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\n\r\nimport PersonNew from './PersonNew'\r\nimport PersonPassword from './PersonPassword'\r\n\r\nimport { useAppSelector } from \"../store/store\";\r\nimport { useGetPersonQuery } from '../store/sunbright-api';\r\n\r\nexport interface PersonViewProps {\r\n personID: string;\r\n role: string;\r\n viewOnly: boolean;\r\n returnLabel: string;\r\n onReturn?: any;\r\n}\r\n\r\nconst PersonView = ({\r\n personID,\r\n role,\r\n viewOnly,\r\n returnLabel,\r\n onReturn,\r\n}: PersonViewProps) => {\r\n const auth = useAppSelector((state) => state.auth);\r\n const [canEdit, setCanEdit] = React.useState(auth && (auth.user !== undefined) && auth.user.role &&\r\n auth.user.role.includes(\"Admin\") && (role !== \"\") && !viewOnly);\r\n\r\n const [hasPassword, setHasPassword] = React.useState(auth && (auth.user !== undefined) && auth.user.role &&\r\n auth.user.role.includes(\"Admin\") && (role !== \"Client\") && !viewOnly);\r\n\r\n const [isEdit, setIsEdit] = React.useState(false);\r\n const [isPassword, setIsPassword] = React.useState(false);\r\n\r\n const { data, error, isLoading } = useGetPersonQuery(personID);\r\n\r\n const [personData, setPersonData] = React.useState(null);\r\n\r\n React.useEffect(() => {\r\n if (data) {\r\n setPersonData(data);\r\n }\r\n }, [data]);\r\n\r\n const editReturned = (refresh: boolean) => {\r\n setIsEdit(false);\r\n if (refresh) {\r\n setPersonData(null);\r\n }\r\n }\r\n\r\n return (\r\n \r\n
\r\n {error ? (<>Not Authorized) : isLoading ? : personData ? (\r\n
\r\n \r\n \r\n onReturn() }\r\n >\r\n {returnLabel}\r\n \r\n \r\n
\r\n {role}\r\n
\r\n
\r\n {canEdit && (\r\n
\r\n \r\n {canEdit &&\r\n setIsEdit(true)}>\r\n Edit\r\n \r\n }\r\n {hasPassword &&\r\n setIsPassword(true)}\r\n themeColor={\"primary\"}>\r\n Reset Password\r\n \r\n }\r\n \r\n
)}\r\n {isEdit ?\r\n \r\n editReturned(refresh)}\r\n />\r\n \r\n :\r\n (isPassword ?\r\n \r\n setIsPassword(false)}\r\n />\r\n \r\n :\r\n (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n )}\r\n />\r\n )\r\n }\r\n
)\r\n :\r\n null\r\n }\r\n
\r\n
\r\n );\r\n};\r\nexport default PersonView;\r\n","import * as React from \"react\";\r\nimport {\r\n Form,\r\n Field,\r\n FormElement,\r\n FormRenderProps,\r\n FieldWrapper,\r\n} from \"@progress/kendo-react-form\";\r\nimport {\r\n Toolbar,\r\n Button,\r\n ButtonGroup,\r\n} from \"@progress/kendo-react-buttons\";\r\n\r\nimport { Label } from \"@progress/kendo-react-labels\";\r\nimport { Input } from \"@progress/kendo-react-inputs\";\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\n\r\nimport { useGetPetQuery } from '../store/sunbright-api';\r\n\r\nimport NavigateToLogin from \"./NavigateToLogin\";\r\n\r\nimport InlineExamsGrid from './Exam/InlineExamsGrid'\r\n\r\nexport interface PetFormProps {\r\n petID: string;\r\n returnLabel: string;\r\n onReturn?: any;\r\n hideExams: boolean;\r\n}\r\n\r\nconst Pet = ({\r\n petID,\r\n returnLabel,\r\n onReturn,\r\n hideExams,\r\n}: PetFormProps) => {\r\n const { data, error, isLoading } = useGetPetQuery(petID);\r\n\r\n return (\r\n \r\n
\r\n {error ? () : isLoading ? : data ? (\r\n
\r\n \r\n \r\n onReturn() }\r\n >\r\n {returnLabel}\r\n \r\n \r\n \r\n 0)) ? (new Date(data.dob)).toLocaleDateString() : null,\r\n petGender: data.gender,\r\n petWeight: data.weight,\r\n petMicrochipTag: data.microchipTag,\r\n petMicrochip: data.microchipRef,\r\n cwAgency: data.agencyGroup,\r\n ownerName: data.owner.name,\r\n ownerMobile: data.ownerMobile,\r\n ownerLocal: data.owner.localPhone,\r\n ownerEmail: data.owner.email,\r\n ownerAddress: data.owner.address1,\r\n ownerCity: data.owner.city,\r\n ownerProvince: data.owner.province,\r\n ownerPostalCode: data.owner.postalCode,\r\n\r\n }}\r\n render={(formRenderProps: FormRenderProps) => (\r\n
\r\n \r\n \r\n Pet\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n Owner\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {!hideExams &&\r\n (
\r\n Exams\r\n < InlineExamsGrid\r\n data={data.exams}\r\n petTitle={data.petName + \" (\" + data.owner.name + \")\" }\r\n returnToLabel=\"Return to Pet\"\r\n />\r\n
)}\r\n
\r\n )}\r\n />\r\n
) : null}\r\n
\r\n
\r\n );\r\n};\r\nexport default Pet;\r\n","import * as React from \"react\";\r\n\r\nimport {\r\n Grid,\r\n GridColumn,\r\n GridCellProps,\r\n GridSortChangeEvent,\r\n GridFilterChangeEvent,\r\n GridSelectionChangeEvent,\r\n getSelectedState,\r\n} from \"@progress/kendo-react-grid\";\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\nimport { getter } from \"@progress/kendo-react-common\";\r\n\r\nimport {\r\n orderBy,\r\n SortDescriptor,\r\n filterBy,\r\n CompositeFilterDescriptor,\r\n} from \"@progress/kendo-data-query\";\r\n\r\nimport NavigateToLogin from \"./NavigateToLogin\";\r\n\r\nimport Pet from \"./Pet\";\r\n\r\nimport { useGetPetsQuery } from '../store/sunbright-api';\r\n\r\nconst cellWithCheck = (props: GridCellProps) => {\r\n const active = props.dataItem.active;\r\n\r\n const style = {\r\n color: \"green\",\r\n };\r\n return (\r\n \r\n {active === \"1\" ? : null}\r\n \r\n );\r\n};\r\n\r\nconst initialSort: Array = [\r\n { field: \"lastExam\", dir: \"desc\" },\r\n];\r\n\r\nconst initialFilter: CompositeFilterDescriptor = {\r\n logic: \"and\",\r\n filters: [{ field: \"PetName\", operator: \"contains\", value: \"\" }],\r\n};\r\n\r\nconst DATA_ITEM_KEY = \"uid\";\r\nconst SELECTED_FIELD = \"selected\";\r\nconst idGetter = getter(DATA_ITEM_KEY);\r\n\r\nconst PetsGrid = (props: any) => {\r\n const { data, error, isLoading } = useGetPetsQuery(\"test\");\r\n\r\n const [gridHeight, setGridHeight] = React.useState(\"400px\");\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n }, []);\r\n React.useEffect(() => {\r\n setGridHeight((window.innerHeight - 100) + \"px\");\r\n }, [data]);\r\n\r\n const handleResize = () => {\r\n setGridHeight((window.innerHeight - 100) + \"px\");\r\n };\r\n\r\n const [sort, setSort] = React.useState(initialSort);\r\n const [filter, setFilter] = React.useState(initialFilter);\r\n\r\n const [selectedUID, setSelectedUID] = React.useState(\"\");\r\n\r\n const [selectedState, setSelectedState] = React.useState<{\r\n [id: string]: boolean | number[];\r\n }>({});\r\n\r\n const handleSelectionChange = (e: GridSelectionChangeEvent) => {\r\n const newState = getSelectedState({\r\n event: e,\r\n selectedState: selectedState,\r\n dataItemKey: DATA_ITEM_KEY,\r\n })\r\n setSelectedState(newState);\r\n\r\n setSelectedUID(Object.keys(newState)[0]);\r\n };\r\n\r\n return (\r\n \r\n {(selectedUID.length === 0) ?\r\n (
\r\n
Pets
\r\n {error ? () : isLoading ? () : data ? (\r\n ({\r\n ...item,\r\n [SELECTED_FIELD]: selectedState[idGetter(item)]\r\n })), filter), sort)}\r\n sortable={true}\r\n sort={sort}\r\n onSortChange={(e: GridSortChangeEvent) => setSort(e.sort)}\r\n filterable={true}\r\n filter={filter}\r\n onFilterChange={(e: GridFilterChangeEvent) => setFilter(e.filter)}\r\n resizable={true}\r\n reorderable={true}\r\n selectedField={SELECTED_FIELD}\r\n selectable={{\r\n enabled: true,\r\n mode: \"single\",\r\n }}\r\n onSelectionChange={handleSelectionChange}\r\n size={\"small\"}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n
) : \r\n ( setSelectedUID(\"\")}\r\n hideExams={false }\r\n />\r\n )}\r\n
\r\n );\r\n}\r\nexport default PetsGrid;\r\n","import * as React from \"react\";\r\n\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\n\r\nimport {\r\n Grid,\r\n GridColumn,\r\n GridCellProps,\r\n GridDataStateChangeEvent,\r\n GridExpandChangeEvent,\r\n GridSelectionChangeEvent,\r\n getSelectedState,\r\n GridFilterCellProps,\r\n} from \"@progress/kendo-react-grid\";\r\n\r\nimport { Checkbox, CheckboxChangeEvent } from \"@progress/kendo-react-inputs\";\r\n\r\nimport { getter } from \"@progress/kendo-react-common\";\r\n\r\nimport {\r\n process,\r\n State,\r\n DataResult,\r\n} from \"@progress/kendo-data-query\";\r\n\r\nimport NavigateToLogin from \"./NavigateToLogin\";\r\n\r\nimport Exam from \"./Exam/Exam\";\r\n\r\nimport { useGetExamsActiveQuery } from '../store/sunbright-api';\r\nimport { useAppSelector } from \"../store/store\";\r\n\r\nimport { IntlService } from \"@progress/kendo-react-intl\";\r\nconst DATE_FORMAT = \"yyyy-MM-dd\";\r\nconst intl = new IntlService(\"en\");\r\n\r\nconst cellWithColor = (props: GridCellProps) => {\r\n const status = props.dataItem.Status;\r\n const color = (status === \"Closed\" || status === \"Pending\") ? \"#999\" : ((status === \"Submitted\") ? \"#5cb85c\" : \"#5bc0de\"); // gray : green : blue\r\n\r\n const style = {\r\n color: color,\r\n fontWeight: \"900\"\r\n };\r\n const field = props.field || \"\";\r\n return (\r\n \r\n {props.dataItem[field]}\r\n \r\n );\r\n};\r\n\r\ninterface CheckboxFilterCellProps extends GridFilterCellProps {\r\n onCheckboxChange: any;\r\n}\r\n\r\nexport const CheckboxFilterCell = ({\r\n onCheckboxChange,\r\n ...props\r\n}: CheckboxFilterCellProps) => {\r\n\r\n const onCheckboxClick = (event: CheckboxChangeEvent) => {\r\n props.onChange({\r\n value: event.value ? intl.formatDate(new Date(), DATE_FORMAT) : \"\",\r\n operator: event.value ? \"eq\" : \"neq\",\r\n syntheticEvent: event.syntheticEvent\r\n });\r\n onCheckboxChange(event.value);\r\n };\r\n\r\n return (\r\n
\r\n onCheckboxClick(e)}\r\n value={props.value}\r\n />\r\n
\r\n );\r\n};\r\n//const dateOptions: Intl.DateTimeFormatOptions = { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' };\r\n\r\nconst adminInitialDataState: State = {\r\n filter: {\r\n logic: \"and\",\r\n filters: [\r\n { field: \"appStart\", operator: \"isnotnull\" },\r\n { field: \"appEnd\", operator: \"isnotnull\" },\r\n ],\r\n },\r\n sort: [{ field: \"appStart\", dir: \"asc\" }],\r\n group: [{ field: \"appDate\", dir: \"desc\" }]\r\n};\r\nconst otherInitialDataState: State = {\r\n filter: {\r\n logic: \"and\",\r\n filters: [\r\n { field: \"appStart\", operator: \"isnotnull\" },\r\n { field: \"appEnd\", operator: \"isnotnull\" },\r\n { field: \"appDate\", operator: \"eq\", value: intl.formatDate(new Date(), DATE_FORMAT)}\r\n ],\r\n },\r\n sort: [{ field: \"appStart\", dir: \"asc\" }],\r\n group: [{ field: \"appDate\", dir: \"desc\" }]\r\n};\r\n\r\nconst DATA_ITEM_KEY = \"uid\";\r\nconst SELECTED_FIELD = \"selected\";\r\nconst idGetter = getter(DATA_ITEM_KEY);\r\n\r\nconst ScheduleGrid = (props: any) => {\r\n\r\n const auth = useAppSelector((state) => state.auth);\r\n const [allDays, setAllDays] = React.useState(auth && (auth.user !== undefined) && auth.user.role &&\r\n (auth.user.role.includes(\"Admin\") || auth.user.role.includes(\"Case Worker\")));\r\n\r\n const { data: dataActive, error: errorActive, isLoading: isLoadingActive } = useGetExamsActiveQuery(\"test\");\r\n\r\n const [gridHeight, setGridHeight] = React.useState(\"600px\");\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n }, []);\r\n React.useEffect(() => {\r\n setGridHeight((window.innerHeight - 100) + \"px\");\r\n }, [dataActive]);\r\n\r\n const handleResize = () => {\r\n setGridHeight((window.innerHeight - 100) + \"px\");\r\n };\r\n\r\n const [dataState, setDataState] = React.useState(allDays ? adminInitialDataState : otherInitialDataState);\r\n const [dataResult, setDataResult] = React.useState(\r\n process([], dataState)\r\n );\r\n\r\n const [selectedState, setSelectedState] = React.useState<{\r\n [id: string]: boolean | number[];\r\n }>({});\r\n const [selectedUID, setSelectedUID] = React.useState(\"\");\r\n\r\n React.useEffect(() => {\r\n if (dataActive) {\r\n setDataResult(process(dataActive.map((item: any) => ({\r\n ...item,\r\n appDate: item.appStart ? intl.formatDate(item.appStart, DATE_FORMAT) : \"\",\r\n [SELECTED_FIELD]: false\r\n })), dataState));\r\n }\r\n }, [dataActive, dataState]);\r\n\r\n const [todayOnly, setTodayOnly] = React.useState(!allDays);\r\n\r\n const DateFilterCell: any = (props: GridFilterCellProps) => (\r\n \r\n );\r\n\r\n const handleExpandChange = (event: GridExpandChangeEvent) => {\r\n const isExpanded =\r\n event.dataItem.expanded === undefined\r\n ? event.dataItem.aggregates\r\n : event.dataItem.expanded;\r\n event.dataItem.expanded = !isExpanded;\r\n\r\n setDataResult({ ...dataResult, data: [...dataResult.data] });\r\n };\r\n\r\n const handleSelectionChange = (e: GridSelectionChangeEvent) => {\r\n const newState = getSelectedState({\r\n event: e,\r\n selectedState: selectedState,\r\n dataItemKey: DATA_ITEM_KEY,\r\n })\r\n setSelectedState(newState);\r\n\r\n setDataResult(process(dataActive.map((item: any) => ({\r\n ...item,\r\n appDate: item.appStart ? intl.formatDate(item.appStart, DATE_FORMAT) : \"\",\r\n [SELECTED_FIELD]: newState[idGetter(item)]\r\n })), dataState));\r\n\r\n setSelectedUID(Object.keys(newState)[0]);\r\n };\r\n\r\n return (\r\n \r\n {(selectedUID.length === 0) ?\r\n (
\r\n
Appointments
\r\n {errorActive ? () : isLoadingActive ? :\r\n (dataActive && true) ? (\r\n { setDataState(e.dataState); }}\r\n sortable={false}\r\n filterable={true}\r\n resizable={true}\r\n reorderable={true}\r\n expandField=\"expanded\"\r\n onExpandChange={handleExpandChange}\r\n selectedField={SELECTED_FIELD}\r\n selectable={{\r\n enabled: true,\r\n mode: \"single\",\r\n }}\r\n onSelectionChange={handleSelectionChange}\r\n size={\"small\"}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n
) :\r\n (< Exam\r\n examID={selectedUID}\r\n returnLabel=\"Return to Appointments\"\r\n viewOnly={ false }\r\n onReturn={() => setSelectedUID(\"\")}\r\n />)}\r\n
\r\n );\r\n}\r\nexport default ScheduleGrid;\r\n","import * as React from \"react\";\r\nimport {\r\n Toolbar,\r\n Button,\r\n ButtonGroup,\r\n} from \"@progress/kendo-react-buttons\";\r\nimport {\r\n Form,\r\n Field,\r\n FormElement,\r\n FormRenderProps,\r\n FormSubmitClickEvent,\r\n} from \"@progress/kendo-react-form\";\r\nimport { DropDownListChangeEvent } from \"@progress/kendo-react-dropdowns\";\r\n\r\nimport { StackLayout } from \"@progress/kendo-react-layout\";\r\nimport { requiredValidator } from \"./validators\";\r\n\r\nimport { FormDatePicker, FormDropDownList, FormInput } from \"./FormComponents\";\r\n\r\nimport { useNewVaccineMutation } from '../store/sunbright-api';\r\n\r\nconst allSpecies = [\r\n \"Cat\",\r\n \"Dog\",\r\n];\r\n\r\nconst catTypes = [\r\n \"Rabies\",\r\n \"FVRCP\",\r\n \"FeLV\",\r\n \"FVRCP/Rabies\"\r\n];\r\nconst dogTypes = [\r\n \"Rabies\",\r\n \"Da2PP\",\r\n \"Parvovirus\",\r\n \"Lyme\",\r\n \"Lepto\",\r\n \"Respiratory\",\r\n \"DAPP/Lepto\"\r\n];\r\nconst companies = [\r\n \"Boehringer Ingelheim\",\r\n \"Merck\",\r\n \"Zoetis\"\r\n]\r\nconst products: any = {\r\n CatRabiesBoehringer_Ingelheim: [\"Merial Imrab 3\", \"Merial Imrab 3TF\", \"BI Purevax 1 year\", \"BI Purevax 3 year\"],\r\n CatFVRCPBoehringer_Ingelheim: [\"BI Purevax Feline 4\", \"BI Purevax Feline 3\"],\r\n CatFeLVBoehringer_Ingelheim: [\"BI Purevax Recombinant FeLV\"],\r\n CatFVRCP_RabiesBoehringer_Ingelheim: [\"BI Purevax Feline 4 rabies\", \"BI Purevax Feline 3 rabies\"],\r\n\r\n CatRabiesMerck: [],\r\n CatFVRCPMerck: [\"Nobivac Feline 1 HCP\"],\r\n CatFeLVMerck: [],\r\n CatFVRCP_RabiesMerck: [],\r\n\r\n CatRabiesZoetis: [\"Vanguard Rabies 3 Year 10D\"],\r\n CatFVRCPZoetis: [],\r\n CatFeLVZoetis: [],\r\n CatFVRCP_RabiesZoetis: [],\r\n\r\n DogRabiesBoehringer_Ingelheim: [\"Merial Imrab 3\", \"Merial Imrab 3TF\"],\r\n DogDa2PPBoehringer_Ingelheim: [\"Merial Recombitek C3 (no parainfluenza)\", \"Merial Recombitek C4\", \"BI Recombitek Max 5/L4\", \"BI Recombitek Max 5- CvK/4L (coronavirus and L4 lepto)\"],\r\n DogParvovirusBoehringer_Ingelheim: [\"Merial Recombitek Canine parvo\"],\r\n DogLymeBoehringer_Ingelheim: [\"BI Recombitek Lyme\"],\r\n DogLeptoBoehringer_Ingelheim: [\"BI Recombitek Max 5/L4\", \"BI Recombitek Max 5- CvK/4L (coronavirus and L4 lepto)\", \"Merial Recombitek 4 Lepto\"],\r\n DogRespiratoryBoehringer_Ingelheim: [\"BI Recombitek Oral\", \"BI Recombitek Nasal III\"],\r\n DogDAPP_LeptoBoehringer_Ingelheim: [],\r\n\r\n DogRabiesMerck: [],\r\n DogDa2PPMerck: [\"Nobivac DAPP\"],\r\n DogParvovirusMerck: [],\r\n DogLymeMerck: [],\r\n DogLeptoMerck: [],\r\n DogRespiratoryMerck: [],\r\n DogDAPP_LeptoMerck: [],\r\n\r\n DogRabiesZoetis: [\"Vanguard Rabies 3 year 10D\"],\r\n DogDa2PPZoetis: [\"Vanguard Plus 5\"],\r\n DogParvovirusZoetis: [],\r\n DogLymeZoetis: [],\r\n DogLeptoZoetis: [],\r\n DogRespiratoryZoetis: [],\r\n DogDAPP_LeptoZoetis: [\"Vanguard DAPP Plus L4\"]\r\n}\r\n\r\nexport interface VaccineNewProps {\r\n onReturn?: any;\r\n}\r\n\r\nconst VaccineNew = ({\r\n onReturn,\r\n}: VaccineNewProps) => {\r\n\r\n const [newVaccine, response] = useNewVaccineMutation();\r\n\r\n const VaccineForm = React.useRef(null);\r\n\r\n const [formHeight, setFormHeight] = React.useState(\"100px\");\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n setFormHeight((window.innerHeight - 90) + \"px\");\r\n }, []);\r\n\r\n const handleResize = () => {\r\n setFormHeight((window.innerHeight - 90) + \"px\");\r\n };\r\n\r\n const [species, setSpecies] = React.useState(\"\");\r\n const [type, setType] = React.useState(\"\");\r\n const [company, setCompany] = React.useState(\"\");\r\n\r\n const [typeList, setTypeList] = React.useState([]);\r\n const [productList, setProductList] = React.useState([]);\r\n\r\n const handleSpeciesChange = (e: DropDownListChangeEvent) => {\r\n if (e.value === \"Cat\") {\r\n setTypeList(catTypes);\r\n } else if (e.value === \"Dog\") {\r\n setTypeList(dogTypes);\r\n }\r\n setProductList([]);\r\n setSpecies(e.value);\r\n\r\n VaccineForm.current.onChange(\"type\", { value: null });\r\n VaccineForm.current.onChange(\"product\", { value: null });\r\n }\r\n const handleTypeChange = (e: DropDownListChangeEvent) => {\r\n\r\n const key:string = species + (e.value.replace(\"/\", \"_\")) + (company.replace(\" \", \"_\"));\r\n setProductList(products[key]);\r\n setType(e.value);\r\n\r\n VaccineForm.current.onChange(\"product\", { value: null });\r\n }\r\n const handleCompanyChange = (e: DropDownListChangeEvent) => {\r\n\r\n const key: string = species + (type.replace(\"/\", \"_\")) + (e.value.replace(\" \", \"_\"));\r\n setProductList(products[key]);\r\n setCompany(e.value);\r\n\r\n VaccineForm.current.onChange(\"product\", { value: null });\r\n }\r\n\r\n const submitForm = (event: FormSubmitClickEvent) => {\r\n\r\n const { isValid } = event;\r\n\r\n if (isValid) {\r\n const postVaccine = VaccineForm.current.values;\r\n\r\n newVaccine(postVaccine)\r\n .unwrap()\r\n .then((payload) => { })\r\n .catch((error) => {\r\n console.log(error)\r\n });\r\n onReturn(true);\r\n }\r\n }\r\n\r\n return (\r\n \r\n\r\n \r\n (\r\n
\r\n \r\n \r\n Save\r\n \r\n \r\n onReturn(false)}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n Vaccine\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n )}\r\n />\r\n
\r\n \r\n );\r\n};\r\nexport default VaccineNew;\r\n","import * as React from \"react\";\r\n\r\nimport { Loader } from \"@progress/kendo-react-indicators\";\r\nimport { Button } from \"@progress/kendo-react-buttons\";\r\n\r\nimport {\r\n Grid,\r\n GridColumn,\r\n} from \"@progress/kendo-react-grid\";\r\n\r\nimport {\r\n State,\r\n} from \"@progress/kendo-data-query\";\r\n\r\nimport VaccineNew from \"./VaccineNew\";\r\nimport NavigateToLogin from \"./NavigateToLogin\";\r\n\r\nimport { useGetVaccinesQuery } from '../store/sunbright-api';\r\n\r\nconst initialDataState: State = {\r\n filter: {\r\n logic: \"and\",\r\n filters: [\r\n ],\r\n },\r\n sort: [{ field: \"species\", dir: \"asc\" }],\r\n};\r\n\r\nconst VaccinesGrid = (props: any) => {\r\n const { data: vaccines, error: vaccinesError, isLoading: vaccinesLoading } = useGetVaccinesQuery(3);\r\n\r\n const [gridHeight, setGridHeight] = React.useState(\"600px\");\r\n\r\n React.useEffect(() => {\r\n window.addEventListener(\"resize\", handleResize);\r\n }, []);\r\n React.useEffect(() => {\r\n setGridHeight((window.innerHeight - 120) + \"px\");\r\n }, [vaccines]);\r\n\r\n const handleResize = () => {\r\n setGridHeight((window.innerHeight - 100) + \"px\");\r\n };\r\n\r\n const [dataState, setDataState] = React.useState(initialDataState);\r\n const [newVaccine, setNewVaccine] = React.useState(false);\r\n\r\n return (\r\n \r\n {(newVaccine) ?\r\n (
\r\n setNewVaccine(false)}\r\n />\r\n
) :\r\n (
\r\n
Vaccines
\r\n {vaccinesError ? () : vaccinesLoading ? : vaccines ? (\r\n
\r\n setNewVaccine(true)}\r\n style={{ position: \"absolute\", top: \"46px\", right: \"64px\", width: \"128px\", zIndex:\"99\" }}>\r\n New Vaccine\r\n \r\n \r\n \r\n \r\n \r\n
\r\n ) : null}\r\n
)\r\n }\r\n
\r\n );\r\n}\r\nexport default VaccinesGrid;\r\n","import { getter } from '@progress/kendo-react-common';\r\n\r\nconst emailRegex: RegExp = new RegExp(/\\S+@\\S+\\.\\S+/);\r\nconst phoneRegex: RegExp = new RegExp(/^[0-9 ()+-]+$/);\r\nconst ccardRegex: RegExp = new RegExp(/^[0-9-]+$/);\r\nconst cvcRegex: RegExp = new RegExp(/^[0-9]+$/);\r\n\r\nexport const termsValidator = (value: string) => value ? \"\" : \"It's required to agree with Terms and Conditions.\";\r\nexport const emailValidator = (value: string) => !value ?\r\n \"\" :\r\n (emailRegex.test(value) ? \"\" : \"Email is not in a valid format.\");\r\nexport const nameValidator = (value: string) => !value ?\r\n \"Full Name is required\" :\r\n value.length < 7 ? \"Full Name should be at least 7 characters long.\" : \"\";\r\nexport const userNameValidator = (value: string) => !value ?\r\n \"User Name is required\" :\r\n value.length < 5 ? \"User name should be at least 5 characters long.\" : \"\";\r\nexport const phoneValidator = (value: string) => !value ?\r\n \"\" :\r\n phoneRegex.test(value) ? \"\" : \"Not a valid phone number.\";\r\nexport const cardValidator = (value: string) => !value ?\r\n \"Credit card number is required. \" :\r\n ccardRegex.test(value) ? \"\" : \"Not a valid credit card number format.\";\r\nexport const cvcValidator = (value: string) => !value ?\r\n \"CVC code is required,\" :\r\n cvcRegex.test(value) || value.length !== 3 ? \"\" : \"Not a valid CVC code format.\";\r\nexport const guestsValidator = (value:any) => !value ?\r\n \"Number of guests is required\" :\r\n value < 5 ? \"\" : \"Maximum 5 guests\";\r\nexport const nightsValidator = (value: string) => value ? \"\" : \"Number of Nights is required.\";\r\nexport const arrivalDateValidator = (value: string) => value ? \"\" : \"Arrival Date is required.\";\r\nexport const colorValidator = (value: string) => value ? \"\" : \"Color is required.\";\r\nexport const requiredValidator = (value: string) => value ? \"\" : \"This field is required.\";\r\nexport const passwordValidator = (value: string) => value && value.length > 6 ? '' : 'Password must be at least 7 characters.';\r\nexport const addressValidator = (value: string) => value ? \"\" : \"Address is required.\";\r\n\r\nconst userNameGetter = getter('username');\r\nconst emailGetter = getter('email');\r\n\r\nexport const formValidator = (values: any) => {\r\n const userName = userNameGetter(values);\r\n const emailValue = emailGetter(values);\r\n\r\n if (userName && emailValue && emailRegex.test(emailValue)) {\r\n return {};\r\n }\r\n\r\n return {\r\n VALIDATION_SUMMARY: 'Please fill in the following fields.',\r\n ['username']: !userName ? 'User Name is required.' : '',\r\n ['email']: emailValue && emailRegex.test(emailValue) ? '' : 'Email is required and should be in a valid format.'\r\n };\r\n};","import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\nexport interface AuthPayload {\r\n user?: any | null,\r\n}\r\ntype AuthState = AuthPayload;\r\n\r\nfunction getInitialUser (): any {\r\n\r\n let localUser = {};\r\n\r\n let user = localStorage.getItem('user');\r\n if (user != null) {\r\n localUser = JSON.parse(user);\r\n }\r\n\r\n return localUser;\r\n};\r\n\r\nexport const authSlice = createSlice({\r\n name: \"auth\",\r\n initialState: {\r\n user: getInitialUser(),\r\n } as AuthState,\r\n reducers: {\r\n logout(\r\n state,\r\n { payload }: PayloadAction\r\n ) {\r\n state.user = {};\r\n localStorage.removeItem('user');\r\n },\r\n login(\r\n state,\r\n { payload }: PayloadAction\r\n ) {\r\n if (payload.user) {\r\n state.user = payload.user;\r\n localStorage.setItem('user', JSON.stringify(payload.user));\r\n }\r\n },\r\n },\r\n});\r\n\r\nexport const { logout, login } = authSlice.actions;\r\nexport default authSlice.reducer;\r\n","import { configureStore } from '@reduxjs/toolkit'\r\n// Or from '@reduxjs/toolkit/query/react'\r\nimport { setupListeners } from '@reduxjs/toolkit/query'\r\nimport { useDispatch, TypedUseSelectorHook, useSelector } from \"react-redux\";\r\nimport { sunbrightApi } from './sunbright-api'\r\nimport { authSlice } from './auth-slice';\r\n\r\nexport const store = configureStore({\r\n reducer: {\r\n // Add the generated reducer as a specific top-level slice\r\n [sunbrightApi.reducerPath]: sunbrightApi.reducer,\r\n auth: authSlice.reducer,\r\n },\r\n // Adding the api middleware enables caching, invalidation, polling,\r\n // and other useful features of `rtk-query`.\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware({ serializableCheck: false }).concat(sunbrightApi.middleware),\r\n})\r\n\r\n// optional, but required for refetchOnFocus/refetchOnReconnect behaviors\r\n// see `setupListeners` docs - takes an optional callback as the 2nd arg for customization\r\nsetupListeners(store.dispatch);\r\n\r\nexport type AppDispatch = typeof store.dispatch;\r\nexport type RootState = ReturnType;\r\n\r\nexport const useAppDispatch = () => useDispatch();\r\nexport const useAppSelector: TypedUseSelectorHook = useSelector;","import { useEffect, useRef, useMemo } from 'react'\r\nimport type { SerializeQueryArgs } from '@reduxjs/toolkit/query'\r\nimport type { EndpointDefinition } from '@reduxjs/toolkit/query'\r\n\r\nexport function useStableQueryArgs(\r\n queryArgs: T,\r\n serialize: SerializeQueryArgs,\r\n endpointDefinition: EndpointDefinition,\r\n endpointName: string\r\n) {\r\n const incoming = useMemo(\r\n () => ({\r\n queryArgs,\r\n serialized:\r\n typeof queryArgs == 'object'\r\n ? serialize({ queryArgs, endpointDefinition, endpointName })\r\n : queryArgs,\r\n }),\r\n [queryArgs, serialize, endpointDefinition, endpointName]\r\n )\r\n const cache = useRef(incoming)\r\n useEffect(() => {\r\n if (cache.current.serialized !== incoming.serialized) {\r\n cache.current = incoming\r\n }\r\n }, [incoming])\r\n\r\n return cache.current.serialized === incoming.serialized\r\n ? cache.current.queryArgs\r\n : queryArgs\r\n}\r\n","export const UNINITIALIZED_VALUE = Symbol()\r\nexport type UninitializedValue = typeof UNINITIALIZED_VALUE\r\n","import { useEffect, useRef } from 'react'\r\nimport { shallowEqual } from 'react-redux'\r\n\r\nexport function useShallowStableValue(value: T) {\r\n const cache = useRef(value)\r\n useEffect(() => {\r\n if (!shallowEqual(cache.current, value)) {\r\n cache.current = value\r\n }\r\n }, [value])\r\n\r\n return shallowEqual(cache.current, value) ? cache.current : value\r\n}\r\n","import type { QueryCacheKey } from './core/apiState'\r\nimport type { EndpointDefinition } from './endpointDefinitions'\r\nimport { isPlainObject } from '@reduxjs/toolkit'\r\n\r\nconst cache: WeakMap | undefined = WeakMap\r\n ? new WeakMap()\r\n : undefined\r\n\r\nexport const defaultSerializeQueryArgs: SerializeQueryArgs = ({\r\n endpointName,\r\n queryArgs,\r\n}) => {\r\n let serialized = ''\r\n\r\n const cached = cache?.get(queryArgs)\r\n\r\n if (typeof cached === 'string') {\r\n serialized = cached\r\n } else {\r\n const stringified = JSON.stringify(queryArgs, (key, value) =>\r\n isPlainObject(value)\r\n ? Object.keys(value)\r\n .sort()\r\n .reduce((acc, key) => {\r\n acc[key] = (value as any)[key]\r\n return acc\r\n }, {})\r\n : value\r\n )\r\n if (isPlainObject(queryArgs)) {\r\n cache?.set(queryArgs, stringified)\r\n }\r\n serialized = stringified\r\n }\r\n // Sort the object keys before stringifying, to prevent useQuery({ a: 1, b: 2 }) having a different cache key than useQuery({ b: 2, a: 1 })\r\n return `${endpointName}(${serialized})`\r\n}\r\n\r\nexport type SerializeQueryArgs = (_: {\r\n queryArgs: QueryArgs\r\n endpointDefinition: EndpointDefinition\r\n endpointName: string\r\n}) => ReturnType\r\n\r\nexport type InternalSerializeQueryArgs = (_: {\r\n queryArgs: any\r\n endpointDefinition: EndpointDefinition\r\n endpointName: string\r\n}) => QueryCacheKey\r\n","import type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'\r\nimport type { SerializeQueryArgs } from './defaultSerializeQueryArgs'\r\nimport type { QuerySubState, RootState } from './core/apiState'\r\nimport type {\r\n BaseQueryExtraOptions,\r\n BaseQueryFn,\r\n BaseQueryResult,\r\n BaseQueryArg,\r\n BaseQueryApi,\r\n QueryReturnValue,\r\n BaseQueryError,\r\n BaseQueryMeta,\r\n} from './baseQueryTypes'\r\nimport type {\r\n HasRequiredProps,\r\n MaybePromise,\r\n OmitFromUnion,\r\n CastAny,\r\n NonUndefined,\r\n UnwrapPromise,\r\n} from './tsHelpers'\r\nimport type { NEVER } from './fakeBaseQuery'\r\nimport type { Api } from '@reduxjs/toolkit/query'\r\n\r\nconst resultType = /* @__PURE__ */ Symbol()\r\nconst baseQuery = /* @__PURE__ */ Symbol()\r\n\r\ninterface EndpointDefinitionWithQuery<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType\r\n> {\r\n /**\r\n * `query` can be a function that returns either a `string` or an `object` which is passed to your `baseQuery`. If you are using [fetchBaseQuery](./fetchBaseQuery), this can return either a `string` or an `object` of properties in `FetchArgs`. If you use your own custom [`baseQuery`](../../rtk-query/usage/customizing-queries), you can customize this behavior to your liking.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"query example\"\r\n *\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n * type PostsResponse = Post[]\r\n *\r\n * const api = createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * tagTypes: ['Post'],\r\n * endpoints: (build) => ({\r\n * getPosts: build.query({\r\n * // highlight-start\r\n * query: () => 'posts',\r\n * // highlight-end\r\n * }),\r\n * addPost: build.mutation>({\r\n * // highlight-start\r\n * query: (body) => ({\r\n * url: `posts`,\r\n * method: 'POST',\r\n * body,\r\n * }),\r\n * // highlight-end\r\n * invalidatesTags: [{ type: 'Post', id: 'LIST' }],\r\n * }),\r\n * })\r\n * })\r\n * ```\r\n */\r\n query(arg: QueryArg): BaseQueryArg\r\n queryFn?: never\r\n /**\r\n * A function to manipulate the data returned by a query or mutation.\r\n */\r\n transformResponse?(\r\n baseQueryReturnValue: BaseQueryResult,\r\n meta: BaseQueryMeta,\r\n arg: QueryArg\r\n ): ResultType | Promise\r\n /**\r\n * A function to manipulate the data returned by a failed query or mutation.\r\n */\r\n transformErrorResponse?(\r\n baseQueryReturnValue: BaseQueryError,\r\n meta: BaseQueryMeta,\r\n arg: QueryArg\r\n ): unknown\r\n /**\r\n * Defaults to `true`.\r\n *\r\n * Most apps should leave this setting on. The only time it can be a performance issue\r\n * is if an API returns extremely large amounts of data (e.g. 10,000 rows per request) and\r\n * you're unable to paginate it.\r\n *\r\n * For details of how this works, please see the below. When it is set to `false`,\r\n * every request will cause subscribed components to rerender, even when the data has not changed.\r\n *\r\n * @see https://redux-toolkit.js.org/api/other-exports#copywithstructuralsharing\r\n */\r\n structuralSharing?: boolean\r\n}\r\n\r\ninterface EndpointDefinitionWithQueryFn<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType\r\n> {\r\n /**\r\n * Can be used in place of `query` as an inline function that bypasses `baseQuery` completely for the endpoint.\r\n *\r\n * @example\r\n * ```ts\r\n * // codeblock-meta title=\"Basic queryFn example\"\r\n *\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n * type PostsResponse = Post[]\r\n *\r\n * const api = createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * endpoints: (build) => ({\r\n * getPosts: build.query({\r\n * query: () => 'posts',\r\n * }),\r\n * flipCoin: build.query<'heads' | 'tails', void>({\r\n * // highlight-start\r\n * queryFn(arg, queryApi, extraOptions, baseQuery) {\r\n * const randomVal = Math.random()\r\n * if (randomVal < 0.45) {\r\n * return { data: 'heads' }\r\n * }\r\n * if (randomVal < 0.9) {\r\n * return { data: 'tails' }\r\n * }\r\n * return { error: { status: 500, statusText: 'Internal Server Error', data: \"Coin landed on it's edge!\" } }\r\n * }\r\n * // highlight-end\r\n * })\r\n * })\r\n * })\r\n * ```\r\n */\r\n queryFn(\r\n arg: QueryArg,\r\n api: BaseQueryApi,\r\n extraOptions: BaseQueryExtraOptions,\r\n baseQuery: (arg: Parameters[0]) => ReturnType\r\n ): MaybePromise>>\r\n query?: never\r\n transformResponse?: never\r\n transformErrorResponse?: never\r\n /**\r\n * Defaults to `true`.\r\n *\r\n * Most apps should leave this setting on. The only time it can be a performance issue\r\n * is if an API returns extremely large amounts of data (e.g. 10,000 rows per request) and\r\n * you're unable to paginate it.\r\n *\r\n * For details of how this works, please see the below. When it is set to `false`,\r\n * every request will cause subscribed components to rerender, even when the data has not changed.\r\n *\r\n * @see https://redux-toolkit.js.org/api/other-exports#copywithstructuralsharing\r\n */\r\n structuralSharing?: boolean\r\n}\r\n\r\nexport interface BaseEndpointTypes<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType\r\n> {\r\n QueryArg: QueryArg\r\n BaseQuery: BaseQuery\r\n ResultType: ResultType\r\n}\r\n\r\nexport type BaseEndpointDefinition<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ResultType\r\n> = (\r\n | ([CastAny, {}>] extends [NEVER]\r\n ? never\r\n : EndpointDefinitionWithQuery)\r\n | EndpointDefinitionWithQueryFn\r\n) & {\r\n /* phantom type */\r\n [resultType]?: ResultType\r\n /* phantom type */\r\n [baseQuery]?: BaseQuery\r\n} & HasRequiredProps<\r\n BaseQueryExtraOptions,\r\n { extraOptions: BaseQueryExtraOptions },\r\n { extraOptions?: BaseQueryExtraOptions }\r\n >\r\n\r\nexport enum DefinitionType {\r\n query = 'query',\r\n mutation = 'mutation',\r\n}\r\n\r\nexport type GetResultDescriptionFn<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n ErrorType,\r\n MetaType\r\n> = (\r\n result: ResultType | undefined,\r\n error: ErrorType | undefined,\r\n arg: QueryArg,\r\n meta: MetaType\r\n) => ReadonlyArray>\r\n\r\nexport type FullTagDescription = {\r\n type: TagType\r\n id?: number | string\r\n}\r\nexport type TagDescription = TagType | FullTagDescription\r\nexport type ResultDescription<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n ErrorType,\r\n MetaType\r\n> =\r\n | ReadonlyArray>\r\n | GetResultDescriptionFn\r\n\r\n/** @deprecated please use `onQueryStarted` instead */\r\nexport interface QueryApi {\r\n /** @deprecated please use `onQueryStarted` instead */\r\n dispatch: ThunkDispatch\r\n /** @deprecated please use `onQueryStarted` instead */\r\n getState(): RootState\r\n /** @deprecated please use `onQueryStarted` instead */\r\n extra: unknown\r\n /** @deprecated please use `onQueryStarted` instead */\r\n requestId: string\r\n /** @deprecated please use `onQueryStarted` instead */\r\n context: Context\r\n}\r\n\r\nexport interface QueryTypes<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n TagTypes extends string,\r\n ResultType,\r\n ReducerPath extends string = string\r\n> extends BaseEndpointTypes {\r\n /**\r\n * The endpoint definition type. To be used with some internal generic types.\r\n * @example\r\n * ```ts\r\n * const useMyWrappedHook: UseQuery = ...\r\n * ```\r\n */\r\n QueryDefinition: QueryDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n TagTypes,\r\n ResultType,\r\n ReducerPath\r\n >\r\n TagTypes: TagTypes\r\n ReducerPath: ReducerPath\r\n}\r\n\r\nexport interface QueryExtraOptions<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ReducerPath extends string = string\r\n> {\r\n type: DefinitionType.query\r\n /**\r\n * Used by `query` endpoints. Determines which 'tag' is attached to the cached data returned by the query.\r\n * Expects an array of tag type strings, an array of objects of tag types with ids, or a function that returns such an array.\r\n * 1. `['Post']` - equivalent to `2`\r\n * 2. `[{ type: 'Post' }]` - equivalent to `1`\r\n * 3. `[{ type: 'Post', id: 1 }]`\r\n * 4. `(result, error, arg) => ['Post']` - equivalent to `5`\r\n * 5. `(result, error, arg) => [{ type: 'Post' }]` - equivalent to `4`\r\n * 6. `(result, error, arg) => [{ type: 'Post', id: 1 }]`\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"providesTags example\"\r\n *\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n * type PostsResponse = Post[]\r\n *\r\n * const api = createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * tagTypes: ['Posts'],\r\n * endpoints: (build) => ({\r\n * getPosts: build.query({\r\n * query: () => 'posts',\r\n * // highlight-start\r\n * providesTags: (result) =>\r\n * result\r\n * ? [\r\n * ...result.map(({ id }) => ({ type: 'Posts' as const, id })),\r\n * { type: 'Posts', id: 'LIST' },\r\n * ]\r\n * : [{ type: 'Posts', id: 'LIST' }],\r\n * // highlight-end\r\n * })\r\n * })\r\n * })\r\n * ```\r\n */\r\n providesTags?: ResultDescription<\r\n TagTypes,\r\n ResultType,\r\n QueryArg,\r\n BaseQueryError,\r\n BaseQueryMeta\r\n >\r\n /**\r\n * Not to be used. A query should not invalidate tags in the cache.\r\n */\r\n invalidatesTags?: never\r\n\r\n /**\r\n * Can be provided to return a custom cache key value based on the query arguments.\r\n *\r\n * This is primarily intended for cases where a non-serializable value is passed as part of the query arg object and should be excluded from the cache key. It may also be used for cases where an endpoint should only have a single cache entry, such as an infinite loading / pagination implementation.\r\n *\r\n * Unlike the `createApi` version which can _only_ return a string, this per-endpoint option can also return an an object, number, or boolean. If it returns a string, that value will be used as the cache key directly. If it returns an object / number / boolean, that value will be passed to the built-in `defaultSerializeQueryArgs`. This simplifies the use case of stripping out args you don't want included in the cache key.\r\n *\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"serializeQueryArgs : exclude value\"\r\n *\r\n * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n *\r\n * interface MyApiClient {\r\n * fetchPost: (id: string) => Promise\r\n * }\r\n *\r\n * createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * endpoints: (build) => ({\r\n * // Example: an endpoint with an API client passed in as an argument,\r\n * // but only the item ID should be used as the cache key\r\n * getPost: build.query({\r\n * queryFn: async ({ id, client }) => {\r\n * const post = await client.fetchPost(id)\r\n * return { data: post }\r\n * },\r\n * // highlight-start\r\n * serializeQueryArgs: ({ queryArgs, endpointDefinition, endpointName }) => {\r\n * const { id } = queryArgs\r\n * // This can return a string, an object, a number, or a boolean.\r\n * // If it returns an object, number or boolean, that value\r\n * // will be serialized automatically via `defaultSerializeQueryArgs`\r\n * return { id } // omit `client` from the cache key\r\n *\r\n * // Alternately, you can use `defaultSerializeQueryArgs` yourself:\r\n * // return defaultSerializeQueryArgs({\r\n * // endpointName,\r\n * // queryArgs: { id },\r\n * // endpointDefinition\r\n * // })\r\n * // Or create and return a string yourself:\r\n * // return `getPost(${id})`\r\n * },\r\n * // highlight-end\r\n * }),\r\n * }),\r\n *})\r\n * ```\r\n */\r\n serializeQueryArgs?: SerializeQueryArgs<\r\n QueryArg,\r\n string | number | boolean | Record\r\n >\r\n\r\n /**\r\n * Can be provided to merge an incoming response value into the current cache data.\r\n * If supplied, no automatic structural sharing will be applied - it's up to\r\n * you to update the cache appropriately.\r\n *\r\n * Since RTKQ normally replaces cache entries with the new response, you will usually\r\n * need to use this with the `serializeQueryArgs` or `forceRefetch` options to keep\r\n * an existing cache entry so that it can be updated.\r\n *\r\n * Since this is wrapped with Immer, you may either mutate the `currentCacheValue` directly,\r\n * or return a new value, but _not_ both at once.\r\n *\r\n * Will only be called if the existing `currentCacheData` is _not_ `undefined` - on first response,\r\n * the cache entry will just save the response data directly.\r\n *\r\n * Useful if you don't want a new request to completely override the current cache value,\r\n * maybe because you have manually updated it from another source and don't want those\r\n * updates to get lost.\r\n *\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"merge: pagination\"\r\n *\r\n * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n *\r\n * createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * endpoints: (build) => ({\r\n * listItems: build.query({\r\n * query: (pageNumber) => `/listItems?page=${pageNumber}`,\r\n * // Only have one cache entry because the arg always maps to one string\r\n * serializeQueryArgs: ({ endpointName }) => {\r\n * return endpointName\r\n * },\r\n * // Always merge incoming data to the cache entry\r\n * merge: (currentCache, newItems) => {\r\n * currentCache.push(...newItems)\r\n * },\r\n * // Refetch when the page arg changes\r\n * forceRefetch({ currentArg, previousArg }) {\r\n * return currentArg !== previousArg\r\n * },\r\n * }),\r\n * }),\r\n *})\r\n * ```\r\n */\r\n merge?(\r\n currentCacheData: ResultType,\r\n responseData: ResultType,\r\n otherArgs: {\r\n arg: QueryArg\r\n baseQueryMeta: BaseQueryMeta\r\n requestId: string\r\n fulfilledTimeStamp: number\r\n }\r\n ): ResultType | void\r\n\r\n /**\r\n * Check to see if the endpoint should force a refetch in cases where it normally wouldn't.\r\n * This is primarily useful for \"infinite scroll\" / pagination use cases where\r\n * RTKQ is keeping a single cache entry that is added to over time, in combination\r\n * with `serializeQueryArgs` returning a fixed cache key and a `merge` callback\r\n * set to add incoming data to the cache entry each time.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"forceRefresh: pagination\"\r\n *\r\n * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n *\r\n * createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * endpoints: (build) => ({\r\n * listItems: build.query({\r\n * query: (pageNumber) => `/listItems?page=${pageNumber}`,\r\n * // Only have one cache entry because the arg always maps to one string\r\n * serializeQueryArgs: ({ endpointName }) => {\r\n * return endpointName\r\n * },\r\n * // Always merge incoming data to the cache entry\r\n * merge: (currentCache, newItems) => {\r\n * currentCache.push(...newItems)\r\n * },\r\n * // Refetch when the page arg changes\r\n * forceRefetch({ currentArg, previousArg }) {\r\n * return currentArg !== previousArg\r\n * },\r\n * }),\r\n * }),\r\n *})\r\n * ```\r\n */\r\n forceRefetch?(params: {\r\n currentArg: QueryArg | undefined\r\n previousArg: QueryArg | undefined\r\n state: RootState\r\n endpointState?: QuerySubState\r\n }): boolean\r\n\r\n /**\r\n * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\r\n */\r\n Types?: QueryTypes\r\n}\r\n\r\nexport type QueryDefinition<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n TagTypes extends string,\r\n ResultType,\r\n ReducerPath extends string = string\r\n> = BaseEndpointDefinition &\r\n QueryExtraOptions\r\n\r\nexport interface MutationTypes<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n TagTypes extends string,\r\n ResultType,\r\n ReducerPath extends string = string\r\n> extends BaseEndpointTypes {\r\n /**\r\n * The endpoint definition type. To be used with some internal generic types.\r\n * @example\r\n * ```ts\r\n * const useMyWrappedHook: UseMutation = ...\r\n * ```\r\n */\r\n MutationDefinition: MutationDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n TagTypes,\r\n ResultType,\r\n ReducerPath\r\n >\r\n TagTypes: TagTypes\r\n ReducerPath: ReducerPath\r\n}\r\n\r\nexport interface MutationExtraOptions<\r\n TagTypes extends string,\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n ReducerPath extends string = string\r\n> {\r\n type: DefinitionType.mutation\r\n /**\r\n * Used by `mutation` endpoints. Determines which cached data should be either re-fetched or removed from the cache.\r\n * Expects the same shapes as `providesTags`.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"invalidatesTags example\"\r\n * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n * id: number\r\n * name: string\r\n * }\r\n * type PostsResponse = Post[]\r\n *\r\n * const api = createApi({\r\n * baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n * tagTypes: ['Posts'],\r\n * endpoints: (build) => ({\r\n * getPosts: build.query({\r\n * query: () => 'posts',\r\n * providesTags: (result) =>\r\n * result\r\n * ? [\r\n * ...result.map(({ id }) => ({ type: 'Posts' as const, id })),\r\n * { type: 'Posts', id: 'LIST' },\r\n * ]\r\n * : [{ type: 'Posts', id: 'LIST' }],\r\n * }),\r\n * addPost: build.mutation>({\r\n * query(body) {\r\n * return {\r\n * url: `posts`,\r\n * method: 'POST',\r\n * body,\r\n * }\r\n * },\r\n * // highlight-start\r\n * invalidatesTags: [{ type: 'Posts', id: 'LIST' }],\r\n * // highlight-end\r\n * }),\r\n * })\r\n * })\r\n * ```\r\n */\r\n invalidatesTags?: ResultDescription<\r\n TagTypes,\r\n ResultType,\r\n QueryArg,\r\n BaseQueryError,\r\n BaseQueryMeta\r\n >\r\n /**\r\n * Not to be used. A mutation should not provide tags to the cache.\r\n */\r\n providesTags?: never\r\n\r\n /**\r\n * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\r\n */\r\n Types?: MutationTypes\r\n}\r\n\r\nexport type MutationDefinition<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n TagTypes extends string,\r\n ResultType,\r\n ReducerPath extends string = string\r\n> = BaseEndpointDefinition &\r\n MutationExtraOptions\r\n\r\nexport type EndpointDefinition<\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n TagTypes extends string,\r\n ResultType,\r\n ReducerPath extends string = string\r\n> =\r\n | QueryDefinition\r\n | MutationDefinition\r\n\r\nexport type EndpointDefinitions = Record<\r\n string,\r\n EndpointDefinition\r\n>\r\n\r\nexport function isQueryDefinition(\r\n e: EndpointDefinition\r\n): e is QueryDefinition {\r\n return e.type === DefinitionType.query\r\n}\r\n\r\nexport function isMutationDefinition(\r\n e: EndpointDefinition\r\n): e is MutationDefinition {\r\n return e.type === DefinitionType.mutation\r\n}\r\n\r\nexport type EndpointBuilder<\r\n BaseQuery extends BaseQueryFn,\r\n TagTypes extends string,\r\n ReducerPath extends string\r\n> = {\r\n /**\r\n * An endpoint definition that retrieves data, and may provide tags to the cache.\r\n *\r\n * @example\r\n * ```js\r\n * // codeblock-meta title=\"Example of all query endpoint options\"\r\n * const api = createApi({\r\n * baseQuery,\r\n * endpoints: (build) => ({\r\n * getPost: build.query({\r\n * query: (id) => ({ url: `post/${id}` }),\r\n * // Pick out data and prevent nested properties in a hook or selector\r\n * transformResponse: (response) => response.data,\r\n * // Pick out error and prevent nested properties in a hook or selector\r\n * transformErrorResponse: (response) => response.error,\r\n * // `result` is the server response\r\n * providesTags: (result, error, id) => [{ type: 'Post', id }],\r\n * // trigger side effects or optimistic updates\r\n * onQueryStarted(id, { dispatch, getState, extra, requestId, queryFulfilled, getCacheEntry, updateCachedData }) {},\r\n * // handle subscriptions etc\r\n * onCacheEntryAdded(id, { dispatch, getState, extra, requestId, cacheEntryRemoved, cacheDataLoaded, getCacheEntry, updateCachedData }) {},\r\n * }),\r\n * }),\r\n *});\r\n *```\r\n */\r\n query(\r\n definition: OmitFromUnion<\r\n QueryDefinition,\r\n 'type'\r\n >\r\n ): QueryDefinition\r\n /**\r\n * An endpoint definition that alters data on the server or will possibly invalidate the cache.\r\n *\r\n * @example\r\n * ```js\r\n * // codeblock-meta title=\"Example of all mutation endpoint options\"\r\n * const api = createApi({\r\n * baseQuery,\r\n * endpoints: (build) => ({\r\n * updatePost: build.mutation({\r\n * query: ({ id, ...patch }) => ({ url: `post/${id}`, method: 'PATCH', body: patch }),\r\n * // Pick out data and prevent nested properties in a hook or selector\r\n * transformResponse: (response) => response.data,\r\n * // Pick out error and prevent nested properties in a hook or selector\r\n * transformErrorResponse: (response) => response.error,\r\n * // `result` is the server response\r\n * invalidatesTags: (result, error, id) => [{ type: 'Post', id }],\r\n * // trigger side effects or optimistic updates\r\n * onQueryStarted(id, { dispatch, getState, extra, requestId, queryFulfilled, getCacheEntry }) {},\r\n * // handle subscriptions etc\r\n * onCacheEntryAdded(id, { dispatch, getState, extra, requestId, cacheEntryRemoved, cacheDataLoaded, getCacheEntry }) {},\r\n * }),\r\n * }),\r\n * });\r\n * ```\r\n */\r\n mutation(\r\n definition: OmitFromUnion<\r\n MutationDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n TagTypes,\r\n ResultType,\r\n ReducerPath\r\n >,\r\n 'type'\r\n >\r\n ): MutationDefinition\r\n}\r\n\r\nexport type AssertTagTypes = >(t: T) => T\r\n\r\nexport function calculateProvidedBy(\r\n description:\r\n | ResultDescription\r\n | undefined,\r\n result: ResultType | undefined,\r\n error: ErrorType | undefined,\r\n queryArg: QueryArg,\r\n meta: MetaType | undefined,\r\n assertTagTypes: AssertTagTypes\r\n): readonly FullTagDescription[] {\r\n if (isFunction(description)) {\r\n return description(\r\n result as ResultType,\r\n error as undefined,\r\n queryArg,\r\n meta as MetaType\r\n )\r\n .map(expandTagDescription)\r\n .map(assertTagTypes)\r\n }\r\n if (Array.isArray(description)) {\r\n return description.map(expandTagDescription).map(assertTagTypes)\r\n }\r\n return []\r\n}\r\n\r\nfunction isFunction(t: T): t is Extract {\r\n return typeof t === 'function'\r\n}\r\n\r\nexport function expandTagDescription(\r\n description: TagDescription\r\n): FullTagDescription {\r\n return typeof description === 'string' ? { type: description } : description\r\n}\r\n\r\nexport type QueryArgFrom> =\r\n D extends BaseEndpointDefinition ? QA : unknown\r\nexport type ResultTypeFrom> =\r\n D extends BaseEndpointDefinition ? RT : unknown\r\n\r\nexport type ReducerPathFrom<\r\n D extends EndpointDefinition\r\n> = D extends EndpointDefinition ? RP : unknown\r\n\r\nexport type TagTypesFrom> =\r\n D extends EndpointDefinition ? RP : unknown\r\n\r\nexport type TagTypesFromApi = T extends Api\r\n ? TagTypes\r\n : never\r\n\r\nexport type DefinitionsFromApi = T extends Api<\r\n any,\r\n infer Definitions,\r\n any,\r\n any\r\n>\r\n ? Definitions\r\n : never\r\n\r\nexport type TransformedResponse<\r\n NewDefinitions extends EndpointDefinitions,\r\n K,\r\n ResultType\r\n> = K extends keyof NewDefinitions\r\n ? NewDefinitions[K]['transformResponse'] extends undefined\r\n ? ResultType\r\n : UnwrapPromise<\r\n ReturnType>\r\n >\r\n : ResultType\r\n\r\nexport type OverrideResultType =\r\n Definition extends QueryDefinition<\r\n infer QueryArg,\r\n infer BaseQuery,\r\n infer TagTypes,\r\n any,\r\n infer ReducerPath\r\n >\r\n ? QueryDefinition\r\n : Definition extends MutationDefinition<\r\n infer QueryArg,\r\n infer BaseQuery,\r\n infer TagTypes,\r\n any,\r\n infer ReducerPath\r\n >\r\n ? MutationDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n TagTypes,\r\n NewResultType,\r\n ReducerPath\r\n >\r\n : never\r\n\r\nexport type UpdateDefinitions<\r\n Definitions extends EndpointDefinitions,\r\n NewTagTypes extends string,\r\n NewDefinitions extends EndpointDefinitions\r\n> = {\r\n [K in keyof Definitions]: Definitions[K] extends QueryDefinition<\r\n infer QueryArg,\r\n infer BaseQuery,\r\n any,\r\n infer ResultType,\r\n infer ReducerPath\r\n >\r\n ? QueryDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n NewTagTypes,\r\n TransformedResponse,\r\n ReducerPath\r\n >\r\n : Definitions[K] extends MutationDefinition<\r\n infer QueryArg,\r\n infer BaseQuery,\r\n any,\r\n infer ResultType,\r\n infer ReducerPath\r\n >\r\n ? MutationDefinition<\r\n QueryArg,\r\n BaseQuery,\r\n NewTagTypes,\r\n TransformedResponse,\r\n ReducerPath\r\n >\r\n : never\r\n}\r\n","import type { AnyAction, ThunkAction, ThunkDispatch } from '@reduxjs/toolkit'\r\nimport { createSelector } from '@reduxjs/toolkit'\r\nimport type { Selector } from '@reduxjs/toolkit'\r\nimport type { DependencyList } from 'react'\r\nimport {\r\n useCallback,\r\n useDebugValue,\r\n useEffect,\r\n useLayoutEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from 'react'\r\nimport { QueryStatus, skipToken } from '@reduxjs/toolkit/query'\r\nimport type {\r\n QuerySubState,\r\n SubscriptionOptions,\r\n QueryKeys,\r\n RootState,\r\n} from '@reduxjs/toolkit/query'\r\nimport type {\r\n EndpointDefinitions,\r\n MutationDefinition,\r\n QueryDefinition,\r\n QueryArgFrom,\r\n ResultTypeFrom,\r\n} from '@reduxjs/toolkit/query'\r\nimport type {\r\n QueryResultSelectorResult,\r\n MutationResultSelectorResult,\r\n SkipToken,\r\n} from '@reduxjs/toolkit/query'\r\nimport type {\r\n QueryActionCreatorResult,\r\n MutationActionCreatorResult,\r\n} from '@reduxjs/toolkit/query'\r\nimport type { SerializeQueryArgs } from '@reduxjs/toolkit/query'\r\nimport { shallowEqual } from 'react-redux'\r\nimport type { Api, ApiContext } from '@reduxjs/toolkit/query'\r\nimport type {\r\n TSHelpersId,\r\n TSHelpersNoInfer,\r\n TSHelpersOverride,\r\n} from '@reduxjs/toolkit/query'\r\nimport type {\r\n ApiEndpointMutation,\r\n ApiEndpointQuery,\r\n CoreModule,\r\n PrefetchOptions,\r\n} from '@reduxjs/toolkit/query'\r\nimport type { ReactHooksModuleOptions } from './module'\r\nimport { useStableQueryArgs } from './useSerializedStableValue'\r\nimport type { UninitializedValue } from './constants'\r\nimport { UNINITIALIZED_VALUE } from './constants'\r\nimport { useShallowStableValue } from './useShallowStableValue'\r\nimport type { BaseQueryFn } from '../baseQueryTypes'\r\nimport { defaultSerializeQueryArgs } from '../defaultSerializeQueryArgs'\r\n\r\n// Copy-pasted from React-Redux\r\nexport const useIsomorphicLayoutEffect =\r\n typeof window !== 'undefined' &&\r\n !!window.document &&\r\n !!window.document.createElement\r\n ? useLayoutEffect\r\n : useEffect\r\n\r\nexport interface QueryHooks<\r\n Definition extends QueryDefinition\r\n> {\r\n useQuery: UseQuery\r\n useLazyQuery: UseLazyQuery\r\n useQuerySubscription: UseQuerySubscription\r\n useLazyQuerySubscription: UseLazyQuerySubscription\r\n useQueryState: UseQueryState\r\n}\r\n\r\nexport interface MutationHooks<\r\n Definition extends MutationDefinition\r\n> {\r\n useMutation: UseMutation\r\n}\r\n\r\n/**\r\n * A React hook that automatically triggers fetches of data from an endpoint, 'subscribes' the component to the cached data, and reads the request status and cached data from the Redux store. The component will re-render as the loading status changes and the data becomes available.\r\n *\r\n * The query arg is used as a cache key. Changing the query arg will tell the hook to re-fetch the data if it does not exist in the cache already, and the hook will return the data for that query arg once it's available.\r\n *\r\n * This hook combines the functionality of both [`useQueryState`](#usequerystate) and [`useQuerySubscription`](#usequerysubscription) together, and is intended to be used in the majority of situations.\r\n *\r\n * #### Features\r\n *\r\n * - Automatically triggers requests to retrieve data based on the hook argument and whether cached data exists by default\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met\r\n * - Returns the latest request status and cached data from the Redux store\r\n * - Re-renders as the request status changes and data becomes available\r\n */\r\nexport type UseQuery> = <\r\n R extends Record = UseQueryStateDefaultResult\r\n>(\r\n arg: QueryArgFrom | SkipToken,\r\n options?: UseQuerySubscriptionOptions & UseQueryStateOptions\r\n) => UseQueryHookResult\r\n\r\nexport type UseQueryHookResult<\r\n D extends QueryDefinition,\r\n R = UseQueryStateDefaultResult\r\n> = UseQueryStateResult & UseQuerySubscriptionResult\r\n\r\n/**\r\n * Helper type to manually type the result\r\n * of the `useQuery` hook in userland code.\r\n */\r\nexport type TypedUseQueryHookResult<\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n R = UseQueryStateDefaultResult<\r\n QueryDefinition\r\n >\r\n> = TypedUseQueryStateResult &\r\n TypedUseQuerySubscriptionResult\r\n\r\ninterface UseQuerySubscriptionOptions extends SubscriptionOptions {\r\n /**\r\n * Prevents a query from automatically running.\r\n *\r\n * @remarks\r\n * When `skip` is true (or `skipToken` is passed in as `arg`):\r\n *\r\n * - **If the query has cached data:**\r\n * * The cached data **will not be used** on the initial load, and will ignore updates from any identical query until the `skip` condition is removed\r\n * * The query will have a status of `uninitialized`\r\n * * If `skip: false` is set after the initial load, the cached result will be used\r\n * - **If the query does not have cached data:**\r\n * * The query will have a status of `uninitialized`\r\n * * The query will not exist in the state when viewed with the dev tools\r\n * * The query will not automatically fetch on mount\r\n * * The query will not automatically run when additional components with the same query are added that do run\r\n *\r\n * @example\r\n * ```tsx\r\n * // codeblock-meta no-transpile title=\"Skip example\"\r\n * const Pokemon = ({ name, skip }: { name: string; skip: boolean }) => {\r\n * const { data, error, status } = useGetPokemonByNameQuery(name, {\r\n * skip,\r\n * });\r\n *\r\n * return (\r\n *
\r\n * {name} - {status}\r\n *
\r\n * );\r\n * };\r\n * ```\r\n */\r\n skip?: boolean\r\n /**\r\n * Defaults to `false`. This setting allows you to control whether if a cached result is already available, RTK Query will only serve a cached result, or if it should `refetch` when set to `true` or if an adequate amount of time has passed since the last successful query result.\r\n * - `false` - Will not cause a query to be performed _unless_ it does not exist yet.\r\n * - `true` - Will always refetch when a new subscriber to a query is added. Behaves the same as calling the `refetch` callback or passing `forceRefetch: true` in the action creator.\r\n * - `number` - **Value is in seconds**. If a number is provided and there is an existing query in the cache, it will compare the current time vs the last fulfilled timestamp, and only refetch if enough time has elapsed.\r\n *\r\n * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n */\r\n refetchOnMountOrArgChange?: boolean | number\r\n}\r\n\r\n/**\r\n * A React hook that automatically triggers fetches of data from an endpoint, and 'subscribes' the component to the cached data.\r\n *\r\n * The query arg is used as a cache key. Changing the query arg will tell the hook to re-fetch the data if it does not exist in the cache already.\r\n *\r\n * Note that this hook does not return a request status or cached data. For that use-case, see [`useQuery`](#usequery) or [`useQueryState`](#usequerystate).\r\n *\r\n * #### Features\r\n *\r\n * - Automatically triggers requests to retrieve data based on the hook argument and whether cached data exists by default\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met\r\n */\r\nexport type UseQuerySubscription<\r\n D extends QueryDefinition\r\n> = (\r\n arg: QueryArgFrom | SkipToken,\r\n options?: UseQuerySubscriptionOptions\r\n) => UseQuerySubscriptionResult\r\n\r\nexport type UseQuerySubscriptionResult<\r\n D extends QueryDefinition\r\n> = Pick, 'refetch'>\r\n\r\n/**\r\n * Helper type to manually type the result\r\n * of the `useQuerySubscription` hook in userland code.\r\n */\r\nexport type TypedUseQuerySubscriptionResult<\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn\r\n> = UseQuerySubscriptionResult<\r\n QueryDefinition\r\n>\r\n\r\nexport type UseLazyQueryLastPromiseInfo<\r\n D extends QueryDefinition\r\n> = {\r\n lastArg: QueryArgFrom\r\n}\r\n\r\n/**\r\n * A React hook similar to [`useQuery`](#usequery), but with manual control over when the data fetching occurs.\r\n *\r\n * This hook includes the functionality of [`useLazyQuerySubscription`](#uselazyquerysubscription).\r\n *\r\n * #### Features\r\n *\r\n * - Manual control over firing a request to retrieve data\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Returns the latest request status and cached data from the Redux store\r\n * - Re-renders as the request status changes and data becomes available\r\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met and the fetch has been manually called at least once\r\n *\r\n * #### Note\r\n *\r\n * When the trigger function returned from a LazyQuery is called, it always initiates a new request to the server even if there is cached data. Set `preferCacheValue`(the second argument to the function) as `true` if you want it to immediately return a cached value if one exists.\r\n */\r\nexport type UseLazyQuery> = <\r\n R extends Record = UseQueryStateDefaultResult\r\n>(\r\n options?: SubscriptionOptions & Omit, 'skip'>\r\n) => [\r\n LazyQueryTrigger,\r\n UseQueryStateResult,\r\n UseLazyQueryLastPromiseInfo\r\n]\r\n\r\nexport type LazyQueryTrigger> = {\r\n /**\r\n * Triggers a lazy query.\r\n *\r\n * By default, this will start a new request even if there is already a value in the cache.\r\n * If you want to use the cache value and only start a request if there is no cache value, set the second argument to `true`.\r\n *\r\n * @remarks\r\n * If you need to access the error or success payload immediately after a lazy query, you can chain .unwrap().\r\n *\r\n * @example\r\n * ```ts\r\n * // codeblock-meta title=\"Using .unwrap with async await\"\r\n * try {\r\n * const payload = await getUserById(1).unwrap();\r\n * console.log('fulfilled', payload)\r\n * } catch (error) {\r\n * console.error('rejected', error);\r\n * }\r\n * ```\r\n */\r\n (\r\n arg: QueryArgFrom,\r\n preferCacheValue?: boolean\r\n ): QueryActionCreatorResult\r\n}\r\n\r\n/**\r\n * A React hook similar to [`useQuerySubscription`](#usequerysubscription), but with manual control over when the data fetching occurs.\r\n *\r\n * Note that this hook does not return a request status or cached data. For that use-case, see [`useLazyQuery`](#uselazyquery).\r\n *\r\n * #### Features\r\n *\r\n * - Manual control over firing a request to retrieve data\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met and the fetch has been manually called at least once\r\n */\r\nexport type UseLazyQuerySubscription<\r\n D extends QueryDefinition\r\n> = (\r\n options?: SubscriptionOptions\r\n) => readonly [LazyQueryTrigger, QueryArgFrom | UninitializedValue]\r\n\r\nexport type QueryStateSelector<\r\n R extends Record,\r\n D extends QueryDefinition\r\n> = (state: UseQueryStateDefaultResult) => R\r\n\r\n/**\r\n * A React hook that reads the request status and cached data from the Redux store. The component will re-render as the loading status changes and the data becomes available.\r\n *\r\n * Note that this hook does not trigger fetching new data. For that use-case, see [`useQuery`](#usequery) or [`useQuerySubscription`](#usequerysubscription).\r\n *\r\n * #### Features\r\n *\r\n * - Returns the latest request status and cached data from the Redux store\r\n * - Re-renders as the request status changes and data becomes available\r\n */\r\nexport type UseQueryState> = <\r\n R extends Record = UseQueryStateDefaultResult\r\n>(\r\n arg: QueryArgFrom | SkipToken,\r\n options?: UseQueryStateOptions\r\n) => UseQueryStateResult\r\n\r\nexport type UseQueryStateOptions<\r\n D extends QueryDefinition,\r\n R extends Record\r\n> = {\r\n /**\r\n * Prevents a query from automatically running.\r\n *\r\n * @remarks\r\n * When skip is true:\r\n *\r\n * - **If the query has cached data:**\r\n * * The cached data **will not be used** on the initial load, and will ignore updates from any identical query until the `skip` condition is removed\r\n * * The query will have a status of `uninitialized`\r\n * * If `skip: false` is set after skipping the initial load, the cached result will be used\r\n * - **If the query does not have cached data:**\r\n * * The query will have a status of `uninitialized`\r\n * * The query will not exist in the state when viewed with the dev tools\r\n * * The query will not automatically fetch on mount\r\n * * The query will not automatically run when additional components with the same query are added that do run\r\n *\r\n * @example\r\n * ```ts\r\n * // codeblock-meta title=\"Skip example\"\r\n * const Pokemon = ({ name, skip }: { name: string; skip: boolean }) => {\r\n * const { data, error, status } = useGetPokemonByNameQuery(name, {\r\n * skip,\r\n * });\r\n *\r\n * return (\r\n *
\r\n * {name} - {status}\r\n *
\r\n * );\r\n * };\r\n * ```\r\n */\r\n skip?: boolean\r\n /**\r\n * `selectFromResult` allows you to get a specific segment from a query result in a performant manner.\r\n * When using this feature, the component will not rerender unless the underlying data of the selected item has changed.\r\n * If the selected item is one element in a larger collection, it will disregard changes to elements in the same collection.\r\n *\r\n * @example\r\n * ```ts\r\n * // codeblock-meta title=\"Using selectFromResult to extract a single result\"\r\n * function PostsList() {\r\n * const { data: posts } = api.useGetPostsQuery();\r\n *\r\n * return (\r\n *
    \r\n * {posts?.data?.map((post) => (\r\n * \r\n * ))}\r\n *
\r\n * );\r\n * }\r\n *\r\n * function PostById({ id }: { id: number }) {\r\n * // Will select the post with the given id, and will only rerender if the given posts data changes\r\n * const { post } = api.useGetPostsQuery(undefined, {\r\n * selectFromResult: ({ data }) => ({ post: data?.find((post) => post.id === id) }),\r\n * });\r\n *\r\n * return
  • {post?.name}
  • ;\r\n * }\r\n * ```\r\n */\r\n selectFromResult?: QueryStateSelector\r\n}\r\n\r\nexport type UseQueryStateResult<\r\n _ extends QueryDefinition,\r\n R\r\n> = TSHelpersNoInfer\r\n\r\n/**\r\n * Helper type to manually type the result\r\n * of the `useQueryState` hook in userland code.\r\n */\r\nexport type TypedUseQueryStateResult<\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n R = UseQueryStateDefaultResult<\r\n QueryDefinition\r\n >\r\n> = TSHelpersNoInfer\r\n\r\ntype UseQueryStateBaseResult> =\r\n QuerySubState & {\r\n /**\r\n * Where `data` tries to hold data as much as possible, also re-using\r\n * data from the last arguments passed into the hook, this property\r\n * will always contain the received data from the query, for the current query arguments.\r\n */\r\n currentData?: ResultTypeFrom\r\n /**\r\n * Query has not started yet.\r\n */\r\n isUninitialized: false\r\n /**\r\n * Query is currently loading for the first time. No data yet.\r\n */\r\n isLoading: false\r\n /**\r\n * Query is currently fetching, but might have data from an earlier request.\r\n */\r\n isFetching: false\r\n /**\r\n * Query has data from a successful load.\r\n */\r\n isSuccess: false\r\n /**\r\n * Query is currently in \"error\" state.\r\n */\r\n isError: false\r\n }\r\n\r\ntype UseQueryStateDefaultResult> =\r\n TSHelpersId<\r\n | TSHelpersOverride<\r\n Extract<\r\n UseQueryStateBaseResult,\r\n { status: QueryStatus.uninitialized }\r\n >,\r\n { isUninitialized: true }\r\n >\r\n | TSHelpersOverride<\r\n UseQueryStateBaseResult,\r\n | { isLoading: true; isFetching: boolean; data: undefined }\r\n | ({\r\n isSuccess: true\r\n isFetching: true\r\n error: undefined\r\n } & Required<\r\n Pick, 'data' | 'fulfilledTimeStamp'>\r\n >)\r\n | ({\r\n isSuccess: true\r\n isFetching: false\r\n error: undefined\r\n } & Required<\r\n Pick<\r\n UseQueryStateBaseResult,\r\n 'data' | 'fulfilledTimeStamp' | 'currentData'\r\n >\r\n >)\r\n | ({ isError: true } & Required<\r\n Pick, 'error'>\r\n >)\r\n >\r\n > & {\r\n /**\r\n * @deprecated will be removed in the next version\r\n * please use the `isLoading`, `isFetching`, `isSuccess`, `isError`\r\n * and `isUninitialized` flags instead\r\n */\r\n status: QueryStatus\r\n }\r\n\r\nexport type MutationStateSelector<\r\n R extends Record,\r\n D extends MutationDefinition\r\n> = (state: MutationResultSelectorResult) => R\r\n\r\nexport type UseMutationStateOptions<\r\n D extends MutationDefinition,\r\n R extends Record\r\n> = {\r\n selectFromResult?: MutationStateSelector\r\n fixedCacheKey?: string\r\n}\r\n\r\nexport type UseMutationStateResult<\r\n D extends MutationDefinition,\r\n R\r\n> = TSHelpersNoInfer & {\r\n originalArgs?: QueryArgFrom\r\n /**\r\n * Resets the hook state to it's initial `uninitialized` state.\r\n * This will also remove the last result from the cache.\r\n */\r\n reset: () => void\r\n}\r\n\r\n/**\r\n * Helper type to manually type the result\r\n * of the `useMutation` hook in userland code.\r\n */\r\nexport type TypedUseMutationResult<\r\n ResultType,\r\n QueryArg,\r\n BaseQuery extends BaseQueryFn,\r\n R = MutationResultSelectorResult<\r\n MutationDefinition\r\n >\r\n> = UseMutationStateResult<\r\n MutationDefinition,\r\n R\r\n>\r\n\r\n/**\r\n * A React hook that lets you trigger an update request for a given endpoint, and subscribes the component to read the request status from the Redux store. The component will re-render as the loading status changes.\r\n *\r\n * #### Features\r\n *\r\n * - Manual control over firing a request to alter data on the server or possibly invalidate the cache\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Returns the latest request status and cached data from the Redux store\r\n * - Re-renders as the request status changes and data becomes available\r\n */\r\nexport type UseMutation> = <\r\n R extends Record = MutationResultSelectorResult\r\n>(\r\n options?: UseMutationStateOptions\r\n) => readonly [MutationTrigger, UseMutationStateResult]\r\n\r\nexport type MutationTrigger> =\r\n {\r\n /**\r\n * Triggers the mutation and returns a Promise.\r\n * @remarks\r\n * If you need to access the error or success payload immediately after a mutation, you can chain .unwrap().\r\n *\r\n * @example\r\n * ```ts\r\n * // codeblock-meta title=\"Using .unwrap with async await\"\r\n * try {\r\n * const payload = await addPost({ id: 1, name: 'Example' }).unwrap();\r\n * console.log('fulfilled', payload)\r\n * } catch (error) {\r\n * console.error('rejected', error);\r\n * }\r\n * ```\r\n */\r\n (arg: QueryArgFrom): MutationActionCreatorResult\r\n }\r\n\r\nconst defaultQueryStateSelector: QueryStateSelector = (x) => x\r\nconst defaultMutationStateSelector: MutationStateSelector = (x) => x\r\n\r\n/**\r\n * Wrapper around `defaultQueryStateSelector` to be used in `useQuery`.\r\n * We want the initial render to already come back with\r\n * `{ isUninitialized: false, isFetching: true, isLoading: true }`\r\n * to prevent that the library user has to do an additional check for `isUninitialized`/\r\n */\r\nconst noPendingQueryStateSelector: QueryStateSelector = (\r\n selected\r\n) => {\r\n if (selected.isUninitialized) {\r\n return {\r\n ...selected,\r\n isUninitialized: false,\r\n isFetching: true,\r\n isLoading: selected.data !== undefined ? false : true,\r\n status: QueryStatus.pending,\r\n } as any\r\n }\r\n return selected\r\n}\r\n\r\ntype GenericPrefetchThunk = (\r\n endpointName: any,\r\n arg: any,\r\n options: PrefetchOptions\r\n) => ThunkAction\r\n\r\n/**\r\n *\r\n * @param opts.api - An API with defined endpoints to create hooks for\r\n * @param opts.moduleOptions.batch - The version of the `batchedUpdates` function to be used\r\n * @param opts.moduleOptions.useDispatch - The version of the `useDispatch` hook to be used\r\n * @param opts.moduleOptions.useSelector - The version of the `useSelector` hook to be used\r\n * @returns An object containing functions to generate hooks based on an endpoint\r\n */\r\nexport function buildHooks({\r\n api,\r\n moduleOptions: {\r\n batch,\r\n useDispatch,\r\n useSelector,\r\n useStore,\r\n unstable__sideEffectsInRender,\r\n },\r\n serializeQueryArgs,\r\n context,\r\n}: {\r\n api: Api\r\n moduleOptions: Required\r\n serializeQueryArgs: SerializeQueryArgs\r\n context: ApiContext\r\n}) {\r\n const usePossiblyImmediateEffect: (\r\n effect: () => void | undefined,\r\n deps?: DependencyList\r\n ) => void = unstable__sideEffectsInRender ? (cb) => cb() : useEffect\r\n\r\n return { buildQueryHooks, buildMutationHook, usePrefetch }\r\n\r\n function queryStatePreSelector(\r\n currentState: QueryResultSelectorResult,\r\n lastResult: UseQueryStateDefaultResult | undefined,\r\n queryArgs: any\r\n ): UseQueryStateDefaultResult {\r\n // if we had a last result and the current result is uninitialized,\r\n // we might have called `api.util.resetApiState`\r\n // in this case, reset the hook\r\n if (lastResult?.endpointName && currentState.isUninitialized) {\r\n const { endpointName } = lastResult\r\n const endpointDefinition = context.endpointDefinitions[endpointName]\r\n if (\r\n serializeQueryArgs({\r\n queryArgs: lastResult.originalArgs,\r\n endpointDefinition,\r\n endpointName,\r\n }) ===\r\n serializeQueryArgs({\r\n queryArgs,\r\n endpointDefinition,\r\n endpointName,\r\n })\r\n )\r\n lastResult = undefined\r\n }\r\n\r\n // data is the last known good request result we have tracked - or if none has been tracked yet the last good result for the current args\r\n let data = currentState.isSuccess ? currentState.data : lastResult?.data\r\n if (data === undefined) data = currentState.data\r\n\r\n const hasData = data !== undefined\r\n\r\n // isFetching = true any time a request is in flight\r\n const isFetching = currentState.isLoading\r\n // isLoading = true only when loading while no data is present yet (initial load with no data in the cache)\r\n const isLoading = !hasData && isFetching\r\n // isSuccess = true when data is present\r\n const isSuccess = currentState.isSuccess || (isFetching && hasData)\r\n\r\n return {\r\n ...currentState,\r\n data,\r\n currentData: currentState.data,\r\n isFetching,\r\n isLoading,\r\n isSuccess,\r\n } as UseQueryStateDefaultResult\r\n }\r\n\r\n function usePrefetch>(\r\n endpointName: EndpointName,\r\n defaultOptions?: PrefetchOptions\r\n ) {\r\n const dispatch = useDispatch>()\r\n const stableDefaultOptions = useShallowStableValue(defaultOptions)\r\n\r\n return useCallback(\r\n (arg: any, options?: PrefetchOptions) =>\r\n dispatch(\r\n (api.util.prefetch as GenericPrefetchThunk)(endpointName, arg, {\r\n ...stableDefaultOptions,\r\n ...options,\r\n })\r\n ),\r\n [endpointName, dispatch, stableDefaultOptions]\r\n )\r\n }\r\n\r\n function buildQueryHooks(name: string): QueryHooks {\r\n const useQuerySubscription: UseQuerySubscription = (\r\n arg: any,\r\n {\r\n refetchOnReconnect,\r\n refetchOnFocus,\r\n refetchOnMountOrArgChange,\r\n skip = false,\r\n pollingInterval = 0,\r\n } = {}\r\n ) => {\r\n const { initiate } = api.endpoints[name] as ApiEndpointQuery<\r\n QueryDefinition,\r\n Definitions\r\n >\r\n const dispatch = useDispatch>()\r\n const stableArg = useStableQueryArgs(\r\n skip ? skipToken : arg,\r\n // Even if the user provided a per-endpoint `serializeQueryArgs` with\r\n // a consistent return value, _here_ we want to use the default behavior\r\n // so we can tell if _anything_ actually changed. Otherwise, we can end up\r\n // with a case where the query args did change but the serialization doesn't,\r\n // and then we never try to initiate a refetch.\r\n defaultSerializeQueryArgs,\r\n context.endpointDefinitions[name],\r\n name\r\n )\r\n const stableSubscriptionOptions = useShallowStableValue({\r\n refetchOnReconnect,\r\n refetchOnFocus,\r\n pollingInterval,\r\n })\r\n\r\n const lastRenderHadSubscription = useRef(false)\r\n\r\n const promiseRef = useRef>()\r\n\r\n let { queryCacheKey, requestId } = promiseRef.current || {}\r\n\r\n // HACK Because the latest state is in the middleware, we actually\r\n // dispatch an action that will be intercepted and returned.\r\n let currentRenderHasSubscription = false\r\n if (queryCacheKey && requestId) {\r\n // This _should_ return a boolean, even if the types don't line up\r\n const returnedValue = dispatch(\r\n api.internalActions.internal_probeSubscription({\r\n queryCacheKey,\r\n requestId,\r\n })\r\n )\r\n\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (typeof returnedValue !== 'boolean') {\r\n throw new Error(\r\n `Warning: Middleware for RTK-Query API at reducerPath \"${api.reducerPath}\" has not been added to the store.\r\n You must add the middleware for RTK-Query to function correctly!`\r\n )\r\n }\r\n }\r\n\r\n currentRenderHasSubscription = !!returnedValue\r\n }\r\n\r\n const subscriptionRemoved =\r\n !currentRenderHasSubscription && lastRenderHadSubscription.current\r\n\r\n usePossiblyImmediateEffect(() => {\r\n lastRenderHadSubscription.current = currentRenderHasSubscription\r\n })\r\n\r\n usePossiblyImmediateEffect((): void | undefined => {\r\n if (subscriptionRemoved) {\r\n promiseRef.current = undefined\r\n }\r\n }, [subscriptionRemoved])\r\n\r\n usePossiblyImmediateEffect((): void | undefined => {\r\n const lastPromise = promiseRef.current\r\n if (\r\n typeof process !== 'undefined' &&\r\n process.env.NODE_ENV === 'removeMeOnCompilation'\r\n ) {\r\n // this is only present to enforce the rule of hooks to keep `isSubscribed` in the dependency array\r\n console.log(subscriptionRemoved)\r\n }\r\n\r\n if (stableArg === skipToken) {\r\n lastPromise?.unsubscribe()\r\n promiseRef.current = undefined\r\n return\r\n }\r\n\r\n const lastSubscriptionOptions = promiseRef.current?.subscriptionOptions\r\n\r\n if (!lastPromise || lastPromise.arg !== stableArg) {\r\n lastPromise?.unsubscribe()\r\n const promise = dispatch(\r\n initiate(stableArg, {\r\n subscriptionOptions: stableSubscriptionOptions,\r\n forceRefetch: refetchOnMountOrArgChange,\r\n })\r\n )\r\n\r\n promiseRef.current = promise\r\n } else if (stableSubscriptionOptions !== lastSubscriptionOptions) {\r\n lastPromise.updateSubscriptionOptions(stableSubscriptionOptions)\r\n }\r\n }, [\r\n dispatch,\r\n initiate,\r\n refetchOnMountOrArgChange,\r\n stableArg,\r\n stableSubscriptionOptions,\r\n subscriptionRemoved,\r\n ])\r\n\r\n useEffect(() => {\r\n return () => {\r\n promiseRef.current?.unsubscribe()\r\n promiseRef.current = undefined\r\n }\r\n }, [])\r\n\r\n return useMemo(\r\n () => ({\r\n /**\r\n * A method to manually refetch data for the query\r\n */\r\n refetch: () => {\r\n if (!promiseRef.current)\r\n throw new Error(\r\n 'Cannot refetch a query that has not been started yet.'\r\n )\r\n return promiseRef.current?.refetch()\r\n },\r\n }),\r\n []\r\n )\r\n }\r\n\r\n const useLazyQuerySubscription: UseLazyQuerySubscription = ({\r\n refetchOnReconnect,\r\n refetchOnFocus,\r\n pollingInterval = 0,\r\n } = {}) => {\r\n const { initiate } = api.endpoints[name] as ApiEndpointQuery<\r\n QueryDefinition,\r\n Definitions\r\n >\r\n const dispatch = useDispatch>()\r\n\r\n const [arg, setArg] = useState(UNINITIALIZED_VALUE)\r\n const promiseRef = useRef | undefined>()\r\n\r\n const stableSubscriptionOptions = useShallowStableValue({\r\n refetchOnReconnect,\r\n refetchOnFocus,\r\n pollingInterval,\r\n })\r\n\r\n usePossiblyImmediateEffect(() => {\r\n const lastSubscriptionOptions = promiseRef.current?.subscriptionOptions\r\n\r\n if (stableSubscriptionOptions !== lastSubscriptionOptions) {\r\n promiseRef.current?.updateSubscriptionOptions(\r\n stableSubscriptionOptions\r\n )\r\n }\r\n }, [stableSubscriptionOptions])\r\n\r\n const subscriptionOptionsRef = useRef(stableSubscriptionOptions)\r\n usePossiblyImmediateEffect(() => {\r\n subscriptionOptionsRef.current = stableSubscriptionOptions\r\n }, [stableSubscriptionOptions])\r\n\r\n const trigger = useCallback(\r\n function (arg: any, preferCacheValue = false) {\r\n let promise: QueryActionCreatorResult\r\n\r\n batch(() => {\r\n promiseRef.current?.unsubscribe()\r\n\r\n promiseRef.current = promise = dispatch(\r\n initiate(arg, {\r\n subscriptionOptions: subscriptionOptionsRef.current,\r\n forceRefetch: !preferCacheValue,\r\n })\r\n )\r\n\r\n setArg(arg)\r\n })\r\n\r\n return promise!\r\n },\r\n [dispatch, initiate]\r\n )\r\n\r\n /* cleanup on unmount */\r\n useEffect(() => {\r\n return () => {\r\n promiseRef?.current?.unsubscribe()\r\n }\r\n }, [])\r\n\r\n /* if \"cleanup on unmount\" was triggered from a fast refresh, we want to reinstate the query */\r\n useEffect(() => {\r\n if (arg !== UNINITIALIZED_VALUE && !promiseRef.current) {\r\n trigger(arg, true)\r\n }\r\n }, [arg, trigger])\r\n\r\n return useMemo(() => [trigger, arg] as const, [trigger, arg])\r\n }\r\n\r\n const useQueryState: UseQueryState = (\r\n arg: any,\r\n { skip = false, selectFromResult } = {}\r\n ) => {\r\n const { select } = api.endpoints[name] as ApiEndpointQuery<\r\n QueryDefinition,\r\n Definitions\r\n >\r\n const stableArg = useStableQueryArgs(\r\n skip ? skipToken : arg,\r\n serializeQueryArgs,\r\n context.endpointDefinitions[name],\r\n name\r\n )\r\n\r\n type ApiRootState = Parameters>[0]\r\n\r\n const lastValue = useRef()\r\n\r\n const selectDefaultResult: Selector = useMemo(\r\n () =>\r\n createSelector(\r\n [\r\n select(stableArg),\r\n (_: ApiRootState, lastResult: any) => lastResult,\r\n (_: ApiRootState) => stableArg,\r\n ],\r\n queryStatePreSelector\r\n ),\r\n [select, stableArg]\r\n )\r\n\r\n const querySelector: Selector = useMemo(\r\n () =>\r\n selectFromResult\r\n ? createSelector([selectDefaultResult], selectFromResult)\r\n : selectDefaultResult,\r\n [selectDefaultResult, selectFromResult]\r\n )\r\n\r\n const currentState = useSelector(\r\n (state: RootState) =>\r\n querySelector(state, lastValue.current),\r\n shallowEqual\r\n )\r\n\r\n const store = useStore>()\r\n const newLastValue = selectDefaultResult(\r\n store.getState(),\r\n lastValue.current\r\n )\r\n useIsomorphicLayoutEffect(() => {\r\n lastValue.current = newLastValue\r\n }, [newLastValue])\r\n\r\n return currentState\r\n }\r\n\r\n return {\r\n useQueryState,\r\n useQuerySubscription,\r\n useLazyQuerySubscription,\r\n useLazyQuery(options) {\r\n const [trigger, arg] = useLazyQuerySubscription(options)\r\n const queryStateResults = useQueryState(arg, {\r\n ...options,\r\n skip: arg === UNINITIALIZED_VALUE,\r\n })\r\n\r\n const info = useMemo(() => ({ lastArg: arg }), [arg])\r\n return useMemo(\r\n () => [trigger, queryStateResults, info],\r\n [trigger, queryStateResults, info]\r\n )\r\n },\r\n useQuery(arg, options) {\r\n const querySubscriptionResults = useQuerySubscription(arg, options)\r\n const queryStateResults = useQueryState(arg, {\r\n selectFromResult:\r\n arg === skipToken || options?.skip\r\n ? undefined\r\n : noPendingQueryStateSelector,\r\n ...options,\r\n })\r\n\r\n const { data, status, isLoading, isSuccess, isError, error } =\r\n queryStateResults\r\n useDebugValue({ data, status, isLoading, isSuccess, isError, error })\r\n\r\n return useMemo(\r\n () => ({ ...queryStateResults, ...querySubscriptionResults }),\r\n [queryStateResults, querySubscriptionResults]\r\n )\r\n },\r\n }\r\n }\r\n\r\n function buildMutationHook(name: string): UseMutation {\r\n return ({\r\n selectFromResult = defaultMutationStateSelector,\r\n fixedCacheKey,\r\n } = {}) => {\r\n const { select, initiate } = api.endpoints[name] as ApiEndpointMutation<\r\n MutationDefinition,\r\n Definitions\r\n >\r\n const dispatch = useDispatch>()\r\n const [promise, setPromise] = useState>()\r\n\r\n useEffect(\r\n () => () => {\r\n if (!promise?.arg.fixedCacheKey) {\r\n promise?.reset()\r\n }\r\n },\r\n [promise]\r\n )\r\n\r\n const triggerMutation = useCallback(\r\n function (arg: Parameters['0']) {\r\n const promise = dispatch(initiate(arg, { fixedCacheKey }))\r\n setPromise(promise)\r\n return promise\r\n },\r\n [dispatch, initiate, fixedCacheKey]\r\n )\r\n\r\n const { requestId } = promise || {}\r\n const mutationSelector = useMemo(\r\n () =>\r\n createSelector(\r\n [select({ fixedCacheKey, requestId: promise?.requestId })],\r\n selectFromResult\r\n ),\r\n [select, promise, selectFromResult, fixedCacheKey]\r\n )\r\n\r\n const currentState = useSelector(mutationSelector, shallowEqual)\r\n const originalArgs =\r\n fixedCacheKey == null ? promise?.arg.originalArgs : undefined\r\n const reset = useCallback(() => {\r\n batch(() => {\r\n if (promise) {\r\n setPromise(undefined)\r\n }\r\n if (fixedCacheKey) {\r\n dispatch(\r\n api.internalActions.removeMutationResult({\r\n requestId,\r\n fixedCacheKey,\r\n })\r\n )\r\n }\r\n })\r\n }, [dispatch, fixedCacheKey, promise, requestId])\r\n\r\n const {\r\n endpointName,\r\n data,\r\n status,\r\n isLoading,\r\n isSuccess,\r\n isError,\r\n error,\r\n } = currentState\r\n useDebugValue({\r\n endpointName,\r\n data,\r\n status,\r\n isLoading,\r\n isSuccess,\r\n isError,\r\n error,\r\n })\r\n\r\n const finalState = useMemo(\r\n () => ({ ...currentState, originalArgs, reset }),\r\n [currentState, originalArgs, reset]\r\n )\r\n\r\n return useMemo(\r\n () => [triggerMutation, finalState] as const,\r\n [triggerMutation, finalState]\r\n )\r\n }\r\n }\r\n}\r\n","export function capitalize(str: string) {\r\n return str.replace(str[0], str[0].toUpperCase())\r\n}\r\n","export type Id = { [K in keyof T]: T[K] } & {}\r\nexport type WithRequiredProp = Omit &\r\n Required>\r\nexport type Override = T2 extends any ? Omit & T2 : never\r\nexport function assertCast(v: any): asserts v is T {}\r\n\r\nexport function safeAssign(\r\n target: T,\r\n ...args: Array>>\r\n) {\r\n Object.assign(target, ...args)\r\n}\r\n\r\n/**\r\n * Convert a Union type `(A|B)` to an intersection type `(A&B)`\r\n */\r\nexport type UnionToIntersection = (\r\n U extends any ? (k: U) => void : never\r\n) extends (k: infer I) => void\r\n ? I\r\n : never\r\n\r\nexport type NonOptionalKeys = {\r\n [K in keyof T]-?: undefined extends T[K] ? never : K\r\n}[keyof T]\r\n\r\nexport type HasRequiredProps = NonOptionalKeys extends never\r\n ? False\r\n : True\r\n\r\nexport type OptionalIfAllPropsOptional = HasRequiredProps\r\n\r\nexport type NoInfer = [T][T extends any ? 0 : never]\r\n\r\nexport type NonUndefined = T extends undefined ? never : T\r\n\r\nexport type UnwrapPromise = T extends PromiseLike ? V : T\r\n\r\nexport type MaybePromise = T | PromiseLike\r\n\r\nexport type OmitFromUnion = T extends any\r\n ? Omit\r\n : never\r\n\r\nexport type IsAny = true | false extends (\r\n T extends never ? true : false\r\n)\r\n ? True\r\n : False\r\n\r\nexport type CastAny = IsAny\r\n","import type { MutationHooks, QueryHooks } from './buildHooks'\r\nimport { buildHooks } from './buildHooks'\r\nimport { isQueryDefinition, isMutationDefinition } from '../endpointDefinitions'\r\nimport type {\r\n EndpointDefinitions,\r\n QueryDefinition,\r\n MutationDefinition,\r\n QueryArgFrom,\r\n} from '@reduxjs/toolkit/query'\r\nimport type { Api, Module } from '../apiTypes'\r\nimport { capitalize } from '../utils'\r\nimport { safeAssign } from '../tsHelpers'\r\nimport type { BaseQueryFn } from '@reduxjs/toolkit/query'\r\n\r\nimport type { HooksWithUniqueNames } from './namedHooks'\r\n\r\nimport {\r\n useDispatch as rrUseDispatch,\r\n useSelector as rrUseSelector,\r\n useStore as rrUseStore,\r\n batch as rrBatch,\r\n} from 'react-redux'\r\nimport type { QueryKeys } from '../core/apiState'\r\nimport type { PrefetchOptions } from '../core/module'\r\n\r\nexport const reactHooksModuleName = /* @__PURE__ */ Symbol()\r\nexport type ReactHooksModule = typeof reactHooksModuleName\r\n\r\ndeclare module '@reduxjs/toolkit/query' {\r\n export interface ApiModules<\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n BaseQuery extends BaseQueryFn,\r\n Definitions extends EndpointDefinitions,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n ReducerPath extends string,\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n TagTypes extends string\r\n > {\r\n [reactHooksModuleName]: {\r\n /**\r\n * Endpoints based on the input endpoints provided to `createApi`, containing `select`, `hooks` and `action matchers`.\r\n */\r\n endpoints: {\r\n [K in keyof Definitions]: Definitions[K] extends QueryDefinition<\r\n any,\r\n any,\r\n any,\r\n any,\r\n any\r\n >\r\n ? QueryHooks\r\n : Definitions[K] extends MutationDefinition\r\n ? MutationHooks\r\n : never\r\n }\r\n /**\r\n * A hook that accepts a string endpoint name, and provides a callback that when called, pre-fetches the data for that endpoint.\r\n */\r\n usePrefetch>(\r\n endpointName: EndpointName,\r\n options?: PrefetchOptions\r\n ): (\r\n arg: QueryArgFrom,\r\n options?: PrefetchOptions\r\n ) => void\r\n } & HooksWithUniqueNames\r\n }\r\n}\r\n\r\ntype RR = typeof import('react-redux')\r\n\r\nexport interface ReactHooksModuleOptions {\r\n /**\r\n * The version of the `batchedUpdates` function to be used\r\n */\r\n batch?: RR['batch']\r\n /**\r\n * The version of the `useDispatch` hook to be used\r\n */\r\n useDispatch?: RR['useDispatch']\r\n /**\r\n * The version of the `useSelector` hook to be used\r\n */\r\n useSelector?: RR['useSelector']\r\n /**\r\n * The version of the `useStore` hook to be used\r\n */\r\n useStore?: RR['useStore']\r\n /**\r\n * Enables performing asynchronous tasks immediately within a render.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * import {\r\n * buildCreateApi,\r\n * coreModule,\r\n * reactHooksModule\r\n * } from '@reduxjs/toolkit/query/react'\r\n *\r\n * const createApi = buildCreateApi(\r\n * coreModule(),\r\n * reactHooksModule({ unstable__sideEffectsInRender: true })\r\n * )\r\n * ```\r\n */\r\n unstable__sideEffectsInRender?: boolean\r\n}\r\n\r\n/**\r\n * Creates a module that generates react hooks from endpoints, for use with `buildCreateApi`.\r\n *\r\n * @example\r\n * ```ts\r\n * const MyContext = React.createContext(null as any);\r\n * const customCreateApi = buildCreateApi(\r\n * coreModule(),\r\n * reactHooksModule({ useDispatch: createDispatchHook(MyContext) })\r\n * );\r\n * ```\r\n *\r\n * @returns A module for use with `buildCreateApi`\r\n */\r\nexport const reactHooksModule = ({\r\n batch = rrBatch,\r\n useDispatch = rrUseDispatch,\r\n useSelector = rrUseSelector,\r\n useStore = rrUseStore,\r\n unstable__sideEffectsInRender = false,\r\n}: ReactHooksModuleOptions = {}): Module => ({\r\n name: reactHooksModuleName,\r\n init(api, { serializeQueryArgs }, context) {\r\n const anyApi = api as any as Api<\r\n any,\r\n Record,\r\n string,\r\n string,\r\n ReactHooksModule\r\n >\r\n const { buildQueryHooks, buildMutationHook, usePrefetch } = buildHooks({\r\n api,\r\n moduleOptions: {\r\n batch,\r\n useDispatch,\r\n useSelector,\r\n useStore,\r\n unstable__sideEffectsInRender,\r\n },\r\n serializeQueryArgs,\r\n context,\r\n })\r\n safeAssign(anyApi, { usePrefetch })\r\n safeAssign(context, { batch })\r\n\r\n return {\r\n injectEndpoint(endpointName, definition) {\r\n if (isQueryDefinition(definition)) {\r\n const {\r\n useQuery,\r\n useLazyQuery,\r\n useLazyQuerySubscription,\r\n useQueryState,\r\n useQuerySubscription,\r\n } = buildQueryHooks(endpointName)\r\n safeAssign(anyApi.endpoints[endpointName], {\r\n useQuery,\r\n useLazyQuery,\r\n useLazyQuerySubscription,\r\n useQueryState,\r\n useQuerySubscription,\r\n })\r\n ;(api as any)[`use${capitalize(endpointName)}Query`] = useQuery\r\n ;(api as any)[`useLazy${capitalize(endpointName)}Query`] =\r\n useLazyQuery\r\n } else if (isMutationDefinition(definition)) {\r\n const useMutation = buildMutationHook(endpointName)\r\n safeAssign(anyApi.endpoints[endpointName], {\r\n useMutation,\r\n })\r\n ;(api as any)[`use${capitalize(endpointName)}Mutation`] = useMutation\r\n }\r\n },\r\n }\r\n },\r\n})\r\n","import { coreModule, buildCreateApi } from '@reduxjs/toolkit/query'\r\nimport { reactHooksModule, reactHooksModuleName } from './module'\r\n\r\nexport * from '@reduxjs/toolkit/query'\r\nexport { ApiProvider } from './ApiProvider'\r\n\r\nconst createApi = /* @__PURE__ */ buildCreateApi(\r\n coreModule(),\r\n reactHooksModule()\r\n)\r\n\r\nexport type {\r\n TypedUseQueryHookResult,\r\n TypedUseQueryStateResult,\r\n TypedUseQuerySubscriptionResult,\r\n TypedUseMutationResult,\r\n} from './buildHooks'\r\nexport { createApi, reactHooksModule, reactHooksModuleName }\r\n","import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\nimport { IntlService } from \"@progress/kendo-react-intl\";\r\n\r\nconst DATE_FORMAT = \"M/d/yyyy hh:mm:ss a\";\r\nconst intl = new IntlService(\"en\");\r\n\r\n// Define a service using a base URL and expected endpoints\r\nexport const sunbrightApi = createApi({\r\n reducerPath: 'sunbrightApi',\r\n baseQuery: fetchBaseQuery({\r\n baseUrl: 'https://sunbrightvet.com/',\r\n prepareHeaders: (headers, { getState }) => {\r\n // By default, if we have a token in the store, let's use that for authenticated requests\r\n const state = getState();\r\n const token = (getState() as any).auth.user.token;\r\n if (token) {\r\n headers.set('authorization', `Bearer ${token}`)\r\n }\r\n return headers\r\n },\r\n }),\r\n\r\n tagTypes: ['SDS_Pets', 'SDS_ExamsOpen', 'SDS_ExamsClosed', 'SDS_Exam', 'SDS_Vaccines',\r\n 'SDS_Persons', 'SDS_Person', 'SDS_Agencies', 'SDS_Agency', 'SDS_FollowUps', 'SDS_FollowUp'],\r\n\r\n endpoints: (builder) => ({\r\n getUsers: builder.query({\r\n query: () => `users`,\r\n }),\r\n getExams: builder.query({\r\n query: () => `exams`,\r\n transformResponse: (response: any) => {\r\n response.forEach((e: any) => {\r\n e.updated = e.updated ? new Date(e.updated + \" UTC\") : null;\r\n e.submitted = e.submitted ? new Date(e.submitted + \" UTC\") : null;\r\n e.opened = e.opened ? new Date(e.opened + \" UTC\") : null;\r\n e.closed = e.closed ? new Date(e.closed + \" UTC\") : null;\r\n\r\n let appStart = e.appStart ? new Date(e.appStart + \" UTC\") : null;\r\n e.appStart = appStart;\r\n e.appEnd = e.appEnd ? new Date(e.appEnd + \" UTC\") : null;\r\n e.appDay = new Date((appStart == null) ? \"\" : e.appStart.toDateString());\r\n })\r\n return response;\r\n },\r\n providesTags: ['SDS_ExamsClosed']\r\n }),\r\n getExamsActive: builder.query({\r\n query: () => `exams?mode=1`,\r\n transformResponse: (response: any) => {\r\n response.forEach((e: any) => {\r\n e.updated = e.updated ? new Date(e.updated + \" UTC\") : null;\r\n e.submitted = e.submitted ? new Date(e.submitted + \" UTC\") : null;\r\n e.opened = e.opened ? new Date(e.opened + \" UTC\") : null;\r\n e.closed = e.closed ? new Date(e.closed + \" UTC\") : null;\r\n\r\n let appStart = e.appStart ? new Date(e.appStart + \" UTC\") : null;\r\n e.appStart = appStart;\r\n e.appEnd = e.appEnd ? new Date(e.appEnd + \" UTC\") : null;\r\n e.appDay = new Date((appStart == null) ? \"\" : e.appStart.toDateString());\r\n })\r\n return response;\r\n },\r\n providesTags: ['SDS_ExamsOpen']\r\n }),\r\n getExam: builder.query({\r\n query: (examID) => `exams/` + examID,\r\n transformResponse: (response: any) => {\r\n response.created = intl.parseDate(response.created ? response.created : \"\", DATE_FORMAT);\r\n response.submitted = intl.parseDate(response.submitted ? response.submitted : \"\", DATE_FORMAT);\r\n response.opened = intl.parseDate(response.opened ? response.opened : \"\", DATE_FORMAT);\r\n response.closed = intl.parseDate(response.closed ? response.closed : \"\", DATE_FORMAT);\r\n\r\n return response;\r\n },\r\n providesTags: ['SDS_Exam']\r\n }),\r\n\r\n getPets: builder.query({\r\n query: () => `pets`,\r\n transformResponse: (response: any) => {\r\n response.forEach((e: any) => {\r\n e.lastExam = intl.parseDate(e.lastExam ? e.lastExam : \"\", DATE_FORMAT);\r\n })\r\n return response;\r\n },\r\n providesTags: ['SDS_Pets']\r\n }),\r\n getPet: builder.query({\r\n query: (petID) => `pets/` + petID,\r\n transformResponse: (response: any) => {\r\n response.exams.forEach((e: any) => {\r\n e.submitted = intl.parseDate(e.submitted ? e.submitted : \"\", DATE_FORMAT);\r\n e.opened = intl.parseDate(e.opened ? e.opened : \"\", DATE_FORMAT);\r\n })\r\n return response;\r\n }\r\n }),\r\n getPetNames: builder.query({\r\n query: (clientID) => `pets?client=` + clientID,\r\n providesTags: ['SDS_Pets']\r\n }),\r\n\r\n getPersons: builder.query({\r\n query: () => `persons`,\r\n providesTags: ['SDS_Persons']\r\n }),\r\n getPerson: builder.query({\r\n query: (personID) => `persons/` + personID,\r\n providesTags: ['SDS_Person']\r\n }),\r\n getCwNames: builder.query({\r\n query: (agencyID) => `persons?id=` + (agencyID * -1),\r\n providesTags: ['SDS_Persons']\r\n }),\r\n getClientNames: builder.query({\r\n query: (cwID) => `persons?id=` + cwID,\r\n providesTags: ['SDS_Persons']\r\n }),\r\n getVetNames: builder.query({\r\n query: (cwID) => `persons?id=1`,\r\n providesTags: ['SDS_Persons']\r\n }),\r\n\r\n getAgencies: builder.query({\r\n query: () => `agencies`,\r\n providesTags: ['SDS_Agencies']\r\n }),\r\n getAgency: builder.query({\r\n query: (agencyID) => `agencies/` + agencyID,\r\n providesTags: ['SDS_Agency']\r\n }),\r\n getAgencyNames: builder.query({\r\n query: (personID) => `agencies?personID=` + personID,\r\n providesTags: ['SDS_Agencies']\r\n }),\r\n\r\n getServices: builder.query({\r\n query: () => `services`,\r\n }),\r\n\r\n getFindings: builder.query({\r\n query: () => `findings`,\r\n }),\r\n\r\n getVaccines: builder.query({\r\n query: (mode) => `vaccines?mode=` + mode,\r\n providesTags: ['SDS_Vaccines']\r\n }),\r\n\r\n getFollowUps: builder.query({\r\n query: () => `events`,\r\n transformResponse: (response: any) => {\r\n response.forEach((e: any) => {\r\n e.startTime = e.startTime ? new Date(e.startTime + \" UTC\") : null;\r\n })\r\n return response;\r\n },\r\n providesTags: ['SDS_FollowUps']\r\n }),\r\n\r\n getFollowUp: builder.query({\r\n query: (eventID) => `events/` + eventID,\r\n transformResponse: (response: any) => {\r\n response.startTime = intl.parseDate(response.startTime ? response.startTime : \"\", DATE_FORMAT);\r\n\r\n return response;\r\n },\r\n providesTags: ['SDS_FollowUp']\r\n }),\r\n\r\n getFollowUpExams: builder.query({\r\n query: (eventID) => `events/` + (eventID * (-1)),\r\n transformResponse: (response: any) => {\r\n return response;\r\n },\r\n providesTags: ['SDS_FollowUp']\r\n }),\r\n\r\n newExam: builder.mutation({\r\n query: (exam) => ({\r\n url: 'exams',\r\n method: 'POST',\r\n body: exam,\r\n }),\r\n invalidatesTags: ['SDS_Pets', 'SDS_ExamsOpen']\r\n }),\r\n\r\n editExam: builder.mutation({\r\n query: (exam) => ({\r\n url: 'exams',\r\n method: 'POST',\r\n body: exam,\r\n }),\r\n invalidatesTags: ['SDS_Exam', 'SDS_ExamsOpen', 'SDS_Pets']\r\n }),\r\n\r\n editExamStatus: builder.mutation({\r\n query: (exam) => ({\r\n url: 'exams',\r\n method: 'POST',\r\n body: exam,\r\n }),\r\n invalidatesTags: ['SDS_Exam', 'SDS_ExamsOpen', 'SDS_ExamsClosed', 'SDS_Pets']\r\n }),\r\n\r\n newVaccine: builder.mutation({\r\n query: (vaccine) => ({\r\n url: 'vaccines',\r\n method: 'POST',\r\n body: vaccine,\r\n }),\r\n invalidatesTags: ['SDS_Vaccines']\r\n }),\r\n\r\n uploadFile: builder.mutation({\r\n query: (formdata) => ({\r\n url: 'upload',\r\n method: 'POST',\r\n body: formdata,\r\n formData:true,\r\n }),\r\n invalidatesTags: ['SDS_Exam']\r\n }),\r\n\r\n newPerson: builder.mutation({\r\n query: (person) => ({\r\n url: 'persons',\r\n method: 'POST',\r\n body: person,\r\n }),\r\n invalidatesTags: ['SDS_Persons', 'SDS_Person']\r\n }),\r\n\r\n newAgency: builder.mutation({\r\n query: (agency) => ({\r\n url: 'agencies',\r\n method: 'POST',\r\n body: agency,\r\n }),\r\n invalidatesTags: ['SDS_Agencies', 'SDS_Agency']\r\n }),\r\n\r\n newFollowUp: builder.mutation({\r\n query: (followup) => ({\r\n url: 'events',\r\n method: 'POST',\r\n body: followup,\r\n }),\r\n invalidatesTags: ['SDS_FollowUps', 'SDS_FollowUp']\r\n }),\r\n }),\r\n})\r\n\r\n// Export hooks for usage in functional components, which are\r\n// auto-generated based on the defined endpoints\r\nexport const {\r\n useGetUsersQuery,\r\n useGetExamsQuery,\r\n useGetExamsActiveQuery,\r\n useGetExamQuery,\r\n useGetPetsQuery,\r\n useGetPetQuery,\r\n useLazyGetPetQuery,\r\n useGetPetNamesQuery,\r\n useLazyGetPetNamesQuery,\r\n useGetPersonsQuery,\r\n useGetPersonQuery,\r\n useGetVetNamesQuery,\r\n useLazyGetPersonQuery,\r\n useLazyGetCwNamesQuery,\r\n useLazyGetClientNamesQuery,\r\n useGetAgenciesQuery,\r\n useGetAgencyQuery,\r\n useGetAgencyNamesQuery,\r\n useGetServicesQuery,\r\n useGetFindingsQuery,\r\n useGetVaccinesQuery,\r\n useGetFollowUpsQuery,\r\n useGetFollowUpQuery,\r\n useGetFollowUpExamsQuery,\r\n\r\n useNewExamMutation,\r\n useEditExamMutation,\r\n useEditExamStatusMutation,\r\n useNewVaccineMutation,\r\n useUploadFileMutation,\r\n useNewPersonMutation,\r\n useNewAgencyMutation,\r\n useNewFollowUpMutation,\r\n\r\n} = sunbrightApi;\r\n","/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isBlank = function (value) { return value === null || value === undefined; };\n/**\n * @hidden\n */\nexport var isArray = function (value) { return Array.isArray(value); };\n/**\n * @hidden\n */\nexport var isFunction = function (value) { return typeof value === 'function'; };\n/**\n * @hidden\n */\nexport var isString = function (value) { return typeof value === 'string'; };\n/**\n * @hidden\n */\nexport var isTruthy = function (value) { return !!value; };\n/**\n * @hidden\n */\nexport var isNullOrEmptyString = function (value) { return isBlank(value) || value.trim().length === 0; };\n/**\n * @hidden\n */\nexport var isNotNullOrEmptyString = function (value) { return !isNullOrEmptyString(value); };\n/**\n * @hidden\n */\nexport var isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };\n/**\n * @hidden\n */\nexport var isDate = function (value) { return value && value.getTime; };\n","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport var isCompositeFilterDescriptor = function (source) {\n return isPresent(source.filters);\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/**\n * @hidden\n */\nexport var ifElse = function (predicate, right, left) { return function (value) { return predicate(value) ? right(value) : left(value); }; };\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport var compose = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return function (data) { return args.reduceRight(function (acc, curr) { return curr(acc); }, data); };\n};\n/**\n * @hidden\n */\nexport var constant = function (x) { return function () { return x; }; };\n/**\n * @hidden\n */\nexport var identity = function (x) { return x; };\n","import { __makeTemplateObject } from \"tslib\";\nimport { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport var wrapIf = function (predicate) { return function (str) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return predicate() ? \"\" + str[0] + args[0] + str[1] : args[0];\n}; };\n/**\n * @hidden\n */\nexport var toUTC = function (date) {\n return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n};\n/**\n * @hidden\n */\nexport var quote = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: \"'\" + value.replace(/'/g, \"''\") + \"'\",\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var encodeValue = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: \"\" + encodeURIComponent(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var toLower = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n field: wrapIf(function () { return ignoreCase; })(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"tolower(\", \")\"], [\"tolower(\", \")\"])), field),\n value: value,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var normalizeField = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: value,\n field: field.replace(/\\./g, \"/\"),\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var isStringValue = function (x) { return isString(x.value); };\n/**\n * @hidden\n */\nexport var isDateValue = function (x) { return isDate(x.value); };\n/**\n * @hidden\n */\nexport var serializeFilters = function (map, join) { return function (filter) {\n var brackets = wrapIf(function () { return filter.filters.length > 1; });\n return brackets(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"(\", \")\"], [\"(\",\n \")\"])), filter.filters\n .map(map)\n .join(join(filter)));\n}; };\nvar templateObject_1, templateObject_2;\n","import { __makeTemplateObject } from \"tslib\";\nimport { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\nvar serializeSort = function (orderby) {\n var str = orderby\n .filter(function (sort) { return isPresent(sort.dir); })\n .map(function (sort) {\n var order = sort.field.replace(/\\./g, \"/\");\n return sort.dir === \"desc\" ? order + \" desc\" : order;\n }).join(\",\");\n return str ? \"$orderby=\" + str : str;\n};\nvar emptyString = constant('');\nvar concat = function (a) { return function (b) { return a + b; }; };\nvar serializeKey = function (strings, val) { return ifElse(isPresent, concat(strings[0]), emptyString)(val); };\nvar rules = function (settings, state) { return function (key) { return ({\n \"filter\": serializeFilter(state.filter || {}, settings),\n \"skip\": serializeKey(templateObject_1 || (templateObject_1 = __makeTemplateObject([\"$skip=\", \"\"], [\"$skip=\", \"\"])), state.skip),\n \"sort\": serializeSort(state.sort || []),\n \"take\": serializeKey(templateObject_2 || (templateObject_2 = __makeTemplateObject([\"$top=\", \"\"], [\"$top=\", \"\"])), state.take)\n}[key]); }; };\n// tslint:enable:max-line-length\n/**\n * Converts a [State]({% slug api_kendo-data-query_state %}) into an OData v4 compatible string.\n *\n * @param {State} state - The state that will be serialized.\n * @param {ODataSettings} settings - The settings that are used during the serialization.\n * @returns {string} - The serialized state.\n */\nexport var toODataString = function (state, settings) {\n if (settings === void 0) { settings = {}; }\n return (Object.keys(state)\n .map(rules(settings, state))\n .filter(isNotNullOrEmptyString)\n .join('&'));\n};\nvar templateObject_1, templateObject_2;\n","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nvar operatorMap = function (key) { return ({\n \"!=\": \"neq\",\n \"<\": \"lt\",\n \"<=\": \"lte\",\n \"==\": \"eq\",\n \">\": \"gt\",\n \">=\": \"gte\",\n equal: \"eq\",\n equals: \"eq\",\n equalto: \"eq\",\n ge: \"gte\",\n greater: \"gt\",\n greaterthan: \"gt\",\n greaterthanequal: \"gte\",\n isempty: \"isempty\",\n isequalto: \"eq\",\n isgreaterthan: \"gt\",\n isgreaterthanorequalto: \"gte\",\n islessthan: \"lt\",\n islessthanorequalto: \"lte\",\n isnotempty: \"isnotempty\",\n isnotequalto: \"neq\",\n isnull: \"isnull\",\n le: \"lte\",\n less: \"lt\",\n lessthan: \"lt\",\n lessthanequal: \"lte\",\n ne: \"neq\",\n notequal: \"neq\",\n notequals: \"neq\",\n notequalto: \"neq\",\n notsubstringof: \"doesnotcontain\"\n}[key.toLowerCase()] || key); };\nvar normalizeOperator = function (descriptor) {\n if (descriptor.filters) {\n descriptor.filters = descriptor.filters.map(function (filter) {\n var result = Object.assign({}, filter);\n if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n result.operator = operatorMap(filter.operator);\n }\n if (isCompositeFilterDescriptor(filter)) {\n normalizeOperator(result);\n }\n return result;\n });\n }\n};\nvar normalizeDescriptor = function (descriptor) {\n if (!isCompositeFilterDescriptor(descriptor)) {\n return {\n filters: isArray(descriptor) ? descriptor : [descriptor],\n logic: \"and\"\n };\n }\n return Object.assign({}, descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Converts a [FilterDescriptor]({% slug api_kendo-data-query_filterdescriptor %}) into a [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.\n *\n * @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.\n * @returns {CompositeFilterDescriptor} - The normalized descriptor.\n */\n// tslint:enable:max-line-length\nexport var normalizeFilters = function (descriptor) {\n if (isPresent(descriptor)) {\n descriptor = normalizeDescriptor(descriptor);\n normalizeOperator(descriptor);\n }\n return descriptor;\n};\n","import { __assign } from \"tslib\";\nimport { isCompositeFilterDescriptor } from './filtering/filter-descriptor.interface';\nimport { compose, ifElse } from './funcs';\nimport { normalizeField, quote, toLower, isDateValue, isStringValue, serializeFilters, encodeValue, toUTC } from './filter-serialization.common';\nimport { normalizeFilters } from './filtering/filter.operators';\nvar formatDate = function (_a) {\n var utcDates = _a.utcDates;\n return function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: (!utcDates ? toUTC(value) : value).toISOString(),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n };\n};\nvar fnFormatter = function (_a) {\n var operator = _a.operator;\n return function (_a) {\n var field = _a.field, value = _a.value;\n return operator + \"(\" + field + \",\" + value + \")\";\n };\n};\nvar singleOperatorFormatter = function (_a) {\n var operator = _a.operator;\n return function (_a) {\n var field = _a.field, value = _a.value;\n return field + \" \" + operator + \" \" + value;\n };\n};\nvar stringFormat = function (formatter) { return compose(formatter, encodeValue, quote, toLower, normalizeField); };\nvar stringFnOperator = function (settings) { return stringFormat(fnFormatter(settings)); };\nvar stringOperator = function (settings) { return stringFormat(singleOperatorFormatter(settings)); };\nvar numericOperator = function (settings) { return compose(singleOperatorFormatter(settings), normalizeField); };\nvar dateOperator = function (settings) { return compose(singleOperatorFormatter(settings), normalizeField, formatDate(settings)); };\nvar ifDate = function (settings) { return ifElse(isDateValue, dateOperator(settings), numericOperator(settings)); };\nvar typedOperator = function (settings) { return ifElse(isStringValue, stringOperator(settings), ifDate(settings)); };\nvar appendEqual = function (str) { return str + \" eq -1\"; };\nvar nonValueExpression = function (formatter) { return compose(formatter, normalizeField); };\nvar filterOperators = function (operator, settings) { return ({\n contains: stringFnOperator(__assign(__assign({}, settings), { operator: \"contains\" })),\n doesnotcontain: compose(appendEqual, stringFnOperator(__assign(__assign({}, settings), { operator: \"indexof\" }))),\n endswith: stringFnOperator(__assign(__assign({}, settings), { operator: \"endswith\" })),\n eq: typedOperator(__assign(__assign({}, settings), { operator: \"eq\" })),\n gt: typedOperator(__assign(__assign({}, settings), { operator: \"gt\" })),\n gte: typedOperator(__assign(__assign({}, settings), { operator: \"ge\" })),\n isempty: nonValueExpression(function (_a) {\n var field = _a.field;\n return field + \" eq ''\";\n }),\n isnotempty: nonValueExpression(function (_a) {\n var field = _a.field;\n return field + \" ne ''\";\n }),\n isnotnull: nonValueExpression(function (_a) {\n var field = _a.field;\n return field + \" ne null\";\n }),\n isnull: nonValueExpression(function (_a) {\n var field = _a.field;\n return field + \" eq null\";\n }),\n lt: typedOperator(__assign(__assign({}, settings), { operator: \"lt\" })),\n lte: typedOperator(__assign(__assign({}, settings), { operator: \"le\" })),\n neq: typedOperator(__assign(__assign({}, settings), { operator: \"ne\" })),\n startswith: stringFnOperator(__assign(__assign({}, settings), { operator: \"startswith\" }))\n}[operator]); };\nvar join = function (x) { return \" \" + x.logic + \" \"; };\nvar serialize = function (settings) { return function (x) { return filterOperators(x.operator, settings)(x); }; };\nvar serializeAll = function (settings) { return serializeFilters(function (filter) { return ifElse(isCompositeFilterDescriptor, serializeAll(settings), serialize(settings))(filter); }, join); };\n/**\n * @hidden\n */\nexport var serializeFilter = function (filter, settings) {\n if (settings === void 0) { settings = {}; }\n if (filter.filters && filter.filters.length) {\n return \"$filter=\" + serializeAll(settings)(normalizeFilters(filter));\n }\n return \"\";\n};\n","import { isPresent } from './utils';\nvar getterCache = {};\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = function (obj) { return obj; };\n/**\n * @hidden\n */\nexport var getter = function (field, safe) {\n var key = field + safe;\n if (getterCache[key]) {\n return getterCache[key];\n }\n var fields = [];\n field.replace(FIELD_REGEX, function (_, index, indexAccessor, field) {\n fields.push(isPresent(index) ? index : (indexAccessor || field));\n return undefined;\n });\n getterCache[key] = function (obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n return result;\n };\n return getterCache[key];\n};\n","import { __assign, __spreadArrays } from \"tslib\";\nimport { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nvar toQueryString = function (values) { return values.reduce(function (acc, _a) {\n var key = _a[0], value = _a[1];\n return __spreadArrays(acc, [key + \"=\" + value]);\n}, []); };\nvar toObject = function (values) { return values.reduce(function (acc, _a) {\n var _b;\n var key = _a[0], value = _a[1];\n return (__assign(__assign({}, acc), (_b = {}, _b[key] = value, _b)));\n}, {}); };\nvar pairwise = function (key) { return function (value) { return [key, value]; }; };\nvar empty = function () { return null; };\nvar isNotEmptyArray = function (value) { return isPresent(value) && isArray(value) && value.length > 0; };\nvar has = function (accessor) { return function (value) { return isPresent(accessor(value)); }; };\nvar isNotEmpty = function (accessor) { return function (value) { return isNotEmptyArray(accessor(value)); }; };\nvar runOrEmpty = function (predicate, fn) { return ifElse(predicate, fn, empty); };\nvar calcPage = function (_a) {\n var skip = _a.skip, take = _a.take;\n return Math.floor((skip || 0) / take) + 1;\n};\nvar formatDescriptors = function (accessor, formatter) { return function (state) { return (accessor(state).map(formatter).join(\"~\")); }; };\nvar removeAfter = function (what) { return function (str) { return str.slice(0, str.indexOf(what)); }; };\nvar replace = function (patterns) {\n return compose.apply(void 0, patterns.map(function (_a) {\n var left = _a[0], right = _a[1];\n return function (s) { return s.replace(new RegExp(left, \"g\"), right); };\n }));\n};\nvar sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nvar removeAfterDot = removeAfter(\".\");\nvar directionFormatter = function (_a) {\n var field = _a.field, _b = _a.dir, dir = _b === void 0 ? \"asc\" : _b;\n return field + \"-\" + dir;\n};\nvar aggregateFormatter = function (_a) {\n var field = _a.field, aggregate = _a.aggregate;\n return field + \"-\" + aggregate;\n};\nvar take = getter(\"take\");\nvar aggregates = getter(\"aggregates\");\nvar skip = getter(\"skip\");\nvar group = getter(\"group\");\nvar sort = getter(\"sort\", true);\nvar formatSort = formatDescriptors(sort, directionFormatter);\nvar formatGroup = formatDescriptors(group, directionFormatter);\nvar formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nvar prefixDateValue = function (value) { return \"datetime'\" + value + \"'\"; };\nvar formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nvar formatDate = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: formatDateValue(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\nvar normalizeSort = function (state) { return Object.assign({}, state, {\n sort: (sort(state) || []).filter(function (_a) {\n var dir = _a.dir;\n return isNotNullOrEmptyString(dir);\n })\n}); };\nvar transformSkip = compose(pairwise('page'), calcPage);\nvar transformTake = compose(pairwise('pageSize'), take);\nvar transformGroup = compose(pairwise('group'), formatGroup);\nvar transformSort = compose(pairwise('sort'), formatSort);\nvar transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nvar serializePage = runOrEmpty(has(skip), transformSkip);\nvar serializePageSize = runOrEmpty(has(take), transformTake);\nvar serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nvar serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nvar serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nvar hasField = function (_a) {\n var field = _a.field;\n return isNotNullOrEmptyString(field);\n};\nvar filterFormatter = function (_a) {\n var field = _a.field, operator = _a.operator, value = _a.value;\n return field + \"~\" + operator + \"~\" + value;\n};\nvar dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nvar typedFormatter = function (encode) { return runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter)); };\nvar join = function (_a) {\n var logic = _a.logic;\n return \"~\" + logic + \"~\";\n};\nvar serialize = function (encode) { return serializeFilters(function (filter) { return ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter); }, join); };\nvar serializeFilter = function (_a, encode) {\n var filter = _a.filter;\n if (filter && filter.filters) {\n var filters = serialize(encode)(filter);\n if (filters.length) {\n return ['filter', filters];\n }\n }\n return null;\n};\nvar rules = function (state, encode) {\n if (encode === void 0) { encode = true; }\n return function (key) { return ({\n \"aggregates\": serializeAggregates(state),\n \"filter\": serializeFilter(state, encode),\n \"group\": serializeGroup(state),\n \"skip\": serializePage(state),\n \"sort\": serializeSort(state),\n \"take\": serializePageSize(state)\n }[key]); };\n};\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts\n * import {\n * toDataSourceRequestString,\n * translateDataSourceResultGroups,\n * translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n * private BASE_URL: string = '...';\n *\n * constructor(private http: Http) { }\n *\n * // Omitted for brevity...\n *\n * private fetch(state: DataSourceRequestState): Observable {\n * const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n * const hasGroups = state.group && state.group.length;\n *\n * return this.http\n * .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n * .map(response => response.json())\n * .map(({Data, Total, AggregateResults}) => // process the response\n * ({\n * //if there are groups convert them to compatible format\n * data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n * total: Total,\n * // convert the aggregates if such exists\n * aggregateResult: translateAggregateResults(AggregateResults)\n * })\n * );\n * }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n * return class StatefullGrid extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = { dataState: { skip: 0, take: 20 } };\n * }\n *\n * render() {\n * return (\n * \n * );\n * }\n *\n * componentDidMount() {\n * this.fetchData(this.state.dataState);\n * }\n *\n * dataStateChange = (changeEvent) => {\n * this.setState({ dataState: changeEvent.data });\n * this.fetchData(changeEvent.data);\n * }\n *\n * fetchData(dataState) {\n * const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n * const hasGroups = dataState.group && dataState.group.length;\n *\n * const base_url = 'api/Products';\n * const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n * fetch(`${base_url}?${queryStr}`, init)\n * .then(response => response.json())\n * .then(({ data, total }) => {\n * this.setState({\n * data: hasGroups ? translateDataSourceResultGroups(data) : data,\n * total,\n * dataState\n * });\n * });\n * }\n * }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport var toDataSourceRequestString = function (state) { return (toQueryString(Object.keys(state)\n .map(rules(state))\n .filter(isPresent)).join('&')); };\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport var toDataSourceRequest = function (state) { return (toObject(Object.keys(state)\n .map(rules(state, false))\n .filter(isPresent))); };\n","/**\n * Represents the list of supported [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) operators.\n * Allows restricting `FilterDescriptor.operator` definition to available values only.\n */\nexport var FilterOperator;\n(function (FilterOperator) {\n /**\n * The `contains` operator.\n */\n FilterOperator[\"Contains\"] = \"contains\";\n /**\n * The `doesnotcontain` operator.\n */\n FilterOperator[\"DoesNotContain\"] = \"doesnotcontain\";\n /**\n * The `doesnotendwith` operator.\n */\n FilterOperator[\"DoesNotEndWith\"] = \"doesnotendwith\";\n /**\n * The `doesnotstartwith` operator.\n */\n FilterOperator[\"DoesNotStartWith\"] = \"doesnotstartwith\";\n /**\n * The `endswith` operator.\n */\n FilterOperator[\"EndsWith\"] = \"endswith\";\n /**\n * The `eq` operator.\n */\n FilterOperator[\"EqualTo\"] = \"eq\";\n /**\n * The `gt` operator.\n */\n FilterOperator[\"GreaterThan\"] = \"gt\";\n /**\n * The `gte` operator.\n */\n FilterOperator[\"GreaterThanOrEqual\"] = \"gte\";\n /**\n * The `isempty` operator.\n */\n FilterOperator[\"IsEmpty\"] = \"isempty\";\n /**\n * The `isnotempty` operator.\n */\n FilterOperator[\"IsNotEmpty\"] = \"isnotempty\";\n /**\n * The `isnotnull` operator.\n */\n FilterOperator[\"IsNotNull\"] = \"isnotnull\";\n /**\n * The `isnull` operator.\n */\n FilterOperator[\"IsNull\"] = \"isnull\";\n /**\n * The `lt` operator.\n */\n FilterOperator[\"LessThan\"] = \"lt\";\n /**\n * The `lte` operator.\n */\n FilterOperator[\"LessThanOrEqual\"] = \"lte\";\n /**\n * The `neq` operator.\n */\n FilterOperator[\"NotEqualTo\"] = \"neq\";\n /**\n * The `startswith` operator.\n */\n FilterOperator[\"StartsWith\"] = \"startswith\";\n})(FilterOperator || (FilterOperator = {}));\n","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nvar set = function (field, target, value) {\n target[field] = value;\n return target;\n};\nvar toCamelCase = function (str) { return str.replace(/(^[A-Z])/g, function (_, g1) { return g1.toLowerCase(); }); };\nvar prop = function (fieldName) { return function (obj) {\n var value = obj[fieldName];\n if (isPresent(value)) {\n return value;\n }\n return obj[toCamelCase(fieldName)];\n}; };\nvar member = prop(\"Member\");\nvar aggregateMethodName = prop(\"AggregateMethodName\");\nvar value = prop(\"Value\");\nvar convert = function (mapper) { return function (values) { return Object.keys(values).reduce(mapper.bind(null, values), {}); }; };\nvar translateAggregate = convert(function (source, acc, field) { return set(field.toLowerCase(), acc, source[field]); });\nvar translateAggregates = convert(function (source, acc, field) { return set(field, acc, translateAggregate(source[field])); });\nvar valueOrDefault = function (value, defaultValue) { return isPresent(value) ? value : defaultValue; };\nvar normalizeGroup = function (group) { return ({\n aggregates: group.Aggregates || group.aggregates,\n field: group.Member || group.member || group.field,\n hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n items: group.Items || group.items,\n value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n}); };\nvar translateGroup = compose(function (_a) {\n var field = _a.field, hasSubgroups = _a.hasSubgroups, value = _a.value, aggregates = _a.aggregates, items = _a.items;\n return ({\n aggregates: translateAggregates(aggregates),\n field: field,\n items: hasSubgroups ? items.map(translateGroup) : items,\n value: value\n });\n}, normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport var translateDataSourceResultGroups = function (data) { return data.map(translateGroup); };\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport var translateAggregateResults = function (data) { return ((data || []).reduce(function (acc, x) { return set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))); }, {})); };\n","import { isPresent, isBlank } from '../utils';\nimport { getter } from '../accessor';\nvar compare = function (a, b) {\n if (isBlank(a)) {\n return a === b ? 0 : -1;\n }\n if (isBlank(b)) {\n return 1;\n }\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n return a > b ? 1 : (a < b ? -1 : 0);\n};\nvar compareDesc = function (a, b) { return compare(b, a); };\nvar descriptorAsFunc = function (descriptor) {\n if (typeof descriptor.compare === 'function') {\n return descriptor.compare;\n }\n var prop = getter(descriptor.field, true);\n return function (a, b) { return (descriptor.dir === 'asc' ? compare : compareDesc)(prop(a), prop(b)); };\n};\nvar initial = function (_a, _b) { return 0; };\n// tslint:disable:max-line-length\n/**\n * Converts the `SortDescriptors` into a [Comparer]({% slug api_kendo-data-query_comparer %}) function that can be used through `Array.sort`. If multiple descriptors are provided, sorting is applied in a right-to-left order.\n * @param {SortDescriptor[]} descriptors - The descriptors which will be converted.\n * @returns {Comparer} - The produced function.\n *\n * @example\n * ```ts\n * import { composeSortDescriptors } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const comparer = composeSortDescriptors([{ field: \"name\", dir: \"asc\" }]);\n * const result = data.sort(comparer);\n * // output: [{ name: \"Beef\" }, { name: \"Pepper\" }, { name: \"Pork\" }];\n * ```\n */\n// tslint:enable:max-line-length\nexport var composeSortDescriptors = function (descriptors) { return (descriptors\n .filter(function (x) { return isPresent(x.dir) || isPresent(x.compare); })\n .map(function (descriptor) { return descriptorAsFunc(descriptor); })\n .reduce(function (acc, curr) { return function (a, b) { return acc(a, b) || curr(a, b); }; }, initial)); };\n","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nvar valueToString = function (value) {\n value = isPresent(value) && value.getTime ? value.getTime() : value;\n return value + \"\";\n};\n/**\n * @hidden\n */\nexport var groupCombinator = function (field) {\n var prop = getter(field, true);\n var position = 0;\n return function (agg, value) {\n agg[field] = agg[field] || {};\n var groupValue = prop(value);\n var key = valueToString(groupValue);\n var values = agg[field][key] || { __position: position++, aggregates: {}, items: [], value: groupValue };\n values.items.push(value);\n agg[field][key] = values;\n return agg;\n };\n};\n/**\n * @hidden\n */\nexport var expandAggregates = function (result) {\n if (result === void 0) { result = {}; }\n Object.keys(result).forEach(function (field) {\n var aggregates = result[field];\n Object.keys(aggregates).forEach(function (aggregate) {\n aggregates[aggregate] = aggregates[aggregate].result();\n });\n });\n return result;\n};\nvar aggregatesFuncs = function (name) { return ({\n average: function () {\n var value = 0;\n var count = 0;\n return {\n calc: function (curr) {\n if (isNumeric(curr)) {\n value += curr;\n count++;\n }\n else {\n value = curr;\n }\n },\n result: function () { return isNumeric(value) ? value / count : value; }\n };\n },\n count: function () {\n var state = 0;\n return {\n calc: function () { return state++; },\n result: function () { return state; }\n };\n },\n max: function () {\n var state = Number.NEGATIVE_INFINITY;\n return {\n calc: function (value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state < value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function () { return state; }\n };\n },\n min: function () {\n var state = Number.POSITIVE_INFINITY;\n return {\n calc: function (value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state > value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function () { return state; }\n };\n },\n sum: function () {\n var state = 0;\n return {\n calc: function (value) {\n value = isPresent(value) ? value : 0;\n state += value;\n },\n result: function () { return state; }\n };\n }\n}[name]()); };\n/**\n * @hidden\n */\nexport var aggregatesCombinator = function (descriptors) {\n var functions = descriptors.map(function (descriptor) {\n var fieldAccessor = getter(descriptor.field, true);\n var aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n var aggregateAccessor = getter(aggregateName, true);\n return function (state, value) {\n var fieldAggregates = state[descriptor.field] || {};\n var aggregateFunction = aggregateAccessor(fieldAggregates)\n || aggregatesFuncs(aggregateName);\n aggregateFunction.calc(fieldAccessor(value));\n fieldAggregates[descriptor.aggregate] = aggregateFunction;\n state[descriptor.field] = fieldAggregates;\n return state;\n };\n });\n return function (state, value) { return functions.reduce(function (agg, calc) { return calc(agg, value); }, state); };\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport var concat = function (arr, value) {\n arr.push(value);\n return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport var map = function (transform) { return (function (reduce) { return (function (acc, curr, index) { return reduce(acc, transform(curr, index)); }); }); };\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport var filter = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n */\nexport var isTransformerResult = function (source) {\n return isPresent(source.__value);\n};\nvar reduced = function (x) {\n if (isTransformerResult(x)) {\n return x;\n }\n return {\n __value: x,\n reduced: true\n };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var take = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- > 0 ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var takeWhile = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport var skip = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- <= 0 ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport var exec = function (transform, initialValue, data) {\n var result = initialValue;\n for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n result = transform(result, data[idx], idx);\n if (isTransformerResult(result)) {\n result = result.__value;\n break;\n }\n }\n return result;\n};\n","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nvar identity = map(function (x) { return x; });\n// tslint:disable:max-line-length\n/**\n * Applies the specified [AggregateDescriptors]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [AggregateResult]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts\n * const data = [\n * { unitPrice: 23, unitsInStock: 21 },\n * { unitPrice: 10, unitsInStock: 12 },\n * { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * // \"unitPrice\": { \"sum\": 53 },\n * // \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [aggregateresult](slug:api_kendo-data-query_aggregateresult) configuration.\n */\n// tslint:enable:max-line-length\nexport var aggregateBy = function (data, descriptors, transformers) {\n if (descriptors === void 0) { descriptors = []; }\n if (transformers === void 0) { transformers = identity; }\n var initialValue = {};\n if (!descriptors.length) {\n return initialValue;\n }\n var result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n return expandAggregates(result);\n};\n","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank, isNumeric } from \"../utils\";\nvar logic = {\n \"or\": {\n concat: function (acc, fn) { return function (a) { return acc(a) || fn(a); }; },\n identity: function () { return false; }\n },\n \"and\": {\n concat: function (acc, fn) { return function (a) { return acc(a) && fn(a); }; },\n identity: function () { return true; }\n }\n};\nvar operatorsMap = {\n contains: function (a, b) { return (a || \"\").indexOf(b) >= 0; },\n doesnotcontain: function (a, b) { return (a || \"\").indexOf(b) === -1; },\n doesnotendwith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0; },\n doesnotstartwith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === -1; },\n endswith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0; },\n eq: function (a, b) { return a === b; },\n gt: function (a, b) { return a > b; },\n gte: function (a, b) { return a >= b; },\n isempty: function (a) { return a === ''; },\n isnotempty: function (a) { return a !== ''; },\n isnotnull: function (a) { return isPresent(a); },\n isnull: function (a) { return isBlank(a); },\n lt: function (a, b) { return a < b; },\n lte: function (a, b) { return a <= b; },\n neq: function (a, b) { return a != b; },\n startswith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === 0; }\n};\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar convertValue = function (value, ignoreCase) {\n if (value != null && isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n }\n else if (ignoreCase) {\n return value.toLowerCase();\n }\n }\n else if (value != null && isDate(value)) {\n return value.getTime();\n }\n return value;\n};\nvar typedGetter = function (prop, value, ignoreCase) {\n if (!isPresent(value)) {\n return prop;\n }\n var acc = prop;\n if (isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n }\n else {\n acc = function (a) {\n var x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return x.toLowerCase();\n }\n else {\n return isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n if (isDate(value)) {\n return function (a) {\n var x = acc(a);\n return isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n};\nvar transformFilter = function (_a) {\n var field = _a.field, ignoreCase = _a.ignoreCase, value = _a.value, operator = _a.operator;\n field = !isPresent(field) ? function (a) { return a; } : field;\n ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n var itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n value = convertValue(value, ignoreCase);\n var op = isFunction(operator) ? operator : operatorsMap[operator];\n return function (a) { return op(itemProp(a), value, ignoreCase); };\n};\n/**\n * @hidden\n */\nexport var transformCompositeFilter = function (filter) {\n var combiner = logic[filter.logic];\n return filter.filters\n .filter(isPresent)\n .map(function (x) { return isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x); })\n .reduce(combiner.concat, combiner.identity);\n};\n","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [Predicate]({% slug api_kendo-data-query_predicate %}) function for the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport var compileFilter = function (descriptor) {\n if (!descriptor || descriptor.filters.length === 0) {\n return function () { return true; };\n }\n return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n * logic: 'and',\n * filters: [\n * { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n * { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n * ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport var filterBy = function (data, descriptor) {\n if (!isPresent(descriptor) || (isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {\n return data;\n }\n return data.filter(compileFilter(normalizeFilters(descriptor)));\n};\n","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport var normalizeGroups = function (descriptors) {\n descriptors = isArray(descriptors) ? descriptors : [descriptors];\n return descriptors.map(function (x) { return Object.assign({ dir: \"asc\" }, x); });\n};\nvar identity = map(function (x) { return x; });\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array> | T[])} - The grouped data.\n *\n * @example\n * ```ts\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport var groupBy = function (data, descriptors, transformers, originalData) {\n if (descriptors === void 0) { descriptors = []; }\n if (transformers === void 0) { transformers = identity; }\n if (originalData === void 0) { originalData = data; }\n descriptors = normalizeGroups(descriptors);\n if (!descriptors.length) {\n return data;\n }\n var descriptor = descriptors[0];\n var initialValue = {};\n var view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n var result = [];\n Object.keys(view).forEach(function (field) {\n Object.keys(view[field]).forEach(function (value) {\n var group = view[field][value];\n var aggregateResult = {};\n var filteredData = originalData;\n if (isPresent(descriptor.aggregates)) {\n filteredData = filterBy(originalData, {\n field: descriptor.field,\n ignoreCase: false,\n operator: 'eq',\n value: group.value\n });\n aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n }\n result[group.__position] = {\n aggregates: aggregateResult,\n field: field,\n items: descriptors.length > 1 ?\n groupBy(group.items, descriptors.slice(1), identity, filteredData)\n : group.items,\n value: group.value\n };\n });\n });\n return result;\n};\n","import { __spreadArrays } from \"tslib\";\nimport { isPresent, isString } from './utils';\nimport { composeSortDescriptors } from './sorting/sort-array.operator';\nimport { groupBy, normalizeGroups } from './grouping/group.operators';\nimport { normalizeFilters } from './filtering/filter.operators';\nimport { compileFilter } from './filtering/filter-expression.factory';\nimport { exec, skip, take, filter, concat } from './transducers';\nimport { getter } from './accessor';\nimport { compose } from './funcs';\n/**\n * Orders the specified array according to the provided sort descriptors.\n *\n * @param {T[]} data - The data to be sorted.\n * @param {SortDescriptor[]} descriptors - The descriptors by which the data will be sorted.\n * @returns {T[]} - The sorted data.\n *\n * @example\n * ```ts\n * import { orderBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = orderBy(data, [{ field: \"name\", dir: \"asc\" }]);\n * ```\n */\nexport var orderBy = function (data, descriptors) {\n if (descriptors.some(function (x) { return isPresent(x.dir) || isPresent(x.compare); })) {\n data = data.slice(0);\n var comparer = composeSortDescriptors(descriptors);\n data.sort(comparer);\n }\n return data;\n};\nvar defaultComparer = function (a, b) { return a === b; };\nvar normalizeComparer = function (comparer) {\n if (isString(comparer)) {\n var accessor_1 = getter(comparer);\n comparer = function (a, b) { return accessor_1(a) === accessor_1(b); };\n }\n return comparer;\n};\nvar _distinct = function (data, comparer) {\n return data.filter(function (x, idx, xs) { return xs.findIndex(comparer.bind(null, x)) === idx; });\n};\n/**\n * Reduces the provided array so it contains only unique values.\n *\n * @param {T[]} data - The array that will be reduced.\n * @param {(Comparer | string)} comparer - An optional custom comparer function or the field name that will be used for comparison.\n * @returns {T[]} - The reduced data.\n *\n * @example\n * ```ts\n * import { distinct } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = distinct(data, \"subcategory\");\n *\n * // output:\n * // result => [\n * // { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * // { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" }\n * // ];\n * ```\n */\nexport var distinct = function (data, comparer) {\n if (comparer === void 0) { comparer = defaultComparer; }\n return _distinct(data, normalizeComparer(comparer));\n};\n/**\n * @hidden\n */\nexport var count = function (data, predicate) {\n var counter = 0;\n for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n if (predicate(data[idx])) {\n counter++;\n }\n }\n return counter;\n};\n/**\n * @hidden\n */\nexport var limit = function (data, predicate) {\n if (predicate) {\n return data.filter(predicate);\n }\n return data;\n};\n/**\n * Applies the specified operation descriptors to the data.\n *\n * @param {T[]} data - The data to be processed.\n * @param {State} state - The operation descriptors that will be applied to the data.\n * @returns {DataResult} - The processed data.\n *\n * @example\n * ```ts\n *\n * const result = process(data, {\n * skip: 10,\n * take: 20,\n * group: [{\n * field: 'category.categoryName',\n * aggregates: [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]\n * }],\n * sort: [{ field: 'productName', dir: 'desc' }],\n * filter: {\n * logic: \"or\",\n * filters: [\n * { field: \"discontinued\", operator: \"eq\", value: true },\n * { field: \"unitPrice\", operator: \"lt\", value: 22 }\n * ]\n * }\n * });\n *\n * ```\n */\nexport var process = function (data, state) {\n var skipCount = state.skip, takeCount = state.take, filterDescriptor = state.filter, sort = state.sort, group = state.group;\n var sortDescriptors = __spreadArrays(normalizeGroups(group || []), sort || []);\n if (sortDescriptors.length) {\n data = orderBy(data, sortDescriptors);\n }\n var hasFilters = isPresent(filterDescriptor) && filter.length;\n var hasGroups = isPresent(group) && group.length;\n if (!hasFilters && !hasGroups) {\n return {\n data: takeCount ? data.slice(skipCount, skipCount + takeCount) : data,\n total: data.length\n };\n }\n var total;\n var transformers = [];\n var predicate;\n if (hasFilters) {\n predicate = compileFilter(normalizeFilters(filterDescriptor));\n total = count(data, predicate);\n transformers.push(filter(predicate));\n }\n else {\n total = data.length;\n }\n if (isPresent(skipCount) && isPresent(takeCount)) {\n transformers.push(skip(skipCount));\n transformers.push(take(takeCount));\n }\n if (transformers.length) {\n var transform = compose.apply(void 0, transformers);\n var result = hasGroups ?\n groupBy(data, group, transform, limit(data, predicate)) :\n exec(transform(concat), [], data);\n return { data: result, total: total };\n }\n return {\n data: hasGroups ? groupBy(data, group) : data,\n total: total\n };\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\n/**\n * A function that adds and subtracts days from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of days to add and subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDays(new Date(2016, 0, 1), 5); // 2016-1-6\n * addDays(new Date(2016, 0, 1), -5); // 2015-12-26\n * ```\n */\nexport var addDays = function (date, offset) {\n var newDate = cloneDate(date);\n newDate.setDate(newDate.getDate() + offset);\n return adjustDST(newDate, date.getHours());\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\nimport { lastDayOfMonth } from './last-day-of-month';\nvar MONTHS_LENGTH = 12;\nvar normalize = function (date, expectedMonth) { return (date.getMonth() !== expectedMonth ? lastDayOfMonth(addMonths(date, -1)) : date //tslint:disable-line:no-use-before-declare\n); };\n/**\n * A function that adds and subtracts months from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of months to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addMonths(new Date(2016, 5, 1), 5); // 2016-11-1\n * addMonths(new Date(2016, 5, 1), -5); // 2015-1-1\n * ```\n */\nexport var addMonths = function (date, offset) {\n var newDate = cloneDate(date);\n var diff = (newDate.getMonth() + offset) % MONTHS_LENGTH;\n var expectedMonth = (MONTHS_LENGTH + diff) % MONTHS_LENGTH;\n newDate.setMonth(newDate.getMonth() + offset);\n return normalize(adjustDST(newDate, date.getHours()), expectedMonth);\n};\n","import { cloneDate } from './clone-date';\n/**\n * @hidden\n */\nexport var adjustDST = function (date, hour) {\n var newDate = cloneDate(date);\n if (hour === 0 && newDate.getHours() === 23) {\n newDate.setHours(newDate.getHours() + 2);\n }\n return newDate;\n};\n","/**\n * A function that clones the passed date. The parameter could be `null`.\n *\n * @param date - The initial date value.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * cloneDate(new Date(2016, 0, 1)); // returns new Date(2016, 0, 1);\n * cloneDate(null); // returns null\n * ```\n */\nexport var cloneDate = function (date) { return date ? new Date(date.getTime()) : null; };\n","import { adjustDST } from './adjust-dst';\n/**\n * A function which returns a new `Date` instance.\n *\n * @param year - The year value.\n * @param month - The month value.\n * @param day - The day value.\n * @param hours - The hours value.\n * @param minutes - The minutes value.\n * @param seconds - The seconds value.\n * @param milliseconds - milliseconds value.\n * @returns The date instance.\n *\n * @example\n * ```ts-no-run\n * createDate(2016, 0, 15); // 2016-01-15 00:00:00\n * createDate(2016, 0, 15, 22, 22, 20); // 2016-01-15 22:22:20\n * ```\n */\nexport var createDate = function (year, month, day, hours, minutes, seconds, milliseconds) {\n if (hours === void 0) { hours = 0; }\n if (minutes === void 0) { minutes = 0; }\n if (seconds === void 0) { seconds = 0; }\n if (milliseconds === void 0) { milliseconds = 0; }\n var date = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n if (year > -1 && year < 100) {\n date.setFullYear(date.getFullYear() - 1900);\n }\n return adjustDST(date, hours);\n};\n","import { Direction } from \"./direction.enum\";\nimport { adjustDST } from \"./adjust-dst\";\nimport { cloneDate } from './clone-date';\n/**\n * @hidden\n *\n * A function which returns the next or previous date for a specific week day. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @param direction - The `Direction` enum specifying the calculation direction.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Forward); // 2016-01-06, Wednesday\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Backward); // 2015-12-30, Wednesday\n * ```\n */\nexport var dayOfWeek = function (date, weekDay, direction) {\n if (direction === void 0) { direction = Direction.Forward; }\n var newDate = cloneDate(date);\n var newDay = ((weekDay - newDate.getDay()) + (7 * direction)) % 7;\n newDate.setDate(newDate.getDate() + newDay);\n return adjustDST(newDate, date.getHours());\n};\n","// tslint:disable:max-line-length\n/**\n * An enumeration which represents the horizontal direction. The `Forward` option moves forward. The `Backward` option moves backward.\n */\nexport var Direction;\n(function (Direction) {\n /**\n * The `Forward` value with an underlying `1` number value.\n */\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n /**\n * The `Backward` value with an underlying `-1` (minus one) number value.\n */\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n// tslint:enable:max-line-length\n","import { createDate } from './create-date';\n/**\n * A function which returns the first date of the month.\n *\n * @param date - The initial date.\n * @returns - The first date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * firstDayOfMonth(new Date(2016, 0, 15)); // 2016-01-01\n * ```\n */\nexport var firstDayOfMonth = function (date) {\n return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the passed date with a midnight time portion.\n *\n * @param date - The initial date.\n * @returns - The date with a midnight time portion.\n *\n * @example\n * ```ts-no-run\n * getDate(new Date(2016, 0, 15, 14, 30, 30)); // 2016-01-15 00:00:00\n * ```\n */\nexport var getDate = function (date) {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n};\n","import { getDate } from './get-date';\nimport { isEqual } from './is-equal';\n/**\n * A function that compares the date portions of 2 dates.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqualDate(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // true\n * isEqualDate(new Date(2016, 0, 1, 10), new Date(2016, 0, 2, 10)); // false\n * ```\n */\nexport var isEqualDate = function (candidate, expected) {\n if (!candidate && !expected) {\n return true;\n }\n return candidate && expected && isEqual(getDate(candidate), getDate(expected));\n};\n","/**\n * A function that compares two dates. The comparison also includes the time portion.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value indicating whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 1)); // true\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 2)); // false\n * isEqual(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // false\n * ```\n */\nexport var isEqual = function (candidate, expected) {\n if (!candidate && !expected) {\n return true;\n }\n return candidate && expected && candidate.getTime() === expected.getTime();\n};\n","import { addDays } from './add-days';\nimport { createDate } from './create-date';\n/**\n * A function which returns the last date of the month.\n *\n * @param date - The initial date.\n * @returns - The last date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * lastDayOfMonth(new Date(2016, 0, 15)); // 2016-01-31\n * ```\n */\nexport var lastDayOfMonth = function (date) {\n var newDate = createDate(date.getFullYear(), date.getMonth() + 1, 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return addDays(newDate, -1);\n};\n","var Class = function Class () {};\n\nexport default Class;\n","var namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nvar browser = support.browser;\n\nvar matchNamedColor = function (color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = function (color) { return regexp.exec(color); };\n\n return regexp.exec(color);\n};\n\nvar BaseColor = (function (Class) {\n function BaseColor() { Class.call(this); }\n\n if ( Class ) BaseColor.__proto__ = Class;\n BaseColor.prototype = Object.create( Class && Class.prototype );\n BaseColor.prototype.constructor = BaseColor;\n BaseColor.prototype.toHSV = function toHSV () { return this; };\n\n BaseColor.prototype.toRGB = function toRGB () { return this; };\n\n BaseColor.prototype.toHex = function toHex (options) { return this.toBytes().toHex(options); };\n\n BaseColor.prototype.toBytes = function toBytes () { return this; };\n\n BaseColor.prototype.toCss = function toCss (options) { return \"#\" + this.toHex(options); };\n\n BaseColor.prototype.toCssRgba = function toCssRgba () {\n var rgb = this.toBytes();\n return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n };\n\n BaseColor.prototype.toDisplay = function toDisplay () {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n };\n\n BaseColor.prototype.equals = function equals (c) {\n return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n };\n\n BaseColor.prototype.diff = function diff (other) {\n if (other === null) {\n return NaN;\n }\n\n var c1 = this.toBytes();\n var c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n };\n\n BaseColor.prototype.clone = function clone () {\n var c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n };\n\n return BaseColor;\n}(Class));\n\nvar RGB = (function (BaseColor) {\n function RGB(r, g, b, a) {\n BaseColor.call(this);\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n if ( BaseColor ) RGB.__proto__ = BaseColor;\n RGB.prototype = Object.create( BaseColor && BaseColor.prototype );\n RGB.prototype.constructor = RGB;\n\n RGB.prototype.toHSV = function toHSV () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var v = max;\n var h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n };\n\n RGB.prototype.toHSL = function toHSL () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n };\n\n RGB.prototype.toBytes = function toBytes () {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n };\n\n return RGB;\n}(BaseColor));\n\nvar Bytes = (function (RGB) {\n function Bytes(r, g, b, a) {\n RGB.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n }\n\n if ( RGB ) Bytes.__proto__ = RGB;\n Bytes.prototype = Object.create( RGB && RGB.prototype );\n Bytes.prototype.constructor = Bytes;\n\n Bytes.prototype.toRGB = function toRGB () {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n };\n\n Bytes.prototype.toHSV = function toHSV () {\n return this.toRGB().toHSV();\n };\n\n Bytes.prototype.toHSL = function toHSL () {\n return this.toRGB().toHSL();\n };\n\n Bytes.prototype.toHex = function toHex (options) {\n var value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n };\n\n Bytes.prototype.toBytes = function toBytes () {\n return this;\n };\n\n return Bytes;\n}(RGB));\n\nfunction hex(n, width, pad) {\n if ( pad === void 0 ) pad = \"0\";\n\n var result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n}\n\nvar HSV = (function (BaseColor) {\n function HSV(h, s, v, a) {\n BaseColor.call(this);\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n\n if ( BaseColor ) HSV.__proto__ = BaseColor;\n HSV.prototype = Object.create( BaseColor && BaseColor.prototype );\n HSV.prototype.constructor = HSV;\n\n HSV.prototype.toRGB = function toRGB () {\n var ref = this;\n var h = ref.h;\n var s = ref.s;\n var v = ref.v;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n };\n\n HSV.prototype.toHSL = function toHSL () {\n return this.toRGB().toHSL();\n };\n\n HSV.prototype.toBytes = function toBytes () {\n return this.toRGB().toBytes();\n };\n\n return HSV;\n}(BaseColor));\n\nvar HSL = (function (BaseColor) {\n function HSL(h, s, l, a) {\n BaseColor.call(this);\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n\n if ( BaseColor ) HSL.__proto__ = BaseColor;\n HSL.prototype = Object.create( BaseColor && BaseColor.prototype );\n HSL.prototype.constructor = HSL;\n\n HSL.prototype.toRGB = function toRGB () {\n var h = this.h / 360;\n var s = this.s / 100;\n var l = this.l / 100;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n };\n\n HSL.prototype.toHSV = function toHSV () {\n return this.toRGB().toHSV();\n };\n\n HSL.prototype.toBytes = function toBytes () {\n return this.toRGB().toBytes();\n };\n\n return HSL;\n}(BaseColor));\n\nfunction hue2rgb(p, q, s) {\n var t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n}\n\nfunction alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n var m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n var color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n}\n","function matchUserAgent(userAgent) {\n var browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+))/i\n };\n\n var browser = {};\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n var match = userAgent.match(browserRxs[agent]);\n if (match) {\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n}\n\nvar browser = null;\n\nvar support = {\n get browser() {\n if (typeof window === 'undefined' || browser) {\n return browser;\n }\n\n browser = matchUserAgent(window.navigator.userAgent);\n return browser;\n }\n};\n\nexport default support;\n","import { Class } from '../common';\n\nvar HasObservers = (function (Class) {\n function HasObservers () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) HasObservers.__proto__ = Class;\n HasObservers.prototype = Object.create( Class && Class.prototype );\n HasObservers.prototype.constructor = HasObservers;\n\n HasObservers.prototype.observers = function observers () {\n this._observers = this._observers || [];\n return this._observers;\n };\n\n HasObservers.prototype.addObserver = function addObserver (element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n };\n\n HasObservers.prototype.removeObserver = function removeObserver (element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n };\n\n HasObservers.prototype.trigger = function trigger (methodName, event) {\n var observers = this._observers;\n\n if (observers && !this._suspended) {\n for (var idx = 0; idx < observers.length; idx++) {\n var observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n };\n\n HasObservers.prototype.optionsChange = function optionsChange (e) {\n if ( e === void 0 ) e = {};\n\n e.element = this;\n this.trigger(\"optionsChange\", e);\n };\n\n HasObservers.prototype.geometryChange = function geometryChange () {\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n HasObservers.prototype.suspend = function suspend () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n };\n\n HasObservers.prototype.resume = function resume () {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n };\n\n HasObservers.prototype._observerField = function _observerField (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n };\n\n return HasObservers;\n}(Class));\n\nexport default HasObservers;\n\n","import { Class } from '../common';\nimport HasObservers from './has-observers';\nimport { defined } from '../util';\n\n\nvar toString = {}.toString;\n\nvar OptionsStore = (function (HasObservers) {\n function OptionsStore(options, prefix) {\n var this$1 = this;\n if ( prefix === void 0 ) prefix = \"\";\n\n HasObservers.call(this);\n\n this.prefix = prefix;\n\n for (var field in options) {\n var member = options[field];\n member = this$1._wrap(member, field);\n this$1[field] = member;\n }\n }\n\n if ( HasObservers ) OptionsStore.__proto__ = HasObservers;\n OptionsStore.prototype = Object.create( HasObservers && HasObservers.prototype );\n OptionsStore.prototype.constructor = OptionsStore;\n\n OptionsStore.prototype.get = function get (field) {\n var parts = field.split(\".\");\n var result = this;\n\n while (parts.length && result) {\n var part = parts.shift();\n result = result[part];\n }\n\n return result;\n };\n\n OptionsStore.prototype.set = function set (field, value) {\n var current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n };\n\n OptionsStore.prototype._set = function _set (field, value) {\n var this$1 = this;\n\n var composite = field.indexOf(\".\") >= 0;\n var parentObj = this;\n var fieldName = field;\n\n if (composite) {\n var parts = fieldName.split(\".\");\n var prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n var obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n };\n\n OptionsStore.prototype._clear = function _clear (field) {\n var current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n };\n\n OptionsStore.prototype._wrap = function _wrap (object, field) {\n var type = toString.call(object);\n var wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n };\n\n return OptionsStore;\n}(HasObservers));\n\nexport default OptionsStore;\n","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n}","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n var s1x = p1.x - p0.x;\n var s2x = p3.x - p2.x;\n var s1y = p1.y - p0.y;\n var s2y = p3.y - p2.y;\n var nx = p0.x - p2.x;\n var ny = p0.y - p2.y;\n var d = s1x * s2y - s2x * s1y;\n var s = (s1x * ny - s1y * nx) / d;\n var t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n}","import HasObservers from '../core/has-observers';\nimport { deg, rad, round } from '../util';\nimport withAccessors from '../mixins/with-accessors';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\n\nvar MAX_INTERVAL = 45;\nvar pow = Math.pow;\nvar accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\nvar Arc = (function (superclass) {\n function Arc(center, options) {\n if ( center === void 0 ) center = new Point();\n if ( options === void 0 ) options = {};\n\n superclass.call(this);\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n if ( superclass ) Arc.__proto__ = superclass;\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n\n Arc.prototype.clone = function clone () {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n };\n\n Arc.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Arc.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Arc.prototype.pointAt = function pointAt (angle) {\n var center = this.center;\n var radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n };\n\n Arc.prototype.curvePoints = function curvePoints () {\n var this$1 = this;\n\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [ this.pointAt(startAngle) ];\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n var subIntervalAngle = intervalAngle / subIntervalsCount;\n var currentAngle = startAngle;\n var transformation;\n if (this.xRotation) {\n transformation = transform().rotate(this.xRotation, this.center);\n }\n\n for (var i = 1; i <= subIntervalsCount; i++) {\n var nextAngle = currentAngle + dir * subIntervalAngle;\n var points = this$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n };\n\n Arc.prototype.bbox = function bbox (matrix) {\n var this$1 = this;\n\n var interval = this._arcInterval();\n var startAngle = interval.startAngle;\n var endAngle = interval.endAngle;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n var extremeX = deg(extremeAngles.x);\n var extremeY = deg(extremeAngles.y);\n var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n var currentAngleX = bboxStartAngle(extremeX, startAngle);\n var currentAngleY = bboxStartAngle(extremeY, startAngle);\n var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n var minPoint = Point.min(currentPoint, endPoint);\n var maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n var currentPointX = (void 0);\n if (currentAngleX < endAngle) {\n currentPointX = this$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n var currentPointY = (void 0);\n if (currentAngleY < endAngle) {\n currentPointY = this$1.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Arc.prototype._arcInterval = function _arcInterval () {\n var ref = this;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var anticlockwise = ref.anticlockwise;\n\n if (anticlockwise) {\n var oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n };\n\n Arc.prototype._intervalCurvePoints = function _intervalCurvePoints (startAngle, endAngle, transformation) {\n var p1 = this.pointAt(startAngle);\n var p2 = this.pointAt(endAngle);\n var p1Derivative = this._derivativeAt(startAngle);\n var p2Derivative = this._derivativeAt(endAngle);\n var t = (rad(endAngle) - rad(startAngle)) / 3;\n var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n };\n\n Arc.prototype._derivativeAt = function _derivativeAt (angle) {\n var radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n };\n\n Arc.prototype.containsPoint = function containsPoint (point) {\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var ref = this;\n var center = ref.center;\n var radiusX = ref.radiusX;\n var radiusY = ref.radiusY;\n var distance = center.distanceTo(point);\n var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n var pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n var containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point, width) {\n var interval = this._arcInterval();\n var center = this.center;\n var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n };\n\n Arc.fromPoints = function fromPoints (start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n var arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n };\n\n return Arc;\n}(withAccessors(HasObservers, accessors)));\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n var cos = round((x - cx) / rx, 3);\n var sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n var x1 = parameters.x1;\n var y1 = parameters.y1;\n var x2 = parameters.x2;\n var y2 = parameters.y2;\n var rx = parameters.rx;\n var ry = parameters.ry;\n var largeArc = parameters.largeArc;\n var swipe = parameters.swipe;\n var rotation = parameters.rotation; if ( rotation === void 0 ) rotation = 0;\n\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n var sign = largeArc !== swipe ? 1 : -1;\n\n var xt2 = Math.pow(xT, 2);\n var yt2 = Math.pow(yT, 2);\n var rx2 = Math.pow(rx, 2);\n var ry2 = Math.pow(ry, 2);\n\n var delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n var cxT = constT * (rx * yT) / ry;\n var cyT = - constT * (ry * xT) / rx;\n\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n var uX = (xT - cxT) / rx;\n var uY = (yT - cyT) / ry;\n var vX = -(xT + cxT) / rx;\n var vY = -(yT + cyT) / ry;\n\n var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n var endAngle = startAngle + angle;\n var signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n}\n\nfunction bboxStartAngle(angle, start) {\n var startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n}\n\nexport default Arc;\n","var PRECISION = 10;\n\nexport { PRECISION };","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance) {\n if ( tolerance === void 0 ) tolerance = PRECISION;\n\n return round(Math.abs(a - b), tolerance) === 0;\n}","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n var extremeX = 0;\n var extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n}","import { Class } from '../common';\nimport defined from '../util/defined';\nimport rad from '../util/rad';\nimport round from '../util/round';\n\nvar Matrix = (function (Class) {\n function Matrix(a, b, c, d, e, f) {\n if ( a === void 0 ) a = 0;\n if ( b === void 0 ) b = 0;\n if ( c === void 0 ) c = 0;\n if ( d === void 0 ) d = 0;\n if ( e === void 0 ) e = 0;\n if ( f === void 0 ) f = 0;\n\n Class.call(this);\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n if ( Class ) Matrix.__proto__ = Class;\n Matrix.prototype = Object.create( Class && Class.prototype );\n Matrix.prototype.constructor = Matrix;\n\n Matrix.prototype.multiplyCopy = function multiplyCopy (matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n };\n\n Matrix.prototype.invert = function invert () {\n var ref = this;\n var a = ref.a;\n var b = ref.b;\n var d = ref.c;\n var e = ref.d;\n var g = ref.e;\n var h = ref.f;\n var det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n };\n\n Matrix.prototype.clone = function clone () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n\n Matrix.prototype.equals = function equals (other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n };\n\n Matrix.prototype.round = function round$1 (precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n };\n\n Matrix.prototype.toArray = function toArray (precision) {\n var result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (var i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n };\n\n Matrix.prototype.toString = function toString (precision, separator) {\n if ( separator === void 0 ) separator = \",\";\n\n return this.toArray(precision).join(separator);\n };\n\n Matrix.translate = function translate (x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n };\n\n Matrix.unit = function unit () {\n return new Matrix(1, 0, 0, 1, 0, 0);\n };\n\n Matrix.rotate = function rotate (angle, x, y) {\n var matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n };\n\n Matrix.scale = function scale (scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n };\n\n return Matrix;\n}(Class));\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;\n","import withAccessors from '../mixins/with-accessors';\nimport HasObservers from '../core/has-observers';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\n\nvar Point = (function (superclass) {\n function Point(x, y) {\n superclass.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n if ( superclass ) Point.__proto__ = superclass;\n Point.prototype = Object.create( superclass && superclass.prototype );\n Point.prototype.constructor = Point;\n\n var staticAccessors = { ZERO: { configurable: true } };\n\n Point.prototype.equals = function equals (other) {\n return other && other.x === this.x && other.y === this.y;\n };\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n };\n\n Point.prototype.translate = function translate (x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.translateWith = function translateWith (point) {\n return this.translate(point.x, point.y);\n };\n\n Point.prototype.move = function move (x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n };\n\n Point.prototype.scale = function scale (scaleX, scaleY) {\n if ( scaleY === void 0 ) scaleY = scaleX;\n\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.scaleCopy = function scaleCopy (scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n };\n\n Point.prototype.transform = function transform (transformation) {\n var matrix = toMatrix(transformation);\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.transformCopy = function transformCopy (transformation) {\n var point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.prototype.round = function round$1 (digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var x = doRound ? round(this.x, digits) : this.x;\n var y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n };\n\n Point.prototype.toString = function toString (digits, separator) {\n if ( separator === void 0 ) separator = \" \";\n\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n };\n\n Point.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n };\n\n Point.min = function min () {\n var arguments$1 = arguments;\n\n var minX = MAX_NUM;\n var minY = MAX_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n };\n\n Point.max = function max () {\n var arguments$1 = arguments;\n\n var maxX = MIN_NUM;\n var maxY = MIN_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n };\n\n Point.minPoint = function minPoint () {\n return new Point(MIN_NUM, MIN_NUM);\n };\n\n Point.maxPoint = function maxPoint () {\n return new Point(MAX_NUM, MAX_NUM);\n };\n\n staticAccessors.ZERO.get = function () {\n return new Point(0, 0);\n };\n\n Object.defineProperties( Point, staticAccessors );\n\n return Point;\n}(withAccessors(HasObservers, [ \"x\", \"y\" ])));\n\nexport default Point;\n","import HasObservers from '../core/has-observers';\nimport Point from './point';\nimport Size from './size';\n\nvar Rect = (function (HasObservers) {\n function Rect(origin, size, cornerRadius) {\n if ( origin === void 0 ) origin = new Point();\n if ( size === void 0 ) size = new Size();\n if ( cornerRadius === void 0 ) cornerRadius = 0;\n\n HasObservers.call(this);\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n if ( HasObservers ) Rect.__proto__ = HasObservers;\n Rect.prototype = Object.create( HasObservers && HasObservers.prototype );\n Rect.prototype.constructor = Rect;\n\n Rect.prototype.clone = function clone () {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n };\n\n Rect.prototype.equals = function equals (other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n };\n\n Rect.prototype.setOrigin = function setOrigin (value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getOrigin = function getOrigin () {\n return this.origin;\n };\n\n Rect.prototype.setCornerRadius = function setCornerRadius (radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getCornerRadius = function getCornerRadius () {\n return this.cornerRadius;\n };\n\n Rect.prototype.setSize = function setSize (value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getSize = function getSize () {\n return this.size;\n };\n\n Rect.prototype.width = function width () {\n return this.size.width;\n };\n\n Rect.prototype.height = function height () {\n return this.size.height;\n };\n\n Rect.prototype.topLeft = function topLeft () {\n return this.origin.clone();\n };\n\n Rect.prototype.bottomRight = function bottomRight () {\n return this.origin.clone().translate(this.width(), this.height());\n };\n\n Rect.prototype.topRight = function topRight () {\n return this.origin.clone().translate(this.width(), 0);\n };\n\n Rect.prototype.bottomLeft = function bottomLeft () {\n return this.origin.clone().translate(0, this.height());\n };\n\n Rect.prototype.center = function center () {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n };\n\n Rect.prototype.bbox = function bbox (matrix) {\n var tl = this.topLeft().transformCopy(matrix);\n var tr = this.topRight().transformCopy(matrix);\n var br = this.bottomRight().transformCopy(matrix);\n var bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n };\n\n Rect.prototype.transformCopy = function transformCopy (m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n };\n\n Rect.prototype.expand = function expand (x, y) {\n if ( y === void 0 ) y = x;\n\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n };\n\n Rect.prototype.expandCopy = function expandCopy (x, y) {\n return this.clone().expand(x, y);\n };\n\n Rect.prototype.containsPoint = function containsPoint (point) {\n var origin = this.origin;\n var bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point, width) {\n var rectOuter = this.expandCopy(width, width);\n var rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n };\n\n Rect.fromPoints = function fromPoints () {\n var topLeft = Point.min.apply(null, arguments);\n var bottomRight = Point.max.apply(null, arguments);\n var size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n };\n\n Rect.union = function union (a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n };\n\n Rect.intersect = function intersect (a, b) {\n var rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n var rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n };\n\n return Rect;\n}(HasObservers));\n\nexport default Rect;\n","import HasObservers from '../core/has-observers';\nimport withAccessors from '../mixins/with-accessors';\nimport { defined, round } from '../util';\n\n\nvar Size = (function (superclass) {\n function Size(width, height) {\n superclass.call(this);\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n if ( superclass ) Size.__proto__ = superclass;\n Size.prototype = Object.create( superclass && superclass.prototype );\n Size.prototype.constructor = Size;\n\n var staticAccessors = { ZERO: { configurable: true } };\n\n Size.prototype.equals = function equals (other) {\n return other && other.width === this.width && other.height === this.height;\n };\n\n Size.prototype.clone = function clone () {\n return new Size(this.width, this.height);\n };\n\n Size.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var width = doRound ? round(this.width, digits) : this.width;\n var height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n };\n\n Size.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n };\n\n staticAccessors.ZERO.get = function () {\n return new Size(0, 0);\n };\n\n Object.defineProperties( Size, staticAccessors );\n\n return Size;\n}(withAccessors(HasObservers, [ \"width\", \"height\" ])));\n\nexport default Size;\n","export default function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n}","import HasObservers from '../core/has-observers';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nvar Transformation = (function (HasObservers) {\n function Transformation(matrix) {\n if ( matrix === void 0 ) matrix = Matrix.unit();\n\n HasObservers.call(this);\n\n this._matrix = matrix;\n }\n\n if ( HasObservers ) Transformation.__proto__ = HasObservers;\n Transformation.prototype = Object.create( HasObservers && HasObservers.prototype );\n Transformation.prototype.constructor = Transformation;\n\n Transformation.prototype.clone = function clone () {\n return new Transformation(\n this._matrix.clone()\n );\n };\n\n Transformation.prototype.equals = function equals (other) {\n return other &&\n other._matrix.equals(this._matrix);\n };\n\n Transformation.prototype.translate = function translate (x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.scale = function scale (scaleX, scaleY, origin) {\n if ( scaleY === void 0 ) scaleY = scaleX;\n if ( origin === void 0 ) origin = null;\n\n var originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.multiply = function multiply (transformation) {\n var matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.matrix = function matrix (value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n };\n\n Transformation.prototype._optionsChange = function _optionsChange () {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n };\n\n return Transformation;\n}(HasObservers));\n\nexport default Transformation;\n","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n}","import ElementsArray from '../shapes/elements-array';\n\nvar StopsArray = (function (ElementsArray) {\n function StopsArray () {\n ElementsArray.apply(this, arguments);\n }\n\n if ( ElementsArray ) StopsArray.__proto__ = ElementsArray;\n StopsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n StopsArray.prototype.constructor = StopsArray;\n\n StopsArray.prototype._change = function _change () {\n this.optionsChange({\n field: \"stops\"\n });\n };\n\n return StopsArray;\n}(ElementsArray));\n\nexport default StopsArray;","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n}\n\nfunction defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n}\n\nvar withOptions = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withOptions;\n","import OptionsStore from '../core/options-store';\nimport withOptions from '../mixins/with-options';\nimport HasObservers from '../core/has-observers';\nimport { defined } from '../util';\n\n\nvar options = [ \"offset\", \"color\", \"opacity\" ];\n\nvar GradientStop = (function (superclass) {\n function GradientStop(offset, color, opacity) {\n superclass.call(this);\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n if ( superclass ) GradientStop.__proto__ = superclass;\n GradientStop.prototype = Object.create( superclass && superclass.prototype );\n GradientStop.prototype.constructor = GradientStop;\n\n GradientStop.create = function create (arg) {\n if (defined(arg)) {\n var stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n };\n\n return GradientStop;\n}(withOptions(HasObservers, options)));\n\nexport default GradientStop;\n","import StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId } from '../util';\n\nvar Gradient = (function (HasObservers) {\n function Gradient(options) {\n if ( options === void 0 ) options = {};\n\n HasObservers.call(this);\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n if ( HasObservers ) Gradient.__proto__ = HasObservers;\n Gradient.prototype = Object.create( HasObservers && HasObservers.prototype );\n Gradient.prototype.constructor = Gradient;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Gradient\";\n };\n\n Gradient.prototype.userSpace = function userSpace (value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n };\n\n Gradient.prototype._createStops = function _createStops (stops) {\n if ( stops === void 0 ) stops = [];\n\n var result = [];\n for (var idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n };\n\n Gradient.prototype.addStop = function addStop (offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n };\n\n Gradient.prototype.removeStop = function removeStop (stop) {\n var index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n };\n\n Gradient.prototype.optionsChange = function optionsChange (e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n };\n\n Gradient.prototype.geometryChange = function geometryChange () {\n this.optionsChange();\n };\n\n Object.defineProperties( Gradient.prototype, prototypeAccessors );\n\n return Gradient;\n}(HasObservers));\n\nexport default Gradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\n\nvar points = [ \"start\", \"end\" ];\n\nvar LinearGradient = (function (superclass) {\n function LinearGradient(options) {\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n\n if ( superclass ) LinearGradient.__proto__ = superclass;\n LinearGradient.prototype = Object.create( superclass && superclass.prototype );\n LinearGradient.prototype.constructor = LinearGradient;\n\n return LinearGradient;\n}(withPoints(Gradient, points)));\n\nexport default LinearGradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\n\nvar RadialGradient = (function (superclass) {\n function RadialGradient(options) {\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n if ( superclass ) RadialGradient.__proto__ = superclass;\n RadialGradient.prototype = Object.create( superclass && superclass.prototype );\n RadialGradient.prototype.constructor = RadialGradient;\n\n RadialGradient.prototype.radius = function radius (value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n };\n\n RadialGradient.prototype.fallbackFill = function fallbackFill (value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n };\n\n return RadialGradient;\n}(withPoints(Gradient, [ \"center\" ])));\n\nexport default RadialGradient;\n","import withAccessors from '../mixins/with-accessors';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport HasObservers from '../core/has-observers';\nimport { rad } from '../util';\n\n\nvar PI_DIV_2 = Math.PI / 2;\n\nvar Circle = (function (superclass) {\n function Circle(center, radius) {\n if ( center === void 0 ) center = new Point();\n if ( radius === void 0 ) radius = 0;\n\n superclass.call(this);\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n if ( superclass ) Circle.__proto__ = superclass;\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n\n Circle.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Circle.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Circle.prototype.equals = function equals (other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n };\n\n Circle.prototype.clone = function clone () {\n return new Circle(this.center.clone(), this.radius);\n };\n\n Circle.prototype.pointAt = function pointAt (angle) {\n return this._pointAt(rad(angle));\n };\n\n Circle.prototype.bbox = function bbox (matrix) {\n var this$1 = this;\n\n var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n var minPoint = Point.maxPoint();\n var maxPoint = Point.minPoint();\n\n for (var i = 0; i < 4; i++) {\n var currentPointX = this$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n var currentPointY = this$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n var currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Circle.prototype._pointAt = function _pointAt (angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n };\n\n Circle.prototype.containsPoint = function containsPoint (point) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point, width) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n };\n\n return Circle;\n}(withAccessors(HasObservers, [ \"radius\" ])));\n\nexport default Circle;\n","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport paintable from '../mixins/paintable';\nimport withPoints from '../mixins/with-points';\nimport { defined, measureText } from '../util';\n\n\nvar DEFAULT_FONT = \"12px sans-serif\";\nvar DEFAULT_FILL = \"#000\";\n\nvar Text = (function (superclass) {\n function Text(content, position, options) {\n if ( position === void 0 ) position = new Point();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n if ( superclass ) Text.__proto__ = superclass;\n Text.prototype = Object.create( superclass && superclass.prototype );\n Text.prototype.constructor = Text;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Text\";\n };\n\n Text.prototype.content = function content (value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n };\n\n Text.prototype.measure = function measure () {\n var metrics = measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n };\n\n Text.prototype.rect = function rect () {\n var size = this.measure();\n var pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n };\n\n Text.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n };\n\n Text.prototype.rawBBox = function rawBBox () {\n return this.rect().bbox();\n };\n\n Text.prototype._containsPoint = function _containsPoint (point) {\n return this.rect().containsPoint(point);\n };\n\n Object.defineProperties( Text.prototype, prototypeAccessors );\n\n return Text;\n}(paintable(withPoints(Element, [ \"position\" ]))));\n\nexport default Text;\n","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport GeometryRect from '../geometry/rect';\nimport { defined } from '../util';\n\n\nvar Rect = (function (superclass) {\n function Rect(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryRect();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n if ( superclass ) Rect.__proto__ = superclass;\n Rect.prototype = Object.create( superclass && superclass.prototype );\n Rect.prototype.constructor = Rect;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Rect.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Rect.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Rect.prototype._containsPoint = function _containsPoint (point) {\n return this._geometry.containsPoint(point);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Rect.prototype, prototypeAccessors );\n\n return Rect;\n}(paintable(measurable(withGeometry(Element)))));\n\nexport default Rect;\n","import GeometryCircle from '../geometry/circle';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport { defined } from '../util';\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Circle = (function (superclass) {\n function Circle(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryCircle();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n if ( superclass ) Circle.__proto__ = superclass;\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Circle\";\n };\n\n Circle.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Circle.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Circle.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Circle.prototype, prototypeAccessors );\n\n return Circle;\n}(paintable(measurable(withGeometry(Element)))));\n\nexport default Circle;\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport * as geo from \"../geometry\";\nimport * as PDF from \"../pdf\";\nimport { arabicToRoman, createPromise, measureText, mergeSort } from '../util';\nimport { parseColor as utils_parseColor, support, template as compileTemplate } from \"../common\";\nimport { Path, Text, Group, Image, Circle, Rect, LinearGradient } from \"../drawing\";\nimport { encodeBase64 } from \"../util\";\n\nvar browser = support.browser || {};\n/*\n\n XXX: to test:\n\n - cloneNodes function:\n - drawing document containing canvas with page breaking\n - drawing document with named radio -s (should not clear selection)\n - IE9/IE10 don't support el.dataset; do they copy user data?\n\n - repeating table headers/footers on page breaking\n\n - forceBreak, keepTogether\n\n - avoidLinks\n\n */\n\n/* -----[ local vars ]----- */\n\nfunction slice(thing) {\n return Array.prototype.slice.call(thing);\n}\n\nvar KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\nvar KENDO_BULLET_TYPE = 'data-kendo-bullet-type';\n\nvar IMAGE_CACHE = {};\n\nvar nodeInfo = {};\nnodeInfo._root = nodeInfo;\n\n/* -----[ Custom Text node to speed up rendering in PDF ]----- */\n\nvar inBrowser = typeof window !== 'undefined';\nvar microsoft = inBrowser ? browser.msie || browser.edge : false;\n\nvar TextRect = (function (Text) {\n function TextRect(str, rect, options) {\n Text.call(this, str, rect.getOrigin(), options);\n this._pdfRect = rect;\n }\n\n if ( Text ) TextRect.__proto__ = Text;\n TextRect.prototype = Object.create( Text && Text.prototype );\n TextRect.prototype.constructor = TextRect;\n TextRect.prototype.rect = function rect () {\n // this is the crux of it: we can avoid a call to\n // measure(), which is what the base class does, since we\n // already know the rect. measure() is s-l-o-w.\n return this._pdfRect;\n };\n TextRect.prototype.rawBBox = function rawBBox () {\n // also let's avoid creating a new rectangle.\n return this._pdfRect;\n };\n\n return TextRect;\n}(Text));\n\nfunction addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += \" \" + cls;\n }\n}\n\nfunction removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function(a, word){\n if (word != cls) {\n a.push(word);\n }\n return a;\n }, []).join(\" \");\n }\n}\n\nfunction setCSS(el, styles) {\n Object.keys(styles).forEach(function(key){\n el.style[key] = styles[key];\n });\n}\n\nvar matches = typeof Element !== \"undefined\" && Element.prototype && (function(p){\n if (p.matches) {\n return function(el, selector) { return el.matches(selector); };\n }\n if (p.webkitMatchesSelector) {\n return function(el, selector) { return el.webkitMatchesSelector(selector); };\n }\n if (p.mozMatchesSelector) {\n return function(el, selector) { return el.mozMatchesSelector(selector); };\n }\n if (p.msMatchesSelector) {\n return function(el, selector) { return el.msMatchesSelector(selector); };\n }\n return function(s) {\n\treturn [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n})(Element.prototype);\n\nfunction closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n // IE: stringifying rather than simply comparing with `document`,\n // which is not iframe-proof and fails in editor export —\n // https://github.com/telerik/kendo/issues/6721\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1 /* Element */ && matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n}\n\n// clone nodes ourselves, so that we redraw (DOM or\n// jQuery clone will not)\nvar cloneNodes = (function($){\n if ($) {\n // if we have Kendo and jQuery, use this version as it will\n // maintain proper links between cloned element and Kendo\n // widgets (i.e. it clones jQuery data(), which isn't the same\n // as element's data attributes).\n // https://github.com/telerik/kendo-ui-core/issues/2750\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n if (el.nodeType == 1 /* Element */) {\n var $el = $(el), $clone = $(clone), i;\n var data = $el.data();\n for (i in data) {\n $clone.data(i, data[i]);\n }\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext(\"2d\").drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n // drop the name attributes so that we don't affect the selection of the\n // original nodes (i.e. checked status of radio buttons) when we insert our copy\n // into the DOM. https://github.com/telerik/kendo/issues/5409\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n clone.value = el.value;\n }\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n return clone;\n };\n } else {\n // the no-jQuery version\n return function cloneNodes(el) {\n var clone = (function dive(node){\n var clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n for (var i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n return clone;\n })(el);\n\n // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n var canvases = el.querySelectorAll(\"canvas\");\n if (canvases.length) {\n slice(clone.querySelectorAll(\"canvas\")).forEach(function (canvas, i) {\n canvas.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n });\n }\n\n // remove \"name\" attributes from elements -\n // https://github.com/telerik/kendo/issues/5409\n var orig = el.querySelectorAll(\"input, select, textarea, option\");\n slice(clone.querySelectorAll(\"input, select, textarea, option\")).forEach(function (el, i) {\n el.removeAttribute(\"id\");\n el.removeAttribute(\"name\");\n if (!/^textarea$/i.test(el.tagName)) {\n el.value = orig[i].value;\n }\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n\n return clone;\n };\n }\n})(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\nfunction getXY(thing) {\n if (typeof thing == \"number\") {\n return { x: thing, y: thing };\n }\n if (Array.isArray(thing)) {\n return { x: thing[0], y: thing[1] };\n }\n return { x: thing.x, y: thing.y };\n}\n\nfunction drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n var promise = createPromise();\n\n if (!element) {\n return promise.reject(\"No element to export\");\n }\n\n if (typeof window.getComputedStyle != \"function\") {\n throw new Error(\"window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n }\n\n PDF.defineFont(getFontFaces(element.ownerDocument));\n\n var scale = getXY(options.scale || 1);\n\n function doOne(element) {\n var group = new Group();\n\n // translate to start of page\n var pos = element.getBoundingClientRect();\n setTransform(group, [\n scale.x,\n 0,\n 0,\n scale.y,\n (-pos.left * scale.x),\n (-pos.top * scale.y)\n ]);\n\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = \"a\";\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n\n addClass(element, \"k-pdf-export\");\n renderElement(element, group);\n removeClass(element, \"k-pdf-export\");\n\n return group;\n }\n\n cacheImages([ element ], function(){\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n var paperOptions = PDF.getPaperOptions(function(key, def){\n if (key == \"paperSize\") {\n // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n // still be interested in margins.\n return hasPaperSize ? options[key] : \"A4\";\n }\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = { left: 0, top: 0, right: 0, bottom: 0 };\n }\n\n // we want paper size and margin to be unaffected by\n // scaling in the output, so we have to reverse-scale\n // before our calculations begin.\n if (pageWidth) { pageWidth /= scale.x; }\n if (pageHeight) { pageHeight /= scale.y; }\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n\n var group = new Group({\n pdf: {\n multiPage : true,\n paperSize : hasPaperSize ? paperOptions.paperSize : \"auto\",\n _ignoreMargin : hasMargin // HACK! see exportPDF in pdf/drawing.js\n }\n });\n handlePageBreaks(\n function(x) {\n if (options.progress) {\n var canceled = false, pageNum = 0;\n (function next(){\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function() {\n canceled = true;\n }\n });\n if (!canceled) {\n setTimeout(next);\n } else {\n // XXX: should we also fail() the deferred object?\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n })();\n } else {\n x.pages.forEach(function(page){\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n },\n element,\n forceBreak,\n pageWidth ? pageWidth - margin.left - margin.right : null,\n pageHeight ? pageHeight - margin.top - margin.bottom : null,\n margin,\n options\n );\n } else {\n promise.resolve(doOne(element));\n }\n });\n\n function makeTemplate(template) {\n if (template != null) {\n if (typeof template == \"string\") {\n template = compileTemplate(template.replace(/^\\s+|\\s+$/g, \"\"));\n }\n if (typeof template == \"function\") {\n return function(data) {\n var el = template(data);\n if (el && typeof el == \"string\") {\n var div = document.createElement(\"div\");\n div.innerHTML = el;\n el = div.firstElementChild;\n }\n return el;\n };\n }\n // assumed DOM element\n return function() {\n return template.cloneNode(true);\n };\n }\n }\n\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n var adjust = 0;\n\n // make sure elements are at the end (Grid widget\n // places TFOOT before TBODY, tricking our algorithm to\n // insert a page break right after the header).\n // https://github.com/telerik/kendo/issues/4699\n slice(copy.querySelectorAll(\"tfoot\")).forEach(function(tfoot){\n tfoot.parentNode.appendChild(tfoot);\n });\n\n // remember the index of each LI from an ordered list.\n // we'll use it to reconstruct the proper numbering.\n slice(copy.querySelectorAll(\"ol\")).forEach(function(ol){\n slice(ol.children).forEach(function(li, index){\n li.setAttribute(\"kendo-split-index\", index);\n });\n });\n\n setCSS(container, {\n display : \"block\",\n position : \"absolute\",\n boxSizing : \"content-box\",\n left : \"-10000px\",\n top : \"-10000px\"\n });\n\n if (pageWidth) {\n // subtle: if we don't set the width *and* margins here, the layout in this\n // container will be different from the one in our final page elements, and we'll\n // split at the wrong places.\n setCSS(container, {\n width : pageWidth + \"px\",\n paddingLeft : margin.left + \"px\",\n paddingRight : margin.right + \"px\"\n });\n\n // when the first element has a margin-top (i.e. a

    ) the page will be\n // inadvertently enlarged by that number (the browser will report the container's\n // bounding box top to start at the element's top, rather than including its\n // margin). Adding overflow: hidden seems to fix it.\n //\n // to understand the difference, try the following snippets in your browser:\n //\n // 1.
    \n //

    Foo

    \n //
    \n //\n // 2.
    \n //

    Foo

    \n //
    \n //\n // this detail is not important when automatic page breaking is not requested, hence\n // doing it only if pageWidth is defined.\n setCSS(copy, { overflow: \"hidden\" });\n }\n\n element.parentNode.insertBefore(container, element);\n container.appendChild(copy);\n\n // With cache disabled, images will still have height zero until their `complete` attribute\n // is true. `whenImagesAreActuallyLoaded` will wait for it.\n if (options.beforePageBreak) {\n whenImagesAreActuallyLoaded([ container ], function() {\n options.beforePageBreak(container, doPageBreak);\n });\n } else {\n whenImagesAreActuallyLoaded([ container ], doPageBreak);\n }\n\n function doPageBreak() {\n if (forceBreak != \"-\" || pageHeight) {\n splitElement(copy);\n }\n\n {\n var page = makePage();\n copy.parentNode.insertBefore(page, copy);\n page.appendChild(copy);\n }\n\n if (template) {\n pages.forEach(function(page, i){\n var el = template({\n element : page,\n pageNum : i + 1,\n totalPages : pages.length\n });\n if (el) {\n page.appendChild(el);\n }\n });\n }\n\n cacheImages(pages, callback.bind(null, { pages: pages, container: container }));\n }\n\n function keepTogether(el) {\n if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n return true;\n }\n\n var tag = el.tagName;\n if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n return false;\n }\n\n return (el.getAttribute(\"data-kendo-chart\") ||\n /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName));\n }\n\n function splitElement(element) {\n if (element.tagName == \"TABLE\") {\n setCSS(element, { tableLayout: \"fixed\" });\n }\n if (keepTogether(element)) {\n return;\n }\n var style = getComputedStyle(element);\n var bottomPadding = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var bottomBorder = parseFloat(getPropertyValue(style, \"border-bottom-width\"));\n var saveAdjust = adjust;\n adjust += bottomPadding + bottomBorder;\n var isFirst = true;\n for (var el = element.firstChild; el; el = el.nextSibling) {\n if (el.nodeType == 1 /* Element */) {\n isFirst = false;\n if (matches(el, forceBreak)) {\n breakAtElement(el);\n continue;\n }\n if (!pageHeight) {\n // we're in \"manual breaks mode\"\n splitElement(el);\n continue;\n }\n if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle(el), \"position\"))) {\n continue;\n }\n var fall = fallsOnMargin(el);\n if (fall == 1) {\n // element starts on next page, break before anyway.\n breakAtElement(el);\n }\n else if (fall) {\n // elements ends up on next page, or possibly doesn't fit on a page at\n // all. break before it anyway if it's an or , otherwise\n // attempt to split.\n if (keepTogether(el)) {\n breakAtElement(el);\n } else {\n splitElement(el);\n }\n }\n else {\n splitElement(el);\n }\n }\n else if (el.nodeType == 3 /* Text */ && pageHeight) {\n splitText(el, isFirst);\n isFirst = false;\n }\n }\n adjust = saveAdjust;\n }\n\n function firstInParent(el) {\n var p = el.parentNode, first = p.firstChild;\n if (el === first) {\n return true;\n }\n if (el === p.children[0]) {\n if (first.nodeType == 7 /* comment */ ||\n first.nodeType == 8 /* processing instruction */) {\n return true;\n }\n if (first.nodeType == 3 /* text */) {\n // if whitespace only we can probably consider it's first\n return !/\\S/.test(first.data);\n }\n }\n return false;\n }\n\n function breakAtElement(el) {\n if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n return breakAtElement(el.parentNode);\n }\n var table, colgroup, thead, grid, gridHead;\n table = closest(el, \"table\");\n colgroup = table && table.querySelector(\"colgroup\");\n if (options.repeatHeaders) {\n thead = table && table.querySelector(\"thead\");\n\n // If we break page in a Kendo Grid, repeat its header. This ugly hack is\n // necessary because a scrollable grid will keep the header in a separate\n // element from its content.\n //\n // XXX: This is likely to break as soon as the widget HTML is modified.\n grid = closest(el, \".k-grid\");\n if (grid && grid.querySelector(\".k-auto-scrollable\")) {\n gridHead = grid.querySelector(\".k-grid-header\");\n }\n }\n var page = makePage();\n var range = doc.createRange();\n range.setStartBefore(copy);\n range.setEndBefore(el);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(el.parentNode);\n if (table) {\n table = closest(el, \"table\"); // that's the
    on next page!\n if (options.repeatHeaders && thead) {\n table.insertBefore(thead.cloneNode(true), table.firstChild);\n }\n if (colgroup) {\n table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n }\n }\n if (options.repeatHeaders && gridHead) {\n grid = closest(el, \".k-grid\");\n grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n }\n }\n\n function makePage() {\n var page = doc.createElement(\"KENDO-PDF-PAGE\");\n setCSS(page, {\n display : \"block\",\n boxSizing: \"content-box\",\n width : pageWidth ? (pageWidth + \"px\") : \"auto\",\n padding : (margin.top + \"px \" +\n margin.right + \"px \" +\n margin.bottom + \"px \" +\n margin.left + \"px\"),\n\n // allow absolutely positioned elements to be relative to current page\n position : \"relative\",\n\n // without the following we might affect layout of subsequent pages\n height : pageHeight ? (pageHeight + \"px\") : \"auto\",\n overflow : pageHeight || pageWidth ? \"hidden\" : \"visible\",\n clear : \"both\"\n });\n\n // debug\n // $(\"
    \").css({\n // position : \"absolute\",\n // left : margin.left,\n // top : margin.top,\n // width : pageWidth,\n // height : pageHeight,\n // boxSizing : \"border-box\",\n // background: \"rgba(255, 255, 0, 0.5)\"\n // //border : \"1px solid red\"\n // }).appendTo(page);\n\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n pages.push(page);\n return page;\n }\n\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n // I'd say an element with dimensions zero fits on current page.\n return 0;\n }\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return (box.height > available) ? 3\n : (box.top - top > available) ? 1\n : (box.bottom - top > available) ? 2\n : 0;\n }\n\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n if (!fall) {\n return; // the whole text fits on current page\n }\n\n var nextnode = node;\n if (fall == 1) {\n // starts on next page, break before anyway.\n if (isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n }\n else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n if (min == pos || pos == max) {\n return pos;\n }\n if (fallsOnMargin(range)) {\n return findEOP(min, (min + pos) >> 1, pos);\n } else {\n return findEOP(pos, (pos + max) >> 1, max);\n }\n })(0, len >> 1, len);\n\n if (!/\\S/.test(range.toString()) && isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n}\n\n// This is needed for the Spreadsheet print functionality. Since\n// there we only need to draw text, this cuts through the ceremony\n// of drawDOM/renderElement and renders the text node directly.\nfunction drawText(element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle(element), group);\n if (element.firstChild.nodeType == 3 /* Text */) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n}\n\nvar parseBackgroundImage = (function(){\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n\n var cache1 = {}, cache2 = {};\n\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = utils_parseColor(input, true);\n var length, percent;\n if (color) {\n var match =\n /^#[0-9a-f]+/i.exec(input) ||\n /^rgba?\\(.*?\\)/i.exec(input) ||\n /^..*?\\b/.exec(input); // maybe named color\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return { color: color, length: length, percent: percent };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n }\n else {\n to1 = read(tok_keyword);\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n read(tok_comma);\n }\n\n // 2. color stops\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type : \"linear\",\n angle : angle,\n to : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops : stops,\n reverse : reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return { type: \"url\", url: url };\n }\n }\n\n var tok;\n\n if ((tok = read(tok_linear_gradient))) {\n tok = read_linear_gradient(tok);\n }\n else if ((tok = read(tok_url))) {\n tok = read_url();\n }\n\n return (cache1[orig] = tok || { type: \"none\" });\n }\n\n return function(input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return (cache2[input] = splitProperty(input).map(parse));\n };\n})();\n\nvar splitProperty = (function(){\n var cache = {};\n return function(input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return (m = rx.exec(input.substr(pos)));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n }\n else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n }\n else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n }\n else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n }\n else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n }\n else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last) {\n ret.push(trim(input.substring(last, pos)));\n last = pos + m[0].length;\n }\n pos += m[0].length;\n }\n else {\n pos++;\n }\n }\n if (last < pos) {\n ret.push(trim(input.substring(last, pos)));\n }\n return (cache[cacheKey] = ret);\n };\n})();\n\nvar getFontURL = (function(cache){\n return function(el){\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n if (!url) {\n var m;\n if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n url = cache[el] = m[2];\n } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n})(Object.create(null));\n\nvar getFontHeight = (function(cache){\n return function(font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = measureText(\"Mapq\", { font: font }).height;\n }\n return height;\n };\n})(Object.create(null));\n\nfunction getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n if (src) {\n return splitProperty(src).reduce(function(a, el){\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [ font ] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3: // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n case 5: // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!(/^data:/i.test(url))) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n names.forEach(function(name){\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n if (bold) {\n name += \"|bold\";\n }\n if (italic) {\n name += \"|italic\";\n }\n result[name] = url;\n });\n }\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n}\n\nfunction getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = \"_counter_\" + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n}\n\nfunction incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n}\n\nfunction resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n}\n\nfunction doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n}\n\nfunction updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n}\n\nfunction parseColor(str, css) {\n var color = utils_parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n}\n\nfunction whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n var done = false;\n elements.forEach(function(el){\n var images = el.querySelectorAll(\"img\");\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n\n if (!pending) {\n next();\n }\n\n function next() {\n if (!done && --pending <= 0) {\n callback();\n done = true;\n }\n }\n}\n\nfunction cacheImages(elements, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n\n elements.forEach(function dive(element){\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(\n getPropertyValue(\n getComputedStyle(element), \"background-image\"\n )\n ).forEach(function(bg){\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice(element.children).forEach(dive);\n }\n });\n\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n // Even though we cached them, they simply won't be available immediately in the newly\n // created DOM. Previously we'd allow a 10ms timeout, but that's arbitrary and clearly\n // not working in all cases (https://github.com/telerik/kendo/issues/5399), so this\n // function will wait for their .complete attribute.\n whenImagesAreActuallyLoaded(elements, callback);\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function(url){\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function() {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n}\n\nfunction alphaNumeral(n) {\n var result = \"\";\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n}\n\nfunction pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, \"text-decoration\");\n if (decoration && decoration != \"none\") {\n var color = getPropertyValue(style, \"text-decoration-color\");\n decoration.split(/\\s+/g).forEach(function(name){\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n if (name == \"underline\") {\n var offset = getPropertyValue(style, \"text-underline-offset\");\n if (offset != \"auto\") {\n nodeInfo[\"underline-offset\"] = parseFloat(offset);\n }\n }\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n}\n\nfunction popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n}\n\nfunction updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = geo.Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n}\n\nfunction emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n}\n\nfunction createsStackingContext(style) {\n function prop(name) { return getPropertyValue(style, name); }\n if (prop(\"transform\") != \"none\" ||\n prop(\"position\") != \"static\" ||\n prop(\"z-index\") != \"auto\" ||\n prop(\"opacity\") < 1) {\n return true;\n }\n}\n\nfunction getComputedStyle(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n}\n\nfunction getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop );\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop );\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n}\n\nfunction pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n}\n\nfunction getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor(getPropertyValue(style, side + \"-color\"), true)\n };\n}\n\nfunction saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n}\n\nfunction getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({ x: r[0], y: r[1] });\n}\n\nfunction getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n}\n\nfunction innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == \"string\") {\n style = getComputedStyle(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n }\n else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n return {\n top : box.top + wt,\n right : box.right - wr,\n bottom : box.bottom - wb,\n left : box.left + wl,\n width : box.right - box.left - wr - wl,\n height : box.bottom - box.top - wb - wt\n };\n}\n\nfunction getTransform(style) {\n var transform = getPropertyValue(style, \"transform\");\n if (transform == \"none\") {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform);\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n}\n\nfunction radiansToDegrees(radians) {\n return ((180 * radians) / Math.PI) % 360;\n}\n\nfunction parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n }\n else if (/rad$/.test(angle)) {\n return num;\n }\n else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n }\n else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n}\n\nfunction setTransform(shape, m) {\n m = new geo.Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n}\n\nfunction setClipping(shape, clipPath) {\n shape.clip(clipPath);\n}\n\nfunction addArcToPath(path, x, y, options) {\n var points = new geo.Arc([ x, y ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n}\n\nfunction sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n}\n\nfunction adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n var f = Math.min(\n box.width / (tl_x + tr_x),\n box.height / (tr_y + br_y),\n box.width / (br_x + bl_x),\n box.height / (bl_y + tl_y)\n );\n\n if (f < 1) {\n tl_x *= f; tl_y *= f;\n tr_x *= f; tr_y *= f;\n br_x *= f; br_y *= f;\n bl_x *= f; bl_y *= f;\n }\n\n return {\n tl: { x: tl_x, y: tl_y },\n tr: { x: tr_x, y: tr_y },\n br: { x: br_x, y: br_y },\n bl: { x: bl_x, y: bl_y }\n };\n}\n\nfunction elementRoundBox(element, box, type) {\n var style = getComputedStyle(element);\n\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width; rTL.y -= bt.width;\n rTR.x -= br.width; rTR.y -= bt.width;\n rBR.x -= br.width; rBR.y -= bb.width;\n rBL.x -= bl.width; rBL.y -= bb.width;\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl; rTL.y -= pt;\n rTR.x -= pr; rTR.y -= pt;\n rBR.x -= pr; rBR.y -= pb;\n rBL.x -= pl; rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type; rTL.y -= type;\n rTR.x -= type; rTR.y -= type;\n rBR.x -= type; rBR.y -= type;\n rBL.x -= type; rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n}\n\n// Create a drawing.Path for a rounded rectangle. Receives the\n// bounding box and the border-radiuses in CSS order (top-left,\n// top-right, bottom-right, bottom-left). The radiuses must be\n// objects containing x (horiz. radius) and y (vertical radius).\nfunction roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({ fill: null, stroke: null });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n}\n\nfunction formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n return str;\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n}\n\nfunction evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function(val){\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function(el){\n var tmp;\n if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n return String.fromCharCode(parseInt(p, 16));\n }));\n }\n else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n }\n else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n }\n else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n result.push(element.getAttribute(m[1]) || \"\");\n }\n else {\n result.push(el);\n }\n });\n return result.join(\"\");\n}\n\nfunction getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n return result.join(\";\\n\");\n}\n\nfunction _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n var fake = [];\n function pseudo(kind, place) {\n var style = getComputedStyle(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n var psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n if (fake.length > 0) {\n var saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function(el){ element.removeChild(el); });\n } else {\n _renderElement(element, group);\n }\n}\n\nfunction _renderElement(element, group) {\n var style = getComputedStyle(element);\n\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n var dir = getPropertyValue(style, \"direction\");\n\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor(backgroundColor);\n\n var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n (function(){\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path()\n .moveTo(left, top)\n .lineTo(right, top)\n .lineTo(right, bottom)\n .lineTo(left, bottom)\n .close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [ element.getBoundingClientRect() ];\n }\n }\n\n // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n\n // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n var r = document.createRange();\n r.selectNodeContents(element);\n slice(r.getClientRects()).forEach(function(box){\n var g = new Group();\n g._pdfLink = {\n url : element.href,\n top : box.top,\n right : box.right,\n bottom : box.bottom,\n left : box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n }\n\n // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n (function(){\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group) && !maybeRenderBullet(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width;\n // check if we need to adjust\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice(boxes).map(function(box){\n return {\n left : box.left + tableBorderLeft,\n top : box.top + tableBorderTop,\n right : box.right + tableBorderLeft,\n bottom : box.bottom + tableBorderTop,\n height : box.height,\n width : box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n\n // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform) {\n if (Wtop <= 0) {\n return;\n }\n\n var path, edge = new Group();\n setTransform(edge, transform);\n group.append(edge);\n\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n\n // draw main border. this is the area without the rounded corners\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n .lineTo(len - Math.max(rr.x, Wright), Wtop)\n .lineTo(Math.max(rl.x, Wleft), Wtop)\n .close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n }\n\n // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n function drawRoundCorner(Wright, r, transform) {\n var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n\n setTransform(path, transform);\n\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n }\n else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop)\n .lineTo(0, Wtop);\n }\n else {\n path.lineTo(ri.x, Wtop)\n .lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top)\n .lineTo(box.right, box.top)\n .lineTo(box.right, box.bottom)\n .lineTo(box.left, box.bottom)\n .close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(\n background, box,\n backgroundImage[i],\n backgroundRepeat[i % backgroundRepeat.length],\n backgroundPosition[i % backgroundPosition.length],\n backgroundOrigin[i % backgroundOrigin.length],\n backgroundSize[i % backgroundSize.length]\n );\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || (background == \"none\")) {\n return;\n }\n\n if (background.type == \"url\") {\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n group.append(new Image(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n\n // for background-origin: border-box the box is already appropriate\n var orgBox = box;\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else {\n var size = backgroundSize.split(/\\s+/g);\n // compute width\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n // compute height\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition);\n\n // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n switch (pos) {\n case \"bottom\" : pos = \"50% 100%\"; break;\n case \"top\" : pos = \"50% 0\"; break;\n case \"left\" : pos = \"0 50%\"; break;\n case \"right\" : pos = \"100% 50%\"; break;\n case \"center\" : pos = \"50% 50%\"; break;\n }\n\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new geo.Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n }\n else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n }\n else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n }\n else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n if (listStyleType == \"none\") {\n return;\n }\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function(){\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n if (k != null) {\n return f(k|0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function(bullet){\n bullet.innerHTML = ' ';\n bullet.setAttribute(KENDO_BULLET_TYPE, listStyleType);\n });\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n ++idx;\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = arabicToRoman(idx + 1);\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n }\n }\n\n // draws a single border box\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n\n var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n\n // first, just in case there is no border...\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n\n // START paint borders\n // if all borders have equal colors...\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width/2);\n\n // adjust the border radiuses, again by top.width/2, and make the path element.\n var path = elementRoundBox(element, box, top.width/2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n\n // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(\n new Path({\n stroke: { width: top.width, color: top.color }\n })\n .moveTo(box.left, box.top + top.width/2)\n .lineTo(box.right, box.top + top.width/2)\n );\n }\n\n // bottom border\n if (bottom.width > 0) {\n group.append(\n new Path({\n stroke: { width: bottom.width, color: bottom.color }\n })\n .moveTo(box.left, box.bottom - bottom.width/2)\n .lineTo(box.right, box.bottom - bottom.width/2)\n );\n }\n\n // left border\n if (shouldDrawLeft) {\n group.append(\n new Path({\n stroke: { width: left.width, color: left.color }\n })\n .moveTo(box.left + left.width/2, box.top)\n .lineTo(box.left + left.width/2, box.bottom)\n );\n }\n\n // right border\n if (shouldDrawRight) {\n group.append(\n new Path({\n stroke: { width: right.width, color: right.color }\n })\n .moveTo(box.right - right.width/2, box.top)\n .lineTo(box.right - right.width/2, box.bottom)\n );\n }\n\n return;\n }\n }\n // END paint borders\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n\n // top border\n drawEdge(top.color,\n box.width, top.width, left.width, right.width,\n rTL, rTR,\n [ 1, 0, 0, 1, box.left, box.top ]);\n\n // bottom border\n drawEdge(bottom.color,\n box.width, bottom.width, right.width, left.width,\n rBR, rBL,\n [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n // for left/right borders we need to invert the border-radiuses\n function inv(p) {\n return { x: p.y, y: p.x };\n }\n\n // left border\n drawEdge(left.color,\n box.height, left.width, bottom.width, top.width,\n inv(rBL), inv(rTL),\n [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n // right border\n drawEdge(right.color,\n box.height, right.width, top.width, bottom.width,\n inv(rTR), inv(rBR),\n [ 0, 1, -1, 0, box.right, box.top ]);\n }\n}\n\nfunction gradientRenderer(gradient) {\n return function(group, rect) {\n var width = rect.width(), height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n case \"left\":\n angle = -Math.PI / 2;\n break;\n case \"bottom\":\n angle = Math.PI;\n break;\n case \"right\":\n angle = Math.PI / 2;\n break;\n case \"top left\": case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n case \"top right\": case \"right top\":\n angle = Math.atan2(height, width);\n break;\n case \"bottom left\": case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n case \"bottom right\": case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n\n // limit the angle between 0..2PI\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n\n // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len/2 * sin;\n var y = len/2 * cos;\n\n // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n x = -x;\n y = -y;\n }\n\n // compute the color stops.\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function(s, i){\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n // fix implicit offsets\n implicit.forEach(function(s, i){\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({ left: right, stop: stop });\n }\n return stop;\n });\n\n var start = [ 0.5 - x, 0.5 + y ];\n var end = [ 0.5 + x, 0.5 - y ];\n\n // finally, draw it.\n group.append(\n Path.fromRect(rect)\n .stroke(null)\n .fill(new LinearGradient({\n start : start,\n end : end,\n stops : stops,\n userSpace : false\n }))\n );\n break;\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n break;\n }\n };\n}\n\nfunction maybeRenderWidget(element, group) {\n var visual;\n\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap = new Group();\n wrap.children.push(visual);\n\n var bbox = element.getBoundingClientRect();\n wrap.transform(geo.transform().translate(bbox.left, bbox.top));\n\n group.append(wrap);\n\n return true;\n}\n\nfunction maybeRenderBullet(element, group) {\n var bulletType = element.getAttribute(KENDO_BULLET_TYPE);\n\n if (!bulletType) {\n return false;\n }\n\n var box = element.getBoundingClientRect();\n var color = getComputedStyle(element).color;\n\n if (bulletType === 'square') {\n var rectSize = box.height / 5;\n group.append(new Rect(new geo.Rect([\n box.right - rectSize,\n box.top + box.height / 2.1\n ], [rectSize, rectSize])).fill(color).stroke(color));\n } else {\n var radius = box.height / 7;\n var center = [\n box.right - radius,\n box.top + (box.height + radius) / 2\n ];\n var circle = new Circle(new geo.Circle(center, radius));\n if (bulletType === 'circle') {\n circle.stroke(color, 0.5);\n } else {\n circle.fill(color).stroke(null);\n }\n group.append(circle);\n }\n\n return true;\n}\n\nfunction renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new geo.Rect([ box.left, box.top ], [ box.width, box.height ]);\n var image = new Image(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n}\n\nfunction zIndexSort(a, b) {\n var sa = getComputedStyle(a);\n var sb = getComputedStyle(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n if (isNaN(za) && isNaN(zb)) {\n if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n return 0;\n }\n if (pa == \"static\") {\n return -1;\n }\n if (pb == \"static\") {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n}\n\nfunction isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n}\n\nfunction getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n}\n\nfunction renderCheckbox(element, group) {\n var style = getComputedStyle(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n if (element.type == \"checkbox\") {\n group.append(\n Path.fromRect(\n new geo.Rect([ box.left+1, box.top+1 ],\n [ box.width-2, box.height-2 ])\n ).stroke(color, 1)\n );\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n\n // let's draw a checkmark instead. artistic, eh?\n group.append(\n new Path()\n .stroke(color, 1.2)\n .moveTo(box.left + 0.22 * box.width,\n box.top + 0.55 * box.height)\n .lineTo(box.left + 0.45 * box.width,\n box.top + 0.75 * box.height)\n .lineTo(box.left + 0.78 * box.width,\n box.top + 0.22 * box.width)\n );\n }\n } else {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-2, box.height-2) / 2)\n ).stroke(color, 1)\n );\n if (element.checked) {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-8, box.height-8) / 2)\n ).fill(color).stroke(null)\n );\n }\n }\n}\n\nfunction renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle(element));\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle(element.options[i]));\n option.style.display = \"block\"; // IE9 messes up without this\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n\n // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n element.style.display = \"none\";\n\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n}\n\nfunction serializeSVG(element) {\n var serializer = new window.XMLSerializer();\n var xml = serializer.serializeToString(element);\n\n if (browser.mozilla && !(element.getAttribute(\"width\") && element.getAttribute(\"height\"))) {\n var doc = new window.DOMParser().parseFromString(xml, \"image/svg+xml\");\n var svg = doc.documentElement;\n var box = getContentBox(element);\n svg.setAttribute(\"width\", box.width);\n svg.setAttribute(\"height\", box.height);\n xml = serializer.serializeToString(svg);\n }\n\n return xml;\n}\n\nfunction renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"svg\":\n var xml = serializeSVG(element);\n var dataURL = \"data:image/svg+xml;base64,\" + (encodeBase64(xml));\n renderImage(element, dataURL, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {\n // tainted; can't draw it, ignore.\n }\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3: // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1: // Element\n var style = getComputedStyle(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n if (position != \"static\") {\n positioned.push(i);\n }\n else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n }\n}\n\nfunction renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\");\n\n // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n var font = [\n getPropertyValue(style, \"font-style\"),\n getPropertyValue(style, \"font-variant\"),\n getPropertyValue(style, \"font-weight\"),\n fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")\n ].join(\" \");\n\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0 || isNaN(fontSize)) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align = getPropertyValue(style, \"text-align\");\n var isJustified = align == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\");\n\n // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n\n // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n var prevLineBottom = null;\n\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var underlineOffset = nodeInfo[\"underline-offset\"];\n\n if (underline) {\n forEachRect(decorateUnder);\n }\n\n // doChunk returns true when all text has been rendered\n while (!doChunk()) {}\n\n if (lineThrough || overline) {\n forEachRect(decorateOver);\n }\n\n return; // only function declarations after this line\n\n function forEachRect(callback) {\n range.selectNode(node);\n var clientRects = slice(range.getClientRects());\n\n forEachRect = function (cb) { return clientRects.forEach(cb); };\n forEachRect(callback);\n }\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome || browser.safari) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(), box = {\n top : Infinity,\n right : -Infinity,\n bottom : -Infinity,\n left : Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n box.left = Math.min(b.left , box.left);\n box.top = Math.min(b.top , box.top);\n box.right = Math.max(b.right , box.right);\n box.bottom = Math.max(b.bottom , box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n\n // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n\n // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n\n // for justified text we must split at each space, because space has variable width.\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = (function findEOL(min, eol, max){\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, (min + eol) >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, (eol + max) >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n })(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n start = pos;\n\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n\n // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n }\n else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n }\n\n // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top : top,\n right : box.right,\n bottom : top + height,\n left : box.left,\n height : height,\n width : box.right - box.left\n };\n }\n\n // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, function (l) { return l.toUpperCase(); });\n break;\n }\n\n var text = new TextRect(\n str, new geo.Rect([ box.left, box.top ],\n [ box.width, box.height ]),\n {\n font: font,\n fill: { color: color }\n }\n );\n group.append(text);\n }\n\n function drawTextLine(lineWidth, textBox, color, ypos) {\n if (color) {\n var path = new Path({ stroke: {\n width: lineWidth,\n color: color\n }});\n\n ypos -= lineWidth;\n path.moveTo(textBox.left, ypos)\n .lineTo(textBox.right, ypos);\n group.append(path);\n }\n }\n\n function decorateOver(box) {\n var width = fontSize / 12;\n drawTextLine(width, box, lineThrough, box.bottom - box.height / 2.7);\n drawTextLine(width, box, overline, box.top);\n }\n\n function decorateUnder(box) {\n var width = fontSize / 12;\n var underlinePos = box.bottom;\n if (underlineOffset != null) {\n underlinePos += underlineOffset;\n } else {\n underlinePos += width; // for \"auto\" it seems better to add line width\n }\n drawTextLine(width, box, underline, underlinePos);\n }\n}\n\nfunction groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n}\n\nfunction renderElement(element, container) {\n var style = getComputedStyle(element);\n\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n\n var zIndex = getPropertyValue(style, \"z-index\");\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n\n // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n }\n else {\n saveStyle(element, function(){\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n // must also clear transitions, so correct values are returned *immediately*\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n }\n\n // must translate to origin before applying the CSS\n // transformation, then translate back.\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [ 1, 0, 0, 1, -x, -y ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n m = setTransform(group, m);\n\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo();\n\n //drawDebugBox(element.getBoundingClientRect(), container);\n}\n\n// function drawDebugBox(box, group, color) {\n// var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n// if (color) {\n// path.stroke(color);\n// }\n// group.append(path);\n// }\n\n// function dumpTextNode(node) {\n// var txt = node.data.replace(/^\\s+/, \"\");\n// if (txt.length < 100) {\n// console.log(node.data.length + \": |\" + txt);\n// } else {\n// console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n// }\n// }\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nexport { drawDOM, drawText, getFontFaces };\n","export default function template() {\n throw new Error(\"Template implementation missing.\");\n}\n","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nvar IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nvar measurable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n var bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n var strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n };\n\n anonymous.prototype.geometryChange = function geometryChange () {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default measurable;","import { defined } from '../util';\n\nvar GRADIENT = \"Gradient\";\n\nvar paintable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.fill = function fill (color, opacity) {\n var options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n var newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n };\n\n anonymous.prototype.stroke = function stroke (color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default paintable;\n","var traversable = function (TBase, childrenField) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.traverse = function traverse (callback) {\n var children = this[childrenField];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default traversable;\n","function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n}\n\nfunction getAccessor(field) {\n return function() {\n return this[field];\n };\n}\n\nfunction defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n}\n\nvar withAccessors = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withAccessors;\n","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n}\n\nvar withGeometry = function (TBase, names) {\n if ( names === void 0 ) names = [ \"geometry\" ];\n\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withGeometry;\n","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n}\n\nvar withPoints = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n definePointAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withPoints;\n","import { support } from '../common';\n\n/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// XXX: remove this junk (assume `true`) when we no longer have to support IE < 10\n// IE 9 (at least compatibility) reports having Uint8Array but the request response does not contain ArrayBuffer which results in missing table head error\nvar HAS_TYPED_ARRAYS = typeof Uint8Array !== 'undefined' && support.browser && (!support.browser.msie || support.browser.version > 9);\n\nvar BASE64 = (function(){\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return {\n decode: function(str) {\n var input = str.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\"), i = 0, n = input.length, output = [];\n\n while (i < n) {\n var enc1 = keyStr.indexOf(input.charAt(i++));\n var enc2 = keyStr.indexOf(input.charAt(i++));\n var enc3 = keyStr.indexOf(input.charAt(i++));\n var enc4 = keyStr.indexOf(input.charAt(i++));\n\n var chr1 = (enc1 << 2) | (enc2 >>> 4);\n var chr2 = ((enc2 & 15) << 4) | (enc3 >>> 2);\n var chr3 = ((enc3 & 3) << 6) | enc4;\n\n output.push(chr1);\n if (enc3 != 64) {\n output.push(chr2);\n }\n if (enc4 != 64) {\n output.push(chr3);\n }\n }\n\n return output;\n },\n encode: function(bytes) {\n var i = 0, n = bytes.length;\n var output = \"\";\n\n while (i < n) {\n var chr1 = bytes[i++];\n var chr2 = bytes[i++];\n var chr3 = bytes[i++];\n\n var enc1 = chr1 >>> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >>> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >>> 6);\n var enc4 = chr3 & 63;\n\n if (i - n == 2) {\n enc3 = enc4 = 64;\n } else if (i - n == 1) {\n enc4 = 64;\n }\n\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\n }\n return output;\n }\n };\n}());\n\nfunction BinaryStream(data) {\n var offset = 0, length = 0;\n if (data == null) {\n data = HAS_TYPED_ARRAYS ? new Uint8Array(256) : [];\n } else {\n length = data.length;\n }\n\n var ensure = HAS_TYPED_ARRAYS ? function(len) {\n if (len >= data.length) {\n var tmp = new Uint8Array(Math.max(len + 256, data.length * 2));\n tmp.set(data, 0);\n data = tmp;\n }\n } : function() {};\n\n var get = HAS_TYPED_ARRAYS ? function() {\n return new Uint8Array(data.buffer, 0, length);\n } : function() {\n return data;\n };\n\n var write = HAS_TYPED_ARRAYS ? function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n var len = bytes.length;\n ensure(offset + len);\n data.set(bytes, offset);\n offset += len;\n if (offset > length) {\n length = offset;\n }\n } : function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n for (var i = 0; i < bytes.length; ++i) {\n writeByte(bytes[i]);\n }\n };\n\n var slice = HAS_TYPED_ARRAYS ? function(start, length) {\n if (data.buffer.slice) {\n return new Uint8Array(data.buffer.slice(start, start + length));\n } else {\n // IE10\n var x = new Uint8Array(length);\n x.set(new Uint8Array(data.buffer, start, length));\n return x;\n }\n } : function(start, length) {\n return data.slice(start, start + length);\n };\n\n function eof() {\n return offset >= length;\n }\n function readByte() {\n return offset < length ? data[offset++] : 0;\n }\n function writeByte(b) {\n ensure(offset);\n data[offset++] = b & 0xFF;\n if (offset > length) {\n length = offset;\n }\n }\n function readShort() {\n return (readByte() << 8) | readByte();\n }\n function writeShort(w) {\n writeByte(w >> 8);\n writeByte(w);\n }\n function readShort_() {\n var w = readShort();\n return w >= 0x8000 ? w - 0x10000 : w;\n }\n function writeShort_(w) {\n writeShort(w < 0 ? w + 0x10000 : w);\n }\n function readLong() {\n return (readShort() * 0x10000) + readShort();\n }\n function writeLong(w) {\n writeShort((w >>> 16) & 0xFFFF);\n writeShort(w & 0xFFFF);\n }\n function readLong_() {\n var w = readLong();\n return w >= 0x80000000 ? w - 0x100000000 : w;\n }\n function writeLong_(w) {\n writeLong(w < 0 ? w + 0x100000000 : w);\n }\n function readFixed() {\n return readLong() / 0x10000;\n }\n function writeFixed(f) {\n writeLong(Math.round(f * 0x10000));\n }\n function readFixed_() {\n return readLong_() / 0x10000;\n }\n function writeFixed_(f) {\n writeLong_(Math.round(f * 0x10000));\n }\n function read(len) {\n return times(len, readByte);\n }\n function readString(len) {\n return String.fromCharCode.apply(String, read(len));\n }\n function writeString(str) {\n for (var i = 0; i < str.length; ++i) {\n writeByte(str.charCodeAt(i));\n }\n }\n function times(n, reader) {\n for (var ret = new Array(n), i = 0; i < n; ++i) {\n ret[i] = reader();\n }\n return ret;\n }\n\n var stream = {\n eof : eof,\n readByte : readByte,\n writeByte : writeByte,\n readShort : readShort,\n writeShort : writeShort,\n readLong : readLong,\n writeLong : writeLong,\n readFixed : readFixed,\n writeFixed : writeFixed,\n\n // signed numbers.\n readShort_ : readShort_,\n writeShort_ : writeShort_,\n readLong_ : readLong_,\n writeLong_ : writeLong_,\n readFixed_ : readFixed_,\n writeFixed_ : writeFixed_,\n\n read : read,\n write : write,\n readString : readString,\n writeString : writeString,\n\n times : times,\n get : get,\n slice : slice,\n\n offset: function(pos) {\n if (pos != null) {\n offset = pos;\n return stream;\n }\n return offset;\n },\n\n skip: function(nbytes) {\n offset += nbytes;\n },\n\n toString: function() {\n throw new Error(\"FIX CALLER. BinaryStream is no longer convertible to string!\");\n },\n\n length: function() { return length; },\n\n saveExcursion: function(f) {\n var pos = offset;\n try {\n return f();\n } finally {\n offset = pos;\n }\n },\n\n writeBase64: function(base64) {\n if (window.atob) {\n writeString(window.atob(base64));\n } else {\n write(BASE64.decode(base64));\n }\n },\n base64: function() {\n return BASE64.encode(get());\n }\n };\n\n return stream;\n}\n\nfunction ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\n\nfunction ucs2encode(array) {\n return array.map(function(value){\n var output = \"\";\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += String.fromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n output += String.fromCharCode(value);\n return output;\n }).join(\"\");\n}\n\nfunction atobUint8Array(base64) {\n var data = window.atob(base64);\n var result = new Uint8Array(data.length);\n\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data.charCodeAt(idx);\n }\n\n return result;\n}\n\nfunction createUint8Array(data) {\n var result = new Uint8Array(data.length);\n\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data[idx];\n }\n\n return result;\n}\n\nfunction base64ToUint8Array(base64) {\n if (window.atob) {\n return atobUint8Array(base64);\n }\n\n return createUint8Array(BASE64.decode(base64));\n}\n\nexport {\n HAS_TYPED_ARRAYS,\n BASE64,\n BinaryStream,\n ucs2decode,\n ucs2encode,\n base64ToUint8Array\n};\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n/*****************************************************************************\\\n *\n * The code in this file, although written from scratch, is influenced by the\n * TrueType parser/encoder in PDFKit -- http://pdfkit.org/ (a CoffeeScript\n * library for producing PDF files).\n *\n * PDFKit is (c) Devon Govett 2014 and released under the MIT License.\n *\n\\*****************************************************************************/\n\nimport { BinaryStream, ucs2decode } from \"./utils\";\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction sortedKeys(obj) {\n return Object.keys(obj).sort(function(a, b){ return a - b; }).map(parseFloat);\n}\n\n///\nvar Directory = function Directory(data) {\n this.raw = data;\n this.scalerType = data.readLong();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n\n var tables = this.tables = {};\n for (var i = 0; i < this.tableCount; ++i) {\n var entry = {\n tag : data.readString(4),\n checksum : data.readLong(),\n offset : data.readLong(),\n length : data.readLong()\n };\n tables[entry.tag] = entry;\n }\n};\n\nDirectory.prototype.readTable = function readTable (name, Ctor) {\n var def = this.tables[name];\n if (!def) {\n throw new Error(\"Table \" + name + \" not found in directory\");\n }\n return (this[name] = def.table = new Ctor(this, def));\n};\n\nDirectory.prototype.render = function render (tables) {\n var this$1 = this;\n\n var tableCount = Object.keys(tables).length;\n\n var maxpow2 = Math.pow(2, Math.floor(Math.log(tableCount) / Math.LN2));\n var searchRange = maxpow2 * 16;\n var entrySelector = Math.floor(Math.log(maxpow2) / Math.LN2);\n var rangeShift = tableCount * 16 - searchRange;\n\n var out = BinaryStream();\n out.writeLong(this.scalerType);\n out.writeShort(tableCount);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n var directoryLength = tableCount * 16;\n var offset = out.offset() + directoryLength;\n var headOffset = null;\n var tableData = BinaryStream();\n\n for (var tag in tables) {\n if (hasOwnProperty(tables, tag)) {\n var table = tables[tag];\n\n out.writeString(tag);\n out.writeLong(this$1.checksum(table));\n out.writeLong(offset);\n out.writeLong(table.length);\n\n tableData.write(table);\n if (tag == \"head\") {\n headOffset = offset;\n }\n offset += table.length;\n\n while (offset % 4) {\n tableData.writeByte(0);\n offset++;\n }\n }\n }\n\n out.write(tableData.get());\n var sum = this.checksum(out.get());\n var adjustment = 0xB1B0AFBA - sum;\n\n out.offset(headOffset + 8);\n out.writeLong(adjustment);\n return out.get();\n};\n\nDirectory.prototype.checksum = function checksum (data) {\n data = BinaryStream(data);\n var sum = 0;\n while (!data.eof()) {\n sum += data.readLong();\n }\n return sum & 0xFFFFFFFF;\n};\n\nvar Table = function Table(file, def) {\n this.definition = def;\n this.length = def.length;\n this.offset = def.offset;\n this.file = file;\n this.rawData = file.raw;\n this.parse(file.raw);\n};\n\nTable.prototype.raw = function raw () {\n return this.rawData.slice(this.offset, this.length);\n};\n\nTable.prototype.parse = function parse () {};\n\nvar HeadTable = (function (Table) {\n function HeadTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) HeadTable.__proto__ = Table;\n HeadTable.prototype = Object.create( Table && Table.prototype );\n HeadTable.prototype.constructor = HeadTable;\n\n HeadTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.revision = data.readLong();\n this.checkSumAdjustment = data.readLong();\n this.magicNumber = data.readLong();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.read(8);\n this.modified = data.read(8);\n\n this.xMin = data.readShort_();\n this.yMin = data.readShort_();\n this.xMax = data.readShort_();\n this.yMax = data.readShort_();\n\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort_();\n this.indexToLocFormat = data.readShort_();\n this.glyphDataFormat = data.readShort_();\n };\n\n HeadTable.prototype.render = function render (indexToLocFormat) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeLong(this.revision);\n out.writeLong(0); // checksum adjustment; shall be computed later\n out.writeLong(this.magicNumber);\n out.writeShort(this.flags);\n out.writeShort(this.unitsPerEm);\n out.write(this.created);\n out.write(this.modified);\n out.writeShort_(this.xMin);\n out.writeShort_(this.yMin);\n out.writeShort_(this.xMax);\n out.writeShort_(this.yMax);\n out.writeShort(this.macStyle);\n out.writeShort(this.lowestRecPPEM);\n out.writeShort_(this.fontDirectionHint);\n out.writeShort_(indexToLocFormat); // this will depend on the `loca` table\n out.writeShort_(this.glyphDataFormat);\n return out.get();\n };\n\n return HeadTable;\n}(Table));\n\nvar LocaTable = (function (Table) {\n function LocaTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) LocaTable.__proto__ = Table;\n LocaTable.prototype = Object.create( Table && Table.prototype );\n LocaTable.prototype.constructor = LocaTable;\n\n LocaTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n var format = this.file.head.indexToLocFormat;\n if (format === 0) {\n this.offsets = data.times(this.length / 2, function(){\n return 2 * data.readShort();\n });\n } else {\n this.offsets = data.times(this.length / 4, data.readLong);\n }\n };\n\n LocaTable.prototype.offsetOf = function offsetOf (id) {\n return this.offsets[id];\n };\n\n LocaTable.prototype.lengthOf = function lengthOf (id) {\n return this.offsets[id + 1] - this.offsets[id];\n };\n\n LocaTable.prototype.render = function render (offsets) {\n var out = BinaryStream();\n var needsLongFormat = offsets[offsets.length - 1] > 0xFFFF;\n for (var i = 0; i < offsets.length; ++i) {\n if (needsLongFormat) {\n out.writeLong(offsets[i]);\n } else {\n out.writeShort(offsets[i] / 2);\n }\n }\n return {\n format: needsLongFormat ? 1 : 0,\n table: out.get()\n };\n };\n\n return LocaTable;\n}(Table));\n\nvar HheaTable = (function (Table) {\n function HheaTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) HheaTable.__proto__ = Table;\n HheaTable.prototype = Object.create( Table && Table.prototype );\n HheaTable.prototype.constructor = HheaTable;\n\n HheaTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n\n this.version = data.readLong();\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort_();\n this.minRightSideBearing = data.readShort_();\n this.xMaxExtent = data.readShort_();\n this.caretSlopeRise = data.readShort_();\n this.caretSlopeRun = data.readShort_();\n this.caretOffset = data.readShort_();\n\n data.skip(4 * 2); // reserved\n\n this.metricDataFormat = data.readShort_();\n this.numOfLongHorMetrics = data.readShort();\n };\n\n HheaTable.prototype.render = function render (ids) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort_(this.ascent);\n out.writeShort_(this.descent);\n out.writeShort_(this.lineGap);\n out.writeShort(this.advanceWidthMax);\n out.writeShort_(this.minLeftSideBearing);\n out.writeShort_(this.minRightSideBearing);\n out.writeShort_(this.xMaxExtent);\n out.writeShort_(this.caretSlopeRise);\n out.writeShort_(this.caretSlopeRun);\n out.writeShort_(this.caretOffset);\n\n out.write([ 0, 0, 0, 0, 0, 0, 0, 0 ]); // reserved bytes\n\n out.writeShort_(this.metricDataFormat);\n out.writeShort(ids.length);\n return out.get();\n };\n\n return HheaTable;\n}(Table));\n\nvar MaxpTable = (function (Table) {\n function MaxpTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) MaxpTable.__proto__ = Table;\n MaxpTable.prototype = Object.create( Table && Table.prototype );\n MaxpTable.prototype.constructor = MaxpTable;\n\n MaxpTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.numGlyphs = data.readShort();\n this.maxPoints = data.readShort();\n this.maxContours = data.readShort();\n this.maxComponentPoints = data.readShort();\n this.maxComponentContours = data.readShort();\n this.maxZones = data.readShort();\n this.maxTwilightPoints = data.readShort();\n this.maxStorage = data.readShort();\n this.maxFunctionDefs = data.readShort();\n this.maxInstructionDefs = data.readShort();\n this.maxStackElements = data.readShort();\n this.maxSizeOfInstructions = data.readShort();\n this.maxComponentElements = data.readShort();\n this.maxComponentDepth = data.readShort();\n };\n\n MaxpTable.prototype.render = function render (glyphIds) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort(glyphIds.length);\n out.writeShort(this.maxPoints);\n out.writeShort(this.maxContours);\n out.writeShort(this.maxComponentPoints);\n out.writeShort(this.maxComponentContours);\n out.writeShort(this.maxZones);\n out.writeShort(this.maxTwilightPoints);\n out.writeShort(this.maxStorage);\n out.writeShort(this.maxFunctionDefs);\n out.writeShort(this.maxInstructionDefs);\n out.writeShort(this.maxStackElements);\n out.writeShort(this.maxSizeOfInstructions);\n out.writeShort(this.maxComponentElements);\n out.writeShort(this.maxComponentDepth);\n return out.get();\n };\n\n return MaxpTable;\n}(Table));\n\nvar HmtxTable = (function (Table) {\n function HmtxTable () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) HmtxTable.__proto__ = Table;\n HmtxTable.prototype = Object.create( Table && Table.prototype );\n HmtxTable.prototype.constructor = HmtxTable;\n\n HmtxTable.prototype.parse = function parse (data) {\n data.offset(this.offset);\n var dir = this.file, hhea = dir.hhea;\n this.metrics = data.times(hhea.numOfLongHorMetrics, function(){\n return {\n advance: data.readShort(),\n lsb: data.readShort_()\n };\n });\n var lsbCount = dir.maxp.numGlyphs - dir.hhea.numOfLongHorMetrics;\n this.leftSideBearings = data.times(lsbCount, data.readShort_);\n };\n\n HmtxTable.prototype.forGlyph = function forGlyph (id) {\n var metrics = this.metrics;\n var n = metrics.length;\n if (id < n) {\n return metrics[id];\n }\n return {\n advance: metrics[n - 1].advance,\n lsb: this.leftSideBearings[id - n]\n };\n };\n\n HmtxTable.prototype.render = function render (glyphIds) {\n var this$1 = this;\n\n var out = BinaryStream();\n for (var i = 0; i < glyphIds.length; ++i) {\n var m = this$1.forGlyph(glyphIds[i]);\n out.writeShort(m.advance);\n out.writeShort_(m.lsb);\n }\n return out.get();\n };\n\n return HmtxTable;\n}(Table));\n\nvar GlyfTable = (function(){\n var SimpleGlyph = function SimpleGlyph(raw) {\n this.raw = raw;\n };\n\n var prototypeAccessors = { compound: { configurable: true } };\n\n prototypeAccessors.compound.get = function () {\n return false;\n };\n\n SimpleGlyph.prototype.render = function render () {\n return this.raw.get();\n };\n\n Object.defineProperties( SimpleGlyph.prototype, prototypeAccessors );\n\n var ARG_1_AND_2_ARE_WORDS = 0x0001;\n var WE_HAVE_A_SCALE = 0x0008;\n var MORE_COMPONENTS = 0x0020;\n var WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n var WE_HAVE_A_TWO_BY_TWO = 0x0080;\n //var WE_HAVE_INSTRUCTIONS = 0x0100;\n\n var CompoundGlyph = function CompoundGlyph(data) {\n this.raw = data;\n var ids = this.glyphIds = [];\n var offsets = this.idOffsets = [];\n while (true) { // eslint-disable-line no-constant-condition\n var flags = data.readShort();\n offsets.push(data.offset());\n ids.push(data.readShort());\n\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n\n data.skip(flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.skip(8);\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.skip(4);\n } else if (flags & WE_HAVE_A_SCALE) {\n data.skip(2);\n }\n }\n };\n\n var prototypeAccessors$1 = { compound: { configurable: true } };\n\n prototypeAccessors$1.compound.get = function () {\n return true;\n };\n\n CompoundGlyph.prototype.render = function render (old2new) {\n var this$1 = this;\n\n var out = BinaryStream(this.raw.get());\n for (var i = 0; i < this.glyphIds.length; ++i) {\n var id = this$1.glyphIds[i];\n out.offset(this$1.idOffsets[i]);\n out.writeShort(old2new[id]);\n }\n return out.get();\n };\n\n Object.defineProperties( CompoundGlyph.prototype, prototypeAccessors$1 );\n\n return (function (Table) {\n function anonymous () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) anonymous.__proto__ = Table;\n anonymous.prototype = Object.create( Table && Table.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.parse = function parse () {\n this.cache = {};\n };\n\n anonymous.prototype.glyphFor = function glyphFor (id) {\n var cache = this.cache;\n if (hasOwnProperty(cache, id)) {\n return cache[id];\n }\n\n var loca = this.file.loca;\n var length = loca.lengthOf(id);\n\n if (length === 0) {\n return (cache[id] = null);\n }\n\n var data = this.rawData;\n var offset = this.offset + loca.offsetOf(id);\n var raw = BinaryStream(data.slice(offset, length));\n\n var numberOfContours = raw.readShort_();\n var xMin = raw.readShort_();\n var yMin = raw.readShort_();\n var xMax = raw.readShort_();\n var yMax = raw.readShort_();\n\n var glyph = cache[id] = numberOfContours < 0 ? new CompoundGlyph(raw) : new SimpleGlyph(raw);\n\n glyph.numberOfContours = numberOfContours;\n glyph.xMin = xMin;\n glyph.yMin = yMin;\n glyph.xMax = xMax;\n glyph.yMax = yMax;\n\n return glyph;\n };\n\n anonymous.prototype.render = function render (glyphs, oldIds, old2new) {\n var out = BinaryStream(), offsets = [];\n for (var i = 0; i < oldIds.length; ++i) {\n var id = oldIds[i];\n var glyph = glyphs[id];\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n if (glyph) {\n out.write(glyph.render(old2new));\n }\n }\n if (out.offset() % 2) {\n out.writeByte(0);\n }\n offsets.push(out.offset());\n return {\n table: out.get(),\n offsets: offsets\n };\n };\n\n return anonymous;\n }(Table));\n}());\n\nvar NameTable = (function(){\n var NameEntry = function NameEntry(text, entry) {\n this.text = text;\n this.length = text.length;\n this.platformID = entry.platformID;\n this.platformSpecificID = entry.platformSpecificID;\n this.languageID = entry.languageID;\n this.nameID = entry.nameID;\n };\n\n return (function (Table) {\n function anonymous () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) anonymous.__proto__ = Table;\n anonymous.prototype = Object.create( Table && Table.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.parse = function parse (data) {\n data.offset(this.offset);\n data.readShort(); // format\n var count = data.readShort();\n var stringOffset = this.offset + data.readShort();\n var nameRecords = data.times(count, function(){\n return {\n platformID : data.readShort(),\n platformSpecificID : data.readShort(),\n languageID : data.readShort(),\n nameID : data.readShort(),\n length : data.readShort(),\n offset : data.readShort() + stringOffset\n };\n });\n var strings = this.strings = {};\n for (var i = 0; i < nameRecords.length; ++i) {\n var rec = nameRecords[i];\n data.offset(rec.offset);\n var text = data.readString(rec.length);\n if (!strings[rec.nameID]) {\n strings[rec.nameID] = [];\n }\n strings[rec.nameID].push(new NameEntry(text, rec));\n }\n this.postscriptEntry = strings[6][0];\n this.postscriptName = this.postscriptEntry.text.replace(/[^\\x20-\\x7F]/g, \"\");\n };\n\n anonymous.prototype.render = function render (psName) {\n var this$1 = this;\n\n var strings = this.strings;\n var strCount = 0;\n for (var i in strings) {\n if (hasOwnProperty(strings, i)) {\n strCount += strings[i].length;\n }\n }\n var out = BinaryStream();\n var strTable = BinaryStream();\n\n out.writeShort(0); // format\n out.writeShort(strCount);\n out.writeShort(6 + 12 * strCount); // stringOffset\n\n for (i in strings) {\n if (hasOwnProperty(strings, i)) {\n var list = i == 6 ? [\n new NameEntry(psName, this$1.postscriptEntry)\n ] : strings[i];\n for (var j = 0; j < list.length; ++j) {\n var str = list[j];\n out.writeShort(str.platformID);\n out.writeShort(str.platformSpecificID);\n out.writeShort(str.languageID);\n out.writeShort(str.nameID);\n out.writeShort(str.length);\n out.writeShort(strTable.offset());\n\n strTable.writeString(str.text);\n }\n }\n }\n\n out.write(strTable.get());\n\n return out.get();\n };\n\n return anonymous;\n }(Table));\n})();\n\nvar PostTable = (function(){\n var POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat\".split(/\\s+/g);\n\n return (function (Table) {\n function anonymous () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) anonymous.__proto__ = Table;\n anonymous.prototype = Object.create( Table && Table.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.parse = function parse (data) {\n var this$1 = this;\n\n data.offset(this.offset);\n\n this.format = data.readLong();\n this.italicAngle = data.readFixed_();\n this.underlinePosition = data.readShort_();\n this.underlineThickness = data.readShort_();\n this.isFixedPitch = data.readLong();\n this.minMemType42 = data.readLong();\n this.maxMemType42 = data.readLong();\n this.minMemType1 = data.readLong();\n this.maxMemType1 = data.readLong();\n\n var numberOfGlyphs;\n\n switch (this.format) {\n case 0x00010000:\n case 0x00030000:\n break;\n\n case 0x00020000:\n numberOfGlyphs = data.readShort();\n this.glyphNameIndex = data.times(numberOfGlyphs, data.readShort);\n this.names = [];\n var limit = this.offset + this.length;\n while (data.offset() < limit) {\n this$1.names.push(data.readString(data.readByte()));\n }\n break;\n\n case 0x00025000:\n numberOfGlyphs = data.readShort();\n this.offsets = data.read(numberOfGlyphs);\n break;\n\n case 0x00040000:\n this.map = data.times(this.file.maxp.numGlyphs, data.readShort);\n break;\n }\n };\n\n anonymous.prototype.glyphFor = function glyphFor (code) {\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || \".notdef\";\n\n case 0x00020000:\n var index = this.glyphNameIndex[code];\n if (index < POSTSCRIPT_GLYPHS.length) {\n return POSTSCRIPT_GLYPHS[index];\n }\n return this.names[index - POSTSCRIPT_GLYPHS.length] || \".notdef\";\n\n case 0x00025000:\n\n case 0x00030000:\n return \".notdef\";\n\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n };\n\n anonymous.prototype.render = function render (mapping) {\n var this$1 = this;\n\n if (this.format == 0x00030000) {\n return this.raw();\n }\n\n // keep original header, but set format to 2.0\n var out = BinaryStream(this.rawData.slice(this.offset, 32));\n out.writeLong(0x00020000);\n out.offset(32);\n\n var indexes = [];\n var strings = [];\n\n for (var i = 0; i < mapping.length; ++i) {\n var id = mapping[i];\n var post = this$1.glyphFor(id);\n var index = POSTSCRIPT_GLYPHS.indexOf(post);\n if (index >= 0) {\n indexes.push(index);\n } else {\n indexes.push(POSTSCRIPT_GLYPHS.length + strings.length);\n strings.push(post);\n }\n }\n\n out.writeShort(mapping.length);\n\n for (i = 0; i < indexes.length; ++i) {\n out.writeShort(indexes[i]);\n }\n\n for (i = 0; i < strings.length; ++i) {\n out.writeByte(strings[i].length);\n out.writeString(strings[i]);\n }\n\n return out.get();\n };\n\n return anonymous;\n }(Table));\n})();\n\nvar CmapTable = (function(){\n var CmapEntry = function CmapEntry(data, offset, codeMap) {\n var self = this;\n self.platformID = data.readShort();\n self.platformSpecificID = data.readShort();\n self.offset = offset + data.readLong();\n\n data.saveExcursion(function(){\n var code;\n data.offset(self.offset);\n self.format = data.readShort();\n\n switch (self.format) {\n case 0:\n self.length = data.readShort();\n self.language = data.readShort();\n for (var i = 0; i < 256; ++i) {\n codeMap[i] = data.readByte();\n }\n break;\n\n case 4:\n self.length = data.readShort();\n self.language = data.readShort();\n var segCount = data.readShort() / 2;\n\n data.skip(6); // searchRange, entrySelector, rangeShift\n var endCode = data.times(segCount, data.readShort);\n data.skip(2); // reserved pad\n var startCode = data.times(segCount, data.readShort);\n var idDelta = data.times(segCount, data.readShort_);\n var idRangeOffset = data.times(segCount, data.readShort);\n\n var count = (self.length + self.offset - data.offset()) / 2;\n var glyphIds = data.times(count, data.readShort);\n\n for (i = 0; i < segCount; ++i) {\n var start = startCode[i], end = endCode[i];\n for (code = start; code <= end; ++code) {\n var glyphId;\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n ///\n // When non-zero, idRangeOffset contains for each segment the byte offset of the Glyph ID\n // into the glyphIds table, from the *current* `i` cell of idRangeOffset. In other words,\n // this offset spans from the first into the second array. This works, because the arrays\n // are consecutive in the TTF file:\n //\n // [ ...idRangeOffset... ][ ...glyphIds... ]\n // ...... 48 ...... .... ID ....\n // ^----- 48 bytes -----^\n //\n // (but I can't stop wondering why is it not just a plain index, possibly incremented by 1\n // so that we can have that special `zero` value.)\n //\n // The elements of idRangeOffset are even numbers, because both arrays contain 16-bit words,\n // yet the offset is in bytes. That is why we divide it by 2. Then we subtract the\n // remaining segments (segCount-i), and add the code-start offset, to which we need to add\n // the corresponding delta to get the actual glyph ID.\n ///\n var index = idRangeOffset[i] / 2 - (segCount - i) + (code - start);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n codeMap[code] = glyphId & 0xFFFF;\n }\n }\n break;\n\n case 6:\n self.length = data.readShort();\n self.language = data.readShort();\n code = data.readShort();\n var length = data.readShort();\n while (length-- > 0) {\n codeMap[code++] = data.readShort();\n }\n break;\n\n case 12:\n data.readShort(); // reserved\n self.length = data.readLong();\n self.language = data.readLong();\n var ngroups = data.readLong();\n while (ngroups-- > 0) {\n code = data.readLong();\n var endCharCode = data.readLong();\n var glyphCode = data.readLong();\n while (code <= endCharCode) {\n codeMap[code++] = glyphCode++;\n }\n }\n break;\n\n default:\n if (window.console) {\n window.console.error(\"Unhandled CMAP format: \" + self.format);\n }\n }\n });\n };\n\n function renderCharmap(ncid2ogid, ogid2ngid) {\n var codes = sortedKeys(ncid2ogid);\n var startCodes = [];\n var endCodes = [];\n var last = null;\n var diff = null;\n\n function new_gid(charcode) {\n return ogid2ngid[ncid2ogid[charcode]];\n }\n\n for (var i = 0; i < codes.length; ++i) {\n var code = codes[i];\n var gid = new_gid(code);\n var delta = gid - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(0xFFFF);\n startCodes.push(0xFFFF);\n\n var segCount = startCodes.length;\n var segCountX2 = segCount * 2;\n var searchRange = 2 * Math.pow(2, Math.floor(Math.log(segCount) / Math.LN2));\n var entrySelector = Math.log(searchRange / 2) / Math.LN2;\n var rangeShift = segCountX2 - searchRange;\n\n var deltas = [];\n var rangeOffsets = [];\n var glyphIds = [];\n\n for (i = 0; i < segCount; ++i) {\n var startCode = startCodes[i];\n var endCode = endCodes[i];\n if (startCode == 0xFFFF) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n var startGlyph = new_gid(startCode);\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIds.length + segCount - i));\n for (var j = startCode; j <= endCode; ++j) {\n glyphIds.push(new_gid(j));\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n\n var out = BinaryStream();\n\n out.writeShort(3); // platformID\n out.writeShort(1); // platformSpecificID\n out.writeLong(12); // offset\n out.writeShort(4); // format\n out.writeShort(16 + segCount * 8 + glyphIds.length * 2); // length\n out.writeShort(0); // language\n out.writeShort(segCountX2);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n endCodes.forEach(out.writeShort);\n out.writeShort(0); // reserved pad\n startCodes.forEach(out.writeShort);\n deltas.forEach(out.writeShort_);\n rangeOffsets.forEach(out.writeShort);\n glyphIds.forEach(out.writeShort);\n\n return out.get();\n }\n\n return (function (Table) {\n function anonymous () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) anonymous.__proto__ = Table;\n anonymous.prototype = Object.create( Table && Table.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.parse = function parse (data) {\n var self = this;\n var offset = self.offset;\n data.offset(offset);\n self.codeMap = {};\n self.version = data.readShort();\n var tableCount = data.readShort();\n self.tables = data.times(tableCount, function(){\n return new CmapEntry(data, offset, self.codeMap);\n });\n };\n\n anonymous.render = function render (ncid2ogid, ogid2ngid) {\n var out = BinaryStream();\n out.writeShort(0); // version\n out.writeShort(1); // tableCount\n out.write(renderCharmap(ncid2ogid, ogid2ngid));\n return out.get();\n };\n\n return anonymous;\n }(Table));\n\n})();\n\nvar OS2Table = (function (Table) {\n function OS2Table () {\n Table.apply(this, arguments);\n }\n\n if ( Table ) OS2Table.__proto__ = Table;\n OS2Table.prototype = Object.create( Table && Table.prototype );\n OS2Table.prototype.constructor = OS2Table;\n\n OS2Table.prototype.parse = function parse (data) {\n data.offset(this.offset);\n this.version = data.readShort();\n this.averageCharWidth = data.readShort_();\n this.weightClass = data.readShort();\n this.widthClass = data.readShort();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort_();\n this.ySubscriptYSize = data.readShort_();\n this.ySubscriptXOffset = data.readShort_();\n this.ySubscriptYOffset = data.readShort_();\n this.ySuperscriptXSize = data.readShort_();\n this.ySuperscriptYSize = data.readShort_();\n this.ySuperscriptXOffset = data.readShort_();\n this.ySuperscriptYOffset = data.readShort_();\n this.yStrikeoutSize = data.readShort_();\n this.yStrikeoutPosition = data.readShort_();\n this.familyClass = data.readShort_();\n\n this.panose = data.times(10, data.readByte);\n this.charRange = data.times(4, data.readLong);\n\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n\n if (this.version > 0) {\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = data.times(2, data.readLong);\n\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n this.maxContext = data.readShort();\n }\n }\n };\n\n OS2Table.prototype.render = function render () {\n return this.raw();\n };\n\n return OS2Table;\n}(Table));\n\nvar subsetTag = 100000;\n\nfunction nextSubsetTag() {\n var ret = \"\", n = String(subsetTag);\n for (var i = 0; i < n.length; ++i) {\n ret += String.fromCharCode(n.charCodeAt(i) - 48 + 65);\n }\n ++subsetTag;\n return ret;\n}\n\nvar Subfont = function Subfont(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.ogid2ngid = { 0: 0 };\n this.ngid2ogid = { 0: 0 };\n this.ncid2ogid = {};\n this.next = this.firstChar = 1;\n this.nextGid = 1;\n this.psName = nextSubsetTag() + \"+\" + this.font.psName;\n};\n\nSubfont.prototype.use = function use (ch) {\n var self = this;\n if (typeof ch == \"string\") {\n return ucs2decode(ch).reduce(function(ret, code){\n return ret + String.fromCharCode(self.use(code));\n }, \"\");\n }\n var code = self.unicodes[ch];\n if (!code) {\n code = self.next++;\n self.subset[code] = ch;\n self.unicodes[ch] = code;\n\n // generate new GID (glyph ID) and maintain newGID ->\n // oldGID and back mappings\n var old_gid = self.font.cmap.codeMap[ch];\n if (old_gid) {\n self.ncid2ogid[code] = old_gid;\n if (self.ogid2ngid[old_gid] == null) {\n var new_gid = self.nextGid++;\n self.ogid2ngid[old_gid] = new_gid;\n self.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n return code;\n};\n\nSubfont.prototype.encodeText = function encodeText (text) {\n return this.use(text);\n};\n\nSubfont.prototype.glyphIds = function glyphIds () {\n return sortedKeys(this.ogid2ngid);\n};\n\nSubfont.prototype.glyphsFor = function glyphsFor (glyphIds, result) {\n var this$1 = this;\n\n if (!result) {\n result = {};\n }\n for (var i = 0; i < glyphIds.length; ++i) {\n var id = glyphIds[i];\n if (!result[id]) {\n var glyph = result[id] = this$1.font.glyf.glyphFor(id);\n if (glyph && glyph.compound) {\n this$1.glyphsFor(glyph.glyphIds, result);\n }\n }\n }\n return result;\n};\n\nSubfont.prototype.render = function render () {\n var this$1 = this;\n\n var glyphs = this.glyphsFor(this.glyphIds());\n\n // add missing sub-glyphs\n for (var old_gid in glyphs) {\n if (hasOwnProperty(glyphs, old_gid)) {\n old_gid = parseInt(old_gid, 10);\n if (this$1.ogid2ngid[old_gid] == null) {\n var new_gid = this$1.nextGid++;\n this$1.ogid2ngid[old_gid] = new_gid;\n this$1.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n\n // must obtain old_gid_ids in an order matching sorted\n // new_gid_ids\n var new_gid_ids = sortedKeys(this.ngid2ogid);\n var old_gid_ids = new_gid_ids.map(function(id){\n return this.ngid2ogid[id];\n }, this);\n\n var font = this.font;\n var glyf = font.glyf.render(glyphs, old_gid_ids, this.ogid2ngid);\n var loca = font.loca.render(glyf.offsets);\n\n this.lastChar = this.next - 1;\n\n var tables = {\n \"cmap\" : CmapTable.render(this.ncid2ogid, this.ogid2ngid),\n \"glyf\" : glyf.table,\n \"loca\" : loca.table,\n \"hmtx\" : font.hmtx.render(old_gid_ids),\n \"hhea\" : font.hhea.render(old_gid_ids),\n \"maxp\" : font.maxp.render(old_gid_ids),\n \"post\" : font.post.render(old_gid_ids),\n \"name\" : font.name.render(this.psName),\n \"head\" : font.head.render(loca.format),\n \"OS/2\" : font.os2.render()\n };\n\n return this.font.directory.render(tables);\n};\n\nSubfont.prototype.cidToGidMap = function cidToGidMap () {\n var this$1 = this;\n\n var out = BinaryStream(), len = 0;\n for (var cid = this.firstChar; cid < this.next; ++cid) {\n while (len < cid) {\n out.writeShort(0);\n len++;\n }\n var old_gid = this$1.ncid2ogid[cid];\n if (old_gid) {\n var new_gid = this$1.ogid2ngid[old_gid];\n out.writeShort(new_gid);\n } else {\n out.writeShort(0);\n }\n len++;\n }\n return out.get();\n};\n\nvar TTFFont = function TTFFont(rawData, name) {\n var self = this;\n var data = self.contents = BinaryStream(rawData);\n if (data.readString(4) == \"ttcf\") {\n var offset;\n var parse = function() {\n data.offset(offset);\n self.parse();\n };\n if (!name) {\n throw new Error(\"Must specify a name for TTC files\");\n }\n data.readLong(); // version\n var numFonts = data.readLong();\n for (var i = 0; i < numFonts; ++i) {\n offset = data.readLong();\n data.saveExcursion(parse);\n if (self.psName == name) {\n return;\n }\n }\n throw new Error(\"Font \" + name + \" not found in collection\");\n } else {\n data.offset(0);\n self.parse();\n }\n};\n\nTTFFont.prototype.parse = function parse () {\n var dir = this.directory = new Directory(this.contents);\n\n this.head = dir.readTable(\"head\", HeadTable);\n this.loca = dir.readTable(\"loca\", LocaTable);\n this.hhea = dir.readTable(\"hhea\", HheaTable);\n this.maxp = dir.readTable(\"maxp\", MaxpTable);\n this.hmtx = dir.readTable(\"hmtx\", HmtxTable);\n this.glyf = dir.readTable(\"glyf\", GlyfTable);\n this.name = dir.readTable(\"name\", NameTable);\n this.post = dir.readTable(\"post\", PostTable);\n this.cmap = dir.readTable(\"cmap\", CmapTable);\n this.os2 = dir.readTable(\"OS/2\", OS2Table);\n\n this.psName = this.name.postscriptName;\n this.ascent = this.os2.ascent || this.hhea.ascent;\n this.descent = this.os2.descent || this.hhea.descent;\n this.lineGap = this.os2.lineGap || this.hhea.lineGap;\n this.scale = 1000 / this.head.unitsPerEm;\n};\n\nTTFFont.prototype.widthOfGlyph = function widthOfGlyph (glyph) {\n return this.hmtx.forGlyph(glyph).advance * this.scale;\n};\n\nTTFFont.prototype.makeSubset = function makeSubset () {\n return new Subfont(this);\n};\n\nexport { TTFFont };\n","/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\nvar Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n/* Return codes for the compression/decompression functions. Negative values\n* are errors, positive values are used for special but normal events.\n*/\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\nvar Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//export var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//export var Z_VERSION_ERROR = -6;\n\n/* compression levels */\nvar Z_NO_COMPRESSION = 0;\nvar Z_BEST_SPEED = 1;\nvar Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//export var Z_ASCII = 1; // = Z_TEXT (deprecated)\nvar Z_UNKNOWN = 2;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n//export var Z_NULL = null // Use -1 or null inline; depending on var type\n\n/* eslint-disable */\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction assign(obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n}\n\n\n// reduce buffer size, avoiding mem copy\nfunction shrinkBuf(buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n}\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n },\n Buf8: function(size) {\n return new Uint8Array(size);\n },\n Buf16: function(size) {\n return new Uint16Array(size);\n },\n Buf32: function(size) {\n return new Int32Array(size);\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n },\n Buf8: function(size) {\n return new Array(size);\n },\n Buf16: function(size) {\n return new Array(size);\n },\n Buf32: function(size) {\n return new Array(size);\n }\n};\n\nvar typedOK = function () {\n var supported =\n (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\n typedOK = function () { return supported; };\n return supported;\n};\n\nvar arraySet = function (dest, src, src_offs, len, dest_offs) {\n arraySet = typedOK() ?\n fnTyped.arraySet : fnUntyped.arraySet;\n\n return arraySet(dest, src, src_offs, len, dest_offs);\n};\n\nvar flattenChunks = function (chunks) {\n flattenChunks = typedOK() ?\n fnTyped.flattenChunks : fnUntyped.flattenChunks;\n\n return flattenChunks(chunks);\n};\n\nvar Buf8 = function (size) {\n Buf8 = typedOK() ? fnTyped.Buf8 : fnUntyped.Buf8;\n return Buf8(size);\n};\n\nvar Buf16 = function (size) {\n Buf16 = typedOK() ? fnTyped.Buf16 : fnUntyped.Buf16;\n return Buf16(size);\n};\n\nvar Buf32 = function (size) {\n Buf32 = typedOK() ? fnTyped.Buf32 : fnUntyped.Buf32;\n return Buf32(size);\n};\n\n/* eslint-disable */\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\nvar strApplyOK = function() {\n var result = true;\n try {\n String.fromCharCode.apply(null, [ 0 ]);\n } catch (_) {\n result = false;\n }\n\n strApplyOK = function () { return result; };\n return result;\n};\n\nvar strApplyUintOK = function() {\n var result = true;\n try {\n String.fromCharCode.apply(null, new Uint8Array(1));\n } catch (_) {\n result = false;\n }\n\n strApplyUintOK = function () { return result; };\n return result;\n};\n\nvar utf8len = function(c) {\n // Table with utf8 lengths (calculated by first byte of sequence)\n // Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n // because max possible codepoint is 0x10ffff\n var table = Buf8(256);\n for (var q = 0; q < 256; q++) {\n table[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n }\n table[254] = table[254] = 1; // Invalid sequence start\n\n utf8len = function (arg) { return table[arg]; };\n return table[c];\n};\n\n// convert string to array (typed, when possible)\nfunction string2buf(str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n}\n\n// Helper (used in 2 places)\nfunction _buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && strApplyUintOK()) || (!buf.subarray && strApplyOK())) {\n return String.fromCharCode.apply(null, shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nfunction buf2binstring(buf) {\n return _buf2binstring(buf, buf.length);\n}\n\n\n// Convert binary string (typed, when possible)\nfunction binstring2buf(str) {\n var buf = new Uint8Array(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n}\n\n\n// convert array to string\nfunction buf2string(buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = utf8len(c);\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return _buf2binstring(utf16buf, out);\n}\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nfunction utf8border(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + utf8len(buf[pos]) > max) ? pos : max;\n}\n\n/* eslint-disable */\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n/* eslint-disable */\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\nvar crcTable = function() {\n var table = makeTable();\n crcTable = function () { return table; };\n return table;\n};\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable(),\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nfunction inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n}\n\n/* eslint-disable */\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nfunction inflate_table(type, lens, lens_index, codes, table, table_index, work, opts) {\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n}\n\n/* eslint-disable */\n\nvar CODES$1 = 0;\nvar LENS$1 = 1;\nvar DISTS$1 = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH$1 = 4;\nvar Z_BLOCK$1 = 5;\nvar Z_TREES$1 = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK$1 = 0;\nvar Z_STREAM_END$1 = 1;\nvar Z_NEED_DICT$1 = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR$1 = -2;\nvar Z_DATA_ERROR$1 = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR$1 = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED$1 = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE$1 = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD$1 = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS$1 = 852;\nvar ENOUGH_DISTS$1 = 592;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = Buf16(320); /* temporary storage for code lengths */\n this.work = Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = Buf32(ENOUGH_LENS$1);\n state.distcode = state.distdyn = Buf32(ENOUGH_DISTS$1);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK$1;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR$1;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR$1; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK$1) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = Buf32(512);\n distfix = Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS$1, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS$1, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR$1;\n }\n\n state = strm.state;\n if (state.mode === TYPE$1) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK$1;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD$1;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD$1;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE$1;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED$1) {\n strm.msg = 'unknown compression method';\n state.mode = BAD$1;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD$1;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE$1;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT$1;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE$1;\n /* falls through */\n case TYPE$1:\n if (flush === Z_BLOCK$1 || flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES$1) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD$1;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD$1;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE$1;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES$1, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD$1;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD$1) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD$1;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS$1, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD$1;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS$1, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD$1;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES$1) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE$1) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE$1;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD$1;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD$1;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD$1;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD$1;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END$1;\n break inf_leave;\n case BAD$1:\n ret = Z_DATA_ERROR$1;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR$1;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD$1 &&\n (state.mode < CHECK || flush !== Z_FINISH$1))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE$1 ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH$1) && ret === Z_OK$1) {\n ret = Z_BUF_ERROR$1;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR$1;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK$1;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR$1; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK$1;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR$1; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR$1;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR$1;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK$1;\n}\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar msg = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\n/* eslint-disable */\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\n/* eslint-disable */\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nvar Inflate = function Inflate(options) {\n if (!(this instanceof Inflate)) { return new Inflate(options); }\n\n this.options = assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended= false;// used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status= inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n};\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);// push last chunk\n * ```\n **/\nInflate.prototype.push = function push (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = inflate(strm, Z_NO_FLUSH); /* no bad return value */\n\n if (status === Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === Z_BUF_ERROR && allowBufError === true) {\n status = Z_OK;\n allowBufError = false;\n }\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n if (status === Z_STREAM_END) {\n _mode = Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function onData (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function onEnd (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate$1(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate$1(input, options);\n}\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\nvar ungzip = inflate$1;\n\n/* eslint-disable */\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree;\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree;\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code;\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code;\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length;\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist;\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s) {\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last) {\n //DeflateState *s;\n //charf *buf; /* input block, or NULL if too old */\n //ulg stored_len; /* length of input block */\n //int last; /* one if this is the last block for a file */\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc) {\n // deflate_state *s;\n // unsigned dist; /* distance of matched string */\n // unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\n/* eslint-disable */\n\nvar MAX_MEM_LEVEL = 9;\n\n\nvar LENGTH_CODES$1 = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS$1 = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES$1 = LITERALS$1 + 1 + LENGTH_CODES$1;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES$1 = 30;\n/* number of distance codes */\nvar BL_CODES$1 = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE$1 = 2 * L_CODES$1 + 1;\n/* maximum heap size */\nvar MAX_BITS$1 = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH$1 = 3;\nvar MAX_MATCH$1 = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH$1 + MIN_MATCH$1 + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero$1(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH$1;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH$1 - (strend - scan);\n scan = strend - MAX_MATCH$1;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH$1) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH$1) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH$1) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH$1) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH$1 - 1)) ? s.strstart : MIN_MATCH$1 - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH$1) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH$1 - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH$1 && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH$1 - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH$1 && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH$1;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH$1);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH$1 - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH$1 - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH$1 - 1 ? s.strstart : MIN_MATCH$1 - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH$1) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH$1 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH$1 && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH$1;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH$1 - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH$1) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH$1);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configurationTable = function() {\n var table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n \n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n ];\n\n configurationTable = function () { return table; };\n return table;\n};\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n\n var table = configurationTable();\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = table[s.level].max_lazy;\n s.good_match = table[s.level].good_length;\n s.nice_match = table[s.level].nice_length;\n s.max_chain_length = table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = Buf16(HEAP_SIZE$1 * 2);\n this.dyn_dtree = Buf16((2 * D_CODES$1 + 1) * 2);\n this.bl_tree = Buf16((2 * BL_CODES$1 + 1) * 2);\n zero$1(this.dyn_ltree);\n zero$1(this.dyn_dtree);\n zero$1(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = Buf16(MAX_BITS$1 + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = Buf16(2 * L_CODES$1 + 1); /* heap used to build the Huffman trees */\n zero$1(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = Buf16(2 * L_CODES$1 + 1); //uch depth[2*L_CODES+1];\n zero$1(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n _tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH$1 - 1) / MIN_MATCH$1);\n\n s.window = Buf8(s.w_size * 2);\n s.head = Buf16(s.hash_size);\n s.prev = Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configurationTable()[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero$1(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero$1(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = Buf8(s.w_size);\n arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH$1) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH$1 - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH$1 - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH$1 - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH$1 - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n/* eslint-disable */\n\nvar toString$1 = Object.prototype.toString;\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nvar Deflate = function Deflate(options) {\n this.options = assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended= false;// used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = string2buf(opt.dictionary);\n } else if (toString$1.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n};\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);// push last chunk\n * ```\n **/\nDeflate.prototype.push = function push (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = string2buf(data);\n } else if (toString$1.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(buf2binstring(shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function onData (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function onEnd (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate$1(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate$1(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate$1(input, options);\n}\n\nexport { Deflate, Inflate, Z_BEST_COMPRESSION, Z_BEST_SPEED, Z_BINARY, Z_BLOCK, Z_BUF_ERROR, Z_DATA_ERROR, Z_DEFAULT_COMPRESSION, Z_DEFAULT_STRATEGY, Z_DEFLATED, Z_ERRNO, Z_FILTERED, Z_FINISH, Z_FIXED, Z_FULL_FLUSH, Z_HUFFMAN_ONLY, Z_NEED_DICT, Z_NO_COMPRESSION, Z_NO_FLUSH, Z_OK, Z_PARTIAL_FLUSH, Z_RLE, Z_STREAM_END, Z_STREAM_ERROR, Z_SYNC_FLUSH, Z_TEXT, Z_TREES, Z_UNKNOWN, deflate$1 as deflate, deflateRaw, gzip, inflate$1 as inflate, inflateRaw, ungzip };\n","import { deflate as pakoDeflate } from '@progress/pako-esm';\n\nexport var deflate = pakoDeflate;\n\nexport function supportsDeflate() {\n return true;\n}\n\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { BinaryStream, ucs2encode, base64ToUint8Array, HAS_TYPED_ARRAYS } from \"./utils\";\nimport { support } from '../common';\nimport { TTFFont } from \"./ttf\";\nimport { deflate, supportsDeflate } from './deflate';\nimport { encodeUTF16BE, BOM } from \"../util/encode-utf\";\nimport { encodeBase64 } from \"../util\";\n\nvar browser = support.browser;\nvar NL = \"\\n\";\n\nvar RESOURCE_COUNTER = 0;\n\nvar PAPER_SIZE = {\n a0 : [ 2383.94 , 3370.39 ],\n a1 : [ 1683.78 , 2383.94 ],\n a2 : [ 1190.55 , 1683.78 ],\n a3 : [ 841.89 , 1190.55 ],\n a4 : [ 595.28 , 841.89 ],\n a5 : [ 419.53 , 595.28 ],\n a6 : [ 297.64 , 419.53 ],\n a7 : [ 209.76 , 297.64 ],\n a8 : [ 147.40 , 209.76 ],\n a9 : [ 104.88 , 147.40 ],\n a10 : [ 73.70 , 104.88 ],\n b0 : [ 2834.65 , 4008.19 ],\n b1 : [ 2004.09 , 2834.65 ],\n b2 : [ 1417.32 , 2004.09 ],\n b3 : [ 1000.63 , 1417.32 ],\n b4 : [ 708.66 , 1000.63 ],\n b5 : [ 498.90 , 708.66 ],\n b6 : [ 354.33 , 498.90 ],\n b7 : [ 249.45 , 354.33 ],\n b8 : [ 175.75 , 249.45 ],\n b9 : [ 124.72 , 175.75 ],\n b10 : [ 87.87 , 124.72 ],\n c0 : [ 2599.37 , 3676.54 ],\n c1 : [ 1836.85 , 2599.37 ],\n c2 : [ 1298.27 , 1836.85 ],\n c3 : [ 918.43 , 1298.27 ],\n c4 : [ 649.13 , 918.43 ],\n c5 : [ 459.21 , 649.13 ],\n c6 : [ 323.15 , 459.21 ],\n c7 : [ 229.61 , 323.15 ],\n c8 : [ 161.57 , 229.61 ],\n c9 : [ 113.39 , 161.57 ],\n c10 : [ 79.37 , 113.39 ],\n executive : [ 521.86 , 756.00 ],\n folio : [ 612.00 , 936.00 ],\n legal : [ 612.00 , 1008.00 ],\n letter : [ 612.00 , 792.00 ],\n tabloid : [ 792.00 , 1224.00 ]\n};\n\nfunction makeOutput() {\n var indentLevel = 0, output = BinaryStream();\n function out() {\n var arguments$1 = arguments;\n\n for (var i = 0; i < arguments.length; ++i) {\n var x = arguments$1[i];\n if (x === undefined) {\n throw new Error(\"Cannot output undefined to PDF\");\n }\n else if (x instanceof PDFValue) {\n x.beforeRender(out);\n x.render(out);\n }\n else if (isArray(x)) {\n renderArray(x, out);\n }\n else if (isDate(x)) {\n renderDate(x, out);\n }\n else if (typeof x == \"number\") {\n if (isNaN(x)) {\n throw new Error(\"Cannot output NaN to PDF\");\n }\n // make sure it doesn't end up in exponent notation\n var num = x.toFixed(7);\n if (num.indexOf(\".\") >= 0) {\n num = num.replace(/\\.?0+$/, \"\");\n }\n if (num == \"-0\") {\n num = \"0\";\n }\n output.writeString(num);\n }\n else if (/string|boolean/.test(typeof x)) {\n output.writeString(String(x));\n }\n else if (typeof x.get == \"function\") {\n output.write(x.get());\n }\n else if (typeof x == \"object\") {\n if (!x) {\n output.writeString(\"null\");\n } else {\n out(new PDFDictionary(x));\n }\n }\n }\n }\n out.writeData = function(data) {\n output.write(data);\n };\n out.withIndent = function(f) {\n ++indentLevel;\n f(out);\n --indentLevel;\n };\n out.indent = function() {\n out(NL, pad(\"\", indentLevel * 2, \" \"));\n out.apply(null, arguments);\n };\n out.offset = function() {\n return output.offset();\n };\n out.toString = function() {\n throw new Error(\"FIX CALLER\");\n };\n out.get = function() {\n return output.get();\n };\n out.stream = function() {\n return output;\n };\n return out;\n}\n\nfunction wrapObject(value, id) {\n var beforeRender = value.beforeRender;\n var renderValue = value.render;\n\n value.beforeRender = function(){};\n\n value.render = function(out) {\n out(id, \" 0 R\");\n };\n\n value.renderFull = function(out) {\n value._offset = out.offset();\n out(id, \" 0 obj \");\n beforeRender.call(value, out);\n renderValue.call(value, out);\n out(\" endobj\");\n };\n}\n\nfunction getPaperOptions(getOption) {\n if (typeof getOption != \"function\") {\n var options = getOption;\n getOption = function(key, def) {\n return key in options ? options[key] : def;\n };\n }\n var paperSize = getOption(\"paperSize\", PAPER_SIZE.a4);\n if (!paperSize) {\n return {};\n }\n if (typeof paperSize == \"string\") {\n paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n if (paperSize == null) {\n throw new Error(\"Unknown paper size\");\n }\n }\n\n paperSize[0] = unitsToPoints(paperSize[0]);\n paperSize[1] = unitsToPoints(paperSize[1]);\n\n if (getOption(\"landscape\", false)) {\n paperSize = [\n Math.max(paperSize[0], paperSize[1]),\n Math.min(paperSize[0], paperSize[1])\n ];\n }\n\n var margin = getOption(\"margin\");\n if (margin) {\n if (typeof margin == \"string\" || typeof margin == \"number\") {\n margin = unitsToPoints(margin, 0);\n margin = { left: margin, top: margin, right: margin, bottom: margin };\n } else {\n margin = {\n left : unitsToPoints(margin.left, 0),\n top : unitsToPoints(margin.top, 0),\n right : unitsToPoints(margin.right, 0),\n bottom : unitsToPoints(margin.bottom, 0)\n };\n }\n if (getOption(\"addMargin\")) {\n paperSize[0] += margin.left + margin.right;\n paperSize[1] += margin.top + margin.bottom;\n }\n }\n return { paperSize: paperSize, margin: margin };\n}\n\nvar FONT_CACHE = {\n \"Times-Roman\" : true,\n \"Times-Bold\" : true,\n \"Times-Italic\" : true,\n \"Times-BoldItalic\" : true,\n \"Helvetica\" : true,\n \"Helvetica-Bold\" : true,\n \"Helvetica-Oblique\" : true,\n \"Helvetica-BoldOblique\" : true,\n \"Courier\" : true,\n \"Courier-Bold\" : true,\n \"Courier-Oblique\" : true,\n \"Courier-BoldOblique\" : true,\n \"Symbol\" : true,\n \"ZapfDingbats\" : true\n};\n\nfunction loadBinary(url, cont) {\n // IE throws Accesss denied error for Data URIs\n var m;\n if (browser.msie && (m = /^data:.*?;base64,/i.exec(url))) {\n cont(base64ToUint8Array(url.substr(m[0].length)));\n return;\n }\n\n function error() {\n if (window.console) {\n if (window.console.error) {\n window.console.error(\"Cannot load URL: %s\", url);\n } else {\n window.console.log(\"Cannot load URL: %s\", url);\n }\n }\n cont(null);\n }\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n if (HAS_TYPED_ARRAYS) {\n req.responseType = \"arraybuffer\";\n }\n req.onload = function() {\n if (req.status == 200 || req.status == 304) {\n if (HAS_TYPED_ARRAYS) {\n cont(new Uint8Array(req.response));\n } else {\n cont(new window.VBArray(req.responseBody).toArray()); // IE9 only\n }\n } else {\n error();\n }\n };\n req.onerror = error;\n req.send(null);\n}\n\nfunction loadFont(url, cont) {\n var font = FONT_CACHE[url];\n if (font) {\n cont(font);\n } else {\n loadBinary(url, function(data){\n if (data == null) {\n throw new Error(\"Cannot load font from \" + url);\n } else {\n var font = new TTFFont(data);\n FONT_CACHE[url] = font;\n cont(font);\n }\n });\n }\n}\n\nvar IMAGE_CACHE = {};\n\nfunction clearImageCache() {\n IMAGE_CACHE = {};\n}\n\nfunction loadImage(url, size, cont, options) {\n var img = IMAGE_CACHE[url], bloburl, blob;\n if (img) {\n cont(img);\n } else {\n img = new Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n if (HAS_TYPED_ARRAYS && !(/^data:/i.test(url))) {\n // IE10 fails to load images from another domain even when the server sends the\n // proper CORS headers. a XHR, however, will be able to load the data.\n // http://stackoverflow.com/a/19734516/154985\n //\n // On the other hand, it's worth doing it this way for all browsers which support\n // responseType = \"blob\" (HAS_TYPED_ARRAYS will be true), because we can inspect the\n // mime type and if it's a JPEG (very common case) we can save a lot of time in\n // _load below.\n var xhr = new XMLHttpRequest();\n xhr.onload = function() {\n blob = xhr.response;\n if (browser.mozilla && blob.type == \"image/svg+xml\") {\n // Firefox won't render SVGs that don't contain width and height attributes.\n var reader = new FileReader();\n reader.onload = function() {\n var doc = new window.DOMParser().parseFromString(this.result, \"image/svg+xml\");\n var svg = doc.documentElement;\n if (svg.getAttribute(\"width\") && svg.getAttribute(\"height\")) {\n // we're good, continue with the existing blob.\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n } else {\n svg.setAttribute(\"width\", size.width);\n svg.setAttribute(\"height\", size.height);\n var xml = new window.XMLSerializer().serializeToString(svg);\n var dataURL = \"data:image/svg+xml;base64,\" + (encodeBase64(xml));\n _load(dataURL);\n }\n };\n reader.readAsText(blob);\n } else {\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n }\n };\n xhr.onerror = _onerror;\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"blob\";\n xhr.send();\n } else {\n _load(url);\n }\n }\n\n function _load(url) {\n img.src = url;\n if (img.complete && !browser.msie) {\n // IE, bless its little heart, says img.complete == true even though the image is\n // not loaded (width=0), therefore we must go the onload route (ticket 929635).\n _onload.call(img);\n } else {\n img.onload = _onload;\n img.onerror = _onerror;\n }\n }\n\n function _trycanvas() {\n if (!size) {\n size = { width: img.width, height: img.height };\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = size.width;\n canvas.height = size.height;\n\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, size.width, size.height);\n\n var imgdata;\n try {\n imgdata = ctx.getImageData(0, 0, size.width, size.height);\n } catch (ex) {\n // it tainted the canvas -- can't draw it.\n _onerror();\n return;\n } finally {\n if (bloburl) {\n URL.revokeObjectURL(bloburl);\n }\n }\n\n // in case it contains transparency, we must separate rgb data from the alpha\n // channel and create a PDFRawImage image with opacity. otherwise we can use a\n // PDFJpegImage.\n //\n // to do this in one step, we create the rgb and alpha streams anyway, even if\n // we might end up not using them if hasAlpha remains false.\n\n var hasAlpha = false, rgb = BinaryStream(), alpha = BinaryStream();\n var rawbytes = imgdata.data;\n var i = 0;\n while (i < rawbytes.length) {\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n var a = rawbytes[i++];\n if (a < 255) {\n hasAlpha = true;\n }\n alpha.writeByte(a);\n }\n\n if (hasAlpha || options.keepPNG) {\n img = new PDFRawImage(size.width, size.height, rgb, alpha);\n } else {\n // no transparency, encode as JPEG.\n var data = canvas.toDataURL(\"image/jpeg\", options.jpegQuality);\n data = data.substr(data.indexOf(\";base64,\") + 8);\n\n var stream = BinaryStream();\n stream.writeBase64(data);\n img = new PDFJpegImage(stream);\n }\n\n cont(IMAGE_CACHE[url] = img);\n }\n\n function _onerror() {\n cont(IMAGE_CACHE[url] = \"ERROR\");\n }\n\n function _onload() {\n if (size) {\n var svg = (blob && blob.type === 'image/svg+xml') || (\n /^data:image\\/svg\\+xml;/i.test(this.src.substring(0, 19))\n );\n\n var upscale = size.width >= img.width || size.height >= img.height;\n\n // Use the original image if requested size is bigger than the source,\n // unless it's an SVG that can be upscaled.\n if (!svg && upscale) {\n size = null;\n }\n }\n if (!size && blob && /^image\\/jpe?g$/i.test(blob.type)) {\n // If we know we got a JPEG, we can skip the process of rendering it to a\n // canvas, getting the pixel data, searching for transparency we know we won't\n // find, getting back a data URI and then decoding the BASE64 to finally get the\n // binary we already have. Also, we avoid downgrading the image quality, with\n // the possible drawback of making a bigger PDF; still, seems legit.\n //\n // Besides saving a lot of work, this also reuses the buffer memory\n // (BinaryStream does not create a copy), potentially saving some GC cycles.\n var reader = new FileReader();\n reader.onload = function() {\n try {\n var img = new PDFJpegImage(BinaryStream(new Uint8Array(this.result)));\n URL.revokeObjectURL(bloburl);\n cont(IMAGE_CACHE[url] = img);\n } catch (ex) {\n // if there's an error parsing the JPEG stream, it could be due to a\n // misconfigured server (improper content-type:\n // https://github.com/telerik/kendo-ui-core/issues/4184). If that's the case,\n // the canvas will still be able to draw it.\n _trycanvas();\n }\n };\n reader.readAsArrayBuffer(blob);\n } else {\n _trycanvas();\n }\n }\n}\n\nfunction manyLoader(loadOne) {\n return function(urls, callback) {\n var n = urls.length, i = n;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n while (i-- > 0) {\n loadOne(urls[i], next);\n }\n };\n}\n\nvar loadFonts = manyLoader(loadFont);\nvar loadImages = function(images, callback, options) {\n options = Object.assign({\n jpegQuality : 0.92,\n keepPNG : false\n }, options);\n var urls = Object.keys(images), n = urls.length;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n urls.forEach(function(url){\n loadImage(url, images[url], next, options);\n });\n};\n\nvar PDFDocument = function PDFDocument (options) {\n var self = this;\n var out = makeOutput();\n var objcount = 0;\n var objects = [];\n\n function getOption(name, defval) {\n return (options && options[name] != null) ? options[name] : defval;\n }\n\n self.getOption = getOption;\n\n self.attach = function(value) {\n if (objects.indexOf(value) < 0) {\n wrapObject(value, ++objcount);\n objects.push(value);\n }\n return value;\n };\n\n self.pages = [];\n\n self.FONTS = {};\n self.IMAGES = {};\n self.GRAD_COL_FUNCTIONS = {}; // cache for color gradient functions\n self.GRAD_OPC_FUNCTIONS = {}; // cache for opacity gradient functions\n self.GRAD_COL = {}; // cache for whole color gradient objects\n self.GRAD_OPC = {}; // cache for whole opacity gradient objects\n\n var catalog = self.attach(new PDFCatalog());\n var pageTree = self.attach(new PDFPageTree());\n\n if (getOption(\"autoPrint\")) {\n var nameTree = {};\n nameTree.JavaScript = new PDFDictionary({ Names: [\n new PDFString(\"JS\"), self.attach(new PDFDictionary({\n S: _(\"JavaScript\"),\n JS: new PDFString(\"print(true);\")\n }))\n ] });\n catalog.props.Names = new PDFDictionary(nameTree);\n }\n\n catalog.setPages(pageTree);\n\n var info = self.attach(new PDFDictionary({\n Producer : new PDFString(getOption(\"producer\", \"Kendo UI PDF Generator\"), true), // XXX: kendo.version?\n Title : new PDFString(getOption(\"title\", \"\"), true),\n Author : new PDFString(getOption(\"author\", \"\"), true),\n Subject : new PDFString(getOption(\"subject\", \"\"), true),\n Keywords : new PDFString(getOption(\"keywords\", \"\"), true),\n Creator : new PDFString(getOption(\"creator\", \"Kendo UI PDF Generator\"), true),\n CreationDate : getOption(\"date\", new Date())\n }));\n\n self.addPage = function(options) {\n var paperOptions = getPaperOptions(function(name, defval){\n return (options && options[name] != null) ? options[name] : defval;\n });\n var paperSize = paperOptions.paperSize;\n var margin = paperOptions.margin;\n var contentWidth = paperSize[0];\n var contentHeight = paperSize[1];\n if (margin) {\n contentWidth -= margin.left + margin.right;\n contentHeight -= margin.top + margin.bottom;\n }\n var content = new PDFStream(makeOutput(), null, true);\n var props = {\n Contents : self.attach(content),\n Parent : pageTree,\n MediaBox : [ 0, 0, paperSize[0], paperSize[1] ]\n };\n var page = new PDFPage(self, props);\n page._content = content;\n pageTree.addPage(self.attach(page));\n\n // canvas-like coord. system. (0,0) is upper-left.\n // text must be vertically mirorred before drawing.\n page.transform(1, 0, 0, -1, 0, paperSize[1]);\n\n if (margin) {\n page.translate(margin.left, margin.top);\n // XXX: clip to right/bottom margin. Make this optional?\n page.rect(0, 0, contentWidth, contentHeight);\n page.clip();\n }\n\n self.pages.push(page);\n return page;\n };\n\n self.render = function() {\n var i;\n /// file header\n out(\"%PDF-1.4\", NL, \"%\\xc2\\xc1\\xda\\xcf\\xce\", NL, NL);\n\n /// file body\n for (i = 0; i < objects.length; ++i) {\n objects[i].renderFull(out);\n out(NL, NL);\n }\n\n /// cross-reference table\n var xrefOffset = out.offset();\n out(\"xref\", NL, 0, \" \", objects.length + 1, NL);\n out(\"0000000000 65535 f \", NL);\n for (i = 0; i < objects.length; ++i) {\n out(zeropad(objects[i]._offset, 10), \" 00000 n \", NL);\n }\n out(NL);\n\n /// trailer\n out(\"trailer\", NL);\n out(new PDFDictionary({\n Size: objects.length + 1,\n Root: catalog,\n Info: info\n }), NL, NL);\n\n /// end\n out(\"startxref\", NL, xrefOffset, NL);\n out(\"%%EOF\", NL);\n\n return out.stream().offset(0);\n };\n\n self.loadFonts = loadFonts;\n self.loadImages = loadImages;\n};\n\nPDFDocument.prototype.getFont = function getFont (url) {\n var font = this.FONTS[url];\n if (!font) {\n font = FONT_CACHE[url];\n if (!font) {\n throw new Error(\"Font \" + url + \" has not been loaded\");\n }\n if (font === true) {\n font = this.attach(new PDFStandardFont(url));\n } else {\n font = this.attach(new PDFFont(this, font));\n }\n this.FONTS[url] = font;\n }\n return font;\n};\n\nPDFDocument.prototype.getImage = function getImage (url) {\n var img = this.IMAGES[url];\n if (!img) {\n img = IMAGE_CACHE[url];\n if (!img) {\n throw new Error(\"Image \" + url + \" has not been loaded\");\n }\n if (img === \"ERROR\") {\n return null;\n }\n img = this.IMAGES[url] = this.attach(img.asStream(this));\n }\n return img;\n};\n\nPDFDocument.prototype.getOpacityGS = function getOpacityGS (opacity, forStroke) {\n var id = parseFloat(opacity).toFixed(3);\n opacity = parseFloat(id);\n id += forStroke ? \"S\" : \"F\";\n var cache = this._opacityGSCache || (this._opacityGSCache = {});\n var gs = cache[id];\n if (!gs) {\n var props = {\n Type: _(\"ExtGState\")\n };\n if (forStroke) {\n props.CA = opacity;\n } else {\n props.ca = opacity;\n }\n gs = this.attach(new PDFDictionary(props));\n gs._resourceName = _(\"GS\" + (++RESOURCE_COUNTER));\n cache[id] = gs;\n }\n return gs;\n};\n\nPDFDocument.prototype.dict = function dict (props) {\n return new PDFDictionary(props);\n};\n\nPDFDocument.prototype.name = function name (str) {\n return _(str);\n};\n\nPDFDocument.prototype.stream = function stream (props, content) {\n return new PDFStream(content, props);\n};\n\n/* -----[ utils ]----- */\n\nfunction pad(str, len, ch) {\n while (str.length < len) {\n str = ch + str;\n }\n return str;\n}\n\nfunction zeropad(n, len) {\n return pad(String(n), len, \"0\");\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nvar isArray = Array.isArray || function(obj) {\n return obj instanceof Array;\n};\n\nfunction isDate(obj) {\n return obj instanceof Date;\n}\n\nfunction renderArray(a, out) {\n out(\"[\");\n if (a.length > 0) {\n out.withIndent(function(){\n for (var i = 0; i < a.length; ++i) {\n if (i > 0 && i % 8 === 0) {\n out.indent(a[i]);\n } else {\n out(\" \", a[i]);\n }\n }\n });\n //out.indent();\n }\n out(\" ]\");\n}\n\nfunction renderDate(date, out) {\n out(\"(D:\",\n zeropad(date.getUTCFullYear(), 4),\n zeropad(date.getUTCMonth() + 1, 2),\n zeropad(date.getUTCDate(), 2),\n zeropad(date.getUTCHours(), 2),\n zeropad(date.getUTCMinutes(), 2),\n zeropad(date.getUTCSeconds(), 2),\n \"Z)\");\n}\n\nfunction mm2pt(mm) {\n return mm * (72/25.4);\n}\n\nfunction cm2pt(cm) {\n return mm2pt(cm * 10);\n}\n\nfunction in2pt(inch) {\n return inch * 72;\n}\n\n\nfunction unitsToPoints(x, def) {\n if (typeof x == \"number\") {\n return x;\n }\n if (typeof x == \"string\") {\n var m;\n m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n if (m) {\n var num = parseFloat(m[1]);\n if (!isNaN(num)) {\n if (m[2] == \"pt\") {\n return num;\n }\n return {\n \"mm\": mm2pt,\n \"cm\": cm2pt,\n \"in\": in2pt\n }[m[2]](num);\n }\n }\n }\n if (def != null) {\n return def;\n }\n throw new Error(\"Can't parse unit: \" + x);\n}\n\n/* -----[ PDF basic objects ]----- */\n\nvar PDFValue = function PDFValue () {};\n\nPDFValue.prototype.beforeRender = function beforeRender () {};\n\nvar PDFString = (function (PDFValue) {\n function PDFString(value, utf16be) {\n PDFValue.call(this);\n this.value = value;\n this.utf16be = Boolean(utf16be);\n }\n\n if ( PDFValue ) PDFString.__proto__ = PDFValue;\n PDFString.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFString.prototype.constructor = PDFString;\n\n PDFString.prototype.render = function render (out) {\n var txt = this.value;\n if (this.utf16be) {\n txt = BOM + encodeUTF16BE(txt);\n txt = txt.replace(/([\\(\\)\\\\])/g, \"\\\\$1\");\n out(\"(\", txt, \")\");\n } else {\n // out.writeString truncates charcodes to 8 bits and\n // 0x128 & 0xFF is 40, the code for open paren.\n // therefore we need to do the chopping here to make\n // sure we backslash all cases.\n var data = [ 40 ]; // open PDF string '('\n for (var i = 0; i < txt.length; ++i) {\n var code = txt.charCodeAt(i) & 0xFF;\n if (code == 40 || code == 41 || code == 92) {\n // backslash before (, ) and \\\n data.push(92);\n }\n data.push(code);\n }\n data.push(41); // ')' close PDF string\n out.writeData(data);\n }\n };\n\n PDFString.prototype.toString = function toString () {\n return this.value;\n };\n\n return PDFString;\n}(PDFValue));\n\nvar PDFHexString = (function (PDFString) {\n function PDFHexString(value) {\n PDFString.call(this, value);\n this.value = value;\n }\n\n if ( PDFString ) PDFHexString.__proto__ = PDFString;\n PDFHexString.prototype = Object.create( PDFString && PDFString.prototype );\n PDFHexString.prototype.constructor = PDFHexString;\n\n PDFHexString.prototype.render = function render (out) {\n var this$1 = this;\n\n out(\"<\");\n for (var i = 0; i < this.value.length; ++i) {\n out(zeropad(this$1.value.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n };\n\n return PDFHexString;\n}(PDFString));\n\n/// names\nvar PDFName = (function (PDFValue) {\n function PDFName(name) {\n PDFValue.call(this);\n this.name = name;\n }\n\n if ( PDFValue ) PDFName.__proto__ = PDFValue;\n PDFName.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFName.prototype.constructor = PDFName;\n\n PDFName.get = function get (name) {\n return _(name);\n };\n\n PDFName.prototype.render = function render (out) {\n out(\"/\" + this.escape());\n };\n\n PDFName.prototype.escape = function escape () {\n return this.name.replace(/[^\\x21-\\x7E]/g, function(c){\n return \"#\" + zeropad(c.charCodeAt(0).toString(16), 2);\n });\n };\n\n PDFName.prototype.toString = function toString () {\n return this.name;\n };\n\n return PDFName;\n}(PDFValue));\n\nvar PDFName_cache = {};\n\nfunction _(name) {\n if (hasOwnProperty(PDFName_cache, name)) {\n return PDFName_cache[name];\n }\n return (PDFName_cache[name] = new PDFName(name));\n}\n\n/// dictionary\n\nvar PDFDictionary = (function (PDFValue) {\n function PDFDictionary(props) {\n PDFValue.call(this);\n this.props = props;\n }\n\n if ( PDFValue ) PDFDictionary.__proto__ = PDFValue;\n PDFDictionary.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFDictionary.prototype.constructor = PDFDictionary;\n\n PDFDictionary.prototype.render = function render (out) {\n var props = this.props, empty = true;\n out(\"<<\");\n out.withIndent(function(){\n for (var i in props) {\n if (hasOwnProperty(props, i) && !/^_/.test(i)) {\n empty = false;\n out.indent(_(i), \" \", props[i]);\n }\n }\n });\n if (!empty) {\n out.indent();\n }\n out(\">>\");\n };\n\n return PDFDictionary;\n}(PDFValue));\n\n/// streams\n\nvar PDFStream = (function (PDFValue) {\n function PDFStream(data, props, compress) {\n PDFValue.call(this);\n if (typeof data == \"string\") {\n var tmp = BinaryStream();\n tmp.write(data);\n data = tmp;\n }\n this.data = data;\n this.props = props || {};\n this.compress = compress;\n }\n\n if ( PDFValue ) PDFStream.__proto__ = PDFValue;\n PDFStream.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFStream.prototype.constructor = PDFStream;\n\n PDFStream.prototype.render = function render (out) {\n var data = this.data.get(), props = this.props;\n if (this.compress && supportsDeflate()) {\n if (!props.Filter) {\n props.Filter = [];\n } else if (!(props.Filter instanceof Array)) {\n props.Filter = [ props.Filter ];\n }\n props.Filter.unshift(_(\"FlateDecode\"));\n data = deflate(data);\n }\n props.Length = data.length;\n out(new PDFDictionary(props), \" stream\", NL);\n out.writeData(data);\n out(NL, \"endstream\");\n };\n\n return PDFStream;\n}(PDFValue));\n\n/// catalog\n\nvar PDFCatalog = (function (PDFDictionary) {\n function PDFCatalog() {\n PDFDictionary.call(this, {\n Type: _(\"Catalog\")\n });\n }\n\n if ( PDFDictionary ) PDFCatalog.__proto__ = PDFDictionary;\n PDFCatalog.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFCatalog.prototype.constructor = PDFCatalog;\n\n PDFCatalog.prototype.setPages = function setPages (pagesObj) {\n this.props.Pages = pagesObj;\n };\n\n return PDFCatalog;\n}(PDFDictionary));\n\n/// page tree\n\nvar PDFPageTree = (function (PDFDictionary) {\n function PDFPageTree() {\n PDFDictionary.call(this, {\n Type : _(\"Pages\"),\n Kids : [],\n Count : 0\n });\n }\n\n if ( PDFDictionary ) PDFPageTree.__proto__ = PDFDictionary;\n PDFPageTree.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFPageTree.prototype.constructor = PDFPageTree;\n\n PDFPageTree.prototype.addPage = function addPage (pageObj) {\n this.props.Kids.push(pageObj);\n this.props.Count++;\n };\n\n return PDFPageTree;\n}(PDFDictionary));\n\n/// images\n\n// JPEG\n\nvar SOF_CODES = [0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf];\n\nvar PDFJpegImage = function PDFJpegImage(data) {\n // we must determine the correct color space. we'll parse a bit\n // of the JPEG stream for this, it's still better than going\n // through the canvas.\n // https://github.com/telerik/kendo-ui-core/issues/2845\n data.offset(0);\n var width, height, colorSpace, bitsPerComponent;\n var soi = data.readShort();\n if (soi != 0xFFD8) {\n // XXX: do we have some better options here?\n throw new Error(\"Invalid JPEG image\");\n }\n while (!data.eof()) {\n var ff = data.readByte();\n if (ff != 0xFF) {\n throw new Error(\"Invalid JPEG image\");\n }\n var marker = data.readByte();\n var length = data.readShort();\n if (SOF_CODES.indexOf(marker) >= 0) {\n // \"start of frame\" marker\n bitsPerComponent = data.readByte();\n height = data.readShort();\n width = data.readShort();\n colorSpace = data.readByte();\n break;\n }\n data.skip(length - 2);\n }\n\n if (colorSpace == null) {\n throw new Error(\"Invalid JPEG image\");\n }\n\n var props = {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : bitsPerComponent,\n Filter : _(\"DCTDecode\")\n };\n\n switch (colorSpace) {\n case 1:\n props.ColorSpace = _(\"DeviceGray\");\n break;\n case 3:\n props.ColorSpace = _(\"DeviceRGB\");\n break;\n case 4:\n props.ColorSpace = _(\"DeviceCMYK\");\n props.Decode = [ 1, 0, 1, 0, 1, 0, 1, 0 ]; // invert colors\n break;\n }\n\n this.asStream = function() {\n data.offset(0);\n var stream = new PDFStream(data, props);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n};\n\n// PDFRawImage will be used for images with transparency (PNG)\n\nvar PDFRawImage = function PDFRawImage(width, height, rgb, alpha) {\n this.asStream = function(pdf) {\n var mask = new PDFStream(alpha, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceGray\")\n }, true);\n var stream = new PDFStream(rgb, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceRGB\"),\n SMask : pdf.attach(mask)\n }, true);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n};\n\n/// standard fonts\n\nvar PDFStandardFont = (function (PDFDictionary) {\n function PDFStandardFont(name){\n PDFDictionary.call(this, {\n Type : _(\"Font\"),\n Subtype : _(\"Type1\"),\n BaseFont : _(name)\n });\n\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n }\n\n if ( PDFDictionary ) PDFStandardFont.__proto__ = PDFDictionary;\n PDFStandardFont.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFStandardFont.prototype.constructor = PDFStandardFont;\n\n PDFStandardFont.prototype.encodeText = function encodeText (str) {\n return new PDFString(String(str));\n };\n\n return PDFStandardFont;\n}(PDFDictionary));\n\n/// TTF fonts\n\nvar PDFFont = (function (PDFDictionary) {\n function PDFFont(pdf, font, props){\n PDFDictionary.call(this, {});\n\n props = this.props;\n props.Type = _(\"Font\");\n props.Subtype = _(\"Type0\");\n props.Encoding = _(\"Identity-H\");\n\n this._pdf = pdf;\n this._font = font;\n this._sub = font.makeSubset();\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n\n var head = font.head;\n\n this.name = font.psName;\n var scale = this.scale = font.scale;\n this.bbox = [\n head.xMin * scale,\n head.yMin * scale,\n head.xMax * scale,\n head.yMax * scale\n ];\n\n this.italicAngle = font.post.italicAngle;\n this.ascent = font.ascent * scale;\n this.descent = font.descent * scale;\n this.lineGap = font.lineGap * scale;\n this.capHeight = font.os2.capHeight || this.ascent;\n this.xHeight = font.os2.xHeight || 0;\n this.stemV = 0;\n\n this.familyClass = (font.os2.familyClass || 0) >> 8;\n this.isSerif = this.familyClass >= 1 && this.familyClass <= 7;\n this.isScript = this.familyClass == 10;\n\n this.flags = ((font.post.isFixedPitch ? 1 : 0) |\n (this.isSerif ? 1 << 1 : 0) |\n (this.isScript ? 1 << 3 : 0) |\n (this.italicAngle !== 0 ? 1 << 6 : 0) |\n (1 << 5));\n }\n\n if ( PDFDictionary ) PDFFont.__proto__ = PDFDictionary;\n PDFFont.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFFont.prototype.constructor = PDFFont;\n\n PDFFont.prototype.encodeText = function encodeText (text) {\n return new PDFHexString(this._sub.encodeText(String(text)));\n };\n\n PDFFont.prototype.getTextWidth = function getTextWidth (fontSize, text) {\n var this$1 = this;\n\n var width = 0, codeMap = this._font.cmap.codeMap;\n for (var i = 0; i < text.length; ++i) {\n var glyphId = codeMap[text.charCodeAt(i)];\n width += this$1._font.widthOfGlyph(glyphId || 0);\n }\n return width * fontSize / 1000;\n };\n\n PDFFont.prototype.beforeRender = function beforeRender () {\n var self = this;\n var sub = self._sub;\n\n // write the TTF data\n var data = sub.render();\n var fontStream = new PDFStream(BinaryStream(data), {\n Length1: data.length\n }, true);\n\n var descriptor = self._pdf.attach(new PDFDictionary({\n Type : _(\"FontDescriptor\"),\n FontName : _(self._sub.psName),\n FontBBox : self.bbox,\n Flags : self.flags,\n StemV : self.stemV,\n ItalicAngle : self.italicAngle,\n Ascent : self.ascent,\n Descent : self.descent,\n CapHeight : self.capHeight,\n XHeight : self.xHeight,\n FontFile2 : self._pdf.attach(fontStream)\n }));\n\n var cmap = sub.ncid2ogid;\n var firstChar = sub.firstChar;\n var lastChar = sub.lastChar;\n var charWidths = [];\n (function loop(i, chunk){\n if (i <= lastChar) {\n var gid = cmap[i];\n if (gid == null) {\n loop(i + 1);\n } else {\n if (!chunk) {\n charWidths.push(i, chunk = []);\n }\n chunk.push(self._font.widthOfGlyph(gid));\n loop(i + 1, chunk);\n }\n }\n })(firstChar);\n\n // As if two dictionaries weren't enough, we need another\n // one, the \"descendant font\". Only that one can be of\n // Subtype CIDFontType2. PDF is the X11 of document\n // formats: portable but full of legacy that nobody cares\n // about anymore.\n\n var descendant = new PDFDictionary({\n Type: _(\"Font\"),\n Subtype: _(\"CIDFontType2\"),\n BaseFont: _(self._sub.psName),\n CIDSystemInfo: new PDFDictionary({\n Registry : new PDFString(\"Adobe\"),\n Ordering : new PDFString(\"Identity\"),\n Supplement : 0\n }),\n FontDescriptor: descriptor,\n FirstChar: firstChar,\n LastChar: lastChar,\n DW: Math.round(self._font.widthOfGlyph(0)),\n W: charWidths,\n CIDToGIDMap: self._pdf.attach(self._makeCidToGidMap())\n });\n\n var dict = self.props;\n dict.BaseFont = _(self._sub.psName);\n dict.DescendantFonts = [ self._pdf.attach(descendant) ];\n\n // Compute the ToUnicode map so that apps can extract\n // meaningful text from the PDF.\n var unimap = new PDFToUnicodeCmap(firstChar, lastChar, sub.subset);\n var unimapStream = new PDFStream(makeOutput(), null, true);\n unimapStream.data(unimap);\n dict.ToUnicode = self._pdf.attach(unimapStream);\n };\n\n PDFFont.prototype._makeCidToGidMap = function _makeCidToGidMap () {\n return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n };\n\n return PDFFont;\n}(PDFDictionary));\n\nvar PDFToUnicodeCmap = (function (PDFValue) {\n function PDFToUnicodeCmap(firstChar, lastChar, map){\n PDFValue.call(this);\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n this.map = map;\n }\n\n if ( PDFValue ) PDFToUnicodeCmap.__proto__ = PDFValue;\n PDFToUnicodeCmap.prototype = Object.create( PDFValue && PDFValue.prototype );\n PDFToUnicodeCmap.prototype.constructor = PDFToUnicodeCmap;\n\n PDFToUnicodeCmap.prototype.render = function render (out) {\n out.indent(\"/CIDInit /ProcSet findresource begin\");\n out.indent(\"12 dict begin\");\n out.indent(\"begincmap\");\n out.indent(\"/CIDSystemInfo <<\");\n out.indent(\" /Registry (Adobe)\");\n out.indent(\" /Ordering (UCS)\");\n out.indent(\" /Supplement 0\");\n out.indent(\">> def\");\n out.indent(\"/CMapName /Adobe-Identity-UCS def\");\n out.indent(\"/CMapType 2 def\");\n out.indent(\"1 begincodespacerange\");\n out.indent(\" <0000>\");\n out.indent(\"endcodespacerange\");\n\n var self = this;\n out.indent(self.lastChar - self.firstChar + 1, \" beginbfchar\");\n out.withIndent(function(){\n for (var code = self.firstChar; code <= self.lastChar; ++code) {\n var unicode = self.map[code];\n var str = ucs2encode([ unicode ]);\n out.indent(\"<\", zeropad(code.toString(16), 4), \">\", \"<\");\n for (var i = 0; i < str.length; ++i) {\n out(zeropad(str.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n }\n });\n out.indent(\"endbfchar\");\n\n out.indent(\"endcmap\");\n out.indent(\"CMapName currentdict /CMap defineresource pop\");\n out.indent(\"end\");\n out.indent(\"end\");\n };\n\n return PDFToUnicodeCmap;\n}(PDFValue));\n\n/// gradients\n\nfunction makeHash(a) {\n return a.map(function(x){\n return isArray(x) ? makeHash(x)\n : typeof x == \"number\" ? (Math.round(x * 1000) / 1000).toFixed(3)\n : x;\n }).join(\" \");\n}\n\nfunction cacheColorGradientFunction(pdf, r1, g1, b1, r2, g2, b2) {\n var hash = makeHash([ r1, g1, b1, r2, g2, b2 ]);\n var func = pdf.GRAD_COL_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_COL_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1, 0, 1, 0, 1 ],\n N: 1,\n C0: [ r1 , g1 , b1 ],\n C1: [ r2 , g2 , b2 ]\n }));\n }\n return func;\n}\n\nfunction cacheOpacityGradientFunction(pdf, a1, a2) {\n var hash = makeHash([ a1, a2 ]);\n var func = pdf.GRAD_OPC_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_OPC_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1 ],\n N: 1,\n C0: [ a1 ],\n C1: [ a2 ]\n }));\n }\n return func;\n}\n\nfunction makeGradientFunctions(pdf, stops) {\n var hasAlpha = false;\n var opacities = [];\n var colors = [];\n var offsets = [];\n var encode = [];\n var i, prev, cur, prevColor, curColor;\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n colors.push(cacheColorGradientFunction(\n pdf,\n prevColor.r, prevColor.g, prevColor.b,\n curColor.r, curColor.g, curColor.b\n ));\n if (prevColor.a < 1 || curColor.a < 1) {\n hasAlpha = true;\n }\n offsets.push(cur.offset);\n encode.push(0, 1);\n }\n if (hasAlpha) {\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n opacities.push(cacheOpacityGradientFunction(\n pdf, prevColor.a, curColor.a\n ));\n }\n }\n offsets.pop();\n return {\n hasAlpha : hasAlpha,\n colors : assemble(colors),\n opacities : hasAlpha ? assemble(opacities) : null\n };\n function assemble(funcs) {\n if (funcs.length == 1) {\n return funcs[0];\n }\n return {\n FunctionType: 3,\n Functions: funcs,\n Domain: [ 0, 1 ],\n Bounds: offsets,\n Encode: encode\n };\n }\n}\n\nfunction cacheColorGradient(pdf, isRadial, stops, coords, funcs, box) {\n var shading, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.r, x.color.g, x.color.b);\n });\n hash = makeHash(a);\n shading = pdf.GRAD_COL[hash];\n }\n if (!shading) {\n shading = new PDFDictionary({\n Type: _(\"Shading\"),\n ShadingType: isRadial ? 3 : 2,\n ColorSpace: _(\"DeviceRGB\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n Function: funcs,\n Extend: [ true, true ]\n });\n pdf.attach(shading);\n shading._resourceName = \"S\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_COL[hash] = shading;\n }\n }\n return shading;\n}\n\nfunction cacheOpacityGradient(pdf, isRadial, stops, coords, funcs, box) {\n var opacity, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.a);\n });\n hash = makeHash(a);\n opacity = pdf.GRAD_OPC[hash];\n }\n if (!opacity) {\n opacity = new PDFDictionary({\n Type: _(\"ExtGState\"),\n AIS: false,\n CA: 1,\n ca: 1,\n SMask: {\n Type: _(\"Mask\"),\n S: _(\"Luminosity\"),\n G: pdf.attach(new PDFStream(\"/a0 gs /s0 sh\", {\n Type: _(\"XObject\"),\n Subtype: _(\"Form\"),\n FormType: 1,\n BBox: (box ? [\n box.left, box.top + box.height, box.left + box.width, box.top\n ] : [ 0, 1, 1, 0 ]),\n Group: {\n Type: _(\"Group\"),\n S: _(\"Transparency\"),\n CS: _(\"DeviceGray\"),\n I: true\n },\n Resources: {\n ExtGState: {\n a0: { CA: 1, ca: 1 }\n },\n Shading: {\n s0: {\n ColorSpace: _(\"DeviceGray\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n ShadingType: isRadial ? 3 : 2,\n Function: funcs,\n Extend: [ true, true ]\n }\n }\n }\n }))\n }\n });\n pdf.attach(opacity);\n opacity._resourceName = \"O\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_OPC[hash] = opacity;\n }\n }\n return opacity;\n}\n\nfunction cacheGradient(pdf, gradient, box) {\n var isRadial = gradient.type == \"radial\";\n var funcs = makeGradientFunctions(pdf, gradient.stops);\n var coords = isRadial ? [\n gradient.start.x , gradient.start.y , gradient.start.r,\n gradient.end.x , gradient.end.y , gradient.end.r\n ] : [\n gradient.start.x , gradient.start.y,\n gradient.end.x , gradient.end.y\n ];\n var shading = cacheColorGradient(\n pdf, isRadial, gradient.stops, coords, funcs.colors, gradient.userSpace && box\n );\n var opacity = funcs.hasAlpha ? cacheOpacityGradient(\n pdf, isRadial, gradient.stops, coords, funcs.opacities, gradient.userSpace && box\n ) : null;\n return {\n hasAlpha: funcs.hasAlpha,\n shading: shading,\n opacity: opacity\n };\n}\n\n/// page object\n\nvar PDFPage = (function (PDFDictionary) {\n function PDFPage(pdf, props){\n PDFDictionary.call(this, props);\n\n this._pdf = pdf;\n this._rcount = 0;\n this._textMode = false;\n this._fontResources = {};\n this._gsResources = {};\n this._xResources = {};\n this._patResources = {};\n this._shResources = {};\n this._opacity = 1;\n this._matrix = [ 1, 0, 0, 1, 0, 0 ];\n this._annotations = [];\n\n this._font = null;\n this._fontSize = null;\n\n this._contextStack = [];\n\n props = this.props;\n props.Type = _(\"Page\");\n props.ProcSet = [\n _(\"PDF\"),\n _(\"Text\"),\n _(\"ImageB\"),\n _(\"ImageC\"),\n _(\"ImageI\")\n ];\n props.Resources = new PDFDictionary({\n Font : new PDFDictionary(this._fontResources),\n ExtGState : new PDFDictionary(this._gsResources),\n XObject : new PDFDictionary(this._xResources),\n Pattern : new PDFDictionary(this._patResources),\n Shading : new PDFDictionary(this._shResources)\n });\n props.Annots = this._annotations;\n }\n\n if ( PDFDictionary ) PDFPage.__proto__ = PDFDictionary;\n PDFPage.prototype = Object.create( PDFDictionary && PDFDictionary.prototype );\n PDFPage.prototype.constructor = PDFPage;\n\n PDFPage.prototype._out = function _out () {\n this._content.data.apply(null, arguments);\n };\n\n PDFPage.prototype.transform = function transform (a, b, c, d, e, f) {\n if (!isIdentityMatrix(arguments)) {\n this._matrix = mmul(arguments, this._matrix);\n this._out(a, \" \", b, \" \", c, \" \", d, \" \", e, \" \", f, \" cm\");\n // XXX: debug\n // this._out(\" % current matrix: \", this._matrix);\n this._out(NL);\n }\n };\n\n PDFPage.prototype.translate = function translate (dx, dy) {\n this.transform(1, 0, 0, 1, dx, dy);\n };\n\n PDFPage.prototype.scale = function scale (sx, sy) {\n this.transform(sx, 0, 0, sy, 0, 0);\n };\n\n PDFPage.prototype.rotate = function rotate (angle) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n this.transform(cos, sin, -sin, cos, 0, 0);\n };\n\n PDFPage.prototype.beginText = function beginText () {\n this._textMode = true;\n this._out(\"BT\", NL);\n };\n\n PDFPage.prototype.endText = function endText () {\n this._textMode = false;\n this._out(\"ET\", NL);\n };\n\n PDFPage.prototype._requireTextMode = function _requireTextMode () {\n if (!this._textMode) {\n throw new Error(\"Text mode required; call page.beginText() first\");\n }\n };\n\n PDFPage.prototype._requireFont = function _requireFont () {\n if (!this._font) {\n throw new Error(\"No font selected; call page.setFont() first\");\n }\n };\n\n PDFPage.prototype.setFont = function setFont (font, size) {\n this._requireTextMode();\n if (font == null) {\n font = this._font;\n } else if (!(font instanceof PDFFont)) {\n font = this._pdf.getFont(font);\n }\n if (size == null) {\n size = this._fontSize;\n }\n this._fontResources[font._resourceName] = font;\n this._font = font;\n this._fontSize = size;\n this._out(font._resourceName, \" \", size, \" Tf\", NL);\n };\n\n PDFPage.prototype.setTextLeading = function setTextLeading (size) {\n this._requireTextMode();\n this._out(size, \" TL\", NL);\n };\n\n PDFPage.prototype.setTextRenderingMode = function setTextRenderingMode (mode) {\n this._requireTextMode();\n this._out(mode, \" Tr\", NL);\n };\n\n PDFPage.prototype.showText = function showText (text, requestedWidth) {\n this._requireFont();\n if (text.length > 1 && requestedWidth && this._font instanceof PDFFont) {\n var outputWidth = this._font.getTextWidth(this._fontSize, text);\n var scale = requestedWidth / outputWidth * 100;\n this._out(scale, \" Tz \");\n }\n this._out(this._font.encodeText(text), \" Tj\", NL);\n };\n\n PDFPage.prototype.showTextNL = function showTextNL (text) {\n this._requireFont();\n this._out(this._font.encodeText(text), \" '\", NL);\n };\n\n PDFPage.prototype.addLink = function addLink (uri, box) {\n var ll = this._toPage({ x: box.left, y: box.bottom });\n var ur = this._toPage({ x: box.right, y: box.top });\n this._annotations.push(new PDFDictionary({\n Type : _(\"Annot\"),\n Subtype : _(\"Link\"),\n Rect : [ ll.x, ll.y, ur.x, ur.y ],\n Border : [ 0, 0, 0 ],\n A : new PDFDictionary({\n Type : _(\"Action\"),\n S : _(\"URI\"),\n URI : new PDFString(uri)\n })\n }));\n };\n\n PDFPage.prototype.setStrokeColor = function setStrokeColor (r, g, b) {\n this._out(r, \" \", g, \" \", b, \" RG\", NL);\n };\n\n PDFPage.prototype.setOpacity = function setOpacity (opacity) {\n this.setFillOpacity(opacity);\n this.setStrokeOpacity(opacity);\n this._opacity *= opacity;\n };\n\n PDFPage.prototype.setStrokeOpacity = function setStrokeOpacity (opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, true);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n };\n\n PDFPage.prototype.setFillColor = function setFillColor (r, g, b) {\n this._out(r, \" \", g, \" \", b, \" rg\", NL);\n };\n\n PDFPage.prototype.setFillOpacity = function setFillOpacity (opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, false);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n };\n\n PDFPage.prototype.gradient = function gradient (gradient$1, box) {\n this.save();\n this.rect(box.left, box.top, box.width, box.height);\n this.clip();\n if (!gradient$1.userSpace) {\n this.transform(box.width, 0, 0, box.height, box.left, box.top);\n }\n var g = cacheGradient(this._pdf, gradient$1, box);\n var sname = g.shading._resourceName, oname;\n this._shResources[sname] = g.shading;\n if (g.hasAlpha) {\n oname = g.opacity._resourceName;\n this._gsResources[oname] = g.opacity;\n this._out(\"/\" + oname + \" gs \");\n }\n this._out(\"/\" + sname + \" sh\", NL);\n this.restore();\n };\n\n PDFPage.prototype.setDashPattern = function setDashPattern (dashArray, dashPhase) {\n this._out(dashArray, \" \", dashPhase, \" d\", NL);\n };\n\n PDFPage.prototype.setLineWidth = function setLineWidth (width) {\n this._out(width, \" w\", NL);\n };\n\n PDFPage.prototype.setLineCap = function setLineCap (lineCap) {\n this._out(lineCap, \" J\", NL);\n };\n\n PDFPage.prototype.setLineJoin = function setLineJoin (lineJoin) {\n this._out(lineJoin, \" j\", NL);\n };\n\n PDFPage.prototype.setMitterLimit = function setMitterLimit (mitterLimit) {\n this._out(mitterLimit, \" M\", NL);\n };\n\n PDFPage.prototype.save = function save () {\n this._contextStack.push(this._context());\n this._out(\"q\", NL);\n };\n\n PDFPage.prototype.restore = function restore () {\n this._out(\"Q\", NL);\n this._context(this._contextStack.pop());\n };\n\n\n // paths\n PDFPage.prototype.moveTo = function moveTo (x, y) {\n this._out(x, \" \", y, \" m\", NL);\n };\n\n PDFPage.prototype.lineTo = function lineTo (x, y) {\n this._out(x, \" \", y, \" l\", NL);\n };\n\n PDFPage.prototype.bezier = function bezier (x1, y1, x2, y2, x3, y3) {\n this._out(x1, \" \", y1, \" \", x2, \" \", y2, \" \", x3, \" \", y3, \" c\", NL);\n };\n\n PDFPage.prototype.bezier1 = function bezier1 (x1, y1, x3, y3) {\n this._out(x1, \" \", y1, \" \", x3, \" \", y3, \" y\", NL);\n };\n\n PDFPage.prototype.bezier2 = function bezier2 (x2, y2, x3, y3) {\n this._out(x2, \" \", y2, \" \", x3, \" \", y3, \" v\", NL);\n };\n\n PDFPage.prototype.close = function close () {\n this._out(\"h\", NL);\n };\n\n PDFPage.prototype.rect = function rect (x, y, w, h) {\n this._out(x, \" \", y, \" \", w, \" \", h, \" re\", NL);\n };\n\n PDFPage.prototype.ellipse = function ellipse (x, y, rx, ry) {\n function _X(v) { return x + v; }\n function _Y(v) { return y + v; }\n\n // how to get to the \"magic number\" is explained here:\n // http://www.whizkidtech.redprince.net/bezier/circle/kappa/\n var k = 0.5522847498307936;\n\n this.moveTo(_X(0), _Y(ry));\n this.bezier(\n _X(rx * k) , _Y(ry),\n _X(rx) , _Y(ry * k),\n _X(rx) , _Y(0)\n );\n this.bezier(\n _X(rx) , _Y(-ry * k),\n _X(rx * k) , _Y(-ry),\n _X(0) , _Y(-ry)\n );\n this.bezier(\n _X(-rx * k) , _Y(-ry),\n _X(-rx) , _Y(-ry * k),\n _X(-rx) , _Y(0)\n );\n this.bezier(\n _X(-rx) , _Y(ry * k),\n _X(-rx * k) , _Y(ry),\n _X(0) , _Y(ry)\n );\n };\n\n PDFPage.prototype.circle = function circle (x, y, r) {\n this.ellipse(x, y, r, r);\n };\n\n PDFPage.prototype.stroke = function stroke () {\n this._out(\"S\", NL);\n };\n\n PDFPage.prototype.nop = function nop () {\n this._out(\"n\", NL);\n };\n\n PDFPage.prototype.clip = function clip () {\n this._out(\"W n\", NL);\n };\n\n PDFPage.prototype.clipStroke = function clipStroke () {\n this._out(\"W S\", NL);\n };\n\n PDFPage.prototype.closeStroke = function closeStroke () {\n this._out(\"s\", NL);\n };\n\n PDFPage.prototype.fill = function fill () {\n this._out(\"f\", NL);\n };\n\n PDFPage.prototype.fillStroke = function fillStroke () {\n this._out(\"B\", NL);\n };\n\n PDFPage.prototype.drawImage = function drawImage (url) {\n var img = this._pdf.getImage(url);\n if (img) { // the result can be null for a cross-domain image\n this._xResources[img._resourceName] = img;\n this._out(img._resourceName, \" Do\", NL);\n }\n };\n\n PDFPage.prototype.comment = function comment (txt) {\n var self = this;\n txt.split(/\\r?\\n/g).forEach(function(line){\n self._out(\"% \", line, NL);\n });\n };\n\n // internal\n PDFPage.prototype._context = function _context (val) {\n if (val != null) {\n this._opacity = val.opacity;\n this._matrix = val.matrix;\n } else {\n return {\n opacity: this._opacity,\n matrix: this._matrix\n };\n }\n };\n\n PDFPage.prototype._toPage = function _toPage (p) {\n var m = this._matrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n return {\n x: a*p.x + c*p.y + e,\n y: b*p.x + d*p.y + f\n };\n };\n\n return PDFPage;\n}(PDFDictionary));\n\nfunction unquote(str) {\n return str.replace(/^\\s*(['\"])(.*)\\1\\s*$/, \"$2\");\n}\n\nfunction parseFontDef(fontdef) {\n // XXX: this is very crude for now and buggy. Proper parsing is quite involved.\n var rx = /^\\s*((normal|italic)\\s+)?((normal|small-caps)\\s+)?((normal|bold|\\d+)\\s+)?(([0-9.]+)(px|pt))(\\/(([0-9.]+)(px|pt)|normal))?\\s+(.*?)\\s*$/i;\n var m = rx.exec(fontdef);\n if (!m) {\n return { fontSize: 12, fontFamily: \"sans-serif\" };\n }\n var fontSize = m[8] ? parseInt(m[8], 10) : 12;\n return {\n italic : m[2] && m[2].toLowerCase() == \"italic\",\n variant : m[4],\n bold : m[6] && /bold|700/i.test(m[6]),\n fontSize : fontSize,\n lineHeight : m[12] ? m[12] == \"normal\" ? fontSize : parseInt(m[12], 10) : null,\n fontFamily : m[14].split(/\\s*,\\s*/g).map(unquote)\n };\n}\n\nfunction getFontURL(style) {\n function mkFamily(name) {\n if (style.bold) {\n name += \"|bold\";\n }\n if (style.italic) {\n name += \"|italic\";\n }\n return name.toLowerCase();\n }\n var fontFamily = style.fontFamily;\n var name, url;\n if (fontFamily instanceof Array) {\n for (var i = 0; i < fontFamily.length; ++i) {\n name = mkFamily(fontFamily[i]);\n url = FONT_MAPPINGS[name];\n if (url) {\n break;\n }\n }\n } else {\n url = FONT_MAPPINGS[fontFamily.toLowerCase()];\n }\n while (typeof url == \"function\") {\n url = url();\n }\n if (!url) {\n url = \"Times-Roman\";\n }\n return url;\n}\n\nvar FONT_MAPPINGS = {\n \"serif\" : \"Times-Roman\",\n \"serif|bold\" : \"Times-Bold\",\n \"serif|italic\" : \"Times-Italic\",\n \"serif|bold|italic\" : \"Times-BoldItalic\",\n \"sans-serif\" : \"Helvetica\",\n \"sans-serif|bold\" : \"Helvetica-Bold\",\n \"sans-serif|italic\" : \"Helvetica-Oblique\",\n \"sans-serif|bold|italic\" : \"Helvetica-BoldOblique\",\n \"monospace\" : \"Courier\",\n \"monospace|bold\" : \"Courier-Bold\",\n \"monospace|italic\" : \"Courier-Oblique\",\n \"monospace|bold|italic\" : \"Courier-BoldOblique\",\n \"zapfdingbats\" : \"ZapfDingbats\",\n \"zapfdingbats|bold\" : \"ZapfDingbats\",\n \"zapfdingbats|italic\" : \"ZapfDingbats\",\n \"zapfdingbats|bold|italic\" : \"ZapfDingbats\"\n};\n\nfunction fontAlias(alias, name) {\n alias = alias.toLowerCase();\n FONT_MAPPINGS[alias] = function() {\n return FONT_MAPPINGS[name];\n };\n FONT_MAPPINGS[alias + \"|bold\"] = function() {\n return FONT_MAPPINGS[name + \"|bold\"];\n };\n FONT_MAPPINGS[alias + \"|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|italic\"];\n };\n FONT_MAPPINGS[alias + \"|bold|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|bold|italic\"];\n };\n}\n\n// Let's define some common names to an appropriate replacement.\n// These are overridable via pdf.defineFont, should the user want to\n// include the proper versions.\n\nfontAlias(\"Times New Roman\" , \"serif\");\nfontAlias(\"Courier New\" , \"monospace\");\nfontAlias(\"Arial\" , \"sans-serif\");\nfontAlias(\"Helvetica\" , \"sans-serif\");\nfontAlias(\"Verdana\" , \"sans-serif\");\nfontAlias(\"Tahoma\" , \"sans-serif\");\nfontAlias(\"Georgia\" , \"sans-serif\");\nfontAlias(\"Monaco\" , \"monospace\");\nfontAlias(\"Andale Mono\" , \"monospace\");\n\nfunction defineFont(name, url) {\n if (arguments.length == 1) {\n for (var i in name) {\n if (hasOwnProperty(name, i)) {\n defineFont(i, name[i]);\n }\n }\n } else {\n name = name.toLowerCase();\n FONT_MAPPINGS[name] = url;\n\n // special handling for DejaVu fonts: if they get defined,\n // let them also replace the default families, for good\n // Unicode support out of the box.\n switch (name) {\n case \"dejavu sans\" : FONT_MAPPINGS[\"sans-serif\"] = url; break;\n case \"dejavu sans|bold\" : FONT_MAPPINGS[\"sans-serif|bold\"] = url; break;\n case \"dejavu sans|italic\" : FONT_MAPPINGS[\"sans-serif|italic\"] = url; break;\n case \"dejavu sans|bold|italic\" : FONT_MAPPINGS[\"sans-serif|bold|italic\"] = url; break;\n case \"dejavu serif\" : FONT_MAPPINGS[\"serif\"] = url; break;\n case \"dejavu serif|bold\" : FONT_MAPPINGS[\"serif|bold\"] = url; break;\n case \"dejavu serif|italic\" : FONT_MAPPINGS[\"serif|italic\"] = url; break;\n case \"dejavu serif|bold|italic\" : FONT_MAPPINGS[\"serif|bold|italic\"] = url; break;\n case \"dejavu mono\" : FONT_MAPPINGS[\"monospace\"] = url; break;\n case \"dejavu mono|bold\" : FONT_MAPPINGS[\"monospace|bold\"] = url; break;\n case \"dejavu mono|italic\" : FONT_MAPPINGS[\"monospace|italic\"] = url; break;\n case \"dejavu mono|bold|italic\" : FONT_MAPPINGS[\"monospace|bold|italic\"] = url; break;\n }\n }\n}\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nfunction isIdentityMatrix(m) {\n return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;\n}\n\nvar TEXT_RENDERING_MODE = {\n fill : 0,\n stroke : 1,\n fillAndStroke : 2,\n invisible : 3,\n fillAndClip : 4,\n strokeAndClip : 5,\n fillStrokeClip : 6,\n clip : 7\n};\n\nexport {\n PDFDocument as Document,\n BinaryStream,\n defineFont,\n parseFontDef,\n getFontURL,\n loadFonts,\n loadImages,\n getPaperOptions,\n clearImageCache,\n TEXT_RENDERING_MODE\n};\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { createPromise } from \"../util\";\nimport { parseColor as utils_parseColor, saveAs as util_saveAs, support } from \"../common\";\nimport * as PDF from \"./core\";\nimport { Group, Path, MultiPath, Gradient, RadialGradient } from '../drawing';\nimport * as geo from \"../geometry\";\n\nvar DEFAULT_IMAGE_DPI = 300;\nvar TEXT_RENDERING_MODE = PDF.TEXT_RENDERING_MODE;\n\nvar DASH_PATTERNS = {\n dash : [ 4 ],\n dashDot : [ 4, 2, 1, 2 ],\n dot : [ 1, 2 ],\n longDash : [ 8, 2 ],\n longDashDot : [ 8, 2, 1, 2 ],\n longDashDotDot : [ 8, 2, 1, 2, 1, 2 ],\n solid : []\n};\n\nvar LINE_CAP = {\n butt : 0,\n round : 1,\n square : 2\n};\n\nvar LINE_JOIN = {\n miter : 0,\n round : 1,\n bevel : 2\n};\n\nfunction render(group, callback) {\n var fonts = [], images = {}, options = group.options;\n\n function getOption(name, defval, hash) {\n if (!hash) {\n hash = options;\n }\n if (hash.pdf && hash.pdf[name] != null) {\n return hash.pdf[name];\n }\n return defval;\n }\n\n var multiPage = getOption(\"multiPage\");\n var imgDPI = getOption(\"imgDPI\", DEFAULT_IMAGE_DPI);\n\n PDF.clearImageCache();\n\n group.traverse(function(element){\n dispatch({\n Image: function(element) {\n var url = element.src();\n var size = element.bbox().size;\n if (imgDPI) {\n var prev = images[url];\n size = {\n width: Math.ceil(size.width * imgDPI / 72),\n height: Math.ceil(size.height * imgDPI / 72)\n };\n\n if (prev) {\n size.width = Math.max(prev.width, size.width);\n size.height = Math.max(prev.height, size.height);\n }\n }\n\n images[url] = size;\n },\n Text: function(element) {\n var style = PDF.parseFontDef(element.options.font);\n var url = PDF.getFontURL(style);\n if (fonts.indexOf(url) < 0) {\n fonts.push(url);\n }\n }\n }, element);\n });\n\n function doIt() {\n if (--count > 0) {\n return;\n }\n\n var pdf = new (PDF.Document)({\n producer : getOption(\"producer\"),\n title : getOption(\"title\"),\n author : getOption(\"author\"),\n subject : getOption(\"subject\"),\n keywords : getOption(\"keywords\"),\n creator : getOption(\"creator\"),\n date : getOption(\"date\"),\n\n autoPrint : getOption(\"autoPrint\")\n });\n\n function drawPage(group) {\n var options = group.options;\n\n var tmp = optimize(group);\n var bbox = tmp.bbox;\n group = tmp.root;\n // var tmp, bbox;\n\n var paperSize = getOption(\"paperSize\", getOption(\"paperSize\", \"auto\"), options), addMargin = false;\n if (paperSize == \"auto\") {\n if (bbox) {\n var size = bbox.getSize();\n paperSize = [ size.width, size.height ];\n addMargin = true;\n var origin = bbox.getOrigin();\n tmp = new Group();\n tmp.transform(new geo.Matrix(1, 0, 0, 1, -origin.x, -origin.y));\n tmp.append(group);\n group = tmp;\n }\n else {\n paperSize = \"A4\";\n }\n }\n\n var page;\n page = pdf.addPage({\n paperSize : paperSize,\n margin : getOption(\"margin\", getOption(\"margin\"), options),\n addMargin : addMargin,\n landscape : getOption(\"landscape\", getOption(\"landscape\", false), options)\n });\n drawElement(group, page, pdf);\n }\n\n if (multiPage) {\n group.children.forEach(drawPage);\n } else {\n drawPage(group);\n }\n\n callback(pdf.render(), pdf);\n }\n\n var count = 2;\n PDF.loadFonts(fonts, doIt);\n PDF.loadImages(images, doIt, {\n jpegQuality : getOption(\"jpegQuality\", 0.92),\n keepPNG : getOption(\"keepPNG\", false)\n });\n}\n\nfunction toDataURL(group, callback) {\n render(group, function(data){\n callback(\"data:application/pdf;base64,\" + data.base64());\n });\n}\n\nfunction toBlob(group, callback) {\n render(group, function(data){\n callback(new window.Blob([ data.get() ], { type: \"application/pdf\" }));\n });\n}\n\nfunction saveAs(group, filename, proxy, callback) {\n // XXX: Safari has Blob, but does not support the download attribute\n // so we'd end up converting to dataURL and using the proxy anyway.\n if (window.Blob && !support.browser.safari) {\n toBlob(group, function(blob){\n util_saveAs({ dataURI: blob, fileName: filename });\n if (callback) {\n callback(blob);\n }\n });\n } else {\n toDataURL(group, function(dataURL){\n util_saveAs({ dataURI: dataURL, fileName: filename, proxyURL: proxy });\n if (callback) {\n callback(dataURL);\n }\n });\n }\n}\n\nfunction dispatch(handlers, element) {\n var handler = handlers[element.nodeType];\n if (handler) {\n return handler.call.apply(handler, arguments);\n }\n return element;\n}\n\nfunction drawElement(element, page, pdf) {\n if (element.options._pdfDebug) {\n page.comment(\"BEGIN: \" + element.options._pdfDebug);\n }\n\n var transform = element.transform();\n var opacity = element.opacity();\n\n page.save();\n\n if (opacity != null && opacity < 1) {\n page.setOpacity(opacity);\n }\n\n setStrokeOptions(element, page, pdf);\n setFillOptions(element, page, pdf);\n\n if (transform) {\n var m = transform.matrix();\n page.transform(m.a, m.b, m.c, m.d, m.e, m.f);\n }\n\n setClipping(element, page, pdf);\n\n dispatch({\n Path : drawPath,\n MultiPath : drawMultiPath,\n Circle : drawCircle,\n Arc : drawArc,\n Text : drawText,\n Image : drawImage,\n Group : drawGroup,\n Rect : drawRect\n }, element, page, pdf);\n\n page.restore();\n\n if (element.options._pdfDebug) {\n page.comment(\"END: \" + element.options._pdfDebug);\n }\n}\n\nfunction setStrokeOptions(element, page) {\n var stroke = element.stroke && element.stroke();\n if (!stroke) {\n return;\n }\n\n var color = stroke.color;\n if (color) {\n color = parseColor(color);\n if (color == null) {\n return; // no stroke\n }\n page.setStrokeColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setStrokeOpacity(color.a);\n }\n }\n\n var width = stroke.width;\n if (width != null) {\n if (width === 0) {\n return; // no stroke\n }\n page.setLineWidth(width);\n }\n\n var dashType = stroke.dashType;\n if (dashType) {\n page.setDashPattern(DASH_PATTERNS[dashType], 0);\n }\n\n var lineCap = stroke.lineCap;\n if (lineCap) {\n page.setLineCap(LINE_CAP[lineCap]);\n }\n\n var lineJoin = stroke.lineJoin;\n if (lineJoin) {\n page.setLineJoin(LINE_JOIN[lineJoin]);\n }\n\n var opacity = stroke.opacity;\n if (opacity != null) {\n page.setStrokeOpacity(opacity);\n }\n}\n\nfunction setFillOptions(element, page) {\n var fill = element.fill && element.fill();\n if (!fill) {\n return;\n }\n\n if (fill instanceof Gradient) {\n return;\n }\n\n var color = fill.color;\n if (color) {\n color = parseColor(color);\n if (color == null) {\n return; // no fill\n }\n page.setFillColor(color.r, color.g, color.b);\n if (color.a != 1) {\n page.setFillOpacity(color.a);\n }\n }\n\n var opacity = fill.opacity;\n if (opacity != null) {\n page.setFillOpacity(opacity);\n }\n}\n\nfunction setClipping(element, page, pdf) {\n // XXX: only Path supported at the moment.\n var clip = element.clip();\n if (clip) {\n _drawPath(clip, page, pdf);\n page.clip();\n // page.setStrokeColor(Math.random(), Math.random(), Math.random());\n // page.setLineWidth(1);\n // page.stroke();\n }\n}\n\nfunction shouldDraw(thing) {\n return (thing &&\n (thing instanceof Gradient ||\n (thing.color && !/^(none|transparent)$/i.test(thing.color) &&\n (thing.width == null || thing.width > 0) &&\n (thing.opacity == null || thing.opacity > 0))));\n}\n\nfunction maybeGradient(element, page, pdf, stroke) {\n var fill = element.fill();\n if (fill instanceof Gradient) {\n if (stroke) {\n page.clipStroke();\n } else {\n page.clip();\n }\n var isRadial = fill instanceof RadialGradient;\n var start, end;\n if (isRadial) {\n start = { x: fill.center().x , y: fill.center().y , r: 0 };\n end = { x: fill.center().x , y: fill.center().y , r: fill.radius() };\n } else {\n start = { x: fill.start().x , y: fill.start().y };\n end = { x: fill.end().x , y: fill.end().y };\n }\n\n var stops = fill.stops.elements().map(function(stop){\n var offset = stop.offset();\n if (/%$/.test(offset)) {\n offset = parseFloat(offset) / 100;\n } else {\n offset = parseFloat(offset);\n }\n var color = parseColor(stop.color());\n color.a *= stop.opacity();\n return {\n offset: offset,\n color: color\n };\n });\n\n // Duplicats first and last stop to fix\n // https://github.com/telerik/kendo-ui-core/issues/1782\n stops.unshift(stops[0]);\n stops.push(stops[stops.length - 1]);\n\n var gradient = {\n userSpace : fill.userSpace(),\n type : isRadial ? \"radial\" : \"linear\",\n start : start,\n end : end,\n stops : stops\n };\n var box = element.rawBBox();\n var tl = box.topLeft(), size = box.getSize();\n box = {\n left : tl.x,\n top : tl.y,\n width : size.width,\n height : size.height\n };\n page.gradient(gradient, box);\n return true;\n }\n}\n\nfunction maybeFillStroke(element, page, pdf) {\n if (shouldDraw(element.fill()) && shouldDraw(element.stroke())) {\n if (!maybeGradient(element, page, pdf, true)) {\n page.fillStroke();\n }\n } else if (shouldDraw(element.fill())) {\n if (!maybeGradient(element, page, pdf, false)) {\n page.fill();\n }\n } else if (shouldDraw(element.stroke())) {\n page.stroke();\n } else {\n // we should not get here; the path should have been\n // optimized away. but let's be prepared.\n page.nop();\n }\n}\n\nfunction maybeDrawRect(path, page) {\n var segments = path.segments;\n if (segments.length == 4 && path.options.closed) {\n // detect if this path looks like a rectangle parallel to the axis\n var a = [];\n for (var i = 0; i < segments.length; ++i) {\n if (segments[i].controlIn()) { // has curve?\n return false;\n }\n a[i] = segments[i].anchor();\n }\n // it's a rectangle if the y/x/y/x or x/y/x/y coords of\n // consecutive points are the same.\n var isRect = (\n a[0].y == a[1].y && a[1].x == a[2].x && a[2].y == a[3].y && a[3].x == a[0].x\n ) || (\n a[0].x == a[1].x && a[1].y == a[2].y && a[2].x == a[3].x && a[3].y == a[0].y\n );\n if (isRect) {\n // this saves a bunch of instructions in PDF:\n // moveTo, lineTo, lineTo, lineTo, close -> rect.\n page.rect(a[0].x, a[0].y,\n a[2].x - a[0].x /*width*/,\n a[2].y - a[0].y /*height*/);\n return true;\n }\n }\n}\n\nfunction _drawPath(element, page, pdf) {\n var segments = element.segments;\n if (segments.length === 0) {\n return;\n }\n if (!maybeDrawRect(element, page, pdf)) {\n for (var prev, i = 0; i < segments.length; ++i) {\n var seg = segments[i];\n var anchor = seg.anchor();\n if (!prev) {\n page.moveTo(anchor.x, anchor.y);\n } else {\n var prevOut = prev.controlOut();\n var controlIn = seg.controlIn();\n if (prevOut && controlIn) {\n page.bezier(\n prevOut.x , prevOut.y,\n controlIn.x , controlIn.y,\n anchor.x , anchor.y\n );\n } else {\n page.lineTo(anchor.x, anchor.y);\n }\n }\n prev = seg;\n }\n if (element.options.closed) {\n page.close();\n }\n }\n}\n\nfunction drawPath(element, page, pdf) {\n _drawPath(element, page, pdf);\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawMultiPath(element, page, pdf) {\n var paths = element.paths;\n for (var i = 0; i < paths.length; ++i) {\n _drawPath(paths[i], page, pdf);\n }\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawCircle(element, page, pdf) {\n var g = element.geometry();\n page.circle(g.center.x, g.center.y, g.radius);\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawArc(element, page, pdf) {\n var points = element.geometry().curvePoints();\n page.moveTo(points[0].x, points[0].y);\n for (var i = 1; i < points.length;) {\n page.bezier(\n points[i].x, points[i++].y,\n points[i].x, points[i++].y,\n points[i].x, points[i++].y\n );\n }\n maybeFillStroke(element, page, pdf);\n}\n\nfunction drawText(element, page) {\n var style = PDF.parseFontDef(element.options.font);\n var pos = element._position;\n var mode;\n if (element.fill() && element.stroke()) {\n mode = TEXT_RENDERING_MODE.fillAndStroke;\n } else if (element.fill()) {\n mode = TEXT_RENDERING_MODE.fill;\n } else if (element.stroke()) {\n mode = TEXT_RENDERING_MODE.stroke;\n }\n\n page.transform(1, 0, 0, -1, pos.x, pos.y + style.fontSize);\n page.beginText();\n page.setFont(PDF.getFontURL(style), style.fontSize);\n page.setTextRenderingMode(mode);\n page.showText(element.content(), element._pdfRect ? element._pdfRect.width() : null);\n page.endText();\n}\n\nfunction drawGroup(element, page, pdf) {\n if (element._pdfLink) {\n page.addLink(element._pdfLink.url, element._pdfLink);\n }\n var children = element.children;\n for (var i = 0; i < children.length; ++i) {\n drawElement(children[i], page, pdf);\n }\n}\n\nfunction drawImage(element, page) {\n var url = element.src();\n if (!url) {\n return;\n }\n\n var rect = element.rect();\n var tl = rect.getOrigin();\n var sz = rect.getSize();\n page.transform(sz.width, 0, 0, -sz.height, tl.x, tl.y + sz.height);\n page.drawImage(url);\n}\n\nfunction drawRect(element, page, pdf) {\n var geometry = element.geometry();\n var ref = geometry.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n if (rx === 0 && ry === 0) {\n page.rect(geometry.origin.x, geometry.origin.y, geometry.size.width, geometry.size.height);\n maybeFillStroke(element, page, pdf);\n } else {\n drawPath(Path.fromRect(geometry, element.options), page, pdf);\n }\n}\n\nfunction parseColor(value) {\n var color = utils_parseColor(value, true);\n return color ? color.toRGB() : null;\n}\n\nfunction optimize(root) {\n var clipbox = false;\n var matrix = geo.Matrix.unit();\n var currentBox = null;\n var changed;\n do {\n changed = false;\n root = opt(root);\n } while (root && changed);\n return { root: root, bbox: currentBox };\n\n function change(newShape) {\n changed = true;\n return newShape;\n }\n\n function visible(shape) {\n return (shape.visible() && shape.opacity() > 0 &&\n ( shouldDraw(shape.fill()) ||\n shouldDraw(shape.stroke()) ));\n }\n\n function optArray(a) {\n var b = [];\n for (var i = 0; i < a.length; ++i) {\n var el = opt(a[i]);\n if (el != null) {\n b.push(el);\n }\n }\n return b;\n }\n\n function withClipping(shape, f) {\n var saveclipbox = clipbox;\n var savematrix = matrix;\n\n if (shape.transform()) {\n matrix = matrix.multiplyCopy(shape.transform().matrix());\n }\n\n var clip = shape.clip();\n if (clip) {\n clip = clip.bbox();\n if (clip) {\n clip = clip.bbox(matrix);\n clipbox = clipbox ? geo.Rect.intersect(clipbox, clip) : clip;\n }\n }\n\n try {\n return f();\n }\n finally {\n clipbox = saveclipbox;\n matrix = savematrix;\n }\n }\n\n function inClipbox(shape) {\n if (clipbox == null) {\n return false;\n }\n var box = shape.rawBBox().bbox(matrix);\n if (clipbox && box) {\n box = geo.Rect.intersect(box, clipbox);\n }\n return box;\n }\n\n function opt(shape) {\n return withClipping(shape, function(){\n if (!(shape instanceof Group || shape instanceof MultiPath)) {\n var box = inClipbox(shape);\n if (!box) {\n return change(null);\n }\n currentBox = currentBox ? geo.Rect.union(currentBox, box) : box;\n }\n return dispatch({\n Path: function(shape) {\n if (shape.segments.length === 0 || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n MultiPath: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n var el = new MultiPath(shape.options);\n el.paths = optArray(shape.paths);\n if (el.paths.length === 0) {\n return change(null);\n }\n return el;\n },\n Circle: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Arc: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Text: function(shape) {\n if (!/\\S/.test(shape.content()) || !visible(shape)) {\n return change(null);\n }\n return shape;\n },\n Image: function(shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n return shape;\n },\n Group: function(shape) {\n if (!(shape.visible() && shape.opacity() > 0)) {\n return change(null);\n }\n var el = new Group(shape.options);\n el.children = optArray(shape.children);\n el._pdfLink = shape._pdfLink;\n if (shape !== root && el.children.length === 0 && !shape._pdfLink) {\n return change(null);\n }\n return el;\n },\n Rect: function(shape) {\n if (!visible(shape)) {\n return change(null);\n }\n return shape;\n }\n }, shape);\n });\n }\n}\n\nfunction exportPDF(group, options) {\n var promise = createPromise();\n\n for (var i in options) {\n if (i == \"margin\" && group.options.pdf && group.options.pdf._ignoreMargin) {\n // This hackish option is set by the page breaking code in drawDOM. The idea is\n // that margin is already taken into account there (that's required to do proper\n // page breaking) and we don't want to set it again here, as it would double the\n // top-left margin, and truncate the content on bottom/right.\n continue;\n }\n group.options.set(\"pdf.\" + i, options[i]);\n }\n\n toDataURL(group, promise.resolve);\n\n return promise;\n}\n\n// XXX: the duplication is in order to keep exportPDF return a data\n// URI, which is what previous versions do. Currently only IE9 does\n// not support Blob, IMO we should switch to Blob by default\n// everywhere.\nfunction exportPDFToBlob(group, options) {\n var promise = createPromise();\n\n for (var i in options) {\n if (i == \"margin\" && group.options.pdf && group.options.pdf._ignoreMargin) {\n // This hackish option is set by the page breaking code in drawDOM. The idea is\n // that margin is already taken into account there (that's required to do proper\n // page breaking) and we don't want to set it again here, as it would double the\n // top-left margin, and truncate the content on bottom/right.\n continue;\n }\n group.options.set(\"pdf.\" + i, options[i]);\n }\n\n if (window.Blob && !support.browser.safari) {\n toBlob(group, promise.resolve);\n } else {\n toDataURL(group, promise.resolve);\n }\n\n return promise;\n}\n\n\nexport { exportPDF, exportPDFToBlob, saveAs, toDataURL, toBlob, render };\n","import OptionsStore from '../core/options-store';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\n\nvar Element = (function (HasObservers) {\n function Element(options) {\n HasObservers.call(this);\n\n this._initOptions(options);\n }\n\n if ( HasObservers ) Element.__proto__ = HasObservers;\n Element.prototype = Object.create( HasObservers && HasObservers.prototype );\n Element.prototype.constructor = Element;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Element.prototype._initOptions = function _initOptions (options) {\n if ( options === void 0 ) options = {};\n\n var clip = options.clip;\n var transform = options.transform;\n\n if (transform) {\n options.transform = createTransform(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n };\n\n Element.prototype.transform = function transform (value) {\n if (defined(value)) {\n this.options.set(\"transform\", createTransform(value));\n } else {\n return this.options.get(\"transform\");\n }\n };\n\n Element.prototype.parentTransform = function parentTransform () {\n var element = this;\n var parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n var transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return createTransform(parentMatrix);\n }\n };\n\n Element.prototype.currentTransform = function currentTransform (parentTransform) {\n if ( parentTransform === void 0 ) parentTransform = this.parentTransform();\n\n var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\n\n var parentMatrix = toMatrix(parentTransform);\n var combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return createTransform(combinedMatrix);\n }\n };\n\n Element.prototype.visible = function visible (value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n };\n\n Element.prototype.clip = function clip (value) {\n var options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n };\n\n Element.prototype.opacity = function opacity (value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n };\n\n Element.prototype.className = function className (value) {\n if (defined(value)) {\n this.options.set(\"className\", value);\n return this;\n }\n\n return this.options.get(\"className\");\n };\n\n Element.prototype.clippedBBox = function clippedBBox (transformation) {\n var bbox = this._clippedBBox(transformation);\n if (bbox) {\n var clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n };\n\n Element.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var transform = this.currentTransform(parentTransform);\n var transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n };\n\n Element.prototype._hasFill = function _hasFill () {\n var fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n };\n\n Element.prototype._hasStroke = function _hasStroke () {\n var stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n };\n\n Element.prototype._clippedBBox = function _clippedBBox (transformation) {\n return this.bbox(transformation);\n };\n\n Object.defineProperties( Element.prototype, prototypeAccessors );\n\n return Element;\n}(HasObservers));\n\nexport default Element;\n","import HasObservers from '../core/has-observers';\n\nvar push = [].push;\nvar pop = [].pop;\nvar splice = [].splice;\nvar shift = [].shift;\nvar slice = [].slice;\nvar unshift = [].unshift;\n\nvar ElementsArray = (function (HasObservers) {\n function ElementsArray(array) {\n if ( array === void 0 ) array = [];\n\n HasObservers.call(this);\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n if ( HasObservers ) ElementsArray.__proto__ = HasObservers;\n ElementsArray.prototype = Object.create( HasObservers && HasObservers.prototype );\n ElementsArray.prototype.constructor = ElementsArray;\n\n ElementsArray.prototype.elements = function elements (value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n };\n\n ElementsArray.prototype.push = function push$1 () {\n var elements = arguments;\n var result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.slice = function slice$1 () {\n return slice.call(this);\n };\n\n ElementsArray.prototype.pop = function pop$1 () {\n var length = this.length;\n var result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.splice = function splice (index, howMany) {\n var elements = slice.call(arguments, 2);\n var result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n };\n\n ElementsArray.prototype.shift = function shift$1 () {\n var length = this.length;\n var result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.unshift = function unshift$1 () {\n var elements = arguments;\n var result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.indexOf = function indexOf (element) {\n var this$1 = this;\n\n var length = this.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (this$1[idx] === element) {\n return idx;\n }\n }\n return -1;\n };\n\n ElementsArray.prototype._splice = function _splice (index, howMany, elements) {\n var result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n };\n\n ElementsArray.prototype._add = function _add (elements) {\n this._setObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._remove = function _remove (elements) {\n this._clearObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._setObserver = function _setObserver (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this$1);\n }\n };\n\n ElementsArray.prototype._clearObserver = function _clearObserver (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this$1);\n }\n };\n\n ElementsArray.prototype._change = function _change () {};\n\n return ElementsArray;\n}(HasObservers));\n\nexport default ElementsArray;\n","import Element from './element';\nimport traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\n\nvar Group = (function (superclass) {\n function Group(options) {\n superclass.call(this, options);\n this.children = [];\n }\n\n if ( superclass ) Group.__proto__ = superclass;\n Group.prototype = Object.create( superclass && superclass.prototype );\n Group.prototype.constructor = Group;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Group\";\n };\n\n Group.prototype.childrenChange = function childrenChange (action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n };\n\n Group.prototype.append = function append$1 () {\n append(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n };\n\n Group.prototype.insert = function insert (index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n };\n\n Group.prototype.insertAt = function insertAt (element, index) {\n return this.insert(index, element);\n };\n\n Group.prototype.remove = function remove (element) {\n var index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.removeAt = function removeAt (index) {\n if (0 <= index && index < this.children.length) {\n var element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.clear = function clear () {\n var items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n };\n\n Group.prototype.bbox = function bbox (transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n };\n\n Group.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.children, false);\n };\n\n Group.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n };\n\n Group.prototype.currentTransform = function currentTransform (transformation) {\n return Element.prototype.currentTransform.call(this, transformation) || null;\n };\n\n Group.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var children = this.children;\n var transform = this.currentTransform(parentTransform);\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n };\n\n Group.prototype._reparent = function _reparent (elements, newParent) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var child = elements[i];\n var parent = child.parent;\n if (parent && parent !== this$1 && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n };\n\n Object.defineProperties( Group.prototype, prototypeAccessors );\n\n return Group;\n}(traversable(Element, \"children\")));\n\nexport default Group;","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\n\nvar Image = (function (superclass) {\n function Image(src, rect, options) {\n if ( rect === void 0 ) rect = new Rect();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.src(src);\n this.rect(rect);\n }\n\n if ( superclass ) Image.__proto__ = superclass;\n Image.prototype = Object.create( superclass && superclass.prototype );\n Image.prototype.constructor = Image;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Image\";\n };\n\n Image.prototype.src = function src (value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n };\n\n Image.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n };\n\n Image.prototype.rawBBox = function rawBBox () {\n return this._rect.bbox();\n };\n\n Image.prototype._containsPoint = function _containsPoint (point) {\n return this._rect.containsPoint(point);\n };\n\n Image.prototype._hasFill = function _hasFill () {\n return this.src();\n };\n\n Object.defineProperties( Image.prototype, prototypeAccessors );\n\n return Image;\n}(withGeometry(Element, [ \"rect\" ])));\n\nexport default Image;","import ElementsArray from './elements-array';\n\nvar GeometryElementsArray = (function (ElementsArray) {\n function GeometryElementsArray () {\n ElementsArray.apply(this, arguments);\n }\n\n if ( ElementsArray ) GeometryElementsArray.__proto__ = ElementsArray;\n GeometryElementsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n\n GeometryElementsArray.prototype._change = function _change () {\n this.geometryChange();\n };\n\n return GeometryElementsArray;\n}(ElementsArray));\n\nexport default GeometryElementsArray;","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n var rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n}","export default function calculateCurveAt(t, field, points) {\n var t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n}","export default function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nvar ComplexNumber = (function (Class) {\n function ComplexNumber(real, img) {\n if ( real === void 0 ) real = 0;\n if ( img === void 0 ) img = 0;\n\n Class.call(this);\n\n this.real = real;\n this.img = img;\n }\n\n if ( Class ) ComplexNumber.__proto__ = Class;\n ComplexNumber.prototype = Object.create( Class && Class.prototype );\n ComplexNumber.prototype.constructor = ComplexNumber;\n\n ComplexNumber.prototype.add = function add (cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n };\n\n ComplexNumber.prototype.addConstant = function addConstant (value) {\n return new ComplexNumber(this.real + value, this.img);\n };\n\n ComplexNumber.prototype.negate = function negate () {\n return new ComplexNumber(-this.real, -this.img);\n };\n\n ComplexNumber.prototype.multiply = function multiply (cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n };\n\n ComplexNumber.prototype.multiplyConstant = function multiplyConstant (value) {\n return new ComplexNumber(this.real * value, this.img * value);\n };\n\n ComplexNumber.prototype.nthRoot = function nthRoot (n) {\n var rad = Math.atan2(this.img, this.real);\n var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n var nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n };\n\n ComplexNumber.prototype.equals = function equals (cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n };\n\n ComplexNumber.prototype.isReal = function isReal () {\n return this.img === 0;\n };\n\n return ComplexNumber;\n}(Class));\n\nexport default ComplexNumber;","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n var i = new ComplexNumber(0,1);\n var b3a = -b / (3 * a);\n var x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n var result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n var polynomial = toCubicPolynomial(points, rootField);\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n var intersection;\n\n for (var idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n}","export default function lineIntersectionsCount(a, b, point) {\n var intersects;\n if (a.x !== b.x) {\n var minX = Math.min(a.x, b.x);\n var maxX = Math.max(a.x, b.x);\n var minY = Math.min(a.y, b.y);\n var maxY = Math.max(a.y, b.y);\n var inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n}","import HasObservers from '../core/has-observers';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\nimport withPoints from '../mixins/with-points';\n\n\nvar points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\nvar Segment = (function (superclass) {\n function Segment(anchor, controlIn, controlOut) {\n superclass.call(this);\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n if ( superclass ) Segment.__proto__ = superclass;\n Segment.prototype = Object.create( superclass && superclass.prototype );\n Segment.prototype.constructor = Segment;\n\n Segment.prototype.bboxTo = function bboxTo (toSegment, matrix) {\n var segmentAnchor = this.anchor().transformCopy(matrix);\n var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n var rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n };\n\n Segment.prototype._lineBoundingBox = function _lineBoundingBox (p1, p2) {\n return Rect.fromPoints(p1, p2);\n };\n\n Segment.prototype._curveBoundingBox = function _curveBoundingBox (p1, cp1, cp2, p2) {\n var points = [ p1, cp1, cp2, p2 ];\n var extremesX = this._curveExtremesFor(points, \"x\");\n var extremesY = this._curveExtremesFor(points, \"y\");\n var xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n var yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n };\n\n Segment.prototype._curveExtremesFor = function _curveExtremesFor (points, field) {\n var extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n };\n\n Segment.prototype._curveExtremes = function _curveExtremes (x1, x2, x3, x4) {\n var a = x1 - 3 * x2 + 3 * x3 - x4;\n var b = - 2 * (x1 - 2 * x2 + x3);\n var c = x1 - x2;\n var sqrt = Math.sqrt(b * b - 4 * a * c);\n var t1 = 0;\n var t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n var min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n var max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n Segment.prototype._intersectionsTo = function _intersectionsTo (segment, point) {\n var intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n };\n\n Segment.prototype._isOnCurveTo = function _isOnCurveTo (segment, point, width, endSegment) {\n var bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n var p1 = this.anchor();\n var p2 = this.controlOut();\n var p3 = segment.controlIn();\n var p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n var points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n var rotation = transform().rotate(45, point);\n var rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n };\n\n Segment.prototype._isOnLineTo = function _isOnLineTo (segment, point, width) {\n var p1 = this.anchor();\n var p2 = segment.anchor();\n var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n var rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n };\n\n Segment.prototype._isOnPathTo = function _isOnPathTo (segment, point, width, endSegment) {\n var isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n };\n\n return Segment;\n}(withPoints(HasObservers, points)));\n\nfunction arrayLimits(arr) {\n var length = arr.length;\n var min = MAX_NUM;\n var max = MIN_NUM;\n\n for (var i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nexport default Segment;\n","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n var polynomial = toCubicPolynomial(points, \"x\");\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n var rayIntersection, intersectsRay;\n var count = 0;\n for (var i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n}","import { Point, Segment } from '../../geometry';\nimport { last, round } from '../../util';\n\nvar WEIGHT = 0.333;\nvar EXTREMUM_ALLOWED_DEVIATION = 0.01;\nvar X = \"x\";\nvar Y = \"y\";\n\nexport function pointsToCurve(pointsIn, closed) {\n var points = pointsIn.slice(0);\n var segments = [];\n var length = points.length;\n\n if (length > 2) {\n removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = getTangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = getControlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = getTangent(p0, p1, X,Y);\n initialControlPoint = firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = getControlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = getControlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = getTangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n}\n\nexport function pointsToClosedCurve(pointsIn) {\n return pointsToCurve(pointsIn, true);\n}\n\nexport function removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n}\n\nexport function invertAxis(p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = lineFunction(p0,p1);\n var y2 = calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n}\n\nexport function isLine(p0, p1, p2) {\n var fn = lineFunction(p0, p1);\n var y2 = calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n}\n\nexport function lineFunction(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n}\n\nexport function getControlPoints(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (isLine(p0, p1, p2)) {\n tangent = getTangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: isMonotonicByField(p0, p1, p2, X),\n y: isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = getTangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondCP = secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstCP = firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n restrictControlPoint(p0, p1, secondCP, tangent);\n restrictControlPoint(p1, p2, firstCP, tangent);\n }\n\n return [ secondCP, firstCP ];\n}\n\nexport function restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n}\n\nexport function getTangent(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n}\n\nexport function isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n}\n\nexport function firstControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n}\n\nexport function secondControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n}\n\nexport function point(xValue, yValue, xField, yField) {\n var controlPoint = new Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n}\n\nexport function calculateFunction(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n}\n\nexport function numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n","import Point from '../geometry/point';\nimport { last } from '../util';\n\nvar ShapeMap = {\n l: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 2) {\n var point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 6) {\n var controlOut = new Point(parameters[i], parameters[i + 1]);\n var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n var point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n var value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n var value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 7) {\n var radiusX = parameters[i];\n var radiusY = parameters[i + 1];\n var rotation = parameters[i + 2];\n var largeArc = parameters[i + 3];\n var swipe = parameters[i + 4];\n var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlIn = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n var controlOut = (void 0);\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlPoint = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n var lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (var i = 0; i < parameters.length; i += 2) {\n var endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n var insertPosition = isVertical ? 0 : 1;\n\n for (var i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n}\n\nfunction reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n}\n\nvar third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n var scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n}\n\nexport default ShapeMap;","import Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nvar SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nvar SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nvar MOVE = \"m\";\nvar CLOSE = \"z\";\n\nfunction parseParameters(str) {\n var parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n}\n\nfunction parsePath(pathInstance, str) {\n var position = new Point();\n var previousCommand;\n\n str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n var command = element.toLowerCase();\n var isRelative = command === element;\n var parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n}\n\nexport default parsePath;\n\n","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport { pointsToCurve } from './utils/points-to-curve';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport parsePath from '../parsing/parse-path';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport limitValue from '../util/limit-value';\n\nvar SPACE = ' ';\nvar printPoints = function (precision) { return function () {\n var points = [], len = arguments.length;\n while ( len-- ) points[ len ] = arguments[ len ];\n\n return points.map(function (p) { return p.toString(precision); }).join(SPACE);\n; } };\nvar segmentType = function (segmentStart, segmentEnd) { return segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L'; };\n\nexport var Path = (function (superclass) {\n function Path(options) {\n superclass.call(this, options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set('stroke.lineJoin', 'miter');\n }\n }\n }\n\n if ( superclass ) Path.__proto__ = superclass;\n Path.prototype = Object.create( superclass && superclass.prototype );\n Path.prototype.constructor = Path;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return 'Path';\n };\n\n Path.prototype.moveTo = function moveTo (x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n };\n\n Path.prototype.lineTo = function lineTo (x, y) {\n var point = defined(y) ? new Point(x, y) : x;\n var segment = new Segment(point);\n\n this.segments.push(segment);\n\n return this;\n };\n\n Path.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n };\n\n Path.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var start = rad(startAngle);\n var center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n var arc = new Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n };\n\n Path.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var arc = Arc.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n };\n\n Path.prototype._addArcSegments = function _addArcSegments (arc) {\n var this$1 = this;\n\n this.suspend();\n\n var curvePoints = arc.curvePoints();\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n this$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n };\n\n Path.prototype.close = function close () {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n };\n\n Path.prototype.rawBBox = function rawBBox () {\n return this._bbox();\n };\n\n Path.prototype.toString = function toString (digits) {\n var output = '';\n\n var segments = this.segments;\n var length = segments.length;\n if (length > 0) {\n var parts = [];\n var print = printPoints(digits);\n var currentType;\n\n for (var i = 1; i < length; i++) {\n var type = segmentType(segments[i - 1], segments[i]);\n if (type !== currentType) {\n currentType = type;\n parts.push(type);\n }\n\n if (type === 'L') {\n parts.push(print(segments[i].anchor()));\n } else {\n parts.push(print(\n segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()\n ));\n }\n }\n\n output = 'M' + print(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (this.options.closed) {\n output += 'Z';\n }\n }\n\n return output;\n };\n\n Path.prototype._containsPoint = function _containsPoint (point) {\n var segments = this.segments;\n var length = segments.length;\n var intersectionsCount = 0;\n var previous, current;\n\n for (var idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n\n return intersectionsCount % 2 !== 0;\n };\n\n Path.prototype._isOnPath = function _isOnPath (point, width) {\n var segments = this.segments;\n var length = segments.length;\n var pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, 'start')) {\n return true;\n }\n\n for (var idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n };\n\n Path.prototype._bbox = function _bbox (matrix) {\n var segments = this.segments;\n var length = segments.length;\n var boundingBox;\n\n if (length === 1) {\n var anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (var i = 1; i < length; i++) {\n var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n };\n\n Path.parse = function parse (str, options) {\n return MultiPath.parse(str, options);\n };\n\n Path.fromRect = function fromRect (rect, options) {\n var path = new Path(options);\n var ref = rect.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n var origin = rect.origin;\n var x = origin.x;\n var y = origin.y;\n var width = rect.width();\n var height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n };\n\n Path.fromPoints = function fromPoints (points, options) {\n if (points) {\n var path = new Path(options);\n\n for (var i = 0; i < points.length; i++) {\n var point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n\n return path;\n }\n };\n\n Path.curveFromPoints = function curveFromPoints (points, options) {\n if (points) {\n var segments = pointsToCurve(points);\n var path = new Path(options);\n path.segments.push.apply(path.segments, segments);\n\n return path;\n }\n };\n\n Path.fromArc = function fromArc (arc, options) {\n var path = new Path(options);\n var startAngle = arc.startAngle;\n var start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n };\n\n Object.defineProperties( Path.prototype, prototypeAccessors );\n\n return Path;\n}(paintable(measurable(Element))));\n\nexport var MultiPath = (function (superclass) {\n function MultiPath(options) {\n superclass.call(this, options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n }\n\n if ( superclass ) MultiPath.__proto__ = superclass;\n MultiPath.prototype = Object.create( superclass && superclass.prototype );\n MultiPath.prototype.constructor = MultiPath;\n\n var prototypeAccessors$1 = { nodeType: { configurable: true } };\n\n MultiPath.parse = function parse (str, options) {\n var instance = new MultiPath(options);\n return parsePath(instance, str);\n };\n\n MultiPath.prototype.toString = function toString (digits) {\n var paths = this.paths;\n var output = '';\n\n if (paths.length > 0) {\n var result = [];\n\n for (var i = 0; i < paths.length; i++) {\n result.push(paths[i].toString(digits));\n }\n\n output = result.join(SPACE);\n }\n\n return output;\n };\n\n prototypeAccessors$1.nodeType.get = function () {\n return 'MultiPath';\n };\n\n MultiPath.prototype.moveTo = function moveTo (x, y) {\n var path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n };\n\n MultiPath.prototype.lineTo = function lineTo (x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n };\n\n MultiPath.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n\n return this;\n };\n\n MultiPath.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n };\n\n MultiPath.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n };\n\n MultiPath.prototype.close = function close () {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n };\n\n MultiPath.prototype._bbox = function _bbox (matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n };\n\n MultiPath.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.paths, false);\n };\n\n MultiPath.prototype._containsPoint = function _containsPoint (point) {\n var paths = this.paths;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._isOnPath = function _isOnPath (point) {\n var paths = this.paths;\n var width = this.options.stroke.width;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n };\n\n Object.defineProperties( MultiPath.prototype, prototypeAccessors$1 );\n\n return MultiPath;\n}(paintable(measurable(Element))));\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}","import { Class } from '../common';\n\nvar LRUCache = (function (Class) {\n function LRUCache(size) {\n Class.call(this);\n\n this._size = size;\n this._length = 0;\n this._map = {};\n }\n\n if ( Class ) LRUCache.__proto__ = Class;\n LRUCache.prototype = Object.create( Class && Class.prototype );\n LRUCache.prototype.constructor = LRUCache;\n\n LRUCache.prototype.put = function put (key, value) {\n var map = this._map;\n var entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n };\n\n LRUCache.prototype.get = function get (key) {\n var entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n };\n\n return LRUCache;\n}(Class));\n\nexport default LRUCache;","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n}\n","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n}\n\nvar DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n};\n\nvar defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n}\n\nvar TextMetrics = (function (Class) {\n function TextMetrics(options) {\n Class.call(this);\n\n this._cache = new LRUCache(1000);\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n }\n\n if ( Class ) TextMetrics.__proto__ = Class;\n TextMetrics.prototype = Object.create( Class && Class.prototype );\n TextMetrics.prototype.constructor = TextMetrics;\n\n TextMetrics.prototype.measure = function measure (text, style, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (var key in style) {\n var value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n };\n\n TextMetrics.prototype._baselineMarker = function _baselineMarker () {\n var marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n return marker;\n };\n\n return TextMetrics;\n}(Class));\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;\n","var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nvar SPACE = ' ';\n\nfunction normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n var hash = 0x811C9DC5;\n\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","export default function append(first, second) {\n first.push.apply(first, second);\n return first;\n}","/* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\nvar literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n};\n\nexport default function arabicToRoman(n) {\n var values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n var roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n}\n","var DEG_TO_RAD = Math.PI / 180;\nvar MAX_NUM = Number.MAX_VALUE;\nvar MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","export default function createPromise() {\n var resolveFn, rejectFn;\n var promise = new Promise(function (resolve, reject) {\n resolveFn = function (data) {\n promise._state = \"resolved\";\n resolve(data);\n return promise;\n };\n rejectFn = function (data) {\n promise._state = \"rejected\";\n reject(data);\n\n return promise;\n };\n });\n promise._state = \"pending\";\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n promise.state = function () { return promise._state; };\n\n return promise;\n}\n","var UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n return typeof value !== UNDEFINED;\n}","var defId = 1;\n\nexport default function definitionId() {\n return \"kdef\" + defId++;\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n return radians / DEG_TO_RAD;\n}","import { encodeUTF8 } from './encode-utf';\n\nvar KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport default function encodeBase64(input) {\n var output = \"\";\n var i = 0;\n\n var utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n var chr1 = utfInput.charCodeAt(i++);\n var chr2 = utfInput.charCodeAt(i++);\n var chr3 = utfInput.charCodeAt(i++);\n\n var enc1 = chr1 >> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n var enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}","var fromCharCode = String.fromCharCode;\n\nexport var BOM = '\\xfe\\xff';\n\n// Encodes a string as UTF-8\nexport function encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n var hi = code;\n var low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n}\n\nfunction encodeUnit(codeUnit) {\n return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 0x00ff);\n}\n\n// Encodes a string as UTF-16 big-endian\nexport function encodeUTF16BE(input) {\n var output = '';\n\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n\n if (c < 0xFFFF) {\n output += encodeUnit(c);\n } else {\n var lead = ((c - 0x10000) >> 10) + 0xD800;\n var trail = ((c - 0x10000) & 0x3FF) + 0xDC00;\n output += encodeUnit(lead);\n output += encodeUnit(trail);\n }\n }\n\n return output;\n}\n","import defined from './defined';\n\nexport default function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","export default function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n}","export default function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n return degrees * DEG_TO_RAD;\n}\n","function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n}\n\nexport default function round(value, precision) {\n var power = pow(precision);\n return Math.round(value * power) / power;\n}","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n}","// ::- Persistent data structure representing an ordered mapping from\n// strings to values, with some convenient update methods.\nfunction OrderedMap(content) {\n this.content = content;\n}\n\nOrderedMap.prototype = {\n constructor: OrderedMap,\n\n find: function(key) {\n for (var i = 0; i < this.content.length; i += 2)\n if (this.content[i] === key) return i\n return -1\n },\n\n // :: (string) → ?any\n // Retrieve the value stored under `key`, or return undefined when\n // no such key exists.\n get: function(key) {\n var found = this.find(key);\n return found == -1 ? undefined : this.content[found + 1]\n },\n\n // :: (string, any, ?string) → OrderedMap\n // Create a new map by replacing the value of `key` with a new\n // value, or adding a binding to the end of the map. If `newKey` is\n // given, the key of the binding will be replaced with that key.\n update: function(key, value, newKey) {\n var self = newKey && newKey != key ? this.remove(newKey) : this;\n var found = self.find(key), content = self.content.slice();\n if (found == -1) {\n content.push(newKey || key, value);\n } else {\n content[found + 1] = value;\n if (newKey) content[found] = newKey;\n }\n return new OrderedMap(content)\n },\n\n // :: (string) → OrderedMap\n // Return a map with the given key removed, if it existed.\n remove: function(key) {\n var found = this.find(key);\n if (found == -1) return this\n var content = this.content.slice();\n content.splice(found, 2);\n return new OrderedMap(content)\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the start of the map.\n addToStart: function(key, value) {\n return new OrderedMap([key, value].concat(this.remove(key).content))\n },\n\n // :: (string, any) → OrderedMap\n // Add a new key to the end of the map.\n addToEnd: function(key, value) {\n var content = this.remove(key).content.slice();\n content.push(key, value);\n return new OrderedMap(content)\n },\n\n // :: (string, string, any) → OrderedMap\n // Add a key after the given key. If `place` is not found, the new\n // key is added to the end.\n addBefore: function(place, key, value) {\n var without = this.remove(key), content = without.content.slice();\n var found = without.find(place);\n content.splice(found == -1 ? content.length : found, 0, key, value);\n return new OrderedMap(content)\n },\n\n // :: ((key: string, value: any))\n // Call the given function for each key/value pair in the map, in\n // order.\n forEach: function(f) {\n for (var i = 0; i < this.content.length; i += 2)\n f(this.content[i], this.content[i + 1]);\n },\n\n // :: (union) → OrderedMap\n // Create a new map by prepending the keys in this map that don't\n // appear in `map` before the keys in `map`.\n prepend: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(map.content.concat(this.subtract(map).content))\n },\n\n // :: (union) → OrderedMap\n // Create a new map by appending the keys in this map that don't\n // appear in `map` after the keys in `map`.\n append: function(map) {\n map = OrderedMap.from(map);\n if (!map.size) return this\n return new OrderedMap(this.subtract(map).content.concat(map.content))\n },\n\n // :: (union) → OrderedMap\n // Create a map containing all the keys in this map that don't\n // appear in `map`.\n subtract: function(map) {\n var result = this;\n map = OrderedMap.from(map);\n for (var i = 0; i < map.content.length; i += 2)\n result = result.remove(map.content[i]);\n return result\n },\n\n // :: () → Object\n // Turn ordered map into a plain object.\n toObject: function() {\n var result = {};\n this.forEach(function(key, value) { result[key] = value; });\n return result\n },\n\n // :: number\n // The amount of keys in this map.\n get size() {\n return this.content.length >> 1\n }\n};\n\n// :: (?union) → OrderedMap\n// Return a map with the given content. If null, create an empty\n// map. If given an ordered map, return that map itself. If given an\n// object, create a map from the object's properties.\nOrderedMap.from = function(value) {\n if (value instanceof OrderedMap) return value\n var content = [];\n if (value) for (var prop in value) content.push(prop, value[prop]);\n return new OrderedMap(content)\n};\n\nexport default OrderedMap;\n","import OrderedMap from 'orderedmap';\n\nfunction findDiffStart(a, b, pos) {\n for (let i = 0;; i++) {\n if (i == a.childCount || i == b.childCount)\n return a.childCount == b.childCount ? null : pos;\n let childA = a.child(i), childB = b.child(i);\n if (childA == childB) {\n pos += childA.nodeSize;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return pos;\n if (childA.isText && childA.text != childB.text) {\n for (let j = 0; childA.text[j] == childB.text[j]; j++)\n pos++;\n return pos;\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffStart(childA.content, childB.content, pos + 1);\n if (inner != null)\n return inner;\n }\n pos += childA.nodeSize;\n }\n}\nfunction findDiffEnd(a, b, posA, posB) {\n for (let iA = a.childCount, iB = b.childCount;;) {\n if (iA == 0 || iB == 0)\n return iA == iB ? null : { a: posA, b: posB };\n let childA = a.child(--iA), childB = b.child(--iB), size = childA.nodeSize;\n if (childA == childB) {\n posA -= size;\n posB -= size;\n continue;\n }\n if (!childA.sameMarkup(childB))\n return { a: posA, b: posB };\n if (childA.isText && childA.text != childB.text) {\n let same = 0, minSize = Math.min(childA.text.length, childB.text.length);\n while (same < minSize && childA.text[childA.text.length - same - 1] == childB.text[childB.text.length - same - 1]) {\n same++;\n posA--;\n posB--;\n }\n return { a: posA, b: posB };\n }\n if (childA.content.size || childB.content.size) {\n let inner = findDiffEnd(childA.content, childB.content, posA - 1, posB - 1);\n if (inner)\n return inner;\n }\n posA -= size;\n posB -= size;\n }\n}\n\n/**\nA fragment represents a node's collection of child nodes.\n\nLike nodes, fragments are persistent data structures, and you\nshould not mutate them or their content. Rather, you create new\ninstances whenever needed. The API tries to make this easy.\n*/\nclass Fragment {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n content, size) {\n this.content = content;\n this.size = size || 0;\n if (size == null)\n for (let i = 0; i < content.length; i++)\n this.size += content[i].nodeSize;\n }\n /**\n Invoke a callback for all descendant nodes between the given two\n positions (relative to start of this fragment). Doesn't descend\n into a node when the callback returns `false`.\n */\n nodesBetween(from, to, f, nodeStart = 0, parent) {\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from && f(child, nodeStart + pos, parent || null, i) !== false && child.content.size) {\n let start = pos + 1;\n child.nodesBetween(Math.max(0, from - start), Math.min(child.content.size, to - start), f, nodeStart + start);\n }\n pos = end;\n }\n }\n /**\n Call the given callback for every descendant node. `pos` will be\n relative to the start of the fragment. The callback may return\n `false` to prevent traversal of a given node's children.\n */\n descendants(f) {\n this.nodesBetween(0, this.size, f);\n }\n /**\n Extract the text between `from` and `to`. See the same method on\n [`Node`](https://prosemirror.net/docs/ref/#model.Node.textBetween).\n */\n textBetween(from, to, blockSeparator, leafText) {\n let text = \"\", separated = true;\n this.nodesBetween(from, to, (node, pos) => {\n if (node.isText) {\n text += node.text.slice(Math.max(from, pos) - pos, to - pos);\n separated = !blockSeparator;\n }\n else if (node.isLeaf) {\n if (leafText) {\n text += typeof leafText === \"function\" ? leafText(node) : leafText;\n }\n else if (node.type.spec.leafText) {\n text += node.type.spec.leafText(node);\n }\n separated = !blockSeparator;\n }\n else if (!separated && node.isBlock) {\n text += blockSeparator;\n separated = true;\n }\n }, 0);\n return text;\n }\n /**\n Create a new fragment containing the combined content of this\n fragment and the other.\n */\n append(other) {\n if (!other.size)\n return this;\n if (!this.size)\n return other;\n let last = this.lastChild, first = other.firstChild, content = this.content.slice(), i = 0;\n if (last.isText && last.sameMarkup(first)) {\n content[content.length - 1] = last.withText(last.text + first.text);\n i = 1;\n }\n for (; i < other.content.length; i++)\n content.push(other.content[i]);\n return new Fragment(content, this.size + other.size);\n }\n /**\n Cut out the sub-fragment between the two given positions.\n */\n cut(from, to = this.size) {\n if (from == 0 && to == this.size)\n return this;\n let result = [], size = 0;\n if (to > from)\n for (let i = 0, pos = 0; pos < to; i++) {\n let child = this.content[i], end = pos + child.nodeSize;\n if (end > from) {\n if (pos < from || end > to) {\n if (child.isText)\n child = child.cut(Math.max(0, from - pos), Math.min(child.text.length, to - pos));\n else\n child = child.cut(Math.max(0, from - pos - 1), Math.min(child.content.size, to - pos - 1));\n }\n result.push(child);\n size += child.nodeSize;\n }\n pos = end;\n }\n return new Fragment(result, size);\n }\n /**\n @internal\n */\n cutByIndex(from, to) {\n if (from == to)\n return Fragment.empty;\n if (from == 0 && to == this.content.length)\n return this;\n return new Fragment(this.content.slice(from, to));\n }\n /**\n Create a new fragment in which the node at the given index is\n replaced by the given node.\n */\n replaceChild(index, node) {\n let current = this.content[index];\n if (current == node)\n return this;\n let copy = this.content.slice();\n let size = this.size + node.nodeSize - current.nodeSize;\n copy[index] = node;\n return new Fragment(copy, size);\n }\n /**\n Create a new fragment by prepending the given node to this\n fragment.\n */\n addToStart(node) {\n return new Fragment([node].concat(this.content), this.size + node.nodeSize);\n }\n /**\n Create a new fragment by appending the given node to this\n fragment.\n */\n addToEnd(node) {\n return new Fragment(this.content.concat(node), this.size + node.nodeSize);\n }\n /**\n Compare this fragment to another one.\n */\n eq(other) {\n if (this.content.length != other.content.length)\n return false;\n for (let i = 0; i < this.content.length; i++)\n if (!this.content[i].eq(other.content[i]))\n return false;\n return true;\n }\n /**\n The first child of the fragment, or `null` if it is empty.\n */\n get firstChild() { return this.content.length ? this.content[0] : null; }\n /**\n The last child of the fragment, or `null` if it is empty.\n */\n get lastChild() { return this.content.length ? this.content[this.content.length - 1] : null; }\n /**\n The number of child nodes in this fragment.\n */\n get childCount() { return this.content.length; }\n /**\n Get the child node at the given index. Raise an error when the\n index is out of range.\n */\n child(index) {\n let found = this.content[index];\n if (!found)\n throw new RangeError(\"Index \" + index + \" out of range for \" + this);\n return found;\n }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) {\n return this.content[index] || null;\n }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) {\n for (let i = 0, p = 0; i < this.content.length; i++) {\n let child = this.content[i];\n f(child, p, i);\n p += child.nodeSize;\n }\n }\n /**\n Find the first position at which this fragment and another\n fragment differ, or `null` if they are the same.\n */\n findDiffStart(other, pos = 0) {\n return findDiffStart(this, other, pos);\n }\n /**\n Find the first position, searching from the end, at which this\n fragment and the given fragment differ, or `null` if they are\n the same. Since this position will not be the same in both\n nodes, an object with two separate positions is returned.\n */\n findDiffEnd(other, pos = this.size, otherPos = other.size) {\n return findDiffEnd(this, other, pos, otherPos);\n }\n /**\n Find the index and inner offset corresponding to a given relative\n position in this fragment. The result object will be reused\n (overwritten) the next time the function is called. (Not public.)\n */\n findIndex(pos, round = -1) {\n if (pos == 0)\n return retIndex(0, pos);\n if (pos == this.size)\n return retIndex(this.content.length, pos);\n if (pos > this.size || pos < 0)\n throw new RangeError(`Position ${pos} outside of fragment (${this})`);\n for (let i = 0, curPos = 0;; i++) {\n let cur = this.child(i), end = curPos + cur.nodeSize;\n if (end >= pos) {\n if (end == pos || round > 0)\n return retIndex(i + 1, end);\n return retIndex(i, curPos);\n }\n curPos = end;\n }\n }\n /**\n Return a debugging string that describes this fragment.\n */\n toString() { return \"<\" + this.toStringInner() + \">\"; }\n /**\n @internal\n */\n toStringInner() { return this.content.join(\", \"); }\n /**\n Create a JSON-serializeable representation of this fragment.\n */\n toJSON() {\n return this.content.length ? this.content.map(n => n.toJSON()) : null;\n }\n /**\n Deserialize a fragment from its JSON representation.\n */\n static fromJSON(schema, value) {\n if (!value)\n return Fragment.empty;\n if (!Array.isArray(value))\n throw new RangeError(\"Invalid input for Fragment.fromJSON\");\n return new Fragment(value.map(schema.nodeFromJSON));\n }\n /**\n Build a fragment from an array of nodes. Ensures that adjacent\n text nodes with the same marks are joined together.\n */\n static fromArray(array) {\n if (!array.length)\n return Fragment.empty;\n let joined, size = 0;\n for (let i = 0; i < array.length; i++) {\n let node = array[i];\n size += node.nodeSize;\n if (i && node.isText && array[i - 1].sameMarkup(node)) {\n if (!joined)\n joined = array.slice(0, i);\n joined[joined.length - 1] = node\n .withText(joined[joined.length - 1].text + node.text);\n }\n else if (joined) {\n joined.push(node);\n }\n }\n return new Fragment(joined || array, size);\n }\n /**\n Create a fragment from something that can be interpreted as a\n set of nodes. For `null`, it returns the empty fragment. For a\n fragment, the fragment itself. For a node or array of nodes, a\n fragment containing those nodes.\n */\n static from(nodes) {\n if (!nodes)\n return Fragment.empty;\n if (nodes instanceof Fragment)\n return nodes;\n if (Array.isArray(nodes))\n return this.fromArray(nodes);\n if (nodes.attrs)\n return new Fragment([nodes], nodes.nodeSize);\n throw new RangeError(\"Can not convert \" + nodes + \" to a Fragment\" +\n (nodes.nodesBetween ? \" (looks like multiple versions of prosemirror-model were loaded)\" : \"\"));\n }\n}\n/**\nAn empty fragment. Intended to be reused whenever a node doesn't\ncontain anything (rather than allocating a new empty fragment for\neach leaf node).\n*/\nFragment.empty = new Fragment([], 0);\nconst found = { index: 0, offset: 0 };\nfunction retIndex(index, offset) {\n found.index = index;\n found.offset = offset;\n return found;\n}\n\nfunction compareDeep(a, b) {\n if (a === b)\n return true;\n if (!(a && typeof a == \"object\") ||\n !(b && typeof b == \"object\"))\n return false;\n let array = Array.isArray(a);\n if (Array.isArray(b) != array)\n return false;\n if (array) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!compareDeep(a[i], b[i]))\n return false;\n }\n else {\n for (let p in a)\n if (!(p in b) || !compareDeep(a[p], b[p]))\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n }\n return true;\n}\n\n/**\nA mark is a piece of information that can be attached to a node,\nsuch as it being emphasized, in code font, or a link. It has a\ntype and optionally a set of attributes that provide further\ninformation (such as the target of the link). Marks are created\nthrough a `Schema`, which controls which types exist and which\nattributes they have.\n*/\nclass Mark {\n /**\n @internal\n */\n constructor(\n /**\n The type of this mark.\n */\n type, \n /**\n The attributes associated with this mark.\n */\n attrs) {\n this.type = type;\n this.attrs = attrs;\n }\n /**\n Given a set of marks, create a new set which contains this one as\n well, in the right position. If this mark is already in the set,\n the set itself is returned. If any marks that are set to be\n [exclusive](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) with this mark are present,\n those are replaced by this one.\n */\n addToSet(set) {\n let copy, placed = false;\n for (let i = 0; i < set.length; i++) {\n let other = set[i];\n if (this.eq(other))\n return set;\n if (this.type.excludes(other.type)) {\n if (!copy)\n copy = set.slice(0, i);\n }\n else if (other.type.excludes(this.type)) {\n return set;\n }\n else {\n if (!placed && other.type.rank > this.type.rank) {\n if (!copy)\n copy = set.slice(0, i);\n copy.push(this);\n placed = true;\n }\n if (copy)\n copy.push(other);\n }\n }\n if (!copy)\n copy = set.slice();\n if (!placed)\n copy.push(this);\n return copy;\n }\n /**\n Remove this mark from the given set, returning a new set. If this\n mark is not in the set, the set itself is returned.\n */\n removeFromSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return set.slice(0, i).concat(set.slice(i + 1));\n return set;\n }\n /**\n Test whether this mark is in the given set of marks.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (this.eq(set[i]))\n return true;\n return false;\n }\n /**\n Test whether this mark has the same type and attributes as\n another mark.\n */\n eq(other) {\n return this == other ||\n (this.type == other.type && compareDeep(this.attrs, other.attrs));\n }\n /**\n Convert this mark to a JSON-serializeable representation.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n return obj;\n }\n /**\n Deserialize a mark from JSON.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Mark.fromJSON\");\n let type = schema.marks[json.type];\n if (!type)\n throw new RangeError(`There is no mark type ${json.type} in this schema`);\n return type.create(json.attrs);\n }\n /**\n Test whether two sets of marks are identical.\n */\n static sameSet(a, b) {\n if (a == b)\n return true;\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].eq(b[i]))\n return false;\n return true;\n }\n /**\n Create a properly sorted mark set from null, a single mark, or an\n unsorted array of marks.\n */\n static setFrom(marks) {\n if (!marks || Array.isArray(marks) && marks.length == 0)\n return Mark.none;\n if (marks instanceof Mark)\n return [marks];\n let copy = marks.slice();\n copy.sort((a, b) => a.type.rank - b.type.rank);\n return copy;\n }\n}\n/**\nThe empty set of marks.\n*/\nMark.none = [];\n\n/**\nError type raised by [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) when\ngiven an invalid replacement.\n*/\nclass ReplaceError extends Error {\n}\n/*\nReplaceError = function(this: any, message: string) {\n let err = Error.call(this, message)\n ;(err as any).__proto__ = ReplaceError.prototype\n return err\n} as any\n\nReplaceError.prototype = Object.create(Error.prototype)\nReplaceError.prototype.constructor = ReplaceError\nReplaceError.prototype.name = \"ReplaceError\"\n*/\n/**\nA slice represents a piece cut out of a larger document. It\nstores not only a fragment, but also the depth up to which nodes on\nboth side are ‘open’ (cut through).\n*/\nclass Slice {\n /**\n Create a slice. When specifying a non-zero open depth, you must\n make sure that there are nodes of at least that depth at the\n appropriate side of the fragment—i.e. if the fragment is an\n empty paragraph node, `openStart` and `openEnd` can't be greater\n than 1.\n \n It is not necessary for the content of open nodes to conform to\n the schema's content constraints, though it should be a valid\n start/end/middle for such a node, depending on which sides are\n open.\n */\n constructor(\n /**\n The slice's content.\n */\n content, \n /**\n The open depth at the start of the fragment.\n */\n openStart, \n /**\n The open depth at the end.\n */\n openEnd) {\n this.content = content;\n this.openStart = openStart;\n this.openEnd = openEnd;\n }\n /**\n The size this slice would add when inserted into a document.\n */\n get size() {\n return this.content.size - this.openStart - this.openEnd;\n }\n /**\n @internal\n */\n insertAt(pos, fragment) {\n let content = insertInto(this.content, pos + this.openStart, fragment);\n return content && new Slice(content, this.openStart, this.openEnd);\n }\n /**\n @internal\n */\n removeBetween(from, to) {\n return new Slice(removeRange(this.content, from + this.openStart, to + this.openStart), this.openStart, this.openEnd);\n }\n /**\n Tests whether this slice is equal to another slice.\n */\n eq(other) {\n return this.content.eq(other.content) && this.openStart == other.openStart && this.openEnd == other.openEnd;\n }\n /**\n @internal\n */\n toString() {\n return this.content + \"(\" + this.openStart + \",\" + this.openEnd + \")\";\n }\n /**\n Convert a slice to a JSON-serializable representation.\n */\n toJSON() {\n if (!this.content.size)\n return null;\n let json = { content: this.content.toJSON() };\n if (this.openStart > 0)\n json.openStart = this.openStart;\n if (this.openEnd > 0)\n json.openEnd = this.openEnd;\n return json;\n }\n /**\n Deserialize a slice from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n return Slice.empty;\n let openStart = json.openStart || 0, openEnd = json.openEnd || 0;\n if (typeof openStart != \"number\" || typeof openEnd != \"number\")\n throw new RangeError(\"Invalid input for Slice.fromJSON\");\n return new Slice(Fragment.fromJSON(schema, json.content), openStart, openEnd);\n }\n /**\n Create a slice from a fragment by taking the maximum possible\n open value on both side of the fragment.\n */\n static maxOpen(fragment, openIsolating = true) {\n let openStart = 0, openEnd = 0;\n for (let n = fragment.firstChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.firstChild)\n openStart++;\n for (let n = fragment.lastChild; n && !n.isLeaf && (openIsolating || !n.type.spec.isolating); n = n.lastChild)\n openEnd++;\n return new Slice(fragment, openStart, openEnd);\n }\n}\n/**\nThe empty slice.\n*/\nSlice.empty = new Slice(Fragment.empty, 0, 0);\nfunction removeRange(content, from, to) {\n let { index, offset } = content.findIndex(from), child = content.maybeChild(index);\n let { index: indexTo, offset: offsetTo } = content.findIndex(to);\n if (offset == from || child.isText) {\n if (offsetTo != to && !content.child(indexTo).isText)\n throw new RangeError(\"Removing non-flat range\");\n return content.cut(0, from).append(content.cut(to));\n }\n if (index != indexTo)\n throw new RangeError(\"Removing non-flat range\");\n return content.replaceChild(index, child.copy(removeRange(child.content, from - offset - 1, to - offset - 1)));\n}\nfunction insertInto(content, dist, insert, parent) {\n let { index, offset } = content.findIndex(dist), child = content.maybeChild(index);\n if (offset == dist || child.isText) {\n if (parent && !parent.canReplace(index, index, insert))\n return null;\n return content.cut(0, dist).append(insert).append(content.cut(dist));\n }\n let inner = insertInto(child.content, dist - offset - 1, insert);\n return inner && content.replaceChild(index, child.copy(inner));\n}\nfunction replace($from, $to, slice) {\n if (slice.openStart > $from.depth)\n throw new ReplaceError(\"Inserted content deeper than insertion position\");\n if ($from.depth - slice.openStart != $to.depth - slice.openEnd)\n throw new ReplaceError(\"Inconsistent open depths\");\n return replaceOuter($from, $to, slice, 0);\n}\nfunction replaceOuter($from, $to, slice, depth) {\n let index = $from.index(depth), node = $from.node(depth);\n if (index == $to.index(depth) && depth < $from.depth - slice.openStart) {\n let inner = replaceOuter($from, $to, slice, depth + 1);\n return node.copy(node.content.replaceChild(index, inner));\n }\n else if (!slice.content.size) {\n return close(node, replaceTwoWay($from, $to, depth));\n }\n else if (!slice.openStart && !slice.openEnd && $from.depth == depth && $to.depth == depth) { // Simple, flat case\n let parent = $from.parent, content = parent.content;\n return close(parent, content.cut(0, $from.parentOffset).append(slice.content).append(content.cut($to.parentOffset)));\n }\n else {\n let { start, end } = prepareSliceForReplace(slice, $from);\n return close(node, replaceThreeWay($from, start, end, $to, depth));\n }\n}\nfunction checkJoin(main, sub) {\n if (!sub.type.compatibleContent(main.type))\n throw new ReplaceError(\"Cannot join \" + sub.type.name + \" onto \" + main.type.name);\n}\nfunction joinable($before, $after, depth) {\n let node = $before.node(depth);\n checkJoin(node, $after.node(depth));\n return node;\n}\nfunction addNode(child, target) {\n let last = target.length - 1;\n if (last >= 0 && child.isText && child.sameMarkup(target[last]))\n target[last] = child.withText(target[last].text + child.text);\n else\n target.push(child);\n}\nfunction addRange($start, $end, depth, target) {\n let node = ($end || $start).node(depth);\n let startIndex = 0, endIndex = $end ? $end.index(depth) : node.childCount;\n if ($start) {\n startIndex = $start.index(depth);\n if ($start.depth > depth) {\n startIndex++;\n }\n else if ($start.textOffset) {\n addNode($start.nodeAfter, target);\n startIndex++;\n }\n }\n for (let i = startIndex; i < endIndex; i++)\n addNode(node.child(i), target);\n if ($end && $end.depth == depth && $end.textOffset)\n addNode($end.nodeBefore, target);\n}\nfunction close(node, content) {\n node.type.checkContent(content);\n return node.copy(content);\n}\nfunction replaceThreeWay($from, $start, $end, $to, depth) {\n let openStart = $from.depth > depth && joinable($from, $start, depth + 1);\n let openEnd = $to.depth > depth && joinable($end, $to, depth + 1);\n let content = [];\n addRange(null, $from, depth, content);\n if (openStart && openEnd && $start.index(depth) == $end.index(depth)) {\n checkJoin(openStart, openEnd);\n addNode(close(openStart, replaceThreeWay($from, $start, $end, $to, depth + 1)), content);\n }\n else {\n if (openStart)\n addNode(close(openStart, replaceTwoWay($from, $start, depth + 1)), content);\n addRange($start, $end, depth, content);\n if (openEnd)\n addNode(close(openEnd, replaceTwoWay($end, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction replaceTwoWay($from, $to, depth) {\n let content = [];\n addRange(null, $from, depth, content);\n if ($from.depth > depth) {\n let type = joinable($from, $to, depth + 1);\n addNode(close(type, replaceTwoWay($from, $to, depth + 1)), content);\n }\n addRange($to, null, depth, content);\n return new Fragment(content);\n}\nfunction prepareSliceForReplace(slice, $along) {\n let extra = $along.depth - slice.openStart, parent = $along.node(extra);\n let node = parent.copy(slice.content);\n for (let i = extra - 1; i >= 0; i--)\n node = $along.node(i).copy(Fragment.from(node));\n return { start: node.resolveNoCache(slice.openStart + extra),\n end: node.resolveNoCache(node.content.size - slice.openEnd - extra) };\n}\n\n/**\nYou can [_resolve_](https://prosemirror.net/docs/ref/#model.Node.resolve) a position to get more\ninformation about it. Objects of this class represent such a\nresolved position, providing various pieces of context\ninformation, and some helper methods.\n\nThroughout this interface, methods that take an optional `depth`\nparameter will interpret undefined as `this.depth` and negative\nnumbers as `this.depth + value`.\n*/\nclass ResolvedPos {\n /**\n @internal\n */\n constructor(\n /**\n The position that was resolved.\n */\n pos, \n /**\n @internal\n */\n path, \n /**\n The offset this position has into its parent node.\n */\n parentOffset) {\n this.pos = pos;\n this.path = path;\n this.parentOffset = parentOffset;\n this.depth = path.length / 3 - 1;\n }\n /**\n @internal\n */\n resolveDepth(val) {\n if (val == null)\n return this.depth;\n if (val < 0)\n return this.depth + val;\n return val;\n }\n /**\n The parent node that the position points into. Note that even if\n a position points into a text node, that node is not considered\n the parent—text nodes are ‘flat’ in this model, and have no content.\n */\n get parent() { return this.node(this.depth); }\n /**\n The root node in which the position was resolved.\n */\n get doc() { return this.node(0); }\n /**\n The ancestor node at the given level. `p.node(p.depth)` is the\n same as `p.parent`.\n */\n node(depth) { return this.path[this.resolveDepth(depth) * 3]; }\n /**\n The index into the ancestor at the given level. If this points\n at the 3rd node in the 2nd paragraph on the top level, for\n example, `p.index(0)` is 1 and `p.index(1)` is 2.\n */\n index(depth) { return this.path[this.resolveDepth(depth) * 3 + 1]; }\n /**\n The index pointing after this position into the ancestor at the\n given level.\n */\n indexAfter(depth) {\n depth = this.resolveDepth(depth);\n return this.index(depth) + (depth == this.depth && !this.textOffset ? 0 : 1);\n }\n /**\n The (absolute) position at the start of the node at the given\n level.\n */\n start(depth) {\n depth = this.resolveDepth(depth);\n return depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n }\n /**\n The (absolute) position at the end of the node at the given\n level.\n */\n end(depth) {\n depth = this.resolveDepth(depth);\n return this.start(depth) + this.node(depth).content.size;\n }\n /**\n The (absolute) position directly before the wrapping node at the\n given level, or, when `depth` is `this.depth + 1`, the original\n position.\n */\n before(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position before the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1];\n }\n /**\n The (absolute) position directly after the wrapping node at the\n given level, or the original position when `depth` is `this.depth + 1`.\n */\n after(depth) {\n depth = this.resolveDepth(depth);\n if (!depth)\n throw new RangeError(\"There is no position after the top-level node\");\n return depth == this.depth + 1 ? this.pos : this.path[depth * 3 - 1] + this.path[depth * 3].nodeSize;\n }\n /**\n When this position points into a text node, this returns the\n distance between the position and the start of the text node.\n Will be zero for positions that point between nodes.\n */\n get textOffset() { return this.pos - this.path[this.path.length - 1]; }\n /**\n Get the node directly after the position, if any. If the position\n points into a text node, only the part of that node after the\n position is returned.\n */\n get nodeAfter() {\n let parent = this.parent, index = this.index(this.depth);\n if (index == parent.childCount)\n return null;\n let dOff = this.pos - this.path[this.path.length - 1], child = parent.child(index);\n return dOff ? parent.child(index).cut(dOff) : child;\n }\n /**\n Get the node directly before the position, if any. If the\n position points into a text node, only the part of that node\n before the position is returned.\n */\n get nodeBefore() {\n let index = this.index(this.depth);\n let dOff = this.pos - this.path[this.path.length - 1];\n if (dOff)\n return this.parent.child(index).cut(0, dOff);\n return index == 0 ? null : this.parent.child(index - 1);\n }\n /**\n Get the position at the given index in the parent node at the\n given depth (which defaults to `this.depth`).\n */\n posAtIndex(index, depth) {\n depth = this.resolveDepth(depth);\n let node = this.path[depth * 3], pos = depth == 0 ? 0 : this.path[depth * 3 - 1] + 1;\n for (let i = 0; i < index; i++)\n pos += node.child(i).nodeSize;\n return pos;\n }\n /**\n Get the marks at this position, factoring in the surrounding\n marks' [`inclusive`](https://prosemirror.net/docs/ref/#model.MarkSpec.inclusive) property. If the\n position is at the start of a non-empty node, the marks of the\n node after it (if any) are returned.\n */\n marks() {\n let parent = this.parent, index = this.index();\n // In an empty parent, return the empty array\n if (parent.content.size == 0)\n return Mark.none;\n // When inside a text node, just return the text node's marks\n if (this.textOffset)\n return parent.child(index).marks;\n let main = parent.maybeChild(index - 1), other = parent.maybeChild(index);\n // If the `after` flag is true of there is no node before, make\n // the node after this position the main reference.\n if (!main) {\n let tmp = main;\n main = other;\n other = tmp;\n }\n // Use all marks in the main node, except those that have\n // `inclusive` set to false and are not present in the other node.\n let marks = main.marks;\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!other || !marks[i].isInSet(other.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n Get the marks after the current position, if any, except those\n that are non-inclusive and not present at position `$end`. This\n is mostly useful for getting the set of marks to preserve after a\n deletion. Will return `null` if this position is at the end of\n its parent node or its parent node isn't a textblock (in which\n case no marks should be preserved).\n */\n marksAcross($end) {\n let after = this.parent.maybeChild(this.index());\n if (!after || !after.isInline)\n return null;\n let marks = after.marks, next = $end.parent.maybeChild($end.index());\n for (var i = 0; i < marks.length; i++)\n if (marks[i].type.spec.inclusive === false && (!next || !marks[i].isInSet(next.marks)))\n marks = marks[i--].removeFromSet(marks);\n return marks;\n }\n /**\n The depth up to which this position and the given (non-resolved)\n position share the same parent nodes.\n */\n sharedDepth(pos) {\n for (let depth = this.depth; depth > 0; depth--)\n if (this.start(depth) <= pos && this.end(depth) >= pos)\n return depth;\n return 0;\n }\n /**\n Returns a range based on the place where this position and the\n given position diverge around block content. If both point into\n the same textblock, for example, a range around that textblock\n will be returned. If they point into different blocks, the range\n around those blocks in their shared ancestor is returned. You can\n pass in an optional predicate that will be called with a parent\n node to see if a range into that parent is acceptable.\n */\n blockRange(other = this, pred) {\n if (other.pos < this.pos)\n return other.blockRange(this);\n for (let d = this.depth - (this.parent.inlineContent || this.pos == other.pos ? 1 : 0); d >= 0; d--)\n if (other.pos <= this.end(d) && (!pred || pred(this.node(d))))\n return new NodeRange(this, other, d);\n return null;\n }\n /**\n Query whether the given position shares the same parent node.\n */\n sameParent(other) {\n return this.pos - this.parentOffset == other.pos - other.parentOffset;\n }\n /**\n Return the greater of this and the given position.\n */\n max(other) {\n return other.pos > this.pos ? other : this;\n }\n /**\n Return the smaller of this and the given position.\n */\n min(other) {\n return other.pos < this.pos ? other : this;\n }\n /**\n @internal\n */\n toString() {\n let str = \"\";\n for (let i = 1; i <= this.depth; i++)\n str += (str ? \"/\" : \"\") + this.node(i).type.name + \"_\" + this.index(i - 1);\n return str + \":\" + this.parentOffset;\n }\n /**\n @internal\n */\n static resolve(doc, pos) {\n if (!(pos >= 0 && pos <= doc.content.size))\n throw new RangeError(\"Position \" + pos + \" out of range\");\n let path = [];\n let start = 0, parentOffset = pos;\n for (let node = doc;;) {\n let { index, offset } = node.content.findIndex(parentOffset);\n let rem = parentOffset - offset;\n path.push(node, index, start + offset);\n if (!rem)\n break;\n node = node.child(index);\n if (node.isText)\n break;\n parentOffset = rem - 1;\n start += offset + 1;\n }\n return new ResolvedPos(pos, path, parentOffset);\n }\n /**\n @internal\n */\n static resolveCached(doc, pos) {\n for (let i = 0; i < resolveCache.length; i++) {\n let cached = resolveCache[i];\n if (cached.pos == pos && cached.doc == doc)\n return cached;\n }\n let result = resolveCache[resolveCachePos] = ResolvedPos.resolve(doc, pos);\n resolveCachePos = (resolveCachePos + 1) % resolveCacheSize;\n return result;\n }\n}\nlet resolveCache = [], resolveCachePos = 0, resolveCacheSize = 12;\n/**\nRepresents a flat range of content, i.e. one that starts and\nends in the same node.\n*/\nclass NodeRange {\n /**\n Construct a node range. `$from` and `$to` should point into the\n same node until at least the given `depth`, since a node range\n denotes an adjacent set of nodes in a single parent node.\n */\n constructor(\n /**\n A resolved position along the start of the content. May have a\n `depth` greater than this object's `depth` property, since\n these are the positions that were used to compute the range,\n not re-resolved positions directly at its boundaries.\n */\n $from, \n /**\n A position along the end of the content. See\n caveat for [`$from`](https://prosemirror.net/docs/ref/#model.NodeRange.$from).\n */\n $to, \n /**\n The depth of the node that this range points into.\n */\n depth) {\n this.$from = $from;\n this.$to = $to;\n this.depth = depth;\n }\n /**\n The position at the start of the range.\n */\n get start() { return this.$from.before(this.depth + 1); }\n /**\n The position at the end of the range.\n */\n get end() { return this.$to.after(this.depth + 1); }\n /**\n The parent node that the range points into.\n */\n get parent() { return this.$from.node(this.depth); }\n /**\n The start index of the range in the parent node.\n */\n get startIndex() { return this.$from.index(this.depth); }\n /**\n The end index of the range in the parent node.\n */\n get endIndex() { return this.$to.indexAfter(this.depth); }\n}\n\nconst emptyAttrs = Object.create(null);\n/**\nThis class represents a node in the tree that makes up a\nProseMirror document. So a document is an instance of `Node`, with\nchildren that are also instances of `Node`.\n\nNodes are persistent data structures. Instead of changing them, you\ncreate new ones with the content you want. Old ones keep pointing\nat the old document shape. This is made cheaper by sharing\nstructure between the old and new data as much as possible, which a\ntree shape like this (without back pointers) makes easy.\n\n**Do not** directly mutate the properties of a `Node` object. See\n[the guide](/docs/guide/#doc) for more information.\n*/\nclass Node {\n /**\n @internal\n */\n constructor(\n /**\n The type of node that this is.\n */\n type, \n /**\n An object mapping attribute names to values. The kind of\n attributes allowed and required are\n [determined](https://prosemirror.net/docs/ref/#model.NodeSpec.attrs) by the node type.\n */\n attrs, \n // A fragment holding the node's children.\n content, \n /**\n The marks (things like whether it is emphasized or part of a\n link) applied to this node.\n */\n marks = Mark.none) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.content = content || Fragment.empty;\n }\n /**\n The size of this node, as defined by the integer-based [indexing\n scheme](/docs/guide/#doc.indexing). For text nodes, this is the\n amount of characters. For other leaf nodes, it is one. For\n non-leaf nodes, it is the size of the content plus two (the\n start and end token).\n */\n get nodeSize() { return this.isLeaf ? 1 : 2 + this.content.size; }\n /**\n The number of children that the node has.\n */\n get childCount() { return this.content.childCount; }\n /**\n Get the child node at the given index. Raises an error when the\n index is out of range.\n */\n child(index) { return this.content.child(index); }\n /**\n Get the child node at the given index, if it exists.\n */\n maybeChild(index) { return this.content.maybeChild(index); }\n /**\n Call `f` for every child node, passing the node, its offset\n into this parent node, and its index.\n */\n forEach(f) { this.content.forEach(f); }\n /**\n Invoke a callback for all descendant nodes recursively between\n the given two positions that are relative to start of this\n node's content. The callback is invoked with the node, its\n position relative to the original node (method receiver),\n its parent node, and its child index. When the callback returns\n false for a given node, that node's children will not be\n recursed over. The last parameter can be used to specify a\n starting position to count from.\n */\n nodesBetween(from, to, f, startPos = 0) {\n this.content.nodesBetween(from, to, f, startPos, this);\n }\n /**\n Call the given callback for every descendant node. Doesn't\n descend into a node when the callback returns `false`.\n */\n descendants(f) {\n this.nodesBetween(0, this.content.size, f);\n }\n /**\n Concatenates all the text nodes found in this fragment and its\n children.\n */\n get textContent() {\n return (this.isLeaf && this.type.spec.leafText)\n ? this.type.spec.leafText(this)\n : this.textBetween(0, this.content.size, \"\");\n }\n /**\n Get all text between positions `from` and `to`. When\n `blockSeparator` is given, it will be inserted to separate text\n from different block nodes. If `leafText` is given, it'll be\n inserted for every non-text leaf node encountered, otherwise\n [`leafText`](https://prosemirror.net/docs/ref/#model.NodeSpec^leafText) will be used.\n */\n textBetween(from, to, blockSeparator, leafText) {\n return this.content.textBetween(from, to, blockSeparator, leafText);\n }\n /**\n Returns this node's first child, or `null` if there are no\n children.\n */\n get firstChild() { return this.content.firstChild; }\n /**\n Returns this node's last child, or `null` if there are no\n children.\n */\n get lastChild() { return this.content.lastChild; }\n /**\n Test whether two nodes represent the same piece of document.\n */\n eq(other) {\n return this == other || (this.sameMarkup(other) && this.content.eq(other.content));\n }\n /**\n Compare the markup (type, attributes, and marks) of this node to\n those of another. Returns `true` if both have the same markup.\n */\n sameMarkup(other) {\n return this.hasMarkup(other.type, other.attrs, other.marks);\n }\n /**\n Check whether this node's markup correspond to the given type,\n attributes, and marks.\n */\n hasMarkup(type, attrs, marks) {\n return this.type == type &&\n compareDeep(this.attrs, attrs || type.defaultAttrs || emptyAttrs) &&\n Mark.sameSet(this.marks, marks || Mark.none);\n }\n /**\n Create a new node with the same markup as this node, containing\n the given content (or empty, if no content is given).\n */\n copy(content = null) {\n if (content == this.content)\n return this;\n return new Node(this.type, this.attrs, content, this.marks);\n }\n /**\n Create a copy of this node, with the given set of marks instead\n of the node's own marks.\n */\n mark(marks) {\n return marks == this.marks ? this : new Node(this.type, this.attrs, this.content, marks);\n }\n /**\n Create a copy of this node with only the content between the\n given positions. If `to` is not given, it defaults to the end of\n the node.\n */\n cut(from, to = this.content.size) {\n if (from == 0 && to == this.content.size)\n return this;\n return this.copy(this.content.cut(from, to));\n }\n /**\n Cut out the part of the document between the given positions, and\n return it as a `Slice` object.\n */\n slice(from, to = this.content.size, includeParents = false) {\n if (from == to)\n return Slice.empty;\n let $from = this.resolve(from), $to = this.resolve(to);\n let depth = includeParents ? 0 : $from.sharedDepth(to);\n let start = $from.start(depth), node = $from.node(depth);\n let content = node.content.cut($from.pos - start, $to.pos - start);\n return new Slice(content, $from.depth - depth, $to.depth - depth);\n }\n /**\n Replace the part of the document between the given positions with\n the given slice. The slice must 'fit', meaning its open sides\n must be able to connect to the surrounding content, and its\n content nodes must be valid children for the node they are placed\n into. If any of this is violated, an error of type\n [`ReplaceError`](https://prosemirror.net/docs/ref/#model.ReplaceError) is thrown.\n */\n replace(from, to, slice) {\n return replace(this.resolve(from), this.resolve(to), slice);\n }\n /**\n Find the node directly after the given position.\n */\n nodeAt(pos) {\n for (let node = this;;) {\n let { index, offset } = node.content.findIndex(pos);\n node = node.maybeChild(index);\n if (!node)\n return null;\n if (offset == pos || node.isText)\n return node;\n pos -= offset + 1;\n }\n }\n /**\n Find the (direct) child node after the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childAfter(pos) {\n let { index, offset } = this.content.findIndex(pos);\n return { node: this.content.maybeChild(index), index, offset };\n }\n /**\n Find the (direct) child node before the given offset, if any,\n and return it along with its index and offset relative to this\n node.\n */\n childBefore(pos) {\n if (pos == 0)\n return { node: null, index: 0, offset: 0 };\n let { index, offset } = this.content.findIndex(pos);\n if (offset < pos)\n return { node: this.content.child(index), index, offset };\n let node = this.content.child(index - 1);\n return { node, index: index - 1, offset: offset - node.nodeSize };\n }\n /**\n Resolve the given position in the document, returning an\n [object](https://prosemirror.net/docs/ref/#model.ResolvedPos) with information about its context.\n */\n resolve(pos) { return ResolvedPos.resolveCached(this, pos); }\n /**\n @internal\n */\n resolveNoCache(pos) { return ResolvedPos.resolve(this, pos); }\n /**\n Test whether a given mark or mark type occurs in this document\n between the two given positions.\n */\n rangeHasMark(from, to, type) {\n let found = false;\n if (to > from)\n this.nodesBetween(from, to, node => {\n if (type.isInSet(node.marks))\n found = true;\n return !found;\n });\n return found;\n }\n /**\n True when this is a block (non-inline node)\n */\n get isBlock() { return this.type.isBlock; }\n /**\n True when this is a textblock node, a block node with inline\n content.\n */\n get isTextblock() { return this.type.isTextblock; }\n /**\n True when this node allows inline content.\n */\n get inlineContent() { return this.type.inlineContent; }\n /**\n True when this is an inline node (a text node or a node that can\n appear among text).\n */\n get isInline() { return this.type.isInline; }\n /**\n True when this is a text node.\n */\n get isText() { return this.type.isText; }\n /**\n True when this is a leaf node.\n */\n get isLeaf() { return this.type.isLeaf; }\n /**\n True when this is an atom, i.e. when it does not have directly\n editable content. This is usually the same as `isLeaf`, but can\n be configured with the [`atom` property](https://prosemirror.net/docs/ref/#model.NodeSpec.atom)\n on a node's spec (typically used when the node is displayed as\n an uneditable [node view](https://prosemirror.net/docs/ref/#view.NodeView)).\n */\n get isAtom() { return this.type.isAtom; }\n /**\n Return a string representation of this node for debugging\n purposes.\n */\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n let name = this.type.name;\n if (this.content.size)\n name += \"(\" + this.content.toStringInner() + \")\";\n return wrapMarks(this.marks, name);\n }\n /**\n Get the content match in this node at the given index.\n */\n contentMatchAt(index) {\n let match = this.type.contentMatch.matchFragment(this.content, 0, index);\n if (!match)\n throw new Error(\"Called contentMatchAt on a node with invalid content\");\n return match;\n }\n /**\n Test whether replacing the range between `from` and `to` (by\n child index) with the given replacement fragment (which defaults\n to the empty fragment) would leave the node's content valid. You\n can optionally pass `start` and `end` indices into the\n replacement fragment.\n */\n canReplace(from, to, replacement = Fragment.empty, start = 0, end = replacement.childCount) {\n let one = this.contentMatchAt(from).matchFragment(replacement, start, end);\n let two = one && one.matchFragment(this.content, to);\n if (!two || !two.validEnd)\n return false;\n for (let i = start; i < end; i++)\n if (!this.type.allowsMarks(replacement.child(i).marks))\n return false;\n return true;\n }\n /**\n Test whether replacing the range `from` to `to` (by index) with\n a node of the given type would leave the node's content valid.\n */\n canReplaceWith(from, to, type, marks) {\n if (marks && !this.type.allowsMarks(marks))\n return false;\n let start = this.contentMatchAt(from).matchType(type);\n let end = start && start.matchFragment(this.content, to);\n return end ? end.validEnd : false;\n }\n /**\n Test whether the given node's content could be appended to this\n node. If that node is empty, this will only return true if there\n is at least one node type that can appear in both nodes (to avoid\n merging completely incompatible nodes).\n */\n canAppend(other) {\n if (other.content.size)\n return this.canReplace(this.childCount, this.childCount, other.content);\n else\n return this.type.compatibleContent(other.type);\n }\n /**\n Check whether this node and its descendants conform to the\n schema, and raise error when they do not.\n */\n check() {\n this.type.checkContent(this.content);\n let copy = Mark.none;\n for (let i = 0; i < this.marks.length; i++)\n copy = this.marks[i].addToSet(copy);\n if (!Mark.sameSet(copy, this.marks))\n throw new RangeError(`Invalid collection of marks for node ${this.type.name}: ${this.marks.map(m => m.type.name)}`);\n this.content.forEach(node => node.check());\n }\n /**\n Return a JSON-serializeable representation of this node.\n */\n toJSON() {\n let obj = { type: this.type.name };\n for (let _ in this.attrs) {\n obj.attrs = this.attrs;\n break;\n }\n if (this.content.size)\n obj.content = this.content.toJSON();\n if (this.marks.length)\n obj.marks = this.marks.map(n => n.toJSON());\n return obj;\n }\n /**\n Deserialize a node from its JSON representation.\n */\n static fromJSON(schema, json) {\n if (!json)\n throw new RangeError(\"Invalid input for Node.fromJSON\");\n let marks = null;\n if (json.marks) {\n if (!Array.isArray(json.marks))\n throw new RangeError(\"Invalid mark data for Node.fromJSON\");\n marks = json.marks.map(schema.markFromJSON);\n }\n if (json.type == \"text\") {\n if (typeof json.text != \"string\")\n throw new RangeError(\"Invalid text node in JSON\");\n return schema.text(json.text, marks);\n }\n let content = Fragment.fromJSON(schema, json.content);\n return schema.nodeType(json.type).create(json.attrs, content, marks);\n }\n}\nNode.prototype.text = undefined;\nclass TextNode extends Node {\n /**\n @internal\n */\n constructor(type, attrs, content, marks) {\n super(type, attrs, null, marks);\n if (!content)\n throw new RangeError(\"Empty text nodes are not allowed\");\n this.text = content;\n }\n toString() {\n if (this.type.spec.toDebugString)\n return this.type.spec.toDebugString(this);\n return wrapMarks(this.marks, JSON.stringify(this.text));\n }\n get textContent() { return this.text; }\n textBetween(from, to) { return this.text.slice(from, to); }\n get nodeSize() { return this.text.length; }\n mark(marks) {\n return marks == this.marks ? this : new TextNode(this.type, this.attrs, this.text, marks);\n }\n withText(text) {\n if (text == this.text)\n return this;\n return new TextNode(this.type, this.attrs, text, this.marks);\n }\n cut(from = 0, to = this.text.length) {\n if (from == 0 && to == this.text.length)\n return this;\n return this.withText(this.text.slice(from, to));\n }\n eq(other) {\n return this.sameMarkup(other) && this.text == other.text;\n }\n toJSON() {\n let base = super.toJSON();\n base.text = this.text;\n return base;\n }\n}\nfunction wrapMarks(marks, str) {\n for (let i = marks.length - 1; i >= 0; i--)\n str = marks[i].type.name + \"(\" + str + \")\";\n return str;\n}\n\n/**\nInstances of this class represent a match state of a node type's\n[content expression](https://prosemirror.net/docs/ref/#model.NodeSpec.content), and can be used to\nfind out whether further content matches here, and whether a given\nposition is a valid end of the node.\n*/\nclass ContentMatch {\n /**\n @internal\n */\n constructor(\n /**\n True when this match state represents a valid end of the node.\n */\n validEnd) {\n this.validEnd = validEnd;\n /**\n @internal\n */\n this.next = [];\n /**\n @internal\n */\n this.wrapCache = [];\n }\n /**\n @internal\n */\n static parse(string, nodeTypes) {\n let stream = new TokenStream(string, nodeTypes);\n if (stream.next == null)\n return ContentMatch.empty;\n let expr = parseExpr(stream);\n if (stream.next)\n stream.err(\"Unexpected trailing text\");\n let match = dfa(nfa(expr));\n checkForDeadEnds(match, stream);\n return match;\n }\n /**\n Match a node type, returning a match after that node if\n successful.\n */\n matchType(type) {\n for (let i = 0; i < this.next.length; i++)\n if (this.next[i].type == type)\n return this.next[i].next;\n return null;\n }\n /**\n Try to match a fragment. Returns the resulting match when\n successful.\n */\n matchFragment(frag, start = 0, end = frag.childCount) {\n let cur = this;\n for (let i = start; cur && i < end; i++)\n cur = cur.matchType(frag.child(i).type);\n return cur;\n }\n /**\n @internal\n */\n get inlineContent() {\n return this.next.length != 0 && this.next[0].type.isInline;\n }\n /**\n Get the first matching node type at this match position that can\n be generated.\n */\n get defaultType() {\n for (let i = 0; i < this.next.length; i++) {\n let { type } = this.next[i];\n if (!(type.isText || type.hasRequiredAttrs()))\n return type;\n }\n return null;\n }\n /**\n @internal\n */\n compatible(other) {\n for (let i = 0; i < this.next.length; i++)\n for (let j = 0; j < other.next.length; j++)\n if (this.next[i].type == other.next[j].type)\n return true;\n return false;\n }\n /**\n Try to match the given fragment, and if that fails, see if it can\n be made to match by inserting nodes in front of it. When\n successful, return a fragment of inserted nodes (which may be\n empty if nothing had to be inserted). When `toEnd` is true, only\n return a fragment if the resulting match goes to the end of the\n content expression.\n */\n fillBefore(after, toEnd = false, startIndex = 0) {\n let seen = [this];\n function search(match, types) {\n let finished = match.matchFragment(after, startIndex);\n if (finished && (!toEnd || finished.validEnd))\n return Fragment.from(types.map(tp => tp.createAndFill()));\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!(type.isText || type.hasRequiredAttrs()) && seen.indexOf(next) == -1) {\n seen.push(next);\n let found = search(next, types.concat(type));\n if (found)\n return found;\n }\n }\n return null;\n }\n return search(this, []);\n }\n /**\n Find a set of wrapping node types that would allow a node of the\n given type to appear at this position. The result may be empty\n (when it fits directly) and will be null when no such wrapping\n exists.\n */\n findWrapping(target) {\n for (let i = 0; i < this.wrapCache.length; i += 2)\n if (this.wrapCache[i] == target)\n return this.wrapCache[i + 1];\n let computed = this.computeWrapping(target);\n this.wrapCache.push(target, computed);\n return computed;\n }\n /**\n @internal\n */\n computeWrapping(target) {\n let seen = Object.create(null), active = [{ match: this, type: null, via: null }];\n while (active.length) {\n let current = active.shift(), match = current.match;\n if (match.matchType(target)) {\n let result = [];\n for (let obj = current; obj.type; obj = obj.via)\n result.push(obj.type);\n return result.reverse();\n }\n for (let i = 0; i < match.next.length; i++) {\n let { type, next } = match.next[i];\n if (!type.isLeaf && !type.hasRequiredAttrs() && !(type.name in seen) && (!current.type || next.validEnd)) {\n active.push({ match: type.contentMatch, type, via: current });\n seen[type.name] = true;\n }\n }\n }\n return null;\n }\n /**\n The number of outgoing edges this node has in the finite\n automaton that describes the content expression.\n */\n get edgeCount() {\n return this.next.length;\n }\n /**\n Get the _n_​th outgoing edge from this node in the finite\n automaton that describes the content expression.\n */\n edge(n) {\n if (n >= this.next.length)\n throw new RangeError(`There's no ${n}th edge in this content match`);\n return this.next[n];\n }\n /**\n @internal\n */\n toString() {\n let seen = [];\n function scan(m) {\n seen.push(m);\n for (let i = 0; i < m.next.length; i++)\n if (seen.indexOf(m.next[i].next) == -1)\n scan(m.next[i].next);\n }\n scan(this);\n return seen.map((m, i) => {\n let out = i + (m.validEnd ? \"*\" : \" \") + \" \";\n for (let i = 0; i < m.next.length; i++)\n out += (i ? \", \" : \"\") + m.next[i].type.name + \"->\" + seen.indexOf(m.next[i].next);\n return out;\n }).join(\"\\n\");\n }\n}\n/**\n@internal\n*/\nContentMatch.empty = new ContentMatch(true);\nclass TokenStream {\n constructor(string, nodeTypes) {\n this.string = string;\n this.nodeTypes = nodeTypes;\n this.inline = null;\n this.pos = 0;\n this.tokens = string.split(/\\s*(?=\\b|\\W|$)/);\n if (this.tokens[this.tokens.length - 1] == \"\")\n this.tokens.pop();\n if (this.tokens[0] == \"\")\n this.tokens.shift();\n }\n get next() { return this.tokens[this.pos]; }\n eat(tok) { return this.next == tok && (this.pos++ || true); }\n err(str) { throw new SyntaxError(str + \" (in content expression '\" + this.string + \"')\"); }\n}\nfunction parseExpr(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSeq(stream));\n } while (stream.eat(\"|\"));\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n}\nfunction parseExprSeq(stream) {\n let exprs = [];\n do {\n exprs.push(parseExprSubscript(stream));\n } while (stream.next && stream.next != \")\" && stream.next != \"|\");\n return exprs.length == 1 ? exprs[0] : { type: \"seq\", exprs };\n}\nfunction parseExprSubscript(stream) {\n let expr = parseExprAtom(stream);\n for (;;) {\n if (stream.eat(\"+\"))\n expr = { type: \"plus\", expr };\n else if (stream.eat(\"*\"))\n expr = { type: \"star\", expr };\n else if (stream.eat(\"?\"))\n expr = { type: \"opt\", expr };\n else if (stream.eat(\"{\"))\n expr = parseExprRange(stream, expr);\n else\n break;\n }\n return expr;\n}\nfunction parseNum(stream) {\n if (/\\D/.test(stream.next))\n stream.err(\"Expected number, got '\" + stream.next + \"'\");\n let result = Number(stream.next);\n stream.pos++;\n return result;\n}\nfunction parseExprRange(stream, expr) {\n let min = parseNum(stream), max = min;\n if (stream.eat(\",\")) {\n if (stream.next != \"}\")\n max = parseNum(stream);\n else\n max = -1;\n }\n if (!stream.eat(\"}\"))\n stream.err(\"Unclosed braced range\");\n return { type: \"range\", min, max, expr };\n}\nfunction resolveName(stream, name) {\n let types = stream.nodeTypes, type = types[name];\n if (type)\n return [type];\n let result = [];\n for (let typeName in types) {\n let type = types[typeName];\n if (type.groups.indexOf(name) > -1)\n result.push(type);\n }\n if (result.length == 0)\n stream.err(\"No node type or group '\" + name + \"' found\");\n return result;\n}\nfunction parseExprAtom(stream) {\n if (stream.eat(\"(\")) {\n let expr = parseExpr(stream);\n if (!stream.eat(\")\"))\n stream.err(\"Missing closing paren\");\n return expr;\n }\n else if (!/\\W/.test(stream.next)) {\n let exprs = resolveName(stream, stream.next).map(type => {\n if (stream.inline == null)\n stream.inline = type.isInline;\n else if (stream.inline != type.isInline)\n stream.err(\"Mixing inline and block content\");\n return { type: \"name\", value: type };\n });\n stream.pos++;\n return exprs.length == 1 ? exprs[0] : { type: \"choice\", exprs };\n }\n else {\n stream.err(\"Unexpected token '\" + stream.next + \"'\");\n }\n}\n/**\nConstruct an NFA from an expression as returned by the parser. The\nNFA is represented as an array of states, which are themselves\narrays of edges, which are `{term, to}` objects. The first state is\nthe entry state and the last node is the success state.\n\nNote that unlike typical NFAs, the edge ordering in this one is\nsignificant, in that it is used to contruct filler content when\nnecessary.\n*/\nfunction nfa(expr) {\n let nfa = [[]];\n connect(compile(expr, 0), node());\n return nfa;\n function node() { return nfa.push([]) - 1; }\n function edge(from, to, term) {\n let edge = { term, to };\n nfa[from].push(edge);\n return edge;\n }\n function connect(edges, to) {\n edges.forEach(edge => edge.to = to);\n }\n function compile(expr, from) {\n if (expr.type == \"choice\") {\n return expr.exprs.reduce((out, expr) => out.concat(compile(expr, from)), []);\n }\n else if (expr.type == \"seq\") {\n for (let i = 0;; i++) {\n let next = compile(expr.exprs[i], from);\n if (i == expr.exprs.length - 1)\n return next;\n connect(next, from = node());\n }\n }\n else if (expr.type == \"star\") {\n let loop = node();\n edge(from, loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"plus\") {\n let loop = node();\n connect(compile(expr.expr, from), loop);\n connect(compile(expr.expr, loop), loop);\n return [edge(loop)];\n }\n else if (expr.type == \"opt\") {\n return [edge(from)].concat(compile(expr.expr, from));\n }\n else if (expr.type == \"range\") {\n let cur = from;\n for (let i = 0; i < expr.min; i++) {\n let next = node();\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n if (expr.max == -1) {\n connect(compile(expr.expr, cur), cur);\n }\n else {\n for (let i = expr.min; i < expr.max; i++) {\n let next = node();\n edge(cur, next);\n connect(compile(expr.expr, cur), next);\n cur = next;\n }\n }\n return [edge(cur)];\n }\n else if (expr.type == \"name\") {\n return [edge(from, undefined, expr.value)];\n }\n else {\n throw new Error(\"Unknown expr type\");\n }\n }\n}\nfunction cmp(a, b) { return b - a; }\n// Get the set of nodes reachable by null edges from `node`. Omit\n// nodes with only a single null-out-edge, since they may lead to\n// needless duplicated nodes.\nfunction nullFrom(nfa, node) {\n let result = [];\n scan(node);\n return result.sort(cmp);\n function scan(node) {\n let edges = nfa[node];\n if (edges.length == 1 && !edges[0].term)\n return scan(edges[0].to);\n result.push(node);\n for (let i = 0; i < edges.length; i++) {\n let { term, to } = edges[i];\n if (!term && result.indexOf(to) == -1)\n scan(to);\n }\n }\n}\n// Compiles an NFA as produced by `nfa` into a DFA, modeled as a set\n// of state objects (`ContentMatch` instances) with transitions\n// between them.\nfunction dfa(nfa) {\n let labeled = Object.create(null);\n return explore(nullFrom(nfa, 0));\n function explore(states) {\n let out = [];\n states.forEach(node => {\n nfa[node].forEach(({ term, to }) => {\n if (!term)\n return;\n let set;\n for (let i = 0; i < out.length; i++)\n if (out[i][0] == term)\n set = out[i][1];\n nullFrom(nfa, to).forEach(node => {\n if (!set)\n out.push([term, set = []]);\n if (set.indexOf(node) == -1)\n set.push(node);\n });\n });\n });\n let state = labeled[states.join(\",\")] = new ContentMatch(states.indexOf(nfa.length - 1) > -1);\n for (let i = 0; i < out.length; i++) {\n let states = out[i][1].sort(cmp);\n state.next.push({ type: out[i][0], next: labeled[states.join(\",\")] || explore(states) });\n }\n return state;\n }\n}\nfunction checkForDeadEnds(match, stream) {\n for (let i = 0, work = [match]; i < work.length; i++) {\n let state = work[i], dead = !state.validEnd, nodes = [];\n for (let j = 0; j < state.next.length; j++) {\n let { type, next } = state.next[j];\n nodes.push(type.name);\n if (dead && !(type.isText || type.hasRequiredAttrs()))\n dead = false;\n if (work.indexOf(next) == -1)\n work.push(next);\n }\n if (dead)\n stream.err(\"Only non-generatable nodes (\" + nodes.join(\", \") + \") in a required position (see https://prosemirror.net/docs/guide/#generatable)\");\n }\n}\n\n// For node types where all attrs have a default value (or which don't\n// have any attributes), build up a single reusable default attribute\n// object, and use it for all nodes that don't specify specific\n// attributes.\nfunction defaultAttrs(attrs) {\n let defaults = Object.create(null);\n for (let attrName in attrs) {\n let attr = attrs[attrName];\n if (!attr.hasDefault)\n return null;\n defaults[attrName] = attr.default;\n }\n return defaults;\n}\nfunction computeAttrs(attrs, value) {\n let built = Object.create(null);\n for (let name in attrs) {\n let given = value && value[name];\n if (given === undefined) {\n let attr = attrs[name];\n if (attr.hasDefault)\n given = attr.default;\n else\n throw new RangeError(\"No value supplied for attribute \" + name);\n }\n built[name] = given;\n }\n return built;\n}\nfunction initAttrs(attrs) {\n let result = Object.create(null);\n if (attrs)\n for (let name in attrs)\n result[name] = new Attribute(attrs[name]);\n return result;\n}\n/**\nNode types are objects allocated once per `Schema` and used to\n[tag](https://prosemirror.net/docs/ref/#model.Node.type) `Node` instances. They contain information\nabout the node type, such as its name and what kind of node it\nrepresents.\n*/\nclass NodeType {\n /**\n @internal\n */\n constructor(\n /**\n The name the node type has in this schema.\n */\n name, \n /**\n A link back to the `Schema` the node type belongs to.\n */\n schema, \n /**\n The spec that this type is based on\n */\n spec) {\n this.name = name;\n this.schema = schema;\n this.spec = spec;\n /**\n The set of marks allowed in this node. `null` means all marks\n are allowed.\n */\n this.markSet = null;\n this.groups = spec.group ? spec.group.split(\" \") : [];\n this.attrs = initAttrs(spec.attrs);\n this.defaultAttrs = defaultAttrs(this.attrs);\n this.contentMatch = null;\n this.inlineContent = null;\n this.isBlock = !(spec.inline || name == \"text\");\n this.isText = name == \"text\";\n }\n /**\n True if this is an inline type.\n */\n get isInline() { return !this.isBlock; }\n /**\n True if this is a textblock type, a block that contains inline\n content.\n */\n get isTextblock() { return this.isBlock && this.inlineContent; }\n /**\n True for node types that allow no content.\n */\n get isLeaf() { return this.contentMatch == ContentMatch.empty; }\n /**\n True when this node is an atom, i.e. when it does not have\n directly editable content.\n */\n get isAtom() { return this.isLeaf || !!this.spec.atom; }\n /**\n The node type's [whitespace](https://prosemirror.net/docs/ref/#model.NodeSpec.whitespace) option.\n */\n get whitespace() {\n return this.spec.whitespace || (this.spec.code ? \"pre\" : \"normal\");\n }\n /**\n Tells you whether this node type has any required attributes.\n */\n hasRequiredAttrs() {\n for (let n in this.attrs)\n if (this.attrs[n].isRequired)\n return true;\n return false;\n }\n /**\n Indicates whether this node allows some of the same content as\n the given node type.\n */\n compatibleContent(other) {\n return this == other || this.contentMatch.compatible(other.contentMatch);\n }\n /**\n @internal\n */\n computeAttrs(attrs) {\n if (!attrs && this.defaultAttrs)\n return this.defaultAttrs;\n else\n return computeAttrs(this.attrs, attrs);\n }\n /**\n Create a `Node` of this type. The given attributes are\n checked and defaulted (you can pass `null` to use the type's\n defaults entirely, if no required attributes exist). `content`\n may be a `Fragment`, a node, an array of nodes, or\n `null`. Similarly `marks` may be `null` to default to the empty\n set of marks.\n */\n create(attrs = null, content, marks) {\n if (this.isText)\n throw new Error(\"NodeType.create can't construct text nodes\");\n return new Node(this, this.computeAttrs(attrs), Fragment.from(content), Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but check the given content\n against the node type's content restrictions, and throw an error\n if it doesn't match.\n */\n createChecked(attrs = null, content, marks) {\n content = Fragment.from(content);\n this.checkContent(content);\n return new Node(this, this.computeAttrs(attrs), content, Mark.setFrom(marks));\n }\n /**\n Like [`create`](https://prosemirror.net/docs/ref/#model.NodeType.create), but see if it is\n necessary to add nodes to the start or end of the given fragment\n to make it fit the node. If no fitting wrapping can be found,\n return null. Note that, due to the fact that required nodes can\n always be created, this will always succeed if you pass null or\n `Fragment.empty` as content.\n */\n createAndFill(attrs = null, content, marks) {\n attrs = this.computeAttrs(attrs);\n content = Fragment.from(content);\n if (content.size) {\n let before = this.contentMatch.fillBefore(content);\n if (!before)\n return null;\n content = before.append(content);\n }\n let matched = this.contentMatch.matchFragment(content);\n let after = matched && matched.fillBefore(Fragment.empty, true);\n if (!after)\n return null;\n return new Node(this, attrs, content.append(after), Mark.setFrom(marks));\n }\n /**\n Returns true if the given fragment is valid content for this node\n type with the given attributes.\n */\n validContent(content) {\n let result = this.contentMatch.matchFragment(content);\n if (!result || !result.validEnd)\n return false;\n for (let i = 0; i < content.childCount; i++)\n if (!this.allowsMarks(content.child(i).marks))\n return false;\n return true;\n }\n /**\n Throws a RangeError if the given fragment is not valid content for this\n node type.\n @internal\n */\n checkContent(content) {\n if (!this.validContent(content))\n throw new RangeError(`Invalid content for node ${this.name}: ${content.toString().slice(0, 50)}`);\n }\n /**\n Check whether the given mark type is allowed in this node.\n */\n allowsMarkType(markType) {\n return this.markSet == null || this.markSet.indexOf(markType) > -1;\n }\n /**\n Test whether the given set of marks are allowed in this node.\n */\n allowsMarks(marks) {\n if (this.markSet == null)\n return true;\n for (let i = 0; i < marks.length; i++)\n if (!this.allowsMarkType(marks[i].type))\n return false;\n return true;\n }\n /**\n Removes the marks that are not allowed in this node from the given set.\n */\n allowedMarks(marks) {\n if (this.markSet == null)\n return marks;\n let copy;\n for (let i = 0; i < marks.length; i++) {\n if (!this.allowsMarkType(marks[i].type)) {\n if (!copy)\n copy = marks.slice(0, i);\n }\n else if (copy) {\n copy.push(marks[i]);\n }\n }\n return !copy ? marks : copy.length ? copy : Mark.none;\n }\n /**\n @internal\n */\n static compile(nodes, schema) {\n let result = Object.create(null);\n nodes.forEach((name, spec) => result[name] = new NodeType(name, schema, spec));\n let topType = schema.spec.topNode || \"doc\";\n if (!result[topType])\n throw new RangeError(\"Schema is missing its top node type ('\" + topType + \"')\");\n if (!result.text)\n throw new RangeError(\"Every schema needs a 'text' type\");\n for (let _ in result.text.attrs)\n throw new RangeError(\"The text node type should not have attributes\");\n return result;\n }\n}\n// Attribute descriptors\nclass Attribute {\n constructor(options) {\n this.hasDefault = Object.prototype.hasOwnProperty.call(options, \"default\");\n this.default = options.default;\n }\n get isRequired() {\n return !this.hasDefault;\n }\n}\n// Marks\n/**\nLike nodes, marks (which are associated with nodes to signify\nthings like emphasis or being part of a link) are\n[tagged](https://prosemirror.net/docs/ref/#model.Mark.type) with type objects, which are\ninstantiated once per `Schema`.\n*/\nclass MarkType {\n /**\n @internal\n */\n constructor(\n /**\n The name of the mark type.\n */\n name, \n /**\n @internal\n */\n rank, \n /**\n The schema that this mark type instance is part of.\n */\n schema, \n /**\n The spec on which the type is based.\n */\n spec) {\n this.name = name;\n this.rank = rank;\n this.schema = schema;\n this.spec = spec;\n this.attrs = initAttrs(spec.attrs);\n this.excluded = null;\n let defaults = defaultAttrs(this.attrs);\n this.instance = defaults ? new Mark(this, defaults) : null;\n }\n /**\n Create a mark of this type. `attrs` may be `null` or an object\n containing only some of the mark's attributes. The others, if\n they have defaults, will be added.\n */\n create(attrs = null) {\n if (!attrs && this.instance)\n return this.instance;\n return new Mark(this, computeAttrs(this.attrs, attrs));\n }\n /**\n @internal\n */\n static compile(marks, schema) {\n let result = Object.create(null), rank = 0;\n marks.forEach((name, spec) => result[name] = new MarkType(name, rank++, schema, spec));\n return result;\n }\n /**\n When there is a mark of this type in the given set, a new set\n without it is returned. Otherwise, the input set is returned.\n */\n removeFromSet(set) {\n for (var i = 0; i < set.length; i++)\n if (set[i].type == this) {\n set = set.slice(0, i).concat(set.slice(i + 1));\n i--;\n }\n return set;\n }\n /**\n Tests whether there is a mark of this type in the given set.\n */\n isInSet(set) {\n for (let i = 0; i < set.length; i++)\n if (set[i].type == this)\n return set[i];\n }\n /**\n Queries whether a given mark type is\n [excluded](https://prosemirror.net/docs/ref/#model.MarkSpec.excludes) by this one.\n */\n excludes(other) {\n return this.excluded.indexOf(other) > -1;\n }\n}\n/**\nA document schema. Holds [node](https://prosemirror.net/docs/ref/#model.NodeType) and [mark\ntype](https://prosemirror.net/docs/ref/#model.MarkType) objects for the nodes and marks that may\noccur in conforming documents, and provides functionality for\ncreating and deserializing such documents.\n\nWhen given, the type parameters provide the names of the nodes and\nmarks in this schema.\n*/\nclass Schema {\n /**\n Construct a schema from a schema [specification](https://prosemirror.net/docs/ref/#model.SchemaSpec).\n */\n constructor(spec) {\n /**\n An object for storing whatever values modules may want to\n compute and cache per schema. (If you want to store something\n in it, try to use property names unlikely to clash.)\n */\n this.cached = Object.create(null);\n let instanceSpec = this.spec = {};\n for (let prop in spec)\n instanceSpec[prop] = spec[prop];\n instanceSpec.nodes = OrderedMap.from(spec.nodes),\n instanceSpec.marks = OrderedMap.from(spec.marks || {}),\n this.nodes = NodeType.compile(this.spec.nodes, this);\n this.marks = MarkType.compile(this.spec.marks, this);\n let contentExprCache = Object.create(null);\n for (let prop in this.nodes) {\n if (prop in this.marks)\n throw new RangeError(prop + \" can not be both a node and a mark\");\n let type = this.nodes[prop], contentExpr = type.spec.content || \"\", markExpr = type.spec.marks;\n type.contentMatch = contentExprCache[contentExpr] ||\n (contentExprCache[contentExpr] = ContentMatch.parse(contentExpr, this.nodes));\n type.inlineContent = type.contentMatch.inlineContent;\n type.markSet = markExpr == \"_\" ? null :\n markExpr ? gatherMarks(this, markExpr.split(\" \")) :\n markExpr == \"\" || !type.inlineContent ? [] : null;\n }\n for (let prop in this.marks) {\n let type = this.marks[prop], excl = type.spec.excludes;\n type.excluded = excl == null ? [type] : excl == \"\" ? [] : gatherMarks(this, excl.split(\" \"));\n }\n this.nodeFromJSON = this.nodeFromJSON.bind(this);\n this.markFromJSON = this.markFromJSON.bind(this);\n this.topNodeType = this.nodes[this.spec.topNode || \"doc\"];\n this.cached.wrappings = Object.create(null);\n }\n /**\n Create a node in this schema. The `type` may be a string or a\n `NodeType` instance. Attributes will be extended with defaults,\n `content` may be a `Fragment`, `null`, a `Node`, or an array of\n nodes.\n */\n node(type, attrs = null, content, marks) {\n if (typeof type == \"string\")\n type = this.nodeType(type);\n else if (!(type instanceof NodeType))\n throw new RangeError(\"Invalid node type: \" + type);\n else if (type.schema != this)\n throw new RangeError(\"Node type from different schema used (\" + type.name + \")\");\n return type.createChecked(attrs, content, marks);\n }\n /**\n Create a text node in the schema. Empty text nodes are not\n allowed.\n */\n text(text, marks) {\n let type = this.nodes.text;\n return new TextNode(type, type.defaultAttrs, text, Mark.setFrom(marks));\n }\n /**\n Create a mark with the given type and attributes.\n */\n mark(type, attrs) {\n if (typeof type == \"string\")\n type = this.marks[type];\n return type.create(attrs);\n }\n /**\n Deserialize a node from its JSON representation. This method is\n bound.\n */\n nodeFromJSON(json) {\n return Node.fromJSON(this, json);\n }\n /**\n Deserialize a mark from its JSON representation. This method is\n bound.\n */\n markFromJSON(json) {\n return Mark.fromJSON(this, json);\n }\n /**\n @internal\n */\n nodeType(name) {\n let found = this.nodes[name];\n if (!found)\n throw new RangeError(\"Unknown node type: \" + name);\n return found;\n }\n}\nfunction gatherMarks(schema, marks) {\n let found = [];\n for (let i = 0; i < marks.length; i++) {\n let name = marks[i], mark = schema.marks[name], ok = mark;\n if (mark) {\n found.push(mark);\n }\n else {\n for (let prop in schema.marks) {\n let mark = schema.marks[prop];\n if (name == \"_\" || (mark.spec.group && mark.spec.group.split(\" \").indexOf(name) > -1))\n found.push(ok = mark);\n }\n }\n if (!ok)\n throw new SyntaxError(\"Unknown mark type: '\" + marks[i] + \"'\");\n }\n return found;\n}\n\n/**\nA DOM parser represents a strategy for parsing DOM content into a\nProseMirror document conforming to a given schema. Its behavior is\ndefined by an array of [rules](https://prosemirror.net/docs/ref/#model.ParseRule).\n*/\nclass DOMParser {\n /**\n Create a parser that targets the given schema, using the given\n parsing rules.\n */\n constructor(\n /**\n The schema into which the parser parses.\n */\n schema, \n /**\n The set of [parse rules](https://prosemirror.net/docs/ref/#model.ParseRule) that the parser\n uses, in order of precedence.\n */\n rules) {\n this.schema = schema;\n this.rules = rules;\n /**\n @internal\n */\n this.tags = [];\n /**\n @internal\n */\n this.styles = [];\n rules.forEach(rule => {\n if (rule.tag)\n this.tags.push(rule);\n else if (rule.style)\n this.styles.push(rule);\n });\n // Only normalize list elements when lists in the schema can't directly contain themselves\n this.normalizeLists = !this.tags.some(r => {\n if (!/^(ul|ol)\\b/.test(r.tag) || !r.node)\n return false;\n let node = schema.nodes[r.node];\n return node.contentMatch.matchType(node);\n });\n }\n /**\n Parse a document from the content of a DOM node.\n */\n parse(dom, options = {}) {\n let context = new ParseContext(this, options, false);\n context.addAll(dom, options.from, options.to);\n return context.finish();\n }\n /**\n Parses the content of the given DOM node, like\n [`parse`](https://prosemirror.net/docs/ref/#model.DOMParser.parse), and takes the same set of\n options. But unlike that method, which produces a whole node,\n this one returns a slice that is open at the sides, meaning that\n the schema constraints aren't applied to the start of nodes to\n the left of the input and the end of nodes at the end.\n */\n parseSlice(dom, options = {}) {\n let context = new ParseContext(this, options, true);\n context.addAll(dom, options.from, options.to);\n return Slice.maxOpen(context.finish());\n }\n /**\n @internal\n */\n matchTag(dom, context, after) {\n for (let i = after ? this.tags.indexOf(after) + 1 : 0; i < this.tags.length; i++) {\n let rule = this.tags[i];\n if (matches(dom, rule.tag) &&\n (rule.namespace === undefined || dom.namespaceURI == rule.namespace) &&\n (!rule.context || context.matchesContext(rule.context))) {\n if (rule.getAttrs) {\n let result = rule.getAttrs(dom);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n }\n /**\n @internal\n */\n matchStyle(prop, value, context, after) {\n for (let i = after ? this.styles.indexOf(after) + 1 : 0; i < this.styles.length; i++) {\n let rule = this.styles[i], style = rule.style;\n if (style.indexOf(prop) != 0 ||\n rule.context && !context.matchesContext(rule.context) ||\n // Test that the style string either precisely matches the prop,\n // or has an '=' sign after the prop, followed by the given\n // value.\n style.length > prop.length &&\n (style.charCodeAt(prop.length) != 61 || style.slice(prop.length + 1) != value))\n continue;\n if (rule.getAttrs) {\n let result = rule.getAttrs(value);\n if (result === false)\n continue;\n rule.attrs = result || undefined;\n }\n return rule;\n }\n }\n /**\n @internal\n */\n static schemaRules(schema) {\n let result = [];\n function insert(rule) {\n let priority = rule.priority == null ? 50 : rule.priority, i = 0;\n for (; i < result.length; i++) {\n let next = result[i], nextPriority = next.priority == null ? 50 : next.priority;\n if (nextPriority < priority)\n break;\n }\n result.splice(i, 0, rule);\n }\n for (let name in schema.marks) {\n let rules = schema.marks[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.mark || rule.ignore || rule.clearMark))\n rule.mark = name;\n });\n }\n for (let name in schema.nodes) {\n let rules = schema.nodes[name].spec.parseDOM;\n if (rules)\n rules.forEach(rule => {\n insert(rule = copy(rule));\n if (!(rule.node || rule.ignore || rule.mark))\n rule.node = name;\n });\n }\n return result;\n }\n /**\n Construct a DOM parser using the parsing rules listed in a\n schema's [node specs](https://prosemirror.net/docs/ref/#model.NodeSpec.parseDOM), reordered by\n [priority](https://prosemirror.net/docs/ref/#model.ParseRule.priority).\n */\n static fromSchema(schema) {\n return schema.cached.domParser ||\n (schema.cached.domParser = new DOMParser(schema, DOMParser.schemaRules(schema)));\n }\n}\nconst blockTags = {\n address: true, article: true, aside: true, blockquote: true, canvas: true,\n dd: true, div: true, dl: true, fieldset: true, figcaption: true, figure: true,\n footer: true, form: true, h1: true, h2: true, h3: true, h4: true, h5: true,\n h6: true, header: true, hgroup: true, hr: true, li: true, noscript: true, ol: true,\n output: true, p: true, pre: true, section: true, table: true, tfoot: true, ul: true\n};\nconst ignoreTags = {\n head: true, noscript: true, object: true, script: true, style: true, title: true\n};\nconst listTags = { ol: true, ul: true };\n// Using a bitfield for node context options\nconst OPT_PRESERVE_WS = 1, OPT_PRESERVE_WS_FULL = 2, OPT_OPEN_LEFT = 4;\nfunction wsOptionsFor(type, preserveWhitespace, base) {\n if (preserveWhitespace != null)\n return (preserveWhitespace ? OPT_PRESERVE_WS : 0) |\n (preserveWhitespace === \"full\" ? OPT_PRESERVE_WS_FULL : 0);\n return type && type.whitespace == \"pre\" ? OPT_PRESERVE_WS | OPT_PRESERVE_WS_FULL : base & ~OPT_OPEN_LEFT;\n}\nclass NodeContext {\n constructor(type, attrs, \n // Marks applied to this node itself\n marks, \n // Marks that can't apply here, but will be used in children if possible\n pendingMarks, solid, match, options) {\n this.type = type;\n this.attrs = attrs;\n this.marks = marks;\n this.pendingMarks = pendingMarks;\n this.solid = solid;\n this.options = options;\n this.content = [];\n // Marks applied to the node's children\n this.activeMarks = Mark.none;\n // Nested Marks with same type\n this.stashMarks = [];\n this.match = match || (options & OPT_OPEN_LEFT ? null : type.contentMatch);\n }\n findWrapping(node) {\n if (!this.match) {\n if (!this.type)\n return [];\n let fill = this.type.contentMatch.fillBefore(Fragment.from(node));\n if (fill) {\n this.match = this.type.contentMatch.matchFragment(fill);\n }\n else {\n let start = this.type.contentMatch, wrap;\n if (wrap = start.findWrapping(node.type)) {\n this.match = start;\n return wrap;\n }\n else {\n return null;\n }\n }\n }\n return this.match.findWrapping(node.type);\n }\n finish(openEnd) {\n if (!(this.options & OPT_PRESERVE_WS)) { // Strip trailing whitespace\n let last = this.content[this.content.length - 1], m;\n if (last && last.isText && (m = /[ \\t\\r\\n\\u000c]+$/.exec(last.text))) {\n let text = last;\n if (last.text.length == m[0].length)\n this.content.pop();\n else\n this.content[this.content.length - 1] = text.withText(text.text.slice(0, text.text.length - m[0].length));\n }\n }\n let content = Fragment.from(this.content);\n if (!openEnd && this.match)\n content = content.append(this.match.fillBefore(Fragment.empty, true));\n return this.type ? this.type.create(this.attrs, content, this.marks) : content;\n }\n popFromStashMark(mark) {\n for (let i = this.stashMarks.length - 1; i >= 0; i--)\n if (mark.eq(this.stashMarks[i]))\n return this.stashMarks.splice(i, 1)[0];\n }\n applyPending(nextType) {\n for (let i = 0, pending = this.pendingMarks; i < pending.length; i++) {\n let mark = pending[i];\n if ((this.type ? this.type.allowsMarkType(mark.type) : markMayApply(mark.type, nextType)) &&\n !mark.isInSet(this.activeMarks)) {\n this.activeMarks = mark.addToSet(this.activeMarks);\n this.pendingMarks = mark.removeFromSet(this.pendingMarks);\n }\n }\n }\n inlineContext(node) {\n if (this.type)\n return this.type.inlineContent;\n if (this.content.length)\n return this.content[0].isInline;\n return node.parentNode && !blockTags.hasOwnProperty(node.parentNode.nodeName.toLowerCase());\n }\n}\nclass ParseContext {\n constructor(\n // The parser we are using.\n parser, \n // The options passed to this parse.\n options, isOpen) {\n this.parser = parser;\n this.options = options;\n this.isOpen = isOpen;\n this.open = 0;\n let topNode = options.topNode, topContext;\n let topOptions = wsOptionsFor(null, options.preserveWhitespace, 0) | (isOpen ? OPT_OPEN_LEFT : 0);\n if (topNode)\n topContext = new NodeContext(topNode.type, topNode.attrs, Mark.none, Mark.none, true, options.topMatch || topNode.type.contentMatch, topOptions);\n else if (isOpen)\n topContext = new NodeContext(null, null, Mark.none, Mark.none, true, null, topOptions);\n else\n topContext = new NodeContext(parser.schema.topNodeType, null, Mark.none, Mark.none, true, null, topOptions);\n this.nodes = [topContext];\n this.find = options.findPositions;\n this.needsBlock = false;\n }\n get top() {\n return this.nodes[this.open];\n }\n // Add a DOM node to the content. Text is inserted as text node,\n // otherwise, the node is passed to `addElement` or, if it has a\n // `style` attribute, `addElementWithStyles`.\n addDOM(dom) {\n if (dom.nodeType == 3)\n this.addTextNode(dom);\n else if (dom.nodeType == 1)\n this.addElement(dom);\n }\n withStyleRules(dom, f) {\n let style = dom.getAttribute(\"style\");\n if (!style)\n return f();\n let marks = this.readStyles(parseStyles(style));\n if (!marks)\n return; // A style with ignore: true\n let [addMarks, removeMarks] = marks, top = this.top;\n for (let i = 0; i < removeMarks.length; i++)\n this.removePendingMark(removeMarks[i], top);\n for (let i = 0; i < addMarks.length; i++)\n this.addPendingMark(addMarks[i]);\n f();\n for (let i = 0; i < addMarks.length; i++)\n this.removePendingMark(addMarks[i], top);\n for (let i = 0; i < removeMarks.length; i++)\n this.addPendingMark(removeMarks[i]);\n }\n addTextNode(dom) {\n let value = dom.nodeValue;\n let top = this.top;\n if (top.options & OPT_PRESERVE_WS_FULL ||\n top.inlineContext(dom) ||\n /[^ \\t\\r\\n\\u000c]/.test(value)) {\n if (!(top.options & OPT_PRESERVE_WS)) {\n value = value.replace(/[ \\t\\r\\n\\u000c]+/g, \" \");\n // If this starts with whitespace, and there is no node before it, or\n // a hard break, or a text node that ends with whitespace, strip the\n // leading space.\n if (/^[ \\t\\r\\n\\u000c]/.test(value) && this.open == this.nodes.length - 1) {\n let nodeBefore = top.content[top.content.length - 1];\n let domNodeBefore = dom.previousSibling;\n if (!nodeBefore ||\n (domNodeBefore && domNodeBefore.nodeName == 'BR') ||\n (nodeBefore.isText && /[ \\t\\r\\n\\u000c]$/.test(nodeBefore.text)))\n value = value.slice(1);\n }\n }\n else if (!(top.options & OPT_PRESERVE_WS_FULL)) {\n value = value.replace(/\\r?\\n|\\r/g, \" \");\n }\n else {\n value = value.replace(/\\r\\n?/g, \"\\n\");\n }\n if (value)\n this.insertNode(this.parser.schema.text(value));\n this.findInText(dom);\n }\n else {\n this.findInside(dom);\n }\n }\n // Try to find a handler for the given tag and use that to parse. If\n // none is found, the element's content nodes are added directly.\n addElement(dom, matchAfter) {\n let name = dom.nodeName.toLowerCase(), ruleID;\n if (listTags.hasOwnProperty(name) && this.parser.normalizeLists)\n normalizeList(dom);\n let rule = (this.options.ruleFromNode && this.options.ruleFromNode(dom)) ||\n (ruleID = this.parser.matchTag(dom, this, matchAfter));\n if (rule ? rule.ignore : ignoreTags.hasOwnProperty(name)) {\n this.findInside(dom);\n this.ignoreFallback(dom);\n }\n else if (!rule || rule.skip || rule.closeParent) {\n if (rule && rule.closeParent)\n this.open = Math.max(0, this.open - 1);\n else if (rule && rule.skip.nodeType)\n dom = rule.skip;\n let sync, top = this.top, oldNeedsBlock = this.needsBlock;\n if (blockTags.hasOwnProperty(name)) {\n if (top.content.length && top.content[0].isInline && this.open) {\n this.open--;\n top = this.top;\n }\n sync = true;\n if (!top.type)\n this.needsBlock = true;\n }\n else if (!dom.firstChild) {\n this.leafFallback(dom);\n return;\n }\n if (rule && rule.skip)\n this.addAll(dom);\n else\n this.withStyleRules(dom, () => this.addAll(dom));\n if (sync)\n this.sync(top);\n this.needsBlock = oldNeedsBlock;\n }\n else {\n this.withStyleRules(dom, () => {\n this.addElementByRule(dom, rule, rule.consuming === false ? ruleID : undefined);\n });\n }\n }\n // Called for leaf DOM nodes that would otherwise be ignored\n leafFallback(dom) {\n if (dom.nodeName == \"BR\" && this.top.type && this.top.type.inlineContent)\n this.addTextNode(dom.ownerDocument.createTextNode(\"\\n\"));\n }\n // Called for ignored nodes\n ignoreFallback(dom) {\n // Ignored BR nodes should at least create an inline context\n if (dom.nodeName == \"BR\" && (!this.top.type || !this.top.type.inlineContent))\n this.findPlace(this.parser.schema.text(\"-\"));\n }\n // Run any style parser associated with the node's styles. Either\n // return an array of marks, or null to indicate some of the styles\n // had a rule with `ignore` set.\n readStyles(styles) {\n let add = Mark.none, remove = Mark.none;\n for (let i = 0; i < styles.length; i += 2) {\n for (let after = undefined;;) {\n let rule = this.parser.matchStyle(styles[i], styles[i + 1], this, after);\n if (!rule)\n break;\n if (rule.ignore)\n return null;\n if (rule.clearMark) {\n this.top.pendingMarks.concat(this.top.activeMarks).forEach(m => {\n if (rule.clearMark(m))\n remove = m.addToSet(remove);\n });\n }\n else {\n add = this.parser.schema.marks[rule.mark].create(rule.attrs).addToSet(add);\n }\n if (rule.consuming === false)\n after = rule;\n else\n break;\n }\n }\n return [add, remove];\n }\n // Look up a handler for the given node. If none are found, return\n // false. Otherwise, apply it, use its return value to drive the way\n // the node's content is wrapped, and return true.\n addElementByRule(dom, rule, continueAfter) {\n let sync, nodeType, mark;\n if (rule.node) {\n nodeType = this.parser.schema.nodes[rule.node];\n if (!nodeType.isLeaf) {\n sync = this.enter(nodeType, rule.attrs || null, rule.preserveWhitespace);\n }\n else if (!this.insertNode(nodeType.create(rule.attrs))) {\n this.leafFallback(dom);\n }\n }\n else {\n let markType = this.parser.schema.marks[rule.mark];\n mark = markType.create(rule.attrs);\n this.addPendingMark(mark);\n }\n let startIn = this.top;\n if (nodeType && nodeType.isLeaf) {\n this.findInside(dom);\n }\n else if (continueAfter) {\n this.addElement(dom, continueAfter);\n }\n else if (rule.getContent) {\n this.findInside(dom);\n rule.getContent(dom, this.parser.schema).forEach(node => this.insertNode(node));\n }\n else {\n let contentDOM = dom;\n if (typeof rule.contentElement == \"string\")\n contentDOM = dom.querySelector(rule.contentElement);\n else if (typeof rule.contentElement == \"function\")\n contentDOM = rule.contentElement(dom);\n else if (rule.contentElement)\n contentDOM = rule.contentElement;\n this.findAround(dom, contentDOM, true);\n this.addAll(contentDOM);\n }\n if (sync && this.sync(startIn))\n this.open--;\n if (mark)\n this.removePendingMark(mark, startIn);\n }\n // Add all child nodes between `startIndex` and `endIndex` (or the\n // whole node, if not given). If `sync` is passed, use it to\n // synchronize after every block element.\n addAll(parent, startIndex, endIndex) {\n let index = startIndex || 0;\n for (let dom = startIndex ? parent.childNodes[startIndex] : parent.firstChild, end = endIndex == null ? null : parent.childNodes[endIndex]; dom != end; dom = dom.nextSibling, ++index) {\n this.findAtPoint(parent, index);\n this.addDOM(dom);\n }\n this.findAtPoint(parent, index);\n }\n // Try to find a way to fit the given node type into the current\n // context. May add intermediate wrappers and/or leave non-solid\n // nodes that we're in.\n findPlace(node) {\n let route, sync;\n for (let depth = this.open; depth >= 0; depth--) {\n let cx = this.nodes[depth];\n let found = cx.findWrapping(node);\n if (found && (!route || route.length > found.length)) {\n route = found;\n sync = cx;\n if (!found.length)\n break;\n }\n if (cx.solid)\n break;\n }\n if (!route)\n return false;\n this.sync(sync);\n for (let i = 0; i < route.length; i++)\n this.enterInner(route[i], null, false);\n return true;\n }\n // Try to insert the given node, adjusting the context when needed.\n insertNode(node) {\n if (node.isInline && this.needsBlock && !this.top.type) {\n let block = this.textblockFromContext();\n if (block)\n this.enterInner(block);\n }\n if (this.findPlace(node)) {\n this.closeExtra();\n let top = this.top;\n top.applyPending(node.type);\n if (top.match)\n top.match = top.match.matchType(node.type);\n let marks = top.activeMarks;\n for (let i = 0; i < node.marks.length; i++)\n if (!top.type || top.type.allowsMarkType(node.marks[i].type))\n marks = node.marks[i].addToSet(marks);\n top.content.push(node.mark(marks));\n return true;\n }\n return false;\n }\n // Try to start a node of the given type, adjusting the context when\n // necessary.\n enter(type, attrs, preserveWS) {\n let ok = this.findPlace(type.create(attrs));\n if (ok)\n this.enterInner(type, attrs, true, preserveWS);\n return ok;\n }\n // Open a node of the given type\n enterInner(type, attrs = null, solid = false, preserveWS) {\n this.closeExtra();\n let top = this.top;\n top.applyPending(type);\n top.match = top.match && top.match.matchType(type);\n let options = wsOptionsFor(type, preserveWS, top.options);\n if ((top.options & OPT_OPEN_LEFT) && top.content.length == 0)\n options |= OPT_OPEN_LEFT;\n this.nodes.push(new NodeContext(type, attrs, top.activeMarks, top.pendingMarks, solid, null, options));\n this.open++;\n }\n // Make sure all nodes above this.open are finished and added to\n // their parents\n closeExtra(openEnd = false) {\n let i = this.nodes.length - 1;\n if (i > this.open) {\n for (; i > this.open; i--)\n this.nodes[i - 1].content.push(this.nodes[i].finish(openEnd));\n this.nodes.length = this.open + 1;\n }\n }\n finish() {\n this.open = 0;\n this.closeExtra(this.isOpen);\n return this.nodes[0].finish(this.isOpen || this.options.topOpen);\n }\n sync(to) {\n for (let i = this.open; i >= 0; i--)\n if (this.nodes[i] == to) {\n this.open = i;\n return true;\n }\n return false;\n }\n get currentPos() {\n this.closeExtra();\n let pos = 0;\n for (let i = this.open; i >= 0; i--) {\n let content = this.nodes[i].content;\n for (let j = content.length - 1; j >= 0; j--)\n pos += content[j].nodeSize;\n if (i)\n pos++;\n }\n return pos;\n }\n findAtPoint(parent, offset) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == parent && this.find[i].offset == offset)\n this.find[i].pos = this.currentPos;\n }\n }\n findInside(parent) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node))\n this.find[i].pos = this.currentPos;\n }\n }\n findAround(parent, content, before) {\n if (parent != content && this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].pos == null && parent.nodeType == 1 && parent.contains(this.find[i].node)) {\n let pos = content.compareDocumentPosition(this.find[i].node);\n if (pos & (before ? 2 : 4))\n this.find[i].pos = this.currentPos;\n }\n }\n }\n findInText(textNode) {\n if (this.find)\n for (let i = 0; i < this.find.length; i++) {\n if (this.find[i].node == textNode)\n this.find[i].pos = this.currentPos - (textNode.nodeValue.length - this.find[i].offset);\n }\n }\n // Determines whether the given context string matches this context.\n matchesContext(context) {\n if (context.indexOf(\"|\") > -1)\n return context.split(/\\s*\\|\\s*/).some(this.matchesContext, this);\n let parts = context.split(\"/\");\n let option = this.options.context;\n let useRoot = !this.isOpen && (!option || option.parent.type == this.nodes[0].type);\n let minDepth = -(option ? option.depth + 1 : 0) + (useRoot ? 0 : 1);\n let match = (i, depth) => {\n for (; i >= 0; i--) {\n let part = parts[i];\n if (part == \"\") {\n if (i == parts.length - 1 || i == 0)\n continue;\n for (; depth >= minDepth; depth--)\n if (match(i - 1, depth))\n return true;\n return false;\n }\n else {\n let next = depth > 0 || (depth == 0 && useRoot) ? this.nodes[depth].type\n : option && depth >= minDepth ? option.node(depth - minDepth).type\n : null;\n if (!next || (next.name != part && next.groups.indexOf(part) == -1))\n return false;\n depth--;\n }\n }\n return true;\n };\n return match(parts.length - 1, this.open);\n }\n textblockFromContext() {\n let $context = this.options.context;\n if ($context)\n for (let d = $context.depth; d >= 0; d--) {\n let deflt = $context.node(d).contentMatchAt($context.indexAfter(d)).defaultType;\n if (deflt && deflt.isTextblock && deflt.defaultAttrs)\n return deflt;\n }\n for (let name in this.parser.schema.nodes) {\n let type = this.parser.schema.nodes[name];\n if (type.isTextblock && type.defaultAttrs)\n return type;\n }\n }\n addPendingMark(mark) {\n let found = findSameMarkInSet(mark, this.top.pendingMarks);\n if (found)\n this.top.stashMarks.push(found);\n this.top.pendingMarks = mark.addToSet(this.top.pendingMarks);\n }\n removePendingMark(mark, upto) {\n for (let depth = this.open; depth >= 0; depth--) {\n let level = this.nodes[depth];\n let found = level.pendingMarks.lastIndexOf(mark);\n if (found > -1) {\n level.pendingMarks = mark.removeFromSet(level.pendingMarks);\n }\n else {\n level.activeMarks = mark.removeFromSet(level.activeMarks);\n let stashMark = level.popFromStashMark(mark);\n if (stashMark && level.type && level.type.allowsMarkType(stashMark.type))\n level.activeMarks = stashMark.addToSet(level.activeMarks);\n }\n if (level == upto)\n break;\n }\n }\n}\n// Kludge to work around directly nested list nodes produced by some\n// tools and allowed by browsers to mean that the nested list is\n// actually part of the list item above it.\nfunction normalizeList(dom) {\n for (let child = dom.firstChild, prevItem = null; child; child = child.nextSibling) {\n let name = child.nodeType == 1 ? child.nodeName.toLowerCase() : null;\n if (name && listTags.hasOwnProperty(name) && prevItem) {\n prevItem.appendChild(child);\n child = prevItem;\n }\n else if (name == \"li\") {\n prevItem = child;\n }\n else if (name) {\n prevItem = null;\n }\n }\n}\n// Apply a CSS selector.\nfunction matches(dom, selector) {\n return (dom.matches || dom.msMatchesSelector || dom.webkitMatchesSelector || dom.mozMatchesSelector).call(dom, selector);\n}\n// Tokenize a style attribute into property/value pairs.\nfunction parseStyles(style) {\n let re = /\\s*([\\w-]+)\\s*:\\s*([^;]+)/g, m, result = [];\n while (m = re.exec(style))\n result.push(m[1], m[2].trim());\n return result;\n}\nfunction copy(obj) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n return copy;\n}\n// Used when finding a mark at the top level of a fragment parse.\n// Checks whether it would be reasonable to apply a given mark type to\n// a given node, by looking at the way the mark occurs in the schema.\nfunction markMayApply(markType, nodeType) {\n let nodes = nodeType.schema.nodes;\n for (let name in nodes) {\n let parent = nodes[name];\n if (!parent.allowsMarkType(markType))\n continue;\n let seen = [], scan = (match) => {\n seen.push(match);\n for (let i = 0; i < match.edgeCount; i++) {\n let { type, next } = match.edge(i);\n if (type == nodeType)\n return true;\n if (seen.indexOf(next) < 0 && scan(next))\n return true;\n }\n };\n if (scan(parent.contentMatch))\n return true;\n }\n}\nfunction findSameMarkInSet(mark, set) {\n for (let i = 0; i < set.length; i++) {\n if (mark.eq(set[i]))\n return set[i];\n }\n}\n\n/**\nA DOM serializer knows how to convert ProseMirror nodes and\nmarks of various types to DOM nodes.\n*/\nclass DOMSerializer {\n /**\n Create a serializer. `nodes` should map node names to functions\n that take a node and return a description of the corresponding\n DOM. `marks` does the same for mark names, but also gets an\n argument that tells it whether the mark's content is block or\n inline content (for typical use, it'll always be inline). A mark\n serializer may be `null` to indicate that marks of that type\n should not be serialized.\n */\n constructor(\n /**\n The node serialization functions.\n */\n nodes, \n /**\n The mark serialization functions.\n */\n marks) {\n this.nodes = nodes;\n this.marks = marks;\n }\n /**\n Serialize the content of this fragment to a DOM fragment. When\n not in the browser, the `document` option, containing a DOM\n document, should be passed so that the serializer can create\n nodes.\n */\n serializeFragment(fragment, options = {}, target) {\n if (!target)\n target = doc(options).createDocumentFragment();\n let top = target, active = [];\n fragment.forEach(node => {\n if (active.length || node.marks.length) {\n let keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n let next = node.marks[rendered];\n if (!this.marks[next.type.name]) {\n rendered++;\n continue;\n }\n if (!next.eq(active[keep][0]) || next.type.spec.spanning === false)\n break;\n keep++;\n rendered++;\n }\n while (keep < active.length)\n top = active.pop()[1];\n while (rendered < node.marks.length) {\n let add = node.marks[rendered++];\n let markDOM = this.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push([add, top]);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(this.serializeNodeInner(node, options));\n });\n return target;\n }\n /**\n @internal\n */\n serializeNodeInner(node, options) {\n let { dom, contentDOM } = DOMSerializer.renderSpec(doc(options), this.nodes[node.type.name](node));\n if (contentDOM) {\n if (node.isLeaf)\n throw new RangeError(\"Content hole not allowed in a leaf node spec\");\n this.serializeFragment(node.content, options, contentDOM);\n }\n return dom;\n }\n /**\n Serialize this node to a DOM node. This can be useful when you\n need to serialize a part of a document, as opposed to the whole\n document. To serialize a whole document, use\n [`serializeFragment`](https://prosemirror.net/docs/ref/#model.DOMSerializer.serializeFragment) on\n its [content](https://prosemirror.net/docs/ref/#model.Node.content).\n */\n serializeNode(node, options = {}) {\n let dom = this.serializeNodeInner(node, options);\n for (let i = node.marks.length - 1; i >= 0; i--) {\n let wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n (wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom;\n }\n /**\n @internal\n */\n serializeMark(mark, inline, options = {}) {\n let toDOM = this.marks[mark.type.name];\n return toDOM && DOMSerializer.renderSpec(doc(options), toDOM(mark, inline));\n }\n /**\n Render an [output spec](https://prosemirror.net/docs/ref/#model.DOMOutputSpec) to a DOM node. If\n the spec has a hole (zero) in it, `contentDOM` will point at the\n node with the hole.\n */\n static renderSpec(doc, structure, xmlNS = null) {\n if (typeof structure == \"string\")\n return { dom: doc.createTextNode(structure) };\n if (structure.nodeType != null)\n return { dom: structure };\n if (structure.dom && structure.dom.nodeType != null)\n return structure;\n let tagName = structure[0], space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n let contentDOM;\n let dom = (xmlNS ? doc.createElementNS(xmlNS, tagName) : doc.createElement(tagName));\n let attrs = structure[1], start = 1;\n if (attrs && typeof attrs == \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (let name in attrs)\n if (attrs[name] != null) {\n let space = name.indexOf(\" \");\n if (space > 0)\n dom.setAttributeNS(name.slice(0, space), name.slice(space + 1), attrs[name]);\n else\n dom.setAttribute(name, attrs[name]);\n }\n }\n for (let i = start; i < structure.length; i++) {\n let child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start)\n throw new RangeError(\"Content hole must be the only child of its parent node\");\n return { dom, contentDOM: dom };\n }\n else {\n let { dom: inner, contentDOM: innerContent } = DOMSerializer.renderSpec(doc, child, xmlNS);\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM)\n throw new RangeError(\"Multiple content holes\");\n contentDOM = innerContent;\n }\n }\n }\n return { dom, contentDOM };\n }\n /**\n Build a serializer using the [`toDOM`](https://prosemirror.net/docs/ref/#model.NodeSpec.toDOM)\n properties in a schema's node and mark specs.\n */\n static fromSchema(schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)));\n }\n /**\n Gather the serializers in a schema's node specs into an object.\n This can be useful as a base to build a custom serializer from.\n */\n static nodesFromSchema(schema) {\n let result = gatherToDOM(schema.nodes);\n if (!result.text)\n result.text = node => node.text;\n return result;\n }\n /**\n Gather the serializers in a schema's mark specs into an object.\n */\n static marksFromSchema(schema) {\n return gatherToDOM(schema.marks);\n }\n}\nfunction gatherToDOM(obj) {\n let result = {};\n for (let name in obj) {\n let toDOM = obj[name].spec.toDOM;\n if (toDOM)\n result[name] = toDOM;\n }\n return result;\n}\nfunction doc(options) {\n return options.document || window.document;\n}\n\nexport { ContentMatch, DOMParser, DOMSerializer, Fragment, Mark, MarkType, Node, NodeRange, NodeType, ReplaceError, ResolvedPos, Schema, Slice };\n","import { ReplaceError, Slice, Fragment, MarkType, Mark } from 'prosemirror-model';\n\n// Recovery values encode a range index and an offset. They are\n// represented as numbers, because tons of them will be created when\n// mapping, for example, a large number of decorations. The number's\n// lower 16 bits provide the index, the remaining bits the offset.\n//\n// Note: We intentionally don't use bit shift operators to en- and\n// decode these, since those clip to 32 bits, which we might in rare\n// cases want to overflow. A 64-bit float can represent 48-bit\n// integers precisely.\nconst lower16 = 0xffff;\nconst factor16 = Math.pow(2, 16);\nfunction makeRecover(index, offset) { return index + offset * factor16; }\nfunction recoverIndex(value) { return value & lower16; }\nfunction recoverOffset(value) { return (value - (value & lower16)) / factor16; }\nconst DEL_BEFORE = 1, DEL_AFTER = 2, DEL_ACROSS = 4, DEL_SIDE = 8;\n/**\nAn object representing a mapped position with extra\ninformation.\n*/\nclass MapResult {\n /**\n @internal\n */\n constructor(\n /**\n The mapped version of the position.\n */\n pos, \n /**\n @internal\n */\n delInfo, \n /**\n @internal\n */\n recover) {\n this.pos = pos;\n this.delInfo = delInfo;\n this.recover = recover;\n }\n /**\n Tells you whether the position was deleted, that is, whether the\n step removed the token on the side queried (via the `assoc`)\n argument from the document.\n */\n get deleted() { return (this.delInfo & DEL_SIDE) > 0; }\n /**\n Tells you whether the token before the mapped position was deleted.\n */\n get deletedBefore() { return (this.delInfo & (DEL_BEFORE | DEL_ACROSS)) > 0; }\n /**\n True when the token after the mapped position was deleted.\n */\n get deletedAfter() { return (this.delInfo & (DEL_AFTER | DEL_ACROSS)) > 0; }\n /**\n Tells whether any of the steps mapped through deletes across the\n position (including both the token before and after the\n position).\n */\n get deletedAcross() { return (this.delInfo & DEL_ACROSS) > 0; }\n}\n/**\nA map describing the deletions and insertions made by a step, which\ncan be used to find the correspondence between positions in the\npre-step version of a document and the same position in the\npost-step version.\n*/\nclass StepMap {\n /**\n Create a position map. The modifications to the document are\n represented as an array of numbers, in which each group of three\n represents a modified chunk as `[start, oldSize, newSize]`.\n */\n constructor(\n /**\n @internal\n */\n ranges, \n /**\n @internal\n */\n inverted = false) {\n this.ranges = ranges;\n this.inverted = inverted;\n if (!ranges.length && StepMap.empty)\n return StepMap.empty;\n }\n /**\n @internal\n */\n recover(value) {\n let diff = 0, index = recoverIndex(value);\n if (!this.inverted)\n for (let i = 0; i < index; i++)\n diff += this.ranges[i * 3 + 2] - this.ranges[i * 3 + 1];\n return this.ranges[index * 3] + diff + recoverOffset(value);\n }\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n map(pos, assoc = 1) { return this._map(pos, assoc, true); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let diff = 0, oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex], end = start + oldSize;\n if (pos <= end) {\n let side = !oldSize ? assoc : pos == start ? -1 : pos == end ? 1 : assoc;\n let result = start + diff + (side < 0 ? 0 : newSize);\n if (simple)\n return result;\n let recover = pos == (assoc < 0 ? start : end) ? null : makeRecover(i / 3, pos - start);\n let del = pos == start ? DEL_AFTER : pos == end ? DEL_BEFORE : DEL_ACROSS;\n if (assoc < 0 ? pos != start : pos != end)\n del |= DEL_SIDE;\n return new MapResult(result, del, recover);\n }\n diff += newSize - oldSize;\n }\n return simple ? pos + diff : new MapResult(pos + diff, 0, null);\n }\n /**\n @internal\n */\n touches(pos, recover) {\n let diff = 0, index = recoverIndex(recover);\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i] - (this.inverted ? diff : 0);\n if (start > pos)\n break;\n let oldSize = this.ranges[i + oldIndex], end = start + oldSize;\n if (pos <= end && i == index * 3)\n return true;\n diff += this.ranges[i + newIndex] - oldSize;\n }\n return false;\n }\n /**\n Calls the given function on each of the changed ranges included in\n this map.\n */\n forEach(f) {\n let oldIndex = this.inverted ? 2 : 1, newIndex = this.inverted ? 1 : 2;\n for (let i = 0, diff = 0; i < this.ranges.length; i += 3) {\n let start = this.ranges[i], oldStart = start - (this.inverted ? diff : 0), newStart = start + (this.inverted ? 0 : diff);\n let oldSize = this.ranges[i + oldIndex], newSize = this.ranges[i + newIndex];\n f(oldStart, oldStart + oldSize, newStart, newStart + newSize);\n diff += newSize - oldSize;\n }\n }\n /**\n Create an inverted version of this map. The result can be used to\n map positions in the post-step document to the pre-step document.\n */\n invert() {\n return new StepMap(this.ranges, !this.inverted);\n }\n /**\n @internal\n */\n toString() {\n return (this.inverted ? \"-\" : \"\") + JSON.stringify(this.ranges);\n }\n /**\n Create a map that moves all positions by offset `n` (which may be\n negative). This can be useful when applying steps meant for a\n sub-document to a larger document, or vice-versa.\n */\n static offset(n) {\n return n == 0 ? StepMap.empty : new StepMap(n < 0 ? [0, -n, 0] : [0, 0, n]);\n }\n}\n/**\nA StepMap that contains no changed ranges.\n*/\nStepMap.empty = new StepMap([]);\n/**\nA mapping represents a pipeline of zero or more [step\nmaps](https://prosemirror.net/docs/ref/#transform.StepMap). It has special provisions for losslessly\nhandling mapping positions through a series of steps in which some\nsteps are inverted versions of earlier steps. (This comes up when\n‘[rebasing](/docs/guide/#transform.rebasing)’ steps for\ncollaboration or history management.)\n*/\nclass Mapping {\n /**\n Create a new mapping with the given position maps.\n */\n constructor(\n /**\n The step maps in this mapping.\n */\n maps = [], \n /**\n @internal\n */\n mirror, \n /**\n The starting position in the `maps` array, used when `map` or\n `mapResult` is called.\n */\n from = 0, \n /**\n The end position in the `maps` array.\n */\n to = maps.length) {\n this.maps = maps;\n this.mirror = mirror;\n this.from = from;\n this.to = to;\n }\n /**\n Create a mapping that maps only through a part of this one.\n */\n slice(from = 0, to = this.maps.length) {\n return new Mapping(this.maps, this.mirror, from, to);\n }\n /**\n @internal\n */\n copy() {\n return new Mapping(this.maps.slice(), this.mirror && this.mirror.slice(), this.from, this.to);\n }\n /**\n Add a step map to the end of this mapping. If `mirrors` is\n given, it should be the index of the step map that is the mirror\n image of this one.\n */\n appendMap(map, mirrors) {\n this.to = this.maps.push(map);\n if (mirrors != null)\n this.setMirror(this.maps.length - 1, mirrors);\n }\n /**\n Add all the step maps in a given mapping to this one (preserving\n mirroring information).\n */\n appendMapping(mapping) {\n for (let i = 0, startSize = this.maps.length; i < mapping.maps.length; i++) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i], mirr != null && mirr < i ? startSize + mirr : undefined);\n }\n }\n /**\n Finds the offset of the step map that mirrors the map at the\n given offset, in this mapping (as per the second argument to\n `appendMap`).\n */\n getMirror(n) {\n if (this.mirror)\n for (let i = 0; i < this.mirror.length; i++)\n if (this.mirror[i] == n)\n return this.mirror[i + (i % 2 ? -1 : 1)];\n }\n /**\n @internal\n */\n setMirror(n, m) {\n if (!this.mirror)\n this.mirror = [];\n this.mirror.push(n, m);\n }\n /**\n Append the inverse of the given mapping to this one.\n */\n appendMappingInverted(mapping) {\n for (let i = mapping.maps.length - 1, totalSize = this.maps.length + mapping.maps.length; i >= 0; i--) {\n let mirr = mapping.getMirror(i);\n this.appendMap(mapping.maps[i].invert(), mirr != null && mirr > i ? totalSize - mirr - 1 : undefined);\n }\n }\n /**\n Create an inverted version of this mapping.\n */\n invert() {\n let inverse = new Mapping;\n inverse.appendMappingInverted(this);\n return inverse;\n }\n /**\n Map a position through this mapping.\n */\n map(pos, assoc = 1) {\n if (this.mirror)\n return this._map(pos, assoc, true);\n for (let i = this.from; i < this.to; i++)\n pos = this.maps[i].map(pos, assoc);\n return pos;\n }\n /**\n Map a position through this mapping, returning a mapping\n result.\n */\n mapResult(pos, assoc = 1) { return this._map(pos, assoc, false); }\n /**\n @internal\n */\n _map(pos, assoc, simple) {\n let delInfo = 0;\n for (let i = this.from; i < this.to; i++) {\n let map = this.maps[i], result = map.mapResult(pos, assoc);\n if (result.recover != null) {\n let corr = this.getMirror(i);\n if (corr != null && corr > i && corr < this.to) {\n i = corr;\n pos = this.maps[corr].recover(result.recover);\n continue;\n }\n }\n delInfo |= result.delInfo;\n pos = result.pos;\n }\n return simple ? pos : new MapResult(pos, delInfo, null);\n }\n}\n\nconst stepsByID = Object.create(null);\n/**\nA step object represents an atomic change. It generally applies\nonly to the document it was created for, since the positions\nstored in it will only make sense for that document.\n\nNew steps are defined by creating classes that extend `Step`,\noverriding the `apply`, `invert`, `map`, `getMap` and `fromJSON`\nmethods, and registering your class with a unique\nJSON-serialization identifier using\n[`Step.jsonID`](https://prosemirror.net/docs/ref/#transform.Step^jsonID).\n*/\nclass Step {\n /**\n Get the step map that represents the changes made by this step,\n and which can be used to transform between positions in the old\n and the new document.\n */\n getMap() { return StepMap.empty; }\n /**\n Try to merge this step with another one, to be applied directly\n after it. Returns the merged step when possible, null if the\n steps can't be merged.\n */\n merge(other) { return null; }\n /**\n Deserialize a step from its JSON representation. Will call\n through to the step class' own implementation of this method.\n */\n static fromJSON(schema, json) {\n if (!json || !json.stepType)\n throw new RangeError(\"Invalid input for Step.fromJSON\");\n let type = stepsByID[json.stepType];\n if (!type)\n throw new RangeError(`No step type ${json.stepType} defined`);\n return type.fromJSON(schema, json);\n }\n /**\n To be able to serialize steps to JSON, each step needs a string\n ID to attach to its JSON representation. Use this method to\n register an ID for your step classes. Try to pick something\n that's unlikely to clash with steps from other modules.\n */\n static jsonID(id, stepClass) {\n if (id in stepsByID)\n throw new RangeError(\"Duplicate use of step JSON ID \" + id);\n stepsByID[id] = stepClass;\n stepClass.prototype.jsonID = id;\n return stepClass;\n }\n}\n/**\nThe result of [applying](https://prosemirror.net/docs/ref/#transform.Step.apply) a step. Contains either a\nnew document or a failure value.\n*/\nclass StepResult {\n /**\n @internal\n */\n constructor(\n /**\n The transformed document, if successful.\n */\n doc, \n /**\n The failure message, if unsuccessful.\n */\n failed) {\n this.doc = doc;\n this.failed = failed;\n }\n /**\n Create a successful step result.\n */\n static ok(doc) { return new StepResult(doc, null); }\n /**\n Create a failed step result.\n */\n static fail(message) { return new StepResult(null, message); }\n /**\n Call [`Node.replace`](https://prosemirror.net/docs/ref/#model.Node.replace) with the given\n arguments. Create a successful result if it succeeds, and a\n failed one if it throws a `ReplaceError`.\n */\n static fromReplace(doc, from, to, slice) {\n try {\n return StepResult.ok(doc.replace(from, to, slice));\n }\n catch (e) {\n if (e instanceof ReplaceError)\n return StepResult.fail(e.message);\n throw e;\n }\n }\n}\n\nfunction mapFragment(fragment, f, parent) {\n let mapped = [];\n for (let i = 0; i < fragment.childCount; i++) {\n let child = fragment.child(i);\n if (child.content.size)\n child = child.copy(mapFragment(child.content, f, child));\n if (child.isInline)\n child = f(child, parent, i);\n mapped.push(child);\n }\n return Fragment.fromArray(mapped);\n}\n/**\nAdd a mark to all inline content between two positions.\n*/\nclass AddMarkStep extends Step {\n /**\n Create a mark step.\n */\n constructor(\n /**\n The start of the marked range.\n */\n from, \n /**\n The end of the marked range.\n */\n to, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to), $from = doc.resolve(this.from);\n let parent = $from.node($from.sharedDepth(this.to));\n let slice = new Slice(mapFragment(oldSlice.content, (node, parent) => {\n if (!node.isAtom || !parent.type.allowsMarkType(this.mark.type))\n return node;\n return node.mark(this.mark.addToSet(node.marks));\n }, parent), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new RemoveMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new AddMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof AddMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new AddMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"addMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for AddMarkStep.fromJSON\");\n return new AddMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addMark\", AddMarkStep);\n/**\nRemove a mark from all inline content between two positions.\n*/\nclass RemoveMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The start of the unmarked range.\n */\n from, \n /**\n The end of the unmarked range.\n */\n to, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.from = from;\n this.to = to;\n this.mark = mark;\n }\n apply(doc) {\n let oldSlice = doc.slice(this.from, this.to);\n let slice = new Slice(mapFragment(oldSlice.content, node => {\n return node.mark(this.mark.removeFromSet(node.marks));\n }, doc), oldSlice.openStart, oldSlice.openEnd);\n return StepResult.fromReplace(doc, this.from, this.to, slice);\n }\n invert() {\n return new AddMarkStep(this.from, this.to, this.mark);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deleted && to.deleted || from.pos >= to.pos)\n return null;\n return new RemoveMarkStep(from.pos, to.pos, this.mark);\n }\n merge(other) {\n if (other instanceof RemoveMarkStep &&\n other.mark.eq(this.mark) &&\n this.from <= other.to && this.to >= other.from)\n return new RemoveMarkStep(Math.min(this.from, other.from), Math.max(this.to, other.to), this.mark);\n return null;\n }\n toJSON() {\n return { stepType: \"removeMark\", mark: this.mark.toJSON(),\n from: this.from, to: this.to };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for RemoveMarkStep.fromJSON\");\n return new RemoveMarkStep(json.from, json.to, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeMark\", RemoveMarkStep);\n/**\nAdd a mark to a specific node.\n*/\nclass AddNodeMarkStep extends Step {\n /**\n Create a node mark step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to add.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.addToSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (node) {\n let newSet = this.mark.addToSet(node.marks);\n if (newSet.length == node.marks.length) {\n for (let i = 0; i < node.marks.length; i++)\n if (!node.marks[i].isInSet(newSet))\n return new AddNodeMarkStep(this.pos, node.marks[i]);\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n }\n return new RemoveNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AddNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"addNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for AddNodeMarkStep.fromJSON\");\n return new AddNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"addNodeMark\", AddNodeMarkStep);\n/**\nRemove a mark from a specific node.\n*/\nclass RemoveNodeMarkStep extends Step {\n /**\n Create a mark-removing step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The mark to remove.\n */\n mark) {\n super();\n this.pos = pos;\n this.mark = mark;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at mark step's position\");\n let updated = node.type.create(node.attrs, null, this.mark.removeFromSet(node.marks));\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n invert(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node || !this.mark.isInSet(node.marks))\n return this;\n return new AddNodeMarkStep(this.pos, this.mark);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new RemoveNodeMarkStep(pos.pos, this.mark);\n }\n toJSON() {\n return { stepType: \"removeNodeMark\", pos: this.pos, mark: this.mark.toJSON() };\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for RemoveNodeMarkStep.fromJSON\");\n return new RemoveNodeMarkStep(json.pos, schema.markFromJSON(json.mark));\n }\n}\nStep.jsonID(\"removeNodeMark\", RemoveNodeMarkStep);\n\n/**\nReplace a part of the document with a slice of new content.\n*/\nclass ReplaceStep extends Step {\n /**\n The given `slice` should fit the 'gap' between `from` and\n `to`—the depths must line up, and the surrounding nodes must be\n able to be joined with the open sides of the slice. When\n `structure` is true, the step will fail if the content between\n from and to is not just a sequence of closing and then opening\n tokens (this is to guard against rebased replace steps\n overwriting something they weren't supposed to).\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The slice to insert.\n */\n slice, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.slice = slice;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && contentBetween(doc, this.from, this.to))\n return StepResult.fail(\"Structure replace would overwrite content\");\n return StepResult.fromReplace(doc, this.from, this.to, this.slice);\n }\n getMap() {\n return new StepMap([this.from, this.to - this.from, this.slice.size]);\n }\n invert(doc) {\n return new ReplaceStep(this.from, this.from + this.slice.size, doc.slice(this.from, this.to));\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n if (from.deletedAcross && to.deletedAcross)\n return null;\n return new ReplaceStep(from.pos, Math.max(from.pos, to.pos), this.slice);\n }\n merge(other) {\n if (!(other instanceof ReplaceStep) || other.structure || this.structure)\n return null;\n if (this.from + this.slice.size == other.from && !this.slice.openEnd && !other.slice.openStart) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(this.slice.content.append(other.slice.content), this.slice.openStart, other.slice.openEnd);\n return new ReplaceStep(this.from, this.to + (other.to - other.from), slice, this.structure);\n }\n else if (other.to == this.from && !this.slice.openStart && !other.slice.openEnd) {\n let slice = this.slice.size + other.slice.size == 0 ? Slice.empty\n : new Slice(other.slice.content.append(this.slice.content), other.slice.openStart, this.slice.openEnd);\n return new ReplaceStep(other.from, this.to, slice, this.structure);\n }\n else {\n return null;\n }\n }\n toJSON() {\n let json = { stepType: \"replace\", from: this.from, to: this.to };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\")\n throw new RangeError(\"Invalid input for ReplaceStep.fromJSON\");\n return new ReplaceStep(json.from, json.to, Slice.fromJSON(schema, json.slice), !!json.structure);\n }\n}\nStep.jsonID(\"replace\", ReplaceStep);\n/**\nReplace a part of the document with a slice of content, but\npreserve a range of the replaced content by moving it into the\nslice.\n*/\nclass ReplaceAroundStep extends Step {\n /**\n Create a replace-around step with the given range and gap.\n `insert` should be the point in the slice into which the content\n of the gap should be moved. `structure` has the same meaning as\n it has in the [`ReplaceStep`](https://prosemirror.net/docs/ref/#transform.ReplaceStep) class.\n */\n constructor(\n /**\n The start position of the replaced range.\n */\n from, \n /**\n The end position of the replaced range.\n */\n to, \n /**\n The start of preserved range.\n */\n gapFrom, \n /**\n The end of preserved range.\n */\n gapTo, \n /**\n The slice to insert.\n */\n slice, \n /**\n The position in the slice where the preserved range should be\n inserted.\n */\n insert, \n /**\n @internal\n */\n structure = false) {\n super();\n this.from = from;\n this.to = to;\n this.gapFrom = gapFrom;\n this.gapTo = gapTo;\n this.slice = slice;\n this.insert = insert;\n this.structure = structure;\n }\n apply(doc) {\n if (this.structure && (contentBetween(doc, this.from, this.gapFrom) ||\n contentBetween(doc, this.gapTo, this.to)))\n return StepResult.fail(\"Structure gap-replace would overwrite content\");\n let gap = doc.slice(this.gapFrom, this.gapTo);\n if (gap.openStart || gap.openEnd)\n return StepResult.fail(\"Gap is not a flat range\");\n let inserted = this.slice.insertAt(this.insert, gap.content);\n if (!inserted)\n return StepResult.fail(\"Content does not fit in gap\");\n return StepResult.fromReplace(doc, this.from, this.to, inserted);\n }\n getMap() {\n return new StepMap([this.from, this.gapFrom - this.from, this.insert,\n this.gapTo, this.to - this.gapTo, this.slice.size - this.insert]);\n }\n invert(doc) {\n let gap = this.gapTo - this.gapFrom;\n return new ReplaceAroundStep(this.from, this.from + this.slice.size + gap, this.from + this.insert, this.from + this.insert + gap, doc.slice(this.from, this.to).removeBetween(this.gapFrom - this.from, this.gapTo - this.from), this.gapFrom - this.from, this.structure);\n }\n map(mapping) {\n let from = mapping.mapResult(this.from, 1), to = mapping.mapResult(this.to, -1);\n let gapFrom = mapping.map(this.gapFrom, -1), gapTo = mapping.map(this.gapTo, 1);\n if ((from.deletedAcross && to.deletedAcross) || gapFrom < from.pos || gapTo > to.pos)\n return null;\n return new ReplaceAroundStep(from.pos, to.pos, gapFrom, gapTo, this.slice, this.insert, this.structure);\n }\n toJSON() {\n let json = { stepType: \"replaceAround\", from: this.from, to: this.to,\n gapFrom: this.gapFrom, gapTo: this.gapTo, insert: this.insert };\n if (this.slice.size)\n json.slice = this.slice.toJSON();\n if (this.structure)\n json.structure = true;\n return json;\n }\n /**\n @internal\n */\n static fromJSON(schema, json) {\n if (typeof json.from != \"number\" || typeof json.to != \"number\" ||\n typeof json.gapFrom != \"number\" || typeof json.gapTo != \"number\" || typeof json.insert != \"number\")\n throw new RangeError(\"Invalid input for ReplaceAroundStep.fromJSON\");\n return new ReplaceAroundStep(json.from, json.to, json.gapFrom, json.gapTo, Slice.fromJSON(schema, json.slice), json.insert, !!json.structure);\n }\n}\nStep.jsonID(\"replaceAround\", ReplaceAroundStep);\nfunction contentBetween(doc, from, to) {\n let $from = doc.resolve(from), dist = to - from, depth = $from.depth;\n while (dist > 0 && depth > 0 && $from.indexAfter(depth) == $from.node(depth).childCount) {\n depth--;\n dist--;\n }\n if (dist > 0) {\n let next = $from.node(depth).maybeChild($from.indexAfter(depth));\n while (dist > 0) {\n if (!next || next.isLeaf)\n return true;\n next = next.firstChild;\n dist--;\n }\n }\n return false;\n}\n\nfunction addMark(tr, from, to, mark) {\n let removed = [], added = [];\n let removing, adding;\n tr.doc.nodesBetween(from, to, (node, pos, parent) => {\n if (!node.isInline)\n return;\n let marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n let start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n let newSet = mark.addToSet(marks);\n for (let i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to == start && removing.mark.eq(marks[i]))\n removing.to = end;\n else\n removed.push(removing = new RemoveMarkStep(start, end, marks[i]));\n }\n }\n if (adding && adding.to == start)\n adding.to = end;\n else\n added.push(adding = new AddMarkStep(start, end, mark));\n }\n });\n removed.forEach(s => tr.step(s));\n added.forEach(s => tr.step(s));\n}\nfunction removeMark(tr, from, to, mark) {\n let matched = [], step = 0;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isInline)\n return;\n step++;\n let toRemove = null;\n if (mark instanceof MarkType) {\n let set = node.marks, found;\n while (found = mark.isInSet(set)) {\n (toRemove || (toRemove = [])).push(found);\n set = found.removeFromSet(set);\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks))\n toRemove = [mark];\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n let end = Math.min(pos + node.nodeSize, to);\n for (let i = 0; i < toRemove.length; i++) {\n let style = toRemove[i], found;\n for (let j = 0; j < matched.length; j++) {\n let m = matched[j];\n if (m.step == step - 1 && style.eq(matched[j].style))\n found = m;\n }\n if (found) {\n found.to = end;\n found.step = step;\n }\n else {\n matched.push({ style, from: Math.max(pos, from), to: end, step });\n }\n }\n }\n });\n matched.forEach(m => tr.step(new RemoveMarkStep(m.from, m.to, m.style)));\n}\nfunction clearIncompatible(tr, pos, parentType, match = parentType.contentMatch) {\n let node = tr.doc.nodeAt(pos);\n let replSteps = [], cur = pos + 1;\n for (let i = 0; i < node.childCount; i++) {\n let child = node.child(i), end = cur + child.nodeSize;\n let allowed = match.matchType(child.type);\n if (!allowed) {\n replSteps.push(new ReplaceStep(cur, end, Slice.empty));\n }\n else {\n match = allowed;\n for (let j = 0; j < child.marks.length; j++)\n if (!parentType.allowsMarkType(child.marks[j].type))\n tr.step(new RemoveMarkStep(cur, end, child.marks[j]));\n if (child.isText && !parentType.spec.code) {\n let m, newline = /\\r?\\n|\\r/g, slice;\n while (m = newline.exec(child.text)) {\n if (!slice)\n slice = new Slice(Fragment.from(parentType.schema.text(\" \", parentType.allowedMarks(child.marks))), 0, 0);\n replSteps.push(new ReplaceStep(cur + m.index, cur + m.index + m[0].length, slice));\n }\n }\n }\n cur = end;\n }\n if (!match.validEnd) {\n let fill = match.fillBefore(Fragment.empty, true);\n tr.replace(cur, cur, new Slice(fill, 0, 0));\n }\n for (let i = replSteps.length - 1; i >= 0; i--)\n tr.step(replSteps[i]);\n}\n\nfunction canCut(node, start, end) {\n return (start == 0 || node.canReplace(start, node.childCount)) &&\n (end == node.childCount || node.canReplace(0, end));\n}\n/**\nTry to find a target depth to which the content in the given range\ncan be lifted. Will not go across\n[isolating](https://prosemirror.net/docs/ref/#model.NodeSpec.isolating) parent nodes.\n*/\nfunction liftTarget(range) {\n let parent = range.parent;\n let content = parent.content.cutByIndex(range.startIndex, range.endIndex);\n for (let depth = range.depth;; --depth) {\n let node = range.$from.node(depth);\n let index = range.$from.index(depth), endIndex = range.$to.indexAfter(depth);\n if (depth < range.depth && node.canReplace(index, endIndex, content))\n return depth;\n if (depth == 0 || node.type.spec.isolating || !canCut(node, index, endIndex))\n break;\n }\n return null;\n}\nfunction lift(tr, range, target) {\n let { $from, $to, depth } = range;\n let gapStart = $from.before(depth + 1), gapEnd = $to.after(depth + 1);\n let start = gapStart, end = gapEnd;\n let before = Fragment.empty, openStart = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $from.index(d) > 0) {\n splitting = true;\n before = Fragment.from($from.node(d).copy(before));\n openStart++;\n }\n else {\n start--;\n }\n let after = Fragment.empty, openEnd = 0;\n for (let d = depth, splitting = false; d > target; d--)\n if (splitting || $to.after(d + 1) < $to.end(d)) {\n splitting = true;\n after = Fragment.from($to.node(d).copy(after));\n openEnd++;\n }\n else {\n end++;\n }\n tr.step(new ReplaceAroundStep(start, end, gapStart, gapEnd, new Slice(before.append(after), openStart, openEnd), before.size - openStart, true));\n}\n/**\nTry to find a valid way to wrap the content in the given range in a\nnode of the given type. May introduce extra nodes around and inside\nthe wrapper node, if necessary. Returns null if no valid wrapping\ncould be found. When `innerRange` is given, that range's content is\nused as the content to fit into the wrapping, instead of the\ncontent of `range`.\n*/\nfunction findWrapping(range, nodeType, attrs = null, innerRange = range) {\n let around = findWrappingOutside(range, nodeType);\n let inner = around && findWrappingInside(innerRange, nodeType);\n if (!inner)\n return null;\n return around.map(withAttrs)\n .concat({ type: nodeType, attrs }).concat(inner.map(withAttrs));\n}\nfunction withAttrs(type) { return { type, attrs: null }; }\nfunction findWrappingOutside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let around = parent.contentMatchAt(startIndex).findWrapping(type);\n if (!around)\n return null;\n let outer = around.length ? around[0] : type;\n return parent.canReplaceWith(startIndex, endIndex, outer) ? around : null;\n}\nfunction findWrappingInside(range, type) {\n let { parent, startIndex, endIndex } = range;\n let inner = parent.child(startIndex);\n let inside = type.contentMatch.findWrapping(inner.type);\n if (!inside)\n return null;\n let lastType = inside.length ? inside[inside.length - 1] : type;\n let innerMatch = lastType.contentMatch;\n for (let i = startIndex; innerMatch && i < endIndex; i++)\n innerMatch = innerMatch.matchType(parent.child(i).type);\n if (!innerMatch || !innerMatch.validEnd)\n return null;\n return inside;\n}\nfunction wrap(tr, range, wrappers) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--) {\n if (content.size) {\n let match = wrappers[i].type.contentMatch.matchFragment(content);\n if (!match || !match.validEnd)\n throw new RangeError(\"Wrapper type given to Transform.wrap does not form valid content of its parent wrapper\");\n }\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n }\n let start = range.start, end = range.end;\n tr.step(new ReplaceAroundStep(start, end, start, end, new Slice(content, 0, 0), wrappers.length, true));\n}\nfunction setBlockType(tr, from, to, type, attrs) {\n if (!type.isTextblock)\n throw new RangeError(\"Type given to setBlockType should be a textblock\");\n let mapFrom = tr.steps.length;\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && !node.hasMarkup(type, attrs) && canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), type)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n tr.clearIncompatible(tr.mapping.slice(mapFrom).map(pos, 1), type);\n let mapping = tr.mapping.slice(mapFrom);\n let startM = mapping.map(pos, 1), endM = mapping.map(pos + node.nodeSize, 1);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, new Slice(Fragment.from(type.create(attrs, null, node.marks)), 0, 0), 1, true));\n return false;\n }\n });\n}\nfunction canChangeType(doc, pos, type) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n}\n/**\nChange the type, attributes, and/or marks of the node at `pos`.\nWhen `type` isn't given, the existing node type is preserved,\n*/\nfunction setNodeMarkup(tr, pos, type, attrs, marks) {\n let node = tr.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at given position\");\n if (!type)\n type = node.type;\n let newNode = type.create(attrs, null, marks || node.marks);\n if (node.isLeaf)\n return tr.replaceWith(pos, pos + node.nodeSize, newNode);\n if (!type.validContent(node.content))\n throw new RangeError(\"Invalid content for node type \" + type.name);\n tr.step(new ReplaceAroundStep(pos, pos + node.nodeSize, pos + 1, pos + node.nodeSize - 1, new Slice(Fragment.from(newNode), 0, 0), 1, true));\n}\n/**\nCheck whether splitting at the given position is allowed.\n*/\nfunction canSplit(doc, pos, depth = 1, typesAfter) {\n let $pos = doc.resolve(pos), base = $pos.depth - depth;\n let innerType = (typesAfter && typesAfter[typesAfter.length - 1]) || $pos.parent;\n if (base < 0 || $pos.parent.type.spec.isolating ||\n !$pos.parent.canReplace($pos.index(), $pos.parent.childCount) ||\n !innerType.type.validContent($pos.parent.content.cutByIndex($pos.index(), $pos.parent.childCount)))\n return false;\n for (let d = $pos.depth - 1, i = depth - 2; d > base; d--, i--) {\n let node = $pos.node(d), index = $pos.index(d);\n if (node.type.spec.isolating)\n return false;\n let rest = node.content.cutByIndex(index, node.childCount);\n let overrideChild = typesAfter && typesAfter[i + 1];\n if (overrideChild)\n rest = rest.replaceChild(0, overrideChild.type.create(overrideChild.attrs));\n let after = (typesAfter && typesAfter[i]) || node;\n if (!node.canReplace(index + 1, node.childCount) || !after.type.validContent(rest))\n return false;\n }\n let index = $pos.indexAfter(base);\n let baseType = typesAfter && typesAfter[0];\n return $pos.node(base).canReplaceWith(index, index, baseType ? baseType.type : $pos.node(base + 1).type);\n}\nfunction split(tr, pos, depth = 1, typesAfter) {\n let $pos = tr.doc.resolve(pos), before = Fragment.empty, after = Fragment.empty;\n for (let d = $pos.depth, e = $pos.depth - depth, i = depth - 1; d > e; d--, i--) {\n before = Fragment.from($pos.node(d).copy(before));\n let typeAfter = typesAfter && typesAfter[i];\n after = Fragment.from(typeAfter ? typeAfter.type.create(typeAfter.attrs, after) : $pos.node(d).copy(after));\n }\n tr.step(new ReplaceStep(pos, pos, new Slice(before.append(after), depth, depth), true));\n}\n/**\nTest whether the blocks before and after a given position can be\njoined.\n*/\nfunction canJoin(doc, pos) {\n let $pos = doc.resolve(pos), index = $pos.index();\n return joinable($pos.nodeBefore, $pos.nodeAfter) &&\n $pos.parent.canReplace(index, index + 1);\n}\nfunction joinable(a, b) {\n return !!(a && b && !a.isLeaf && a.canAppend(b));\n}\n/**\nFind an ancestor of the given position that can be joined to the\nblock before (or after if `dir` is positive). Returns the joinable\npoint, if any.\n*/\nfunction joinPoint(doc, pos, dir = -1) {\n let $pos = doc.resolve(pos);\n for (let d = $pos.depth;; d--) {\n let before, after, index = $pos.index(d);\n if (d == $pos.depth) {\n before = $pos.nodeBefore;\n after = $pos.nodeAfter;\n }\n else if (dir > 0) {\n before = $pos.node(d + 1);\n index++;\n after = $pos.node(d).maybeChild(index);\n }\n else {\n before = $pos.node(d).maybeChild(index - 1);\n after = $pos.node(d + 1);\n }\n if (before && !before.isTextblock && joinable(before, after) &&\n $pos.node(d).canReplace(index, index + 1))\n return pos;\n if (d == 0)\n break;\n pos = dir < 0 ? $pos.before(d) : $pos.after(d);\n }\n}\nfunction join(tr, pos, depth) {\n let step = new ReplaceStep(pos - depth, pos + depth, Slice.empty, true);\n tr.step(step);\n}\n/**\nTry to find a point where a node of the given type can be inserted\nnear `pos`, by searching up the node hierarchy when `pos` itself\nisn't a valid place but is at the start or end of a node. Return\nnull if no position was found.\n*/\nfunction insertPoint(doc, pos, nodeType) {\n let $pos = doc.resolve(pos);\n if ($pos.parent.canReplaceWith($pos.index(), $pos.index(), nodeType))\n return pos;\n if ($pos.parentOffset == 0)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.index(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.before(d + 1);\n if (index > 0)\n return null;\n }\n if ($pos.parentOffset == $pos.parent.content.size)\n for (let d = $pos.depth - 1; d >= 0; d--) {\n let index = $pos.indexAfter(d);\n if ($pos.node(d).canReplaceWith(index, index, nodeType))\n return $pos.after(d + 1);\n if (index < $pos.node(d).childCount)\n return null;\n }\n return null;\n}\n/**\nFinds a position at or around the given position where the given\nslice can be inserted. Will look at parent nodes' nearest boundary\nand try there, even if the original position wasn't directly at the\nstart or end of that node. Returns null when no position was found.\n*/\nfunction dropPoint(doc, pos, slice) {\n let $pos = doc.resolve(pos);\n if (!slice.content.size)\n return pos;\n let content = slice.content;\n for (let i = 0; i < slice.openStart; i++)\n content = content.firstChild.content;\n for (let pass = 1; pass <= (slice.openStart == 0 && slice.size ? 2 : 1); pass++) {\n for (let d = $pos.depth; d >= 0; d--) {\n let bias = d == $pos.depth ? 0 : $pos.pos <= ($pos.start(d + 1) + $pos.end(d + 1)) / 2 ? -1 : 1;\n let insertPos = $pos.index(d) + (bias > 0 ? 1 : 0);\n let parent = $pos.node(d), fits = false;\n if (pass == 1) {\n fits = parent.canReplace(insertPos, insertPos, content);\n }\n else {\n let wrapping = parent.contentMatchAt(insertPos).findWrapping(content.firstChild.type);\n fits = wrapping && parent.canReplaceWith(insertPos, insertPos, wrapping[0]);\n }\n if (fits)\n return bias == 0 ? $pos.pos : bias < 0 ? $pos.before(d + 1) : $pos.after(d + 1);\n }\n }\n return null;\n}\n\n/**\n‘Fit’ a slice into a given position in the document, producing a\n[step](https://prosemirror.net/docs/ref/#transform.Step) that inserts it. Will return null if\nthere's no meaningful way to insert the slice here, or inserting it\nwould be a no-op (an empty slice over an empty range).\n*/\nfunction replaceStep(doc, from, to = from, slice = Slice.empty) {\n if (from == to && !slice.size)\n return null;\n let $from = doc.resolve(from), $to = doc.resolve(to);\n // Optimization -- avoid work if it's obvious that it's not needed.\n if (fitsTrivially($from, $to, slice))\n return new ReplaceStep(from, to, slice);\n return new Fitter($from, $to, slice).fit();\n}\nfunction fitsTrivially($from, $to, slice) {\n return !slice.openStart && !slice.openEnd && $from.start() == $to.start() &&\n $from.parent.canReplace($from.index(), $to.index(), slice.content);\n}\n// Algorithm for 'placing' the elements of a slice into a gap:\n//\n// We consider the content of each node that is open to the left to be\n// independently placeable. I.e. in , when the\n// paragraph on the left is open, \"foo\" can be placed (somewhere on\n// the left side of the replacement gap) independently from p(\"bar\").\n//\n// This class tracks the state of the placement progress in the\n// following properties:\n//\n// - `frontier` holds a stack of `{type, match}` objects that\n// represent the open side of the replacement. It starts at\n// `$from`, then moves forward as content is placed, and is finally\n// reconciled with `$to`.\n//\n// - `unplaced` is a slice that represents the content that hasn't\n// been placed yet.\n//\n// - `placed` is a fragment of placed content. Its open-start value\n// is implicit in `$from`, and its open-end value in `frontier`.\nclass Fitter {\n constructor($from, $to, unplaced) {\n this.$from = $from;\n this.$to = $to;\n this.unplaced = unplaced;\n this.frontier = [];\n this.placed = Fragment.empty;\n for (let i = 0; i <= $from.depth; i++) {\n let node = $from.node(i);\n this.frontier.push({\n type: node.type,\n match: node.contentMatchAt($from.indexAfter(i))\n });\n }\n for (let i = $from.depth; i > 0; i--)\n this.placed = Fragment.from($from.node(i).copy(this.placed));\n }\n get depth() { return this.frontier.length - 1; }\n fit() {\n // As long as there's unplaced content, try to place some of it.\n // If that fails, either increase the open score of the unplaced\n // slice, or drop nodes from it, and then try again.\n while (this.unplaced.size) {\n let fit = this.findFittable();\n if (fit)\n this.placeNodes(fit);\n else\n this.openMore() || this.dropNode();\n }\n // When there's inline content directly after the frontier _and_\n // directly after `this.$to`, we must generate a `ReplaceAround`\n // step that pulls that content into the node after the frontier.\n // That means the fitting must be done to the end of the textblock\n // node after `this.$to`, not `this.$to` itself.\n let moveInline = this.mustMoveInline(), placedSize = this.placed.size - this.depth - this.$from.depth;\n let $from = this.$from, $to = this.close(moveInline < 0 ? this.$to : $from.doc.resolve(moveInline));\n if (!$to)\n return null;\n // If closing to `$to` succeeded, create a step\n let content = this.placed, openStart = $from.depth, openEnd = $to.depth;\n while (openStart && openEnd && content.childCount == 1) { // Normalize by dropping open parent nodes\n content = content.firstChild.content;\n openStart--;\n openEnd--;\n }\n let slice = new Slice(content, openStart, openEnd);\n if (moveInline > -1)\n return new ReplaceAroundStep($from.pos, moveInline, this.$to.pos, this.$to.end(), slice, placedSize);\n if (slice.size || $from.pos != this.$to.pos) // Don't generate no-op steps\n return new ReplaceStep($from.pos, $to.pos, slice);\n return null;\n }\n // Find a position on the start spine of `this.unplaced` that has\n // content that can be moved somewhere on the frontier. Returns two\n // depths, one for the slice and one for the frontier.\n findFittable() {\n let startDepth = this.unplaced.openStart;\n for (let cur = this.unplaced.content, d = 0, openEnd = this.unplaced.openEnd; d < startDepth; d++) {\n let node = cur.firstChild;\n if (cur.childCount > 1)\n openEnd = 0;\n if (node.type.spec.isolating && openEnd <= d) {\n startDepth = d;\n break;\n }\n cur = node.content;\n }\n // Only try wrapping nodes (pass 2) after finding a place without\n // wrapping failed.\n for (let pass = 1; pass <= 2; pass++) {\n for (let sliceDepth = pass == 1 ? startDepth : this.unplaced.openStart; sliceDepth >= 0; sliceDepth--) {\n let fragment, parent = null;\n if (sliceDepth) {\n parent = contentAt(this.unplaced.content, sliceDepth - 1).firstChild;\n fragment = parent.content;\n }\n else {\n fragment = this.unplaced.content;\n }\n let first = fragment.firstChild;\n for (let frontierDepth = this.depth; frontierDepth >= 0; frontierDepth--) {\n let { type, match } = this.frontier[frontierDepth], wrap, inject = null;\n // In pass 1, if the next node matches, or there is no next\n // node but the parents look compatible, we've found a\n // place.\n if (pass == 1 && (first ? match.matchType(first.type) || (inject = match.fillBefore(Fragment.from(first), false))\n : parent && type.compatibleContent(parent.type)))\n return { sliceDepth, frontierDepth, parent, inject };\n // In pass 2, look for a set of wrapping nodes that make\n // `first` fit here.\n else if (pass == 2 && first && (wrap = match.findWrapping(first.type)))\n return { sliceDepth, frontierDepth, parent, wrap };\n // Don't continue looking further up if the parent node\n // would fit here.\n if (parent && match.matchType(parent.type))\n break;\n }\n }\n }\n }\n openMore() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (!inner.childCount || inner.firstChild.isLeaf)\n return false;\n this.unplaced = new Slice(content, openStart + 1, Math.max(openEnd, inner.size + openStart >= content.size - openEnd ? openStart + 1 : 0));\n return true;\n }\n dropNode() {\n let { content, openStart, openEnd } = this.unplaced;\n let inner = contentAt(content, openStart);\n if (inner.childCount <= 1 && openStart > 0) {\n let openAtEnd = content.size - openStart <= openStart + inner.size;\n this.unplaced = new Slice(dropFromFragment(content, openStart - 1, 1), openStart - 1, openAtEnd ? openStart - 1 : openEnd);\n }\n else {\n this.unplaced = new Slice(dropFromFragment(content, openStart, 1), openStart, openEnd);\n }\n }\n // Move content from the unplaced slice at `sliceDepth` to the\n // frontier node at `frontierDepth`. Close that frontier node when\n // applicable.\n placeNodes({ sliceDepth, frontierDepth, parent, inject, wrap }) {\n while (this.depth > frontierDepth)\n this.closeFrontierNode();\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n this.openFrontierNode(wrap[i]);\n let slice = this.unplaced, fragment = parent ? parent.content : slice.content;\n let openStart = slice.openStart - sliceDepth;\n let taken = 0, add = [];\n let { match, type } = this.frontier[frontierDepth];\n if (inject) {\n for (let i = 0; i < inject.childCount; i++)\n add.push(inject.child(i));\n match = match.matchFragment(inject);\n }\n // Computes the amount of (end) open nodes at the end of the\n // fragment. When 0, the parent is open, but no more. When\n // negative, nothing is open.\n let openEndCount = (fragment.size + sliceDepth) - (slice.content.size - slice.openEnd);\n // Scan over the fragment, fitting as many child nodes as\n // possible.\n while (taken < fragment.childCount) {\n let next = fragment.child(taken), matches = match.matchType(next.type);\n if (!matches)\n break;\n taken++;\n if (taken > 1 || openStart == 0 || next.content.size) { // Drop empty open nodes\n match = matches;\n add.push(closeNodeStart(next.mark(type.allowedMarks(next.marks)), taken == 1 ? openStart : 0, taken == fragment.childCount ? openEndCount : -1));\n }\n }\n let toEnd = taken == fragment.childCount;\n if (!toEnd)\n openEndCount = -1;\n this.placed = addToFragment(this.placed, frontierDepth, Fragment.from(add));\n this.frontier[frontierDepth].match = match;\n // If the parent types match, and the entire node was moved, and\n // it's not open, close this frontier node right away.\n if (toEnd && openEndCount < 0 && parent && parent.type == this.frontier[this.depth].type && this.frontier.length > 1)\n this.closeFrontierNode();\n // Add new frontier nodes for any open nodes at the end.\n for (let i = 0, cur = fragment; i < openEndCount; i++) {\n let node = cur.lastChild;\n this.frontier.push({ type: node.type, match: node.contentMatchAt(node.childCount) });\n cur = node.content;\n }\n // Update `this.unplaced`. Drop the entire node from which we\n // placed it we got to its end, otherwise just drop the placed\n // nodes.\n this.unplaced = !toEnd ? new Slice(dropFromFragment(slice.content, sliceDepth, taken), slice.openStart, slice.openEnd)\n : sliceDepth == 0 ? Slice.empty\n : new Slice(dropFromFragment(slice.content, sliceDepth - 1, 1), sliceDepth - 1, openEndCount < 0 ? slice.openEnd : sliceDepth - 1);\n }\n mustMoveInline() {\n if (!this.$to.parent.isTextblock)\n return -1;\n let top = this.frontier[this.depth], level;\n if (!top.type.isTextblock || !contentAfterFits(this.$to, this.$to.depth, top.type, top.match, false) ||\n (this.$to.depth == this.depth && (level = this.findCloseLevel(this.$to)) && level.depth == this.depth))\n return -1;\n let { depth } = this.$to, after = this.$to.after(depth);\n while (depth > 1 && after == this.$to.end(--depth))\n ++after;\n return after;\n }\n findCloseLevel($to) {\n scan: for (let i = Math.min(this.depth, $to.depth); i >= 0; i--) {\n let { match, type } = this.frontier[i];\n let dropInner = i < $to.depth && $to.end(i + 1) == $to.pos + ($to.depth - (i + 1));\n let fit = contentAfterFits($to, i, type, match, dropInner);\n if (!fit)\n continue;\n for (let d = i - 1; d >= 0; d--) {\n let { match, type } = this.frontier[d];\n let matches = contentAfterFits($to, d, type, match, true);\n if (!matches || matches.childCount)\n continue scan;\n }\n return { depth: i, fit, move: dropInner ? $to.doc.resolve($to.after(i + 1)) : $to };\n }\n }\n close($to) {\n let close = this.findCloseLevel($to);\n if (!close)\n return null;\n while (this.depth > close.depth)\n this.closeFrontierNode();\n if (close.fit.childCount)\n this.placed = addToFragment(this.placed, close.depth, close.fit);\n $to = close.move;\n for (let d = close.depth + 1; d <= $to.depth; d++) {\n let node = $to.node(d), add = node.type.contentMatch.fillBefore(node.content, true, $to.index(d));\n this.openFrontierNode(node.type, node.attrs, add);\n }\n return $to;\n }\n openFrontierNode(type, attrs = null, content) {\n let top = this.frontier[this.depth];\n top.match = top.match.matchType(type);\n this.placed = addToFragment(this.placed, this.depth, Fragment.from(type.create(attrs, content)));\n this.frontier.push({ type, match: type.contentMatch });\n }\n closeFrontierNode() {\n let open = this.frontier.pop();\n let add = open.match.fillBefore(Fragment.empty, true);\n if (add.childCount)\n this.placed = addToFragment(this.placed, this.frontier.length, add);\n }\n}\nfunction dropFromFragment(fragment, depth, count) {\n if (depth == 0)\n return fragment.cutByIndex(count, fragment.childCount);\n return fragment.replaceChild(0, fragment.firstChild.copy(dropFromFragment(fragment.firstChild.content, depth - 1, count)));\n}\nfunction addToFragment(fragment, depth, content) {\n if (depth == 0)\n return fragment.append(content);\n return fragment.replaceChild(fragment.childCount - 1, fragment.lastChild.copy(addToFragment(fragment.lastChild.content, depth - 1, content)));\n}\nfunction contentAt(fragment, depth) {\n for (let i = 0; i < depth; i++)\n fragment = fragment.firstChild.content;\n return fragment;\n}\nfunction closeNodeStart(node, openStart, openEnd) {\n if (openStart <= 0)\n return node;\n let frag = node.content;\n if (openStart > 1)\n frag = frag.replaceChild(0, closeNodeStart(frag.firstChild, openStart - 1, frag.childCount == 1 ? openEnd - 1 : 0));\n if (openStart > 0) {\n frag = node.type.contentMatch.fillBefore(frag).append(frag);\n if (openEnd <= 0)\n frag = frag.append(node.type.contentMatch.matchFragment(frag).fillBefore(Fragment.empty, true));\n }\n return node.copy(frag);\n}\nfunction contentAfterFits($to, depth, type, match, open) {\n let node = $to.node(depth), index = open ? $to.indexAfter(depth) : $to.index(depth);\n if (index == node.childCount && !type.compatibleContent(node.type))\n return null;\n let fit = match.fillBefore(node.content, true, index);\n return fit && !invalidMarks(type, node.content, index) ? fit : null;\n}\nfunction invalidMarks(type, fragment, start) {\n for (let i = start; i < fragment.childCount; i++)\n if (!type.allowsMarks(fragment.child(i).marks))\n return true;\n return false;\n}\nfunction definesContent(type) {\n return type.spec.defining || type.spec.definingForContent;\n}\nfunction replaceRange(tr, from, to, slice) {\n if (!slice.size)\n return tr.deleteRange(from, to);\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n if (fitsTrivially($from, $to, slice))\n return tr.step(new ReplaceStep(from, to, slice));\n let targetDepths = coveredDepths($from, tr.doc.resolve(to));\n // Can't replace the whole document, so remove 0 if it's present\n if (targetDepths[targetDepths.length - 1] == 0)\n targetDepths.pop();\n // Negative numbers represent not expansion over the whole node at\n // that depth, but replacing from $from.before(-D) to $to.pos.\n let preferredTarget = -($from.depth + 1);\n targetDepths.unshift(preferredTarget);\n // This loop picks a preferred target depth, if one of the covering\n // depths is not outside of a defining node, and adds negative\n // depths for any depth that has $from at its start and does not\n // cross a defining node.\n for (let d = $from.depth, pos = $from.pos - 1; d > 0; d--, pos--) {\n let spec = $from.node(d).type.spec;\n if (spec.defining || spec.definingAsContext || spec.isolating)\n break;\n if (targetDepths.indexOf(d) > -1)\n preferredTarget = d;\n else if ($from.before(d) == pos)\n targetDepths.splice(1, 0, -d);\n }\n // Try to fit each possible depth of the slice into each possible\n // target depth, starting with the preferred depths.\n let preferredTargetIndex = targetDepths.indexOf(preferredTarget);\n let leftNodes = [], preferredDepth = slice.openStart;\n for (let content = slice.content, i = 0;; i++) {\n let node = content.firstChild;\n leftNodes.push(node);\n if (i == slice.openStart)\n break;\n content = node.content;\n }\n // Back up preferredDepth to cover defining textblocks directly\n // above it, possibly skipping a non-defining textblock.\n for (let d = preferredDepth - 1; d >= 0; d--) {\n let leftNode = leftNodes[d], def = definesContent(leftNode.type);\n if (def && !leftNode.sameMarkup($from.node(Math.abs(preferredTarget) - 1)))\n preferredDepth = d;\n else if (def || !leftNode.type.isTextblock)\n break;\n }\n for (let j = slice.openStart; j >= 0; j--) {\n let openDepth = (j + preferredDepth + 1) % (slice.openStart + 1);\n let insert = leftNodes[openDepth];\n if (!insert)\n continue;\n for (let i = 0; i < targetDepths.length; i++) {\n // Loop over possible expansion levels, starting with the\n // preferred one\n let targetDepth = targetDepths[(i + preferredTargetIndex) % targetDepths.length], expand = true;\n if (targetDepth < 0) {\n expand = false;\n targetDepth = -targetDepth;\n }\n let parent = $from.node(targetDepth - 1), index = $from.index(targetDepth - 1);\n if (parent.canReplaceWith(index, index, insert.type, insert.marks))\n return tr.replace($from.before(targetDepth), expand ? $to.after(targetDepth) : to, new Slice(closeFragment(slice.content, 0, slice.openStart, openDepth), openDepth, slice.openEnd));\n }\n }\n let startSteps = tr.steps.length;\n for (let i = targetDepths.length - 1; i >= 0; i--) {\n tr.replace(from, to, slice);\n if (tr.steps.length > startSteps)\n break;\n let depth = targetDepths[i];\n if (depth < 0)\n continue;\n from = $from.before(depth);\n to = $to.after(depth);\n }\n}\nfunction closeFragment(fragment, depth, oldOpen, newOpen, parent) {\n if (depth < oldOpen) {\n let first = fragment.firstChild;\n fragment = fragment.replaceChild(0, first.copy(closeFragment(first.content, depth + 1, oldOpen, newOpen, first)));\n }\n if (depth > newOpen) {\n let match = parent.contentMatchAt(0);\n let start = match.fillBefore(fragment).append(fragment);\n fragment = start.append(match.matchFragment(start).fillBefore(Fragment.empty, true));\n }\n return fragment;\n}\nfunction replaceRangeWith(tr, from, to, node) {\n if (!node.isInline && from == to && tr.doc.resolve(from).parent.content.size) {\n let point = insertPoint(tr.doc, from, node.type);\n if (point != null)\n from = to = point;\n }\n tr.replaceRange(from, to, new Slice(Fragment.from(node), 0, 0));\n}\nfunction deleteRange(tr, from, to) {\n let $from = tr.doc.resolve(from), $to = tr.doc.resolve(to);\n let covered = coveredDepths($from, $to);\n for (let i = 0; i < covered.length; i++) {\n let depth = covered[i], last = i == covered.length - 1;\n if ((last && depth == 0) || $from.node(depth).type.contentMatch.validEnd)\n return tr.delete($from.start(depth), $to.end(depth));\n if (depth > 0 && (last || $from.node(depth - 1).canReplace($from.index(depth - 1), $to.indexAfter(depth - 1))))\n return tr.delete($from.before(depth), $to.after(depth));\n }\n for (let d = 1; d <= $from.depth && d <= $to.depth; d++) {\n if (from - $from.start(d) == $from.depth - d && to > $from.end(d) && $to.end(d) - to != $to.depth - d)\n return tr.delete($from.before(d), to);\n }\n tr.delete(from, to);\n}\n// Returns an array of all depths for which $from - $to spans the\n// whole content of the nodes at that depth.\nfunction coveredDepths($from, $to) {\n let result = [], minDepth = Math.min($from.depth, $to.depth);\n for (let d = minDepth; d >= 0; d--) {\n let start = $from.start(d);\n if (start < $from.pos - ($from.depth - d) ||\n $to.end(d) > $to.pos + ($to.depth - d) ||\n $from.node(d).type.spec.isolating ||\n $to.node(d).type.spec.isolating)\n break;\n if (start == $to.start(d) ||\n (d == $from.depth && d == $to.depth && $from.parent.inlineContent && $to.parent.inlineContent &&\n d && $to.start(d - 1) == start - 1))\n result.push(d);\n }\n return result;\n}\n\n/**\nUpdate an attribute in a specific node.\n*/\nclass AttrStep extends Step {\n /**\n Construct an attribute step.\n */\n constructor(\n /**\n The position of the target node.\n */\n pos, \n /**\n The attribute to set.\n */\n attr, \n // The attribute's new value.\n value) {\n super();\n this.pos = pos;\n this.attr = attr;\n this.value = value;\n }\n apply(doc) {\n let node = doc.nodeAt(this.pos);\n if (!node)\n return StepResult.fail(\"No node at attribute step's position\");\n let attrs = Object.create(null);\n for (let name in node.attrs)\n attrs[name] = node.attrs[name];\n attrs[this.attr] = this.value;\n let updated = node.type.create(attrs, null, node.marks);\n return StepResult.fromReplace(doc, this.pos, this.pos + 1, new Slice(Fragment.from(updated), 0, node.isLeaf ? 0 : 1));\n }\n getMap() {\n return StepMap.empty;\n }\n invert(doc) {\n return new AttrStep(this.pos, this.attr, doc.nodeAt(this.pos).attrs[this.attr]);\n }\n map(mapping) {\n let pos = mapping.mapResult(this.pos, 1);\n return pos.deletedAfter ? null : new AttrStep(pos.pos, this.attr, this.value);\n }\n toJSON() {\n return { stepType: \"attr\", pos: this.pos, attr: this.attr, value: this.value };\n }\n static fromJSON(schema, json) {\n if (typeof json.pos != \"number\" || typeof json.attr != \"string\")\n throw new RangeError(\"Invalid input for AttrStep.fromJSON\");\n return new AttrStep(json.pos, json.attr, json.value);\n }\n}\nStep.jsonID(\"attr\", AttrStep);\n\n/**\n@internal\n*/\nlet TransformError = class extends Error {\n};\nTransformError = function TransformError(message) {\n let err = Error.call(this, message);\n err.__proto__ = TransformError.prototype;\n return err;\n};\nTransformError.prototype = Object.create(Error.prototype);\nTransformError.prototype.constructor = TransformError;\nTransformError.prototype.name = \"TransformError\";\n/**\nAbstraction to build up and track an array of\n[steps](https://prosemirror.net/docs/ref/#transform.Step) representing a document transformation.\n\nMost transforming methods return the `Transform` object itself, so\nthat they can be chained.\n*/\nclass Transform {\n /**\n Create a transform that starts with the given document.\n */\n constructor(\n /**\n The current document (the result of applying the steps in the\n transform).\n */\n doc) {\n this.doc = doc;\n /**\n The steps in this transform.\n */\n this.steps = [];\n /**\n The documents before each of the steps.\n */\n this.docs = [];\n /**\n A mapping with the maps for each of the steps in this transform.\n */\n this.mapping = new Mapping;\n }\n /**\n The starting document.\n */\n get before() { return this.docs.length ? this.docs[0] : this.doc; }\n /**\n Apply a new step in this transform, saving the result. Throws an\n error when the step fails.\n */\n step(step) {\n let result = this.maybeStep(step);\n if (result.failed)\n throw new TransformError(result.failed);\n return this;\n }\n /**\n Try to apply a step in this transformation, ignoring it if it\n fails. Returns the step result.\n */\n maybeStep(step) {\n let result = step.apply(this.doc);\n if (!result.failed)\n this.addStep(step, result.doc);\n return result;\n }\n /**\n True when the document has been changed (when there are any\n steps).\n */\n get docChanged() {\n return this.steps.length > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n this.docs.push(this.doc);\n this.steps.push(step);\n this.mapping.appendMap(step.getMap());\n this.doc = doc;\n }\n /**\n Replace the part of the document between `from` and `to` with the\n given `slice`.\n */\n replace(from, to = from, slice = Slice.empty) {\n let step = replaceStep(this.doc, from, to, slice);\n if (step)\n this.step(step);\n return this;\n }\n /**\n Replace the given range with the given content, which may be a\n fragment, node, or array of nodes.\n */\n replaceWith(from, to, content) {\n return this.replace(from, to, new Slice(Fragment.from(content), 0, 0));\n }\n /**\n Delete the content between the given positions.\n */\n delete(from, to) {\n return this.replace(from, to, Slice.empty);\n }\n /**\n Insert the given content at the given position.\n */\n insert(pos, content) {\n return this.replaceWith(pos, pos, content);\n }\n /**\n Replace a range of the document with a given slice, using\n `from`, `to`, and the slice's\n [`openStart`](https://prosemirror.net/docs/ref/#model.Slice.openStart) property as hints, rather\n than fixed start and end points. This method may grow the\n replaced area or close open nodes in the slice in order to get a\n fit that is more in line with WYSIWYG expectations, by dropping\n fully covered parent nodes of the replaced region when they are\n marked [non-defining as\n context](https://prosemirror.net/docs/ref/#model.NodeSpec.definingAsContext), or including an\n open parent node from the slice that _is_ marked as [defining\n its content](https://prosemirror.net/docs/ref/#model.NodeSpec.definingForContent).\n \n This is the method, for example, to handle paste. The similar\n [`replace`](https://prosemirror.net/docs/ref/#transform.Transform.replace) method is a more\n primitive tool which will _not_ move the start and end of its given\n range, and is useful in situations where you need more precise\n control over what happens.\n */\n replaceRange(from, to, slice) {\n replaceRange(this, from, to, slice);\n return this;\n }\n /**\n Replace the given range with a node, but use `from` and `to` as\n hints, rather than precise positions. When from and to are the same\n and are at the start or end of a parent node in which the given\n node doesn't fit, this method may _move_ them out towards a parent\n that does allow the given node to be placed. When the given range\n completely covers a parent node, this method may completely replace\n that parent node.\n */\n replaceRangeWith(from, to, node) {\n replaceRangeWith(this, from, to, node);\n return this;\n }\n /**\n Delete the given range, expanding it to cover fully covered\n parent nodes until a valid replace is found.\n */\n deleteRange(from, to) {\n deleteRange(this, from, to);\n return this;\n }\n /**\n Split the content in the given range off from its parent, if there\n is sibling content before or after it, and move it up the tree to\n the depth specified by `target`. You'll probably want to use\n [`liftTarget`](https://prosemirror.net/docs/ref/#transform.liftTarget) to compute `target`, to make\n sure the lift is valid.\n */\n lift(range, target) {\n lift(this, range, target);\n return this;\n }\n /**\n Join the blocks around the given position. If depth is 2, their\n last and first siblings are also joined, and so on.\n */\n join(pos, depth = 1) {\n join(this, pos, depth);\n return this;\n }\n /**\n Wrap the given [range](https://prosemirror.net/docs/ref/#model.NodeRange) in the given set of wrappers.\n The wrappers are assumed to be valid in this position, and should\n probably be computed with [`findWrapping`](https://prosemirror.net/docs/ref/#transform.findWrapping).\n */\n wrap(range, wrappers) {\n wrap(this, range, wrappers);\n return this;\n }\n /**\n Set the type of all textblocks (partly) between `from` and `to` to\n the given node type with the given attributes.\n */\n setBlockType(from, to = from, type, attrs = null) {\n setBlockType(this, from, to, type, attrs);\n return this;\n }\n /**\n Change the type, attributes, and/or marks of the node at `pos`.\n When `type` isn't given, the existing node type is preserved,\n */\n setNodeMarkup(pos, type, attrs = null, marks) {\n setNodeMarkup(this, pos, type, attrs, marks);\n return this;\n }\n /**\n Set a single attribute on a given node to a new value.\n */\n setNodeAttribute(pos, attr, value) {\n this.step(new AttrStep(pos, attr, value));\n return this;\n }\n /**\n Add a mark to the node at position `pos`.\n */\n addNodeMark(pos, mark) {\n this.step(new AddNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Remove a mark (or a mark of the given type) from the node at\n position `pos`.\n */\n removeNodeMark(pos, mark) {\n if (!(mark instanceof Mark)) {\n let node = this.doc.nodeAt(pos);\n if (!node)\n throw new RangeError(\"No node at position \" + pos);\n mark = mark.isInSet(node.marks);\n if (!mark)\n return this;\n }\n this.step(new RemoveNodeMarkStep(pos, mark));\n return this;\n }\n /**\n Split the node at the given position, and optionally, if `depth` is\n greater than one, any number of nodes above that. By default, the\n parts split off will inherit the node type of the original node.\n This can be changed by passing an array of types and attributes to\n use after the split.\n */\n split(pos, depth = 1, typesAfter) {\n split(this, pos, depth, typesAfter);\n return this;\n }\n /**\n Add the given mark to the inline content between `from` and `to`.\n */\n addMark(from, to, mark) {\n addMark(this, from, to, mark);\n return this;\n }\n /**\n Remove marks from inline nodes between `from` and `to`. When\n `mark` is a single mark, remove precisely that mark. When it is\n a mark type, remove all marks of that type. When it is null,\n remove all marks of any type.\n */\n removeMark(from, to, mark) {\n removeMark(this, from, to, mark);\n return this;\n }\n /**\n Removes all marks and nodes from the content of the node at\n `pos` that don't match the given new parent node type. Accepts\n an optional starting [content match](https://prosemirror.net/docs/ref/#model.ContentMatch) as\n third argument.\n */\n clearIncompatible(pos, parentType, match) {\n clearIncompatible(this, pos, parentType, match);\n return this;\n }\n}\n\nexport { AddMarkStep, AddNodeMarkStep, AttrStep, MapResult, Mapping, RemoveMarkStep, RemoveNodeMarkStep, ReplaceAroundStep, ReplaceStep, Step, StepMap, StepResult, Transform, TransformError, canJoin, canSplit, dropPoint, findWrapping, insertPoint, joinPoint, liftTarget, replaceStep };\n","import { Slice, Fragment, Mark, Node } from 'prosemirror-model';\nimport { ReplaceStep, ReplaceAroundStep, Transform } from 'prosemirror-transform';\n\nconst classesById = Object.create(null);\n/**\nSuperclass for editor selections. Every selection type should\nextend this. Should not be instantiated directly.\n*/\nclass Selection {\n /**\n Initialize a selection with the head and anchor and ranges. If no\n ranges are given, constructs a single range across `$anchor` and\n `$head`.\n */\n constructor(\n /**\n The resolved anchor of the selection (the side that stays in\n place when the selection is modified).\n */\n $anchor, \n /**\n The resolved head of the selection (the side that moves when\n the selection is modified).\n */\n $head, ranges) {\n this.$anchor = $anchor;\n this.$head = $head;\n this.ranges = ranges || [new SelectionRange($anchor.min($head), $anchor.max($head))];\n }\n /**\n The selection's anchor, as an unresolved position.\n */\n get anchor() { return this.$anchor.pos; }\n /**\n The selection's head.\n */\n get head() { return this.$head.pos; }\n /**\n The lower bound of the selection's main range.\n */\n get from() { return this.$from.pos; }\n /**\n The upper bound of the selection's main range.\n */\n get to() { return this.$to.pos; }\n /**\n The resolved lower bound of the selection's main range.\n */\n get $from() {\n return this.ranges[0].$from;\n }\n /**\n The resolved upper bound of the selection's main range.\n */\n get $to() {\n return this.ranges[0].$to;\n }\n /**\n Indicates whether the selection contains any content.\n */\n get empty() {\n let ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++)\n if (ranges[i].$from.pos != ranges[i].$to.pos)\n return false;\n return true;\n }\n /**\n Get the content of this selection as a slice.\n */\n content() {\n return this.$from.doc.slice(this.from, this.to, true);\n }\n /**\n Replace the selection with a slice or, if no slice is given,\n delete the selection. Will append to the given transaction.\n */\n replace(tr, content = Slice.empty) {\n // Put the new selection at the position after the inserted\n // content. When that ended in an inline node, search backwards,\n // to get the position after that node. If not, search forward.\n let lastNode = content.content.lastChild, lastParent = null;\n for (let i = 0; i < content.openEnd; i++) {\n lastParent = lastNode;\n lastNode = lastNode.lastChild;\n }\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replaceRange(mapping.map($from.pos), mapping.map($to.pos), i ? Slice.empty : content);\n if (i == 0)\n selectionToInsertionEnd(tr, mapFrom, (lastNode ? lastNode.isInline : lastParent && lastParent.isTextblock) ? -1 : 1);\n }\n }\n /**\n Replace the selection with the given node, appending the changes\n to the given transaction.\n */\n replaceWith(tr, node) {\n let mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n let from = mapping.map($from.pos), to = mapping.map($to.pos);\n if (i) {\n tr.deleteRange(from, to);\n }\n else {\n tr.replaceRangeWith(from, to, node);\n selectionToInsertionEnd(tr, mapFrom, node.isInline ? -1 : 1);\n }\n }\n }\n /**\n Find a valid cursor or leaf node selection starting at the given\n position and searching back if `dir` is negative, and forward if\n positive. When `textOnly` is true, only consider cursor\n selections. Will return null when no valid selection position is\n found.\n */\n static findFrom($pos, dir, textOnly = false) {\n let inner = $pos.parent.inlineContent ? new TextSelection($pos)\n : findSelectionIn($pos.node(0), $pos.parent, $pos.pos, $pos.index(), dir, textOnly);\n if (inner)\n return inner;\n for (let depth = $pos.depth - 1; depth >= 0; depth--) {\n let found = dir < 0\n ? findSelectionIn($pos.node(0), $pos.node(depth), $pos.before(depth + 1), $pos.index(depth), dir, textOnly)\n : findSelectionIn($pos.node(0), $pos.node(depth), $pos.after(depth + 1), $pos.index(depth) + 1, dir, textOnly);\n if (found)\n return found;\n }\n return null;\n }\n /**\n Find a valid cursor or leaf node selection near the given\n position. Searches forward first by default, but if `bias` is\n negative, it will search backwards first.\n */\n static near($pos, bias = 1) {\n return this.findFrom($pos, bias) || this.findFrom($pos, -bias) || new AllSelection($pos.node(0));\n }\n /**\n Find the cursor or leaf node selection closest to the start of\n the given document. Will return an\n [`AllSelection`](https://prosemirror.net/docs/ref/#state.AllSelection) if no valid position\n exists.\n */\n static atStart(doc) {\n return findSelectionIn(doc, doc, 0, 0, 1) || new AllSelection(doc);\n }\n /**\n Find the cursor or leaf node selection closest to the end of the\n given document.\n */\n static atEnd(doc) {\n return findSelectionIn(doc, doc, doc.content.size, doc.childCount, -1) || new AllSelection(doc);\n }\n /**\n Deserialize the JSON representation of a selection. Must be\n implemented for custom classes (as a static class method).\n */\n static fromJSON(doc, json) {\n if (!json || !json.type)\n throw new RangeError(\"Invalid input for Selection.fromJSON\");\n let cls = classesById[json.type];\n if (!cls)\n throw new RangeError(`No selection type ${json.type} defined`);\n return cls.fromJSON(doc, json);\n }\n /**\n To be able to deserialize selections from JSON, custom selection\n classes must register themselves with an ID string, so that they\n can be disambiguated. Try to pick something that's unlikely to\n clash with classes from other modules.\n */\n static jsonID(id, selectionClass) {\n if (id in classesById)\n throw new RangeError(\"Duplicate use of selection JSON ID \" + id);\n classesById[id] = selectionClass;\n selectionClass.prototype.jsonID = id;\n return selectionClass;\n }\n /**\n Get a [bookmark](https://prosemirror.net/docs/ref/#state.SelectionBookmark) for this selection,\n which is a value that can be mapped without having access to a\n current document, and later resolved to a real selection for a\n given document again. (This is used mostly by the history to\n track and restore old selections.) The default implementation of\n this method just converts the selection to a text selection and\n returns the bookmark for that.\n */\n getBookmark() {\n return TextSelection.between(this.$anchor, this.$head).getBookmark();\n }\n}\nSelection.prototype.visible = true;\n/**\nRepresents a selected range in a document.\n*/\nclass SelectionRange {\n /**\n Create a range.\n */\n constructor(\n /**\n The lower bound of the range.\n */\n $from, \n /**\n The upper bound of the range.\n */\n $to) {\n this.$from = $from;\n this.$to = $to;\n }\n}\nlet warnedAboutTextSelection = false;\nfunction checkTextSelection($pos) {\n if (!warnedAboutTextSelection && !$pos.parent.inlineContent) {\n warnedAboutTextSelection = true;\n console[\"warn\"](\"TextSelection endpoint not pointing into a node with inline content (\" + $pos.parent.type.name + \")\");\n }\n}\n/**\nA text selection represents a classical editor selection, with a\nhead (the moving side) and anchor (immobile side), both of which\npoint into textblock nodes. It can be empty (a regular cursor\nposition).\n*/\nclass TextSelection extends Selection {\n /**\n Construct a text selection between the given points.\n */\n constructor($anchor, $head = $anchor) {\n checkTextSelection($anchor);\n checkTextSelection($head);\n super($anchor, $head);\n }\n /**\n Returns a resolved position if this is a cursor selection (an\n empty text selection), and null otherwise.\n */\n get $cursor() { return this.$anchor.pos == this.$head.pos ? this.$head : null; }\n map(doc, mapping) {\n let $head = doc.resolve(mapping.map(this.head));\n if (!$head.parent.inlineContent)\n return Selection.near($head);\n let $anchor = doc.resolve(mapping.map(this.anchor));\n return new TextSelection($anchor.parent.inlineContent ? $anchor : $head, $head);\n }\n replace(tr, content = Slice.empty) {\n super.replace(tr, content);\n if (content == Slice.empty) {\n let marks = this.$from.marksAcross(this.$to);\n if (marks)\n tr.ensureMarks(marks);\n }\n }\n eq(other) {\n return other instanceof TextSelection && other.anchor == this.anchor && other.head == this.head;\n }\n getBookmark() {\n return new TextBookmark(this.anchor, this.head);\n }\n toJSON() {\n return { type: \"text\", anchor: this.anchor, head: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\" || typeof json.head != \"number\")\n throw new RangeError(\"Invalid input for TextSelection.fromJSON\");\n return new TextSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n /**\n Create a text selection from non-resolved positions.\n */\n static create(doc, anchor, head = anchor) {\n let $anchor = doc.resolve(anchor);\n return new this($anchor, head == anchor ? $anchor : doc.resolve(head));\n }\n /**\n Return a text selection that spans the given positions or, if\n they aren't text positions, find a text selection near them.\n `bias` determines whether the method searches forward (default)\n or backwards (negative number) first. Will fall back to calling\n [`Selection.near`](https://prosemirror.net/docs/ref/#state.Selection^near) when the document\n doesn't contain a valid text position.\n */\n static between($anchor, $head, bias) {\n let dPos = $anchor.pos - $head.pos;\n if (!bias || dPos)\n bias = dPos >= 0 ? 1 : -1;\n if (!$head.parent.inlineContent) {\n let found = Selection.findFrom($head, bias, true) || Selection.findFrom($head, -bias, true);\n if (found)\n $head = found.$head;\n else\n return Selection.near($head, bias);\n }\n if (!$anchor.parent.inlineContent) {\n if (dPos == 0) {\n $anchor = $head;\n }\n else {\n $anchor = (Selection.findFrom($anchor, -bias, true) || Selection.findFrom($anchor, bias, true)).$anchor;\n if (($anchor.pos < $head.pos) != (dPos < 0))\n $anchor = $head;\n }\n }\n return new TextSelection($anchor, $head);\n }\n}\nSelection.jsonID(\"text\", TextSelection);\nclass TextBookmark {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new TextBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n return TextSelection.between(doc.resolve(this.anchor), doc.resolve(this.head));\n }\n}\n/**\nA node selection is a selection that points at a single node. All\nnodes marked [selectable](https://prosemirror.net/docs/ref/#model.NodeSpec.selectable) can be the\ntarget of a node selection. In such a selection, `from` and `to`\npoint directly before and after the selected node, `anchor` equals\n`from`, and `head` equals `to`..\n*/\nclass NodeSelection extends Selection {\n /**\n Create a node selection. Does not verify the validity of its\n argument.\n */\n constructor($pos) {\n let node = $pos.nodeAfter;\n let $end = $pos.node(0).resolve($pos.pos + node.nodeSize);\n super($pos, $end);\n this.node = node;\n }\n map(doc, mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n let $pos = doc.resolve(pos);\n if (deleted)\n return Selection.near($pos);\n return new NodeSelection($pos);\n }\n content() {\n return new Slice(Fragment.from(this.node), 0, 0);\n }\n eq(other) {\n return other instanceof NodeSelection && other.anchor == this.anchor;\n }\n toJSON() {\n return { type: \"node\", anchor: this.anchor };\n }\n getBookmark() { return new NodeBookmark(this.anchor); }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.anchor != \"number\")\n throw new RangeError(\"Invalid input for NodeSelection.fromJSON\");\n return new NodeSelection(doc.resolve(json.anchor));\n }\n /**\n Create a node selection from non-resolved positions.\n */\n static create(doc, from) {\n return new NodeSelection(doc.resolve(from));\n }\n /**\n Determines whether the given node may be selected as a node\n selection.\n */\n static isSelectable(node) {\n return !node.isText && node.type.spec.selectable !== false;\n }\n}\nNodeSelection.prototype.visible = false;\nSelection.jsonID(\"node\", NodeSelection);\nclass NodeBookmark {\n constructor(anchor) {\n this.anchor = anchor;\n }\n map(mapping) {\n let { deleted, pos } = mapping.mapResult(this.anchor);\n return deleted ? new TextBookmark(pos, pos) : new NodeBookmark(pos);\n }\n resolve(doc) {\n let $pos = doc.resolve(this.anchor), node = $pos.nodeAfter;\n if (node && NodeSelection.isSelectable(node))\n return new NodeSelection($pos);\n return Selection.near($pos);\n }\n}\n/**\nA selection type that represents selecting the whole document\n(which can not necessarily be expressed with a text selection, when\nthere are for example leaf block nodes at the start or end of the\ndocument).\n*/\nclass AllSelection extends Selection {\n /**\n Create an all-selection over the given document.\n */\n constructor(doc) {\n super(doc.resolve(0), doc.resolve(doc.content.size));\n }\n replace(tr, content = Slice.empty) {\n if (content == Slice.empty) {\n tr.delete(0, tr.doc.content.size);\n let sel = Selection.atStart(tr.doc);\n if (!sel.eq(tr.selection))\n tr.setSelection(sel);\n }\n else {\n super.replace(tr, content);\n }\n }\n toJSON() { return { type: \"all\" }; }\n /**\n @internal\n */\n static fromJSON(doc) { return new AllSelection(doc); }\n map(doc) { return new AllSelection(doc); }\n eq(other) { return other instanceof AllSelection; }\n getBookmark() { return AllBookmark; }\n}\nSelection.jsonID(\"all\", AllSelection);\nconst AllBookmark = {\n map() { return this; },\n resolve(doc) { return new AllSelection(doc); }\n};\n// FIXME we'll need some awareness of text direction when scanning for selections\n// Try to find a selection inside the given node. `pos` points at the\n// position where the search starts. When `text` is true, only return\n// text selections.\nfunction findSelectionIn(doc, node, pos, index, dir, text = false) {\n if (node.inlineContent)\n return TextSelection.create(doc, pos);\n for (let i = index - (dir > 0 ? 0 : 1); dir > 0 ? i < node.childCount : i >= 0; i += dir) {\n let child = node.child(i);\n if (!child.isAtom) {\n let inner = findSelectionIn(doc, child, pos + dir, dir < 0 ? child.childCount : 0, dir, text);\n if (inner)\n return inner;\n }\n else if (!text && NodeSelection.isSelectable(child)) {\n return NodeSelection.create(doc, pos - (dir < 0 ? child.nodeSize : 0));\n }\n pos += child.nodeSize * dir;\n }\n return null;\n}\nfunction selectionToInsertionEnd(tr, startLen, bias) {\n let last = tr.steps.length - 1;\n if (last < startLen)\n return;\n let step = tr.steps[last];\n if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep))\n return;\n let map = tr.mapping.maps[last], end;\n map.forEach((_from, _to, _newFrom, newTo) => { if (end == null)\n end = newTo; });\n tr.setSelection(Selection.near(tr.doc.resolve(end), bias));\n}\n\nconst UPDATED_SEL = 1, UPDATED_MARKS = 2, UPDATED_SCROLL = 4;\n/**\nAn editor state transaction, which can be applied to a state to\ncreate an updated state. Use\n[`EditorState.tr`](https://prosemirror.net/docs/ref/#state.EditorState.tr) to create an instance.\n\nTransactions track changes to the document (they are a subclass of\n[`Transform`](https://prosemirror.net/docs/ref/#transform.Transform)), but also other state changes,\nlike selection updates and adjustments of the set of [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks). In addition, you can store\nmetadata properties in a transaction, which are extra pieces of\ninformation that client code or plugins can use to describe what a\ntransaction represents, so that they can update their [own\nstate](https://prosemirror.net/docs/ref/#state.StateField) accordingly.\n\nThe [editor view](https://prosemirror.net/docs/ref/#view.EditorView) uses a few metadata\nproperties: it will attach a property `\"pointer\"` with the value\n`true` to selection transactions directly caused by mouse or touch\ninput, a `\"composition\"` property holding an ID identifying the\ncomposition that caused it to transactions caused by composed DOM\ninput, and a `\"uiEvent\"` property of that may be `\"paste\"`,\n`\"cut\"`, or `\"drop\"`.\n*/\nclass Transaction extends Transform {\n /**\n @internal\n */\n constructor(state) {\n super(state.doc);\n // The step count for which the current selection is valid.\n this.curSelectionFor = 0;\n // Bitfield to track which aspects of the state were updated by\n // this transaction.\n this.updated = 0;\n // Object used to store metadata properties for the transaction.\n this.meta = Object.create(null);\n this.time = Date.now();\n this.curSelection = state.selection;\n this.storedMarks = state.storedMarks;\n }\n /**\n The transaction's current selection. This defaults to the editor\n selection [mapped](https://prosemirror.net/docs/ref/#state.Selection.map) through the steps in the\n transaction, but can be overwritten with\n [`setSelection`](https://prosemirror.net/docs/ref/#state.Transaction.setSelection).\n */\n get selection() {\n if (this.curSelectionFor < this.steps.length) {\n this.curSelection = this.curSelection.map(this.doc, this.mapping.slice(this.curSelectionFor));\n this.curSelectionFor = this.steps.length;\n }\n return this.curSelection;\n }\n /**\n Update the transaction's current selection. Will determine the\n selection that the editor gets when the transaction is applied.\n */\n setSelection(selection) {\n if (selection.$from.doc != this.doc)\n throw new RangeError(\"Selection passed to setSelection must point at the current document\");\n this.curSelection = selection;\n this.curSelectionFor = this.steps.length;\n this.updated = (this.updated | UPDATED_SEL) & ~UPDATED_MARKS;\n this.storedMarks = null;\n return this;\n }\n /**\n Whether the selection was explicitly updated by this transaction.\n */\n get selectionSet() {\n return (this.updated & UPDATED_SEL) > 0;\n }\n /**\n Set the current stored marks.\n */\n setStoredMarks(marks) {\n this.storedMarks = marks;\n this.updated |= UPDATED_MARKS;\n return this;\n }\n /**\n Make sure the current stored marks or, if that is null, the marks\n at the selection, match the given set of marks. Does nothing if\n this is already the case.\n */\n ensureMarks(marks) {\n if (!Mark.sameSet(this.storedMarks || this.selection.$from.marks(), marks))\n this.setStoredMarks(marks);\n return this;\n }\n /**\n Add a mark to the set of stored marks.\n */\n addStoredMark(mark) {\n return this.ensureMarks(mark.addToSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Remove a mark or mark type from the set of stored marks.\n */\n removeStoredMark(mark) {\n return this.ensureMarks(mark.removeFromSet(this.storedMarks || this.selection.$head.marks()));\n }\n /**\n Whether the stored marks were explicitly set for this transaction.\n */\n get storedMarksSet() {\n return (this.updated & UPDATED_MARKS) > 0;\n }\n /**\n @internal\n */\n addStep(step, doc) {\n super.addStep(step, doc);\n this.updated = this.updated & ~UPDATED_MARKS;\n this.storedMarks = null;\n }\n /**\n Update the timestamp for the transaction.\n */\n setTime(time) {\n this.time = time;\n return this;\n }\n /**\n Replace the current selection with the given slice.\n */\n replaceSelection(slice) {\n this.selection.replace(this, slice);\n return this;\n }\n /**\n Replace the selection with the given node. When `inheritMarks` is\n true and the content is inline, it inherits the marks from the\n place where it is inserted.\n */\n replaceSelectionWith(node, inheritMarks = true) {\n let selection = this.selection;\n if (inheritMarks)\n node = node.mark(this.storedMarks || (selection.empty ? selection.$from.marks() : (selection.$from.marksAcross(selection.$to) || Mark.none)));\n selection.replaceWith(this, node);\n return this;\n }\n /**\n Delete the selection.\n */\n deleteSelection() {\n this.selection.replace(this);\n return this;\n }\n /**\n Replace the given range, or the selection if no range is given,\n with a text node containing the given string.\n */\n insertText(text, from, to) {\n let schema = this.doc.type.schema;\n if (from == null) {\n if (!text)\n return this.deleteSelection();\n return this.replaceSelectionWith(schema.text(text), true);\n }\n else {\n if (to == null)\n to = from;\n to = to == null ? from : to;\n if (!text)\n return this.deleteRange(from, to);\n let marks = this.storedMarks;\n if (!marks) {\n let $from = this.doc.resolve(from);\n marks = to == from ? $from.marks() : $from.marksAcross(this.doc.resolve(to));\n }\n this.replaceRangeWith(from, to, schema.text(text, marks));\n if (!this.selection.empty)\n this.setSelection(Selection.near(this.selection.$to));\n return this;\n }\n }\n /**\n Store a metadata property in this transaction, keyed either by\n name or by plugin.\n */\n setMeta(key, value) {\n this.meta[typeof key == \"string\" ? key : key.key] = value;\n return this;\n }\n /**\n Retrieve a metadata property for a given name or plugin.\n */\n getMeta(key) {\n return this.meta[typeof key == \"string\" ? key : key.key];\n }\n /**\n Returns true if this transaction doesn't contain any metadata,\n and can thus safely be extended.\n */\n get isGeneric() {\n for (let _ in this.meta)\n return false;\n return true;\n }\n /**\n Indicate that the editor should scroll the selection into view\n when updated to the state produced by this transaction.\n */\n scrollIntoView() {\n this.updated |= UPDATED_SCROLL;\n return this;\n }\n /**\n True when this transaction has had `scrollIntoView` called on it.\n */\n get scrolledIntoView() {\n return (this.updated & UPDATED_SCROLL) > 0;\n }\n}\n\nfunction bind(f, self) {\n return !self || !f ? f : f.bind(self);\n}\nclass FieldDesc {\n constructor(name, desc, self) {\n this.name = name;\n this.init = bind(desc.init, self);\n this.apply = bind(desc.apply, self);\n }\n}\nconst baseFields = [\n new FieldDesc(\"doc\", {\n init(config) { return config.doc || config.schema.topNodeType.createAndFill(); },\n apply(tr) { return tr.doc; }\n }),\n new FieldDesc(\"selection\", {\n init(config, instance) { return config.selection || Selection.atStart(instance.doc); },\n apply(tr) { return tr.selection; }\n }),\n new FieldDesc(\"storedMarks\", {\n init(config) { return config.storedMarks || null; },\n apply(tr, _marks, _old, state) { return state.selection.$cursor ? tr.storedMarks : null; }\n }),\n new FieldDesc(\"scrollToSelection\", {\n init() { return 0; },\n apply(tr, prev) { return tr.scrolledIntoView ? prev + 1 : prev; }\n })\n];\n// Object wrapping the part of a state object that stays the same\n// across transactions. Stored in the state's `config` property.\nclass Configuration {\n constructor(schema, plugins) {\n this.schema = schema;\n this.plugins = [];\n this.pluginsByKey = Object.create(null);\n this.fields = baseFields.slice();\n if (plugins)\n plugins.forEach(plugin => {\n if (this.pluginsByKey[plugin.key])\n throw new RangeError(\"Adding different instances of a keyed plugin (\" + plugin.key + \")\");\n this.plugins.push(plugin);\n this.pluginsByKey[plugin.key] = plugin;\n if (plugin.spec.state)\n this.fields.push(new FieldDesc(plugin.key, plugin.spec.state, plugin));\n });\n }\n}\n/**\nThe state of a ProseMirror editor is represented by an object of\nthis type. A state is a persistent data structure—it isn't\nupdated, but rather a new state value is computed from an old one\nusing the [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) method.\n\nA state holds a number of built-in fields, and plugins can\n[define](https://prosemirror.net/docs/ref/#state.PluginSpec.state) additional fields.\n*/\nclass EditorState {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n config) {\n this.config = config;\n }\n /**\n The schema of the state's document.\n */\n get schema() {\n return this.config.schema;\n }\n /**\n The plugins that are active in this state.\n */\n get plugins() {\n return this.config.plugins;\n }\n /**\n Apply the given transaction to produce a new state.\n */\n apply(tr) {\n return this.applyTransaction(tr).state;\n }\n /**\n @internal\n */\n filterTransaction(tr, ignore = -1) {\n for (let i = 0; i < this.config.plugins.length; i++)\n if (i != ignore) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.filterTransaction && !plugin.spec.filterTransaction.call(plugin, tr, this))\n return false;\n }\n return true;\n }\n /**\n Verbose variant of [`apply`](https://prosemirror.net/docs/ref/#state.EditorState.apply) that\n returns the precise transactions that were applied (which might\n be influenced by the [transaction\n hooks](https://prosemirror.net/docs/ref/#state.PluginSpec.filterTransaction) of\n plugins) along with the new state.\n */\n applyTransaction(rootTr) {\n if (!this.filterTransaction(rootTr))\n return { state: this, transactions: [] };\n let trs = [rootTr], newState = this.applyInner(rootTr), seen = null;\n // This loop repeatedly gives plugins a chance to respond to\n // transactions as new transactions are added, making sure to only\n // pass the transactions the plugin did not see before.\n for (;;) {\n let haveNew = false;\n for (let i = 0; i < this.config.plugins.length; i++) {\n let plugin = this.config.plugins[i];\n if (plugin.spec.appendTransaction) {\n let n = seen ? seen[i].n : 0, oldState = seen ? seen[i].state : this;\n let tr = n < trs.length &&\n plugin.spec.appendTransaction.call(plugin, n ? trs.slice(n) : trs, oldState, newState);\n if (tr && newState.filterTransaction(tr, i)) {\n tr.setMeta(\"appendedTransaction\", rootTr);\n if (!seen) {\n seen = [];\n for (let j = 0; j < this.config.plugins.length; j++)\n seen.push(j < i ? { state: newState, n: trs.length } : { state: this, n: 0 });\n }\n trs.push(tr);\n newState = newState.applyInner(tr);\n haveNew = true;\n }\n if (seen)\n seen[i] = { state: newState, n: trs.length };\n }\n }\n if (!haveNew)\n return { state: newState, transactions: trs };\n }\n }\n /**\n @internal\n */\n applyInner(tr) {\n if (!tr.before.eq(this.doc))\n throw new RangeError(\"Applying a mismatched transaction\");\n let newInstance = new EditorState(this.config), fields = this.config.fields;\n for (let i = 0; i < fields.length; i++) {\n let field = fields[i];\n newInstance[field.name] = field.apply(tr, this[field.name], this, newInstance);\n }\n return newInstance;\n }\n /**\n Start a [transaction](https://prosemirror.net/docs/ref/#state.Transaction) from this state.\n */\n get tr() { return new Transaction(this); }\n /**\n Create a new state.\n */\n static create(config) {\n let $config = new Configuration(config.doc ? config.doc.type.schema : config.schema, config.plugins);\n let instance = new EditorState($config);\n for (let i = 0; i < $config.fields.length; i++)\n instance[$config.fields[i].name] = $config.fields[i].init(config, instance);\n return instance;\n }\n /**\n Create a new state based on this one, but with an adjusted set\n of active plugins. State fields that exist in both sets of\n plugins are kept unchanged. Those that no longer exist are\n dropped, and those that are new are initialized using their\n [`init`](https://prosemirror.net/docs/ref/#state.StateField.init) method, passing in the new\n configuration object..\n */\n reconfigure(config) {\n let $config = new Configuration(this.schema, config.plugins);\n let fields = $config.fields, instance = new EditorState($config);\n for (let i = 0; i < fields.length; i++) {\n let name = fields[i].name;\n instance[name] = this.hasOwnProperty(name) ? this[name] : fields[i].init(config, instance);\n }\n return instance;\n }\n /**\n Serialize this state to JSON. If you want to serialize the state\n of plugins, pass an object mapping property names to use in the\n resulting JSON object to plugin objects. The argument may also be\n a string or number, in which case it is ignored, to support the\n way `JSON.stringify` calls `toString` methods.\n */\n toJSON(pluginFields) {\n let result = { doc: this.doc.toJSON(), selection: this.selection.toJSON() };\n if (this.storedMarks)\n result.storedMarks = this.storedMarks.map(m => m.toJSON());\n if (pluginFields && typeof pluginFields == 'object')\n for (let prop in pluginFields) {\n if (prop == \"doc\" || prop == \"selection\")\n throw new RangeError(\"The JSON fields `doc` and `selection` are reserved\");\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (state && state.toJSON)\n result[prop] = state.toJSON.call(plugin, this[plugin.key]);\n }\n return result;\n }\n /**\n Deserialize a JSON representation of a state. `config` should\n have at least a `schema` field, and should contain array of\n plugins to initialize the state with. `pluginFields` can be used\n to deserialize the state of plugins, by associating plugin\n instances with the property names they use in the JSON object.\n */\n static fromJSON(config, json, pluginFields) {\n if (!json)\n throw new RangeError(\"Invalid input for EditorState.fromJSON\");\n if (!config.schema)\n throw new RangeError(\"Required config field 'schema' missing\");\n let $config = new Configuration(config.schema, config.plugins);\n let instance = new EditorState($config);\n $config.fields.forEach(field => {\n if (field.name == \"doc\") {\n instance.doc = Node.fromJSON(config.schema, json.doc);\n }\n else if (field.name == \"selection\") {\n instance.selection = Selection.fromJSON(instance.doc, json.selection);\n }\n else if (field.name == \"storedMarks\") {\n if (json.storedMarks)\n instance.storedMarks = json.storedMarks.map(config.schema.markFromJSON);\n }\n else {\n if (pluginFields)\n for (let prop in pluginFields) {\n let plugin = pluginFields[prop], state = plugin.spec.state;\n if (plugin.key == field.name && state && state.fromJSON &&\n Object.prototype.hasOwnProperty.call(json, prop)) {\n instance[field.name] = state.fromJSON.call(plugin, config, json[prop], instance);\n return;\n }\n }\n instance[field.name] = field.init(config, instance);\n }\n });\n return instance;\n }\n}\n\nfunction bindProps(obj, self, target) {\n for (let prop in obj) {\n let val = obj[prop];\n if (val instanceof Function)\n val = val.bind(self);\n else if (prop == \"handleDOMEvents\")\n val = bindProps(val, self, {});\n target[prop] = val;\n }\n return target;\n}\n/**\nPlugins bundle functionality that can be added to an editor.\nThey are part of the [editor state](https://prosemirror.net/docs/ref/#state.EditorState) and\nmay influence that state and the view that contains it.\n*/\nclass Plugin {\n /**\n Create a plugin.\n */\n constructor(\n /**\n The plugin's [spec object](https://prosemirror.net/docs/ref/#state.PluginSpec).\n */\n spec) {\n this.spec = spec;\n /**\n The [props](https://prosemirror.net/docs/ref/#view.EditorProps) exported by this plugin.\n */\n this.props = {};\n if (spec.props)\n bindProps(spec.props, this, this.props);\n this.key = spec.key ? spec.key.key : createKey(\"plugin\");\n }\n /**\n Extract the plugin's state field from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\nconst keys = Object.create(null);\nfunction createKey(name) {\n if (name in keys)\n return name + \"$\" + ++keys[name];\n keys[name] = 0;\n return name + \"$\";\n}\n/**\nA key is used to [tag](https://prosemirror.net/docs/ref/#state.PluginSpec.key) plugins in a way\nthat makes it possible to find them, given an editor state.\nAssigning a key does mean only one plugin of that type can be\nactive in a state.\n*/\nclass PluginKey {\n /**\n Create a plugin key.\n */\n constructor(name = \"key\") { this.key = createKey(name); }\n /**\n Get the active plugin with this key, if any, from an editor\n state.\n */\n get(state) { return state.config.pluginsByKey[this.key]; }\n /**\n Get the plugin's state from an editor state.\n */\n getState(state) { return state[this.key]; }\n}\n\nexport { AllSelection, EditorState, NodeSelection, Plugin, PluginKey, Selection, SelectionRange, TextSelection, Transaction };\n","export var rowTypeAttr = 'k-parent-node';\nexport var colgroupAttr = 'k-colgroup-data';\nexport var resizableAttr = 'k-resizable-node';\nexport var resizableWrap = 'k-editor-resize-wrap-element';\nexport var resizeHandle = 'k-editor-resize-handle';\nexport var dataResizeDirTable = 'data-dir-table-resize';\nexport var dataResizeDirImage = 'data-dir-image-resize';\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { __assign } from \"tslib\";\nimport { Node, Fragment } from 'prosemirror-model';\nimport { TextSelection, AllSelection, NodeSelection } from 'prosemirror-state';\nimport { parseContent } from './source';\nexport var changeStylesString = function (styleText, newStyle) {\n var styleToChange = newStyle.style;\n var regExp = newStyle.value;\n var newValue = newStyle.newValue;\n if (!styleText) {\n return { changed: false, style: null };\n }\n var styles = styleText.split(/\\s*;\\s*/).filter(function (s) { return Boolean(s); });\n var filtered = styles.filter(function (s) {\n var nameValue = s.split(/\\s*:\\s*/);\n return !(nameValue[0].toLowerCase() === styleToChange && regExp.test(nameValue[1]));\n });\n if (newValue) {\n filtered.push(styleToChange + \": \" + newValue);\n }\n return {\n style: filtered.join('; ') + (filtered.length ? ';' : ''),\n changed: Boolean(newValue) || filtered.length !== styles.length\n };\n};\n/**\n * Determines if a given node type can be inserted at the current cursor position.\n */\nexport var canInsert = function (state, nodeType) {\n var $from = state.selection.$from;\n for (var d = $from.depth; d >= 0; d--) {\n var index = $from.index(d);\n if ($from.node(d).canReplaceWith(index, index, nodeType)) {\n return true;\n }\n }\n return false;\n};\nvar getTypeName = function (n) {\n return n instanceof Node ? n.type.name : n.name;\n};\nvar findNthParentNode = function (predicate, depth) {\n if (depth === void 0) { depth = 1; }\n return function (selection) {\n var $from = selection.$from;\n for (var i = $from.depth; i > 0; i--) {\n var node = $from.node(i);\n if (predicate(node)) {\n depth = depth - 1;\n if (depth === 0) {\n return { depth: i, node: node };\n }\n }\n }\n };\n};\nexport var findNthParentNodeOfType = function (nodeType, depth) {\n if (depth === void 0) { depth = 1; }\n return function (selection) {\n return findNthParentNode(function (node) { return getTypeName(node) === getTypeName(nodeType); }, depth)(selection);\n };\n};\nvar filterEmptyAttrs = function (attrs) {\n var result = {};\n for (var attr in attrs) {\n if (attr && (attrs[attr] || attrs[attr] === 0)) {\n result[attr] = attrs[attr];\n }\n }\n return result;\n};\n/**\n * Inserts the given node at the place of current selection.\n */\nexport var insertNode = function (node, scrollIntoView) { return function (state, dispatch) {\n var selection = state.selection, tr = state.tr;\n if (selection instanceof NodeSelection\n && selection.node.type.name === node.type.name\n && node.isLeaf && !node.isText && node.nodeSize === 1) {\n tr.setNodeMarkup(selection.from, null, __assign(__assign({}, filterEmptyAttrs(selection.node.attrs)), filterEmptyAttrs(node.attrs)));\n tr.setSelection(NodeSelection.create(tr.doc, selection.from));\n }\n else {\n tr.replaceSelectionWith(node);\n }\n if (scrollIntoView) {\n tr.scrollIntoView();\n }\n dispatch(tr);\n}; };\nexport var hasSameMarkup = function (dom1, dom2, schema, parseOptions) {\n var fragment1 = Fragment.from(parseContent(dom1, schema, parseOptions));\n var fragment2 = Fragment.from(parseContent(dom2, schema, parseOptions));\n return fragment1.eq(fragment2);\n};\nexport var getSelectionText = function (state) {\n var sel = state.selection;\n if (sel instanceof TextSelection || sel instanceof AllSelection) {\n var fragment = sel.content().content;\n return fragment.textBetween(0, fragment.size);\n }\n return '';\n};\nexport var getNodeFromSelection = function (state) {\n if (state.selection instanceof NodeSelection) {\n return state.selection.node;\n }\n};\n/**\n * Returns the text from the selection if only text is selected on a single line.\n * If selection contains leaf nodes (br, image) between text elements or\n * text from multiple block nodes, the function will return empty string.\n *\n * Useful for values of the inputs of Link and Find&Replace dialogs where the inputs value has been retrieved from the selection and\n * should be single line text only.\n */\nexport var selectedLineTextOnly = function (state) {\n var result = '', hasLeafs = false;\n var selection = state.selection, doc = state.doc;\n var $from = selection.$from, $to = selection.$to, from = selection.from, to = selection.to;\n if ($from.sameParent($to)) {\n doc.nodesBetween(from, to, function (node) {\n hasLeafs = hasLeafs || (node.isLeaf && !node.isText);\n });\n if (!hasLeafs) {\n result = getSelectionText(state);\n }\n }\n return result;\n};\n/**\n * Used by ViewHtml/ViewSource dialogs for making the HTML more readable.\n */\nexport var indentHtml = function (content) {\n return content.replace(/<\\/(p|li|ul|ol|h[1-6]|table|tr|td|th)>/ig, '\\n')\n .replace(/<(ul|ol)([^>]*)>
  • \\n/ig, '
    \\n')\n .replace(/\\n$/, '');\n};\nexport var shallowEqual = function (object1, object2) {\n var keys1 = Object.keys(object1);\n var keys2 = Object.keys(object2);\n return keys1.length === keys2.length &&\n keys1.every(function (k) { return object1[k] === object2[k]; });\n};\nvar applyToWordDefault = { before: /[^ !,?.\\[\\]{}()]+$/i, after: /^[^ !,?.\\[\\]{}()]+/i };\n/**\n * if options.applyToWord is set, expands the selection to the word where the cursor is and\n * returns modified state and dispatch.\n */\nexport var expandSelection = function (state, dispatch, options) {\n if (!options.applyToWord || !state.selection.empty) {\n return { state: state, dispatch: dispatch };\n }\n var applyToWordOptions = options.applyToWord === true ? applyToWordDefault : options.applyToWord;\n var initialPosition = null;\n var tr = state.tr;\n var selection = state.selection;\n var before = selection.$head.nodeBefore;\n var after = selection.$head.nodeAfter;\n if (before && before.type.name === 'text' && before.text && after && after.type.name === 'text' && after.text) {\n var children_1 = [];\n selection.$head.parent.descendants(function (node, pos) {\n children_1.push({ node: node, pos: pos });\n return false;\n });\n var cursor_1 = selection.$head.parentOffset;\n var nodeIndex = children_1.findIndex(function (_a) {\n var node = _a.node, pos = _a.pos;\n return pos <= cursor_1 && pos + node.nodeSize >= cursor_1;\n });\n var text = children_1[nodeIndex].node.text;\n var skip = false;\n for (var i = nodeIndex - 1; i >= 0; i--) {\n var element = children_1[i];\n if (!skip && element && element.node.type.name === 'text') {\n text = element.node.text + text;\n }\n else {\n skip = true;\n cursor_1 -= element.node.nodeSize;\n }\n }\n for (var i = nodeIndex + 1; i < children_1.length; i++) {\n var element = children_1[i];\n if (element && element.node.type.name === 'text') {\n text = text + element.node.text;\n }\n else {\n break;\n }\n }\n var textBefore = text.substring(0, cursor_1);\n var textAfter = text.substring(cursor_1);\n var matchBefore = applyToWordOptions.before.exec(textBefore);\n var matchAfter = applyToWordOptions.after.exec(textAfter);\n if (matchBefore && matchAfter) {\n var extendLeft = matchBefore[0].length;\n var extendRight = matchAfter[0].length;\n var pos = initialPosition = selection.from;\n tr.setSelection(TextSelection.create(state.doc, pos - extendLeft, pos + extendRight));\n var cmdState = {\n tr: tr,\n selection: tr.selection,\n doc: tr.doc,\n storedMarks: null,\n schema: tr.doc.type.schema\n };\n var cmdDispatch = function (tran) {\n tran.setSelection(TextSelection.create(tran.doc, initialPosition));\n dispatch(tran);\n };\n return { state: cmdState, dispatch: cmdDispatch };\n }\n }\n return { state: state, dispatch: dispatch };\n};\n/**\n * if options.applyToWord is set, expands the selection to the word where the cursor is and\n * use the modified state for the passed command.\n * Designed to work with toggleInlineFormat, applyInlineStyle and applyLink functions.\n *\n * Example:\n * const applyToWord: boolean|{before: RegExp, after: RegExp} = true;\n * // or applyToWord = { before: /[^ !,?.\\[\\]{}()]+$/i, after: /^[^ !,?.\\[\\]{}()]+/i }};\n *\n * const command = expandToWordWrap(toggleInlineFormat, {...bold, applyToWord );\n * command(view.state, view.dispatch);\n */\nexport var expandToWordWrap = function (command, options) {\n return function (state, dispatch, _view) {\n var _a = expandSelection(state, dispatch, options), cmdState = _a.state, cmdDispatch = _a.dispatch;\n return command(options)(cmdState, cmdDispatch);\n };\n};\nexport var parseStyle = function (styleText) {\n var styles = (styleText || '').split(/\\s*;\\s*/).filter(Boolean).map(function (s) {\n var _a;\n var nameValue = s.split(/\\s*:\\s*/);\n return _a = {}, _a[nameValue[0]] = nameValue[1], _a;\n }).reduce(function (acc, val) { return (__assign(__assign({}, acc), val)); }, {});\n return styles;\n};\nvar setStyleAttr = function (element, styleString) {\n var styles = parseStyle(styleString);\n for (var style in styles) {\n if (style && typeof element.style[style] !== 'undefined') {\n element.style[style] = styles[style];\n }\n }\n};\nexport var setAttribute = function (node, attrName, value) {\n var current = node.getAttribute(attrName);\n if (value !== undefined && value !== current) {\n if (attrName === 'style') {\n node.removeAttribute(attrName);\n setStyleAttr(node, value);\n }\n else {\n node.setAttribute(attrName, value);\n }\n }\n else if (value === undefined) {\n node.removeAttribute(attrName);\n }\n};\n","import { setAttribute } from \"./utils\";\nvar DOMSerializer = /** @class */ (function () {\n /// Create a serializer. `nodes` should map node names to functions\n /// that take a node and return a description of the corresponding\n /// DOM. `marks` does the same for mark names, but also gets an\n /// argument that tells it whether the mark's content is block or\n /// inline content (for typical use, it'll always be inline). A mark\n /// serializer may be `null` to indicate that marks of that type\n /// should not be serialized.\n function DOMSerializer(\n /// The node serialization functions.\n nodes, \n /// The mark serialization functions.\n marks) {\n this.nodes = nodes;\n this.marks = marks;\n }\n /// Render an [output spec](#model.DOMOutputSpec) to a DOM node. If\n /// the spec has a hole (zero) in it, `contentDOM` will point at the\n /// node with the hole.\n DOMSerializer.renderSpec = function (docum, structure, xmlNS) {\n if (xmlNS === void 0) { xmlNS = null; }\n if (typeof structure === \"string\") {\n return { dom: docum.createTextNode(structure) };\n }\n if (structure.nodeType != null) {\n return { dom: structure };\n }\n if (structure.dom && structure.dom.nodeType != null) {\n return structure;\n }\n var tagName = structure[0], space = tagName.indexOf(\" \");\n if (space > 0) {\n xmlNS = tagName.slice(0, space);\n tagName = tagName.slice(space + 1);\n }\n var contentDOM;\n var dom = (xmlNS ? docum.createElementNS(xmlNS, tagName) : docum.createElement(tagName));\n var attrs = structure[1], start = 1;\n if (attrs && typeof attrs === \"object\" && attrs.nodeType == null && !Array.isArray(attrs)) {\n start = 2;\n for (var name_1 in attrs) {\n if (attrs[name_1] != null) {\n space = name_1.indexOf(\" \");\n if (space > 0) {\n dom.setAttributeNS(name_1.slice(0, space), name_1.slice(space + 1), attrs[name_1]);\n }\n else {\n setAttribute(dom, name_1, attrs[name_1]);\n }\n }\n }\n }\n for (var i = start; i < structure.length; i++) {\n var child = structure[i];\n if (child === 0) {\n if (i < structure.length - 1 || i > start) {\n throw new RangeError(\"Content hole must be the only child of its parent node\");\n }\n return { dom: dom, contentDOM: dom };\n }\n else {\n var _a = DOMSerializer.renderSpec(docum, child, xmlNS), inner = _a.dom, innerContent = _a.contentDOM;\n dom.appendChild(inner);\n if (innerContent) {\n if (contentDOM) {\n throw new RangeError(\"Multiple content holes\");\n }\n contentDOM = innerContent;\n }\n }\n }\n return { dom: dom, contentDOM: contentDOM };\n };\n /// Build a serializer using the [`toDOM`](#model.NodeSpec.toDOM)\n /// properties in a schema's node and mark specs.\n DOMSerializer.fromSchema = function (schema) {\n return schema.cached.domSerializer ||\n (schema.cached.domSerializer = new DOMSerializer(this.nodesFromSchema(schema), this.marksFromSchema(schema)));\n };\n /// Gather the serializers in a schema's node specs into an object.\n /// This can be useful as a base to build a custom serializer from.\n DOMSerializer.nodesFromSchema = function (schema) {\n var result = gatherToDOM(schema.nodes);\n if (!result.text) {\n result.text = function (node) { return node.text; };\n }\n return result;\n };\n /// Gather the serializers in a schema's mark specs into an object.\n DOMSerializer.marksFromSchema = function (schema) {\n return gatherToDOM(schema.marks);\n };\n /// Serialize the content of this fragment to a DOM fragment. When\n /// not in the browser, the `document` option, containing a DOM\n /// document, should be passed so that the serializer can create\n /// nodes.\n DOMSerializer.prototype.serializeFragment = function (fragment, options, target) {\n var _this = this;\n if (options === void 0) { options = {}; }\n if (!target) {\n target = doc(options).createDocumentFragment();\n }\n var top = target, active = [];\n fragment.forEach(function (node) {\n if (active.length || node.marks.length) {\n var keep = 0, rendered = 0;\n while (keep < active.length && rendered < node.marks.length) {\n var next = node.marks[rendered];\n if (!_this.marks[next.type.name]) {\n rendered++;\n continue;\n }\n if (!next.eq(active[keep][0]) || next.type.spec.spanning === false) {\n break;\n }\n keep++;\n rendered++;\n }\n while (keep < active.length) {\n top = active.pop()[1];\n }\n while (rendered < node.marks.length) {\n var add = node.marks[rendered++];\n var markDOM = _this.serializeMark(add, node.isInline, options);\n if (markDOM) {\n active.push([add, top]);\n top.appendChild(markDOM.dom);\n top = markDOM.contentDOM || markDOM.dom;\n }\n }\n }\n top.appendChild(_this.serializeNodeInner(node, options));\n });\n return target;\n };\n /// Serialize this node to a DOM node. This can be useful when you\n /// need to serialize a part of a document, as opposed to the whole\n /// document. To serialize a whole document, use\n /// [`serializeFragment`](#model.DOMSerializer.serializeFragment) on\n /// its [content](#model.Node.content).\n DOMSerializer.prototype.serializeNode = function (node, options) {\n if (options === void 0) { options = {}; }\n var dom = this.serializeNodeInner(node, options);\n for (var i = node.marks.length - 1; i >= 0; i--) {\n var wrap = this.serializeMark(node.marks[i], node.isInline, options);\n if (wrap) {\n (wrap.contentDOM || wrap.dom).appendChild(dom);\n dom = wrap.dom;\n }\n }\n return dom;\n };\n /// @internal\n DOMSerializer.prototype.serializeMark = function (mark, inline, options) {\n if (options === void 0) { options = {}; }\n var toDOM = this.marks[mark.type.name];\n return toDOM && DOMSerializer.renderSpec(doc(options), toDOM(mark, inline));\n };\n /// @internal\n DOMSerializer.prototype.serializeNodeInner = function (node, options) {\n var _a = DOMSerializer.renderSpec(doc(options), this.nodes[node.type.name](node)), dom = _a.dom, contentDOM = _a.contentDOM;\n if (contentDOM) {\n if (node.isLeaf) {\n throw new RangeError(\"Content hole not allowed in a leaf node spec\");\n }\n this.serializeFragment(node.content, options, contentDOM);\n }\n return dom;\n };\n return DOMSerializer;\n}());\nexport { DOMSerializer };\nfunction gatherToDOM(obj) {\n var result = {};\n for (var name_2 in obj) {\n if (obj[name_2]) {\n var toDOM = obj[name_2].spec.toDOM;\n if (toDOM) {\n result[name_2] = toDOM;\n }\n }\n }\n return result;\n}\nfunction doc(options) {\n return options.document || window.document;\n}\n","import { DOMParser as ProseMirrorDOMParser } from 'prosemirror-model';\nimport { AllSelection } from 'prosemirror-state';\nimport { rowTypeAttr, colgroupAttr } from './config/constants';\nimport { DOMSerializer } from './DOMSerializer';\nvar blockWrappers = [\n 'div', 'ol', 'ul', 'li', 'table', 'tbody', 'thead', 'tfoot', 'caption', 'td', 'th', 'p',\n 'tr', 'col', 'colgroup', 'article', 'main', 'nav', 'header', 'footer', 'aside', 'section'\n];\nvar removeRowType = function (table, nodeName) {\n var wrapper = (table.ownerDocument || document).createElement(nodeName);\n Array.from(table.rows).filter(function (r) { return r.getAttribute(rowTypeAttr) === nodeName; }).forEach(function (row) {\n row.removeAttribute(rowTypeAttr);\n wrapper.appendChild(row);\n });\n if (wrapper.children.length) {\n table.appendChild(wrapper);\n }\n};\nvar restoreTables = function (fragment) {\n Array.from(fragment.querySelectorAll('table')).forEach(function (table) {\n removeRowType(table, 'thead');\n removeRowType(table, 'tbody');\n removeRowType(table, 'tfoot');\n var emptyElement = Array.from(table.children).find(function (el) { return el.children.length === 0; });\n if (emptyElement) {\n emptyElement.remove();\n }\n var wrapper = table.parentNode instanceof HTMLDivElement ? table.parentNode : null;\n if (wrapper && wrapper.matches('div[table]')) {\n table.style.marginLeft = wrapper.style.marginLeft;\n table.style.marginRight = wrapper.style.marginRight;\n var captionDiv_1 = Array.from(wrapper.children).find(function (el) { return el.matches('div[caption]'); });\n if (captionDiv_1 && captionDiv_1.innerHTML !== '') {\n var caption_1 = table.createCaption();\n if (captionDiv_1.id) {\n caption_1.id = captionDiv_1.id;\n }\n if (captionDiv_1.className) {\n caption_1.className = captionDiv_1.className;\n }\n Array.from(captionDiv_1.style).forEach(function (styleName) {\n caption_1.style[styleName] = captionDiv_1.style[styleName];\n });\n while (captionDiv_1.firstChild) {\n caption_1.appendChild(captionDiv_1.firstChild);\n }\n }\n if (wrapper.style.width && !table.style.width) {\n table.style.width = wrapper.style.width;\n }\n wrapper.parentNode.insertBefore(table, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n });\n};\nvar setRowType = function (children, nodeName) {\n var tag = nodeName.toUpperCase();\n children.filter(function (c) { return c.nodeName === tag; }).forEach(function (rowsWrapper) {\n Array.from(rowsWrapper.children).forEach(function (row) {\n row.setAttribute(rowTypeAttr, nodeName);\n if (rowsWrapper.parentNode) {\n rowsWrapper.parentNode.insertBefore(row, rowsWrapper);\n }\n });\n rowsWrapper.remove();\n });\n};\nvar validateTablesToPmSchema = function (fragment) {\n Array.from(fragment.querySelectorAll('table')).forEach(function (table) {\n var children = Array.from(table.children);\n if (children.some(function (e) { return e.nodeName === 'THEAD' || e.nodeName === 'TFOOT'; })) {\n setRowType(children, 'thead');\n setRowType(children, 'tbody');\n setRowType(children, 'tfoot');\n }\n var colgroup = children.find(function (c) { return c.nodeName === 'COLGROUP'; });\n if (colgroup) {\n table.setAttribute(colgroupAttr, colgroup.outerHTML);\n colgroup.remove();\n }\n if (table.caption || table.style.marginLeft || table.style.marginRight) {\n var wrapper = document.createElement('div');\n wrapper.setAttribute('table', '');\n wrapper.style.display = 'table';\n wrapper.style.marginLeft = table.style.marginLeft;\n wrapper.style.marginRight = table.style.marginRight;\n if (table.caption) {\n var captionDiv_2 = document.createElement('div');\n captionDiv_2.setAttribute('caption', '');\n if (table.caption.id) {\n captionDiv_2.id = table.caption.id;\n }\n if (table.caption.className) {\n captionDiv_2.className = table.caption.className;\n }\n Array.from(table.caption.style).forEach(function (styleName) {\n captionDiv_2.style[styleName] = table.caption.style[styleName];\n });\n while (table.caption.firstChild) {\n captionDiv_2.appendChild(table.caption.firstChild);\n }\n table.removeChild(table.caption);\n wrapper.appendChild(captionDiv_2);\n }\n table.parentNode.insertBefore(wrapper, table);\n wrapper.appendChild(table);\n if (/%/.test(table.style.width)) {\n wrapper.style.width = table.style.width;\n table.style.width = '';\n }\n }\n });\n};\n/**\n * Trims the whitespace around the provided block nodes.\n *\n * @param html - Input HTML content\n * @param trimAroundTags - Block elements to which trimming will be applied.\n * Defaults to block nodes of the current default schema:\n * 'div', 'ol', 'ul', 'li', 'table', 'tbody', 'thead', 'tfoot', 'td', 'th', 'p'\n * and additional table and semantic nodes from the default Angular Editor schema:\n * 'tr', 'col', 'colgroup', 'article', 'main', 'nav', 'header', 'footer', 'aside', 'section'\n *\n * @returns The trimmed HTML content\n */\nexport var trimWhitespace = function (html, trimAroundTags) {\n if (trimAroundTags === void 0) { trimAroundTags = blockWrappers; }\n var tags = trimAroundTags.join('|');\n return html.replace(new RegExp('\\\\s*(<(?:' + tags + ')(?:\\\\s[^>]*?)?>)', 'g'), '$1')\n .replace(new RegExp('(<\\\\/(?:' + tags + ')(?:\\\\s[^>]*?)?>)\\\\s*', 'g'), '$1');\n};\nvar styleAttr = 'data-style';\nvar styleReplace = ' ' + styleAttr + '=';\nvar reTag = /<[^>]+>/gm;\nvar reStyle = /\\sstyle=/gm;\nvar replacer = function (match) {\n return match.replace(reStyle, styleReplace);\n};\nvar replaceStyleAttr = function (html) {\n return html.replace(reTag, replacer);\n};\nvar applyStyle = function (styleString, element) {\n return styleString.split(';').filter(function (s) { return s !== ''; }).forEach(function (s) {\n var parts = s.split(':');\n element.style[parts[0].trim()] = parts[1].trim();\n });\n};\nvar restoreStyleAttr = function (container) {\n Array.from(container.querySelectorAll('[' + styleAttr + ']')).forEach(function (element) {\n var styleString = element.getAttribute(styleAttr);\n element.removeAttribute(styleAttr);\n applyStyle(styleString, element);\n });\n};\n/**\n * Creates a DocumentFragment from the given HTML content.\n *\n * @param html\n * @returns DocumentFragment\n */\nexport var htmlToFragment = function (html) {\n var template = document.createElement('template');\n template.innerHTML = replaceStyleAttr(html);\n restoreStyleAttr(template.content);\n return template.content;\n};\n/**\n * @hidden\n */\nexport var fragmentToHtml = function (fragment) {\n return Array.from(fragment.childNodes).reduce(function (acc, cur) { return acc + (cur.outerHTML || cur.textContent || ''); }, '');\n};\n/**\n * Creates a DocumentFragment from the given ProseMirrorNode.\n * @param doc ProseMirrorNode\n * @returns DocumentFragment\n */\nexport var pmDocToFragment = function (doc) {\n var fragment = DOMSerializer.fromSchema(doc.type.schema).serializeFragment(doc.content);\n restoreTables(fragment);\n return fragment;\n};\n/**\n * Creates a ProseMirrorNode from the given DOM element.\n *\n * @param dom\n * @param schema\n * @param parseOptions\n * @returns ProseMirrorNode\n */\nexport var domToPmDoc = function (dom, schema, parseOptions) {\n return ProseMirrorDOMParser.fromSchema(schema).parse(dom, parseOptions);\n};\n/**\n * Creates a ProseMirrorNode from the given HTML content.\n *\n * @param content - The new HTML content.\n * @param schema - The document schema.\n * @param parseOptions - ProseMirror parse options recognized by the `parse` and `parseSlice` methods.\n * @returns - New ProseMirrorNode instance.\n */\nexport var parseContent = function (content, schema, parseOptions) {\n var dom = htmlToFragment(content);\n validateTablesToPmSchema(dom);\n return domToPmDoc(dom, schema, parseOptions);\n};\n/**\n * A function that serializes the Editor State content as HTML string.\n *\n * @param state - The Editor State\n * @returns - The serialized content\n */\nexport var getHtml = function (state) {\n var fragment = pmDocToFragment(state.doc);\n return fragmentToHtml(fragment);\n};\n/**\n * Replaces the content of the editor with a new one.\n *\n * @param content - The new HTML content.\n * @param commandName - The name of the command.\n * @param parseOptions - ProseMirror parse options recognized by the `parse` and `parseSlice` methods.\n * @returns - Command function that takes an editor `state` and `dispatch` function.\n */\nexport var setHtml = function (content, command, parseOptions) {\n if (command === void 0) { command = 'setHTML'; }\n if (parseOptions === void 0) { parseOptions = { preserveWhitespace: 'full' }; }\n return function (state, dispatch) {\n return dispatch(state.tr\n .setSelection(new AllSelection(state.doc))\n .replaceSelectionWith(parseContent(content, state.schema, parseOptions))\n .setMeta('commandName', command));\n };\n};\n","import { RemoveMarkStep } from 'prosemirror-transform';\nimport { MarkType } from 'prosemirror-model';\nexport var markApplies = function (doc, ranges, type) {\n var loop = function (i) {\n var ref = ranges[i];\n var $from = ref.$from;\n var $to = ref.$to;\n var can = $from.depth === 0 ? doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, function (node) {\n if (can) {\n return false;\n }\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can) {\n return { v: true };\n }\n };\n for (var i = 0; i < ranges.length; i++) {\n var returned = loop(i);\n if (returned) {\n return returned.v;\n }\n }\n return false;\n};\nexport var toggleMark = function (markType, attrs, tr) { return function (state, dispatch) {\n var _a = state.selection, empty = _a.empty, $cursor = _a.$cursor, ranges = _a.ranges;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) {\n return false;\n }\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks())) {\n dispatch(tr.removeStoredMark(markType));\n }\n else {\n dispatch(tr.addStoredMark(markType.create(attrs)));\n }\n }\n else {\n var has = false;\n for (var i = 0; !has && i < ranges.length; i++) {\n var _b = ranges[i], $from = _b.$from, $to = _b.$to;\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType);\n }\n for (var i = 0; i < ranges.length; i++) {\n var _c = ranges[i], $from = _c.$from, $to = _c.$to;\n if (has) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n tr.addMark($from.pos, $to.pos, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n}; };\nexport var removeMark = function (tr, from, to, mark) {\n if (mark === void 0) {\n mark = null;\n }\n var matched = [], step = 0;\n tr.doc.nodesBetween(from, to, function (node, pos) {\n if (!node.isInline) {\n return;\n }\n step++;\n var toRemove = null;\n if (mark instanceof MarkType) {\n var found = mark.isInSet(node.marks);\n if (found) {\n toRemove = [found];\n }\n }\n else if (mark) {\n if (mark.isInSet(node.marks)) {\n toRemove = [mark];\n }\n }\n else {\n toRemove = node.marks;\n }\n if (toRemove && toRemove.length) {\n var end = Math.min(pos + node.nodeSize, to);\n for (var i = 0; i < toRemove.length; i++) {\n var style = toRemove[i], found$1 = (void 0);\n for (var j = 0; j < matched.length; j++) {\n var m = matched[j];\n if (m.step === step - 1 && style.eq(m.style)) {\n found$1 = m;\n }\n }\n if (found$1) {\n found$1.to = end;\n found$1.step = step;\n }\n else {\n matched.push({ style: style, from: Math.max(pos, from), to: end, step: step });\n }\n }\n }\n });\n matched.forEach(function (m) { return tr.step(new RemoveMarkStep(m.from, m.to, m.style)); });\n return tr;\n};\nexport var removeMarks = function (marks, state, dispatch, tr) {\n var _a = state.selection, $cursor = _a.$cursor, ranges = _a.ranges;\n tr = tr || state.tr;\n if ($cursor) {\n marks.forEach(function (m) {\n if (m.isInSet(state.storedMarks || $cursor.marks())) {\n dispatch(tr.removeStoredMark(m));\n }\n });\n }\n else {\n var _loop_1 = function (i) {\n var _b = ranges[i], $from = _b.$from, $to = _b.$to;\n marks.forEach(function (m) {\n removeMark(tr, $from.pos, $to.pos, m);\n });\n };\n for (var i = 0; i < ranges.length; i++) {\n _loop_1(i);\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\nvar toArray = function (x) { return x instanceof Array ? x : [x]; };\nexport var removeAllMarks = function (_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.except, except = _c === void 0 ? [] : _c;\n return function (state, dispatch) {\n var tr = state.tr;\n cleanMarks(tr, { except: toArray(except) });\n if (tr.docChanged) {\n dispatch(tr);\n }\n };\n};\n/**\n * Removes the marks from the selection base on the passed parameter.\n * Requires to dispatch the transaction.\n *\n * @example\n * See `removeAllMarks` or `cleanFormatting` function.\n */\nexport var cleanMarks = function (tr, _a) {\n var except = _a.except;\n var doc = tr.doc, selection = tr.selection;\n var schema = doc.type.schema;\n var empty = selection.empty, ranges = selection.ranges;\n var excludedMarkTypes = (except || []).map(function (mt) { return mt.name; });\n if (!empty) {\n var marks_1 = Object.keys(schema.marks)\n .map(function (m) { return schema.marks[m]; })\n .filter(function (mt) { return excludedMarkTypes.indexOf(mt.name) === -1; });\n ranges.forEach(function (_a) {\n var $from = _a.$from, $to = _a.$to;\n marks_1.forEach(function (mark) { return tr.removeMark($from.pos, $to.pos, mark); });\n });\n }\n};\n/**\n * Checks if a mark exists in the selection.\n * Used for checking the state of bold, italic, ... and unlink tools.\n */\nexport var hasMark = function (state, options) {\n var marks = state.schema.marks;\n var altMarks = (options.altMarks || []).filter(function (m) { return marks[m]; });\n var altStyle = options.altStyle;\n var _a = state.selection, from = _a.from, $from = _a.$from, to = _a.to, empty = _a.empty;\n var type = marks[options.mark];\n var doc = state.doc;\n var result = false;\n var currMarks;\n if (empty) {\n currMarks = state.storedMarks || $from.marks();\n result = (type && type.isInSet(currMarks)) || altMarks.some(function (m) { return marks[m].isInSet(currMarks); });\n }\n else {\n result = (type && doc.rangeHasMark(from, to, type)) || altMarks.some(function (m) { return doc.rangeHasMark(from, to, marks[m]); });\n }\n if (!result && altStyle && marks.style) {\n return selectionMarks(state, marks.style)\n .some(function (mark) { return styleValue(mark, altStyle) !== null; });\n }\n return Boolean(result);\n};\nexport var styleValue = function (mark, style) {\n var styleText = (mark && mark.attrs.style) || '';\n var styles = styleText.split(/\\s*;\\s*/).filter(function (s) { return Boolean(s); });\n for (var i = 0; i < styles.length; i++) {\n var nameValue = styles[i].split(/\\s*:\\s*/);\n if (nameValue[0].toLowerCase() === style.name && style.value.test(nameValue[1])) {\n return nameValue[1];\n }\n }\n return null;\n};\n/**\n * Returns the marks of a specific type for every inline node in the selection.\n */\nexport var selectionMarks = function (state, markType) {\n var _a = state.selection, from = _a.from, $from = _a.$from, to = _a.to, empty = _a.empty;\n var marks = [];\n if (empty) {\n marks.push(markType.isInSet(state.storedMarks || $from.marks()));\n }\n else {\n state.doc.nodesBetween(from, to, function (node) {\n if (node.isInline) {\n marks.push(markType.isInSet(node.marks));\n }\n });\n }\n return marks;\n};\n/**\n * Returns the specified mark which wraps the selection.\n * Used by link tools.\n */\nexport var getMark = function (state, markType) {\n var marks = selectionMarks(state, markType);\n var filtered = marks.filter(function (m) { return Boolean(m); });\n return marks.length === filtered.length ? marks[0] : undefined;\n};\n/**\n * **Deprecated.** Use `selectionMarks` function instead.\n */\nexport var getActiveMarks = function (state, markType) {\n var marks = selectionMarks(state, markType);\n var filtered = marks.filter(function (m) { return Boolean(m); });\n var hasNodesWithoutMarks = marks.length !== filtered.length;\n return {\n hasNodesWithoutMarks: hasNodesWithoutMarks,\n marks: filtered\n };\n};\n","import { __assign, __spreadArray } from \"tslib\";\nimport { AddMarkStep, RemoveMarkStep } from 'prosemirror-transform';\nimport { TextSelection } from 'prosemirror-state';\nimport { changeStylesString, shallowEqual } from './utils';\nimport { markApplies, hasMark, removeMarks, toggleMark, styleValue, selectionMarks } from './mark';\nvar changeStyleFromMark = function (marks, toChange) {\n var styleMark = marks.find(function (m) { return m.type.name === 'style'; });\n var elementStyle = styleMark && styleMark.attrs.style;\n return changeStylesString(elementStyle, toChange);\n};\nvar changeStyleMark = function (tr, from, to, attrs, markType) {\n var mark = markType.create({ style: attrs.style });\n var removed = [], added = [], removing = null, adding = null;\n tr.doc.nodesBetween(from, to, function (node, pos, parent) {\n if (!node.isInline) {\n return;\n }\n var marks = node.marks;\n if (!mark.isInSet(marks) && parent.type.allowsMarkType(mark.type)) {\n var start = Math.max(pos, from), end = Math.min(pos + node.nodeSize, to);\n var newStyle = changeStyleFromMark(marks, attrs);\n if (newStyle.changed || attrs.newValue) {\n var style = newStyle.changed ?\n { style: newStyle.style || null } : { style: [attrs.style] + \": \" + attrs.newValue + \";\" };\n var currentMark = markType.isInSet(marks) ? marks.find(function (m) { return m.type.name === 'style'; }) : null;\n var newMarkAttrs_1 = currentMark ? __assign(__assign({}, currentMark.attrs), style) : style;\n var newStyleMark = markType.create(newMarkAttrs_1);\n var newSet = newStyleMark.addToSet(marks);\n for (var i = 0; i < marks.length; i++) {\n if (!marks[i].isInSet(newSet)) {\n if (removing && removing.to === start && removing.mark.eq(marks[i])) {\n removing.to = end;\n }\n else {\n removing = new RemoveMarkStep(start, end, marks[i]);\n removed.push(removing);\n }\n }\n }\n var previousAdded = adding && adding.to === start;\n var sameAdding = previousAdded && newStyleMark.attrs.style === adding.mark.attrs.style;\n if (previousAdded && sameAdding) {\n adding.to = end;\n }\n else if (Object.keys(newMarkAttrs_1).some(function (attrName) { return newMarkAttrs_1[attrName] !== null; })) {\n adding = new AddMarkStep(start, end, newStyleMark);\n added.push(adding);\n }\n }\n }\n });\n removed.forEach(function (s) { return tr.step(s); });\n added.forEach(function (s) { return tr.step(s); });\n return removed.length + added.length > 0;\n};\n/**\n * Used by FontSize and FontName tools for getting their state.\n */\nexport var getInlineStyles = function (state, style) {\n var styleMark = state.schema.marks.style;\n var marks = styleMark ? selectionMarks(state, styleMark) : [];\n return marks.map(function (mark) { return styleValue(mark, style); }).filter(function (m) { return m !== null; });\n};\nvar changeStyle = function (markType, attrs) {\n return function (state, dispatch, tr) {\n var _a = state.selection, empty = _a.empty, ranges = _a.ranges;\n var $cursor = state.selection instanceof TextSelection && state.selection.$cursor;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType)) {\n return false;\n }\n var result = false;\n if (dispatch) {\n var transaction = tr || state.tr;\n if ($cursor) {\n var currentMarks = state.storedMarks || $cursor.marks();\n if (markType.isInSet(currentMarks)) {\n var newStyle = changeStyleFromMark(currentMarks, attrs);\n var styleMark = currentMarks.find(function (m) { return m.type.name === 'style'; });\n var newAttrs_1 = __assign(__assign({}, (styleMark ? styleMark.attrs : {})), { style: newStyle.style || null });\n if (shallowEqual(styleMark.attrs, newAttrs_1)) {\n return false;\n }\n dispatch(transaction.removeStoredMark(markType));\n if (Object.keys(newAttrs_1).some(function (attrName) { return newAttrs_1[attrName] !== null; })) {\n dispatch(transaction.addStoredMark(markType.create(newAttrs_1)));\n }\n result = true;\n }\n }\n else {\n for (var i = 0; i < ranges.length; i++) {\n var _b = ranges[i], $from = _b.$from, $to = _b.$to;\n result = changeStyleMark(transaction, $from.pos, $to.pos, attrs, markType) || result;\n }\n if (result) {\n transaction.scrollIntoView();\n dispatch(transaction);\n }\n }\n }\n return result;\n };\n};\n/**\n * Used by bold, italic, ... and link commands.\n */\nexport var toggleInlineFormat = function (options, tr, markAttrs) { return function (state, dispatch) {\n var marks = state.schema.marks;\n var altStyle = options.altStyle, _a = options.altMarks, altMarks = _a === void 0 ? [] : _a, mark = options.mark;\n var transaction = tr || state.tr;\n var styleRemoved = false;\n var dispatched = false;\n var markDispatched = function () { return dispatched = true; };\n if (altStyle && marks.style) {\n var cmd = changeStyle(marks.style, { style: altStyle.name, value: altStyle.value });\n styleRemoved = cmd(state, markDispatched, transaction);\n }\n var allMarks = __spreadArray([mark], altMarks).filter(function (m) { return marks[m]; });\n var toRemove = allMarks.map(function (m) { return hasMark(state, { mark: m }) && marks[m]; }).filter(function (m) { return m; });\n if (toRemove.length) {\n removeMarks(toRemove, state, markDispatched, transaction);\n }\n else {\n if (!styleRemoved) {\n toggleMark(marks[mark], markAttrs, transaction)(state, markDispatched);\n }\n }\n if (dispatched) {\n dispatch(transaction);\n }\n return dispatched;\n}; };\n/**\n * Used by FontSize, FontName, Color and BackColor commands.\n */\nexport var applyInlineStyle = function (options, command) { return function (state, dispatch) {\n var marks = state.schema.marks;\n var markType = marks.style;\n var attrs = {\n style: options.style, value: /^.+$/, newValue: options.value\n };\n var tr = state.tr;\n if (command) {\n tr.setMeta('commandName', command);\n }\n tr.setMeta('args', options);\n var _a = state.selection, empty = _a.empty, $cursor = _a.$cursor, ranges = _a.ranges;\n if ((empty && !$cursor) || !markType || !markApplies(state.doc, ranges, markType)) {\n return false;\n }\n // Empty selection\n if ($cursor) {\n var marksFromSelection = state.storedMarks || $cursor.marks();\n var currentMark = markType.isInSet(marksFromSelection) ? marksFromSelection.find(function (m) { return m.type.name === 'style'; }) : null;\n var newStyles = { style: null };\n if (currentMark && currentMark.attrs.style) {\n var resultStyles = changeStylesString(currentMark.attrs.style, attrs);\n if (resultStyles.changed && resultStyles.style) {\n newStyles.style = resultStyles.style;\n }\n }\n else if (attrs.newValue) {\n newStyles.style = [attrs.style] + \": \" + attrs.newValue + \";\";\n }\n var newMarkAttrs_2 = currentMark ? __assign(__assign({}, currentMark.attrs), newStyles) : newStyles;\n if (Object.keys(newMarkAttrs_2).some(function (attrName) { return newMarkAttrs_2[attrName] !== null; })) {\n dispatch(tr.addStoredMark(markType.create(newMarkAttrs_2)));\n }\n else {\n dispatch(tr.removeStoredMark(markType));\n }\n return true;\n }\n return changeStyle(markType, attrs)(state, dispatch, tr);\n}; };\n","import { toggleInlineFormat } from './inline-style';\nimport { hasMark, toggleMark, removeMark, selectionMarks } from './mark';\nimport { EditorState } from 'prosemirror-state';\nvar modifyLink = function (options, tr) { return function (state, dispatch) {\n var _a = state.selection, $cursor = _a.$cursor, from = _a.from, to = _a.to;\n var markType = state.schema.marks[options.mark];\n if (!$cursor) {\n tr.doc.nodesBetween(from, to, function (node, pos) {\n if (node.isInline && markType.isInSet(node.marks)) {\n tr.removeMark(pos, pos + node.nodeSize, markType);\n tr.addMark(pos, pos + node.nodeSize, markType.create(options.attrs));\n dispatch(tr);\n }\n });\n }\n else {\n var parentNode = $cursor.parent;\n var cursorNodeIndex = $cursor.index();\n var mark = parentNode.child(cursorNodeIndex).marks.find(function (m) { return m.type === markType; });\n var childCount = parentNode.childCount;\n var linkStart = $cursor.pos - $cursor.textOffset, linkSize = parentNode.child(cursorNodeIndex).nodeSize, index = void 0, nodeSize = void 0;\n index = cursorNodeIndex - 1;\n while (index >= 0 && mark.isInSet(parentNode.child(index).marks)) {\n nodeSize = parentNode.child(index).nodeSize;\n linkSize += nodeSize;\n linkStart -= nodeSize;\n index -= 1;\n }\n index = cursorNodeIndex + 1;\n while (index < childCount && mark.isInSet(parentNode.child(index).marks)) {\n linkSize += parentNode.child(index).nodeSize;\n index += 1;\n }\n tr.removeMark(linkStart, linkStart + linkSize, markType);\n tr.addMark(linkStart, linkStart + linkSize, markType.create(options.attrs));\n dispatch(tr);\n }\n}; };\nexport var removeLink = function (options, tr) { return function (state, dispatch) {\n var $cursor = state.selection.$cursor;\n if (!$cursor) {\n toggleInlineFormat(options, tr)(state, dispatch);\n }\n else {\n var parentNode = $cursor.parent;\n var cursorNodeIndex = $cursor.index();\n var toolMark_1 = state.schema.marks[options.mark];\n var mark = parentNode.child(cursorNodeIndex).marks.find(function (m) { return m.type === toolMark_1; });\n var childCount = parentNode.childCount;\n var linkStart = $cursor.pos - $cursor.textOffset, linkSize = parentNode.child(cursorNodeIndex).nodeSize, index = void 0, nodeSize = void 0;\n index = cursorNodeIndex - 1;\n while (index >= 0 && mark.isInSet(parentNode.child(index).marks)) {\n nodeSize = parentNode.child(index).nodeSize;\n linkSize += nodeSize;\n linkStart -= nodeSize;\n index -= 1;\n }\n index = cursorNodeIndex + 1;\n while (index < childCount && mark.isInSet(parentNode.child(index).marks)) {\n linkSize += parentNode.child(index).nodeSize;\n index += 1;\n }\n dispatch(removeMark(tr || state.tr, linkStart, linkStart + linkSize, mark));\n }\n}; };\n/**\n * Returns a mark which wraps the selection.\n */\nvar getParentMark = function (state, markType) {\n var marks = selectionMarks(state, markType);\n return marks.length === 1 && marks[0] ? marks[0] : null;\n};\nexport var applyLink = function (_a, commandName) {\n var mark = _a.mark, attrs = _a.attrs;\n if (commandName === void 0) { commandName = 'link'; }\n return function (state, dispatch) {\n var marks = state.schema.marks;\n var tr = state.tr;\n if (commandName) {\n tr.setMeta('commandName', commandName);\n tr.setMeta('args', attrs);\n }\n var dispatched = false;\n var markDispatched = function () { return dispatched = true; };\n if (getParentMark(state, marks[mark])) {\n modifyLink({ mark: mark, attrs: attrs }, tr)(state, markDispatched);\n }\n else {\n var nextState = state;\n if (hasMark(state, { mark: mark })) {\n removeLink({ mark: mark, attrs: attrs }, tr)(state, markDispatched);\n nextState = EditorState.create({ doc: tr.doc, selection: tr.selection });\n }\n if (dispatched) {\n toggleMark(marks[mark], attrs, tr)(nextState, markDispatched);\n }\n else {\n toggleInlineFormat({ mark: mark }, tr, attrs)(nextState, markDispatched);\n }\n }\n if (dispatched) {\n dispatch(tr);\n }\n return dispatched;\n };\n};\n","import { __assign, __rest } from \"tslib\";\nimport { changeStylesString } from './utils';\nimport { ReplaceAroundStep } from 'prosemirror-transform';\nimport { Fragment, Slice } from 'prosemirror-model';\nimport { NodeSelection } from 'prosemirror-state';\n/**\n * @hidden\n */\nvar canChangeType = function (stateDoc, pos, type) {\n var $pos = stateDoc.resolve(pos), index = $pos.index();\n return $pos.parent.canReplaceWith(index, index + 1, type);\n};\n/**\n * Changes the type or the attributes of the passed node.\n *\n * @example\n * See `cleanTextBlockFormatting` or `formatBlockElements` function.\n */\nexport var changeTextBlock = function (tr, node, nodeType, attrs) {\n if (!nodeType.isTextblock) {\n return false;\n }\n var ranges = tr.selection.ranges;\n ranges.forEach(function (range) {\n var mapFrom = tr.steps.length;\n var from = range.$from.pos;\n var to = range.$to.pos;\n tr.doc.nodesBetween(from, to, function (currNode, pos) {\n if (currNode.eq(node) &&\n currNode.isTextblock &&\n !currNode.hasMarkup(nodeType, attrs) &&\n canChangeType(tr.doc, tr.mapping.slice(mapFrom).map(pos), nodeType)) {\n // Ensure all markup that isn't allowed in the new node type is cleared\n tr.clearIncompatible(tr.mapping.slice(mapFrom).map(pos, 1), nodeType);\n var mapping = tr.mapping.slice(mapFrom);\n var startM = mapping.map(pos, 1), endM = mapping.map(pos + currNode.nodeSize, 1);\n var slice = new Slice(Fragment.from(nodeType.create(attrs, null, currNode.marks)), 0, 0);\n tr.step(new ReplaceAroundStep(startM, endM, startM + 1, endM - 1, slice, 1, true));\n return false; // this will skip the node children\n }\n });\n });\n};\n/**\n * Traverses the selection and returns the block nodes in it.\n *\n * @example\n * See `cleanTextBlockFormatting` function.\n */\nexport var blockNodes = function (state, options) {\n if (options === void 0) { options = { blocksInSelection: false }; }\n var doc = state.doc, selection = state.selection;\n var $from = selection.$from, ranges = selection.ranges;\n var blocksInSelection = options.blocksInSelection;\n var result = [];\n var selNode = selection instanceof NodeSelection ? selection.node : undefined;\n if (selNode) {\n if (selNode.isBlock) {\n result.push(selNode);\n selNode.nodesBetween(0, selNode.content.size, function (node) {\n if (node.isBlock) {\n result.push(node);\n }\n });\n }\n else if (!blocksInSelection && $from.parent && $from.parent.isBlock) {\n result.push($from.parent);\n }\n }\n else {\n ranges.forEach(function (range) {\n var from = range.$from.pos;\n var to = range.$to.pos;\n doc.nodesBetween(from, to, function (node, pos, _parent, _index) {\n if (node.isBlock && (!blocksInSelection || (pos >= from && pos + node.content.size + 2 <= to))) {\n result.push(node);\n }\n });\n });\n }\n return result;\n};\nexport var formatBlockElements = function (value, commandName) {\n return function (state, dispatch) {\n var blocks = blockNodes(state);\n var nodes = state.schema.nodes;\n var tr = state.tr;\n tr.setMeta('commandName', commandName);\n tr.setMeta('args', { value: value });\n blocks.forEach(function (node) {\n if (node.type.isTextblock) {\n if (value === 'p') {\n var _a = node.attrs, level = _a.level, attrs = __rest(_a, [\"level\"]);\n changeTextBlock(tr, node, nodes.paragraph, attrs);\n }\n else if (/^h[1-6]$/i.test(value)) {\n var level = parseInt(value.substr(1), 10);\n changeTextBlock(tr, node, nodes.heading, __assign(__assign({}, node.attrs), { level: level }));\n }\n else if (value === 'blockquote') {\n var _b = node.attrs, level = _b.level, attrs = __rest(_b, [\"level\"]);\n changeTextBlock(tr, node, nodes.blockquote, attrs);\n }\n }\n });\n var result = tr.docChanged;\n if (result) {\n dispatch(tr.scrollIntoView());\n }\n return result;\n };\n};\n/**\n * Removes the style and class attributes of text block elements.\n * Requires to dispatch the transaction.\n *\n * @example\n * See `cleanFormatting` function.\n */\nexport var cleanTextBlockFormatting = function (tr, options) {\n if (options === void 0) { options = { blocksInSelection: true }; }\n var doc = tr.doc, selection = tr.selection;\n var blocksInSelection = options.blocksInSelection, blockNodeType = options.blockNodeType;\n var nodes = blockNodes({ doc: doc, selection: selection }, { blocksInSelection: blocksInSelection });\n var textBlocks = nodes.filter(function (node) { return node.isTextblock; });\n textBlocks.forEach(function (node) {\n var _a = node.attrs || {}, _b = _a.style, style = _b === void 0 ? '' : _b, _c = _a.class, className = _c === void 0 ? '' : _c, attrs = __rest(_a, [\"style\", \"class\"]);\n var nodeType = blockNodeType || node.type;\n if (style || className || nodeType !== node.type) {\n changeTextBlock(tr, node, nodeType, attrs);\n }\n });\n};\nexport var getBlockFormats = function (state) {\n var blocks = blockNodes(state);\n var nodes = state.schema.nodes;\n var result = [];\n blocks.forEach(function (node) {\n if (node.type === nodes.paragraph) {\n result.push('p');\n }\n else if (node.type === nodes.heading) {\n result.push(\"h\" + node.attrs.level);\n }\n else if (node.type === nodes.blockquote && nodes.blockquote.isTextblock) {\n // In case the blockquote can have inline content.\n result.push('blockquote');\n }\n });\n return result;\n};\nexport var addStyles = function (node, stylesToApply) {\n var currentStyles = node.attrs.style, changedStyleResult, toChange;\n if (currentStyles) {\n stylesToApply.forEach(function (style) {\n toChange = { style: style.name, value: /^.+$/, newValue: style.value };\n changedStyleResult = changeStylesString(currentStyles, toChange);\n currentStyles = changedStyleResult.changed ? changedStyleResult.style : currentStyles;\n });\n }\n var reducer = function (acc, curr) { return ((acc && curr.value ? acc + ' ' : '') + curr.value ? curr.name + \": \" + curr.value + \";\" : ''); };\n currentStyles = currentStyles || stylesToApply.reduce(reducer, '');\n return Object.assign({}, node.attrs, { style: currentStyles || null });\n};\nexport var hasNode = function (state, nodeType) {\n var _a = state.selection, from = _a.from, to = _a.to;\n var result = false;\n state.doc.nodesBetween(from, to, function (node) {\n result = result || node.type === nodeType;\n return !result;\n });\n return result;\n};\nexport var parentBlockFormat = function (state) {\n var formats = getBlockFormats(state);\n return new Set(formats).size === 1 ? formats[0] : null;\n};\n/**\n * **Deprecated.** Use `parentBlockFormat` function instead.\n */\nexport var activeNode = function (state) {\n return { tag: parentBlockFormat(state) || '' };\n};\n","import { blockNodes, addStyles, changeTextBlock } from './blockNode';\n/**\n * Aligning block elements in the selection.\n *\n * @returns {boolean} - Returns true if any alignment is applied.\n */\nexport var alignBlocks = function (actions, commandName) { return function (state, dispatch) {\n var blocks = blockNodes(state);\n var tr = state.tr;\n tr.setMeta('commandName', commandName);\n blocks.forEach(function (node) {\n if (node.type.isTextblock) {\n var action = actions.find(function (n) { return n.node === node.type.name; });\n if (action) {\n var newAttrs = addStyles(node, action.style);\n changeTextBlock(tr, node, node.type, newAttrs);\n }\n }\n });\n var result = tr.docChanged;\n if (result) {\n dispatch(tr.scrollIntoView());\n }\n return result;\n}; };\nexport var isAligned = function (state, actions) {\n var blocks = blockNodes(state);\n var result = false;\n blocks.forEach(function (node) {\n if (!result && node.type.isTextblock && node.attrs.style) {\n var action = actions.find(function (a) { return a.node === node.type.name; });\n if (action) {\n result = action.style.every(function (style) {\n return !!style.value && new RegExp(style.name + \":\\\\s?\" + style.value, 'i').test(node.attrs.style);\n });\n }\n }\n });\n return result;\n};\n","import { cleanTextBlockFormatting } from './blockNode';\nimport { cleanMarks } from './mark';\n/**\n * A command which removes the inline formatting, class and style attributes of paragraph and heading elements in the selection.\n */\nexport var cleanFormatting = function (options) {\n if (options === void 0) { options = { blocksInSelection: true }; }\n return function (state, dispatch) {\n var tr = state.tr;\n var blocksInSelection = options.blocksInSelection, blockNodeType = options.blockNodeType, exceptMarks = options.exceptMarks;\n var except = (exceptMarks || [state.schema.marks.link]).filter(Boolean);\n cleanMarks(tr, { except: except });\n cleanTextBlockFormatting(tr, { blocksInSelection: blocksInSelection, blockNodeType: blockNodeType });\n var result = tr.docChanged;\n if (result && dispatch) {\n dispatch(tr);\n }\n return result;\n };\n};\n","import { findWrapping, ReplaceAroundStep, canSplit, liftTarget, canJoin } from 'prosemirror-transform';\nimport { NodeRange, Fragment, Slice } from 'prosemirror-model';\nimport { Selection } from 'prosemirror-state';\n\nconst olDOM = [\"ol\", 0], ulDOM = [\"ul\", 0], liDOM = [\"li\", 0];\n/**\nAn ordered list [node spec](https://prosemirror.net/docs/ref/#model.NodeSpec). Has a single\nattribute, `order`, which determines the number at which the list\nstarts counting, and defaults to 1. Represented as an `
      `\nelement.\n*/\nconst orderedList = {\n attrs: { order: { default: 1 } },\n parseDOM: [{ tag: \"ol\", getAttrs(dom) {\n return { order: dom.hasAttribute(\"start\") ? +dom.getAttribute(\"start\") : 1 };\n } }],\n toDOM(node) {\n return node.attrs.order == 1 ? olDOM : [\"ol\", { start: node.attrs.order }, 0];\n }\n};\n/**\nA bullet list node spec, represented in the DOM as `
        `.\n*/\nconst bulletList = {\n parseDOM: [{ tag: \"ul\" }],\n toDOM() { return ulDOM; }\n};\n/**\nA list item (`
      • `) spec.\n*/\nconst listItem = {\n parseDOM: [{ tag: \"li\" }],\n toDOM() { return liDOM; },\n defining: true\n};\nfunction add(obj, props) {\n let copy = {};\n for (let prop in obj)\n copy[prop] = obj[prop];\n for (let prop in props)\n copy[prop] = props[prop];\n return copy;\n}\n/**\nConvenience function for adding list-related node types to a map\nspecifying the nodes for a schema. Adds\n[`orderedList`](https://prosemirror.net/docs/ref/#schema-list.orderedList) as `\"ordered_list\"`,\n[`bulletList`](https://prosemirror.net/docs/ref/#schema-list.bulletList) as `\"bullet_list\"`, and\n[`listItem`](https://prosemirror.net/docs/ref/#schema-list.listItem) as `\"list_item\"`.\n\n`itemContent` determines the content expression for the list items.\nIf you want the commands defined in this module to apply to your\nlist structure, it should have a shape like `\"paragraph block*\"` or\n`\"paragraph (ordered_list | bullet_list)*\"`. `listGroup` can be\ngiven to assign a group name to the list node types, for example\n`\"block\"`.\n*/\nfunction addListNodes(nodes, itemContent, listGroup) {\n return nodes.append({\n ordered_list: add(orderedList, { content: \"list_item+\", group: listGroup }),\n bullet_list: add(bulletList, { content: \"list_item+\", group: listGroup }),\n list_item: add(listItem, { content: itemContent })\n });\n}\n/**\nReturns a command function that wraps the selection in a list with\nthe given type an attributes. If `dispatch` is null, only return a\nvalue to indicate whether this is possible, but don't actually\nperform the change.\n*/\nfunction wrapInList(listType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), doJoin = false, outerRange = range;\n if (!range)\n return false;\n // This is at the top of an existing list item\n if (range.depth >= 2 && $from.node(range.depth - 1).type.compatibleContent(listType) && range.startIndex == 0) {\n // Don't do anything if this is the top of the list\n if ($from.index(range.depth - 1) == 0)\n return false;\n let $insert = state.doc.resolve(range.start - 2);\n outerRange = new NodeRange($insert, $insert, range.depth);\n if (range.endIndex < range.parent.childCount)\n range = new NodeRange($from, state.doc.resolve($to.end(range.depth)), range.depth);\n doJoin = true;\n }\n let wrap = findWrapping(outerRange, listType, attrs, range);\n if (!wrap)\n return false;\n if (dispatch)\n dispatch(doWrapInList(state.tr, range, wrap, doJoin, listType).scrollIntoView());\n return true;\n };\n}\nfunction doWrapInList(tr, range, wrappers, joinBefore, listType) {\n let content = Fragment.empty;\n for (let i = wrappers.length - 1; i >= 0; i--)\n content = Fragment.from(wrappers[i].type.create(wrappers[i].attrs, content));\n tr.step(new ReplaceAroundStep(range.start - (joinBefore ? 2 : 0), range.end, range.start, range.end, new Slice(content, 0, 0), wrappers.length, true));\n let found = 0;\n for (let i = 0; i < wrappers.length; i++)\n if (wrappers[i].type == listType)\n found = i + 1;\n let splitDepth = wrappers.length - found;\n let splitPos = range.start + wrappers.length - (joinBefore ? 2 : 0), parent = range.parent;\n for (let i = range.startIndex, e = range.endIndex, first = true; i < e; i++, first = false) {\n if (!first && canSplit(tr.doc, splitPos, splitDepth)) {\n tr.split(splitPos, splitDepth);\n splitPos += 2 * splitDepth;\n }\n splitPos += parent.child(i).nodeSize;\n }\n return tr;\n}\n/**\nBuild a command that splits a non-empty textblock at the top level\nof a list item by also splitting that list item.\n*/\nfunction splitListItem(itemType, itemAttrs) {\n return function (state, dispatch) {\n let { $from, $to, node } = state.selection;\n if ((node && node.isBlock) || $from.depth < 2 || !$from.sameParent($to))\n return false;\n let grandParent = $from.node(-1);\n if (grandParent.type != itemType)\n return false;\n if ($from.parent.content.size == 0 && $from.node(-1).childCount == $from.indexAfter(-1)) {\n // In an empty block. If this is a nested list, the wrapping\n // list item should be split. Otherwise, bail out and let next\n // command handle lifting.\n if ($from.depth == 3 || $from.node(-3).type != itemType ||\n $from.index(-2) != $from.node(-2).childCount - 1)\n return false;\n if (dispatch) {\n let wrap = Fragment.empty;\n let depthBefore = $from.index(-1) ? 1 : $from.index(-2) ? 2 : 3;\n // Build a fragment containing empty versions of the structure\n // from the outer list item to the parent node of the cursor\n for (let d = $from.depth - depthBefore; d >= $from.depth - 3; d--)\n wrap = Fragment.from($from.node(d).copy(wrap));\n let depthAfter = $from.indexAfter(-1) < $from.node(-2).childCount ? 1\n : $from.indexAfter(-2) < $from.node(-3).childCount ? 2 : 3;\n // Add a second list item with an empty default start node\n wrap = wrap.append(Fragment.from(itemType.createAndFill()));\n let start = $from.before($from.depth - (depthBefore - 1));\n let tr = state.tr.replace(start, $from.after(-depthAfter), new Slice(wrap, 4 - depthBefore, 0));\n let sel = -1;\n tr.doc.nodesBetween(start, tr.doc.content.size, (node, pos) => {\n if (sel > -1)\n return false;\n if (node.isTextblock && node.content.size == 0)\n sel = pos + 1;\n });\n if (sel > -1)\n tr.setSelection(Selection.near(tr.doc.resolve(sel)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let nextType = $to.pos == $from.end() ? grandParent.contentMatchAt(0).defaultType : null;\n let tr = state.tr.delete($from.pos, $to.pos);\n let types = nextType ? [itemAttrs ? { type: itemType, attrs: itemAttrs } : null, { type: nextType }] : undefined;\n if (!canSplit(tr.doc, $from.pos, 2, types))\n return false;\n if (dispatch)\n dispatch(tr.split($from.pos, 2, types).scrollIntoView());\n return true;\n };\n}\n/**\nCreate a command to lift the list item around the selection up into\na wrapping list.\n*/\nfunction liftListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n if (!dispatch)\n return true;\n if ($from.node(range.depth - 1).type == itemType) // Inside a parent list\n return liftToOuterList(state, dispatch, itemType, range);\n else // Outer list node\n return liftOutOfList(state, dispatch, range);\n };\n}\nfunction liftToOuterList(state, dispatch, itemType, range) {\n let tr = state.tr, end = range.end, endOfList = range.$to.end(range.depth);\n if (end < endOfList) {\n // There are siblings after the lifted items, which must become\n // children of the last item\n tr.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList, new Slice(Fragment.from(itemType.create(null, range.parent.copy())), 1, 0), 1, true));\n range = new NodeRange(tr.doc.resolve(range.$from.pos), tr.doc.resolve(endOfList), range.depth);\n }\n const target = liftTarget(range);\n if (target == null)\n return false;\n tr.lift(range, target);\n let after = tr.mapping.map(end, -1) - 1;\n if (canJoin(tr.doc, after))\n tr.join(after);\n dispatch(tr.scrollIntoView());\n return true;\n}\nfunction liftOutOfList(state, dispatch, range) {\n let tr = state.tr, list = range.parent;\n // Merge the list items into a single big item\n for (let pos = range.end, i = range.endIndex - 1, e = range.startIndex; i > e; i--) {\n pos -= list.child(i).nodeSize;\n tr.delete(pos - 1, pos + 1);\n }\n let $start = tr.doc.resolve(range.start), item = $start.nodeAfter;\n if (tr.mapping.map(range.end) != range.start + $start.nodeAfter.nodeSize)\n return false;\n let atStart = range.startIndex == 0, atEnd = range.endIndex == list.childCount;\n let parent = $start.node(-1), indexBefore = $start.index(-1);\n if (!parent.canReplace(indexBefore + (atStart ? 0 : 1), indexBefore + 1, item.content.append(atEnd ? Fragment.empty : Fragment.from(list))))\n return false;\n let start = $start.pos, end = start + item.nodeSize;\n // Strip off the surrounding list. At the sides where we're not at\n // the end of the list, the existing list is closed. At sides where\n // this is the end, it is overwritten to its end.\n tr.step(new ReplaceAroundStep(start - (atStart ? 1 : 0), end + (atEnd ? 1 : 0), start + 1, end - 1, new Slice((atStart ? Fragment.empty : Fragment.from(list.copy(Fragment.empty)))\n .append(atEnd ? Fragment.empty : Fragment.from(list.copy(Fragment.empty))), atStart ? 0 : 1, atEnd ? 0 : 1), atStart ? 0 : 1));\n dispatch(tr.scrollIntoView());\n return true;\n}\n/**\nCreate a command to sink the list item around the selection down\ninto an inner list.\n*/\nfunction sinkListItem(itemType) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to, node => node.childCount > 0 && node.firstChild.type == itemType);\n if (!range)\n return false;\n let startIndex = range.startIndex;\n if (startIndex == 0)\n return false;\n let parent = range.parent, nodeBefore = parent.child(startIndex - 1);\n if (nodeBefore.type != itemType)\n return false;\n if (dispatch) {\n let nestedBefore = nodeBefore.lastChild && nodeBefore.lastChild.type == parent.type;\n let inner = Fragment.from(nestedBefore ? itemType.create() : null);\n let slice = new Slice(Fragment.from(itemType.create(null, Fragment.from(parent.type.create(null, inner)))), nestedBefore ? 3 : 1, 0);\n let before = range.start, after = range.end;\n dispatch(state.tr.step(new ReplaceAroundStep(before - (nestedBefore ? 3 : 1), after, before, after, slice, 1, true))\n .scrollIntoView());\n }\n return true;\n };\n}\n\nexport { addListNodes, bulletList, liftListItem, listItem, orderedList, sinkListItem, splitListItem, wrapInList };\n","import { __assign } from \"tslib\";\nexport var listsTypes = {\n orderedList: 'ordered_list',\n bulletList: 'bullet_list',\n listItem: 'list_item'\n};\n/**\n * The object of the OrderedList tool settings.\n */\nexport var orderedList = {\n listType: listsTypes.orderedList,\n types: __assign({}, listsTypes)\n};\n/**\n * The object of the UnorderedList tool settings.\n */\nexport var bulletList = {\n listType: listsTypes.bulletList,\n types: __assign({}, listsTypes)\n};\n","import { __assign } from \"tslib\";\nimport { listsTypes } from './list-settings';\n/**\n * The object of the Indent tool settings.\n */\nexport var indentRules = {\n nodes: [{\n node: 'paragraph',\n style: 'margin-left',\n rtlStyle: 'margin-right',\n step: 30,\n unit: 'px'\n }, {\n node: 'heading',\n style: 'margin-left',\n rtlStyle: 'margin-right',\n step: 30,\n unit: 'px'\n }],\n listsTypes: __assign({}, listsTypes)\n};\n/**\n * The object of the Outdent tool settings.\n */\nexport var outdentRules = {\n nodes: [{\n node: 'paragraph',\n style: 'margin-left',\n rtlStyle: 'margin-right',\n step: -30,\n unit: 'px'\n }, {\n node: 'heading',\n style: 'margin-left',\n rtlStyle: 'margin-right',\n step: -30,\n unit: 'px'\n }],\n listsTypes: __assign({}, listsTypes)\n};\n","import { sinkListItem, liftListItem } from 'prosemirror-schema-list';\nimport { indentRules, outdentRules } from './config/indent-rules';\nimport { blockNodes, addStyles, changeTextBlock, hasNode } from './blockNode';\nimport { findNthParentNodeOfType } from './utils';\nimport { liftBlockquote } from './blockquote';\n/**\n * Indenting block elements in the selection.\n *\n * @returns {boolean} - Returns true if any indentation is applied.\n */\nexport var indentBlocks = function (actions, command, dir) { return function (state, dispatch) {\n var blocks = blockNodes(state);\n var tr = state.tr;\n tr.setMeta('commandName', command);\n blocks.forEach(function (node) {\n if (node.type.isTextblock) {\n var newAttrs = void 0;\n var action = actions.find(function (a) { return a.node === node.type.name; });\n if (action) {\n var style = dir === 'rtl' ? action.rtlStyle : action.style;\n var newStyle = {\n name: style,\n value: action.step > 0 ? \"\" + action.step + action.unit : ''\n };\n if (node.attrs.style) {\n var re = new RegExp(style + \":\\\\s?(\\\\d+)\" + action.unit, 'i');\n var match = node.attrs.style.match(re);\n if (match) {\n var newMargin = parseFloat(match[1]) + action.step;\n newMargin = newMargin <= 0 ? '' : newMargin;\n newStyle.value = \"\" + newMargin + (newMargin ? action.unit : '');\n }\n }\n newAttrs = addStyles(node, [newStyle]);\n }\n if (newAttrs) {\n changeTextBlock(tr, node, node.type, newAttrs);\n }\n }\n });\n var result = tr.docChanged;\n if (result) {\n dispatch(tr.scrollIntoView());\n }\n return result;\n}; };\nexport var isIndented = function (state, rules, dir) {\n var blocks = blockNodes(state);\n var result = false;\n blocks.forEach(function (node) {\n if (!result && node.type.isTextblock && node.attrs.style) {\n var action = rules.find(function (a) { return a.node === node.type.name; });\n if (action) {\n var style = dir === 'rtl' ? action.rtlStyle : action.style;\n var reIndent = new RegExp(style + \":\\\\s?\\\\d+\" + action.unit, 'i');\n result = reIndent.test(node.attrs.style);\n }\n }\n });\n return result;\n};\nexport var canIndentAsListItem = function (state, nodeType) {\n return sinkListItem(nodeType)(state);\n};\nexport var canOutdentAsListItem = function (state, rules) {\n var listItem = state.schema.nodes[rules.listsTypes.listItem];\n var orderedList = state.schema.nodes[rules.listsTypes.orderedList];\n var bulletList = state.schema.nodes[rules.listsTypes.bulletList];\n var isNestedInOL = !!findNthParentNodeOfType(orderedList, 2)(state.selection);\n var isNestedInUL = !!findNthParentNodeOfType(bulletList, 2)(state.selection);\n return (isNestedInOL || isNestedInUL) && liftListItem(listItem)(state);\n};\nexport var canBeIndented = function (state, rules) {\n var nodes = state.schema.nodes;\n var listItem = nodes[indentRules.listsTypes.listItem];\n return ((isIndented(state, rules.nodes) || indentRules.nodes.some(function (rule) { return nodes[rule.node] && hasNode(state, nodes[rule.node]); })) &&\n !hasNode(state, listItem));\n};\nexport var indent = function (state, dispatch) {\n var listItem = state.schema.nodes[indentRules.listsTypes.listItem];\n var isIndentableBlock = canBeIndented(state, indentRules);\n if (canIndentAsListItem(state, listItem)) {\n sinkListItem(listItem)(state, dispatch);\n }\n else if (isIndentableBlock) {\n indentBlocks(indentRules.nodes)(state, dispatch);\n }\n};\nexport var outdent = function (state, dispatch) {\n var nodes = state.schema.nodes;\n var listItem = nodes[outdentRules.listsTypes.listItem];\n var isIndentableBlock = canBeIndented(state, outdentRules);\n if (hasNode(state, nodes.blockquote)) {\n liftBlockquote(state, dispatch);\n }\n else if (canOutdentAsListItem(state, outdentRules)) {\n liftListItem(listItem)(state, dispatch);\n }\n else if (isIndentableBlock) {\n indentBlocks(outdentRules.nodes)(state, dispatch);\n }\n};\n","import { liftTarget, replaceStep, ReplaceStep, canJoin, joinPoint, canSplit, ReplaceAroundStep, findWrapping } from 'prosemirror-transform';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { NodeSelection, Selection, TextSelection, AllSelection } from 'prosemirror-state';\n\n/**\nDelete the selection, if there is one.\n*/\nconst deleteSelection = (state, dispatch) => {\n if (state.selection.empty)\n return false;\n if (dispatch)\n dispatch(state.tr.deleteSelection().scrollIntoView());\n return true;\n};\nfunction atBlockStart(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"backward\", state)\n : $cursor.parentOffset > 0))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and at the start of a textblock, try to\nreduce the distance between that block and the one before it—if\nthere's a block directly before it that can be joined, join them.\nIf not, try to move the selected block closer to the next one in\nthe document structure by lifting it out of its parent or moving it\ninto a parent of the previous block. Will use the view for accurate\n(bidi-aware) start-of-textblock detection if given.\n*/\nconst joinBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n // If there is no node before this, try to lift\n if (!$cut) {\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n let before = $cut.nodeBefore;\n // Apply the joining algorithm\n if (!before.type.spec.isolating && deleteBarrier(state, $cut, dispatch))\n return true;\n // If the node below has no content and the node above is\n // selectable, delete the node below and select the one above.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(before, \"end\") || NodeSelection.isSelectable(before))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(before, \"end\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos, -1)), -1)\n : NodeSelection.create(tr.doc, $cut.pos - before.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the node before is an atom, delete it\n if (before.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos - before.nodeSize, $cut.pos).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nA more limited form of [`joinBackward`]($commands.joinBackward)\nthat only tries to join the current textblock to the one before\nit, if the cursor is at the start of a textblock.\n*/\nconst joinTextblockBackward = (state, dispatch, view) => {\n let $cursor = atBlockStart(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutBefore($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\n/**\nA more limited form of [`joinForward`]($commands.joinForward)\nthat only tries to join the current textblock to the one after\nit, if the cursor is at the end of a textblock.\n*/\nconst joinTextblockForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n return $cut ? joinTextblocksAround(state, $cut, dispatch) : false;\n};\nfunction joinTextblocksAround(state, $cut, dispatch) {\n let before = $cut.nodeBefore, beforeText = before, beforePos = $cut.pos - 1;\n for (; !beforeText.isTextblock; beforePos--) {\n if (beforeText.type.spec.isolating)\n return false;\n let child = beforeText.lastChild;\n if (!child)\n return false;\n beforeText = child;\n }\n let after = $cut.nodeAfter, afterText = after, afterPos = $cut.pos + 1;\n for (; !afterText.isTextblock; afterPos++) {\n if (afterText.type.spec.isolating)\n return false;\n let child = afterText.firstChild;\n if (!child)\n return false;\n afterText = child;\n }\n let step = replaceStep(state.doc, beforePos, afterPos, Slice.empty);\n if (!step || step.from != beforePos ||\n step instanceof ReplaceStep && step.slice.size >= afterPos - beforePos)\n return false;\n if (dispatch) {\n let tr = state.tr.step(step);\n tr.setSelection(TextSelection.create(tr.doc, beforePos));\n dispatch(tr.scrollIntoView());\n }\n return true;\n}\nfunction textblockAt(node, side, only = false) {\n for (let scan = node; scan; scan = (side == \"start\" ? scan.firstChild : scan.lastChild)) {\n if (scan.isTextblock)\n return true;\n if (only && scan.childCount != 1)\n return false;\n }\n return false;\n}\n/**\nWhen the selection is empty and at the start of a textblock, select\nthe node before that textblock, if possible. This is intended to be\nbound to keys like backspace, after\n[`joinBackward`](https://prosemirror.net/docs/ref/#commands.joinBackward) or other deleting\ncommands, as a fall-back behavior when the schema doesn't allow\ndeletion at the selected point.\n*/\nconst selectNodeBackward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"backward\", state) : $head.parentOffset > 0)\n return false;\n $cut = findCutBefore($head);\n }\n let node = $cut && $cut.nodeBefore;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos - node.nodeSize)).scrollIntoView());\n return true;\n};\nfunction findCutBefore($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n if ($pos.index(i) > 0)\n return $pos.doc.resolve($pos.before(i + 1));\n if ($pos.node(i).type.spec.isolating)\n break;\n }\n return null;\n}\nfunction atBlockEnd(state, view) {\n let { $cursor } = state.selection;\n if (!$cursor || (view ? !view.endOfTextblock(\"forward\", state)\n : $cursor.parentOffset < $cursor.parent.content.size))\n return null;\n return $cursor;\n}\n/**\nIf the selection is empty and the cursor is at the end of a\ntextblock, try to reduce or remove the boundary between that block\nand the one after it, either by joining them or by moving the other\nblock closer to this one in the tree structure. Will use the view\nfor accurate start-of-textblock detection if given.\n*/\nconst joinForward = (state, dispatch, view) => {\n let $cursor = atBlockEnd(state, view);\n if (!$cursor)\n return false;\n let $cut = findCutAfter($cursor);\n // If there is no node after this, there's nothing to do\n if (!$cut)\n return false;\n let after = $cut.nodeAfter;\n // Try the joining algorithm\n if (deleteBarrier(state, $cut, dispatch))\n return true;\n // If the node above has no content and the node below is\n // selectable, delete the node above and select the one below.\n if ($cursor.parent.content.size == 0 &&\n (textblockAt(after, \"start\") || NodeSelection.isSelectable(after))) {\n let delStep = replaceStep(state.doc, $cursor.before(), $cursor.after(), Slice.empty);\n if (delStep && delStep.slice.size < delStep.to - delStep.from) {\n if (dispatch) {\n let tr = state.tr.step(delStep);\n tr.setSelection(textblockAt(after, \"start\") ? Selection.findFrom(tr.doc.resolve(tr.mapping.map($cut.pos)), 1)\n : NodeSelection.create(tr.doc, tr.mapping.map($cut.pos)));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n // If the next node is an atom, delete it\n if (after.isAtom && $cut.depth == $cursor.depth - 1) {\n if (dispatch)\n dispatch(state.tr.delete($cut.pos, $cut.pos + after.nodeSize).scrollIntoView());\n return true;\n }\n return false;\n};\n/**\nWhen the selection is empty and at the end of a textblock, select\nthe node coming after that textblock, if possible. This is intended\nto be bound to keys like delete, after\n[`joinForward`](https://prosemirror.net/docs/ref/#commands.joinForward) and similar deleting\ncommands, to provide a fall-back behavior when the schema doesn't\nallow deletion at the selected point.\n*/\nconst selectNodeForward = (state, dispatch, view) => {\n let { $head, empty } = state.selection, $cut = $head;\n if (!empty)\n return false;\n if ($head.parent.isTextblock) {\n if (view ? !view.endOfTextblock(\"forward\", state) : $head.parentOffset < $head.parent.content.size)\n return false;\n $cut = findCutAfter($head);\n }\n let node = $cut && $cut.nodeAfter;\n if (!node || !NodeSelection.isSelectable(node))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, $cut.pos)).scrollIntoView());\n return true;\n};\nfunction findCutAfter($pos) {\n if (!$pos.parent.type.spec.isolating)\n for (let i = $pos.depth - 1; i >= 0; i--) {\n let parent = $pos.node(i);\n if ($pos.index(i) + 1 < parent.childCount)\n return $pos.doc.resolve($pos.after(i + 1));\n if (parent.type.spec.isolating)\n break;\n }\n return null;\n}\n/**\nJoin the selected block or, if there is a text selection, the\nclosest ancestor block of the selection that can be joined, with\nthe sibling above it.\n*/\nconst joinUp = (state, dispatch) => {\n let sel = state.selection, nodeSel = sel instanceof NodeSelection, point;\n if (nodeSel) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.from))\n return false;\n point = sel.from;\n }\n else {\n point = joinPoint(state.doc, sel.from, -1);\n if (point == null)\n return false;\n }\n if (dispatch) {\n let tr = state.tr.join(point);\n if (nodeSel)\n tr.setSelection(NodeSelection.create(tr.doc, point - state.doc.resolve(point).nodeBefore.nodeSize));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nJoin the selected block, or the closest ancestor of the selection\nthat can be joined, with the sibling after it.\n*/\nconst joinDown = (state, dispatch) => {\n let sel = state.selection, point;\n if (sel instanceof NodeSelection) {\n if (sel.node.isTextblock || !canJoin(state.doc, sel.to))\n return false;\n point = sel.to;\n }\n else {\n point = joinPoint(state.doc, sel.to, 1);\n if (point == null)\n return false;\n }\n if (dispatch)\n dispatch(state.tr.join(point).scrollIntoView());\n return true;\n};\n/**\nLift the selected block, or the closest ancestor block of the\nselection that can be lifted, out of its parent node.\n*/\nconst lift = (state, dispatch) => {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nIf the selection is in a node whose type has a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, replace the\nselection with a newline character.\n*/\nconst newlineInCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n if (dispatch)\n dispatch(state.tr.insertText(\"\\n\").scrollIntoView());\n return true;\n};\nfunction defaultBlockAt(match) {\n for (let i = 0; i < match.edgeCount; i++) {\n let { type } = match.edge(i);\n if (type.isTextblock && !type.hasRequiredAttrs())\n return type;\n }\n return null;\n}\n/**\nWhen the selection is in a node with a truthy\n[`code`](https://prosemirror.net/docs/ref/#model.NodeSpec.code) property in its spec, create a\ndefault block after the code block, and move the cursor there.\n*/\nconst exitCode = (state, dispatch) => {\n let { $head, $anchor } = state.selection;\n if (!$head.parent.type.spec.code || !$head.sameParent($anchor))\n return false;\n let above = $head.node(-1), after = $head.indexAfter(-1), type = defaultBlockAt(above.contentMatchAt(after));\n if (!type || !above.canReplaceWith(after, after, type))\n return false;\n if (dispatch) {\n let pos = $head.after(), tr = state.tr.replaceWith(pos, pos, type.createAndFill());\n tr.setSelection(Selection.near(tr.doc.resolve(pos), 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf a block node is selected, create an empty paragraph before (if\nit is its parent's first child) or after it.\n*/\nconst createParagraphNear = (state, dispatch) => {\n let sel = state.selection, { $from, $to } = sel;\n if (sel instanceof AllSelection || $from.parent.inlineContent || $to.parent.inlineContent)\n return false;\n let type = defaultBlockAt($to.parent.contentMatchAt($to.indexAfter()));\n if (!type || !type.isTextblock)\n return false;\n if (dispatch) {\n let side = (!$from.parentOffset && $to.index() < $to.parent.childCount ? $from : $to).pos;\n let tr = state.tr.insert(side, type.createAndFill());\n tr.setSelection(TextSelection.create(tr.doc, side + 1));\n dispatch(tr.scrollIntoView());\n }\n return true;\n};\n/**\nIf the cursor is in an empty textblock that can be lifted, lift the\nblock.\n*/\nconst liftEmptyBlock = (state, dispatch) => {\n let { $cursor } = state.selection;\n if (!$cursor || $cursor.parent.content.size)\n return false;\n if ($cursor.depth > 1 && $cursor.after() != $cursor.end(-1)) {\n let before = $cursor.before();\n if (canSplit(state.doc, before)) {\n if (dispatch)\n dispatch(state.tr.split(before).scrollIntoView());\n return true;\n }\n }\n let range = $cursor.blockRange(), target = range && liftTarget(range);\n if (target == null)\n return false;\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n};\n/**\nCreate a variant of [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock) that uses\na custom function to determine the type of the newly split off block.\n*/\nfunction splitBlockAs(splitNode) {\n return (state, dispatch) => {\n let { $from, $to } = state.selection;\n if (state.selection instanceof NodeSelection && state.selection.node.isBlock) {\n if (!$from.parentOffset || !canSplit(state.doc, $from.pos))\n return false;\n if (dispatch)\n dispatch(state.tr.split($from.pos).scrollIntoView());\n return true;\n }\n if (!$from.parent.isBlock)\n return false;\n if (dispatch) {\n let atEnd = $to.parentOffset == $to.parent.content.size;\n let tr = state.tr;\n if (state.selection instanceof TextSelection || state.selection instanceof AllSelection)\n tr.deleteSelection();\n let deflt = $from.depth == 0 ? null : defaultBlockAt($from.node(-1).contentMatchAt($from.indexAfter(-1)));\n let splitType = splitNode && splitNode($to.parent, atEnd);\n let types = splitType ? [splitType] : atEnd && deflt ? [{ type: deflt }] : undefined;\n let can = canSplit(tr.doc, tr.mapping.map($from.pos), 1, types);\n if (!types && !can && canSplit(tr.doc, tr.mapping.map($from.pos), 1, deflt ? [{ type: deflt }] : undefined)) {\n if (deflt)\n types = [{ type: deflt }];\n can = true;\n }\n if (can) {\n tr.split(tr.mapping.map($from.pos), 1, types);\n if (!atEnd && !$from.parentOffset && $from.parent.type != deflt) {\n let first = tr.mapping.map($from.before()), $first = tr.doc.resolve(first);\n if (deflt && $from.node(-1).canReplaceWith($first.index(), $first.index() + 1, deflt))\n tr.setNodeMarkup(tr.mapping.map($from.before()), deflt);\n }\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\n/**\nSplit the parent block of the selection. If the selection is a text\nselection, also delete its content.\n*/\nconst splitBlock = splitBlockAs();\n/**\nActs like [`splitBlock`](https://prosemirror.net/docs/ref/#commands.splitBlock), but without\nresetting the set of active marks at the cursor.\n*/\nconst splitBlockKeepMarks = (state, dispatch) => {\n return splitBlock(state, dispatch && (tr => {\n let marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks)\n tr.ensureMarks(marks);\n dispatch(tr);\n }));\n};\n/**\nMove the selection to the node wrapping the current selection, if\nany. (Will not select the document node.)\n*/\nconst selectParentNode = (state, dispatch) => {\n let { $from, to } = state.selection, pos;\n let same = $from.sharedDepth(to);\n if (same == 0)\n return false;\n pos = $from.before(same);\n if (dispatch)\n dispatch(state.tr.setSelection(NodeSelection.create(state.doc, pos)));\n return true;\n};\n/**\nSelect the whole document.\n*/\nconst selectAll = (state, dispatch) => {\n if (dispatch)\n dispatch(state.tr.setSelection(new AllSelection(state.doc)));\n return true;\n};\nfunction joinMaybeClear(state, $pos, dispatch) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter, index = $pos.index();\n if (!before || !after || !before.type.compatibleContent(after.type))\n return false;\n if (!before.content.size && $pos.parent.canReplace(index - 1, index)) {\n if (dispatch)\n dispatch(state.tr.delete($pos.pos - before.nodeSize, $pos.pos).scrollIntoView());\n return true;\n }\n if (!$pos.parent.canReplace(index, index + 1) || !(after.isTextblock || canJoin(state.doc, $pos.pos)))\n return false;\n if (dispatch)\n dispatch(state.tr\n .clearIncompatible($pos.pos, before.type, before.contentMatchAt(before.childCount))\n .join($pos.pos)\n .scrollIntoView());\n return true;\n}\nfunction deleteBarrier(state, $cut, dispatch) {\n let before = $cut.nodeBefore, after = $cut.nodeAfter, conn, match;\n if (before.type.spec.isolating || after.type.spec.isolating)\n return false;\n if (joinMaybeClear(state, $cut, dispatch))\n return true;\n let canDelAfter = $cut.parent.canReplace($cut.index(), $cut.index() + 1);\n if (canDelAfter &&\n (conn = (match = before.contentMatchAt(before.childCount)).findWrapping(after.type)) &&\n match.matchType(conn[0] || after.type).validEnd) {\n if (dispatch) {\n let end = $cut.pos + after.nodeSize, wrap = Fragment.empty;\n for (let i = conn.length - 1; i >= 0; i--)\n wrap = Fragment.from(conn[i].create(null, wrap));\n wrap = Fragment.from(before.copy(wrap));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - 1, end, $cut.pos, end, new Slice(wrap, 1, 0), conn.length, true));\n let joinAt = end + 2 * conn.length;\n if (canJoin(tr.doc, joinAt))\n tr.join(joinAt);\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n let selAfter = Selection.findFrom($cut, 1);\n let range = selAfter && selAfter.$from.blockRange(selAfter.$to), target = range && liftTarget(range);\n if (target != null && target >= $cut.depth) {\n if (dispatch)\n dispatch(state.tr.lift(range, target).scrollIntoView());\n return true;\n }\n if (canDelAfter && textblockAt(after, \"start\", true) && textblockAt(before, \"end\")) {\n let at = before, wrap = [];\n for (;;) {\n wrap.push(at);\n if (at.isTextblock)\n break;\n at = at.lastChild;\n }\n let afterText = after, afterDepth = 1;\n for (; !afterText.isTextblock; afterText = afterText.firstChild)\n afterDepth++;\n if (at.canReplace(at.childCount, at.childCount, afterText.content)) {\n if (dispatch) {\n let end = Fragment.empty;\n for (let i = wrap.length - 1; i >= 0; i--)\n end = Fragment.from(wrap[i].copy(end));\n let tr = state.tr.step(new ReplaceAroundStep($cut.pos - wrap.length, $cut.pos + after.nodeSize, $cut.pos + afterDepth, $cut.pos + after.nodeSize - afterDepth, new Slice(end, wrap.length, 0), 0, true));\n dispatch(tr.scrollIntoView());\n }\n return true;\n }\n }\n return false;\n}\nfunction selectTextblockSide(side) {\n return function (state, dispatch) {\n let sel = state.selection, $pos = side < 0 ? sel.$from : sel.$to;\n let depth = $pos.depth;\n while ($pos.node(depth).isInline) {\n if (!depth)\n return false;\n depth--;\n }\n if (!$pos.node(depth).isTextblock)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(TextSelection.create(state.doc, side < 0 ? $pos.start(depth) : $pos.end(depth))));\n return true;\n };\n}\n/**\nMoves the cursor to the start of current text block.\n*/\nconst selectTextblockStart = selectTextblockSide(-1);\n/**\nMoves the cursor to the end of current text block.\n*/\nconst selectTextblockEnd = selectTextblockSide(1);\n// Parameterized commands\n/**\nWrap the selection in a node of the given type with the given\nattributes.\n*/\nfunction wrapIn(nodeType, attrs = null) {\n return function (state, dispatch) {\n let { $from, $to } = state.selection;\n let range = $from.blockRange($to), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return false;\n if (dispatch)\n dispatch(state.tr.wrap(range, wrapping).scrollIntoView());\n return true;\n };\n}\n/**\nReturns a command that tries to set the selected textblocks to the\ngiven node type with the given attributes.\n*/\nfunction setBlockType(nodeType, attrs = null) {\n return function (state, dispatch) {\n let applicable = false;\n for (let i = 0; i < state.selection.ranges.length && !applicable; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (applicable)\n return false;\n if (!node.isTextblock || node.hasMarkup(nodeType, attrs))\n return;\n if (node.type == nodeType) {\n applicable = true;\n }\n else {\n let $pos = state.doc.resolve(pos), index = $pos.index();\n applicable = $pos.parent.canReplaceWith(index, index + 1, nodeType);\n }\n });\n }\n if (!applicable)\n return false;\n if (dispatch) {\n let tr = state.tr;\n for (let i = 0; i < state.selection.ranges.length; i++) {\n let { $from: { pos: from }, $to: { pos: to } } = state.selection.ranges[i];\n tr.setBlockType(from, to, nodeType, attrs);\n }\n dispatch(tr.scrollIntoView());\n }\n return true;\n };\n}\nfunction markApplies(doc, ranges, type) {\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n let can = $from.depth == 0 ? doc.inlineContent && doc.type.allowsMarkType(type) : false;\n doc.nodesBetween($from.pos, $to.pos, node => {\n if (can)\n return false;\n can = node.inlineContent && node.type.allowsMarkType(type);\n });\n if (can)\n return true;\n }\n return false;\n}\n/**\nCreate a command function that toggles the given mark with the\ngiven attributes. Will return `false` when the current selection\ndoesn't support that mark. This will remove the mark if any marks\nof that type exist in the selection, or add it otherwise. If the\nselection is empty, this applies to the [stored\nmarks](https://prosemirror.net/docs/ref/#state.EditorState.storedMarks) instead of a range of the\ndocument.\n*/\nfunction toggleMark(markType, attrs = null) {\n return function (state, dispatch) {\n let { empty, $cursor, ranges } = state.selection;\n if ((empty && !$cursor) || !markApplies(state.doc, ranges, markType))\n return false;\n if (dispatch) {\n if ($cursor) {\n if (markType.isInSet(state.storedMarks || $cursor.marks()))\n dispatch(state.tr.removeStoredMark(markType));\n else\n dispatch(state.tr.addStoredMark(markType.create(attrs)));\n }\n else {\n let has = false, tr = state.tr;\n for (let i = 0; !has && i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n has = state.doc.rangeHasMark($from.pos, $to.pos, markType);\n }\n for (let i = 0; i < ranges.length; i++) {\n let { $from, $to } = ranges[i];\n if (has) {\n tr.removeMark($from.pos, $to.pos, markType);\n }\n else {\n let from = $from.pos, to = $to.pos, start = $from.nodeAfter, end = $to.nodeBefore;\n let spaceStart = start && start.isText ? /^\\s*/.exec(start.text)[0].length : 0;\n let spaceEnd = end && end.isText ? /\\s*$/.exec(end.text)[0].length : 0;\n if (from + spaceStart < to) {\n from += spaceStart;\n to -= spaceEnd;\n }\n tr.addMark(from, to, markType.create(attrs));\n }\n }\n dispatch(tr.scrollIntoView());\n }\n }\n return true;\n };\n}\nfunction wrapDispatchForJoin(dispatch, isJoinable) {\n return (tr) => {\n if (!tr.isGeneric)\n return dispatch(tr);\n let ranges = [];\n for (let i = 0; i < tr.mapping.maps.length; i++) {\n let map = tr.mapping.maps[i];\n for (let j = 0; j < ranges.length; j++)\n ranges[j] = map.map(ranges[j]);\n map.forEach((_s, _e, from, to) => ranges.push(from, to));\n }\n // Figure out which joinable points exist inside those ranges,\n // by checking all node boundaries in their parent nodes.\n let joinable = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = ranges[i], to = ranges[i + 1];\n let $from = tr.doc.resolve(from), depth = $from.sharedDepth(to), parent = $from.node(depth);\n for (let index = $from.indexAfter(depth), pos = $from.after(depth + 1); pos <= to; ++index) {\n let after = parent.maybeChild(index);\n if (!after)\n break;\n if (index && joinable.indexOf(pos) == -1) {\n let before = parent.child(index - 1);\n if (before.type == after.type && isJoinable(before, after))\n joinable.push(pos);\n }\n pos += after.nodeSize;\n }\n }\n // Join the joinable points\n joinable.sort((a, b) => a - b);\n for (let i = joinable.length - 1; i >= 0; i--) {\n if (canJoin(tr.doc, joinable[i]))\n tr.join(joinable[i]);\n }\n dispatch(tr);\n };\n}\n/**\nWrap a command so that, when it produces a transform that causes\ntwo joinable nodes to end up next to each other, those are joined.\nNodes are considered joinable when they are of the same type and\nwhen the `isJoinable` predicate returns true for them or, if an\narray of strings was passed, if their node type name is in that\narray.\n*/\nfunction autoJoin(command, isJoinable) {\n let canJoin = Array.isArray(isJoinable) ? (node) => isJoinable.indexOf(node.type.name) > -1\n : isJoinable;\n return (state, dispatch, view) => command(state, dispatch && wrapDispatchForJoin(dispatch, canJoin), view);\n}\n/**\nCombine a number of command functions into a single function (which\ncalls them one by one until one returns true).\n*/\nfunction chainCommands(...commands) {\n return function (state, dispatch, view) {\n for (let i = 0; i < commands.length; i++)\n if (commands[i](state, dispatch, view))\n return true;\n return false;\n };\n}\nlet backspace = chainCommands(deleteSelection, joinBackward, selectNodeBackward);\nlet del = chainCommands(deleteSelection, joinForward, selectNodeForward);\n/**\nA basic keymap containing bindings not specific to any schema.\nBinds the following keys (when multiple commands are listed, they\nare chained with [`chainCommands`](https://prosemirror.net/docs/ref/#commands.chainCommands)):\n\n* **Enter** to `newlineInCode`, `createParagraphNear`, `liftEmptyBlock`, `splitBlock`\n* **Mod-Enter** to `exitCode`\n* **Backspace** and **Mod-Backspace** to `deleteSelection`, `joinBackward`, `selectNodeBackward`\n* **Delete** and **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-Delete** to `deleteSelection`, `joinForward`, `selectNodeForward`\n* **Mod-a** to `selectAll`\n*/\nconst pcBaseKeymap = {\n \"Enter\": chainCommands(newlineInCode, createParagraphNear, liftEmptyBlock, splitBlock),\n \"Mod-Enter\": exitCode,\n \"Backspace\": backspace,\n \"Mod-Backspace\": backspace,\n \"Shift-Backspace\": backspace,\n \"Delete\": del,\n \"Mod-Delete\": del,\n \"Mod-a\": selectAll\n};\n/**\nA copy of `pcBaseKeymap` that also binds **Ctrl-h** like Backspace,\n**Ctrl-d** like Delete, **Alt-Backspace** like Ctrl-Backspace, and\n**Ctrl-Alt-Backspace**, **Alt-Delete**, and **Alt-d** like\nCtrl-Delete.\n*/\nconst macBaseKeymap = {\n \"Ctrl-h\": pcBaseKeymap[\"Backspace\"],\n \"Alt-Backspace\": pcBaseKeymap[\"Mod-Backspace\"],\n \"Ctrl-d\": pcBaseKeymap[\"Delete\"],\n \"Ctrl-Alt-Backspace\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-Delete\": pcBaseKeymap[\"Mod-Delete\"],\n \"Alt-d\": pcBaseKeymap[\"Mod-Delete\"],\n \"Ctrl-a\": selectTextblockStart,\n \"Ctrl-e\": selectTextblockEnd\n};\nfor (let key in pcBaseKeymap)\n macBaseKeymap[key] = pcBaseKeymap[key];\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform)\n // @ts-ignore\n : typeof os != \"undefined\" && os.platform ? os.platform() == \"darwin\" : false;\n/**\nDepending on the detected platform, this will hold\n[`pcBasekeymap`](https://prosemirror.net/docs/ref/#commands.pcBaseKeymap) or\n[`macBaseKeymap`](https://prosemirror.net/docs/ref/#commands.macBaseKeymap).\n*/\nconst baseKeymap = mac ? macBaseKeymap : pcBaseKeymap;\n\nexport { autoJoin, baseKeymap, chainCommands, createParagraphNear, deleteSelection, exitCode, joinBackward, joinDown, joinForward, joinTextblockBackward, joinTextblockForward, joinUp, lift, liftEmptyBlock, macBaseKeymap, newlineInCode, pcBaseKeymap, selectAll, selectNodeBackward, selectNodeForward, selectParentNode, selectTextblockEnd, selectTextblockStart, setBlockType, splitBlock, splitBlockAs, splitBlockKeepMarks, toggleMark, wrapIn };\n","import { __assign } from \"tslib\";\nimport { Fragment, Slice, NodeRange } from 'prosemirror-model';\nimport { TextSelection, NodeSelection } from 'prosemirror-state';\nimport { liftTarget, ReplaceAroundStep } from 'prosemirror-transform';\nimport { autoJoin } from 'prosemirror-commands';\nimport { wrapInList as pmWrapInList, splitListItem } from 'prosemirror-schema-list';\nimport { bulletList as bulletListSettings, orderedList as orderedListSettings } from './config/list-settings';\nvar rootListDepth = function (pos, nodes) {\n // Get the depth of the nearest ancestor list\n var bulletList = nodes.bulletList, orderedList = nodes.orderedList, listItem = nodes.listItem;\n var depth;\n for (var i = pos.depth - 1; i > 0; i--) {\n var node = pos.node(i);\n if (node.type === bulletList || node.type === orderedList) {\n depth = i;\n }\n if (node.type !== bulletList && node.type !== orderedList && node.type !== listItem) {\n break;\n }\n }\n return depth;\n};\nvar getListLiftTarget = function (schema, resPos, options) {\n // This will return (depth - 1) for root list parent of a list.\n var target = resPos.depth;\n var bulletList = schema.nodes[options.bulletList];\n var orderedList = schema.nodes[options.orderedList];\n var listItem = schema.nodes[options.listItem];\n for (var i = resPos.depth; i > 0; i--) {\n var node = resPos.node(i);\n if (node.type === bulletList || node.type === orderedList) {\n target = i;\n }\n if (node.type !== bulletList && node.type !== orderedList && node.type !== listItem) {\n break;\n }\n }\n return target - 1;\n};\nfunction liftSelectionList(state, tr, options) {\n // The function will list paragraphs in selection out to level 1 below root list.\n var _a = state.selection, from = _a.from, to = _a.to;\n var _b = state.schema.nodes, paragraph = _b.paragraph, heading = _b.heading;\n var listCol = [];\n tr.doc.nodesBetween(from, to, function (node, pos) {\n if (node.type === paragraph || node.type === heading) {\n listCol.push({ node: node, pos: pos });\n }\n });\n for (var i = listCol.length - 1; i >= 0; i--) {\n var block = listCol[i];\n var start = tr.doc.resolve(tr.mapping.map(block.pos));\n if (start.depth > 0) {\n var end = void 0;\n if (block.node.textContent && block.node.textContent.length > 0) {\n end = tr.doc.resolve(tr.mapping.map(block.pos + block.node.textContent.length));\n }\n else {\n end = tr.doc.resolve(tr.mapping.map(block.pos + 1));\n }\n var range = start.blockRange(end);\n if (range) {\n tr.lift(range, getListLiftTarget(state.schema, start, options));\n }\n }\n }\n return tr;\n}\nfunction toggleListCommand(options) {\n return function (state, dispatch, view) {\n if (!view) {\n return false;\n }\n state = view.state;\n var listNode = state.schema.nodes[options.listType];\n var _a = state.selection, $from = _a.$from, $to = _a.$to;\n var parent = $from.node(-2);\n var grandgrandParent = $from.node(-3);\n var isRangeOfSingleType = isRangeOfType(state.doc, $from, $to, listNode);\n if (((parent && parent.type === listNode) ||\n (grandgrandParent && grandgrandParent.type === listNode)) &&\n isRangeOfSingleType) {\n // Untoggles list\n return liftListItems(options)(state, dispatch);\n }\n else {\n // Wraps selection in list and converts list type e.g. bullet_list -> ordered_list if needed\n if (!isRangeOfSingleType) {\n liftListItems(options)(state, dispatch);\n state = view.state;\n }\n return wrapInList(listNode, options.listAttrs)(state, dispatch);\n }\n };\n}\nfunction liftListItem(state, selection, tr, nodeType) {\n var listItemNodeType = nodeType || state.schema.nodes.listItem;\n var $from = selection.$from, $to = selection.$to;\n var range = $from.blockRange($to, function (node) { return node.childCount && node.firstChild.type === listItemNodeType; });\n if (!range || range.depth < 2 || $from.node(range.depth - 1).type !== listItemNodeType) {\n return tr;\n }\n var end = range.end;\n var endOfList = $to.end(range.depth);\n if (end < endOfList) {\n tr.step(new ReplaceAroundStep(end - 1, endOfList, end, endOfList, new Slice(Fragment.from(listItemNodeType.create(undefined, range.parent.copy())), 1, 0), 1, true));\n range = new NodeRange(tr.doc.resolve($from.pos), tr.doc.resolve(endOfList), range.depth);\n }\n return tr.lift(range, liftTarget(range)).scrollIntoView();\n}\nfunction liftFollowingList(state, from, to, rootListDepthNum, tr, listItem) {\n // Function will lift list item following selection to level-1.\n if (!listItem) {\n listItem = state.schema.nodes.listItem;\n }\n var lifted = false;\n tr.doc.nodesBetween(from, to, function (node, pos) {\n if (!lifted && node.type === listItem && pos > from) {\n lifted = true;\n var listDepth = rootListDepthNum + 3;\n while (listDepth > rootListDepthNum + 2) {\n var start = tr.doc.resolve(tr.mapping.map(pos));\n listDepth = start.depth;\n var end = tr.doc.resolve(tr.mapping.map(pos + node.textContent.length));\n var sel = new TextSelection(start, end);\n tr = liftListItem(state, sel, tr, listItem);\n }\n }\n });\n return tr;\n}\nfunction isRangeOfType(doc, $from, $to, nodeType) {\n // Step through block-nodes between $from and $to and returns false if a node is\n // found that isn't of the specified type\n return getAncestorNodesBetween(doc, $from, $to).filter(function (node) { return node.type !== nodeType; }).length === 0;\n}\nfunction getAncestorNodesBetween(doc, $from, $to) {\n // Returns all top-level ancestor-nodes between $from and $to\n var nodes = Array();\n var maxDepth = findAncestorPosition(doc, $from).depth;\n var current = doc.resolve($from.start(maxDepth));\n while (current.pos <= $to.start($to.depth)) {\n var depth = Math.min(current.depth, maxDepth);\n var node = current.node(depth);\n if (node) {\n nodes.push(node);\n }\n if (depth === 0) {\n break;\n }\n var next = doc.resolve(current.after(depth));\n if (next.start(depth) >= doc.nodeSize - 2) {\n break;\n }\n if (next.depth !== current.depth) {\n next = doc.resolve(next.pos + 2);\n }\n if (next.depth) {\n current = doc.resolve(next.start(next.depth));\n }\n else {\n current = doc.resolve(next.end(next.depth));\n }\n }\n return nodes;\n}\nfunction findAncestorPosition(doc, pos) {\n // Traverse the document until an \"ancestor\" is found. Any nestable block can be an ancestor.\n var nestableBlocks = ['blockquote', 'bulletList', 'orderedList'];\n if (pos.depth === 1) {\n return pos;\n }\n var node = pos.node(pos.depth);\n var newPos = pos;\n while (pos.depth >= 1) {\n pos = doc.resolve(pos.before(pos.depth));\n node = pos.node(pos.depth);\n if (node && nestableBlocks.indexOf(node.type.name) !== -1) {\n newPos = pos;\n }\n }\n return newPos;\n}\nfunction liftListItems(options) {\n return function (state, dispatch) {\n var tr = state.tr;\n var _a = state.selection, $from = _a.$from, $to = _a.$to;\n tr.doc.nodesBetween($from.pos, $to.pos, function (node, pos) {\n // Following condition will ensure that block types `paragraph`, `heading`, `codeBlock`, `blockquote`, `div` are lifted.\n // isTextblock is true for paragraph, heading, codeBlock.\n if (node.isTextblock || node.type.name === 'blockquote' || node.type.name === 'div') {\n var sel = new NodeSelection(tr.doc.resolve(tr.mapping.map(pos)));\n var range = sel.$from.blockRange(sel.$to);\n if (!range || sel.$from.parent.type !== state.schema.nodes[options.listItem]) {\n return false;\n }\n var target = range && liftTarget(range);\n if (target === undefined || target === null) {\n return false;\n }\n tr.lift(range, target);\n }\n });\n if (dispatch) {\n dispatch(tr);\n }\n return true;\n };\n}\nfunction wrapInList(nodeType, attrs) {\n if (attrs === void 0) { attrs = {}; }\n return autoJoin(pmWrapInList(nodeType, attrs), function (before, after) { return before.type === after.type && before.type === nodeType; });\n}\nvar reListStyle = /list\\-style\\-type:\\s?([\\w-]+)/;\n/**\n * Extracts list-style-type style from node's attributes.\n * @param attrs - The attributes of the list node\n * @returns The extracted list-style-type.\n */\nexport var listStyle = function (attrs) {\n var styleAttr = attrs.style || '';\n var execArray = reListStyle.exec(styleAttr);\n return (execArray && execArray[1]) || '';\n};\nexport var toggleList = function (state, dispatch, view, options, command) {\n var listType = options.listType, _a = options.listAttrs, listAttrs = _a === void 0 ? { style: null } : _a;\n var selection = state.selection;\n var fromNode = selection.$from.node(selection.$from.depth - 2);\n var endNode = selection.$to.node(selection.$to.depth - 2);\n if (!fromNode || fromNode.type.name !== listType || listStyle(fromNode.attrs) !== listStyle(listAttrs) ||\n (!endNode || endNode.type.name !== listType || listStyle(endNode.attrs) !== listStyle(listAttrs))) {\n return toggleListCommand(options)(state, dispatch, view);\n }\n else {\n var nodes = view.state.schema.nodes;\n var listNodes = {\n bulletList: nodes[options.bulletList],\n orderedList: nodes[options.orderedList],\n listItem: nodes[options.listItem]\n };\n var depth = rootListDepth(selection.$to, listNodes);\n var tr = liftFollowingList(state, selection.$to.pos, selection.$to.end(depth), depth, view.state.tr, listNodes.listItem);\n tr = liftSelectionList(state, tr, options);\n tr.setMeta('commandName', command);\n dispatch(tr);\n return true;\n }\n};\nexport function toggleUnorderedList(state, dispatch, view) {\n return toggleList(state, dispatch, view, __assign({ listType: bulletListSettings.listType }, bulletListSettings.types));\n}\nexport function toggleOrderedList(state, dispatch, view) {\n return toggleList(state, dispatch, view, __assign({ listType: orderedListSettings.listType }, orderedListSettings.types));\n}\nexport var splitListItemKeepMarks = function (itemType) { return function (state, dispatch) {\n // see https://github.com/ProseMirror/prosemirror-commands/blob/master/src/commands.js#L321-L327\n return splitListItem(itemType)(state, function (tr) {\n var marks = state.storedMarks || (state.selection.$to.parentOffset && state.selection.$from.marks());\n if (marks) {\n tr.ensureMarks(marks);\n }\n dispatch(tr);\n });\n}; };\n","var style = function (name, value) {\n return { name: name, value: value };\n};\nexport var alignLeftRules = [\n { node: 'paragraph', style: [style('text-align', 'left')] },\n { node: 'heading', style: [style('text-align', 'left')] },\n { node: 'table_caption_external', style: [style('text-align', 'left')] }\n];\nexport var alignRightRules = [\n { node: 'paragraph', style: [style('text-align', 'right')] },\n { node: 'heading', style: [style('text-align', 'right')] },\n { node: 'table_caption_external', style: [style('text-align', 'right')] }\n];\nexport var alignCenterRules = [\n { node: 'paragraph', style: [style('text-align', 'center')] },\n { node: 'heading', style: [style('text-align', 'center')] },\n { node: 'table_caption_external', style: [style('text-align', 'center')] }\n];\nexport var alignJustifyRules = [\n { node: 'paragraph', style: [style('text-align', 'justify')] },\n { node: 'heading', style: [style('text-align', 'justify')] },\n { node: 'table_caption_external', style: [style('text-align', 'justify')] }\n];\nexport var alignRemoveRules = [\n { node: 'paragraph', style: [style('text-align', '')] },\n { node: 'heading', style: [style('text-align', '')] },\n { node: 'table_caption_external', style: [style('text-align', '')] }\n];\n","import { TextSelection, NodeSelection, AllSelection, Selection } from 'prosemirror-state';\nimport { DOMSerializer, Fragment, Mark, Slice, DOMParser } from 'prosemirror-model';\nimport { dropPoint } from 'prosemirror-transform';\n\nconst domIndex = function (node) {\n for (var index = 0;; index++) {\n node = node.previousSibling;\n if (!node)\n return index;\n }\n};\nconst parentNode = function (node) {\n let parent = node.assignedSlot || node.parentNode;\n return parent && parent.nodeType == 11 ? parent.host : parent;\n};\nlet reusedRange = null;\n// Note that this will always return the same range, because DOM range\n// objects are every expensive, and keep slowing down subsequent DOM\n// updates, for some reason.\nconst textRange = function (node, from, to) {\n let range = reusedRange || (reusedRange = document.createRange());\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, from || 0);\n return range;\n};\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nconst isEquivalentPosition = function (node, off, targetNode, targetOff) {\n return targetNode && (scanFor(node, off, targetNode, targetOff, -1) ||\n scanFor(node, off, targetNode, targetOff, 1));\n};\nconst atomElements = /^(img|br|input|textarea|hr)$/i;\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n for (;;) {\n if (node == targetNode && off == targetOff)\n return true;\n if (off == (dir < 0 ? 0 : nodeSize(node))) {\n let parent = node.parentNode;\n if (!parent || parent.nodeType != 1 || hasBlockDesc(node) || atomElements.test(node.nodeName) ||\n node.contentEditable == \"false\")\n return false;\n off = domIndex(node) + (dir < 0 ? 0 : 1);\n node = parent;\n }\n else if (node.nodeType == 1) {\n node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n if (node.contentEditable == \"false\")\n return false;\n off = dir < 0 ? nodeSize(node) : 0;\n }\n else {\n return false;\n }\n }\n}\nfunction nodeSize(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isOnEdge(node, offset, parent) {\n for (let atStart = offset == 0, atEnd = offset == nodeSize(node); atStart || atEnd;) {\n if (node == parent)\n return true;\n let index = domIndex(node);\n node = node.parentNode;\n if (!node)\n return false;\n atStart = atStart && index == 0;\n atEnd = atEnd && index == nodeSize(node);\n }\n}\nfunction hasBlockDesc(dom) {\n let desc;\n for (let cur = dom; cur; cur = cur.parentNode)\n if (desc = cur.pmViewDesc)\n break;\n return desc && desc.node && desc.node.isBlock && (desc.dom == dom || desc.contentDOM == dom);\n}\n// Work around Chrome issue https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n// (isCollapsed inappropriately returns true in shadow dom)\nconst selectionCollapsed = function (domSel) {\n return domSel.focusNode && isEquivalentPosition(domSel.focusNode, domSel.focusOffset, domSel.anchorNode, domSel.anchorOffset);\n};\nfunction keyEvent(keyCode, key) {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"keydown\", true, true);\n event.keyCode = keyCode;\n event.key = event.code = key;\n return event;\n}\nfunction deepActiveElement(doc) {\n let elt = doc.activeElement;\n while (elt && elt.shadowRoot)\n elt = elt.shadowRoot.activeElement;\n return elt;\n}\nfunction caretFromPoint(doc, x, y) {\n if (doc.caretPositionFromPoint) {\n try { // Firefox throws for this call in hard-to-predict circumstances (#994)\n let pos = doc.caretPositionFromPoint(x, y);\n if (pos)\n return { node: pos.offsetNode, offset: pos.offset };\n }\n catch (_) { }\n }\n if (doc.caretRangeFromPoint) {\n let range = doc.caretRangeFromPoint(x, y);\n if (range)\n return { node: range.startContainer, offset: range.startOffset };\n }\n}\n\nconst nav = typeof navigator != \"undefined\" ? navigator : null;\nconst doc = typeof document != \"undefined\" ? document : null;\nconst agent = (nav && nav.userAgent) || \"\";\nconst ie_edge = /Edge\\/(\\d+)/.exec(agent);\nconst ie_upto10 = /MSIE \\d/.exec(agent);\nconst ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(agent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst ie_version = ie_upto10 ? document.documentMode : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0;\nconst gecko = !ie && /gecko\\/(\\d+)/i.test(agent);\ngecko && +(/Firefox\\/(\\d+)/.exec(agent) || [0, 0])[1];\nconst _chrome = !ie && /Chrome\\/(\\d+)/.exec(agent);\nconst chrome = !!_chrome;\nconst chrome_version = _chrome ? +_chrome[1] : 0;\nconst safari = !ie && !!nav && /Apple Computer/.test(nav.vendor);\n// Is true for both iOS and iPadOS for convenience\nconst ios = safari && (/Mobile\\/\\w+/.test(agent) || !!nav && nav.maxTouchPoints > 2);\nconst mac = ios || (nav ? /Mac/.test(nav.platform) : false);\nconst windows = nav ? /Win/.test(nav.platform) : false;\nconst android = /Android \\d/.test(agent);\nconst webkit = !!doc && \"webkitFontSmoothing\" in doc.documentElement.style;\nconst webkit_version = webkit ? +(/\\bAppleWebKit\\/(\\d+)/.exec(navigator.userAgent) || [0, 0])[1] : 0;\n\nfunction windowRect(doc) {\n return { left: 0, right: doc.documentElement.clientWidth,\n top: 0, bottom: doc.documentElement.clientHeight };\n}\nfunction getSide(value, side) {\n return typeof value == \"number\" ? value : value[side];\n}\nfunction clientRect(node) {\n let rect = node.getBoundingClientRect();\n // Adjust for elements with style \"transform: scale()\"\n let scaleX = (rect.width / node.offsetWidth) || 1;\n let scaleY = (rect.height / node.offsetHeight) || 1;\n // Make sure scrollbar width isn't included in the rectangle\n return { left: rect.left, right: rect.left + node.clientWidth * scaleX,\n top: rect.top, bottom: rect.top + node.clientHeight * scaleY };\n}\nfunction scrollRectIntoView(view, rect, startDOM) {\n let scrollThreshold = view.someProp(\"scrollThreshold\") || 0, scrollMargin = view.someProp(\"scrollMargin\") || 5;\n let doc = view.dom.ownerDocument;\n for (let parent = startDOM || view.dom;; parent = parentNode(parent)) {\n if (!parent)\n break;\n if (parent.nodeType != 1)\n continue;\n let elt = parent;\n let atTop = elt == doc.body;\n let bounding = atTop ? windowRect(doc) : clientRect(elt);\n let moveX = 0, moveY = 0;\n if (rect.top < bounding.top + getSide(scrollThreshold, \"top\"))\n moveY = -(bounding.top - rect.top + getSide(scrollMargin, \"top\"));\n else if (rect.bottom > bounding.bottom - getSide(scrollThreshold, \"bottom\"))\n moveY = rect.bottom - rect.top > bounding.bottom - bounding.top\n ? rect.top + getSide(scrollMargin, \"top\") - bounding.top\n : rect.bottom - bounding.bottom + getSide(scrollMargin, \"bottom\");\n if (rect.left < bounding.left + getSide(scrollThreshold, \"left\"))\n moveX = -(bounding.left - rect.left + getSide(scrollMargin, \"left\"));\n else if (rect.right > bounding.right - getSide(scrollThreshold, \"right\"))\n moveX = rect.right - bounding.right + getSide(scrollMargin, \"right\");\n if (moveX || moveY) {\n if (atTop) {\n doc.defaultView.scrollBy(moveX, moveY);\n }\n else {\n let startX = elt.scrollLeft, startY = elt.scrollTop;\n if (moveY)\n elt.scrollTop += moveY;\n if (moveX)\n elt.scrollLeft += moveX;\n let dX = elt.scrollLeft - startX, dY = elt.scrollTop - startY;\n rect = { left: rect.left - dX, top: rect.top - dY, right: rect.right - dX, bottom: rect.bottom - dY };\n }\n }\n if (atTop || /^(fixed|sticky)$/.test(getComputedStyle(parent).position))\n break;\n }\n}\n// Store the scroll position of the editor's parent nodes, along with\n// the top position of an element near the top of the editor, which\n// will be used to make sure the visible viewport remains stable even\n// when the size of the content above changes.\nfunction storeScrollPos(view) {\n let rect = view.dom.getBoundingClientRect(), startY = Math.max(0, rect.top);\n let refDOM, refTop;\n for (let x = (rect.left + rect.right) / 2, y = startY + 1; y < Math.min(innerHeight, rect.bottom); y += 5) {\n let dom = view.root.elementFromPoint(x, y);\n if (!dom || dom == view.dom || !view.dom.contains(dom))\n continue;\n let localRect = dom.getBoundingClientRect();\n if (localRect.top >= startY - 20) {\n refDOM = dom;\n refTop = localRect.top;\n break;\n }\n }\n return { refDOM: refDOM, refTop: refTop, stack: scrollStack(view.dom) };\n}\nfunction scrollStack(dom) {\n let stack = [], doc = dom.ownerDocument;\n for (let cur = dom; cur; cur = parentNode(cur)) {\n stack.push({ dom: cur, top: cur.scrollTop, left: cur.scrollLeft });\n if (dom == doc)\n break;\n }\n return stack;\n}\n// Reset the scroll position of the editor's parent nodes to that what\n// it was before, when storeScrollPos was called.\nfunction resetScrollPos({ refDOM, refTop, stack }) {\n let newRefTop = refDOM ? refDOM.getBoundingClientRect().top : 0;\n restoreScrollStack(stack, newRefTop == 0 ? 0 : newRefTop - refTop);\n}\nfunction restoreScrollStack(stack, dTop) {\n for (let i = 0; i < stack.length; i++) {\n let { dom, top, left } = stack[i];\n if (dom.scrollTop != top + dTop)\n dom.scrollTop = top + dTop;\n if (dom.scrollLeft != left)\n dom.scrollLeft = left;\n }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n if (dom.setActive)\n return dom.setActive(); // in IE\n if (preventScrollSupported)\n return dom.focus(preventScrollSupported);\n let stored = scrollStack(dom);\n dom.focus(preventScrollSupported == null ? {\n get preventScroll() {\n preventScrollSupported = { preventScroll: true };\n return true;\n }\n } : undefined);\n if (!preventScrollSupported) {\n preventScrollSupported = false;\n restoreScrollStack(stored, 0);\n }\n}\nfunction findOffsetInNode(node, coords) {\n let closest, dxClosest = 2e8, coordsClosest, offset = 0;\n let rowBot = coords.top, rowTop = coords.top;\n let firstBelow, coordsBelow;\n for (let child = node.firstChild, childIndex = 0; child; child = child.nextSibling, childIndex++) {\n let rects;\n if (child.nodeType == 1)\n rects = child.getClientRects();\n else if (child.nodeType == 3)\n rects = textRange(child).getClientRects();\n else\n continue;\n for (let i = 0; i < rects.length; i++) {\n let rect = rects[i];\n if (rect.top <= rowBot && rect.bottom >= rowTop) {\n rowBot = Math.max(rect.bottom, rowBot);\n rowTop = Math.min(rect.top, rowTop);\n let dx = rect.left > coords.left ? rect.left - coords.left\n : rect.right < coords.left ? coords.left - rect.right : 0;\n if (dx < dxClosest) {\n closest = child;\n dxClosest = dx;\n coordsClosest = dx && closest.nodeType == 3 ? {\n left: rect.right < coords.left ? rect.right : rect.left,\n top: coords.top\n } : coords;\n if (child.nodeType == 1 && dx)\n offset = childIndex + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0);\n continue;\n }\n }\n else if (rect.top > coords.top && !firstBelow && rect.left <= coords.left && rect.right >= coords.left) {\n firstBelow = child;\n coordsBelow = { left: Math.max(rect.left, Math.min(rect.right, coords.left)), top: rect.top };\n }\n if (!closest && (coords.left >= rect.right && coords.top >= rect.top ||\n coords.left >= rect.left && coords.top >= rect.bottom))\n offset = childIndex + 1;\n }\n }\n if (!closest && firstBelow) {\n closest = firstBelow;\n coordsClosest = coordsBelow;\n dxClosest = 0;\n }\n if (closest && closest.nodeType == 3)\n return findOffsetInText(closest, coordsClosest);\n if (!closest || (dxClosest && closest.nodeType == 1))\n return { node, offset };\n return findOffsetInNode(closest, coordsClosest);\n}\nfunction findOffsetInText(node, coords) {\n let len = node.nodeValue.length;\n let range = document.createRange();\n for (let i = 0; i < len; i++) {\n range.setEnd(node, i + 1);\n range.setStart(node, i);\n let rect = singleRect(range, 1);\n if (rect.top == rect.bottom)\n continue;\n if (inRect(coords, rect))\n return { node, offset: i + (coords.left >= (rect.left + rect.right) / 2 ? 1 : 0) };\n }\n return { node, offset: 0 };\n}\nfunction inRect(coords, rect) {\n return coords.left >= rect.left - 1 && coords.left <= rect.right + 1 &&\n coords.top >= rect.top - 1 && coords.top <= rect.bottom + 1;\n}\nfunction targetKludge(dom, coords) {\n let parent = dom.parentNode;\n if (parent && /^li$/i.test(parent.nodeName) && coords.left < dom.getBoundingClientRect().left)\n return parent;\n return dom;\n}\nfunction posFromElement(view, elt, coords) {\n let { node, offset } = findOffsetInNode(elt, coords), bias = -1;\n if (node.nodeType == 1 && !node.firstChild) {\n let rect = node.getBoundingClientRect();\n bias = rect.left != rect.right && coords.left > (rect.left + rect.right) / 2 ? 1 : -1;\n }\n return view.docView.posFromDOM(node, offset, bias);\n}\nfunction posFromCaret(view, node, offset, coords) {\n // Browser (in caretPosition/RangeFromPoint) will agressively\n // normalize towards nearby inline nodes. Since we are interested in\n // positions between block nodes too, we first walk up the hierarchy\n // of nodes to see if there are block nodes that the coordinates\n // fall outside of. If so, we take the position before/after that\n // block. If not, we call `posFromDOM` on the raw node/offset.\n let outsideBlock = -1;\n for (let cur = node, sawBlock = false;;) {\n if (cur == view.dom)\n break;\n let desc = view.docView.nearestDesc(cur, true);\n if (!desc)\n return null;\n if (desc.dom.nodeType == 1 && (desc.node.isBlock && desc.parent && !sawBlock || !desc.contentDOM)) {\n let rect = desc.dom.getBoundingClientRect();\n if (desc.node.isBlock && desc.parent && !sawBlock) {\n sawBlock = true;\n if (rect.left > coords.left || rect.top > coords.top)\n outsideBlock = desc.posBefore;\n else if (rect.right < coords.left || rect.bottom < coords.top)\n outsideBlock = desc.posAfter;\n }\n if (!desc.contentDOM && outsideBlock < 0 && !desc.node.isText) {\n // If we are inside a leaf, return the side of the leaf closer to the coords\n let before = desc.node.isBlock ? coords.top < (rect.top + rect.bottom) / 2\n : coords.left < (rect.left + rect.right) / 2;\n return before ? desc.posBefore : desc.posAfter;\n }\n }\n cur = desc.dom.parentNode;\n }\n return outsideBlock > -1 ? outsideBlock : view.docView.posFromDOM(node, offset, -1);\n}\nfunction elementFromPoint(element, coords, box) {\n let len = element.childNodes.length;\n if (len && box.top < box.bottom) {\n for (let startI = Math.max(0, Math.min(len - 1, Math.floor(len * (coords.top - box.top) / (box.bottom - box.top)) - 2)), i = startI;;) {\n let child = element.childNodes[i];\n if (child.nodeType == 1) {\n let rects = child.getClientRects();\n for (let j = 0; j < rects.length; j++) {\n let rect = rects[j];\n if (inRect(coords, rect))\n return elementFromPoint(child, coords, rect);\n }\n }\n if ((i = (i + 1) % len) == startI)\n break;\n }\n }\n return element;\n}\n// Given an x,y position on the editor, get the position in the document.\nfunction posAtCoords(view, coords) {\n let doc = view.dom.ownerDocument, node, offset = 0;\n let caret = caretFromPoint(doc, coords.left, coords.top);\n if (caret)\n ({ node, offset } = caret);\n let elt = (view.root.elementFromPoint ? view.root : doc)\n .elementFromPoint(coords.left, coords.top);\n let pos;\n if (!elt || !view.dom.contains(elt.nodeType != 1 ? elt.parentNode : elt)) {\n let box = view.dom.getBoundingClientRect();\n if (!inRect(coords, box))\n return null;\n elt = elementFromPoint(view.dom, coords, box);\n if (!elt)\n return null;\n }\n // Safari's caretRangeFromPoint returns nonsense when on a draggable element\n if (safari) {\n for (let p = elt; node && p; p = parentNode(p))\n if (p.draggable)\n node = undefined;\n }\n elt = targetKludge(elt, coords);\n if (node) {\n if (gecko && node.nodeType == 1) {\n // Firefox will sometimes return offsets into nodes, which\n // have no actual children, from caretPositionFromPoint (#953)\n offset = Math.min(offset, node.childNodes.length);\n // It'll also move the returned position before image nodes,\n // even if those are behind it.\n if (offset < node.childNodes.length) {\n let next = node.childNodes[offset], box;\n if (next.nodeName == \"IMG\" && (box = next.getBoundingClientRect()).right <= coords.left &&\n box.bottom > coords.top)\n offset++;\n }\n }\n // Suspiciously specific kludge to work around caret*FromPoint\n // never returning a position at the end of the document\n if (node == view.dom && offset == node.childNodes.length - 1 && node.lastChild.nodeType == 1 &&\n coords.top > node.lastChild.getBoundingClientRect().bottom)\n pos = view.state.doc.content.size;\n // Ignore positions directly after a BR, since caret*FromPoint\n // 'round up' positions that would be more accurately placed\n // before the BR node.\n else if (offset == 0 || node.nodeType != 1 || node.childNodes[offset - 1].nodeName != \"BR\")\n pos = posFromCaret(view, node, offset, coords);\n }\n if (pos == null)\n pos = posFromElement(view, elt, coords);\n let desc = view.docView.nearestDesc(elt, true);\n return { pos, inside: desc ? desc.posAtStart - desc.border : -1 };\n}\nfunction nonZero(rect) {\n return rect.top < rect.bottom || rect.left < rect.right;\n}\nfunction singleRect(target, bias) {\n let rects = target.getClientRects();\n if (rects.length) {\n let first = rects[bias < 0 ? 0 : rects.length - 1];\n if (nonZero(first))\n return first;\n }\n return Array.prototype.find.call(rects, nonZero) || target.getBoundingClientRect();\n}\nconst BIDI = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n// Given a position in the document model, get a bounding box of the\n// character at that position, relative to the window.\nfunction coordsAtPos(view, pos, side) {\n let { node, offset, atom } = view.docView.domFromPos(pos, side < 0 ? -1 : 1);\n let supportEmptyRange = webkit || gecko;\n if (node.nodeType == 3) {\n // These browsers support querying empty text ranges. Prefer that in\n // bidi context or when at the end of a node.\n if (supportEmptyRange && (BIDI.test(node.nodeValue) || (side < 0 ? !offset : offset == node.nodeValue.length))) {\n let rect = singleRect(textRange(node, offset, offset), side);\n // Firefox returns bad results (the position before the space)\n // when querying a position directly after line-broken\n // whitespace. Detect this situation and and kludge around it\n if (gecko && offset && /\\s/.test(node.nodeValue[offset - 1]) && offset < node.nodeValue.length) {\n let rectBefore = singleRect(textRange(node, offset - 1, offset - 1), -1);\n if (rectBefore.top == rect.top) {\n let rectAfter = singleRect(textRange(node, offset, offset + 1), -1);\n if (rectAfter.top != rect.top)\n return flattenV(rectAfter, rectAfter.left < rectBefore.left);\n }\n }\n return rect;\n }\n else {\n let from = offset, to = offset, takeSide = side < 0 ? 1 : -1;\n if (side < 0 && !offset) {\n to++;\n takeSide = -1;\n }\n else if (side >= 0 && offset == node.nodeValue.length) {\n from--;\n takeSide = 1;\n }\n else if (side < 0) {\n from--;\n }\n else {\n to++;\n }\n return flattenV(singleRect(textRange(node, from, to), takeSide), takeSide < 0);\n }\n }\n let $dom = view.state.doc.resolve(pos - (atom || 0));\n // Return a horizontal line in block context\n if (!$dom.parent.inlineContent) {\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n if (before.nodeType == 1)\n return flattenH(before.getBoundingClientRect(), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n if (after.nodeType == 1)\n return flattenH(after.getBoundingClientRect(), true);\n }\n return flattenH(node.getBoundingClientRect(), side >= 0);\n }\n // Inline, not in text node (this is not Bidi-safe)\n if (atom == null && offset && (side < 0 || offset == nodeSize(node))) {\n let before = node.childNodes[offset - 1];\n let target = before.nodeType == 3 ? textRange(before, nodeSize(before) - (supportEmptyRange ? 0 : 1))\n // BR nodes tend to only return the rectangle before them.\n // Only use them if they are the last element in their parent\n : before.nodeType == 1 && (before.nodeName != \"BR\" || !before.nextSibling) ? before : null;\n if (target)\n return flattenV(singleRect(target, 1), false);\n }\n if (atom == null && offset < nodeSize(node)) {\n let after = node.childNodes[offset];\n while (after.pmViewDesc && after.pmViewDesc.ignoreForCoords)\n after = after.nextSibling;\n let target = !after ? null : after.nodeType == 3 ? textRange(after, 0, (supportEmptyRange ? 0 : 1))\n : after.nodeType == 1 ? after : null;\n if (target)\n return flattenV(singleRect(target, -1), true);\n }\n // All else failed, just try to get a rectangle for the target node\n return flattenV(singleRect(node.nodeType == 3 ? textRange(node) : node, -side), side >= 0);\n}\nfunction flattenV(rect, left) {\n if (rect.width == 0)\n return rect;\n let x = left ? rect.left : rect.right;\n return { top: rect.top, bottom: rect.bottom, left: x, right: x };\n}\nfunction flattenH(rect, top) {\n if (rect.height == 0)\n return rect;\n let y = top ? rect.top : rect.bottom;\n return { top: y, bottom: y, left: rect.left, right: rect.right };\n}\nfunction withFlushedState(view, state, f) {\n let viewState = view.state, active = view.root.activeElement;\n if (viewState != state)\n view.updateState(state);\n if (active != view.dom)\n view.focus();\n try {\n return f();\n }\n finally {\n if (viewState != state)\n view.updateState(viewState);\n if (active != view.dom && active)\n active.focus();\n }\n}\n// Whether vertical position motion in a given direction\n// from a position would leave a text block.\nfunction endOfTextblockVertical(view, state, dir) {\n let sel = state.selection;\n let $pos = dir == \"up\" ? sel.$from : sel.$to;\n return withFlushedState(view, state, () => {\n let { node: dom } = view.docView.domFromPos($pos.pos, dir == \"up\" ? -1 : 1);\n for (;;) {\n let nearest = view.docView.nearestDesc(dom, true);\n if (!nearest)\n break;\n if (nearest.node.isBlock) {\n dom = nearest.contentDOM || nearest.dom;\n break;\n }\n dom = nearest.dom.parentNode;\n }\n let coords = coordsAtPos(view, $pos.pos, 1);\n for (let child = dom.firstChild; child; child = child.nextSibling) {\n let boxes;\n if (child.nodeType == 1)\n boxes = child.getClientRects();\n else if (child.nodeType == 3)\n boxes = textRange(child, 0, child.nodeValue.length).getClientRects();\n else\n continue;\n for (let i = 0; i < boxes.length; i++) {\n let box = boxes[i];\n if (box.bottom > box.top + 1 &&\n (dir == \"up\" ? coords.top - box.top > (box.bottom - coords.top) * 2\n : box.bottom - coords.bottom > (coords.bottom - box.top) * 2))\n return false;\n }\n }\n return true;\n });\n}\nconst maybeRTL = /[\\u0590-\\u08ac]/;\nfunction endOfTextblockHorizontal(view, state, dir) {\n let { $head } = state.selection;\n if (!$head.parent.isTextblock)\n return false;\n let offset = $head.parentOffset, atStart = !offset, atEnd = offset == $head.parent.content.size;\n let sel = view.domSelection();\n // If the textblock is all LTR, or the browser doesn't support\n // Selection.modify (Edge), fall back to a primitive approach\n if (!maybeRTL.test($head.parent.textContent) || !sel.modify)\n return dir == \"left\" || dir == \"backward\" ? atStart : atEnd;\n return withFlushedState(view, state, () => {\n // This is a huge hack, but appears to be the best we can\n // currently do: use `Selection.modify` to move the selection by\n // one character, and see if that moves the cursor out of the\n // textblock (or doesn't move it at all, when at the start/end of\n // the document).\n let { focusNode: oldNode, focusOffset: oldOff, anchorNode, anchorOffset } = view.domSelectionRange();\n let oldBidiLevel = sel.caretBidiLevel // Only for Firefox\n ;\n sel.modify(\"move\", dir, \"character\");\n let parentDOM = $head.depth ? view.docView.domAfterPos($head.before()) : view.dom;\n let { focusNode: newNode, focusOffset: newOff } = view.domSelectionRange();\n let result = newNode && !parentDOM.contains(newNode.nodeType == 1 ? newNode : newNode.parentNode) ||\n (oldNode == newNode && oldOff == newOff);\n // Restore the previous selection\n try {\n sel.collapse(anchorNode, anchorOffset);\n if (oldNode && (oldNode != anchorNode || oldOff != anchorOffset) && sel.extend)\n sel.extend(oldNode, oldOff);\n }\n catch (_) { }\n if (oldBidiLevel != null)\n sel.caretBidiLevel = oldBidiLevel;\n return result;\n });\n}\nlet cachedState = null;\nlet cachedDir = null;\nlet cachedResult = false;\nfunction endOfTextblock(view, state, dir) {\n if (cachedState == state && cachedDir == dir)\n return cachedResult;\n cachedState = state;\n cachedDir = dir;\n return cachedResult = dir == \"up\" || dir == \"down\"\n ? endOfTextblockVertical(view, state, dir)\n : endOfTextblockHorizontal(view, state, dir);\n}\n\n// View descriptions are data structures that describe the DOM that is\n// used to represent the editor's content. They are used for:\n//\n// - Incremental redrawing when the document changes\n//\n// - Figuring out what part of the document a given DOM position\n// corresponds to\n//\n// - Wiring in custom implementations of the editing interface for a\n// given node\n//\n// They form a doubly-linked mutable tree, starting at `view.docView`.\nconst NOT_DIRTY = 0, CHILD_DIRTY = 1, CONTENT_DIRTY = 2, NODE_DIRTY = 3;\n// Superclass for the various kinds of descriptions. Defines their\n// basic structure and shared methods.\nclass ViewDesc {\n constructor(parent, children, dom, \n // This is the node that holds the child views. It may be null for\n // descs that don't have children.\n contentDOM) {\n this.parent = parent;\n this.children = children;\n this.dom = dom;\n this.contentDOM = contentDOM;\n this.dirty = NOT_DIRTY;\n // An expando property on the DOM node provides a link back to its\n // description.\n dom.pmViewDesc = this;\n }\n // Used to check whether a given description corresponds to a\n // widget/mark/node.\n matchesWidget(widget) { return false; }\n matchesMark(mark) { return false; }\n matchesNode(node, outerDeco, innerDeco) { return false; }\n matchesHack(nodeName) { return false; }\n // When parsing in-editor content (in domchange.js), we allow\n // descriptions to determine the parse rules that should be used to\n // parse them.\n parseRule() { return null; }\n // Used by the editor's event handler to ignore events that come\n // from certain descs.\n stopEvent(event) { return false; }\n // The size of the content represented by this desc.\n get size() {\n let size = 0;\n for (let i = 0; i < this.children.length; i++)\n size += this.children[i].size;\n return size;\n }\n // For block nodes, this represents the space taken up by their\n // start/end tokens.\n get border() { return 0; }\n destroy() {\n this.parent = undefined;\n if (this.dom.pmViewDesc == this)\n this.dom.pmViewDesc = undefined;\n for (let i = 0; i < this.children.length; i++)\n this.children[i].destroy();\n }\n posBeforeChild(child) {\n for (let i = 0, pos = this.posAtStart;; i++) {\n let cur = this.children[i];\n if (cur == child)\n return pos;\n pos += cur.size;\n }\n }\n get posBefore() {\n return this.parent.posBeforeChild(this);\n }\n get posAtStart() {\n return this.parent ? this.parent.posBeforeChild(this) + this.border : 0;\n }\n get posAfter() {\n return this.posBefore + this.size;\n }\n get posAtEnd() {\n return this.posAtStart + this.size - 2 * this.border;\n }\n localPosFromDOM(dom, offset, bias) {\n // If the DOM position is in the content, use the child desc after\n // it to figure out a position.\n if (this.contentDOM && this.contentDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode)) {\n if (bias < 0) {\n let domBefore, desc;\n if (dom == this.contentDOM) {\n domBefore = dom.childNodes[offset - 1];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domBefore = dom.previousSibling;\n }\n while (domBefore && !((desc = domBefore.pmViewDesc) && desc.parent == this))\n domBefore = domBefore.previousSibling;\n return domBefore ? this.posBeforeChild(desc) + desc.size : this.posAtStart;\n }\n else {\n let domAfter, desc;\n if (dom == this.contentDOM) {\n domAfter = dom.childNodes[offset];\n }\n else {\n while (dom.parentNode != this.contentDOM)\n dom = dom.parentNode;\n domAfter = dom.nextSibling;\n }\n while (domAfter && !((desc = domAfter.pmViewDesc) && desc.parent == this))\n domAfter = domAfter.nextSibling;\n return domAfter ? this.posBeforeChild(desc) : this.posAtEnd;\n }\n }\n // Otherwise, use various heuristics, falling back on the bias\n // parameter, to determine whether to return the position at the\n // start or at the end of this view desc.\n let atEnd;\n if (dom == this.dom && this.contentDOM) {\n atEnd = offset > domIndex(this.contentDOM);\n }\n else if (this.contentDOM && this.contentDOM != this.dom && this.dom.contains(this.contentDOM)) {\n atEnd = dom.compareDocumentPosition(this.contentDOM) & 2;\n }\n else if (this.dom.firstChild) {\n if (offset == 0)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = false;\n break;\n }\n if (search.previousSibling)\n break;\n }\n if (atEnd == null && offset == dom.childNodes.length)\n for (let search = dom;; search = search.parentNode) {\n if (search == this.dom) {\n atEnd = true;\n break;\n }\n if (search.nextSibling)\n break;\n }\n }\n return (atEnd == null ? bias > 0 : atEnd) ? this.posAtEnd : this.posAtStart;\n }\n nearestDesc(dom, onlyNodes = false) {\n for (let first = true, cur = dom; cur; cur = cur.parentNode) {\n let desc = this.getDesc(cur), nodeDOM;\n if (desc && (!onlyNodes || desc.node)) {\n // If dom is outside of this desc's nodeDOM, don't count it.\n if (first && (nodeDOM = desc.nodeDOM) &&\n !(nodeDOM.nodeType == 1 ? nodeDOM.contains(dom.nodeType == 1 ? dom : dom.parentNode) : nodeDOM == dom))\n first = false;\n else\n return desc;\n }\n }\n }\n getDesc(dom) {\n let desc = dom.pmViewDesc;\n for (let cur = desc; cur; cur = cur.parent)\n if (cur == this)\n return desc;\n }\n posFromDOM(dom, offset, bias) {\n for (let scan = dom; scan; scan = scan.parentNode) {\n let desc = this.getDesc(scan);\n if (desc)\n return desc.localPosFromDOM(dom, offset, bias);\n }\n return -1;\n }\n // Find the desc for the node after the given pos, if any. (When a\n // parent node overrode rendering, there might not be one.)\n descAt(pos) {\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == pos && end != offset) {\n while (!child.border && child.children.length)\n child = child.children[0];\n return child;\n }\n if (pos < end)\n return child.descAt(pos - offset - child.border);\n offset = end;\n }\n }\n domFromPos(pos, side) {\n if (!this.contentDOM)\n return { node: this.dom, offset: 0, atom: pos + 1 };\n // First find the position in the child array\n let i = 0, offset = 0;\n for (let curPos = 0; i < this.children.length; i++) {\n let child = this.children[i], end = curPos + child.size;\n if (end > pos || child instanceof TrailingHackViewDesc) {\n offset = pos - curPos;\n break;\n }\n curPos = end;\n }\n // If this points into the middle of a child, call through\n if (offset)\n return this.children[i].domFromPos(offset - this.children[i].border, side);\n // Go back if there were any zero-length widgets with side >= 0 before this point\n for (let prev; i && !(prev = this.children[i - 1]).size && prev instanceof WidgetViewDesc && prev.side >= 0; i--) { }\n // Scan towards the first useable node\n if (side <= 0) {\n let prev, enter = true;\n for (;; i--, enter = false) {\n prev = i ? this.children[i - 1] : null;\n if (!prev || prev.dom.parentNode == this.contentDOM)\n break;\n }\n if (prev && side && enter && !prev.border && !prev.domAtom)\n return prev.domFromPos(prev.size, side);\n return { node: this.contentDOM, offset: prev ? domIndex(prev.dom) + 1 : 0 };\n }\n else {\n let next, enter = true;\n for (;; i++, enter = false) {\n next = i < this.children.length ? this.children[i] : null;\n if (!next || next.dom.parentNode == this.contentDOM)\n break;\n }\n if (next && enter && !next.border && !next.domAtom)\n return next.domFromPos(0, side);\n return { node: this.contentDOM, offset: next ? domIndex(next.dom) : this.contentDOM.childNodes.length };\n }\n }\n // Used to find a DOM range in a single parent for a given changed\n // range.\n parseRange(from, to, base = 0) {\n if (this.children.length == 0)\n return { node: this.contentDOM, from, to, fromOffset: 0, toOffset: this.contentDOM.childNodes.length };\n let fromOffset = -1, toOffset = -1;\n for (let offset = base, i = 0;; i++) {\n let child = this.children[i], end = offset + child.size;\n if (fromOffset == -1 && from <= end) {\n let childBase = offset + child.border;\n // FIXME maybe descend mark views to parse a narrower range?\n if (from >= childBase && to <= end - child.border && child.node &&\n child.contentDOM && this.contentDOM.contains(child.contentDOM))\n return child.parseRange(from, to, childBase);\n from = offset;\n for (let j = i; j > 0; j--) {\n let prev = this.children[j - 1];\n if (prev.size && prev.dom.parentNode == this.contentDOM && !prev.emptyChildAt(1)) {\n fromOffset = domIndex(prev.dom) + 1;\n break;\n }\n from -= prev.size;\n }\n if (fromOffset == -1)\n fromOffset = 0;\n }\n if (fromOffset > -1 && (end > to || i == this.children.length - 1)) {\n to = end;\n for (let j = i + 1; j < this.children.length; j++) {\n let next = this.children[j];\n if (next.size && next.dom.parentNode == this.contentDOM && !next.emptyChildAt(-1)) {\n toOffset = domIndex(next.dom);\n break;\n }\n to += next.size;\n }\n if (toOffset == -1)\n toOffset = this.contentDOM.childNodes.length;\n break;\n }\n offset = end;\n }\n return { node: this.contentDOM, from, to, fromOffset, toOffset };\n }\n emptyChildAt(side) {\n if (this.border || !this.contentDOM || !this.children.length)\n return false;\n let child = this.children[side < 0 ? 0 : this.children.length - 1];\n return child.size == 0 || child.emptyChildAt(side);\n }\n domAfterPos(pos) {\n let { node, offset } = this.domFromPos(pos, 0);\n if (node.nodeType != 1 || offset == node.childNodes.length)\n throw new RangeError(\"No node after pos \" + pos);\n return node.childNodes[offset];\n }\n // View descs are responsible for setting any selection that falls\n // entirely inside of them, so that custom implementations can do\n // custom things with the selection. Note that this falls apart when\n // a selection starts in such a node and ends in another, in which\n // case we just use whatever domFromPos produces as a best effort.\n setSelection(anchor, head, root, force = false) {\n // If the selection falls entirely in a child, give it to that child\n let from = Math.min(anchor, head), to = Math.max(anchor, head);\n for (let i = 0, offset = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (from > offset && to < end)\n return child.setSelection(anchor - offset - child.border, head - offset - child.border, root, force);\n offset = end;\n }\n let anchorDOM = this.domFromPos(anchor, anchor ? -1 : 1);\n let headDOM = head == anchor ? anchorDOM : this.domFromPos(head, head ? -1 : 1);\n let domSel = root.getSelection();\n let brKludge = false;\n // On Firefox, using Selection.collapse to put the cursor after a\n // BR node for some reason doesn't always work (#1073). On Safari,\n // the cursor sometimes inexplicable visually lags behind its\n // reported position in such situations (#1092).\n if ((gecko || safari) && anchor == head) {\n let { node, offset } = anchorDOM;\n if (node.nodeType == 3) {\n brKludge = !!(offset && node.nodeValue[offset - 1] == \"\\n\");\n // Issue #1128\n if (brKludge && offset == node.nodeValue.length) {\n for (let scan = node, after; scan; scan = scan.parentNode) {\n if (after = scan.nextSibling) {\n if (after.nodeName == \"BR\")\n anchorDOM = headDOM = { node: after.parentNode, offset: domIndex(after) + 1 };\n break;\n }\n let desc = scan.pmViewDesc;\n if (desc && desc.node && desc.node.isBlock)\n break;\n }\n }\n }\n else {\n let prev = node.childNodes[offset - 1];\n brKludge = prev && (prev.nodeName == \"BR\" || prev.contentEditable == \"false\");\n }\n }\n // Firefox can act strangely when the selection is in front of an\n // uneditable node. See #1163 and https://bugzilla.mozilla.org/show_bug.cgi?id=1709536\n if (gecko && domSel.focusNode && domSel.focusNode != headDOM.node && domSel.focusNode.nodeType == 1) {\n let after = domSel.focusNode.childNodes[domSel.focusOffset];\n if (after && after.contentEditable == \"false\")\n force = true;\n }\n if (!(force || brKludge && safari) &&\n isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset) &&\n isEquivalentPosition(headDOM.node, headDOM.offset, domSel.focusNode, domSel.focusOffset))\n return;\n // Selection.extend can be used to create an 'inverted' selection\n // (one where the focus is before the anchor), but not all\n // browsers support it yet.\n let domSelExtended = false;\n if ((domSel.extend || anchor == head) && !brKludge) {\n domSel.collapse(anchorDOM.node, anchorDOM.offset);\n try {\n if (anchor != head)\n domSel.extend(headDOM.node, headDOM.offset);\n domSelExtended = true;\n }\n catch (_) {\n // In some cases with Chrome the selection is empty after calling\n // collapse, even when it should be valid. This appears to be a bug, but\n // it is difficult to isolate. If this happens fallback to the old path\n // without using extend.\n // Similarly, this could crash on Safari if the editor is hidden, and\n // there was no selection.\n }\n }\n if (!domSelExtended) {\n if (anchor > head) {\n let tmp = anchorDOM;\n anchorDOM = headDOM;\n headDOM = tmp;\n }\n let range = document.createRange();\n range.setEnd(headDOM.node, headDOM.offset);\n range.setStart(anchorDOM.node, anchorDOM.offset);\n domSel.removeAllRanges();\n domSel.addRange(range);\n }\n }\n ignoreMutation(mutation) {\n return !this.contentDOM && mutation.type != \"selection\";\n }\n get contentLost() {\n return this.contentDOM && this.contentDOM != this.dom && !this.dom.contains(this.contentDOM);\n }\n // Remove a subtree of the element tree that has been touched\n // by a DOM change, so that the next update will redraw it.\n markDirty(from, to) {\n for (let offset = 0, i = 0; i < this.children.length; i++) {\n let child = this.children[i], end = offset + child.size;\n if (offset == end ? from <= end && to >= offset : from < end && to > offset) {\n let startInside = offset + child.border, endInside = end - child.border;\n if (from >= startInside && to <= endInside) {\n this.dirty = from == offset || to == end ? CONTENT_DIRTY : CHILD_DIRTY;\n if (from == startInside && to == endInside &&\n (child.contentLost || child.dom.parentNode != this.contentDOM))\n child.dirty = NODE_DIRTY;\n else\n child.markDirty(from - startInside, to - startInside);\n return;\n }\n else {\n child.dirty = child.dom == child.contentDOM && child.dom.parentNode == this.contentDOM && !child.children.length\n ? CONTENT_DIRTY : NODE_DIRTY;\n }\n }\n offset = end;\n }\n this.dirty = CONTENT_DIRTY;\n }\n markParentsDirty() {\n let level = 1;\n for (let node = this.parent; node; node = node.parent, level++) {\n let dirty = level == 1 ? CONTENT_DIRTY : CHILD_DIRTY;\n if (node.dirty < dirty)\n node.dirty = dirty;\n }\n }\n get domAtom() { return false; }\n get ignoreForCoords() { return false; }\n}\n// A widget desc represents a widget decoration, which is a DOM node\n// drawn between the document nodes.\nclass WidgetViewDesc extends ViewDesc {\n constructor(parent, widget, view, pos) {\n let self, dom = widget.type.toDOM;\n if (typeof dom == \"function\")\n dom = dom(view, () => {\n if (!self)\n return pos;\n if (self.parent)\n return self.parent.posBeforeChild(self);\n });\n if (!widget.type.spec.raw) {\n if (dom.nodeType != 1) {\n let wrap = document.createElement(\"span\");\n wrap.appendChild(dom);\n dom = wrap;\n }\n dom.contentEditable = \"false\";\n dom.classList.add(\"ProseMirror-widget\");\n }\n super(parent, [], dom, null);\n this.widget = widget;\n this.widget = widget;\n self = this;\n }\n matchesWidget(widget) {\n return this.dirty == NOT_DIRTY && widget.type.eq(this.widget.type);\n }\n parseRule() { return { ignore: true }; }\n stopEvent(event) {\n let stop = this.widget.spec.stopEvent;\n return stop ? stop(event) : false;\n }\n ignoreMutation(mutation) {\n return mutation.type != \"selection\" || this.widget.spec.ignoreSelection;\n }\n destroy() {\n this.widget.type.destroy(this.dom);\n super.destroy();\n }\n get domAtom() { return true; }\n get side() { return this.widget.type.side; }\n}\nclass CompositionViewDesc extends ViewDesc {\n constructor(parent, dom, textDOM, text) {\n super(parent, [], dom, null);\n this.textDOM = textDOM;\n this.text = text;\n }\n get size() { return this.text.length; }\n localPosFromDOM(dom, offset) {\n if (dom != this.textDOM)\n return this.posAtStart + (offset ? this.size : 0);\n return this.posAtStart + offset;\n }\n domFromPos(pos) {\n return { node: this.textDOM, offset: pos };\n }\n ignoreMutation(mut) {\n return mut.type === 'characterData' && mut.target.nodeValue == mut.oldValue;\n }\n}\n// A mark desc represents a mark. May have multiple children,\n// depending on how the mark is split. Note that marks are drawn using\n// a fixed nesting order, for simplicity and predictability, so in\n// some cases they will be split more often than would appear\n// necessary.\nclass MarkViewDesc extends ViewDesc {\n constructor(parent, mark, dom, contentDOM) {\n super(parent, [], dom, contentDOM);\n this.mark = mark;\n }\n static create(parent, mark, inline, view) {\n let custom = view.nodeViews[mark.type.name];\n let spec = custom && custom(mark, view, inline);\n if (!spec || !spec.dom)\n spec = DOMSerializer.renderSpec(document, mark.type.spec.toDOM(mark, inline));\n return new MarkViewDesc(parent, mark, spec.dom, spec.contentDOM || spec.dom);\n }\n parseRule() {\n if ((this.dirty & NODE_DIRTY) || this.mark.type.spec.reparseInView)\n return null;\n return { mark: this.mark.type.name, attrs: this.mark.attrs, contentElement: this.contentDOM };\n }\n matchesMark(mark) { return this.dirty != NODE_DIRTY && this.mark.eq(mark); }\n markDirty(from, to) {\n super.markDirty(from, to);\n // Move dirty info to nearest node view\n if (this.dirty != NOT_DIRTY) {\n let parent = this.parent;\n while (!parent.node)\n parent = parent.parent;\n if (parent.dirty < this.dirty)\n parent.dirty = this.dirty;\n this.dirty = NOT_DIRTY;\n }\n }\n slice(from, to, view) {\n let copy = MarkViewDesc.create(this.parent, this.mark, true, view);\n let nodes = this.children, size = this.size;\n if (to < size)\n nodes = replaceNodes(nodes, to, size, view);\n if (from > 0)\n nodes = replaceNodes(nodes, 0, from, view);\n for (let i = 0; i < nodes.length; i++)\n nodes[i].parent = copy;\n copy.children = nodes;\n return copy;\n }\n}\n// Node view descs are the main, most common type of view desc, and\n// correspond to an actual node in the document. Unlike mark descs,\n// they populate their child array themselves.\nclass NodeViewDesc extends ViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos) {\n super(parent, [], dom, contentDOM);\n this.node = node;\n this.outerDeco = outerDeco;\n this.innerDeco = innerDeco;\n this.nodeDOM = nodeDOM;\n }\n // By default, a node is rendered using the `toDOM` method from the\n // node type spec. But client code can use the `nodeViews` spec to\n // supply a custom node view, which can influence various aspects of\n // the way the node works.\n //\n // (Using subclassing for this was intentionally decided against,\n // since it'd require exposing a whole slew of finicky\n // implementation details to the user code that they probably will\n // never need.)\n static create(parent, node, outerDeco, innerDeco, view, pos) {\n let custom = view.nodeViews[node.type.name], descObj;\n let spec = custom && custom(node, view, () => {\n // (This is a function that allows the custom view to find its\n // own position)\n if (!descObj)\n return pos;\n if (descObj.parent)\n return descObj.parent.posBeforeChild(descObj);\n }, outerDeco, innerDeco);\n let dom = spec && spec.dom, contentDOM = spec && spec.contentDOM;\n if (node.isText) {\n if (!dom)\n dom = document.createTextNode(node.text);\n else if (dom.nodeType != 3)\n throw new RangeError(\"Text must be rendered as a DOM text node\");\n }\n else if (!dom) {\n ({ dom, contentDOM } = DOMSerializer.renderSpec(document, node.type.spec.toDOM(node)));\n }\n if (!contentDOM && !node.isText && dom.nodeName != \"BR\") { // Chrome gets confused by
        \n if (!dom.hasAttribute(\"contenteditable\"))\n dom.contentEditable = \"false\";\n if (node.type.spec.draggable)\n dom.draggable = true;\n }\n let nodeDOM = dom;\n dom = applyOuterDeco(dom, outerDeco, node);\n if (spec)\n return descObj = new CustomNodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, spec, view, pos + 1);\n else if (node.isText)\n return new TextViewDesc(parent, node, outerDeco, innerDeco, dom, nodeDOM, view);\n else\n return new NodeViewDesc(parent, node, outerDeco, innerDeco, dom, contentDOM || null, nodeDOM, view, pos + 1);\n }\n parseRule() {\n // Experimental kludge to allow opt-in re-parsing of nodes\n if (this.node.type.spec.reparseInView)\n return null;\n // FIXME the assumption that this can always return the current\n // attrs means that if the user somehow manages to change the\n // attrs in the dom, that won't be picked up. Not entirely sure\n // whether this is a problem\n let rule = { node: this.node.type.name, attrs: this.node.attrs };\n if (this.node.type.whitespace == \"pre\")\n rule.preserveWhitespace = \"full\";\n if (!this.contentDOM) {\n rule.getContent = () => this.node.content;\n }\n else if (!this.contentLost) {\n rule.contentElement = this.contentDOM;\n }\n else {\n // Chrome likes to randomly recreate parent nodes when\n // backspacing things. When that happens, this tries to find the\n // new parent.\n for (let i = this.children.length - 1; i >= 0; i--) {\n let child = this.children[i];\n if (this.dom.contains(child.dom.parentNode)) {\n rule.contentElement = child.dom.parentNode;\n break;\n }\n }\n if (!rule.contentElement)\n rule.getContent = () => Fragment.empty;\n }\n return rule;\n }\n matchesNode(node, outerDeco, innerDeco) {\n return this.dirty == NOT_DIRTY && node.eq(this.node) &&\n sameOuterDeco(outerDeco, this.outerDeco) && innerDeco.eq(this.innerDeco);\n }\n get size() { return this.node.nodeSize; }\n get border() { return this.node.isLeaf ? 0 : 1; }\n // Syncs `this.children` to match `this.node.content` and the local\n // decorations, possibly introducing nesting for marks. Then, in a\n // separate step, syncs the DOM inside `this.contentDOM` to\n // `this.children`.\n updateChildren(view, pos) {\n let inline = this.node.inlineContent, off = pos;\n let composition = view.composing ? this.localCompositionInfo(view, pos) : null;\n let localComposition = composition && composition.pos > -1 ? composition : null;\n let compositionInChild = composition && composition.pos < 0;\n let updater = new ViewTreeUpdater(this, localComposition && localComposition.node, view);\n iterDeco(this.node, this.innerDeco, (widget, i, insideNode) => {\n if (widget.spec.marks)\n updater.syncToMarks(widget.spec.marks, inline, view);\n else if (widget.type.side >= 0 && !insideNode)\n updater.syncToMarks(i == this.node.childCount ? Mark.none : this.node.child(i).marks, inline, view);\n // If the next node is a desc matching this widget, reuse it,\n // otherwise insert the widget as a new view desc.\n updater.placeWidget(widget, view, off);\n }, (child, outerDeco, innerDeco, i) => {\n // Make sure the wrapping mark descs match the node's marks.\n updater.syncToMarks(child.marks, inline, view);\n // Try several strategies for drawing this node\n let compIndex;\n if (updater.findNodeMatch(child, outerDeco, innerDeco, i)) ;\n else if (compositionInChild && view.state.selection.from > off &&\n view.state.selection.to < off + child.nodeSize &&\n (compIndex = updater.findIndexWithChild(composition.node)) > -1 &&\n updater.updateNodeAt(child, outerDeco, innerDeco, compIndex, view)) ;\n else if (updater.updateNextNode(child, outerDeco, innerDeco, view, i, off)) ;\n else {\n // Add it as a new view\n updater.addNode(child, outerDeco, innerDeco, view, off);\n }\n off += child.nodeSize;\n });\n // Drop all remaining descs after the current position.\n updater.syncToMarks([], inline, view);\n if (this.node.isTextblock)\n updater.addTextblockHacks();\n updater.destroyRest();\n // Sync the DOM if anything changed\n if (updater.changed || this.dirty == CONTENT_DIRTY) {\n // May have to protect focused DOM from being changed if a composition is active\n if (localComposition)\n this.protectLocalComposition(view, localComposition);\n renderDescs(this.contentDOM, this.children, view);\n if (ios)\n iosHacks(this.dom);\n }\n }\n localCompositionInfo(view, pos) {\n // Only do something if both the selection and a focused text node\n // are inside of this node\n let { from, to } = view.state.selection;\n if (!(view.state.selection instanceof TextSelection) || from < pos || to > pos + this.node.content.size)\n return null;\n let sel = view.domSelectionRange();\n let textNode = nearbyTextNode(sel.focusNode, sel.focusOffset);\n if (!textNode || !this.dom.contains(textNode.parentNode))\n return null;\n if (this.node.inlineContent) {\n // Find the text in the focused node in the node, stop if it's not\n // there (may have been modified through other means, in which\n // case it should overwritten)\n let text = textNode.nodeValue;\n let textPos = findTextInFragment(this.node.content, text, from - pos, to - pos);\n return textPos < 0 ? null : { node: textNode, pos: textPos, text };\n }\n else {\n return { node: textNode, pos: -1, text: \"\" };\n }\n }\n protectLocalComposition(view, { node, pos, text }) {\n // The node is already part of a local view desc, leave it there\n if (this.getDesc(node))\n return;\n // Create a composition view for the orphaned nodes\n let topNode = node;\n for (;; topNode = topNode.parentNode) {\n if (topNode.parentNode == this.contentDOM)\n break;\n while (topNode.previousSibling)\n topNode.parentNode.removeChild(topNode.previousSibling);\n while (topNode.nextSibling)\n topNode.parentNode.removeChild(topNode.nextSibling);\n if (topNode.pmViewDesc)\n topNode.pmViewDesc = undefined;\n }\n let desc = new CompositionViewDesc(this, topNode, node, text);\n view.input.compositionNodes.push(desc);\n // Patch up this.children to contain the composition view\n this.children = replaceNodes(this.children, pos, pos + text.length, view, desc);\n }\n // If this desc must be updated to match the given node decoration,\n // do so and return true.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY ||\n !node.sameMarkup(this.node))\n return false;\n this.updateInner(node, outerDeco, innerDeco, view);\n return true;\n }\n updateInner(node, outerDeco, innerDeco, view) {\n this.updateOuterDeco(outerDeco);\n this.node = node;\n this.innerDeco = innerDeco;\n if (this.contentDOM)\n this.updateChildren(view, this.posAtStart);\n this.dirty = NOT_DIRTY;\n }\n updateOuterDeco(outerDeco) {\n if (sameOuterDeco(outerDeco, this.outerDeco))\n return;\n let needsWrap = this.nodeDOM.nodeType != 1;\n let oldDOM = this.dom;\n this.dom = patchOuterDeco(this.dom, this.nodeDOM, computeOuterDeco(this.outerDeco, this.node, needsWrap), computeOuterDeco(outerDeco, this.node, needsWrap));\n if (this.dom != oldDOM) {\n oldDOM.pmViewDesc = undefined;\n this.dom.pmViewDesc = this;\n }\n this.outerDeco = outerDeco;\n }\n // Mark this node as being the selected node.\n selectNode() {\n if (this.nodeDOM.nodeType == 1)\n this.nodeDOM.classList.add(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.draggable = true;\n }\n // Remove selected node marking from this node.\n deselectNode() {\n if (this.nodeDOM.nodeType == 1)\n this.nodeDOM.classList.remove(\"ProseMirror-selectednode\");\n if (this.contentDOM || !this.node.type.spec.draggable)\n this.dom.removeAttribute(\"draggable\");\n }\n get domAtom() { return this.node.isAtom; }\n}\n// Create a view desc for the top-level document node, to be exported\n// and used by the view class.\nfunction docViewDesc(doc, outerDeco, innerDeco, dom, view) {\n applyOuterDeco(dom, outerDeco, doc);\n let docView = new NodeViewDesc(undefined, doc, outerDeco, innerDeco, dom, dom, dom, view, 0);\n if (docView.contentDOM)\n docView.updateChildren(view, 0);\n return docView;\n}\nclass TextViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, nodeDOM, view) {\n super(parent, node, outerDeco, innerDeco, dom, null, nodeDOM, view, 0);\n }\n parseRule() {\n let skip = this.nodeDOM.parentNode;\n while (skip && skip != this.dom && !skip.pmIsDeco)\n skip = skip.parentNode;\n return { skip: (skip || true) };\n }\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY || (this.dirty != NOT_DIRTY && !this.inParent()) ||\n !node.sameMarkup(this.node))\n return false;\n this.updateOuterDeco(outerDeco);\n if ((this.dirty != NOT_DIRTY || node.text != this.node.text) && node.text != this.nodeDOM.nodeValue) {\n this.nodeDOM.nodeValue = node.text;\n if (view.trackWrites == this.nodeDOM)\n view.trackWrites = null;\n }\n this.node = node;\n this.dirty = NOT_DIRTY;\n return true;\n }\n inParent() {\n let parentDOM = this.parent.contentDOM;\n for (let n = this.nodeDOM; n; n = n.parentNode)\n if (n == parentDOM)\n return true;\n return false;\n }\n domFromPos(pos) {\n return { node: this.nodeDOM, offset: pos };\n }\n localPosFromDOM(dom, offset, bias) {\n if (dom == this.nodeDOM)\n return this.posAtStart + Math.min(offset, this.node.text.length);\n return super.localPosFromDOM(dom, offset, bias);\n }\n ignoreMutation(mutation) {\n return mutation.type != \"characterData\" && mutation.type != \"selection\";\n }\n slice(from, to, view) {\n let node = this.node.cut(from, to), dom = document.createTextNode(node.text);\n return new TextViewDesc(this.parent, node, this.outerDeco, this.innerDeco, dom, dom, view);\n }\n markDirty(from, to) {\n super.markDirty(from, to);\n if (this.dom != this.nodeDOM && (from == 0 || to == this.nodeDOM.nodeValue.length))\n this.dirty = NODE_DIRTY;\n }\n get domAtom() { return false; }\n}\n// A dummy desc used to tag trailing BR or IMG nodes created to work\n// around contentEditable terribleness.\nclass TrailingHackViewDesc extends ViewDesc {\n parseRule() { return { ignore: true }; }\n matchesHack(nodeName) { return this.dirty == NOT_DIRTY && this.dom.nodeName == nodeName; }\n get domAtom() { return true; }\n get ignoreForCoords() { return this.dom.nodeName == \"IMG\"; }\n}\n// A separate subclass is used for customized node views, so that the\n// extra checks only have to be made for nodes that are actually\n// customized.\nclass CustomNodeViewDesc extends NodeViewDesc {\n constructor(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, spec, view, pos) {\n super(parent, node, outerDeco, innerDeco, dom, contentDOM, nodeDOM, view, pos);\n this.spec = spec;\n }\n // A custom `update` method gets to decide whether the update goes\n // through. If it does, and there's a `contentDOM` node, our logic\n // updates the children.\n update(node, outerDeco, innerDeco, view) {\n if (this.dirty == NODE_DIRTY)\n return false;\n if (this.spec.update) {\n let result = this.spec.update(node, outerDeco, innerDeco);\n if (result)\n this.updateInner(node, outerDeco, innerDeco, view);\n return result;\n }\n else if (!this.contentDOM && !node.isLeaf) {\n return false;\n }\n else {\n return super.update(node, outerDeco, innerDeco, view);\n }\n }\n selectNode() {\n this.spec.selectNode ? this.spec.selectNode() : super.selectNode();\n }\n deselectNode() {\n this.spec.deselectNode ? this.spec.deselectNode() : super.deselectNode();\n }\n setSelection(anchor, head, root, force) {\n this.spec.setSelection ? this.spec.setSelection(anchor, head, root)\n : super.setSelection(anchor, head, root, force);\n }\n destroy() {\n if (this.spec.destroy)\n this.spec.destroy();\n super.destroy();\n }\n stopEvent(event) {\n return this.spec.stopEvent ? this.spec.stopEvent(event) : false;\n }\n ignoreMutation(mutation) {\n return this.spec.ignoreMutation ? this.spec.ignoreMutation(mutation) : super.ignoreMutation(mutation);\n }\n}\n// Sync the content of the given DOM node with the nodes associated\n// with the given array of view descs, recursing into mark descs\n// because this should sync the subtree for a whole node at a time.\nfunction renderDescs(parentDOM, descs, view) {\n let dom = parentDOM.firstChild, written = false;\n for (let i = 0; i < descs.length; i++) {\n let desc = descs[i], childDOM = desc.dom;\n if (childDOM.parentNode == parentDOM) {\n while (childDOM != dom) {\n dom = rm(dom);\n written = true;\n }\n dom = dom.nextSibling;\n }\n else {\n written = true;\n parentDOM.insertBefore(childDOM, dom);\n }\n if (desc instanceof MarkViewDesc) {\n let pos = dom ? dom.previousSibling : parentDOM.lastChild;\n renderDescs(desc.contentDOM, desc.children, view);\n dom = pos ? pos.nextSibling : parentDOM.firstChild;\n }\n }\n while (dom) {\n dom = rm(dom);\n written = true;\n }\n if (written && view.trackWrites == parentDOM)\n view.trackWrites = null;\n}\nconst OuterDecoLevel = function (nodeName) {\n if (nodeName)\n this.nodeName = nodeName;\n};\nOuterDecoLevel.prototype = Object.create(null);\nconst noDeco = [new OuterDecoLevel];\nfunction computeOuterDeco(outerDeco, node, needsWrap) {\n if (outerDeco.length == 0)\n return noDeco;\n let top = needsWrap ? noDeco[0] : new OuterDecoLevel, result = [top];\n for (let i = 0; i < outerDeco.length; i++) {\n let attrs = outerDeco[i].type.attrs;\n if (!attrs)\n continue;\n if (attrs.nodeName)\n result.push(top = new OuterDecoLevel(attrs.nodeName));\n for (let name in attrs) {\n let val = attrs[name];\n if (val == null)\n continue;\n if (needsWrap && result.length == 1)\n result.push(top = new OuterDecoLevel(node.isInline ? \"span\" : \"div\"));\n if (name == \"class\")\n top.class = (top.class ? top.class + \" \" : \"\") + val;\n else if (name == \"style\")\n top.style = (top.style ? top.style + \";\" : \"\") + val;\n else if (name != \"nodeName\")\n top[name] = val;\n }\n }\n return result;\n}\nfunction patchOuterDeco(outerDOM, nodeDOM, prevComputed, curComputed) {\n // Shortcut for trivial case\n if (prevComputed == noDeco && curComputed == noDeco)\n return nodeDOM;\n let curDOM = nodeDOM;\n for (let i = 0; i < curComputed.length; i++) {\n let deco = curComputed[i], prev = prevComputed[i];\n if (i) {\n let parent;\n if (prev && prev.nodeName == deco.nodeName && curDOM != outerDOM &&\n (parent = curDOM.parentNode) && parent.nodeName.toLowerCase() == deco.nodeName) {\n curDOM = parent;\n }\n else {\n parent = document.createElement(deco.nodeName);\n parent.pmIsDeco = true;\n parent.appendChild(curDOM);\n prev = noDeco[0];\n curDOM = parent;\n }\n }\n patchAttributes(curDOM, prev || noDeco[0], deco);\n }\n return curDOM;\n}\nfunction patchAttributes(dom, prev, cur) {\n for (let name in prev)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && !(name in cur))\n dom.removeAttribute(name);\n for (let name in cur)\n if (name != \"class\" && name != \"style\" && name != \"nodeName\" && cur[name] != prev[name])\n dom.setAttribute(name, cur[name]);\n if (prev.class != cur.class) {\n let prevList = prev.class ? prev.class.split(\" \").filter(Boolean) : [];\n let curList = cur.class ? cur.class.split(\" \").filter(Boolean) : [];\n for (let i = 0; i < prevList.length; i++)\n if (curList.indexOf(prevList[i]) == -1)\n dom.classList.remove(prevList[i]);\n for (let i = 0; i < curList.length; i++)\n if (prevList.indexOf(curList[i]) == -1)\n dom.classList.add(curList[i]);\n if (dom.classList.length == 0)\n dom.removeAttribute(\"class\");\n }\n if (prev.style != cur.style) {\n if (prev.style) {\n let prop = /\\s*([\\w\\-\\xa1-\\uffff]+)\\s*:(?:\"(?:\\\\.|[^\"])*\"|'(?:\\\\.|[^'])*'|\\(.*?\\)|[^;])*/g, m;\n while (m = prop.exec(prev.style))\n dom.style.removeProperty(m[1]);\n }\n if (cur.style)\n dom.style.cssText += cur.style;\n }\n}\nfunction applyOuterDeco(dom, deco, node) {\n return patchOuterDeco(dom, dom, noDeco, computeOuterDeco(deco, node, dom.nodeType != 1));\n}\nfunction sameOuterDeco(a, b) {\n if (a.length != b.length)\n return false;\n for (let i = 0; i < a.length; i++)\n if (!a[i].type.eq(b[i].type))\n return false;\n return true;\n}\n// Remove a DOM node and return its next sibling.\nfunction rm(dom) {\n let next = dom.nextSibling;\n dom.parentNode.removeChild(dom);\n return next;\n}\n// Helper class for incrementally updating a tree of mark descs and\n// the widget and node descs inside of them.\nclass ViewTreeUpdater {\n constructor(top, lock, view) {\n this.lock = lock;\n this.view = view;\n // Index into `this.top`'s child array, represents the current\n // update position.\n this.index = 0;\n // When entering a mark, the current top and index are pushed\n // onto this.\n this.stack = [];\n // Tracks whether anything was changed\n this.changed = false;\n this.top = top;\n this.preMatch = preMatch(top.node.content, top);\n }\n // Destroy and remove the children between the given indices in\n // `this.top`.\n destroyBetween(start, end) {\n if (start == end)\n return;\n for (let i = start; i < end; i++)\n this.top.children[i].destroy();\n this.top.children.splice(start, end - start);\n this.changed = true;\n }\n // Destroy all remaining children in `this.top`.\n destroyRest() {\n this.destroyBetween(this.index, this.top.children.length);\n }\n // Sync the current stack of mark descs with the given array of\n // marks, reusing existing mark descs when possible.\n syncToMarks(marks, inline, view) {\n let keep = 0, depth = this.stack.length >> 1;\n let maxKeep = Math.min(depth, marks.length);\n while (keep < maxKeep &&\n (keep == depth - 1 ? this.top : this.stack[(keep + 1) << 1])\n .matchesMark(marks[keep]) && marks[keep].type.spec.spanning !== false)\n keep++;\n while (keep < depth) {\n this.destroyRest();\n this.top.dirty = NOT_DIRTY;\n this.index = this.stack.pop();\n this.top = this.stack.pop();\n depth--;\n }\n while (depth < marks.length) {\n this.stack.push(this.top, this.index + 1);\n let found = -1;\n for (let i = this.index; i < Math.min(this.index + 3, this.top.children.length); i++) {\n let next = this.top.children[i];\n if (next.matchesMark(marks[depth]) && !this.isLocked(next.dom)) {\n found = i;\n break;\n }\n }\n if (found > -1) {\n if (found > this.index) {\n this.changed = true;\n this.destroyBetween(this.index, found);\n }\n this.top = this.top.children[this.index];\n }\n else {\n let markDesc = MarkViewDesc.create(this.top, marks[depth], inline, view);\n this.top.children.splice(this.index, 0, markDesc);\n this.top = markDesc;\n this.changed = true;\n }\n this.index = 0;\n depth++;\n }\n }\n // Try to find a node desc matching the given data. Skip over it and\n // return true when successful.\n findNodeMatch(node, outerDeco, innerDeco, index) {\n let found = -1, targetDesc;\n if (index >= this.preMatch.index &&\n (targetDesc = this.preMatch.matches[index - this.preMatch.index]).parent == this.top &&\n targetDesc.matchesNode(node, outerDeco, innerDeco)) {\n found = this.top.children.indexOf(targetDesc, this.index);\n }\n else {\n for (let i = this.index, e = Math.min(this.top.children.length, i + 5); i < e; i++) {\n let child = this.top.children[i];\n if (child.matchesNode(node, outerDeco, innerDeco) && !this.preMatch.matched.has(child)) {\n found = i;\n break;\n }\n }\n }\n if (found < 0)\n return false;\n this.destroyBetween(this.index, found);\n this.index++;\n return true;\n }\n updateNodeAt(node, outerDeco, innerDeco, index, view) {\n let child = this.top.children[index];\n if (child.dirty == NODE_DIRTY && child.dom == child.contentDOM)\n child.dirty = CONTENT_DIRTY;\n if (!child.update(node, outerDeco, innerDeco, view))\n return false;\n this.destroyBetween(this.index, index);\n this.index++;\n return true;\n }\n findIndexWithChild(domNode) {\n for (;;) {\n let parent = domNode.parentNode;\n if (!parent)\n return -1;\n if (parent == this.top.contentDOM) {\n let desc = domNode.pmViewDesc;\n if (desc)\n for (let i = this.index; i < this.top.children.length; i++) {\n if (this.top.children[i] == desc)\n return i;\n }\n return -1;\n }\n domNode = parent;\n }\n }\n // Try to update the next node, if any, to the given data. Checks\n // pre-matches to avoid overwriting nodes that could still be used.\n updateNextNode(node, outerDeco, innerDeco, view, index, pos) {\n for (let i = this.index; i < this.top.children.length; i++) {\n let next = this.top.children[i];\n if (next instanceof NodeViewDesc) {\n let preMatch = this.preMatch.matched.get(next);\n if (preMatch != null && preMatch != index)\n return false;\n let nextDOM = next.dom, updated;\n // Can't update if nextDOM is or contains this.lock, except if\n // it's a text node whose content already matches the new text\n // and whose decorations match the new ones.\n let locked = this.isLocked(nextDOM) &&\n !(node.isText && next.node && next.node.isText && next.nodeDOM.nodeValue == node.text &&\n next.dirty != NODE_DIRTY && sameOuterDeco(outerDeco, next.outerDeco));\n if (!locked && next.update(node, outerDeco, innerDeco, view)) {\n this.destroyBetween(this.index, i);\n if (next.dom != nextDOM)\n this.changed = true;\n this.index++;\n return true;\n }\n else if (!locked && (updated = this.recreateWrapper(next, node, outerDeco, innerDeco, view, pos))) {\n this.top.children[this.index] = updated;\n if (updated.contentDOM) {\n updated.dirty = CONTENT_DIRTY;\n updated.updateChildren(view, pos + 1);\n updated.dirty = NOT_DIRTY;\n }\n this.changed = true;\n this.index++;\n return true;\n }\n break;\n }\n }\n return false;\n }\n // When a node with content is replaced by a different node with\n // identical content, move over its children.\n recreateWrapper(next, node, outerDeco, innerDeco, view, pos) {\n if (next.dirty || node.isAtom || !next.children.length ||\n !next.node.content.eq(node.content))\n return null;\n let wrapper = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (wrapper.contentDOM) {\n wrapper.children = next.children;\n next.children = [];\n for (let ch of wrapper.children)\n ch.parent = wrapper;\n }\n next.destroy();\n return wrapper;\n }\n // Insert the node as a newly created node desc.\n addNode(node, outerDeco, innerDeco, view, pos) {\n let desc = NodeViewDesc.create(this.top, node, outerDeco, innerDeco, view, pos);\n if (desc.contentDOM)\n desc.updateChildren(view, pos + 1);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n placeWidget(widget, view, pos) {\n let next = this.index < this.top.children.length ? this.top.children[this.index] : null;\n if (next && next.matchesWidget(widget) &&\n (widget == next.widget || !next.widget.type.toDOM.parentNode)) {\n this.index++;\n }\n else {\n let desc = new WidgetViewDesc(this.top, widget, view, pos);\n this.top.children.splice(this.index++, 0, desc);\n this.changed = true;\n }\n }\n // Make sure a textblock looks and behaves correctly in\n // contentEditable.\n addTextblockHacks() {\n let lastChild = this.top.children[this.index - 1], parent = this.top;\n while (lastChild instanceof MarkViewDesc) {\n parent = lastChild;\n lastChild = parent.children[parent.children.length - 1];\n }\n if (!lastChild || // Empty textblock\n !(lastChild instanceof TextViewDesc) ||\n /\\n$/.test(lastChild.node.text) ||\n (this.view.requiresGeckoHackNode && /\\s$/.test(lastChild.node.text))) {\n // Avoid bugs in Safari's cursor drawing (#1165) and Chrome's mouse selection (#1152)\n if ((safari || chrome) && lastChild && lastChild.dom.contentEditable == \"false\")\n this.addHackNode(\"IMG\", parent);\n this.addHackNode(\"BR\", this.top);\n }\n }\n addHackNode(nodeName, parent) {\n if (parent == this.top && this.index < parent.children.length && parent.children[this.index].matchesHack(nodeName)) {\n this.index++;\n }\n else {\n let dom = document.createElement(nodeName);\n if (nodeName == \"IMG\") {\n dom.className = \"ProseMirror-separator\";\n dom.alt = \"\";\n }\n if (nodeName == \"BR\")\n dom.className = \"ProseMirror-trailingBreak\";\n let hack = new TrailingHackViewDesc(this.top, [], dom, null);\n if (parent != this.top)\n parent.children.push(hack);\n else\n parent.children.splice(this.index++, 0, hack);\n this.changed = true;\n }\n }\n isLocked(node) {\n return this.lock && (node == this.lock || node.nodeType == 1 && node.contains(this.lock.parentNode));\n }\n}\n// Iterate from the end of the fragment and array of descs to find\n// directly matching ones, in order to avoid overeagerly reusing those\n// for other nodes. Returns the fragment index of the first node that\n// is part of the sequence of matched nodes at the end of the\n// fragment.\nfunction preMatch(frag, parentDesc) {\n let curDesc = parentDesc, descI = curDesc.children.length;\n let fI = frag.childCount, matched = new Map, matches = [];\n outer: while (fI > 0) {\n let desc;\n for (;;) {\n if (descI) {\n let next = curDesc.children[descI - 1];\n if (next instanceof MarkViewDesc) {\n curDesc = next;\n descI = next.children.length;\n }\n else {\n desc = next;\n descI--;\n break;\n }\n }\n else if (curDesc == parentDesc) {\n break outer;\n }\n else {\n // FIXME\n descI = curDesc.parent.children.indexOf(curDesc);\n curDesc = curDesc.parent;\n }\n }\n let node = desc.node;\n if (!node)\n continue;\n if (node != frag.child(fI - 1))\n break;\n --fI;\n matched.set(desc, fI);\n matches.push(desc);\n }\n return { index: fI, matched, matches: matches.reverse() };\n}\nfunction compareSide(a, b) {\n return a.type.side - b.type.side;\n}\n// This function abstracts iterating over the nodes and decorations in\n// a fragment. Calls `onNode` for each node, with its local and child\n// decorations. Splits text nodes when there is a decoration starting\n// or ending inside of them. Calls `onWidget` for each widget.\nfunction iterDeco(parent, deco, onWidget, onNode) {\n let locals = deco.locals(parent), offset = 0;\n // Simple, cheap variant for when there are no local decorations\n if (locals.length == 0) {\n for (let i = 0; i < parent.childCount; i++) {\n let child = parent.child(i);\n onNode(child, locals, deco.forChild(offset, child), i);\n offset += child.nodeSize;\n }\n return;\n }\n let decoIndex = 0, active = [], restNode = null;\n for (let parentIndex = 0;;) {\n let widget, widgets;\n while (decoIndex < locals.length && locals[decoIndex].to == offset) {\n let next = locals[decoIndex++];\n if (next.widget) {\n if (!widget)\n widget = next;\n else\n (widgets || (widgets = [widget])).push(next);\n }\n }\n if (widget) {\n if (widgets) {\n widgets.sort(compareSide);\n for (let i = 0; i < widgets.length; i++)\n onWidget(widgets[i], parentIndex, !!restNode);\n }\n else {\n onWidget(widget, parentIndex, !!restNode);\n }\n }\n let child, index;\n if (restNode) {\n index = -1;\n child = restNode;\n restNode = null;\n }\n else if (parentIndex < parent.childCount) {\n index = parentIndex;\n child = parent.child(parentIndex++);\n }\n else {\n break;\n }\n for (let i = 0; i < active.length; i++)\n if (active[i].to <= offset)\n active.splice(i--, 1);\n while (decoIndex < locals.length && locals[decoIndex].from <= offset && locals[decoIndex].to > offset)\n active.push(locals[decoIndex++]);\n let end = offset + child.nodeSize;\n if (child.isText) {\n let cutAt = end;\n if (decoIndex < locals.length && locals[decoIndex].from < cutAt)\n cutAt = locals[decoIndex].from;\n for (let i = 0; i < active.length; i++)\n if (active[i].to < cutAt)\n cutAt = active[i].to;\n if (cutAt < end) {\n restNode = child.cut(cutAt - offset);\n child = child.cut(0, cutAt - offset);\n end = cutAt;\n index = -1;\n }\n }\n let outerDeco = child.isInline && !child.isLeaf ? active.filter(d => !d.inline) : active.slice();\n onNode(child, outerDeco, deco.forChild(offset, child), index);\n offset = end;\n }\n}\n// List markers in Mobile Safari will mysteriously disappear\n// sometimes. This works around that.\nfunction iosHacks(dom) {\n if (dom.nodeName == \"UL\" || dom.nodeName == \"OL\") {\n let oldCSS = dom.style.cssText;\n dom.style.cssText = oldCSS + \"; list-style: square !important\";\n window.getComputedStyle(dom).listStyle;\n dom.style.cssText = oldCSS;\n }\n}\nfunction nearbyTextNode(node, offset) {\n for (;;) {\n if (node.nodeType == 3)\n return node;\n if (node.nodeType == 1 && offset > 0) {\n if (node.childNodes.length > offset && node.childNodes[offset].nodeType == 3)\n return node.childNodes[offset];\n node = node.childNodes[offset - 1];\n offset = nodeSize(node);\n }\n else if (node.nodeType == 1 && offset < node.childNodes.length) {\n node = node.childNodes[offset];\n offset = 0;\n }\n else {\n return null;\n }\n }\n}\n// Find a piece of text in an inline fragment, overlapping from-to\nfunction findTextInFragment(frag, text, from, to) {\n for (let i = 0, pos = 0; i < frag.childCount && pos <= to;) {\n let child = frag.child(i++), childStart = pos;\n pos += child.nodeSize;\n if (!child.isText)\n continue;\n let str = child.text;\n while (i < frag.childCount) {\n let next = frag.child(i++);\n pos += next.nodeSize;\n if (!next.isText)\n break;\n str += next.text;\n }\n if (pos >= from) {\n let found = childStart < to ? str.lastIndexOf(text, to - childStart - 1) : -1;\n if (found >= 0 && found + text.length + childStart >= from)\n return childStart + found;\n if (from == to && str.length >= (to + text.length) - childStart &&\n str.slice(to - childStart, to - childStart + text.length) == text)\n return to;\n }\n }\n return -1;\n}\n// Replace range from-to in an array of view descs with replacement\n// (may be null to just delete). This goes very much against the grain\n// of the rest of this code, which tends to create nodes with the\n// right shape in one go, rather than messing with them after\n// creation, but is necessary in the composition hack.\nfunction replaceNodes(nodes, from, to, view, replacement) {\n let result = [];\n for (let i = 0, off = 0; i < nodes.length; i++) {\n let child = nodes[i], start = off, end = off += child.size;\n if (start >= to || end <= from) {\n result.push(child);\n }\n else {\n if (start < from)\n result.push(child.slice(0, from - start, view));\n if (replacement) {\n result.push(replacement);\n replacement = undefined;\n }\n if (end > to)\n result.push(child.slice(to - start, child.size, view));\n }\n }\n return result;\n}\n\nfunction selectionFromDOM(view, origin = null) {\n let domSel = view.domSelectionRange(), doc = view.state.doc;\n if (!domSel.focusNode)\n return null;\n let nearestDesc = view.docView.nearestDesc(domSel.focusNode), inWidget = nearestDesc && nearestDesc.size == 0;\n let head = view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset, 1);\n if (head < 0)\n return null;\n let $head = doc.resolve(head), $anchor, selection;\n if (selectionCollapsed(domSel)) {\n $anchor = $head;\n while (nearestDesc && !nearestDesc.node)\n nearestDesc = nearestDesc.parent;\n let nearestDescNode = nearestDesc.node;\n if (nearestDesc && nearestDescNode.isAtom && NodeSelection.isSelectable(nearestDescNode) && nearestDesc.parent\n && !(nearestDescNode.isInline && isOnEdge(domSel.focusNode, domSel.focusOffset, nearestDesc.dom))) {\n let pos = nearestDesc.posBefore;\n selection = new NodeSelection(head == pos ? $head : doc.resolve(pos));\n }\n }\n else {\n let anchor = view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset, 1);\n if (anchor < 0)\n return null;\n $anchor = doc.resolve(anchor);\n }\n if (!selection) {\n let bias = origin == \"pointer\" || (view.state.selection.head < $head.pos && !inWidget) ? 1 : -1;\n selection = selectionBetween(view, $anchor, $head, bias);\n }\n return selection;\n}\nfunction editorOwnsSelection(view) {\n return view.editable ? view.hasFocus() :\n hasSelection(view) && document.activeElement && document.activeElement.contains(view.dom);\n}\nfunction selectionToDOM(view, force = false) {\n let sel = view.state.selection;\n syncNodeSelection(view, sel);\n if (!editorOwnsSelection(view))\n return;\n // The delayed drag selection causes issues with Cell Selections\n // in Safari. And the drag selection delay is to workarond issues\n // which only present in Chrome.\n if (!force && view.input.mouseDown && view.input.mouseDown.allowDefault && chrome) {\n let domSel = view.domSelectionRange(), curSel = view.domObserver.currentSelection;\n if (domSel.anchorNode && curSel.anchorNode &&\n isEquivalentPosition(domSel.anchorNode, domSel.anchorOffset, curSel.anchorNode, curSel.anchorOffset)) {\n view.input.mouseDown.delayedSelectionSync = true;\n view.domObserver.setCurSelection();\n return;\n }\n }\n view.domObserver.disconnectSelection();\n if (view.cursorWrapper) {\n selectCursorWrapper(view);\n }\n else {\n let { anchor, head } = sel, resetEditableFrom, resetEditableTo;\n if (brokenSelectBetweenUneditable && !(sel instanceof TextSelection)) {\n if (!sel.$from.parent.inlineContent)\n resetEditableFrom = temporarilyEditableNear(view, sel.from);\n if (!sel.empty && !sel.$from.parent.inlineContent)\n resetEditableTo = temporarilyEditableNear(view, sel.to);\n }\n view.docView.setSelection(anchor, head, view.root, force);\n if (brokenSelectBetweenUneditable) {\n if (resetEditableFrom)\n resetEditable(resetEditableFrom);\n if (resetEditableTo)\n resetEditable(resetEditableTo);\n }\n if (sel.visible) {\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }\n else {\n view.dom.classList.add(\"ProseMirror-hideselection\");\n if (\"onselectionchange\" in document)\n removeClassOnSelectionChange(view);\n }\n }\n view.domObserver.setCurSelection();\n view.domObserver.connectSelection();\n}\n// Kludge to work around Webkit not allowing a selection to start/end\n// between non-editable block nodes. We briefly make something\n// editable, set the selection, then set it uneditable again.\nconst brokenSelectBetweenUneditable = safari || chrome && chrome_version < 63;\nfunction temporarilyEditableNear(view, pos) {\n let { node, offset } = view.docView.domFromPos(pos, 0);\n let after = offset < node.childNodes.length ? node.childNodes[offset] : null;\n let before = offset ? node.childNodes[offset - 1] : null;\n if (safari && after && after.contentEditable == \"false\")\n return setEditable(after);\n if ((!after || after.contentEditable == \"false\") &&\n (!before || before.contentEditable == \"false\")) {\n if (after)\n return setEditable(after);\n else if (before)\n return setEditable(before);\n }\n}\nfunction setEditable(element) {\n element.contentEditable = \"true\";\n if (safari && element.draggable) {\n element.draggable = false;\n element.wasDraggable = true;\n }\n return element;\n}\nfunction resetEditable(element) {\n element.contentEditable = \"false\";\n if (element.wasDraggable) {\n element.draggable = true;\n element.wasDraggable = null;\n }\n}\nfunction removeClassOnSelectionChange(view) {\n let doc = view.dom.ownerDocument;\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n let domSel = view.domSelectionRange();\n let node = domSel.anchorNode, offset = domSel.anchorOffset;\n doc.addEventListener(\"selectionchange\", view.input.hideSelectionGuard = () => {\n if (domSel.anchorNode != node || domSel.anchorOffset != offset) {\n doc.removeEventListener(\"selectionchange\", view.input.hideSelectionGuard);\n setTimeout(() => {\n if (!editorOwnsSelection(view) || view.state.selection.visible)\n view.dom.classList.remove(\"ProseMirror-hideselection\");\n }, 20);\n }\n });\n}\nfunction selectCursorWrapper(view) {\n let domSel = view.domSelection(), range = document.createRange();\n let node = view.cursorWrapper.dom, img = node.nodeName == \"IMG\";\n if (img)\n range.setEnd(node.parentNode, domIndex(node) + 1);\n else\n range.setEnd(node, 0);\n range.collapse(false);\n domSel.removeAllRanges();\n domSel.addRange(range);\n // Kludge to kill 'control selection' in IE11 when selecting an\n // invisible cursor wrapper, since that would result in those weird\n // resize handles and a selection that considers the absolutely\n // positioned wrapper, rather than the root editable node, the\n // focused element.\n if (!img && !view.state.selection.visible && ie && ie_version <= 11) {\n node.disabled = true;\n node.disabled = false;\n }\n}\nfunction syncNodeSelection(view, sel) {\n if (sel instanceof NodeSelection) {\n let desc = view.docView.descAt(sel.from);\n if (desc != view.lastSelectedViewDesc) {\n clearNodeSelection(view);\n if (desc)\n desc.selectNode();\n view.lastSelectedViewDesc = desc;\n }\n }\n else {\n clearNodeSelection(view);\n }\n}\n// Clear all DOM statefulness of the last node selection.\nfunction clearNodeSelection(view) {\n if (view.lastSelectedViewDesc) {\n if (view.lastSelectedViewDesc.parent)\n view.lastSelectedViewDesc.deselectNode();\n view.lastSelectedViewDesc = undefined;\n }\n}\nfunction selectionBetween(view, $anchor, $head, bias) {\n return view.someProp(\"createSelectionBetween\", f => f(view, $anchor, $head))\n || TextSelection.between($anchor, $head, bias);\n}\nfunction hasFocusAndSelection(view) {\n if (view.editable && !view.hasFocus())\n return false;\n return hasSelection(view);\n}\nfunction hasSelection(view) {\n let sel = view.domSelectionRange();\n if (!sel.anchorNode)\n return false;\n try {\n // Firefox will raise 'permission denied' errors when accessing\n // properties of `sel.anchorNode` when it's in a generated CSS\n // element.\n return view.dom.contains(sel.anchorNode.nodeType == 3 ? sel.anchorNode.parentNode : sel.anchorNode) &&\n (view.editable || view.dom.contains(sel.focusNode.nodeType == 3 ? sel.focusNode.parentNode : sel.focusNode));\n }\n catch (_) {\n return false;\n }\n}\nfunction anchorInRightPlace(view) {\n let anchorDOM = view.docView.domFromPos(view.state.selection.anchor, 0);\n let domSel = view.domSelectionRange();\n return isEquivalentPosition(anchorDOM.node, anchorDOM.offset, domSel.anchorNode, domSel.anchorOffset);\n}\n\nfunction moveSelectionBlock(state, dir) {\n let { $anchor, $head } = state.selection;\n let $side = dir > 0 ? $anchor.max($head) : $anchor.min($head);\n let $start = !$side.parent.inlineContent ? $side : $side.depth ? state.doc.resolve(dir > 0 ? $side.after() : $side.before()) : null;\n return $start && Selection.findFrom($start, dir);\n}\nfunction apply(view, sel) {\n view.dispatch(view.state.tr.setSelection(sel).scrollIntoView());\n return true;\n}\nfunction selectHorizontally(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection) {\n if (!sel.empty || mods.indexOf(\"s\") > -1) {\n return false;\n }\n else if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n return false;\n }\n else if (!(mac && mods.indexOf(\"m\") > -1)) {\n let $head = sel.$head, node = $head.textOffset ? null : dir < 0 ? $head.nodeBefore : $head.nodeAfter, desc;\n if (!node || node.isText)\n return false;\n let nodePos = dir < 0 ? $head.pos - node.nodeSize : $head.pos;\n if (!(node.isAtom || (desc = view.docView.descAt(nodePos)) && !desc.contentDOM))\n return false;\n if (NodeSelection.isSelectable(node)) {\n return apply(view, new NodeSelection(dir < 0 ? view.state.doc.resolve($head.pos - node.nodeSize) : $head));\n }\n else if (webkit) {\n // Chrome and Safari will introduce extra pointless cursor\n // positions around inline uneditable nodes, so we have to\n // take over and move the cursor past them (#937)\n return apply(view, new TextSelection(view.state.doc.resolve(dir < 0 ? nodePos : nodePos + node.nodeSize)));\n }\n else {\n return false;\n }\n }\n }\n else if (sel instanceof NodeSelection && sel.node.isInline) {\n return apply(view, new TextSelection(dir > 0 ? sel.$to : sel.$from));\n }\n else {\n let next = moveSelectionBlock(view.state, dir);\n if (next)\n return apply(view, next);\n return false;\n }\n}\nfunction nodeLen(node) {\n return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction isIgnorable(dom, dir) {\n if (dom.contentEditable == \"false\")\n return true;\n let desc = dom.pmViewDesc;\n return desc && desc.size == 0 && (dir < 0 || dom.nextSibling || dom.nodeName != \"BR\");\n}\nfunction skipIgnoredNodes(view, dir) {\n return dir < 0 ? skipIgnoredNodesBefore(view) : skipIgnoredNodesAfter(view);\n}\n// Make sure the cursor isn't directly after one or more ignored\n// nodes, which will confuse the browser's cursor motion logic.\nfunction skipIgnoredNodesBefore(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let moveNode, moveOffset, force = false;\n // Gecko will do odd things when the selection is directly in front\n // of a non-editable node, so in that case, move it into the next\n // node if possible. Issue prosemirror/prosemirror#832.\n if (gecko && node.nodeType == 1 && offset < nodeLen(node) && isIgnorable(node.childNodes[offset], -1))\n force = true;\n for (;;) {\n if (offset > 0) {\n if (node.nodeType != 1) {\n break;\n }\n else {\n let before = node.childNodes[offset - 1];\n if (isIgnorable(before, -1)) {\n moveNode = node;\n moveOffset = --offset;\n }\n else if (before.nodeType == 3) {\n node = before;\n offset = node.nodeValue.length;\n }\n else\n break;\n }\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let prev = node.previousSibling;\n while (prev && isIgnorable(prev, -1)) {\n moveNode = node.parentNode;\n moveOffset = domIndex(prev);\n prev = prev.previousSibling;\n }\n if (!prev) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = 0;\n }\n else {\n node = prev;\n offset = nodeLen(node);\n }\n }\n }\n if (force)\n setSelFocus(view, node, offset);\n else if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\n// Make sure the cursor isn't directly before one or more ignored\n// nodes.\nfunction skipIgnoredNodesAfter(view) {\n let sel = view.domSelectionRange();\n let node = sel.focusNode, offset = sel.focusOffset;\n if (!node)\n return;\n let len = nodeLen(node);\n let moveNode, moveOffset;\n for (;;) {\n if (offset < len) {\n if (node.nodeType != 1)\n break;\n let after = node.childNodes[offset];\n if (isIgnorable(after, 1)) {\n moveNode = node;\n moveOffset = ++offset;\n }\n else\n break;\n }\n else if (isBlockNode(node)) {\n break;\n }\n else {\n let next = node.nextSibling;\n while (next && isIgnorable(next, 1)) {\n moveNode = next.parentNode;\n moveOffset = domIndex(next) + 1;\n next = next.nextSibling;\n }\n if (!next) {\n node = node.parentNode;\n if (node == view.dom)\n break;\n offset = len = 0;\n }\n else {\n node = next;\n offset = 0;\n len = nodeLen(node);\n }\n }\n }\n if (moveNode)\n setSelFocus(view, moveNode, moveOffset);\n}\nfunction isBlockNode(dom) {\n let desc = dom.pmViewDesc;\n return desc && desc.node && desc.node.isBlock;\n}\nfunction textNodeAfter(node, offset) {\n while (node && offset == node.childNodes.length && !hasBlockDesc(node)) {\n offset = domIndex(node) + 1;\n node = node.parentNode;\n }\n while (node && offset < node.childNodes.length) {\n let next = node.childNodes[offset];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = 0;\n }\n}\nfunction textNodeBefore(node, offset) {\n while (node && !offset && !hasBlockDesc(node)) {\n offset = domIndex(node);\n node = node.parentNode;\n }\n while (node && offset) {\n let next = node.childNodes[offset - 1];\n if (next.nodeType == 3)\n return next;\n if (next.nodeType == 1 && next.contentEditable == \"false\")\n break;\n node = next;\n offset = node.childNodes.length;\n }\n}\nfunction setSelFocus(view, node, offset) {\n if (node.nodeType != 3) {\n let before, after;\n if (after = textNodeAfter(node, offset)) {\n node = after;\n offset = 0;\n }\n else if (before = textNodeBefore(node, offset)) {\n node = before;\n offset = before.nodeValue.length;\n }\n }\n let sel = view.domSelection();\n if (selectionCollapsed(sel)) {\n let range = document.createRange();\n range.setEnd(node, offset);\n range.setStart(node, offset);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n else if (sel.extend) {\n sel.extend(node, offset);\n }\n view.domObserver.setCurSelection();\n let { state } = view;\n // If no state update ends up happening, reset the selection.\n setTimeout(() => {\n if (view.state == state)\n selectionToDOM(view);\n }, 50);\n}\nfunction findDirection(view, pos) {\n let $pos = view.state.doc.resolve(pos);\n if (!(chrome || windows) && $pos.parent.inlineContent) {\n let coords = view.coordsAtPos(pos);\n if (pos > $pos.start()) {\n let before = view.coordsAtPos(pos - 1);\n let mid = (before.top + before.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(before.left - coords.left) > 1)\n return before.left < coords.left ? \"ltr\" : \"rtl\";\n }\n if (pos < $pos.end()) {\n let after = view.coordsAtPos(pos + 1);\n let mid = (after.top + after.bottom) / 2;\n if (mid > coords.top && mid < coords.bottom && Math.abs(after.left - coords.left) > 1)\n return after.left > coords.left ? \"ltr\" : \"rtl\";\n }\n }\n let computed = getComputedStyle(view.dom).direction;\n return computed == \"rtl\" ? \"rtl\" : \"ltr\";\n}\n// Check whether vertical selection motion would involve node\n// selections. If so, apply it (if not, the result is left to the\n// browser)\nfunction selectVertically(view, dir, mods) {\n let sel = view.state.selection;\n if (sel instanceof TextSelection && !sel.empty || mods.indexOf(\"s\") > -1)\n return false;\n if (mac && mods.indexOf(\"m\") > -1)\n return false;\n let { $from, $to } = sel;\n if (!$from.parent.inlineContent || view.endOfTextblock(dir < 0 ? \"up\" : \"down\")) {\n let next = moveSelectionBlock(view.state, dir);\n if (next && (next instanceof NodeSelection))\n return apply(view, next);\n }\n if (!$from.parent.inlineContent) {\n let side = dir < 0 ? $from : $to;\n let beyond = sel instanceof AllSelection ? Selection.near(side, dir) : Selection.findFrom(side, dir);\n return beyond ? apply(view, beyond) : false;\n }\n return false;\n}\nfunction stopNativeHorizontalDelete(view, dir) {\n if (!(view.state.selection instanceof TextSelection))\n return true;\n let { $head, $anchor, empty } = view.state.selection;\n if (!$head.sameParent($anchor))\n return true;\n if (!empty)\n return false;\n if (view.endOfTextblock(dir > 0 ? \"forward\" : \"backward\"))\n return true;\n let nextNode = !$head.textOffset && (dir < 0 ? $head.nodeBefore : $head.nodeAfter);\n if (nextNode && !nextNode.isText) {\n let tr = view.state.tr;\n if (dir < 0)\n tr.delete($head.pos - nextNode.nodeSize, $head.pos);\n else\n tr.delete($head.pos, $head.pos + nextNode.nodeSize);\n view.dispatch(tr);\n return true;\n }\n return false;\n}\nfunction switchEditable(view, node, state) {\n view.domObserver.stop();\n node.contentEditable = state;\n view.domObserver.start();\n}\n// Issue #867 / #1090 / https://bugs.chromium.org/p/chromium/issues/detail?id=903821\n// In which Safari (and at some point in the past, Chrome) does really\n// wrong things when the down arrow is pressed when the cursor is\n// directly at the start of a textblock and has an uneditable node\n// after it\nfunction safariDownArrowBug(view) {\n if (!safari || view.state.selection.$head.parentOffset > 0)\n return false;\n let { focusNode, focusOffset } = view.domSelectionRange();\n if (focusNode && focusNode.nodeType == 1 && focusOffset == 0 &&\n focusNode.firstChild && focusNode.firstChild.contentEditable == \"false\") {\n let child = focusNode.firstChild;\n switchEditable(view, child, \"true\");\n setTimeout(() => switchEditable(view, child, \"false\"), 20);\n }\n return false;\n}\n// A backdrop key mapping used to make sure we always suppress keys\n// that have a dangerous default effect, even if the commands they are\n// bound to return false, and to make sure that cursor-motion keys\n// find a cursor (as opposed to a node selection) when pressed. For\n// cursor-motion keys, the code in the handlers also takes care of\n// block selections.\nfunction getMods(event) {\n let result = \"\";\n if (event.ctrlKey)\n result += \"c\";\n if (event.metaKey)\n result += \"m\";\n if (event.altKey)\n result += \"a\";\n if (event.shiftKey)\n result += \"s\";\n return result;\n}\nfunction captureKeyDown(view, event) {\n let code = event.keyCode, mods = getMods(event);\n if (code == 8 || (mac && code == 72 && mods == \"c\")) { // Backspace, Ctrl-h on Mac\n return stopNativeHorizontalDelete(view, -1) || skipIgnoredNodes(view, -1);\n }\n else if ((code == 46 && !event.shiftKey) || (mac && code == 68 && mods == \"c\")) { // Delete, Ctrl-d on Mac\n return stopNativeHorizontalDelete(view, 1) || skipIgnoredNodes(view, 1);\n }\n else if (code == 13 || code == 27) { // Enter, Esc\n return true;\n }\n else if (code == 37 || (mac && code == 66 && mods == \"c\")) { // Left arrow, Ctrl-b on Mac\n let dir = code == 37 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? -1 : 1) : -1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 39 || (mac && code == 70 && mods == \"c\")) { // Right arrow, Ctrl-f on Mac\n let dir = code == 39 ? (findDirection(view, view.state.selection.from) == \"ltr\" ? 1 : -1) : 1;\n return selectHorizontally(view, dir, mods) || skipIgnoredNodes(view, dir);\n }\n else if (code == 38 || (mac && code == 80 && mods == \"c\")) { // Up arrow, Ctrl-p on Mac\n return selectVertically(view, -1, mods) || skipIgnoredNodes(view, -1);\n }\n else if (code == 40 || (mac && code == 78 && mods == \"c\")) { // Down arrow, Ctrl-n on Mac\n return safariDownArrowBug(view) || selectVertically(view, 1, mods) || skipIgnoredNodes(view, 1);\n }\n else if (mods == (mac ? \"m\" : \"c\") &&\n (code == 66 || code == 73 || code == 89 || code == 90)) { // Mod-[biyz]\n return true;\n }\n return false;\n}\n\nfunction serializeForClipboard(view, slice) {\n view.someProp(\"transformCopied\", f => { slice = f(slice, view); });\n let context = [], { content, openStart, openEnd } = slice;\n while (openStart > 1 && openEnd > 1 && content.childCount == 1 && content.firstChild.childCount == 1) {\n openStart--;\n openEnd--;\n let node = content.firstChild;\n context.push(node.type.name, node.attrs != node.type.defaultAttrs ? node.attrs : null);\n content = node.content;\n }\n let serializer = view.someProp(\"clipboardSerializer\") || DOMSerializer.fromSchema(view.state.schema);\n let doc = detachedDoc(), wrap = doc.createElement(\"div\");\n wrap.appendChild(serializer.serializeFragment(content, { document: doc }));\n let firstChild = wrap.firstChild, needsWrap, wrappers = 0;\n while (firstChild && firstChild.nodeType == 1 && (needsWrap = wrapMap[firstChild.nodeName.toLowerCase()])) {\n for (let i = needsWrap.length - 1; i >= 0; i--) {\n let wrapper = doc.createElement(needsWrap[i]);\n while (wrap.firstChild)\n wrapper.appendChild(wrap.firstChild);\n wrap.appendChild(wrapper);\n wrappers++;\n }\n firstChild = wrap.firstChild;\n }\n if (firstChild && firstChild.nodeType == 1)\n firstChild.setAttribute(\"data-pm-slice\", `${openStart} ${openEnd}${wrappers ? ` -${wrappers}` : \"\"} ${JSON.stringify(context)}`);\n let text = view.someProp(\"clipboardTextSerializer\", f => f(slice, view)) ||\n slice.content.textBetween(0, slice.content.size, \"\\n\\n\");\n return { dom: wrap, text };\n}\n// Read a slice of content from the clipboard (or drop data).\nfunction parseFromClipboard(view, text, html, plainText, $context) {\n let inCode = $context.parent.type.spec.code;\n let dom, slice;\n if (!html && !text)\n return null;\n let asText = text && (plainText || inCode || !html);\n if (asText) {\n view.someProp(\"transformPastedText\", f => { text = f(text, inCode || plainText, view); });\n if (inCode)\n return text ? new Slice(Fragment.from(view.state.schema.text(text.replace(/\\r\\n?/g, \"\\n\"))), 0, 0) : Slice.empty;\n let parsed = view.someProp(\"clipboardTextParser\", f => f(text, $context, plainText, view));\n if (parsed) {\n slice = parsed;\n }\n else {\n let marks = $context.marks();\n let { schema } = view.state, serializer = DOMSerializer.fromSchema(schema);\n dom = document.createElement(\"div\");\n text.split(/(?:\\r\\n?|\\n)+/).forEach(block => {\n let p = dom.appendChild(document.createElement(\"p\"));\n if (block)\n p.appendChild(serializer.serializeNode(schema.text(block, marks)));\n });\n }\n }\n else {\n view.someProp(\"transformPastedHTML\", f => { html = f(html, view); });\n dom = readHTML(html);\n if (webkit)\n restoreReplacedSpaces(dom);\n }\n let contextNode = dom && dom.querySelector(\"[data-pm-slice]\");\n let sliceData = contextNode && /^(\\d+) (\\d+)(?: -(\\d+))? (.*)/.exec(contextNode.getAttribute(\"data-pm-slice\") || \"\");\n if (sliceData && sliceData[3])\n for (let i = +sliceData[3]; i > 0; i--) {\n let child = dom.firstChild;\n while (child && child.nodeType != 1)\n child = child.nextSibling;\n if (!child)\n break;\n dom = child;\n }\n if (!slice) {\n let parser = view.someProp(\"clipboardParser\") || view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n slice = parser.parseSlice(dom, {\n preserveWhitespace: !!(asText || sliceData),\n context: $context,\n ruleFromNode(dom) {\n if (dom.nodeName == \"BR\" && !dom.nextSibling &&\n dom.parentNode && !inlineParents.test(dom.parentNode.nodeName))\n return { ignore: true };\n return null;\n }\n });\n }\n if (sliceData) {\n slice = addContext(closeSlice(slice, +sliceData[1], +sliceData[2]), sliceData[4]);\n }\n else { // HTML wasn't created by ProseMirror. Make sure top-level siblings are coherent\n slice = Slice.maxOpen(normalizeSiblings(slice.content, $context), true);\n if (slice.openStart || slice.openEnd) {\n let openStart = 0, openEnd = 0;\n for (let node = slice.content.firstChild; openStart < slice.openStart && !node.type.spec.isolating; openStart++, node = node.firstChild) { }\n for (let node = slice.content.lastChild; openEnd < slice.openEnd && !node.type.spec.isolating; openEnd++, node = node.lastChild) { }\n slice = closeSlice(slice, openStart, openEnd);\n }\n }\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n return slice;\n}\nconst inlineParents = /^(a|abbr|acronym|b|cite|code|del|em|i|ins|kbd|label|output|q|ruby|s|samp|span|strong|sub|sup|time|u|tt|var)$/i;\n// Takes a slice parsed with parseSlice, which means there hasn't been\n// any content-expression checking done on the top nodes, tries to\n// find a parent node in the current context that might fit the nodes,\n// and if successful, rebuilds the slice so that it fits into that parent.\n//\n// This addresses the problem that Transform.replace expects a\n// coherent slice, and will fail to place a set of siblings that don't\n// fit anywhere in the schema.\nfunction normalizeSiblings(fragment, $context) {\n if (fragment.childCount < 2)\n return fragment;\n for (let d = $context.depth; d >= 0; d--) {\n let parent = $context.node(d);\n let match = parent.contentMatchAt($context.index(d));\n let lastWrap, result = [];\n fragment.forEach(node => {\n if (!result)\n return;\n let wrap = match.findWrapping(node.type), inLast;\n if (!wrap)\n return result = null;\n if (inLast = result.length && lastWrap.length && addToSibling(wrap, lastWrap, node, result[result.length - 1], 0)) {\n result[result.length - 1] = inLast;\n }\n else {\n if (result.length)\n result[result.length - 1] = closeRight(result[result.length - 1], lastWrap.length);\n let wrapped = withWrappers(node, wrap);\n result.push(wrapped);\n match = match.matchType(wrapped.type);\n lastWrap = wrap;\n }\n });\n if (result)\n return Fragment.from(result);\n }\n return fragment;\n}\nfunction withWrappers(node, wrap, from = 0) {\n for (let i = wrap.length - 1; i >= from; i--)\n node = wrap[i].create(null, Fragment.from(node));\n return node;\n}\n// Used to group adjacent nodes wrapped in similar parents by\n// normalizeSiblings into the same parent node\nfunction addToSibling(wrap, lastWrap, node, sibling, depth) {\n if (depth < wrap.length && depth < lastWrap.length && wrap[depth] == lastWrap[depth]) {\n let inner = addToSibling(wrap, lastWrap, node, sibling.lastChild, depth + 1);\n if (inner)\n return sibling.copy(sibling.content.replaceChild(sibling.childCount - 1, inner));\n let match = sibling.contentMatchAt(sibling.childCount);\n if (match.matchType(depth == wrap.length - 1 ? node.type : wrap[depth + 1]))\n return sibling.copy(sibling.content.append(Fragment.from(withWrappers(node, wrap, depth + 1))));\n }\n}\nfunction closeRight(node, depth) {\n if (depth == 0)\n return node;\n let fragment = node.content.replaceChild(node.childCount - 1, closeRight(node.lastChild, depth - 1));\n let fill = node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true);\n return node.copy(fragment.append(fill));\n}\nfunction closeRange(fragment, side, from, to, depth, openEnd) {\n let node = side < 0 ? fragment.firstChild : fragment.lastChild, inner = node.content;\n if (fragment.childCount > 1)\n openEnd = 0;\n if (depth < to - 1)\n inner = closeRange(inner, side, from, to, depth + 1, openEnd);\n if (depth >= from)\n inner = side < 0 ? node.contentMatchAt(0).fillBefore(inner, openEnd <= depth).append(inner)\n : inner.append(node.contentMatchAt(node.childCount).fillBefore(Fragment.empty, true));\n return fragment.replaceChild(side < 0 ? 0 : fragment.childCount - 1, node.copy(inner));\n}\nfunction closeSlice(slice, openStart, openEnd) {\n if (openStart < slice.openStart)\n slice = new Slice(closeRange(slice.content, -1, openStart, slice.openStart, 0, slice.openEnd), openStart, slice.openEnd);\n if (openEnd < slice.openEnd)\n slice = new Slice(closeRange(slice.content, 1, openEnd, slice.openEnd, 0, 0), slice.openStart, openEnd);\n return slice;\n}\n// Trick from jQuery -- some elements must be wrapped in other\n// elements for innerHTML to work. I.e. if you do `div.innerHTML =\n// \"
  • \"` the table cells are ignored.\nconst wrapMap = {\n thead: [\"table\"],\n tbody: [\"table\"],\n tfoot: [\"table\"],\n caption: [\"table\"],\n colgroup: [\"table\"],\n col: [\"table\", \"colgroup\"],\n tr: [\"table\", \"tbody\"],\n td: [\"table\", \"tbody\", \"tr\"],\n th: [\"table\", \"tbody\", \"tr\"]\n};\nlet _detachedDoc = null;\nfunction detachedDoc() {\n return _detachedDoc || (_detachedDoc = document.implementation.createHTMLDocument(\"title\"));\n}\nfunction readHTML(html) {\n let metas = /^(\\s*]*>)*/.exec(html);\n if (metas)\n html = html.slice(metas[0].length);\n let elt = detachedDoc().createElement(\"div\");\n let firstTag = /<([a-z][^>\\s]+)/i.exec(html), wrap;\n if (wrap = firstTag && wrapMap[firstTag[1].toLowerCase()])\n html = wrap.map(n => \"<\" + n + \">\").join(\"\") + html + wrap.map(n => \"\").reverse().join(\"\");\n elt.innerHTML = html;\n if (wrap)\n for (let i = 0; i < wrap.length; i++)\n elt = elt.querySelector(wrap[i]) || elt;\n return elt;\n}\n// Webkit browsers do some hard-to-predict replacement of regular\n// spaces with non-breaking spaces when putting content on the\n// clipboard. This tries to convert such non-breaking spaces (which\n// will be wrapped in a plain span on Chrome, a span with class\n// Apple-converted-space on Safari) back to regular spaces.\nfunction restoreReplacedSpaces(dom) {\n let nodes = dom.querySelectorAll(chrome ? \"span:not([class]):not([style])\" : \"span.Apple-converted-space\");\n for (let i = 0; i < nodes.length; i++) {\n let node = nodes[i];\n if (node.childNodes.length == 1 && node.textContent == \"\\u00a0\" && node.parentNode)\n node.parentNode.replaceChild(dom.ownerDocument.createTextNode(\" \"), node);\n }\n}\nfunction addContext(slice, context) {\n if (!slice.size)\n return slice;\n let schema = slice.content.firstChild.type.schema, array;\n try {\n array = JSON.parse(context);\n }\n catch (e) {\n return slice;\n }\n let { content, openStart, openEnd } = slice;\n for (let i = array.length - 2; i >= 0; i -= 2) {\n let type = schema.nodes[array[i]];\n if (!type || type.hasRequiredAttrs())\n break;\n content = Fragment.from(type.create(array[i + 1], content));\n openStart++;\n openEnd++;\n }\n return new Slice(content, openStart, openEnd);\n}\n\n// A collection of DOM events that occur within the editor, and callback functions\n// to invoke when the event fires.\nconst handlers = {};\nconst editHandlers = {};\nconst passiveHandlers = { touchstart: true, touchmove: true };\nclass InputState {\n constructor() {\n this.shiftKey = false;\n this.mouseDown = null;\n this.lastKeyCode = null;\n this.lastKeyCodeTime = 0;\n this.lastClick = { time: 0, x: 0, y: 0, type: \"\" };\n this.lastSelectionOrigin = null;\n this.lastSelectionTime = 0;\n this.lastIOSEnter = 0;\n this.lastIOSEnterFallbackTimeout = -1;\n this.lastFocus = 0;\n this.lastTouch = 0;\n this.lastAndroidDelete = 0;\n this.composing = false;\n this.composingTimeout = -1;\n this.compositionNodes = [];\n this.compositionEndedAt = -2e8;\n this.compositionID = 1;\n // Set to a composition ID when there are pending changes at compositionend\n this.compositionPendingChanges = 0;\n this.domChangeCount = 0;\n this.eventHandlers = Object.create(null);\n this.hideSelectionGuard = null;\n }\n}\nfunction initInput(view) {\n for (let event in handlers) {\n let handler = handlers[event];\n view.dom.addEventListener(event, view.input.eventHandlers[event] = (event) => {\n if (eventBelongsToView(view, event) && !runCustomHandler(view, event) &&\n (view.editable || !(event.type in editHandlers)))\n handler(view, event);\n }, passiveHandlers[event] ? { passive: true } : undefined);\n }\n // On Safari, for reasons beyond my understanding, adding an input\n // event handler makes an issue where the composition vanishes when\n // you press enter go away.\n if (safari)\n view.dom.addEventListener(\"input\", () => null);\n ensureListeners(view);\n}\nfunction setSelectionOrigin(view, origin) {\n view.input.lastSelectionOrigin = origin;\n view.input.lastSelectionTime = Date.now();\n}\nfunction destroyInput(view) {\n view.domObserver.stop();\n for (let type in view.input.eventHandlers)\n view.dom.removeEventListener(type, view.input.eventHandlers[type]);\n clearTimeout(view.input.composingTimeout);\n clearTimeout(view.input.lastIOSEnterFallbackTimeout);\n}\nfunction ensureListeners(view) {\n view.someProp(\"handleDOMEvents\", currentHandlers => {\n for (let type in currentHandlers)\n if (!view.input.eventHandlers[type])\n view.dom.addEventListener(type, view.input.eventHandlers[type] = event => runCustomHandler(view, event));\n });\n}\nfunction runCustomHandler(view, event) {\n return view.someProp(\"handleDOMEvents\", handlers => {\n let handler = handlers[event.type];\n return handler ? handler(view, event) || event.defaultPrevented : false;\n });\n}\nfunction eventBelongsToView(view, event) {\n if (!event.bubbles)\n return true;\n if (event.defaultPrevented)\n return false;\n for (let node = event.target; node != view.dom; node = node.parentNode)\n if (!node || node.nodeType == 11 ||\n (node.pmViewDesc && node.pmViewDesc.stopEvent(event)))\n return false;\n return true;\n}\nfunction dispatchEvent(view, event) {\n if (!runCustomHandler(view, event) && handlers[event.type] &&\n (view.editable || !(event.type in editHandlers)))\n handlers[event.type](view, event);\n}\neditHandlers.keydown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.keyCode == 16 || event.shiftKey;\n if (inOrNearComposition(view, event))\n return;\n view.input.lastKeyCode = event.keyCode;\n view.input.lastKeyCodeTime = Date.now();\n // Suppress enter key events on Chrome Android, because those tend\n // to be part of a confused sequence of composition events fired,\n // and handling them eagerly tends to corrupt the input.\n if (android && chrome && event.keyCode == 13)\n return;\n if (event.keyCode != 229)\n view.domObserver.forceFlush();\n // On iOS, if we preventDefault enter key presses, the virtual\n // keyboard gets confused. So the hack here is to set a flag that\n // makes the DOM change code recognize that what just happens should\n // be replaced by whatever the Enter key handlers do.\n if (ios && event.keyCode == 13 && !event.ctrlKey && !event.altKey && !event.metaKey) {\n let now = Date.now();\n view.input.lastIOSEnter = now;\n view.input.lastIOSEnterFallbackTimeout = setTimeout(() => {\n if (view.input.lastIOSEnter == now) {\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")));\n view.input.lastIOSEnter = 0;\n }\n }, 200);\n }\n else if (view.someProp(\"handleKeyDown\", f => f(view, event)) || captureKeyDown(view, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"key\");\n }\n};\neditHandlers.keyup = (view, event) => {\n if (event.keyCode == 16)\n view.input.shiftKey = false;\n};\neditHandlers.keypress = (view, _event) => {\n let event = _event;\n if (inOrNearComposition(view, event) || !event.charCode ||\n event.ctrlKey && !event.altKey || mac && event.metaKey)\n return;\n if (view.someProp(\"handleKeyPress\", f => f(view, event))) {\n event.preventDefault();\n return;\n }\n let sel = view.state.selection;\n if (!(sel instanceof TextSelection) || !sel.$from.sameParent(sel.$to)) {\n let text = String.fromCharCode(event.charCode);\n if (!/[\\r\\n]/.test(text) && !view.someProp(\"handleTextInput\", f => f(view, sel.$from.pos, sel.$to.pos, text)))\n view.dispatch(view.state.tr.insertText(text).scrollIntoView());\n event.preventDefault();\n }\n};\nfunction eventCoords(event) { return { left: event.clientX, top: event.clientY }; }\nfunction isNear(event, click) {\n let dx = click.x - event.clientX, dy = click.y - event.clientY;\n return dx * dx + dy * dy < 100;\n}\nfunction runHandlerOnContext(view, propName, pos, inside, event) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n if (view.someProp(propName, f => i > $pos.depth ? f(view, pos, $pos.nodeAfter, $pos.before(i), event, true)\n : f(view, pos, $pos.node(i), $pos.before(i), event, false)))\n return true;\n }\n return false;\n}\nfunction updateSelection(view, selection, origin) {\n if (!view.focused)\n view.focus();\n let tr = view.state.tr.setSelection(selection);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n view.dispatch(tr);\n}\nfunction selectClickedLeaf(view, inside) {\n if (inside == -1)\n return false;\n let $pos = view.state.doc.resolve(inside), node = $pos.nodeAfter;\n if (node && node.isAtom && NodeSelection.isSelectable(node)) {\n updateSelection(view, new NodeSelection($pos), \"pointer\");\n return true;\n }\n return false;\n}\nfunction selectClickedNode(view, inside) {\n if (inside == -1)\n return false;\n let sel = view.state.selection, selectedNode, selectAt;\n if (sel instanceof NodeSelection)\n selectedNode = sel.node;\n let $pos = view.state.doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n if (NodeSelection.isSelectable(node)) {\n if (selectedNode && sel.$from.depth > 0 &&\n i >= sel.$from.depth && $pos.before(sel.$from.depth + 1) == sel.$from.pos)\n selectAt = $pos.before(sel.$from.depth);\n else\n selectAt = $pos.before(i);\n break;\n }\n }\n if (selectAt != null) {\n updateSelection(view, NodeSelection.create(view.state.doc, selectAt), \"pointer\");\n return true;\n }\n else {\n return false;\n }\n}\nfunction handleSingleClick(view, pos, inside, event, selectNode) {\n return runHandlerOnContext(view, \"handleClickOn\", pos, inside, event) ||\n view.someProp(\"handleClick\", f => f(view, pos, event)) ||\n (selectNode ? selectClickedNode(view, inside) : selectClickedLeaf(view, inside));\n}\nfunction handleDoubleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleDoubleClickOn\", pos, inside, event) ||\n view.someProp(\"handleDoubleClick\", f => f(view, pos, event));\n}\nfunction handleTripleClick(view, pos, inside, event) {\n return runHandlerOnContext(view, \"handleTripleClickOn\", pos, inside, event) ||\n view.someProp(\"handleTripleClick\", f => f(view, pos, event)) ||\n defaultTripleClick(view, inside, event);\n}\nfunction defaultTripleClick(view, inside, event) {\n if (event.button != 0)\n return false;\n let doc = view.state.doc;\n if (inside == -1) {\n if (doc.inlineContent) {\n updateSelection(view, TextSelection.create(doc, 0, doc.content.size), \"pointer\");\n return true;\n }\n return false;\n }\n let $pos = doc.resolve(inside);\n for (let i = $pos.depth + 1; i > 0; i--) {\n let node = i > $pos.depth ? $pos.nodeAfter : $pos.node(i);\n let nodePos = $pos.before(i);\n if (node.inlineContent)\n updateSelection(view, TextSelection.create(doc, nodePos + 1, nodePos + 1 + node.content.size), \"pointer\");\n else if (NodeSelection.isSelectable(node))\n updateSelection(view, NodeSelection.create(doc, nodePos), \"pointer\");\n else\n continue;\n return true;\n }\n}\nfunction forceDOMFlush(view) {\n return endComposition(view);\n}\nconst selectNodeModifier = mac ? \"metaKey\" : \"ctrlKey\";\nhandlers.mousedown = (view, _event) => {\n let event = _event;\n view.input.shiftKey = event.shiftKey;\n let flushed = forceDOMFlush(view);\n let now = Date.now(), type = \"singleClick\";\n if (now - view.input.lastClick.time < 500 && isNear(event, view.input.lastClick) && !event[selectNodeModifier]) {\n if (view.input.lastClick.type == \"singleClick\")\n type = \"doubleClick\";\n else if (view.input.lastClick.type == \"doubleClick\")\n type = \"tripleClick\";\n }\n view.input.lastClick = { time: now, x: event.clientX, y: event.clientY, type };\n let pos = view.posAtCoords(eventCoords(event));\n if (!pos)\n return;\n if (type == \"singleClick\") {\n if (view.input.mouseDown)\n view.input.mouseDown.done();\n view.input.mouseDown = new MouseDown(view, pos, event, !!flushed);\n }\n else if ((type == \"doubleClick\" ? handleDoubleClick : handleTripleClick)(view, pos.pos, pos.inside, event)) {\n event.preventDefault();\n }\n else {\n setSelectionOrigin(view, \"pointer\");\n }\n};\nclass MouseDown {\n constructor(view, pos, event, flushed) {\n this.view = view;\n this.pos = pos;\n this.event = event;\n this.flushed = flushed;\n this.delayedSelectionSync = false;\n this.mightDrag = null;\n this.startDoc = view.state.doc;\n this.selectNode = !!event[selectNodeModifier];\n this.allowDefault = event.shiftKey;\n let targetNode, targetPos;\n if (pos.inside > -1) {\n targetNode = view.state.doc.nodeAt(pos.inside);\n targetPos = pos.inside;\n }\n else {\n let $pos = view.state.doc.resolve(pos.pos);\n targetNode = $pos.parent;\n targetPos = $pos.depth ? $pos.before() : 0;\n }\n const target = flushed ? null : event.target;\n const targetDesc = target ? view.docView.nearestDesc(target, true) : null;\n this.target = targetDesc ? targetDesc.dom : null;\n let { selection } = view.state;\n if (event.button == 0 &&\n targetNode.type.spec.draggable && targetNode.type.spec.selectable !== false ||\n selection instanceof NodeSelection && selection.from <= targetPos && selection.to > targetPos)\n this.mightDrag = {\n node: targetNode,\n pos: targetPos,\n addAttr: !!(this.target && !this.target.draggable),\n setUneditable: !!(this.target && gecko && !this.target.hasAttribute(\"contentEditable\"))\n };\n if (this.target && this.mightDrag && (this.mightDrag.addAttr || this.mightDrag.setUneditable)) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.draggable = true;\n if (this.mightDrag.setUneditable)\n setTimeout(() => {\n if (this.view.input.mouseDown == this)\n this.target.setAttribute(\"contentEditable\", \"false\");\n }, 20);\n this.view.domObserver.start();\n }\n view.root.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n view.root.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n setSelectionOrigin(view, \"pointer\");\n }\n done() {\n this.view.root.removeEventListener(\"mouseup\", this.up);\n this.view.root.removeEventListener(\"mousemove\", this.move);\n if (this.mightDrag && this.target) {\n this.view.domObserver.stop();\n if (this.mightDrag.addAttr)\n this.target.removeAttribute(\"draggable\");\n if (this.mightDrag.setUneditable)\n this.target.removeAttribute(\"contentEditable\");\n this.view.domObserver.start();\n }\n if (this.delayedSelectionSync)\n setTimeout(() => selectionToDOM(this.view));\n this.view.input.mouseDown = null;\n }\n up(event) {\n this.done();\n if (!this.view.dom.contains(event.target))\n return;\n let pos = this.pos;\n if (this.view.state.doc != this.startDoc)\n pos = this.view.posAtCoords(eventCoords(event));\n this.updateAllowDefault(event);\n if (this.allowDefault || !pos) {\n setSelectionOrigin(this.view, \"pointer\");\n }\n else if (handleSingleClick(this.view, pos.pos, pos.inside, event, this.selectNode)) {\n event.preventDefault();\n }\n else if (event.button == 0 &&\n (this.flushed ||\n // Safari ignores clicks on draggable elements\n (safari && this.mightDrag && !this.mightDrag.node.isAtom) ||\n // Chrome will sometimes treat a node selection as a\n // cursor, but still report that the node is selected\n // when asked through getSelection. You'll then get a\n // situation where clicking at the point where that\n // (hidden) cursor is doesn't change the selection, and\n // thus doesn't get a reaction from ProseMirror. This\n // works around that.\n (chrome && !this.view.state.selection.visible &&\n Math.min(Math.abs(pos.pos - this.view.state.selection.from), Math.abs(pos.pos - this.view.state.selection.to)) <= 2))) {\n updateSelection(this.view, Selection.near(this.view.state.doc.resolve(pos.pos)), \"pointer\");\n event.preventDefault();\n }\n else {\n setSelectionOrigin(this.view, \"pointer\");\n }\n }\n move(event) {\n this.updateAllowDefault(event);\n setSelectionOrigin(this.view, \"pointer\");\n if (event.buttons == 0)\n this.done();\n }\n updateAllowDefault(event) {\n if (!this.allowDefault && (Math.abs(this.event.x - event.clientX) > 4 ||\n Math.abs(this.event.y - event.clientY) > 4))\n this.allowDefault = true;\n }\n}\nhandlers.touchstart = view => {\n view.input.lastTouch = Date.now();\n forceDOMFlush(view);\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.touchmove = view => {\n view.input.lastTouch = Date.now();\n setSelectionOrigin(view, \"pointer\");\n};\nhandlers.contextmenu = view => forceDOMFlush(view);\nfunction inOrNearComposition(view, event) {\n if (view.composing)\n return true;\n // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n // On Japanese input method editors (IMEs), the Enter key is used to confirm character\n // selection. On Safari, when Enter is pressed, compositionend and keydown events are\n // emitted. The keydown event triggers newline insertion, which we don't want.\n // This method returns true if the keydown event should be ignored.\n // We only ignore it once, as pressing Enter a second time *should* insert a newline.\n // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp.\n // This guards against the case where compositionend is triggered without the keyboard\n // (e.g. character confirmation may be done with the mouse), and keydown is triggered\n // afterwards- we wouldn't want to ignore the keydown event in this case.\n if (safari && Math.abs(event.timeStamp - view.input.compositionEndedAt) < 500) {\n view.input.compositionEndedAt = -2e8;\n return true;\n }\n return false;\n}\n// Drop active composition after 5 seconds of inactivity on Android\nconst timeoutComposition = android ? 5000 : -1;\neditHandlers.compositionstart = editHandlers.compositionupdate = view => {\n if (!view.composing) {\n view.domObserver.flush();\n let { state } = view, $pos = state.selection.$from;\n if (state.selection.empty &&\n (state.storedMarks ||\n (!$pos.textOffset && $pos.parentOffset && $pos.nodeBefore.marks.some(m => m.type.spec.inclusive === false)))) {\n // Need to wrap the cursor in mark nodes different from the ones in the DOM context\n view.markCursor = view.state.storedMarks || $pos.marks();\n endComposition(view, true);\n view.markCursor = null;\n }\n else {\n endComposition(view);\n // In firefox, if the cursor is after but outside a marked node,\n // the inserted text won't inherit the marks. So this moves it\n // inside if necessary.\n if (gecko && state.selection.empty && $pos.parentOffset && !$pos.textOffset && $pos.nodeBefore.marks.length) {\n let sel = view.domSelectionRange();\n for (let node = sel.focusNode, offset = sel.focusOffset; node && node.nodeType == 1 && offset != 0;) {\n let before = offset < 0 ? node.lastChild : node.childNodes[offset - 1];\n if (!before)\n break;\n if (before.nodeType == 3) {\n view.domSelection().collapse(before, before.nodeValue.length);\n break;\n }\n else {\n node = before;\n offset = -1;\n }\n }\n }\n }\n view.input.composing = true;\n }\n scheduleComposeEnd(view, timeoutComposition);\n};\neditHandlers.compositionend = (view, event) => {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = event.timeStamp;\n view.input.compositionPendingChanges = view.domObserver.pendingRecords().length ? view.input.compositionID : 0;\n if (view.input.compositionPendingChanges)\n Promise.resolve().then(() => view.domObserver.flush());\n view.input.compositionID++;\n scheduleComposeEnd(view, 20);\n }\n};\nfunction scheduleComposeEnd(view, delay) {\n clearTimeout(view.input.composingTimeout);\n if (delay > -1)\n view.input.composingTimeout = setTimeout(() => endComposition(view), delay);\n}\nfunction clearComposition(view) {\n if (view.composing) {\n view.input.composing = false;\n view.input.compositionEndedAt = timestampFromCustomEvent();\n }\n while (view.input.compositionNodes.length > 0)\n view.input.compositionNodes.pop().markParentsDirty();\n}\nfunction timestampFromCustomEvent() {\n let event = document.createEvent(\"Event\");\n event.initEvent(\"event\", true, true);\n return event.timeStamp;\n}\n/**\n@internal\n*/\nfunction endComposition(view, forceUpdate = false) {\n if (android && view.domObserver.flushingSoon >= 0)\n return;\n view.domObserver.forceFlush();\n clearComposition(view);\n if (forceUpdate || view.docView && view.docView.dirty) {\n let sel = selectionFromDOM(view);\n if (sel && !sel.eq(view.state.selection))\n view.dispatch(view.state.tr.setSelection(sel));\n else\n view.updateState(view.state);\n return true;\n }\n return false;\n}\nfunction captureCopy(view, dom) {\n // The extra wrapper is somehow necessary on IE/Edge to prevent the\n // content from being mangled when it is put onto the clipboard\n if (!view.dom.parentNode)\n return;\n let wrap = view.dom.parentNode.appendChild(document.createElement(\"div\"));\n wrap.appendChild(dom);\n wrap.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n let sel = getSelection(), range = document.createRange();\n range.selectNodeContents(dom);\n // Done because IE will fire a selectionchange moving the selection\n // to its start when removeAllRanges is called and the editor still\n // has focus (which will mess up the editor's selection state).\n view.dom.blur();\n sel.removeAllRanges();\n sel.addRange(range);\n setTimeout(() => {\n if (wrap.parentNode)\n wrap.parentNode.removeChild(wrap);\n view.focus();\n }, 50);\n}\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (ie && ie_version < 15) ||\n (ios && webkit_version < 604);\nhandlers.copy = editHandlers.cut = (view, _event) => {\n let event = _event;\n let sel = view.state.selection, cut = event.type == \"cut\";\n if (sel.empty)\n return;\n // IE and Edge's clipboard interface is completely broken\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let slice = sel.content(), { dom, text } = serializeForClipboard(view, slice);\n if (data) {\n event.preventDefault();\n data.clearData();\n data.setData(\"text/html\", dom.innerHTML);\n data.setData(\"text/plain\", text);\n }\n else {\n captureCopy(view, dom);\n }\n if (cut)\n view.dispatch(view.state.tr.deleteSelection().scrollIntoView().setMeta(\"uiEvent\", \"cut\"));\n};\nfunction sliceSingleNode(slice) {\n return slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1 ? slice.content.firstChild : null;\n}\nfunction capturePaste(view, event) {\n if (!view.dom.parentNode)\n return;\n let plainText = view.input.shiftKey || view.state.selection.$from.parent.type.spec.code;\n let target = view.dom.parentNode.appendChild(document.createElement(plainText ? \"textarea\" : \"div\"));\n if (!plainText)\n target.contentEditable = \"true\";\n target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n target.focus();\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n setTimeout(() => {\n view.focus();\n if (target.parentNode)\n target.parentNode.removeChild(target);\n if (plainText)\n doPaste(view, target.value, null, plain, event);\n else\n doPaste(view, target.textContent, target.innerHTML, plain, event);\n }, 50);\n}\nfunction doPaste(view, text, html, preferPlain, event) {\n let slice = parseFromClipboard(view, text, html, preferPlain, view.state.selection.$from);\n if (view.someProp(\"handlePaste\", f => f(view, event, slice || Slice.empty)))\n return true;\n if (!slice)\n return false;\n let singleNode = sliceSingleNode(slice);\n let tr = singleNode\n ? view.state.tr.replaceSelectionWith(singleNode, preferPlain)\n : view.state.tr.replaceSelection(slice);\n view.dispatch(tr.scrollIntoView().setMeta(\"paste\", true).setMeta(\"uiEvent\", \"paste\"));\n return true;\n}\neditHandlers.paste = (view, _event) => {\n let event = _event;\n // Handling paste from JavaScript during composition is very poorly\n // handled by browsers, so as a dodgy but preferable kludge, we just\n // let the browser do its native thing there, except on Android,\n // where the editor is almost always composing.\n if (view.composing && !android)\n return;\n let data = brokenClipboardAPI ? null : event.clipboardData;\n let plain = view.input.shiftKey && view.input.lastKeyCode != 45;\n if (data && doPaste(view, data.getData(\"text/plain\"), data.getData(\"text/html\"), plain, event))\n event.preventDefault();\n else\n capturePaste(view, event);\n};\nclass Dragging {\n constructor(slice, move) {\n this.slice = slice;\n this.move = move;\n }\n}\nconst dragCopyModifier = mac ? \"altKey\" : \"ctrlKey\";\nhandlers.dragstart = (view, _event) => {\n let event = _event;\n let mouseDown = view.input.mouseDown;\n if (mouseDown)\n mouseDown.done();\n if (!event.dataTransfer)\n return;\n let sel = view.state.selection;\n let pos = sel.empty ? null : view.posAtCoords(eventCoords(event));\n if (pos && pos.pos >= sel.from && pos.pos <= (sel instanceof NodeSelection ? sel.to - 1 : sel.to)) ;\n else if (mouseDown && mouseDown.mightDrag) {\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, mouseDown.mightDrag.pos)));\n }\n else if (event.target && event.target.nodeType == 1) {\n let desc = view.docView.nearestDesc(event.target, true);\n if (desc && desc.node.type.spec.draggable && desc != view.docView)\n view.dispatch(view.state.tr.setSelection(NodeSelection.create(view.state.doc, desc.posBefore)));\n }\n let slice = view.state.selection.content(), { dom, text } = serializeForClipboard(view, slice);\n event.dataTransfer.clearData();\n event.dataTransfer.setData(brokenClipboardAPI ? \"Text\" : \"text/html\", dom.innerHTML);\n // See https://github.com/ProseMirror/prosemirror/issues/1156\n event.dataTransfer.effectAllowed = \"copyMove\";\n if (!brokenClipboardAPI)\n event.dataTransfer.setData(\"text/plain\", text);\n view.dragging = new Dragging(slice, !event[dragCopyModifier]);\n};\nhandlers.dragend = view => {\n let dragging = view.dragging;\n window.setTimeout(() => {\n if (view.dragging == dragging)\n view.dragging = null;\n }, 50);\n};\neditHandlers.dragover = editHandlers.dragenter = (_, e) => e.preventDefault();\neditHandlers.drop = (view, _event) => {\n let event = _event;\n let dragging = view.dragging;\n view.dragging = null;\n if (!event.dataTransfer)\n return;\n let eventPos = view.posAtCoords(eventCoords(event));\n if (!eventPos)\n return;\n let $mouse = view.state.doc.resolve(eventPos.pos);\n let slice = dragging && dragging.slice;\n if (slice) {\n view.someProp(\"transformPasted\", f => { slice = f(slice, view); });\n }\n else {\n slice = parseFromClipboard(view, event.dataTransfer.getData(brokenClipboardAPI ? \"Text\" : \"text/plain\"), brokenClipboardAPI ? null : event.dataTransfer.getData(\"text/html\"), false, $mouse);\n }\n let move = !!(dragging && !event[dragCopyModifier]);\n if (view.someProp(\"handleDrop\", f => f(view, event, slice || Slice.empty, move))) {\n event.preventDefault();\n return;\n }\n if (!slice)\n return;\n event.preventDefault();\n let insertPos = slice ? dropPoint(view.state.doc, $mouse.pos, slice) : $mouse.pos;\n if (insertPos == null)\n insertPos = $mouse.pos;\n let tr = view.state.tr;\n if (move)\n tr.deleteSelection();\n let pos = tr.mapping.map(insertPos);\n let isNode = slice.openStart == 0 && slice.openEnd == 0 && slice.content.childCount == 1;\n let beforeInsert = tr.doc;\n if (isNode)\n tr.replaceRangeWith(pos, pos, slice.content.firstChild);\n else\n tr.replaceRange(pos, pos, slice);\n if (tr.doc.eq(beforeInsert))\n return;\n let $pos = tr.doc.resolve(pos);\n if (isNode && NodeSelection.isSelectable(slice.content.firstChild) &&\n $pos.nodeAfter && $pos.nodeAfter.sameMarkup(slice.content.firstChild)) {\n tr.setSelection(new NodeSelection($pos));\n }\n else {\n let end = tr.mapping.map(insertPos);\n tr.mapping.maps[tr.mapping.maps.length - 1].forEach((_from, _to, _newFrom, newTo) => end = newTo);\n tr.setSelection(selectionBetween(view, $pos, tr.doc.resolve(end)));\n }\n view.focus();\n view.dispatch(tr.setMeta(\"uiEvent\", \"drop\"));\n};\nhandlers.focus = view => {\n view.input.lastFocus = Date.now();\n if (!view.focused) {\n view.domObserver.stop();\n view.dom.classList.add(\"ProseMirror-focused\");\n view.domObserver.start();\n view.focused = true;\n setTimeout(() => {\n if (view.docView && view.hasFocus() && !view.domObserver.currentSelection.eq(view.domSelectionRange()))\n selectionToDOM(view);\n }, 20);\n }\n};\nhandlers.blur = (view, _event) => {\n let event = _event;\n if (view.focused) {\n view.domObserver.stop();\n view.dom.classList.remove(\"ProseMirror-focused\");\n view.domObserver.start();\n if (event.relatedTarget && view.dom.contains(event.relatedTarget))\n view.domObserver.currentSelection.clear();\n view.focused = false;\n }\n};\nhandlers.beforeinput = (view, _event) => {\n let event = _event;\n // We should probably do more with beforeinput events, but support\n // is so spotty that I'm still waiting to see where they are going.\n // Very specific hack to deal with backspace sometimes failing on\n // Chrome Android when after an uneditable node.\n if (chrome && android && event.inputType == \"deleteContentBackward\") {\n view.domObserver.flushSoon();\n let { domChangeCount } = view.input;\n setTimeout(() => {\n if (view.input.domChangeCount != domChangeCount)\n return; // Event already had some effect\n // This bug tends to close the virtual keyboard, so we refocus\n view.dom.blur();\n view.focus();\n if (view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\"))))\n return;\n let { $cursor } = view.state.selection;\n // Crude approximation of backspace behavior when no command handled it\n if ($cursor && $cursor.pos > 0)\n view.dispatch(view.state.tr.delete($cursor.pos - 1, $cursor.pos).scrollIntoView());\n }, 50);\n }\n};\n// Make sure all handlers get registered\nfor (let prop in editHandlers)\n handlers[prop] = editHandlers[prop];\n\nfunction compareObjs(a, b) {\n if (a == b)\n return true;\n for (let p in a)\n if (a[p] !== b[p])\n return false;\n for (let p in b)\n if (!(p in a))\n return false;\n return true;\n}\nclass WidgetType {\n constructor(toDOM, spec) {\n this.toDOM = toDOM;\n this.spec = spec || noSpec;\n this.side = this.spec.side || 0;\n }\n map(mapping, span, offset, oldOffset) {\n let { pos, deleted } = mapping.mapResult(span.from + oldOffset, this.side < 0 ? -1 : 1);\n return deleted ? null : new Decoration(pos - offset, pos - offset, this);\n }\n valid() { return true; }\n eq(other) {\n return this == other ||\n (other instanceof WidgetType &&\n (this.spec.key && this.spec.key == other.spec.key ||\n this.toDOM == other.toDOM && compareObjs(this.spec, other.spec)));\n }\n destroy(node) {\n if (this.spec.destroy)\n this.spec.destroy(node);\n }\n}\nclass InlineType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.map(span.from + oldOffset, this.spec.inclusiveStart ? -1 : 1) - offset;\n let to = mapping.map(span.to + oldOffset, this.spec.inclusiveEnd ? 1 : -1) - offset;\n return from >= to ? null : new Decoration(from, to, this);\n }\n valid(_, span) { return span.from < span.to; }\n eq(other) {\n return this == other ||\n (other instanceof InlineType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n static is(span) { return span.type instanceof InlineType; }\n destroy() { }\n}\nclass NodeType {\n constructor(attrs, spec) {\n this.attrs = attrs;\n this.spec = spec || noSpec;\n }\n map(mapping, span, offset, oldOffset) {\n let from = mapping.mapResult(span.from + oldOffset, 1);\n if (from.deleted)\n return null;\n let to = mapping.mapResult(span.to + oldOffset, -1);\n if (to.deleted || to.pos <= from.pos)\n return null;\n return new Decoration(from.pos - offset, to.pos - offset, this);\n }\n valid(node, span) {\n let { index, offset } = node.content.findIndex(span.from), child;\n return offset == span.from && !(child = node.child(index)).isText && offset + child.nodeSize == span.to;\n }\n eq(other) {\n return this == other ||\n (other instanceof NodeType && compareObjs(this.attrs, other.attrs) &&\n compareObjs(this.spec, other.spec));\n }\n destroy() { }\n}\n/**\nDecoration objects can be provided to the view through the\n[`decorations` prop](https://prosemirror.net/docs/ref/#view.EditorProps.decorations). They come in\nseveral variants—see the static members of this class for details.\n*/\nclass Decoration {\n /**\n @internal\n */\n constructor(\n /**\n The start position of the decoration.\n */\n from, \n /**\n The end position. Will be the same as `from` for [widget\n decorations](https://prosemirror.net/docs/ref/#view.Decoration^widget).\n */\n to, \n /**\n @internal\n */\n type) {\n this.from = from;\n this.to = to;\n this.type = type;\n }\n /**\n @internal\n */\n copy(from, to) {\n return new Decoration(from, to, this.type);\n }\n /**\n @internal\n */\n eq(other, offset = 0) {\n return this.type.eq(other.type) && this.from + offset == other.from && this.to + offset == other.to;\n }\n /**\n @internal\n */\n map(mapping, offset, oldOffset) {\n return this.type.map(mapping, this, offset, oldOffset);\n }\n /**\n Creates a widget decoration, which is a DOM node that's shown in\n the document at the given position. It is recommended that you\n delay rendering the widget by passing a function that will be\n called when the widget is actually drawn in a view, but you can\n also directly pass a DOM node. `getPos` can be used to find the\n widget's current document position.\n */\n static widget(pos, toDOM, spec) {\n return new Decoration(pos, pos, new WidgetType(toDOM, spec));\n }\n /**\n Creates an inline decoration, which adds the given attributes to\n each inline node between `from` and `to`.\n */\n static inline(from, to, attrs, spec) {\n return new Decoration(from, to, new InlineType(attrs, spec));\n }\n /**\n Creates a node decoration. `from` and `to` should point precisely\n before and after a node in the document. That node, and only that\n node, will receive the given attributes.\n */\n static node(from, to, attrs, spec) {\n return new Decoration(from, to, new NodeType(attrs, spec));\n }\n /**\n The spec provided when creating this decoration. Can be useful\n if you've stored extra information in that object.\n */\n get spec() { return this.type.spec; }\n /**\n @internal\n */\n get inline() { return this.type instanceof InlineType; }\n /**\n @internal\n */\n get widget() { return this.type instanceof WidgetType; }\n}\nconst none = [], noSpec = {};\n/**\nA collection of [decorations](https://prosemirror.net/docs/ref/#view.Decoration), organized in such\na way that the drawing algorithm can efficiently use and compare\nthem. This is a persistent data structure—it is not modified,\nupdates create a new value.\n*/\nclass DecorationSet {\n /**\n @internal\n */\n constructor(local, children) {\n this.local = local.length ? local : none;\n this.children = children.length ? children : none;\n }\n /**\n Create a set of decorations, using the structure of the given\n document. This will consume (modify) the `decorations` array, so\n you must make a copy if you want need to preserve that.\n */\n static create(doc, decorations) {\n return decorations.length ? buildTree(decorations, doc, 0, noSpec) : empty;\n }\n /**\n Find all decorations in this set which touch the given range\n (including decorations that start or end directly at the\n boundaries) and match the given predicate on their spec. When\n `start` and `end` are omitted, all decorations in the set are\n considered. When `predicate` isn't given, all decorations are\n assumed to match.\n */\n find(start, end, predicate) {\n let result = [];\n this.findInner(start == null ? 0 : start, end == null ? 1e9 : end, result, 0, predicate);\n return result;\n }\n findInner(start, end, result, offset, predicate) {\n for (let i = 0; i < this.local.length; i++) {\n let span = this.local[i];\n if (span.from <= end && span.to >= start && (!predicate || predicate(span.spec)))\n result.push(span.copy(span.from + offset, span.to + offset));\n }\n for (let i = 0; i < this.children.length; i += 3) {\n if (this.children[i] < end && this.children[i + 1] > start) {\n let childOff = this.children[i] + 1;\n this.children[i + 2].findInner(start - childOff, end - childOff, result, offset + childOff, predicate);\n }\n }\n }\n /**\n Map the set of decorations in response to a change in the\n document.\n */\n map(mapping, doc, options) {\n if (this == empty || mapping.maps.length == 0)\n return this;\n return this.mapInner(mapping, doc, 0, 0, options || noSpec);\n }\n /**\n @internal\n */\n mapInner(mapping, node, offset, oldOffset, options) {\n let newLocal;\n for (let i = 0; i < this.local.length; i++) {\n let mapped = this.local[i].map(mapping, offset, oldOffset);\n if (mapped && mapped.type.valid(node, mapped))\n (newLocal || (newLocal = [])).push(mapped);\n else if (options.onRemove)\n options.onRemove(this.local[i].spec);\n }\n if (this.children.length)\n return mapChildren(this.children, newLocal || [], mapping, node, offset, oldOffset, options);\n else\n return newLocal ? new DecorationSet(newLocal.sort(byPos), none) : empty;\n }\n /**\n Add the given array of decorations to the ones in the set,\n producing a new set. Consumes the `decorations` array. Needs\n access to the current document to create the appropriate tree\n structure.\n */\n add(doc, decorations) {\n if (!decorations.length)\n return this;\n if (this == empty)\n return DecorationSet.create(doc, decorations);\n return this.addInner(doc, decorations, 0);\n }\n addInner(doc, decorations, offset) {\n let children, childIndex = 0;\n doc.forEach((childNode, childOffset) => {\n let baseOffset = childOffset + offset, found;\n if (!(found = takeSpansForNode(decorations, childNode, baseOffset)))\n return;\n if (!children)\n children = this.children.slice();\n while (childIndex < children.length && children[childIndex] < childOffset)\n childIndex += 3;\n if (children[childIndex] == childOffset)\n children[childIndex + 2] = children[childIndex + 2].addInner(childNode, found, baseOffset + 1);\n else\n children.splice(childIndex, 0, childOffset, childOffset + childNode.nodeSize, buildTree(found, childNode, baseOffset + 1, noSpec));\n childIndex += 3;\n });\n let local = moveSpans(childIndex ? withoutNulls(decorations) : decorations, -offset);\n for (let i = 0; i < local.length; i++)\n if (!local[i].type.valid(doc, local[i]))\n local.splice(i--, 1);\n return new DecorationSet(local.length ? this.local.concat(local).sort(byPos) : this.local, children || this.children);\n }\n /**\n Create a new set that contains the decorations in this set, minus\n the ones in the given array.\n */\n remove(decorations) {\n if (decorations.length == 0 || this == empty)\n return this;\n return this.removeInner(decorations, 0);\n }\n removeInner(decorations, offset) {\n let children = this.children, local = this.local;\n for (let i = 0; i < children.length; i += 3) {\n let found;\n let from = children[i] + offset, to = children[i + 1] + offset;\n for (let j = 0, span; j < decorations.length; j++)\n if (span = decorations[j]) {\n if (span.from > from && span.to < to) {\n decorations[j] = null;\n (found || (found = [])).push(span);\n }\n }\n if (!found)\n continue;\n if (children == this.children)\n children = this.children.slice();\n let removed = children[i + 2].removeInner(found, from + 1);\n if (removed != empty) {\n children[i + 2] = removed;\n }\n else {\n children.splice(i, 3);\n i -= 3;\n }\n }\n if (local.length)\n for (let i = 0, span; i < decorations.length; i++)\n if (span = decorations[i]) {\n for (let j = 0; j < local.length; j++)\n if (local[j].eq(span, offset)) {\n if (local == this.local)\n local = this.local.slice();\n local.splice(j--, 1);\n }\n }\n if (children == this.children && local == this.local)\n return this;\n return local.length || children.length ? new DecorationSet(local, children) : empty;\n }\n /**\n @internal\n */\n forChild(offset, node) {\n if (this == empty)\n return this;\n if (node.isLeaf)\n return DecorationSet.empty;\n let child, local;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] >= offset) {\n if (this.children[i] == offset)\n child = this.children[i + 2];\n break;\n }\n let start = offset + 1, end = start + node.content.size;\n for (let i = 0; i < this.local.length; i++) {\n let dec = this.local[i];\n if (dec.from < end && dec.to > start && (dec.type instanceof InlineType)) {\n let from = Math.max(start, dec.from) - start, to = Math.min(end, dec.to) - start;\n if (from < to)\n (local || (local = [])).push(dec.copy(from, to));\n }\n }\n if (local) {\n let localSet = new DecorationSet(local.sort(byPos), none);\n return child ? new DecorationGroup([localSet, child]) : localSet;\n }\n return child || empty;\n }\n /**\n @internal\n */\n eq(other) {\n if (this == other)\n return true;\n if (!(other instanceof DecorationSet) ||\n this.local.length != other.local.length ||\n this.children.length != other.children.length)\n return false;\n for (let i = 0; i < this.local.length; i++)\n if (!this.local[i].eq(other.local[i]))\n return false;\n for (let i = 0; i < this.children.length; i += 3)\n if (this.children[i] != other.children[i] ||\n this.children[i + 1] != other.children[i + 1] ||\n !this.children[i + 2].eq(other.children[i + 2]))\n return false;\n return true;\n }\n /**\n @internal\n */\n locals(node) {\n return removeOverlap(this.localsInner(node));\n }\n /**\n @internal\n */\n localsInner(node) {\n if (this == empty)\n return none;\n if (node.inlineContent || !this.local.some(InlineType.is))\n return this.local;\n let result = [];\n for (let i = 0; i < this.local.length; i++) {\n if (!(this.local[i].type instanceof InlineType))\n result.push(this.local[i]);\n }\n return result;\n }\n}\n/**\nThe empty set of decorations.\n*/\nDecorationSet.empty = new DecorationSet([], []);\n/**\n@internal\n*/\nDecorationSet.removeOverlap = removeOverlap;\nconst empty = DecorationSet.empty;\n// An abstraction that allows the code dealing with decorations to\n// treat multiple DecorationSet objects as if it were a single object\n// with (a subset of) the same interface.\nclass DecorationGroup {\n constructor(members) {\n this.members = members;\n }\n map(mapping, doc) {\n const mappedDecos = this.members.map(member => member.map(mapping, doc, noSpec));\n return DecorationGroup.from(mappedDecos);\n }\n forChild(offset, child) {\n if (child.isLeaf)\n return DecorationSet.empty;\n let found = [];\n for (let i = 0; i < this.members.length; i++) {\n let result = this.members[i].forChild(offset, child);\n if (result == empty)\n continue;\n if (result instanceof DecorationGroup)\n found = found.concat(result.members);\n else\n found.push(result);\n }\n return DecorationGroup.from(found);\n }\n eq(other) {\n if (!(other instanceof DecorationGroup) ||\n other.members.length != this.members.length)\n return false;\n for (let i = 0; i < this.members.length; i++)\n if (!this.members[i].eq(other.members[i]))\n return false;\n return true;\n }\n locals(node) {\n let result, sorted = true;\n for (let i = 0; i < this.members.length; i++) {\n let locals = this.members[i].localsInner(node);\n if (!locals.length)\n continue;\n if (!result) {\n result = locals;\n }\n else {\n if (sorted) {\n result = result.slice();\n sorted = false;\n }\n for (let j = 0; j < locals.length; j++)\n result.push(locals[j]);\n }\n }\n return result ? removeOverlap(sorted ? result : result.sort(byPos)) : none;\n }\n // Create a group for the given array of decoration sets, or return\n // a single set when possible.\n static from(members) {\n switch (members.length) {\n case 0: return empty;\n case 1: return members[0];\n default: return new DecorationGroup(members.every(m => m instanceof DecorationSet) ? members :\n members.reduce((r, m) => r.concat(m instanceof DecorationSet ? m : m.members), []));\n }\n }\n}\nfunction mapChildren(oldChildren, newLocal, mapping, node, offset, oldOffset, options) {\n let children = oldChildren.slice();\n // Mark the children that are directly touched by changes, and\n // move those that are after the changes.\n for (let i = 0, baseOffset = oldOffset; i < mapping.maps.length; i++) {\n let moved = 0;\n mapping.maps[i].forEach((oldStart, oldEnd, newStart, newEnd) => {\n let dSize = (newEnd - newStart) - (oldEnd - oldStart);\n for (let i = 0; i < children.length; i += 3) {\n let end = children[i + 1];\n if (end < 0 || oldStart > end + baseOffset - moved)\n continue;\n let start = children[i] + baseOffset - moved;\n if (oldEnd >= start) {\n children[i + 1] = oldStart <= start ? -2 : -1;\n }\n else if (newStart >= offset && dSize) {\n children[i] += dSize;\n children[i + 1] += dSize;\n }\n }\n moved += dSize;\n });\n baseOffset = mapping.maps[i].map(baseOffset, -1);\n }\n // Find the child nodes that still correspond to a single node,\n // recursively call mapInner on them and update their positions.\n let mustRebuild = false;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) { // Touched nodes\n if (children[i + 1] == -2) {\n mustRebuild = true;\n children[i + 1] = -1;\n continue;\n }\n let from = mapping.map(oldChildren[i] + oldOffset), fromLocal = from - offset;\n if (fromLocal < 0 || fromLocal >= node.content.size) {\n mustRebuild = true;\n continue;\n }\n // Must read oldChildren because children was tagged with -1\n let to = mapping.map(oldChildren[i + 1] + oldOffset, -1), toLocal = to - offset;\n let { index, offset: childOffset } = node.content.findIndex(fromLocal);\n let childNode = node.maybeChild(index);\n if (childNode && childOffset == fromLocal && childOffset + childNode.nodeSize == toLocal) {\n let mapped = children[i + 2]\n .mapInner(mapping, childNode, from + 1, oldChildren[i] + oldOffset + 1, options);\n if (mapped != empty) {\n children[i] = fromLocal;\n children[i + 1] = toLocal;\n children[i + 2] = mapped;\n }\n else {\n children[i + 1] = -2;\n mustRebuild = true;\n }\n }\n else {\n mustRebuild = true;\n }\n }\n // Remaining children must be collected and rebuilt into the appropriate structure\n if (mustRebuild) {\n let decorations = mapAndGatherRemainingDecorations(children, oldChildren, newLocal, mapping, offset, oldOffset, options);\n let built = buildTree(decorations, node, 0, options);\n newLocal = built.local;\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] < 0) {\n children.splice(i, 3);\n i -= 3;\n }\n for (let i = 0, j = 0; i < built.children.length; i += 3) {\n let from = built.children[i];\n while (j < children.length && children[j] < from)\n j += 3;\n children.splice(j, 0, built.children[i], built.children[i + 1], built.children[i + 2]);\n }\n }\n return new DecorationSet(newLocal.sort(byPos), children);\n}\nfunction moveSpans(spans, offset) {\n if (!offset || !spans.length)\n return spans;\n let result = [];\n for (let i = 0; i < spans.length; i++) {\n let span = spans[i];\n result.push(new Decoration(span.from + offset, span.to + offset, span.type));\n }\n return result;\n}\nfunction mapAndGatherRemainingDecorations(children, oldChildren, decorations, mapping, offset, oldOffset, options) {\n // Gather all decorations from the remaining marked children\n function gather(set, oldOffset) {\n for (let i = 0; i < set.local.length; i++) {\n let mapped = set.local[i].map(mapping, offset, oldOffset);\n if (mapped)\n decorations.push(mapped);\n else if (options.onRemove)\n options.onRemove(set.local[i].spec);\n }\n for (let i = 0; i < set.children.length; i += 3)\n gather(set.children[i + 2], set.children[i] + oldOffset + 1);\n }\n for (let i = 0; i < children.length; i += 3)\n if (children[i + 1] == -1)\n gather(children[i + 2], oldChildren[i] + oldOffset + 1);\n return decorations;\n}\nfunction takeSpansForNode(spans, node, offset) {\n if (node.isLeaf)\n return null;\n let end = offset + node.nodeSize, found = null;\n for (let i = 0, span; i < spans.length; i++) {\n if ((span = spans[i]) && span.from > offset && span.to < end) {\n (found || (found = [])).push(span);\n spans[i] = null;\n }\n }\n return found;\n}\nfunction withoutNulls(array) {\n let result = [];\n for (let i = 0; i < array.length; i++)\n if (array[i] != null)\n result.push(array[i]);\n return result;\n}\n// Build up a tree that corresponds to a set of decorations. `offset`\n// is a base offset that should be subtracted from the `from` and `to`\n// positions in the spans (so that we don't have to allocate new spans\n// for recursive calls).\nfunction buildTree(spans, node, offset, options) {\n let children = [], hasNulls = false;\n node.forEach((childNode, localStart) => {\n let found = takeSpansForNode(spans, childNode, localStart + offset);\n if (found) {\n hasNulls = true;\n let subtree = buildTree(found, childNode, offset + localStart + 1, options);\n if (subtree != empty)\n children.push(localStart, localStart + childNode.nodeSize, subtree);\n }\n });\n let locals = moveSpans(hasNulls ? withoutNulls(spans) : spans, -offset).sort(byPos);\n for (let i = 0; i < locals.length; i++)\n if (!locals[i].type.valid(node, locals[i])) {\n if (options.onRemove)\n options.onRemove(locals[i].spec);\n locals.splice(i--, 1);\n }\n return locals.length || children.length ? new DecorationSet(locals, children) : empty;\n}\n// Used to sort decorations so that ones with a low start position\n// come first, and within a set with the same start position, those\n// with an smaller end position come first.\nfunction byPos(a, b) {\n return a.from - b.from || a.to - b.to;\n}\n// Scan a sorted array of decorations for partially overlapping spans,\n// and split those so that only fully overlapping spans are left (to\n// make subsequent rendering easier). Will return the input array if\n// no partially overlapping spans are found (the common case).\nfunction removeOverlap(spans) {\n let working = spans;\n for (let i = 0; i < working.length - 1; i++) {\n let span = working[i];\n if (span.from != span.to)\n for (let j = i + 1; j < working.length; j++) {\n let next = working[j];\n if (next.from == span.from) {\n if (next.to != span.to) {\n if (working == spans)\n working = spans.slice();\n // Followed by a partially overlapping larger span. Split that\n // span.\n working[j] = next.copy(next.from, span.to);\n insertAhead(working, j + 1, next.copy(span.to, next.to));\n }\n continue;\n }\n else {\n if (next.from < span.to) {\n if (working == spans)\n working = spans.slice();\n // The end of this one overlaps with a subsequent span. Split\n // this one.\n working[i] = span.copy(span.from, next.from);\n insertAhead(working, j, span.copy(next.from, span.to));\n }\n break;\n }\n }\n }\n return working;\n}\nfunction insertAhead(array, i, deco) {\n while (i < array.length && byPos(deco, array[i]) > 0)\n i++;\n array.splice(i, 0, deco);\n}\n// Get the decorations associated with the current props of a view.\nfunction viewDecorations(view) {\n let found = [];\n view.someProp(\"decorations\", f => {\n let result = f(view.state);\n if (result && result != empty)\n found.push(result);\n });\n if (view.cursorWrapper)\n found.push(DecorationSet.create(view.state.doc, [view.cursorWrapper.deco]));\n return DecorationGroup.from(found);\n}\n\nconst observeOptions = {\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n attributes: true,\n attributeOldValue: true,\n subtree: true\n};\n// IE11 has very broken mutation observers, so we also listen to DOMCharacterDataModified\nconst useCharData = ie && ie_version <= 11;\nclass SelectionState {\n constructor() {\n this.anchorNode = null;\n this.anchorOffset = 0;\n this.focusNode = null;\n this.focusOffset = 0;\n }\n set(sel) {\n this.anchorNode = sel.anchorNode;\n this.anchorOffset = sel.anchorOffset;\n this.focusNode = sel.focusNode;\n this.focusOffset = sel.focusOffset;\n }\n clear() {\n this.anchorNode = this.focusNode = null;\n }\n eq(sel) {\n return sel.anchorNode == this.anchorNode && sel.anchorOffset == this.anchorOffset &&\n sel.focusNode == this.focusNode && sel.focusOffset == this.focusOffset;\n }\n}\nclass DOMObserver {\n constructor(view, handleDOMChange) {\n this.view = view;\n this.handleDOMChange = handleDOMChange;\n this.queue = [];\n this.flushingSoon = -1;\n this.observer = null;\n this.currentSelection = new SelectionState;\n this.onCharData = null;\n this.suppressingSelectionUpdates = false;\n this.observer = window.MutationObserver &&\n new window.MutationObserver(mutations => {\n for (let i = 0; i < mutations.length; i++)\n this.queue.push(mutations[i]);\n // IE11 will sometimes (on backspacing out a single character\n // text node after a BR node) call the observer callback\n // before actually updating the DOM, which will cause\n // ProseMirror to miss the change (see #930)\n if (ie && ie_version <= 11 && mutations.some(m => m.type == \"childList\" && m.removedNodes.length ||\n m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length))\n this.flushSoon();\n else\n this.flush();\n });\n if (useCharData) {\n this.onCharData = e => {\n this.queue.push({ target: e.target, type: \"characterData\", oldValue: e.prevValue });\n this.flushSoon();\n };\n }\n this.onSelectionChange = this.onSelectionChange.bind(this);\n }\n flushSoon() {\n if (this.flushingSoon < 0)\n this.flushingSoon = window.setTimeout(() => { this.flushingSoon = -1; this.flush(); }, 20);\n }\n forceFlush() {\n if (this.flushingSoon > -1) {\n window.clearTimeout(this.flushingSoon);\n this.flushingSoon = -1;\n this.flush();\n }\n }\n start() {\n if (this.observer) {\n this.observer.takeRecords();\n this.observer.observe(this.view.dom, observeOptions);\n }\n if (this.onCharData)\n this.view.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.connectSelection();\n }\n stop() {\n if (this.observer) {\n let take = this.observer.takeRecords();\n if (take.length) {\n for (let i = 0; i < take.length; i++)\n this.queue.push(take[i]);\n window.setTimeout(() => this.flush(), 20);\n }\n this.observer.disconnect();\n }\n if (this.onCharData)\n this.view.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n this.disconnectSelection();\n }\n connectSelection() {\n this.view.dom.ownerDocument.addEventListener(\"selectionchange\", this.onSelectionChange);\n }\n disconnectSelection() {\n this.view.dom.ownerDocument.removeEventListener(\"selectionchange\", this.onSelectionChange);\n }\n suppressSelectionUpdates() {\n this.suppressingSelectionUpdates = true;\n setTimeout(() => this.suppressingSelectionUpdates = false, 50);\n }\n onSelectionChange() {\n if (!hasFocusAndSelection(this.view))\n return;\n if (this.suppressingSelectionUpdates)\n return selectionToDOM(this.view);\n // Deletions on IE11 fire their events in the wrong order, giving\n // us a selection change event before the DOM changes are\n // reported.\n if (ie && ie_version <= 11 && !this.view.state.selection.empty) {\n let sel = this.view.domSelectionRange();\n // Selection.isCollapsed isn't reliable on IE\n if (sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n return this.flushSoon();\n }\n this.flush();\n }\n setCurSelection() {\n this.currentSelection.set(this.view.domSelectionRange());\n }\n ignoreSelectionChange(sel) {\n if (!sel.focusNode)\n return true;\n let ancestors = new Set, container;\n for (let scan = sel.focusNode; scan; scan = parentNode(scan))\n ancestors.add(scan);\n for (let scan = sel.anchorNode; scan; scan = parentNode(scan))\n if (ancestors.has(scan)) {\n container = scan;\n break;\n }\n let desc = container && this.view.docView.nearestDesc(container);\n if (desc && desc.ignoreMutation({\n type: \"selection\",\n target: container.nodeType == 3 ? container.parentNode : container\n })) {\n this.setCurSelection();\n return true;\n }\n }\n pendingRecords() {\n if (this.observer)\n for (let mut of this.observer.takeRecords())\n this.queue.push(mut);\n return this.queue;\n }\n flush() {\n let { view } = this;\n if (!view.docView || this.flushingSoon > -1)\n return;\n let mutations = this.pendingRecords();\n if (mutations.length)\n this.queue = [];\n let sel = view.domSelectionRange();\n let newSel = !this.suppressingSelectionUpdates && !this.currentSelection.eq(sel) && hasFocusAndSelection(view) && !this.ignoreSelectionChange(sel);\n let from = -1, to = -1, typeOver = false, added = [];\n if (view.editable) {\n for (let i = 0; i < mutations.length; i++) {\n let result = this.registerMutation(mutations[i], added);\n if (result) {\n from = from < 0 ? result.from : Math.min(result.from, from);\n to = to < 0 ? result.to : Math.max(result.to, to);\n if (result.typeOver)\n typeOver = true;\n }\n }\n }\n if (gecko && added.length > 1) {\n let brs = added.filter(n => n.nodeName == \"BR\");\n if (brs.length == 2) {\n let a = brs[0], b = brs[1];\n if (a.parentNode && a.parentNode.parentNode == b.parentNode)\n b.remove();\n else\n a.remove();\n }\n }\n let readSel = null;\n // If it looks like the browser has reset the selection to the\n // start of the document after focus, restore the selection from\n // the state\n if (from < 0 && newSel && view.input.lastFocus > Date.now() - 200 &&\n Math.max(view.input.lastTouch, view.input.lastClick.time) < Date.now() - 300 &&\n selectionCollapsed(sel) && (readSel = selectionFromDOM(view)) &&\n readSel.eq(Selection.near(view.state.doc.resolve(0), 1))) {\n view.input.lastFocus = 0;\n selectionToDOM(view);\n this.currentSelection.set(sel);\n view.scrollToSelection();\n }\n else if (from > -1 || newSel) {\n if (from > -1) {\n view.docView.markDirty(from, to);\n checkCSS(view);\n }\n this.handleDOMChange(from, to, typeOver, added);\n if (view.docView && view.docView.dirty)\n view.updateState(view.state);\n else if (!this.currentSelection.eq(sel))\n selectionToDOM(view);\n this.currentSelection.set(sel);\n }\n }\n registerMutation(mut, added) {\n // Ignore mutations inside nodes that were already noted as inserted\n if (added.indexOf(mut.target) > -1)\n return null;\n let desc = this.view.docView.nearestDesc(mut.target);\n if (mut.type == \"attributes\" &&\n (desc == this.view.docView || mut.attributeName == \"contenteditable\" ||\n // Firefox sometimes fires spurious events for null/empty styles\n (mut.attributeName == \"style\" && !mut.oldValue && !mut.target.getAttribute(\"style\"))))\n return null;\n if (!desc || desc.ignoreMutation(mut))\n return null;\n if (mut.type == \"childList\") {\n for (let i = 0; i < mut.addedNodes.length; i++)\n added.push(mut.addedNodes[i]);\n if (desc.contentDOM && desc.contentDOM != desc.dom && !desc.contentDOM.contains(mut.target))\n return { from: desc.posBefore, to: desc.posAfter };\n let prev = mut.previousSibling, next = mut.nextSibling;\n if (ie && ie_version <= 11 && mut.addedNodes.length) {\n // IE11 gives us incorrect next/prev siblings for some\n // insertions, so if there are added nodes, recompute those\n for (let i = 0; i < mut.addedNodes.length; i++) {\n let { previousSibling, nextSibling } = mut.addedNodes[i];\n if (!previousSibling || Array.prototype.indexOf.call(mut.addedNodes, previousSibling) < 0)\n prev = previousSibling;\n if (!nextSibling || Array.prototype.indexOf.call(mut.addedNodes, nextSibling) < 0)\n next = nextSibling;\n }\n }\n let fromOffset = prev && prev.parentNode == mut.target\n ? domIndex(prev) + 1 : 0;\n let from = desc.localPosFromDOM(mut.target, fromOffset, -1);\n let toOffset = next && next.parentNode == mut.target\n ? domIndex(next) : mut.target.childNodes.length;\n let to = desc.localPosFromDOM(mut.target, toOffset, 1);\n return { from, to };\n }\n else if (mut.type == \"attributes\") {\n return { from: desc.posAtStart - desc.border, to: desc.posAtEnd + desc.border };\n }\n else { // \"characterData\"\n return {\n from: desc.posAtStart,\n to: desc.posAtEnd,\n // An event was generated for a text change that didn't change\n // any text. Mark the dom change to fall back to assuming the\n // selection was typed over with an identical value if it can't\n // find another change.\n typeOver: mut.target.nodeValue == mut.oldValue\n };\n }\n }\n}\nlet cssChecked = new WeakMap();\nlet cssCheckWarned = false;\nfunction checkCSS(view) {\n if (cssChecked.has(view))\n return;\n cssChecked.set(view, null);\n if (['normal', 'nowrap', 'pre-line'].indexOf(getComputedStyle(view.dom).whiteSpace) !== -1) {\n view.requiresGeckoHackNode = gecko;\n if (cssCheckWarned)\n return;\n console[\"warn\"](\"ProseMirror expects the CSS white-space property to be set, preferably to 'pre-wrap'. It is recommended to load style/prosemirror.css from the prosemirror-view package.\");\n cssCheckWarned = true;\n }\n}\n// Used to work around a Safari Selection/shadow DOM bug\n// Based on https://github.com/codemirror/dev/issues/414 fix\nfunction safariShadowSelectionRange(view) {\n let found;\n function read(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n found = event.getTargetRanges()[0];\n }\n // Because Safari (at least in 2018-2022) doesn't provide regular\n // access to the selection inside a shadowRoot, we have to perform a\n // ridiculous hack to get at it—using `execCommand` to trigger a\n // `beforeInput` event so that we can read the target range from the\n // event.\n view.dom.addEventListener(\"beforeinput\", read, true);\n document.execCommand(\"indent\");\n view.dom.removeEventListener(\"beforeinput\", read, true);\n let anchorNode = found.startContainer, anchorOffset = found.startOffset;\n let focusNode = found.endContainer, focusOffset = found.endOffset;\n let currentAnchor = view.domAtPos(view.state.selection.anchor);\n // Since such a range doesn't distinguish between anchor and head,\n // use a heuristic that flips it around if its end matches the\n // current anchor.\n if (isEquivalentPosition(currentAnchor.node, currentAnchor.offset, focusNode, focusOffset))\n [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n\n// Note that all referencing and parsing is done with the\n// start-of-operation selection and document, since that's the one\n// that the DOM represents. If any changes came in in the meantime,\n// the modification is mapped over those before it is applied, in\n// readDOMChange.\nfunction parseBetween(view, from_, to_) {\n let { node: parent, fromOffset, toOffset, from, to } = view.docView.parseRange(from_, to_);\n let domSel = view.domSelectionRange();\n let find;\n let anchor = domSel.anchorNode;\n if (anchor && view.dom.contains(anchor.nodeType == 1 ? anchor : anchor.parentNode)) {\n find = [{ node: anchor, offset: domSel.anchorOffset }];\n if (!selectionCollapsed(domSel))\n find.push({ node: domSel.focusNode, offset: domSel.focusOffset });\n }\n // Work around issue in Chrome where backspacing sometimes replaces\n // the deleted content with a random BR node (issues #799, #831)\n if (chrome && view.input.lastKeyCode === 8) {\n for (let off = toOffset; off > fromOffset; off--) {\n let node = parent.childNodes[off - 1], desc = node.pmViewDesc;\n if (node.nodeName == \"BR\" && !desc) {\n toOffset = off;\n break;\n }\n if (!desc || desc.size)\n break;\n }\n }\n let startDoc = view.state.doc;\n let parser = view.someProp(\"domParser\") || DOMParser.fromSchema(view.state.schema);\n let $from = startDoc.resolve(from);\n let sel = null, doc = parser.parse(parent, {\n topNode: $from.parent,\n topMatch: $from.parent.contentMatchAt($from.index()),\n topOpen: true,\n from: fromOffset,\n to: toOffset,\n preserveWhitespace: $from.parent.type.whitespace == \"pre\" ? \"full\" : true,\n findPositions: find,\n ruleFromNode,\n context: $from\n });\n if (find && find[0].pos != null) {\n let anchor = find[0].pos, head = find[1] && find[1].pos;\n if (head == null)\n head = anchor;\n sel = { anchor: anchor + from, head: head + from };\n }\n return { doc, sel, from, to };\n}\nfunction ruleFromNode(dom) {\n let desc = dom.pmViewDesc;\n if (desc) {\n return desc.parseRule();\n }\n else if (dom.nodeName == \"BR\" && dom.parentNode) {\n // Safari replaces the list item or table cell with a BR\n // directly in the list node (?!) if you delete the last\n // character in a list item or table cell (#708, #862)\n if (safari && /^(ul|ol)$/i.test(dom.parentNode.nodeName)) {\n let skip = document.createElement(\"div\");\n skip.appendChild(document.createElement(\"li\"));\n return { skip };\n }\n else if (dom.parentNode.lastChild == dom || safari && /^(tr|table)$/i.test(dom.parentNode.nodeName)) {\n return { ignore: true };\n }\n }\n else if (dom.nodeName == \"IMG\" && dom.getAttribute(\"mark-placeholder\")) {\n return { ignore: true };\n }\n return null;\n}\nconst isInline = /^(a|abbr|acronym|b|bd[io]|big|br|button|cite|code|data(list)?|del|dfn|em|i|ins|kbd|label|map|mark|meter|output|q|ruby|s|samp|small|span|strong|su[bp]|time|u|tt|var)$/i;\nfunction readDOMChange(view, from, to, typeOver, addedNodes) {\n let compositionID = view.input.compositionPendingChanges || (view.composing ? view.input.compositionID : 0);\n view.input.compositionPendingChanges = 0;\n if (from < 0) {\n let origin = view.input.lastSelectionTime > Date.now() - 50 ? view.input.lastSelectionOrigin : null;\n let newSel = selectionFromDOM(view, origin);\n if (newSel && !view.state.selection.eq(newSel)) {\n if (chrome && android &&\n view.input.lastKeyCode === 13 && Date.now() - 100 < view.input.lastKeyCodeTime &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\"))))\n return;\n let tr = view.state.tr.setSelection(newSel);\n if (origin == \"pointer\")\n tr.setMeta(\"pointer\", true);\n else if (origin == \"key\")\n tr.scrollIntoView();\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n return;\n }\n let $before = view.state.doc.resolve(from);\n let shared = $before.sharedDepth(to);\n from = $before.before(shared + 1);\n to = view.state.doc.resolve(to).after(shared + 1);\n let sel = view.state.selection;\n let parse = parseBetween(view, from, to);\n let doc = view.state.doc, compare = doc.slice(parse.from, parse.to);\n let preferredPos, preferredSide;\n // Prefer anchoring to end when Backspace is pressed\n if (view.input.lastKeyCode === 8 && Date.now() - 100 < view.input.lastKeyCodeTime) {\n preferredPos = view.state.selection.to;\n preferredSide = \"end\";\n }\n else {\n preferredPos = view.state.selection.from;\n preferredSide = \"start\";\n }\n view.input.lastKeyCode = null;\n let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide);\n if ((ios && view.input.lastIOSEnter > Date.now() - 225 || android) &&\n addedNodes.some(n => n.nodeType == 1 && !isInline.test(n.nodeName)) &&\n (!change || change.endA >= change.endB) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n if (!change) {\n if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&\n !view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {\n change = { start: sel.from, endA: sel.to, endB: sel.to };\n }\n else {\n if (parse.sel) {\n let sel = resolveSelection(view, view.state.doc, parse.sel);\n if (sel && !sel.eq(view.state.selection)) {\n let tr = view.state.tr.setSelection(sel);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr);\n }\n }\n return;\n }\n }\n // Chrome sometimes leaves the cursor before the inserted text when\n // composing after a cursor wrapper. This moves it forward.\n if (chrome && view.cursorWrapper && parse.sel && parse.sel.anchor == view.cursorWrapper.deco.from &&\n parse.sel.head == parse.sel.anchor) {\n let size = change.endB - change.start;\n parse.sel = { anchor: parse.sel.anchor + size, head: parse.sel.anchor + size };\n }\n view.input.domChangeCount++;\n // Handle the case where overwriting a selection by typing matches\n // the start or end of the selected content, creating a change\n // that's smaller than what was actually overwritten.\n if (view.state.selection.from < view.state.selection.to &&\n change.start == change.endB &&\n view.state.selection instanceof TextSelection) {\n if (change.start > view.state.selection.from && change.start <= view.state.selection.from + 2 &&\n view.state.selection.from >= parse.from) {\n change.start = view.state.selection.from;\n }\n else if (change.endA < view.state.selection.to && change.endA >= view.state.selection.to - 2 &&\n view.state.selection.to <= parse.to) {\n change.endB += (view.state.selection.to - change.endA);\n change.endA = view.state.selection.to;\n }\n }\n // IE11 will insert a non-breaking space _ahead_ of the space after\n // the cursor space when adding a space before another space. When\n // that happened, adjust the change to cover the space instead.\n if (ie && ie_version <= 11 && change.endB == change.start + 1 &&\n change.endA == change.start && change.start > parse.from &&\n parse.doc.textBetween(change.start - parse.from - 1, change.start - parse.from + 1) == \" \\u00a0\") {\n change.start--;\n change.endA--;\n change.endB--;\n }\n let $from = parse.doc.resolveNoCache(change.start - parse.from);\n let $to = parse.doc.resolveNoCache(change.endB - parse.from);\n let $fromA = doc.resolve(change.start);\n let inlineChange = $from.sameParent($to) && $from.parent.inlineContent && $fromA.end() >= change.endA;\n let nextSel;\n // If this looks like the effect of pressing Enter (or was recorded\n // as being an iOS enter press), just dispatch an Enter key instead.\n if (((ios && view.input.lastIOSEnter > Date.now() - 225 &&\n (!inlineChange || addedNodes.some(n => n.nodeName == \"DIV\" || n.nodeName == \"P\"))) ||\n (!inlineChange && $from.pos < parse.doc.content.size && !$from.sameParent($to) &&\n (nextSel = Selection.findFrom(parse.doc.resolve($from.pos + 1), 1, true)) &&\n nextSel.head == $to.pos)) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(13, \"Enter\")))) {\n view.input.lastIOSEnter = 0;\n return;\n }\n // Same for backspace\n if (view.state.selection.anchor > change.start &&\n looksLikeJoin(doc, change.start, change.endA, $from, $to) &&\n view.someProp(\"handleKeyDown\", f => f(view, keyEvent(8, \"Backspace\")))) {\n if (android && chrome)\n view.domObserver.suppressSelectionUpdates(); // #820\n return;\n }\n // Chrome Android will occasionally, during composition, delete the\n // entire composition and then immediately insert it again. This is\n // used to detect that situation.\n if (chrome && android && change.endB == change.start)\n view.input.lastAndroidDelete = Date.now();\n // This tries to detect Android virtual keyboard\n // enter-and-pick-suggestion action. That sometimes (see issue\n // #1059) first fires a DOM mutation, before moving the selection to\n // the newly created block. And then, because ProseMirror cleans up\n // the DOM selection, it gives up moving the selection entirely,\n // leaving the cursor in the wrong place. When that happens, we drop\n // the new paragraph from the initial change, and fire a simulated\n // enter key afterwards.\n if (android && !inlineChange && $from.start() != $to.start() && $to.parentOffset == 0 && $from.depth == $to.depth &&\n parse.sel && parse.sel.anchor == parse.sel.head && parse.sel.head == change.endA) {\n change.endB -= 2;\n $to = parse.doc.resolveNoCache(change.endB - parse.from);\n setTimeout(() => {\n view.someProp(\"handleKeyDown\", function (f) { return f(view, keyEvent(13, \"Enter\")); });\n }, 20);\n }\n let chFrom = change.start, chTo = change.endA;\n let tr, storedMarks, markChange;\n if (inlineChange) {\n if ($from.pos == $to.pos) { // Deletion\n // IE11 sometimes weirdly moves the DOM selection around after\n // backspacing out the first element in a textblock\n if (ie && ie_version <= 11 && $from.parentOffset == 0) {\n view.domObserver.suppressSelectionUpdates();\n setTimeout(() => selectionToDOM(view), 20);\n }\n tr = view.state.tr.delete(chFrom, chTo);\n storedMarks = doc.resolve(change.start).marksAcross(doc.resolve(change.endA));\n }\n else if ( // Adding or removing a mark\n change.endA == change.endB &&\n (markChange = isMarkChange($from.parent.content.cut($from.parentOffset, $to.parentOffset), $fromA.parent.content.cut($fromA.parentOffset, change.endA - $fromA.start())))) {\n tr = view.state.tr;\n if (markChange.type == \"add\")\n tr.addMark(chFrom, chTo, markChange.mark);\n else\n tr.removeMark(chFrom, chTo, markChange.mark);\n }\n else if ($from.parent.child($from.index()).isText && $from.index() == $to.index() - ($to.textOffset ? 0 : 1)) {\n // Both positions in the same text node -- simply insert text\n let text = $from.parent.textBetween($from.parentOffset, $to.parentOffset);\n if (view.someProp(\"handleTextInput\", f => f(view, chFrom, chTo, text)))\n return;\n tr = view.state.tr.insertText(text, chFrom, chTo);\n }\n }\n if (!tr)\n tr = view.state.tr.replace(chFrom, chTo, parse.doc.slice(change.start - parse.from, change.endB - parse.from));\n if (parse.sel) {\n let sel = resolveSelection(view, tr.doc, parse.sel);\n // Chrome Android will sometimes, during composition, report the\n // selection in the wrong place. If it looks like that is\n // happening, don't update the selection.\n // Edge just doesn't move the cursor forward when you start typing\n // in an empty block or between br nodes.\n if (sel && !(chrome && android && view.composing && sel.empty &&\n (change.start != change.endB || view.input.lastAndroidDelete < Date.now() - 100) &&\n (sel.head == chFrom || sel.head == tr.mapping.map(chTo) - 1) ||\n ie && sel.empty && sel.head == chFrom))\n tr.setSelection(sel);\n }\n if (storedMarks)\n tr.ensureMarks(storedMarks);\n if (compositionID)\n tr.setMeta(\"composition\", compositionID);\n view.dispatch(tr.scrollIntoView());\n}\nfunction resolveSelection(view, doc, parsedSel) {\n if (Math.max(parsedSel.anchor, parsedSel.head) > doc.content.size)\n return null;\n return selectionBetween(view, doc.resolve(parsedSel.anchor), doc.resolve(parsedSel.head));\n}\n// Given two same-length, non-empty fragments of inline content,\n// determine whether the first could be created from the second by\n// removing or adding a single mark type.\nfunction isMarkChange(cur, prev) {\n let curMarks = cur.firstChild.marks, prevMarks = prev.firstChild.marks;\n let added = curMarks, removed = prevMarks, type, mark, update;\n for (let i = 0; i < prevMarks.length; i++)\n added = prevMarks[i].removeFromSet(added);\n for (let i = 0; i < curMarks.length; i++)\n removed = curMarks[i].removeFromSet(removed);\n if (added.length == 1 && removed.length == 0) {\n mark = added[0];\n type = \"add\";\n update = (node) => node.mark(mark.addToSet(node.marks));\n }\n else if (added.length == 0 && removed.length == 1) {\n mark = removed[0];\n type = \"remove\";\n update = (node) => node.mark(mark.removeFromSet(node.marks));\n }\n else {\n return null;\n }\n let updated = [];\n for (let i = 0; i < prev.childCount; i++)\n updated.push(update(prev.child(i)));\n if (Fragment.from(updated).eq(cur))\n return { mark, type };\n}\nfunction looksLikeJoin(old, start, end, $newStart, $newEnd) {\n if (!$newStart.parent.isTextblock ||\n // The content must have shrunk\n end - start <= $newEnd.pos - $newStart.pos ||\n // newEnd must point directly at or after the end of the block that newStart points into\n skipClosingAndOpening($newStart, true, false) < $newEnd.pos)\n return false;\n let $start = old.resolve(start);\n // Start must be at the end of a block\n if ($start.parentOffset < $start.parent.content.size || !$start.parent.isTextblock)\n return false;\n let $next = old.resolve(skipClosingAndOpening($start, true, true));\n // The next textblock must start before end and end near it\n if (!$next.parent.isTextblock || $next.pos > end ||\n skipClosingAndOpening($next, true, false) < end)\n return false;\n // The fragments after the join point must match\n return $newStart.parent.content.cut($newStart.parentOffset).eq($next.parent.content);\n}\nfunction skipClosingAndOpening($pos, fromEnd, mayOpen) {\n let depth = $pos.depth, end = fromEnd ? $pos.end() : $pos.pos;\n while (depth > 0 && (fromEnd || $pos.indexAfter(depth) == $pos.node(depth).childCount)) {\n depth--;\n end++;\n fromEnd = false;\n }\n if (mayOpen) {\n let next = $pos.node(depth).maybeChild($pos.indexAfter(depth));\n while (next && !next.isLeaf) {\n next = next.firstChild;\n end++;\n }\n }\n return end;\n}\nfunction findDiff(a, b, pos, preferredPos, preferredSide) {\n let start = a.findDiffStart(b, pos);\n if (start == null)\n return null;\n let { a: endA, b: endB } = a.findDiffEnd(b, pos + a.size, pos + b.size);\n if (preferredSide == \"end\") {\n let adjust = Math.max(0, start - Math.min(endA, endB));\n preferredPos -= endA + adjust - start;\n }\n if (endA < start && a.size < b.size) {\n let move = preferredPos <= start && preferredPos >= endA ? start - preferredPos : 0;\n start -= move;\n endB = start + (endB - endA);\n endA = start;\n }\n else if (endB < start) {\n let move = preferredPos <= start && preferredPos >= endB ? start - preferredPos : 0;\n start -= move;\n endA = start + (endA - endB);\n endB = start;\n }\n return { start, endA, endB };\n}\n\n/**\n@internal\n*/\nconst __serializeForClipboard = serializeForClipboard;\n/**\n@internal\n*/\nconst __parseFromClipboard = parseFromClipboard;\n/**\n@internal\n*/\nconst __endComposition = endComposition;\n/**\nAn editor view manages the DOM structure that represents an\neditable document. Its state and behavior are determined by its\n[props](https://prosemirror.net/docs/ref/#view.DirectEditorProps).\n*/\nclass EditorView {\n /**\n Create a view. `place` may be a DOM node that the editor should\n be appended to, a function that will place it into the document,\n or an object whose `mount` property holds the node to use as the\n document container. If it is `null`, the editor will not be\n added to the document.\n */\n constructor(place, props) {\n this._root = null;\n /**\n @internal\n */\n this.focused = false;\n /**\n Kludge used to work around a Chrome bug @internal\n */\n this.trackWrites = null;\n this.mounted = false;\n /**\n @internal\n */\n this.markCursor = null;\n /**\n @internal\n */\n this.cursorWrapper = null;\n /**\n @internal\n */\n this.lastSelectedViewDesc = undefined;\n /**\n @internal\n */\n this.input = new InputState;\n this.prevDirectPlugins = [];\n this.pluginViews = [];\n /**\n Holds `true` when a hack node is needed in Firefox to prevent the\n [space is eaten issue](https://github.com/ProseMirror/prosemirror/issues/651)\n @internal\n */\n this.requiresGeckoHackNode = false;\n /**\n When editor content is being dragged, this object contains\n information about the dragged slice and whether it is being\n copied or moved. At any other time, it is null.\n */\n this.dragging = null;\n this._props = props;\n this.state = props.state;\n this.directPlugins = props.plugins || [];\n this.directPlugins.forEach(checkStateComponent);\n this.dispatch = this.dispatch.bind(this);\n this.dom = (place && place.mount) || document.createElement(\"div\");\n if (place) {\n if (place.appendChild)\n place.appendChild(this.dom);\n else if (typeof place == \"function\")\n place(this.dom);\n else if (place.mount)\n this.mounted = true;\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n this.nodeViews = buildNodeViews(this);\n this.docView = docViewDesc(this.state.doc, computeDocDeco(this), viewDecorations(this), this.dom, this);\n this.domObserver = new DOMObserver(this, (from, to, typeOver, added) => readDOMChange(this, from, to, typeOver, added));\n this.domObserver.start();\n initInput(this);\n this.updatePluginViews();\n }\n /**\n Holds `true` when a\n [composition](https://w3c.github.io/uievents/#events-compositionevents)\n is active.\n */\n get composing() { return this.input.composing; }\n /**\n The view's current [props](https://prosemirror.net/docs/ref/#view.EditorProps).\n */\n get props() {\n if (this._props.state != this.state) {\n let prev = this._props;\n this._props = {};\n for (let name in prev)\n this._props[name] = prev[name];\n this._props.state = this.state;\n }\n return this._props;\n }\n /**\n Update the view's props. Will immediately cause an update to\n the DOM.\n */\n update(props) {\n if (props.handleDOMEvents != this._props.handleDOMEvents)\n ensureListeners(this);\n let prevProps = this._props;\n this._props = props;\n if (props.plugins) {\n props.plugins.forEach(checkStateComponent);\n this.directPlugins = props.plugins;\n }\n this.updateStateInner(props.state, prevProps);\n }\n /**\n Update the view by updating existing props object with the object\n given as argument. Equivalent to `view.update(Object.assign({},\n view.props, props))`.\n */\n setProps(props) {\n let updated = {};\n for (let name in this._props)\n updated[name] = this._props[name];\n updated.state = this.state;\n for (let name in props)\n updated[name] = props[name];\n this.update(updated);\n }\n /**\n Update the editor's `state` prop, without touching any of the\n other props.\n */\n updateState(state) {\n this.updateStateInner(state, this._props);\n }\n updateStateInner(state, prevProps) {\n let prev = this.state, redraw = false, updateSel = false;\n // When stored marks are added, stop composition, so that they can\n // be displayed.\n if (state.storedMarks && this.composing) {\n clearComposition(this);\n updateSel = true;\n }\n this.state = state;\n let pluginsChanged = prev.plugins != state.plugins || this._props.plugins != prevProps.plugins;\n if (pluginsChanged || this._props.plugins != prevProps.plugins || this._props.nodeViews != prevProps.nodeViews) {\n let nodeViews = buildNodeViews(this);\n if (changedNodeViews(nodeViews, this.nodeViews)) {\n this.nodeViews = nodeViews;\n redraw = true;\n }\n }\n if (pluginsChanged || prevProps.handleDOMEvents != this._props.handleDOMEvents) {\n ensureListeners(this);\n }\n this.editable = getEditable(this);\n updateCursorWrapper(this);\n let innerDeco = viewDecorations(this), outerDeco = computeDocDeco(this);\n let scroll = prev.plugins != state.plugins && !prev.doc.eq(state.doc) ? \"reset\"\n : state.scrollToSelection > prev.scrollToSelection ? \"to selection\" : \"preserve\";\n let updateDoc = redraw || !this.docView.matchesNode(state.doc, outerDeco, innerDeco);\n if (updateDoc || !state.selection.eq(prev.selection))\n updateSel = true;\n let oldScrollPos = scroll == \"preserve\" && updateSel && this.dom.style.overflowAnchor == null && storeScrollPos(this);\n if (updateSel) {\n this.domObserver.stop();\n // Work around an issue in Chrome, IE, and Edge where changing\n // the DOM around an active selection puts it into a broken\n // state where the thing the user sees differs from the\n // selection reported by the Selection object (#710, #973,\n // #1011, #1013, #1035).\n let forceSelUpdate = updateDoc && (ie || chrome) && !this.composing &&\n !prev.selection.empty && !state.selection.empty && selectionContextChanged(prev.selection, state.selection);\n if (updateDoc) {\n // If the node that the selection points into is written to,\n // Chrome sometimes starts misreporting the selection, so this\n // tracks that and forces a selection reset when our update\n // did write to the node.\n let chromeKludge = chrome ? (this.trackWrites = this.domSelectionRange().focusNode) : null;\n if (redraw || !this.docView.update(state.doc, outerDeco, innerDeco, this)) {\n this.docView.updateOuterDeco([]);\n this.docView.destroy();\n this.docView = docViewDesc(state.doc, outerDeco, innerDeco, this.dom, this);\n }\n if (chromeKludge && !this.trackWrites)\n forceSelUpdate = true;\n }\n // Work around for an issue where an update arriving right between\n // a DOM selection change and the \"selectionchange\" event for it\n // can cause a spurious DOM selection update, disrupting mouse\n // drag selection.\n if (forceSelUpdate ||\n !(this.input.mouseDown && this.domObserver.currentSelection.eq(this.domSelectionRange()) &&\n anchorInRightPlace(this))) {\n selectionToDOM(this, forceSelUpdate);\n }\n else {\n syncNodeSelection(this, state.selection);\n this.domObserver.setCurSelection();\n }\n this.domObserver.start();\n }\n this.updatePluginViews(prev);\n if (scroll == \"reset\") {\n this.dom.scrollTop = 0;\n }\n else if (scroll == \"to selection\") {\n this.scrollToSelection();\n }\n else if (oldScrollPos) {\n resetScrollPos(oldScrollPos);\n }\n }\n /**\n @internal\n */\n scrollToSelection() {\n let startDOM = this.domSelectionRange().focusNode;\n if (this.someProp(\"handleScrollToSelection\", f => f(this))) ;\n else if (this.state.selection instanceof NodeSelection) {\n let target = this.docView.domAfterPos(this.state.selection.from);\n if (target.nodeType == 1)\n scrollRectIntoView(this, target.getBoundingClientRect(), startDOM);\n }\n else {\n scrollRectIntoView(this, this.coordsAtPos(this.state.selection.head, 1), startDOM);\n }\n }\n destroyPluginViews() {\n let view;\n while (view = this.pluginViews.pop())\n if (view.destroy)\n view.destroy();\n }\n updatePluginViews(prevState) {\n if (!prevState || prevState.plugins != this.state.plugins || this.directPlugins != this.prevDirectPlugins) {\n this.prevDirectPlugins = this.directPlugins;\n this.destroyPluginViews();\n for (let i = 0; i < this.directPlugins.length; i++) {\n let plugin = this.directPlugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n for (let i = 0; i < this.state.plugins.length; i++) {\n let plugin = this.state.plugins[i];\n if (plugin.spec.view)\n this.pluginViews.push(plugin.spec.view(this));\n }\n }\n else {\n for (let i = 0; i < this.pluginViews.length; i++) {\n let pluginView = this.pluginViews[i];\n if (pluginView.update)\n pluginView.update(this, prevState);\n }\n }\n }\n someProp(propName, f) {\n let prop = this._props && this._props[propName], value;\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n for (let i = 0; i < this.directPlugins.length; i++) {\n let prop = this.directPlugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n let plugins = this.state.plugins;\n if (plugins)\n for (let i = 0; i < plugins.length; i++) {\n let prop = plugins[i].props[propName];\n if (prop != null && (value = f ? f(prop) : prop))\n return value;\n }\n }\n /**\n Query whether the view has focus.\n */\n hasFocus() {\n // Work around IE not handling focus correctly if resize handles are shown.\n // If the cursor is inside an element with resize handles, activeElement\n // will be that element instead of this.dom.\n if (ie) {\n // If activeElement is within this.dom, and there are no other elements\n // setting `contenteditable` to false in between, treat it as focused.\n let node = this.root.activeElement;\n if (node == this.dom)\n return true;\n if (!node || !this.dom.contains(node))\n return false;\n while (node && this.dom != node && this.dom.contains(node)) {\n if (node.contentEditable == 'false')\n return false;\n node = node.parentElement;\n }\n return true;\n }\n return this.root.activeElement == this.dom;\n }\n /**\n Focus the editor.\n */\n focus() {\n this.domObserver.stop();\n if (this.editable)\n focusPreventScroll(this.dom);\n selectionToDOM(this);\n this.domObserver.start();\n }\n /**\n Get the document root in which the editor exists. This will\n usually be the top-level `document`, but might be a [shadow\n DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM)\n root if the editor is inside one.\n */\n get root() {\n let cached = this._root;\n if (cached == null)\n for (let search = this.dom.parentNode; search; search = search.parentNode) {\n if (search.nodeType == 9 || (search.nodeType == 11 && search.host)) {\n if (!search.getSelection)\n Object.getPrototypeOf(search).getSelection = () => search.ownerDocument.getSelection();\n return this._root = search;\n }\n }\n return cached || document;\n }\n /**\n Given a pair of viewport coordinates, return the document\n position that corresponds to them. May return null if the given\n coordinates aren't inside of the editor. When an object is\n returned, its `pos` property is the position nearest to the\n coordinates, and its `inside` property holds the position of the\n inner node that the position falls inside of, or -1 if it is at\n the top level, not in any node.\n */\n posAtCoords(coords) {\n return posAtCoords(this, coords);\n }\n /**\n Returns the viewport rectangle at a given document position.\n `left` and `right` will be the same number, as this returns a\n flat cursor-ish rectangle. If the position is between two things\n that aren't directly adjacent, `side` determines which element\n is used. When < 0, the element before the position is used,\n otherwise the element after.\n */\n coordsAtPos(pos, side = 1) {\n return coordsAtPos(this, pos, side);\n }\n /**\n Find the DOM position that corresponds to the given document\n position. When `side` is negative, find the position as close as\n possible to the content before the position. When positive,\n prefer positions close to the content after the position. When\n zero, prefer as shallow a position as possible.\n \n Note that you should **not** mutate the editor's internal DOM,\n only inspect it (and even that is usually not necessary).\n */\n domAtPos(pos, side = 0) {\n return this.docView.domFromPos(pos, side);\n }\n /**\n Find the DOM node that represents the document node after the\n given position. May return `null` when the position doesn't point\n in front of a node or if the node is inside an opaque node view.\n \n This is intended to be able to call things like\n `getBoundingClientRect` on that DOM node. Do **not** mutate the\n editor DOM directly, or add styling this way, since that will be\n immediately overriden by the editor as it redraws the node.\n */\n nodeDOM(pos) {\n let desc = this.docView.descAt(pos);\n return desc ? desc.nodeDOM : null;\n }\n /**\n Find the document position that corresponds to a given DOM\n position. (Whenever possible, it is preferable to inspect the\n document structure directly, rather than poking around in the\n DOM, but sometimes—for example when interpreting an event\n target—you don't have a choice.)\n \n The `bias` parameter can be used to influence which side of a DOM\n node to use when the position is inside a leaf node.\n */\n posAtDOM(node, offset, bias = -1) {\n let pos = this.docView.posFromDOM(node, offset, bias);\n if (pos == null)\n throw new RangeError(\"DOM position not inside the editor\");\n return pos;\n }\n /**\n Find out whether the selection is at the end of a textblock when\n moving in a given direction. When, for example, given `\"left\"`,\n it will return true if moving left from the current cursor\n position would leave that position's parent textblock. Will apply\n to the view's current state by default, but it is possible to\n pass a different state.\n */\n endOfTextblock(dir, state) {\n return endOfTextblock(this, state || this.state, dir);\n }\n /**\n Run the editor's paste logic with the given HTML string. The\n `event`, if given, will be passed to the\n [`handlePaste`](https://prosemirror.net/docs/ref/#view.EditorProps.handlePaste) hook.\n */\n pasteHTML(html, event) {\n return doPaste(this, \"\", html, false, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Run the editor's paste logic with the given plain-text input.\n */\n pasteText(text, event) {\n return doPaste(this, text, null, true, event || new ClipboardEvent(\"paste\"));\n }\n /**\n Removes the editor from the DOM and destroys all [node\n views](https://prosemirror.net/docs/ref/#view.NodeView).\n */\n destroy() {\n if (!this.docView)\n return;\n destroyInput(this);\n this.destroyPluginViews();\n if (this.mounted) {\n this.docView.update(this.state.doc, [], viewDecorations(this), this);\n this.dom.textContent = \"\";\n }\n else if (this.dom.parentNode) {\n this.dom.parentNode.removeChild(this.dom);\n }\n this.docView.destroy();\n this.docView = null;\n }\n /**\n This is true when the view has been\n [destroyed](https://prosemirror.net/docs/ref/#view.EditorView.destroy) (and thus should not be\n used anymore).\n */\n get isDestroyed() {\n return this.docView == null;\n }\n /**\n Used for testing.\n */\n dispatchEvent(event) {\n return dispatchEvent(this, event);\n }\n /**\n Dispatch a transaction. Will call\n [`dispatchTransaction`](https://prosemirror.net/docs/ref/#view.DirectEditorProps.dispatchTransaction)\n when given, and otherwise defaults to applying the transaction to\n the current state and calling\n [`updateState`](https://prosemirror.net/docs/ref/#view.EditorView.updateState) with the result.\n This method is bound to the view instance, so that it can be\n easily passed around.\n */\n dispatch(tr) {\n let dispatchTransaction = this._props.dispatchTransaction;\n if (dispatchTransaction)\n dispatchTransaction.call(this, tr);\n else\n this.updateState(this.state.apply(tr));\n }\n /**\n @internal\n */\n domSelectionRange() {\n return safari && this.root.nodeType === 11 && deepActiveElement(this.dom.ownerDocument) == this.dom\n ? safariShadowSelectionRange(this) : this.domSelection();\n }\n /**\n @internal\n */\n domSelection() {\n return this.root.getSelection();\n }\n}\nfunction computeDocDeco(view) {\n let attrs = Object.create(null);\n attrs.class = \"ProseMirror\";\n attrs.contenteditable = String(view.editable);\n view.someProp(\"attributes\", value => {\n if (typeof value == \"function\")\n value = value(view.state);\n if (value)\n for (let attr in value) {\n if (attr == \"class\")\n attrs.class += \" \" + value[attr];\n else if (attr == \"style\")\n attrs.style = (attrs.style ? attrs.style + \";\" : \"\") + value[attr];\n else if (!attrs[attr] && attr != \"contenteditable\" && attr != \"nodeName\")\n attrs[attr] = String(value[attr]);\n }\n });\n if (!attrs.translate)\n attrs.translate = \"no\";\n return [Decoration.node(0, view.state.doc.content.size, attrs)];\n}\nfunction updateCursorWrapper(view) {\n if (view.markCursor) {\n let dom = document.createElement(\"img\");\n dom.className = \"ProseMirror-separator\";\n dom.setAttribute(\"mark-placeholder\", \"true\");\n dom.setAttribute(\"alt\", \"\");\n view.cursorWrapper = { dom, deco: Decoration.widget(view.state.selection.head, dom, { raw: true, marks: view.markCursor }) };\n }\n else {\n view.cursorWrapper = null;\n }\n}\nfunction getEditable(view) {\n return !view.someProp(\"editable\", value => value(view.state) === false);\n}\nfunction selectionContextChanged(sel1, sel2) {\n let depth = Math.min(sel1.$anchor.sharedDepth(sel1.head), sel2.$anchor.sharedDepth(sel2.head));\n return sel1.$anchor.start(depth) != sel2.$anchor.start(depth);\n}\nfunction buildNodeViews(view) {\n let result = Object.create(null);\n function add(obj) {\n for (let prop in obj)\n if (!Object.prototype.hasOwnProperty.call(result, prop))\n result[prop] = obj[prop];\n }\n view.someProp(\"nodeViews\", add);\n view.someProp(\"markViews\", add);\n return result;\n}\nfunction changedNodeViews(a, b) {\n let nA = 0, nB = 0;\n for (let prop in a) {\n if (a[prop] != b[prop])\n return true;\n nA++;\n }\n for (let _ in b)\n nB++;\n return nA != nB;\n}\nfunction checkStateComponent(plugin) {\n if (plugin.spec.state || plugin.spec.filterTransaction || plugin.spec.appendTransaction)\n throw new RangeError(\"Plugins passed directly to the view must not have a state component\");\n}\n\nexport { Decoration, DecorationSet, EditorView, __endComposition, __parseFromClipboard, __serializeForClipboard };\n","export var base = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 10: \"Enter\",\n 12: \"NumLock\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 44: \"PrintScreen\",\n 45: \"Insert\",\n 46: \"Delete\",\n 59: \";\",\n 61: \"=\",\n 91: \"Meta\",\n 92: \"Meta\",\n 106: \"*\",\n 107: \"+\",\n 108: \",\",\n 109: \"-\",\n 110: \".\",\n 111: \"/\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 160: \"Shift\",\n 161: \"Shift\",\n 162: \"Control\",\n 163: \"Control\",\n 164: \"Alt\",\n 165: \"Alt\",\n 173: \"-\",\n 186: \";\",\n 187: \"=\",\n 188: \",\",\n 189: \"-\",\n 190: \".\",\n 191: \"/\",\n 192: \"`\",\n 219: \"[\",\n 220: \"\\\\\",\n 221: \"]\",\n 222: \"'\"\n}\n\nexport var shift = {\n 48: \")\",\n 49: \"!\",\n 50: \"@\",\n 51: \"#\",\n 52: \"$\",\n 53: \"%\",\n 54: \"^\",\n 55: \"&\",\n 56: \"*\",\n 57: \"(\",\n 59: \":\",\n 61: \"+\",\n 173: \"_\",\n 186: \":\",\n 187: \"+\",\n 188: \"<\",\n 189: \"_\",\n 190: \">\",\n 191: \"?\",\n 192: \"~\",\n 219: \"{\",\n 220: \"|\",\n 221: \"}\",\n 222: \"\\\"\"\n}\n\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n base[i] = String.fromCharCode(i + 32)\n shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.\n // On IE, shift effect is never included in `.key`.\n var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||\n ie && event.shiftKey && event.key && event.key.length == 1 ||\n event.key == \"Unidentified\"\n var name = (!ignoreKey && event.key) ||\n (event.shiftKey ? shift : base)[event.keyCode] ||\n event.key || \"Unidentified\"\n // Edge sometimes produces wrong names (Issue #3)\n if (name == \"Esc\") name = \"Escape\"\n if (name == \"Del\") name = \"Delete\"\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n if (name == \"Left\") name = \"ArrowLeft\"\n if (name == \"Up\") name = \"ArrowUp\"\n if (name == \"Right\") name = \"ArrowRight\"\n if (name == \"Down\") name = \"ArrowDown\"\n return name\n}\n","import { keyName, base } from 'w3c-keyname';\nimport { Plugin } from 'prosemirror-state';\n\nconst mac = typeof navigator != \"undefined\" ? /Mac|iP(hone|[oa]d)/.test(navigator.platform) : false;\nfunction normalizeKeyName(name) {\n let parts = name.split(/-(?!$)/), result = parts[parts.length - 1];\n if (result == \"Space\")\n result = \" \";\n let alt, ctrl, shift, meta;\n for (let i = 0; i < parts.length - 1; i++) {\n let mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod))\n meta = true;\n else if (/^a(lt)?$/i.test(mod))\n alt = true;\n else if (/^(c|ctrl|control)$/i.test(mod))\n ctrl = true;\n else if (/^s(hift)?$/i.test(mod))\n shift = true;\n else if (/^mod$/i.test(mod)) {\n if (mac)\n meta = true;\n else\n ctrl = true;\n }\n else\n throw new Error(\"Unrecognized modifier name: \" + mod);\n }\n if (alt)\n result = \"Alt-\" + result;\n if (ctrl)\n result = \"Ctrl-\" + result;\n if (meta)\n result = \"Meta-\" + result;\n if (shift)\n result = \"Shift-\" + result;\n return result;\n}\nfunction normalize(map) {\n let copy = Object.create(null);\n for (let prop in map)\n copy[normalizeKeyName(prop)] = map[prop];\n return copy;\n}\nfunction modifiers(name, event, shift = true) {\n if (event.altKey)\n name = \"Alt-\" + name;\n if (event.ctrlKey)\n name = \"Ctrl-\" + name;\n if (event.metaKey)\n name = \"Meta-\" + name;\n if (shift && event.shiftKey)\n name = \"Shift-\" + name;\n return name;\n}\n/**\nCreate a keymap plugin for the given set of bindings.\n\nBindings should map key names to [command](https://prosemirror.net/docs/ref/#commands)-style\nfunctions, which will be called with `(EditorState, dispatch,\nEditorView)` arguments, and should return true when they've handled\nthe key. Note that the view argument isn't part of the command\nprotocol, but can be used as an escape hatch if a binding needs to\ndirectly interact with the UI.\n\nKey names may be strings like `\"Shift-Ctrl-Enter\"`—a key\nidentifier prefixed with zero or more modifiers. Key identifiers\nare based on the strings that can appear in\n[`KeyEvent.key`](https:developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key).\nUse lowercase letters to refer to letter keys (or uppercase letters\nif you want shift to be held). You may use `\"Space\"` as an alias\nfor the `\" \"` name.\n\nModifiers can be given in any order. `Shift-` (or `s-`), `Alt-` (or\n`a-`), `Ctrl-` (or `c-` or `Control-`) and `Cmd-` (or `m-` or\n`Meta-`) are recognized. For characters that are created by holding\nshift, the `Shift-` prefix is implied, and should not be added\nexplicitly.\n\nYou can use `Mod-` as a shorthand for `Cmd-` on Mac and `Ctrl-` on\nother platforms.\n\nYou can add multiple keymap plugins to an editor. The order in\nwhich they appear determines their precedence (the ones early in\nthe array get to dispatch first).\n*/\nfunction keymap(bindings) {\n return new Plugin({ props: { handleKeyDown: keydownHandler(bindings) } });\n}\n/**\nGiven a set of bindings (using the same format as\n[`keymap`](https://prosemirror.net/docs/ref/#keymap.keymap)), return a [keydown\nhandler](https://prosemirror.net/docs/ref/#view.EditorProps.handleKeyDown) that handles them.\n*/\nfunction keydownHandler(bindings) {\n let map = normalize(bindings);\n return function (view, event) {\n let name = keyName(event), baseName, direct = map[modifiers(name, event)];\n if (direct && direct(view.state, view.dispatch, view))\n return true;\n // A character key\n if (name.length == 1 && name != \" \") {\n if (event.shiftKey) {\n // In case the name was already modified by shift, try looking\n // it up without its shift modifier\n let noShift = map[modifiers(name, event, false)];\n if (noShift && noShift(view.state, view.dispatch, view))\n return true;\n }\n if ((event.shiftKey || event.altKey || event.metaKey || name.charCodeAt(0) > 127) &&\n (baseName = base[event.keyCode]) && baseName != name) {\n // Try falling back to the keyCode when there's a modifier\n // active or the character produced isn't ASCII, and our table\n // produces a different name from the the keyCode. See #668,\n // #1060\n let fromCode = map[modifiers(baseName, event)];\n if (fromCode && fromCode(view.state, view.dispatch, view))\n return true;\n }\n }\n return false;\n };\n}\n\nexport { keydownHandler, keymap };\n","// src/index.ts\nimport { Plugin as Plugin2 } from \"prosemirror-state\";\n\n// src/cellselection.ts\nimport { Fragment, Slice } from \"prosemirror-model\";\nimport {\n NodeSelection as NodeSelection2,\n Selection,\n SelectionRange,\n TextSelection\n} from \"prosemirror-state\";\nimport { Decoration, DecorationSet } from \"prosemirror-view\";\n\n// src/tablemap.ts\nvar readFromCache;\nvar addToCache;\nif (typeof WeakMap != \"undefined\") {\n let cache = /* @__PURE__ */ new WeakMap();\n readFromCache = (key) => cache.get(key);\n addToCache = (key, value) => {\n cache.set(key, value);\n return value;\n };\n} else {\n const cache = [];\n const cacheSize = 10;\n let cachePos = 0;\n readFromCache = (key) => {\n for (let i = 0; i < cache.length; i += 2)\n if (cache[i] == key)\n return cache[i + 1];\n };\n addToCache = (key, value) => {\n if (cachePos == cacheSize)\n cachePos = 0;\n cache[cachePos++] = key;\n return cache[cachePos++] = value;\n };\n}\nvar TableMap = class {\n constructor(width, height, map, problems) {\n this.width = width;\n this.height = height;\n this.map = map;\n this.problems = problems;\n }\n // Find the dimensions of the cell at the given position.\n findCell(pos) {\n for (let i = 0; i < this.map.length; i++) {\n const curPos = this.map[i];\n if (curPos != pos)\n continue;\n const left = i % this.width;\n const top = i / this.width | 0;\n let right = left + 1;\n let bottom = top + 1;\n for (let j = 1; right < this.width && this.map[i + j] == curPos; j++) {\n right++;\n }\n for (let j = 1; bottom < this.height && this.map[i + this.width * j] == curPos; j++) {\n bottom++;\n }\n return { left, top, right, bottom };\n }\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n // Find the left side of the cell at the given position.\n colCount(pos) {\n for (let i = 0; i < this.map.length; i++) {\n if (this.map[i] == pos) {\n return i % this.width;\n }\n }\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n // Find the next cell in the given direction, starting from the cell\n // at `pos`, if any.\n nextCell(pos, axis, dir) {\n const { left, right, top, bottom } = this.findCell(pos);\n if (axis == \"horiz\") {\n if (dir < 0 ? left == 0 : right == this.width)\n return null;\n return this.map[top * this.width + (dir < 0 ? left - 1 : right)];\n } else {\n if (dir < 0 ? top == 0 : bottom == this.height)\n return null;\n return this.map[left + this.width * (dir < 0 ? top - 1 : bottom)];\n }\n }\n // Get the rectangle spanning the two given cells.\n rectBetween(a, b) {\n const {\n left: leftA,\n right: rightA,\n top: topA,\n bottom: bottomA\n } = this.findCell(a);\n const {\n left: leftB,\n right: rightB,\n top: topB,\n bottom: bottomB\n } = this.findCell(b);\n return {\n left: Math.min(leftA, leftB),\n top: Math.min(topA, topB),\n right: Math.max(rightA, rightB),\n bottom: Math.max(bottomA, bottomB)\n };\n }\n // Return the position of all cells that have the top left corner in\n // the given rectangle.\n cellsInRect(rect) {\n const result = [];\n const seen = {};\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const index = row * this.width + col;\n const pos = this.map[index];\n if (seen[pos])\n continue;\n seen[pos] = true;\n if (col == rect.left && col && this.map[index - 1] == pos || row == rect.top && row && this.map[index - this.width] == pos) {\n continue;\n }\n result.push(pos);\n }\n }\n return result;\n }\n // Return the position at which the cell at the given row and column\n // starts, or would start, if a cell started there.\n positionAt(row, col, table) {\n for (let i = 0, rowStart = 0; ; i++) {\n const rowEnd = rowStart + table.child(i).nodeSize;\n if (i == row) {\n let index = col + row * this.width;\n const rowEndIndex = (row + 1) * this.width;\n while (index < rowEndIndex && this.map[index] < rowStart)\n index++;\n return index == rowEndIndex ? rowEnd - 1 : this.map[index];\n }\n rowStart = rowEnd;\n }\n }\n // Find the table map for the given table node.\n static get(table) {\n return readFromCache(table) || addToCache(table, computeMap(table));\n }\n};\nfunction computeMap(table) {\n if (table.type.spec.tableRole != \"table\")\n throw new RangeError(\"Not a table node: \" + table.type.name);\n const width = findWidth(table), height = table.childCount;\n const map = [];\n let mapPos = 0;\n let problems = null;\n const colWidths = [];\n for (let i = 0, e = width * height; i < e; i++)\n map[i] = 0;\n for (let row = 0, pos = 0; row < height; row++) {\n const rowNode = table.child(row);\n pos++;\n for (let i = 0; ; i++) {\n while (mapPos < map.length && map[mapPos] != 0)\n mapPos++;\n if (i == rowNode.childCount)\n break;\n const cellNode = rowNode.child(i);\n const { colspan, rowspan, colwidth } = cellNode.attrs;\n for (let h = 0; h < rowspan; h++) {\n if (h + row >= height) {\n (problems || (problems = [])).push({\n type: \"overlong_rowspan\",\n pos,\n n: rowspan - h\n });\n break;\n }\n const start = mapPos + h * width;\n for (let w = 0; w < colspan; w++) {\n if (map[start + w] == 0)\n map[start + w] = pos;\n else\n (problems || (problems = [])).push({\n type: \"collision\",\n row,\n pos,\n n: colspan - w\n });\n const colW = colwidth && colwidth[w];\n if (colW) {\n const widthIndex = (start + w) % width * 2, prev = colWidths[widthIndex];\n if (prev == null || prev != colW && colWidths[widthIndex + 1] == 1) {\n colWidths[widthIndex] = colW;\n colWidths[widthIndex + 1] = 1;\n } else if (prev == colW) {\n colWidths[widthIndex + 1]++;\n }\n }\n }\n }\n mapPos += colspan;\n pos += cellNode.nodeSize;\n }\n const expectedPos = (row + 1) * width;\n let missing = 0;\n while (mapPos < expectedPos)\n if (map[mapPos++] == 0)\n missing++;\n if (missing)\n (problems || (problems = [])).push({ type: \"missing\", row, n: missing });\n pos++;\n }\n const tableMap = new TableMap(width, height, map, problems);\n let badWidths = false;\n for (let i = 0; !badWidths && i < colWidths.length; i += 2)\n if (colWidths[i] != null && colWidths[i + 1] < height)\n badWidths = true;\n if (badWidths)\n findBadColWidths(tableMap, colWidths, table);\n return tableMap;\n}\nfunction findWidth(table) {\n let width = -1;\n let hasRowSpan = false;\n for (let row = 0; row < table.childCount; row++) {\n const rowNode = table.child(row);\n let rowWidth = 0;\n if (hasRowSpan)\n for (let j = 0; j < row; j++) {\n const prevRow = table.child(j);\n for (let i = 0; i < prevRow.childCount; i++) {\n const cell = prevRow.child(i);\n if (j + cell.attrs.rowspan > row)\n rowWidth += cell.attrs.colspan;\n }\n }\n for (let i = 0; i < rowNode.childCount; i++) {\n const cell = rowNode.child(i);\n rowWidth += cell.attrs.colspan;\n if (cell.attrs.rowspan > 1)\n hasRowSpan = true;\n }\n if (width == -1)\n width = rowWidth;\n else if (width != rowWidth)\n width = Math.max(width, rowWidth);\n }\n return width;\n}\nfunction findBadColWidths(map, colWidths, table) {\n if (!map.problems)\n map.problems = [];\n const seen = {};\n for (let i = 0; i < map.map.length; i++) {\n const pos = map.map[i];\n if (seen[pos])\n continue;\n seen[pos] = true;\n const node = table.nodeAt(pos);\n if (!node) {\n throw new RangeError(`No cell with offset ${pos} found`);\n }\n let updated = null;\n const attrs = node.attrs;\n for (let j = 0; j < attrs.colspan; j++) {\n const col = (i + j) % map.width;\n const colWidth = colWidths[col * 2];\n if (colWidth != null && (!attrs.colwidth || attrs.colwidth[j] != colWidth))\n (updated || (updated = freshColWidth(attrs)))[j] = colWidth;\n }\n if (updated)\n map.problems.unshift({\n type: \"colwidth mismatch\",\n pos,\n colwidth: updated\n });\n }\n}\nfunction freshColWidth(attrs) {\n if (attrs.colwidth)\n return attrs.colwidth.slice();\n const result = [];\n for (let i = 0; i < attrs.colspan; i++)\n result.push(0);\n return result;\n}\n\n// src/util.ts\nimport { PluginKey } from \"prosemirror-state\";\n\n// src/schema.ts\nfunction getCellAttrs(dom, extraAttrs) {\n if (typeof dom === \"string\") {\n return {};\n }\n const widthAttr = dom.getAttribute(\"data-colwidth\");\n const widths = widthAttr && /^\\d+(,\\d+)*$/.test(widthAttr) ? widthAttr.split(\",\").map((s) => Number(s)) : null;\n const colspan = Number(dom.getAttribute(\"colspan\") || 1);\n const result = {\n colspan,\n rowspan: Number(dom.getAttribute(\"rowspan\") || 1),\n colwidth: widths && widths.length == colspan ? widths : null\n };\n for (const prop in extraAttrs) {\n const getter = extraAttrs[prop].getFromDOM;\n const value = getter && getter(dom);\n if (value != null) {\n result[prop] = value;\n }\n }\n return result;\n}\nfunction setCellAttrs(node, extraAttrs) {\n const attrs = {};\n if (node.attrs.colspan != 1)\n attrs.colspan = node.attrs.colspan;\n if (node.attrs.rowspan != 1)\n attrs.rowspan = node.attrs.rowspan;\n if (node.attrs.colwidth)\n attrs[\"data-colwidth\"] = node.attrs.colwidth.join(\",\");\n for (const prop in extraAttrs) {\n const setter = extraAttrs[prop].setDOMAttr;\n if (setter)\n setter(node.attrs[prop], attrs);\n }\n return attrs;\n}\nfunction tableNodes(options) {\n const extraAttrs = options.cellAttributes || {};\n const cellAttrs = {\n colspan: { default: 1 },\n rowspan: { default: 1 },\n colwidth: { default: null }\n };\n for (const prop in extraAttrs)\n cellAttrs[prop] = { default: extraAttrs[prop].default };\n return {\n table: {\n content: \"table_row+\",\n tableRole: \"table\",\n isolating: true,\n group: options.tableGroup,\n parseDOM: [{ tag: \"table\" }],\n toDOM() {\n return [\"table\", [\"tbody\", 0]];\n }\n },\n table_row: {\n content: \"(table_cell | table_header)*\",\n tableRole: \"row\",\n parseDOM: [{ tag: \"tr\" }],\n toDOM() {\n return [\"tr\", 0];\n }\n },\n table_cell: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"cell\",\n isolating: true,\n parseDOM: [\n { tag: \"td\", getAttrs: (dom) => getCellAttrs(dom, extraAttrs) }\n ],\n toDOM(node) {\n return [\"td\", setCellAttrs(node, extraAttrs), 0];\n }\n },\n table_header: {\n content: options.cellContent,\n attrs: cellAttrs,\n tableRole: \"header_cell\",\n isolating: true,\n parseDOM: [\n { tag: \"th\", getAttrs: (dom) => getCellAttrs(dom, extraAttrs) }\n ],\n toDOM(node) {\n return [\"th\", setCellAttrs(node, extraAttrs), 0];\n }\n }\n };\n}\nfunction tableNodeTypes(schema) {\n let result = schema.cached.tableNodeTypes;\n if (!result) {\n result = schema.cached.tableNodeTypes = {};\n for (const name in schema.nodes) {\n const type = schema.nodes[name], role = type.spec.tableRole;\n if (role)\n result[role] = type;\n }\n }\n return result;\n}\n\n// src/util.ts\nvar tableEditingKey = new PluginKey(\"selectingCells\");\nfunction cellAround($pos) {\n for (let d = $pos.depth - 1; d > 0; d--)\n if ($pos.node(d).type.spec.tableRole == \"row\")\n return $pos.node(0).resolve($pos.before(d + 1));\n return null;\n}\nfunction cellWrapping($pos) {\n for (let d = $pos.depth; d > 0; d--) {\n const role = $pos.node(d).type.spec.tableRole;\n if (role === \"cell\" || role === \"header_cell\")\n return $pos.node(d);\n }\n return null;\n}\nfunction isInTable(state) {\n const $head = state.selection.$head;\n for (let d = $head.depth; d > 0; d--)\n if ($head.node(d).type.spec.tableRole == \"row\")\n return true;\n return false;\n}\nfunction selectionCell(state) {\n const sel = state.selection;\n if (\"$anchorCell\" in sel && sel.$anchorCell) {\n return sel.$anchorCell.pos > sel.$headCell.pos ? sel.$anchorCell : sel.$headCell;\n } else if (\"node\" in sel && sel.node && sel.node.type.spec.tableRole == \"cell\") {\n return sel.$anchor;\n }\n const $cell = cellAround(sel.$head) || cellNear(sel.$head);\n if ($cell) {\n return $cell;\n }\n throw new RangeError(`No cell found around position ${sel.head}`);\n}\nfunction cellNear($pos) {\n for (let after = $pos.nodeAfter, pos = $pos.pos; after; after = after.firstChild, pos++) {\n const role = after.type.spec.tableRole;\n if (role == \"cell\" || role == \"header_cell\")\n return $pos.doc.resolve(pos);\n }\n for (let before = $pos.nodeBefore, pos = $pos.pos; before; before = before.lastChild, pos--) {\n const role = before.type.spec.tableRole;\n if (role == \"cell\" || role == \"header_cell\")\n return $pos.doc.resolve(pos - before.nodeSize);\n }\n}\nfunction pointsAtCell($pos) {\n return $pos.parent.type.spec.tableRole == \"row\" && !!$pos.nodeAfter;\n}\nfunction moveCellForward($pos) {\n return $pos.node(0).resolve($pos.pos + $pos.nodeAfter.nodeSize);\n}\nfunction inSameTable($cellA, $cellB) {\n return $cellA.depth == $cellB.depth && $cellA.pos >= $cellB.start(-1) && $cellA.pos <= $cellB.end(-1);\n}\nfunction findCell($pos) {\n return TableMap.get($pos.node(-1)).findCell($pos.pos - $pos.start(-1));\n}\nfunction colCount($pos) {\n return TableMap.get($pos.node(-1)).colCount($pos.pos - $pos.start(-1));\n}\nfunction nextCell($pos, axis, dir) {\n const table = $pos.node(-1);\n const map = TableMap.get(table);\n const tableStart = $pos.start(-1);\n const moved = map.nextCell($pos.pos - tableStart, axis, dir);\n return moved == null ? null : $pos.node(0).resolve(tableStart + moved);\n}\nfunction removeColSpan(attrs, pos, n = 1) {\n const result = { ...attrs, colspan: attrs.colspan - n };\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n result.colwidth.splice(pos, n);\n if (!result.colwidth.some((w) => w > 0))\n result.colwidth = null;\n }\n return result;\n}\nfunction addColSpan(attrs, pos, n = 1) {\n const result = { ...attrs, colspan: attrs.colspan + n };\n if (result.colwidth) {\n result.colwidth = result.colwidth.slice();\n for (let i = 0; i < n; i++)\n result.colwidth.splice(pos, 0, 0);\n }\n return result;\n}\nfunction columnIsHeader(map, table, col) {\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let row = 0; row < map.height; row++)\n if (table.nodeAt(map.map[col + row * map.width]).type != headerCell)\n return false;\n return true;\n}\n\n// src/cellselection.ts\nvar CellSelection = class extends Selection {\n // A table selection is identified by its anchor and head cells. The\n // positions given to this constructor should point _before_ two\n // cells in the same table. They may be the same, to select a single\n // cell.\n constructor($anchorCell, $headCell = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const rect = map.rectBetween(\n $anchorCell.pos - tableStart,\n $headCell.pos - tableStart\n );\n const doc = $anchorCell.node(0);\n const cells = map.cellsInRect(rect).filter((p) => p != $headCell.pos - tableStart);\n cells.unshift($headCell.pos - tableStart);\n const ranges = cells.map((pos) => {\n const cell = table.nodeAt(pos);\n if (!cell) {\n throw RangeError(`No cell with offset ${pos} found`);\n }\n const from = tableStart + pos + 1;\n return new SelectionRange(\n doc.resolve(from),\n doc.resolve(from + cell.content.size)\n );\n });\n super(ranges[0].$from, ranges[0].$to, ranges);\n this.$anchorCell = $anchorCell;\n this.$headCell = $headCell;\n }\n map(doc, mapping) {\n const $anchorCell = doc.resolve(mapping.map(this.$anchorCell.pos));\n const $headCell = doc.resolve(mapping.map(this.$headCell.pos));\n if (pointsAtCell($anchorCell) && pointsAtCell($headCell) && inSameTable($anchorCell, $headCell)) {\n const tableChanged = this.$anchorCell.node(-1) != $anchorCell.node(-1);\n if (tableChanged && this.isRowSelection())\n return CellSelection.rowSelection($anchorCell, $headCell);\n else if (tableChanged && this.isColSelection())\n return CellSelection.colSelection($anchorCell, $headCell);\n else\n return new CellSelection($anchorCell, $headCell);\n }\n return TextSelection.between($anchorCell, $headCell);\n }\n // Returns a rectangular slice of table rows containing the selected\n // cells.\n content() {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n const rect = map.rectBetween(\n this.$anchorCell.pos - tableStart,\n this.$headCell.pos - tableStart\n );\n const seen = {};\n const rows = [];\n for (let row = rect.top; row < rect.bottom; row++) {\n const rowContent = [];\n for (let index = row * map.width + rect.left, col = rect.left; col < rect.right; col++, index++) {\n const pos = map.map[index];\n if (seen[pos])\n continue;\n seen[pos] = true;\n const cellRect = map.findCell(pos);\n let cell = table.nodeAt(pos);\n if (!cell) {\n throw RangeError(`No cell with offset ${pos} found`);\n }\n const extraLeft = rect.left - cellRect.left;\n const extraRight = cellRect.right - rect.right;\n if (extraLeft > 0 || extraRight > 0) {\n let attrs = cell.attrs;\n if (extraLeft > 0) {\n attrs = removeColSpan(attrs, 0, extraLeft);\n }\n if (extraRight > 0) {\n attrs = removeColSpan(\n attrs,\n attrs.colspan - extraRight,\n extraRight\n );\n }\n if (cellRect.left < rect.left) {\n cell = cell.type.createAndFill(attrs);\n if (!cell) {\n throw RangeError(\n `Could not create cell with attrs ${JSON.stringify(attrs)}`\n );\n }\n } else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n if (cellRect.top < rect.top || cellRect.bottom > rect.bottom) {\n const attrs = {\n ...cell.attrs,\n rowspan: Math.min(cellRect.bottom, rect.bottom) - Math.max(cellRect.top, rect.top)\n };\n if (cellRect.top < rect.top) {\n cell = cell.type.createAndFill(attrs);\n } else {\n cell = cell.type.create(attrs, cell.content);\n }\n }\n rowContent.push(cell);\n }\n rows.push(table.child(row).copy(Fragment.from(rowContent)));\n }\n const fragment = this.isColSelection() && this.isRowSelection() ? table : rows;\n return new Slice(Fragment.from(fragment), 1, 1);\n }\n replace(tr, content = Slice.empty) {\n const mapFrom = tr.steps.length, ranges = this.ranges;\n for (let i = 0; i < ranges.length; i++) {\n const { $from, $to } = ranges[i], mapping = tr.mapping.slice(mapFrom);\n tr.replace(\n mapping.map($from.pos),\n mapping.map($to.pos),\n i ? Slice.empty : content\n );\n }\n const sel = Selection.findFrom(\n tr.doc.resolve(tr.mapping.slice(mapFrom).map(this.to)),\n -1\n );\n if (sel)\n tr.setSelection(sel);\n }\n replaceWith(tr, node) {\n this.replace(tr, new Slice(Fragment.from(node), 0, 0));\n }\n forEachCell(f) {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n const cells = map.cellsInRect(\n map.rectBetween(\n this.$anchorCell.pos - tableStart,\n this.$headCell.pos - tableStart\n )\n );\n for (let i = 0; i < cells.length; i++) {\n f(table.nodeAt(cells[i]), tableStart + cells[i]);\n }\n }\n // True if this selection goes all the way from the top to the\n // bottom of the table.\n isColSelection() {\n const anchorTop = this.$anchorCell.index(-1);\n const headTop = this.$headCell.index(-1);\n if (Math.min(anchorTop, headTop) > 0)\n return false;\n const anchorBottom = anchorTop + this.$anchorCell.nodeAfter.attrs.rowspan;\n const headBottom = headTop + this.$headCell.nodeAfter.attrs.rowspan;\n return Math.max(anchorBottom, headBottom) == this.$headCell.node(-1).childCount;\n }\n // Returns the smallest column selection that covers the given anchor\n // and head cell.\n static colSelection($anchorCell, $headCell = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const anchorRect = map.findCell($anchorCell.pos - tableStart);\n const headRect = map.findCell($headCell.pos - tableStart);\n const doc = $anchorCell.node(0);\n if (anchorRect.top <= headRect.top) {\n if (anchorRect.top > 0)\n $anchorCell = doc.resolve(tableStart + map.map[anchorRect.left]);\n if (headRect.bottom < map.height)\n $headCell = doc.resolve(\n tableStart + map.map[map.width * (map.height - 1) + headRect.right - 1]\n );\n } else {\n if (headRect.top > 0)\n $headCell = doc.resolve(tableStart + map.map[headRect.left]);\n if (anchorRect.bottom < map.height)\n $anchorCell = doc.resolve(\n tableStart + map.map[map.width * (map.height - 1) + anchorRect.right - 1]\n );\n }\n return new CellSelection($anchorCell, $headCell);\n }\n // True if this selection goes all the way from the left to the\n // right of the table.\n isRowSelection() {\n const table = this.$anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = this.$anchorCell.start(-1);\n const anchorLeft = map.colCount(this.$anchorCell.pos - tableStart);\n const headLeft = map.colCount(this.$headCell.pos - tableStart);\n if (Math.min(anchorLeft, headLeft) > 0)\n return false;\n const anchorRight = anchorLeft + this.$anchorCell.nodeAfter.attrs.colspan;\n const headRight = headLeft + this.$headCell.nodeAfter.attrs.colspan;\n return Math.max(anchorRight, headRight) == map.width;\n }\n eq(other) {\n return other instanceof CellSelection && other.$anchorCell.pos == this.$anchorCell.pos && other.$headCell.pos == this.$headCell.pos;\n }\n // Returns the smallest row selection that covers the given anchor\n // and head cell.\n static rowSelection($anchorCell, $headCell = $anchorCell) {\n const table = $anchorCell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $anchorCell.start(-1);\n const anchorRect = map.findCell($anchorCell.pos - tableStart);\n const headRect = map.findCell($headCell.pos - tableStart);\n const doc = $anchorCell.node(0);\n if (anchorRect.left <= headRect.left) {\n if (anchorRect.left > 0)\n $anchorCell = doc.resolve(\n tableStart + map.map[anchorRect.top * map.width]\n );\n if (headRect.right < map.width)\n $headCell = doc.resolve(\n tableStart + map.map[map.width * (headRect.top + 1) - 1]\n );\n } else {\n if (headRect.left > 0)\n $headCell = doc.resolve(tableStart + map.map[headRect.top * map.width]);\n if (anchorRect.right < map.width)\n $anchorCell = doc.resolve(\n tableStart + map.map[map.width * (anchorRect.top + 1) - 1]\n );\n }\n return new CellSelection($anchorCell, $headCell);\n }\n toJSON() {\n return {\n type: \"cell\",\n anchor: this.$anchorCell.pos,\n head: this.$headCell.pos\n };\n }\n static fromJSON(doc, json) {\n return new CellSelection(doc.resolve(json.anchor), doc.resolve(json.head));\n }\n static create(doc, anchorCell, headCell = anchorCell) {\n return new CellSelection(doc.resolve(anchorCell), doc.resolve(headCell));\n }\n getBookmark() {\n return new CellBookmark(this.$anchorCell.pos, this.$headCell.pos);\n }\n};\nCellSelection.prototype.visible = false;\nSelection.jsonID(\"cell\", CellSelection);\nvar CellBookmark = class {\n constructor(anchor, head) {\n this.anchor = anchor;\n this.head = head;\n }\n map(mapping) {\n return new CellBookmark(mapping.map(this.anchor), mapping.map(this.head));\n }\n resolve(doc) {\n const $anchorCell = doc.resolve(this.anchor), $headCell = doc.resolve(this.head);\n if ($anchorCell.parent.type.spec.tableRole == \"row\" && $headCell.parent.type.spec.tableRole == \"row\" && $anchorCell.index() < $anchorCell.parent.childCount && $headCell.index() < $headCell.parent.childCount && inSameTable($anchorCell, $headCell))\n return new CellSelection($anchorCell, $headCell);\n else\n return Selection.near($headCell, 1);\n }\n};\nfunction drawCellSelection(state) {\n if (!(state.selection instanceof CellSelection))\n return null;\n const cells = [];\n state.selection.forEachCell((node, pos) => {\n cells.push(\n Decoration.node(pos, pos + node.nodeSize, { class: \"selectedCell\" })\n );\n });\n return DecorationSet.create(state.doc, cells);\n}\nfunction isCellBoundarySelection({ $from, $to }) {\n if ($from.pos == $to.pos || $from.pos < $from.pos - 6)\n return false;\n let afterFrom = $from.pos;\n let beforeTo = $to.pos;\n let depth = $from.depth;\n for (; depth >= 0; depth--, afterFrom++)\n if ($from.after(depth + 1) < $from.end(depth))\n break;\n for (let d = $to.depth; d >= 0; d--, beforeTo--)\n if ($to.before(d + 1) > $to.start(d))\n break;\n return afterFrom == beforeTo && /row|table/.test($from.node(depth).type.spec.tableRole);\n}\nfunction isTextSelectionAcrossCells({ $from, $to }) {\n let fromCellBoundaryNode;\n let toCellBoundaryNode;\n for (let i = $from.depth; i > 0; i--) {\n const node = $from.node(i);\n if (node.type.spec.tableRole === \"cell\" || node.type.spec.tableRole === \"header_cell\") {\n fromCellBoundaryNode = node;\n break;\n }\n }\n for (let i = $to.depth; i > 0; i--) {\n const node = $to.node(i);\n if (node.type.spec.tableRole === \"cell\" || node.type.spec.tableRole === \"header_cell\") {\n toCellBoundaryNode = node;\n break;\n }\n }\n return fromCellBoundaryNode !== toCellBoundaryNode && $to.parentOffset === 0;\n}\nfunction normalizeSelection(state, tr, allowTableNodeSelection) {\n const sel = (tr || state).selection;\n const doc = (tr || state).doc;\n let normalize;\n let role;\n if (sel instanceof NodeSelection2 && (role = sel.node.type.spec.tableRole)) {\n if (role == \"cell\" || role == \"header_cell\") {\n normalize = CellSelection.create(doc, sel.from);\n } else if (role == \"row\") {\n const $cell = doc.resolve(sel.from + 1);\n normalize = CellSelection.rowSelection($cell, $cell);\n } else if (!allowTableNodeSelection) {\n const map = TableMap.get(sel.node);\n const start = sel.from + 1;\n const lastCell = start + map.map[map.width * map.height - 1];\n normalize = CellSelection.create(doc, start + 1, lastCell);\n }\n } else if (sel instanceof TextSelection && isCellBoundarySelection(sel)) {\n normalize = TextSelection.create(doc, sel.from);\n } else if (sel instanceof TextSelection && isTextSelectionAcrossCells(sel)) {\n normalize = TextSelection.create(doc, sel.$from.start(), sel.$from.end());\n }\n if (normalize)\n (tr || (tr = state.tr)).setSelection(normalize);\n return tr;\n}\n\n// src/fixtables.ts\nimport { PluginKey as PluginKey2 } from \"prosemirror-state\";\nvar fixTablesKey = new PluginKey2(\"fix-tables\");\nfunction changedDescendants(old, cur, offset, f) {\n const oldSize = old.childCount, curSize = cur.childCount;\n outer:\n for (let i = 0, j = 0; i < curSize; i++) {\n const child = cur.child(i);\n for (let scan = j, e = Math.min(oldSize, i + 3); scan < e; scan++) {\n if (old.child(scan) == child) {\n j = scan + 1;\n offset += child.nodeSize;\n continue outer;\n }\n }\n f(child, offset);\n if (j < oldSize && old.child(j).sameMarkup(child))\n changedDescendants(old.child(j), child, offset + 1, f);\n else\n child.nodesBetween(0, child.content.size, f, offset + 1);\n offset += child.nodeSize;\n }\n}\nfunction fixTables(state, oldState) {\n let tr;\n const check = (node, pos) => {\n if (node.type.spec.tableRole == \"table\")\n tr = fixTable(state, node, pos, tr);\n };\n if (!oldState)\n state.doc.descendants(check);\n else if (oldState.doc != state.doc)\n changedDescendants(oldState.doc, state.doc, 0, check);\n return tr;\n}\nfunction fixTable(state, table, tablePos, tr) {\n const map = TableMap.get(table);\n if (!map.problems)\n return tr;\n if (!tr)\n tr = state.tr;\n const mustAdd = [];\n for (let i = 0; i < map.height; i++)\n mustAdd.push(0);\n for (let i = 0; i < map.problems.length; i++) {\n const prob = map.problems[i];\n if (prob.type == \"collision\") {\n const cell = table.nodeAt(prob.pos);\n if (!cell)\n continue;\n const attrs = cell.attrs;\n for (let j = 0; j < attrs.rowspan; j++)\n mustAdd[prob.row + j] += prob.n;\n tr.setNodeMarkup(\n tr.mapping.map(tablePos + 1 + prob.pos),\n null,\n removeColSpan(attrs, attrs.colspan - prob.n, prob.n)\n );\n } else if (prob.type == \"missing\") {\n mustAdd[prob.row] += prob.n;\n } else if (prob.type == \"overlong_rowspan\") {\n const cell = table.nodeAt(prob.pos);\n if (!cell)\n continue;\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, {\n ...cell.attrs,\n rowspan: cell.attrs.rowspan - prob.n\n });\n } else if (prob.type == \"colwidth mismatch\") {\n const cell = table.nodeAt(prob.pos);\n if (!cell)\n continue;\n tr.setNodeMarkup(tr.mapping.map(tablePos + 1 + prob.pos), null, {\n ...cell.attrs,\n colwidth: prob.colwidth\n });\n }\n }\n let first, last;\n for (let i = 0; i < mustAdd.length; i++)\n if (mustAdd[i]) {\n if (first == null)\n first = i;\n last = i;\n }\n for (let i = 0, pos = tablePos + 1; i < map.height; i++) {\n const row = table.child(i);\n const end = pos + row.nodeSize;\n const add = mustAdd[i];\n if (add > 0) {\n let role = \"cell\";\n if (row.firstChild) {\n role = row.firstChild.type.spec.tableRole;\n }\n const nodes = [];\n for (let j = 0; j < add; j++) {\n const node = tableNodeTypes(state.schema)[role].createAndFill();\n if (node)\n nodes.push(node);\n }\n const side = (i == 0 || first == i - 1) && last == i ? pos + 1 : end - 1;\n tr.insert(tr.mapping.map(side), nodes);\n }\n pos = end;\n }\n return tr.setMeta(fixTablesKey, { fixTables: true });\n}\n\n// src/input.ts\nimport { Fragment as Fragment3, Slice as Slice3 } from \"prosemirror-model\";\nimport {\n Selection as Selection2,\n TextSelection as TextSelection2\n} from \"prosemirror-state\";\nimport { keydownHandler } from \"prosemirror-keymap\";\n\n// src/copypaste.ts\nimport { Fragment as Fragment2, Slice as Slice2 } from \"prosemirror-model\";\nimport { Transform } from \"prosemirror-transform\";\nfunction pastedCells(slice) {\n if (!slice.size)\n return null;\n let { content, openStart, openEnd } = slice;\n while (content.childCount == 1 && (openStart > 0 && openEnd > 0 || content.child(0).type.spec.tableRole == \"table\")) {\n openStart--;\n openEnd--;\n content = content.child(0).content;\n }\n const first = content.child(0);\n const role = first.type.spec.tableRole;\n const schema = first.type.schema, rows = [];\n if (role == \"row\") {\n for (let i = 0; i < content.childCount; i++) {\n let cells = content.child(i).content;\n const left = i ? 0 : Math.max(0, openStart - 1);\n const right = i < content.childCount - 1 ? 0 : Math.max(0, openEnd - 1);\n if (left || right)\n cells = fitSlice(\n tableNodeTypes(schema).row,\n new Slice2(cells, left, right)\n ).content;\n rows.push(cells);\n }\n } else if (role == \"cell\" || role == \"header_cell\") {\n rows.push(\n openStart || openEnd ? fitSlice(\n tableNodeTypes(schema).row,\n new Slice2(content, openStart, openEnd)\n ).content : content\n );\n } else {\n return null;\n }\n return ensureRectangular(schema, rows);\n}\nfunction ensureRectangular(schema, rows) {\n const widths = [];\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n for (let j = row.childCount - 1; j >= 0; j--) {\n const { rowspan, colspan } = row.child(j).attrs;\n for (let r = i; r < i + rowspan; r++)\n widths[r] = (widths[r] || 0) + colspan;\n }\n }\n let width = 0;\n for (let r = 0; r < widths.length; r++)\n width = Math.max(width, widths[r]);\n for (let r = 0; r < widths.length; r++) {\n if (r >= rows.length)\n rows.push(Fragment2.empty);\n if (widths[r] < width) {\n const empty = tableNodeTypes(schema).cell.createAndFill();\n const cells = [];\n for (let i = widths[r]; i < width; i++) {\n cells.push(empty);\n }\n rows[r] = rows[r].append(Fragment2.from(cells));\n }\n }\n return { height: rows.length, width, rows };\n}\nfunction fitSlice(nodeType, slice) {\n const node = nodeType.createAndFill();\n const tr = new Transform(node).replace(0, node.content.size, slice);\n return tr.doc;\n}\nfunction clipCells({ width, height, rows }, newWidth, newHeight) {\n if (width != newWidth) {\n const added = [];\n const newRows = [];\n for (let row = 0; row < rows.length; row++) {\n const frag = rows[row], cells = [];\n for (let col = added[row] || 0, i = 0; col < newWidth; i++) {\n let cell = frag.child(i % frag.childCount);\n if (col + cell.attrs.colspan > newWidth)\n cell = cell.type.createChecked(\n removeColSpan(\n cell.attrs,\n cell.attrs.colspan,\n col + cell.attrs.colspan - newWidth\n ),\n cell.content\n );\n cells.push(cell);\n col += cell.attrs.colspan;\n for (let j = 1; j < cell.attrs.rowspan; j++)\n added[row + j] = (added[row + j] || 0) + cell.attrs.colspan;\n }\n newRows.push(Fragment2.from(cells));\n }\n rows = newRows;\n width = newWidth;\n }\n if (height != newHeight) {\n const newRows = [];\n for (let row = 0, i = 0; row < newHeight; row++, i++) {\n const cells = [], source = rows[i % height];\n for (let j = 0; j < source.childCount; j++) {\n let cell = source.child(j);\n if (row + cell.attrs.rowspan > newHeight)\n cell = cell.type.create(\n {\n ...cell.attrs,\n rowspan: Math.max(1, newHeight - cell.attrs.rowspan)\n },\n cell.content\n );\n cells.push(cell);\n }\n newRows.push(Fragment2.from(cells));\n }\n rows = newRows;\n height = newHeight;\n }\n return { width, height, rows };\n}\nfunction growTable(tr, map, table, start, width, height, mapFrom) {\n const schema = tr.doc.type.schema;\n const types = tableNodeTypes(schema);\n let empty;\n let emptyHead;\n if (width > map.width) {\n for (let row = 0, rowEnd = 0; row < map.height; row++) {\n const rowNode = table.child(row);\n rowEnd += rowNode.nodeSize;\n const cells = [];\n let add;\n if (rowNode.lastChild == null || rowNode.lastChild.type == types.cell)\n add = empty || (empty = types.cell.createAndFill());\n else\n add = emptyHead || (emptyHead = types.header_cell.createAndFill());\n for (let i = map.width; i < width; i++)\n cells.push(add);\n tr.insert(tr.mapping.slice(mapFrom).map(rowEnd - 1 + start), cells);\n }\n }\n if (height > map.height) {\n const cells = [];\n for (let i = 0, start2 = (map.height - 1) * map.width; i < Math.max(map.width, width); i++) {\n const header = i >= map.width ? false : table.nodeAt(map.map[start2 + i]).type == types.header_cell;\n cells.push(\n header ? emptyHead || (emptyHead = types.header_cell.createAndFill()) : empty || (empty = types.cell.createAndFill())\n );\n }\n const emptyRow = types.row.create(null, Fragment2.from(cells)), rows = [];\n for (let i = map.height; i < height; i++)\n rows.push(emptyRow);\n tr.insert(tr.mapping.slice(mapFrom).map(start + table.nodeSize - 2), rows);\n }\n return !!(empty || emptyHead);\n}\nfunction isolateHorizontal(tr, map, table, start, left, right, top, mapFrom) {\n if (top == 0 || top == map.height)\n return false;\n let found = false;\n for (let col = left; col < right; col++) {\n const index = top * map.width + col, pos = map.map[index];\n if (map.map[index - map.width] == pos) {\n found = true;\n const cell = table.nodeAt(pos);\n const { top: cellTop, left: cellLeft } = map.findCell(pos);\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + start), null, {\n ...cell.attrs,\n rowspan: top - cellTop\n });\n tr.insert(\n tr.mapping.slice(mapFrom).map(map.positionAt(top, cellLeft, table)),\n cell.type.createAndFill({\n ...cell.attrs,\n rowspan: cellTop + cell.attrs.rowspan - top\n })\n );\n col += cell.attrs.colspan - 1;\n }\n }\n return found;\n}\nfunction isolateVertical(tr, map, table, start, top, bottom, left, mapFrom) {\n if (left == 0 || left == map.width)\n return false;\n let found = false;\n for (let row = top; row < bottom; row++) {\n const index = row * map.width + left, pos = map.map[index];\n if (map.map[index - 1] == pos) {\n found = true;\n const cell = table.nodeAt(pos);\n const cellLeft = map.colCount(pos);\n const updatePos = tr.mapping.slice(mapFrom).map(pos + start);\n tr.setNodeMarkup(\n updatePos,\n null,\n removeColSpan(\n cell.attrs,\n left - cellLeft,\n cell.attrs.colspan - (left - cellLeft)\n )\n );\n tr.insert(\n updatePos + cell.nodeSize,\n cell.type.createAndFill(\n removeColSpan(cell.attrs, 0, left - cellLeft)\n )\n );\n row += cell.attrs.rowspan - 1;\n }\n }\n return found;\n}\nfunction insertCells(state, dispatch, tableStart, rect, cells) {\n let table = tableStart ? state.doc.nodeAt(tableStart - 1) : state.doc;\n if (!table) {\n throw new Error(\"No table found\");\n }\n let map = TableMap.get(table);\n const { top, left } = rect;\n const right = left + cells.width, bottom = top + cells.height;\n const tr = state.tr;\n let mapFrom = 0;\n function recomp() {\n table = tableStart ? tr.doc.nodeAt(tableStart - 1) : tr.doc;\n if (!table) {\n throw new Error(\"No table found\");\n }\n map = TableMap.get(table);\n mapFrom = tr.mapping.maps.length;\n }\n if (growTable(tr, map, table, tableStart, right, bottom, mapFrom))\n recomp();\n if (isolateHorizontal(tr, map, table, tableStart, left, right, top, mapFrom))\n recomp();\n if (isolateHorizontal(tr, map, table, tableStart, left, right, bottom, mapFrom))\n recomp();\n if (isolateVertical(tr, map, table, tableStart, top, bottom, left, mapFrom))\n recomp();\n if (isolateVertical(tr, map, table, tableStart, top, bottom, right, mapFrom))\n recomp();\n for (let row = top; row < bottom; row++) {\n const from = map.positionAt(row, left, table), to = map.positionAt(row, right, table);\n tr.replace(\n tr.mapping.slice(mapFrom).map(from + tableStart),\n tr.mapping.slice(mapFrom).map(to + tableStart),\n new Slice2(cells.rows[row - top], 0, 0)\n );\n }\n recomp();\n tr.setSelection(\n new CellSelection(\n tr.doc.resolve(tableStart + map.positionAt(top, left, table)),\n tr.doc.resolve(tableStart + map.positionAt(bottom - 1, right - 1, table))\n )\n );\n dispatch(tr);\n}\n\n// src/input.ts\nvar handleKeyDown = keydownHandler({\n ArrowLeft: arrow(\"horiz\", -1),\n ArrowRight: arrow(\"horiz\", 1),\n ArrowUp: arrow(\"vert\", -1),\n ArrowDown: arrow(\"vert\", 1),\n \"Shift-ArrowLeft\": shiftArrow(\"horiz\", -1),\n \"Shift-ArrowRight\": shiftArrow(\"horiz\", 1),\n \"Shift-ArrowUp\": shiftArrow(\"vert\", -1),\n \"Shift-ArrowDown\": shiftArrow(\"vert\", 1),\n Backspace: deleteCellSelection,\n \"Mod-Backspace\": deleteCellSelection,\n Delete: deleteCellSelection,\n \"Mod-Delete\": deleteCellSelection\n});\nfunction maybeSetSelection(state, dispatch, selection) {\n if (selection.eq(state.selection))\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(selection).scrollIntoView());\n return true;\n}\nfunction arrow(axis, dir) {\n return (state, dispatch, view) => {\n if (!view)\n return false;\n const sel = state.selection;\n if (sel instanceof CellSelection) {\n return maybeSetSelection(\n state,\n dispatch,\n Selection2.near(sel.$headCell, dir)\n );\n }\n if (axis != \"horiz\" && !sel.empty)\n return false;\n const end = atEndOfCell(view, axis, dir);\n if (end == null)\n return false;\n if (axis == \"horiz\") {\n return maybeSetSelection(\n state,\n dispatch,\n Selection2.near(state.doc.resolve(sel.head + dir), dir)\n );\n } else {\n const $cell = state.doc.resolve(end);\n const $next = nextCell($cell, axis, dir);\n let newSel;\n if ($next)\n newSel = Selection2.near($next, 1);\n else if (dir < 0)\n newSel = Selection2.near(state.doc.resolve($cell.before(-1)), -1);\n else\n newSel = Selection2.near(state.doc.resolve($cell.after(-1)), 1);\n return maybeSetSelection(state, dispatch, newSel);\n }\n };\n}\nfunction shiftArrow(axis, dir) {\n return (state, dispatch, view) => {\n if (!view)\n return false;\n const sel = state.selection;\n let cellSel;\n if (sel instanceof CellSelection) {\n cellSel = sel;\n } else {\n const end = atEndOfCell(view, axis, dir);\n if (end == null)\n return false;\n cellSel = new CellSelection(state.doc.resolve(end));\n }\n const $head = nextCell(cellSel.$headCell, axis, dir);\n if (!$head)\n return false;\n return maybeSetSelection(\n state,\n dispatch,\n new CellSelection(cellSel.$anchorCell, $head)\n );\n };\n}\nfunction deleteCellSelection(state, dispatch) {\n const sel = state.selection;\n if (!(sel instanceof CellSelection))\n return false;\n if (dispatch) {\n const tr = state.tr;\n const baseContent = tableNodeTypes(state.schema).cell.createAndFill().content;\n sel.forEachCell((cell, pos) => {\n if (!cell.content.eq(baseContent))\n tr.replace(\n tr.mapping.map(pos + 1),\n tr.mapping.map(pos + cell.nodeSize - 1),\n new Slice3(baseContent, 0, 0)\n );\n });\n if (tr.docChanged)\n dispatch(tr);\n }\n return true;\n}\nfunction handleTripleClick(view, pos) {\n const doc = view.state.doc, $cell = cellAround(doc.resolve(pos));\n if (!$cell)\n return false;\n view.dispatch(view.state.tr.setSelection(new CellSelection($cell)));\n return true;\n}\nfunction handlePaste(view, _, slice) {\n if (!isInTable(view.state))\n return false;\n let cells = pastedCells(slice);\n const sel = view.state.selection;\n if (sel instanceof CellSelection) {\n if (!cells)\n cells = {\n width: 1,\n height: 1,\n rows: [\n Fragment3.from(\n fitSlice(tableNodeTypes(view.state.schema).cell, slice)\n )\n ]\n };\n const table = sel.$anchorCell.node(-1);\n const start = sel.$anchorCell.start(-1);\n const rect = TableMap.get(table).rectBetween(\n sel.$anchorCell.pos - start,\n sel.$headCell.pos - start\n );\n cells = clipCells(cells, rect.right - rect.left, rect.bottom - rect.top);\n insertCells(view.state, view.dispatch, start, rect, cells);\n return true;\n } else if (cells) {\n const $cell = selectionCell(view.state);\n const start = $cell.start(-1);\n insertCells(\n view.state,\n view.dispatch,\n start,\n TableMap.get($cell.node(-1)).findCell($cell.pos - start),\n cells\n );\n return true;\n } else {\n return false;\n }\n}\nfunction handleMouseDown(view, startEvent) {\n var _a;\n if (startEvent.ctrlKey || startEvent.metaKey)\n return;\n const startDOMCell = domInCell(view, startEvent.target);\n let $anchor;\n if (startEvent.shiftKey && view.state.selection instanceof CellSelection) {\n setCellSelection(view.state.selection.$anchorCell, startEvent);\n startEvent.preventDefault();\n } else if (startEvent.shiftKey && startDOMCell && ($anchor = cellAround(view.state.selection.$anchor)) != null && ((_a = cellUnderMouse(view, startEvent)) == null ? void 0 : _a.pos) != $anchor.pos) {\n setCellSelection($anchor, startEvent);\n startEvent.preventDefault();\n } else if (!startDOMCell) {\n return;\n }\n function setCellSelection($anchor2, event) {\n let $head = cellUnderMouse(view, event);\n const starting = tableEditingKey.getState(view.state) == null;\n if (!$head || !inSameTable($anchor2, $head)) {\n if (starting)\n $head = $anchor2;\n else\n return;\n }\n const selection = new CellSelection($anchor2, $head);\n if (starting || !view.state.selection.eq(selection)) {\n const tr = view.state.tr.setSelection(selection);\n if (starting)\n tr.setMeta(tableEditingKey, $anchor2.pos);\n view.dispatch(tr);\n }\n }\n function stop() {\n view.root.removeEventListener(\"mouseup\", stop);\n view.root.removeEventListener(\"dragstart\", stop);\n view.root.removeEventListener(\"mousemove\", move);\n if (tableEditingKey.getState(view.state) != null)\n view.dispatch(view.state.tr.setMeta(tableEditingKey, -1));\n }\n function move(_event) {\n const event = _event;\n const anchor = tableEditingKey.getState(view.state);\n let $anchor2;\n if (anchor != null) {\n $anchor2 = view.state.doc.resolve(anchor);\n } else if (domInCell(view, event.target) != startDOMCell) {\n $anchor2 = cellUnderMouse(view, startEvent);\n if (!$anchor2)\n return stop();\n }\n if ($anchor2)\n setCellSelection($anchor2, event);\n }\n view.root.addEventListener(\"mouseup\", stop);\n view.root.addEventListener(\"dragstart\", stop);\n view.root.addEventListener(\"mousemove\", move);\n}\nfunction atEndOfCell(view, axis, dir) {\n if (!(view.state.selection instanceof TextSelection2))\n return null;\n const { $head } = view.state.selection;\n for (let d = $head.depth - 1; d >= 0; d--) {\n const parent = $head.node(d), index = dir < 0 ? $head.index(d) : $head.indexAfter(d);\n if (index != (dir < 0 ? 0 : parent.childCount))\n return null;\n if (parent.type.spec.tableRole == \"cell\" || parent.type.spec.tableRole == \"header_cell\") {\n const cellPos = $head.before(d);\n const dirStr = axis == \"vert\" ? dir > 0 ? \"down\" : \"up\" : dir > 0 ? \"right\" : \"left\";\n return view.endOfTextblock(dirStr) ? cellPos : null;\n }\n }\n return null;\n}\nfunction domInCell(view, dom) {\n for (; dom && dom != view.dom; dom = dom.parentNode) {\n if (dom.nodeName == \"TD\" || dom.nodeName == \"TH\") {\n return dom;\n }\n }\n return null;\n}\nfunction cellUnderMouse(view, event) {\n const mousePos = view.posAtCoords({\n left: event.clientX,\n top: event.clientY\n });\n if (!mousePos)\n return null;\n return mousePos ? cellAround(view.state.doc.resolve(mousePos.pos)) : null;\n}\n\n// src/columnresizing.ts\nimport { Plugin, PluginKey as PluginKey3 } from \"prosemirror-state\";\nimport {\n Decoration as Decoration2,\n DecorationSet as DecorationSet2\n} from \"prosemirror-view\";\n\n// src/tableview.ts\nvar TableView = class {\n constructor(node, cellMinWidth) {\n this.node = node;\n this.cellMinWidth = cellMinWidth;\n this.dom = document.createElement(\"div\");\n this.dom.className = \"tableWrapper\";\n this.table = this.dom.appendChild(document.createElement(\"table\"));\n this.colgroup = this.table.appendChild(document.createElement(\"colgroup\"));\n updateColumnsOnResize(node, this.colgroup, this.table, cellMinWidth);\n this.contentDOM = this.table.appendChild(document.createElement(\"tbody\"));\n }\n update(node) {\n if (node.type != this.node.type)\n return false;\n this.node = node;\n updateColumnsOnResize(node, this.colgroup, this.table, this.cellMinWidth);\n return true;\n }\n ignoreMutation(record) {\n return record.type == \"attributes\" && (record.target == this.table || this.colgroup.contains(record.target));\n }\n};\nfunction updateColumnsOnResize(node, colgroup, table, cellMinWidth, overrideCol, overrideValue) {\n var _a;\n let totalWidth = 0;\n let fixedWidth = true;\n let nextDOM = colgroup.firstChild;\n const row = node.firstChild;\n if (!row)\n return;\n for (let i = 0, col = 0; i < row.childCount; i++) {\n const { colspan, colwidth } = row.child(i).attrs;\n for (let j = 0; j < colspan; j++, col++) {\n const hasWidth = overrideCol == col ? overrideValue : colwidth && colwidth[j];\n const cssWidth = hasWidth ? hasWidth + \"px\" : \"\";\n totalWidth += hasWidth || cellMinWidth;\n if (!hasWidth)\n fixedWidth = false;\n if (!nextDOM) {\n colgroup.appendChild(document.createElement(\"col\")).style.width = cssWidth;\n } else {\n if (nextDOM.style.width != cssWidth)\n nextDOM.style.width = cssWidth;\n nextDOM = nextDOM.nextSibling;\n }\n }\n }\n while (nextDOM) {\n const after = nextDOM.nextSibling;\n (_a = nextDOM.parentNode) == null ? void 0 : _a.removeChild(nextDOM);\n nextDOM = after;\n }\n if (fixedWidth) {\n table.style.width = totalWidth + \"px\";\n table.style.minWidth = \"\";\n } else {\n table.style.width = \"\";\n table.style.minWidth = totalWidth + \"px\";\n }\n}\n\n// src/columnresizing.ts\nvar columnResizingPluginKey = new PluginKey3(\n \"tableColumnResizing\"\n);\nfunction columnResizing({\n handleWidth = 5,\n cellMinWidth = 25,\n View = TableView,\n lastColumnResizable = true\n} = {}) {\n const plugin = new Plugin({\n key: columnResizingPluginKey,\n state: {\n init(_, state) {\n plugin.spec.props.nodeViews[tableNodeTypes(state.schema).table.name] = (node, view) => new View(node, cellMinWidth, view);\n return new ResizeState(-1, false);\n },\n apply(tr, prev) {\n return prev.apply(tr);\n }\n },\n props: {\n attributes: (state) => {\n const pluginState = columnResizingPluginKey.getState(state);\n return pluginState && pluginState.activeHandle > -1 ? { class: \"resize-cursor\" } : {};\n },\n handleDOMEvents: {\n mousemove: (view, event) => {\n handleMouseMove(\n view,\n event,\n handleWidth,\n cellMinWidth,\n lastColumnResizable\n );\n },\n mouseleave: (view) => {\n handleMouseLeave(view);\n },\n mousedown: (view, event) => {\n handleMouseDown2(view, event, cellMinWidth);\n }\n },\n decorations: (state) => {\n const pluginState = columnResizingPluginKey.getState(state);\n if (pluginState && pluginState.activeHandle > -1) {\n return handleDecorations(state, pluginState.activeHandle);\n }\n },\n nodeViews: {}\n }\n });\n return plugin;\n}\nvar ResizeState = class {\n constructor(activeHandle, dragging) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n }\n apply(tr) {\n const state = this;\n const action = tr.getMeta(columnResizingPluginKey);\n if (action && action.setHandle != null)\n return new ResizeState(action.setHandle, false);\n if (action && action.setDragging !== void 0)\n return new ResizeState(state.activeHandle, action.setDragging);\n if (state.activeHandle > -1 && tr.docChanged) {\n let handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) {\n handle = -1;\n }\n return new ResizeState(handle, state.dragging);\n }\n return state;\n }\n};\nfunction handleMouseMove(view, event, handleWidth, cellMinWidth, lastColumnResizable) {\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState)\n return;\n if (!pluginState.dragging) {\n const target = domCellAround(event.target);\n let cell = -1;\n if (target) {\n const { left, right } = target.getBoundingClientRect();\n if (event.clientX - left <= handleWidth)\n cell = edgeCell(view, event, \"left\", handleWidth);\n else if (right - event.clientX <= handleWidth)\n cell = edgeCell(view, event, \"right\", handleWidth);\n }\n if (cell != pluginState.activeHandle) {\n if (!lastColumnResizable && cell !== -1) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1);\n const map = TableMap.get(table);\n const tableStart = $cell.start(-1);\n const col = map.colCount($cell.pos - tableStart) + $cell.nodeAfter.attrs.colspan - 1;\n if (col == map.width - 1) {\n return;\n }\n }\n updateHandle(view, cell);\n }\n }\n}\nfunction handleMouseLeave(view) {\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (pluginState && pluginState.activeHandle > -1 && !pluginState.dragging)\n updateHandle(view, -1);\n}\nfunction handleMouseDown2(view, event, cellMinWidth) {\n const pluginState = columnResizingPluginKey.getState(view.state);\n if (!pluginState || pluginState.activeHandle == -1 || pluginState.dragging)\n return false;\n const cell = view.state.doc.nodeAt(pluginState.activeHandle);\n const width = currentColWidth(view, pluginState.activeHandle, cell.attrs);\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, {\n setDragging: { startX: event.clientX, startWidth: width }\n })\n );\n function finish(event2) {\n window.removeEventListener(\"mouseup\", finish);\n window.removeEventListener(\"mousemove\", move);\n const pluginState2 = columnResizingPluginKey.getState(view.state);\n if (pluginState2 == null ? void 0 : pluginState2.dragging) {\n updateColumnWidth(\n view,\n pluginState2.activeHandle,\n draggedWidth(pluginState2.dragging, event2, cellMinWidth)\n );\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, { setDragging: null })\n );\n }\n }\n function move(event2) {\n if (!event2.which)\n return finish(event2);\n const pluginState2 = columnResizingPluginKey.getState(view.state);\n if (!pluginState2)\n return;\n if (pluginState2.dragging) {\n const dragged = draggedWidth(pluginState2.dragging, event2, cellMinWidth);\n displayColumnWidth(view, pluginState2.activeHandle, dragged, cellMinWidth);\n }\n }\n window.addEventListener(\"mouseup\", finish);\n window.addEventListener(\"mousemove\", move);\n event.preventDefault();\n return true;\n}\nfunction currentColWidth(view, cellPos, { colspan, colwidth }) {\n const width = colwidth && colwidth[colwidth.length - 1];\n if (width)\n return width;\n const dom = view.domAtPos(cellPos);\n const node = dom.node.childNodes[dom.offset];\n let domWidth = node.offsetWidth, parts = colspan;\n if (colwidth) {\n for (let i = 0; i < colspan; i++)\n if (colwidth[i]) {\n domWidth -= colwidth[i];\n parts--;\n }\n }\n return domWidth / parts;\n}\nfunction domCellAround(target) {\n while (target && target.nodeName != \"TD\" && target.nodeName != \"TH\")\n target = target.classList && target.classList.contains(\"ProseMirror\") ? null : target.parentNode;\n return target;\n}\nfunction edgeCell(view, event, side, handleWidth) {\n const offset = side == \"right\" ? -handleWidth : handleWidth;\n const found = view.posAtCoords({\n left: event.clientX + offset,\n top: event.clientY\n });\n if (!found)\n return -1;\n const { pos } = found;\n const $cell = cellAround(view.state.doc.resolve(pos));\n if (!$cell)\n return -1;\n if (side == \"right\")\n return $cell.pos;\n const map = TableMap.get($cell.node(-1)), start = $cell.start(-1);\n const index = map.map.indexOf($cell.pos - start);\n return index % map.width == 0 ? -1 : start + map.map[index - 1];\n}\nfunction draggedWidth(dragging, event, cellMinWidth) {\n const offset = event.clientX - dragging.startX;\n return Math.max(cellMinWidth, dragging.startWidth + offset);\n}\nfunction updateHandle(view, value) {\n view.dispatch(\n view.state.tr.setMeta(columnResizingPluginKey, { setHandle: value })\n );\n}\nfunction updateColumnWidth(view, cell, width) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n const col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n const tr = view.state.tr;\n for (let row = 0; row < map.height; row++) {\n const mapIndex = row * map.width + col;\n if (row && map.map[mapIndex] == map.map[mapIndex - map.width])\n continue;\n const pos = map.map[mapIndex];\n const attrs = table.nodeAt(pos).attrs;\n const index = attrs.colspan == 1 ? 0 : col - map.colCount(pos);\n if (attrs.colwidth && attrs.colwidth[index] == width)\n continue;\n const colwidth = attrs.colwidth ? attrs.colwidth.slice() : zeroes(attrs.colspan);\n colwidth[index] = width;\n tr.setNodeMarkup(start + pos, null, { ...attrs, colwidth });\n }\n if (tr.docChanged)\n view.dispatch(tr);\n}\nfunction displayColumnWidth(view, cell, width, cellMinWidth) {\n const $cell = view.state.doc.resolve(cell);\n const table = $cell.node(-1), start = $cell.start(-1);\n const col = TableMap.get(table).colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n let dom = view.domAtPos($cell.start(-1)).node;\n while (dom && dom.nodeName != \"TABLE\") {\n dom = dom.parentNode;\n }\n if (!dom)\n return;\n updateColumnsOnResize(\n table,\n dom.firstChild,\n dom,\n cellMinWidth,\n col,\n width\n );\n}\nfunction zeroes(n) {\n return Array(n).fill(0);\n}\nfunction handleDecorations(state, cell) {\n const decorations = [];\n const $cell = state.doc.resolve(cell);\n const table = $cell.node(-1);\n if (!table) {\n return DecorationSet2.empty;\n }\n const map = TableMap.get(table);\n const start = $cell.start(-1);\n const col = map.colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan;\n for (let row = 0; row < map.height; row++) {\n const index = col + row * map.width - 1;\n if ((col == map.width || map.map[index] != map.map[index + 1]) && (row == 0 || map.map[index] != map.map[index - map.width])) {\n const cellPos = map.map[index];\n const pos = start + cellPos + table.nodeAt(cellPos).nodeSize - 1;\n const dom = document.createElement(\"div\");\n dom.className = \"column-resize-handle\";\n decorations.push(Decoration2.widget(pos, dom));\n }\n }\n return DecorationSet2.create(state.doc, decorations);\n}\n\n// src/commands.ts\nimport { Fragment as Fragment4 } from \"prosemirror-model\";\nimport {\n TextSelection as TextSelection3\n} from \"prosemirror-state\";\nfunction selectedRect(state) {\n const sel = state.selection;\n const $pos = selectionCell(state);\n const table = $pos.node(-1);\n const tableStart = $pos.start(-1);\n const map = TableMap.get(table);\n const rect = sel instanceof CellSelection ? map.rectBetween(\n sel.$anchorCell.pos - tableStart,\n sel.$headCell.pos - tableStart\n ) : map.findCell($pos.pos - tableStart);\n return { ...rect, tableStart, map, table };\n}\nfunction addColumn(tr, { map, tableStart, table }, col) {\n let refColumn = col > 0 ? -1 : 0;\n if (columnIsHeader(map, table, col + refColumn)) {\n refColumn = col == 0 || col == map.width ? null : 0;\n }\n for (let row = 0; row < map.height; row++) {\n const index = row * map.width + col;\n if (col > 0 && col < map.width && map.map[index - 1] == map.map[index]) {\n const pos = map.map[index];\n const cell = table.nodeAt(pos);\n tr.setNodeMarkup(\n tr.mapping.map(tableStart + pos),\n null,\n addColSpan(cell.attrs, col - map.colCount(pos))\n );\n row += cell.attrs.rowspan - 1;\n } else {\n const type = refColumn == null ? tableNodeTypes(table.type.schema).cell : table.nodeAt(map.map[index + refColumn]).type;\n const pos = map.positionAt(row, col, table);\n tr.insert(tr.mapping.map(tableStart + pos), type.createAndFill());\n }\n }\n return tr;\n}\nfunction addColumnBefore(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.left));\n }\n return true;\n}\nfunction addColumnAfter(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addColumn(state.tr, rect, rect.right));\n }\n return true;\n}\nfunction removeColumn(tr, { map, table, tableStart }, col) {\n const mapStart = tr.mapping.maps.length;\n for (let row = 0; row < map.height; ) {\n const index = row * map.width + col;\n const pos = map.map[index];\n const cell = table.nodeAt(pos);\n const attrs = cell.attrs;\n if (col > 0 && map.map[index - 1] == pos || col < map.width - 1 && map.map[index + 1] == pos) {\n tr.setNodeMarkup(\n tr.mapping.slice(mapStart).map(tableStart + pos),\n null,\n removeColSpan(attrs, col - map.colCount(pos))\n );\n } else {\n const start = tr.mapping.slice(mapStart).map(tableStart + pos);\n tr.delete(start, start + cell.nodeSize);\n }\n row += attrs.rowspan;\n }\n}\nfunction deleteColumn(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n const tr = state.tr;\n if (rect.left == 0 && rect.right == rect.map.width)\n return false;\n for (let i = rect.right - 1; ; i--) {\n removeColumn(tr, rect, i);\n if (i == rect.left)\n break;\n const table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n if (!table) {\n throw RangeError(\"No table found\");\n }\n rect.table = table;\n rect.map = TableMap.get(table);\n }\n dispatch(tr);\n }\n return true;\n}\nfunction rowIsHeader(map, table, row) {\n var _a;\n const headerCell = tableNodeTypes(table.type.schema).header_cell;\n for (let col = 0; col < map.width; col++)\n if (((_a = table.nodeAt(map.map[col + row * map.width])) == null ? void 0 : _a.type) != headerCell)\n return false;\n return true;\n}\nfunction addRow(tr, { map, tableStart, table }, row) {\n var _a;\n let rowPos = tableStart;\n for (let i = 0; i < row; i++)\n rowPos += table.child(i).nodeSize;\n const cells = [];\n let refRow = row > 0 ? -1 : 0;\n if (rowIsHeader(map, table, row + refRow))\n refRow = row == 0 || row == map.height ? null : 0;\n for (let col = 0, index = map.width * row; col < map.width; col++, index++) {\n if (row > 0 && row < map.height && map.map[index] == map.map[index - map.width]) {\n const pos = map.map[index];\n const attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tableStart + pos, null, {\n ...attrs,\n rowspan: attrs.rowspan + 1\n });\n col += attrs.colspan - 1;\n } else {\n const type = refRow == null ? tableNodeTypes(table.type.schema).cell : (_a = table.nodeAt(map.map[index + refRow * map.width])) == null ? void 0 : _a.type;\n const node = type == null ? void 0 : type.createAndFill();\n if (node)\n cells.push(node);\n }\n }\n tr.insert(rowPos, tableNodeTypes(table.type.schema).row.create(null, cells));\n return tr;\n}\nfunction addRowBefore(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.top));\n }\n return true;\n}\nfunction addRowAfter(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state);\n dispatch(addRow(state.tr, rect, rect.bottom));\n }\n return true;\n}\nfunction removeRow(tr, { map, table, tableStart }, row) {\n let rowPos = 0;\n for (let i = 0; i < row; i++)\n rowPos += table.child(i).nodeSize;\n const nextRow = rowPos + table.child(row).nodeSize;\n const mapFrom = tr.mapping.maps.length;\n tr.delete(rowPos + tableStart, nextRow + tableStart);\n for (let col = 0, index = row * map.width; col < map.width; col++, index++) {\n const pos = map.map[index];\n if (row > 0 && pos == map.map[index - map.width]) {\n const attrs = table.nodeAt(pos).attrs;\n tr.setNodeMarkup(tr.mapping.slice(mapFrom).map(pos + tableStart), null, {\n ...attrs,\n rowspan: attrs.rowspan - 1\n });\n col += attrs.colspan - 1;\n } else if (row < map.width && pos == map.map[index + map.width]) {\n const cell = table.nodeAt(pos);\n const attrs = cell.attrs;\n const copy = cell.type.create(\n { ...attrs, rowspan: cell.attrs.rowspan - 1 },\n cell.content\n );\n const newPos = map.positionAt(row + 1, col, table);\n tr.insert(tr.mapping.slice(mapFrom).map(tableStart + newPos), copy);\n col += attrs.colspan - 1;\n }\n }\n}\nfunction deleteRow(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const rect = selectedRect(state), tr = state.tr;\n if (rect.top == 0 && rect.bottom == rect.map.height)\n return false;\n for (let i = rect.bottom - 1; ; i--) {\n removeRow(tr, rect, i);\n if (i == rect.top)\n break;\n const table = rect.tableStart ? tr.doc.nodeAt(rect.tableStart - 1) : tr.doc;\n if (!table) {\n throw RangeError(\"No table found\");\n }\n rect.table = table;\n rect.map = TableMap.get(rect.table);\n }\n dispatch(tr);\n }\n return true;\n}\nfunction isEmpty(cell) {\n const c = cell.content;\n return c.childCount == 1 && c.child(0).isTextblock && c.child(0).childCount == 0;\n}\nfunction cellsOverlapRectangle({ width, height, map }, rect) {\n let indexTop = rect.top * width + rect.left, indexLeft = indexTop;\n let indexBottom = (rect.bottom - 1) * width + rect.left, indexRight = indexTop + (rect.right - rect.left - 1);\n for (let i = rect.top; i < rect.bottom; i++) {\n if (rect.left > 0 && map[indexLeft] == map[indexLeft - 1] || rect.right < width && map[indexRight] == map[indexRight + 1])\n return true;\n indexLeft += width;\n indexRight += width;\n }\n for (let i = rect.left; i < rect.right; i++) {\n if (rect.top > 0 && map[indexTop] == map[indexTop - width] || rect.bottom < height && map[indexBottom] == map[indexBottom + width])\n return true;\n indexTop++;\n indexBottom++;\n }\n return false;\n}\nfunction mergeCells(state, dispatch) {\n const sel = state.selection;\n if (!(sel instanceof CellSelection) || sel.$anchorCell.pos == sel.$headCell.pos)\n return false;\n const rect = selectedRect(state), { map } = rect;\n if (cellsOverlapRectangle(map, rect))\n return false;\n if (dispatch) {\n const tr = state.tr;\n const seen = {};\n let content = Fragment4.empty;\n let mergedPos;\n let mergedCell;\n for (let row = rect.top; row < rect.bottom; row++) {\n for (let col = rect.left; col < rect.right; col++) {\n const cellPos = map.map[row * map.width + col];\n const cell = rect.table.nodeAt(cellPos);\n if (seen[cellPos] || !cell)\n continue;\n seen[cellPos] = true;\n if (mergedPos == null) {\n mergedPos = cellPos;\n mergedCell = cell;\n } else {\n if (!isEmpty(cell))\n content = content.append(cell.content);\n const mapped = tr.mapping.map(cellPos + rect.tableStart);\n tr.delete(mapped, mapped + cell.nodeSize);\n }\n }\n }\n if (mergedPos == null || mergedCell == null) {\n return true;\n }\n tr.setNodeMarkup(mergedPos + rect.tableStart, null, {\n ...addColSpan(\n mergedCell.attrs,\n mergedCell.attrs.colspan,\n rect.right - rect.left - mergedCell.attrs.colspan\n ),\n rowspan: rect.bottom - rect.top\n });\n if (content.size) {\n const end = mergedPos + 1 + mergedCell.content.size;\n const start = isEmpty(mergedCell) ? mergedPos + 1 : end;\n tr.replaceWith(start + rect.tableStart, end + rect.tableStart, content);\n }\n tr.setSelection(\n new CellSelection(tr.doc.resolve(mergedPos + rect.tableStart))\n );\n dispatch(tr);\n }\n return true;\n}\nfunction splitCell(state, dispatch) {\n const nodeTypes = tableNodeTypes(state.schema);\n return splitCellWithType(({ node }) => {\n return nodeTypes[node.type.spec.tableRole];\n })(state, dispatch);\n}\nfunction splitCellWithType(getCellType) {\n return (state, dispatch) => {\n var _a;\n const sel = state.selection;\n let cellNode;\n let cellPos;\n if (!(sel instanceof CellSelection)) {\n cellNode = cellWrapping(sel.$from);\n if (!cellNode)\n return false;\n cellPos = (_a = cellAround(sel.$from)) == null ? void 0 : _a.pos;\n } else {\n if (sel.$anchorCell.pos != sel.$headCell.pos)\n return false;\n cellNode = sel.$anchorCell.nodeAfter;\n cellPos = sel.$anchorCell.pos;\n }\n if (cellNode == null || cellPos == null) {\n return false;\n }\n if (cellNode.attrs.colspan == 1 && cellNode.attrs.rowspan == 1) {\n return false;\n }\n if (dispatch) {\n let baseAttrs = cellNode.attrs;\n const attrs = [];\n const colwidth = baseAttrs.colwidth;\n if (baseAttrs.rowspan > 1)\n baseAttrs = { ...baseAttrs, rowspan: 1 };\n if (baseAttrs.colspan > 1)\n baseAttrs = { ...baseAttrs, colspan: 1 };\n const rect = selectedRect(state), tr = state.tr;\n for (let i = 0; i < rect.right - rect.left; i++)\n attrs.push(\n colwidth ? {\n ...baseAttrs,\n colwidth: colwidth && colwidth[i] ? [colwidth[i]] : null\n } : baseAttrs\n );\n let lastCell;\n for (let row = rect.top; row < rect.bottom; row++) {\n let pos = rect.map.positionAt(row, rect.left, rect.table);\n if (row == rect.top)\n pos += cellNode.nodeSize;\n for (let col = rect.left, i = 0; col < rect.right; col++, i++) {\n if (col == rect.left && row == rect.top)\n continue;\n tr.insert(\n lastCell = tr.mapping.map(pos + rect.tableStart, 1),\n getCellType({ node: cellNode, row, col }).createAndFill(attrs[i])\n );\n }\n }\n tr.setNodeMarkup(\n cellPos,\n getCellType({ node: cellNode, row: rect.top, col: rect.left }),\n attrs[0]\n );\n if (sel instanceof CellSelection)\n tr.setSelection(\n new CellSelection(\n tr.doc.resolve(sel.$anchorCell.pos),\n lastCell ? tr.doc.resolve(lastCell) : void 0\n )\n );\n dispatch(tr);\n }\n return true;\n };\n}\nfunction setCellAttr(name, value) {\n return function(state, dispatch) {\n if (!isInTable(state))\n return false;\n const $cell = selectionCell(state);\n if ($cell.nodeAfter.attrs[name] === value)\n return false;\n if (dispatch) {\n const tr = state.tr;\n if (state.selection instanceof CellSelection)\n state.selection.forEachCell((node, pos) => {\n if (node.attrs[name] !== value)\n tr.setNodeMarkup(pos, null, {\n ...node.attrs,\n [name]: value\n });\n });\n else\n tr.setNodeMarkup($cell.pos, null, {\n ...$cell.nodeAfter.attrs,\n [name]: value\n });\n dispatch(tr);\n }\n return true;\n };\n}\nfunction deprecated_toggleHeader(type) {\n return function(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const types = tableNodeTypes(state.schema);\n const rect = selectedRect(state), tr = state.tr;\n const cells = rect.map.cellsInRect(\n type == \"column\" ? {\n left: rect.left,\n top: 0,\n right: rect.right,\n bottom: rect.map.height\n } : type == \"row\" ? {\n left: 0,\n top: rect.top,\n right: rect.map.width,\n bottom: rect.bottom\n } : rect\n );\n const nodes = cells.map((pos) => rect.table.nodeAt(pos));\n for (let i = 0; i < cells.length; i++)\n if (nodes[i].type == types.header_cell)\n tr.setNodeMarkup(\n rect.tableStart + cells[i],\n types.cell,\n nodes[i].attrs\n );\n if (tr.steps.length == 0)\n for (let i = 0; i < cells.length; i++)\n tr.setNodeMarkup(\n rect.tableStart + cells[i],\n types.header_cell,\n nodes[i].attrs\n );\n dispatch(tr);\n }\n return true;\n };\n}\nfunction isHeaderEnabledByType(type, rect, types) {\n const cellPositions = rect.map.cellsInRect({\n left: 0,\n top: 0,\n right: type == \"row\" ? rect.map.width : 1,\n bottom: type == \"column\" ? rect.map.height : 1\n });\n for (let i = 0; i < cellPositions.length; i++) {\n const cell = rect.table.nodeAt(cellPositions[i]);\n if (cell && cell.type !== types.header_cell) {\n return false;\n }\n }\n return true;\n}\nfunction toggleHeader(type, options) {\n options = options || { useDeprecatedLogic: false };\n if (options.useDeprecatedLogic)\n return deprecated_toggleHeader(type);\n return function(state, dispatch) {\n if (!isInTable(state))\n return false;\n if (dispatch) {\n const types = tableNodeTypes(state.schema);\n const rect = selectedRect(state), tr = state.tr;\n const isHeaderRowEnabled = isHeaderEnabledByType(\"row\", rect, types);\n const isHeaderColumnEnabled = isHeaderEnabledByType(\n \"column\",\n rect,\n types\n );\n const isHeaderEnabled = type === \"column\" ? isHeaderRowEnabled : type === \"row\" ? isHeaderColumnEnabled : false;\n const selectionStartsAt = isHeaderEnabled ? 1 : 0;\n const cellsRect = type == \"column\" ? {\n left: 0,\n top: selectionStartsAt,\n right: 1,\n bottom: rect.map.height\n } : type == \"row\" ? {\n left: selectionStartsAt,\n top: 0,\n right: rect.map.width,\n bottom: 1\n } : rect;\n const newType = type == \"column\" ? isHeaderColumnEnabled ? types.cell : types.header_cell : type == \"row\" ? isHeaderRowEnabled ? types.cell : types.header_cell : types.cell;\n rect.map.cellsInRect(cellsRect).forEach((relativeCellPos) => {\n const cellPos = relativeCellPos + rect.tableStart;\n const cell = tr.doc.nodeAt(cellPos);\n if (cell) {\n tr.setNodeMarkup(cellPos, newType, cell.attrs);\n }\n });\n dispatch(tr);\n }\n return true;\n };\n}\nvar toggleHeaderRow = toggleHeader(\"row\", {\n useDeprecatedLogic: true\n});\nvar toggleHeaderColumn = toggleHeader(\"column\", {\n useDeprecatedLogic: true\n});\nvar toggleHeaderCell = toggleHeader(\"cell\", {\n useDeprecatedLogic: true\n});\nfunction findNextCell($cell, dir) {\n if (dir < 0) {\n const before = $cell.nodeBefore;\n if (before)\n return $cell.pos - before.nodeSize;\n for (let row = $cell.index(-1) - 1, rowEnd = $cell.before(); row >= 0; row--) {\n const rowNode = $cell.node(-1).child(row);\n const lastChild = rowNode.lastChild;\n if (lastChild) {\n return rowEnd - 1 - lastChild.nodeSize;\n }\n rowEnd -= rowNode.nodeSize;\n }\n } else {\n if ($cell.index() < $cell.parent.childCount - 1) {\n return $cell.pos + $cell.nodeAfter.nodeSize;\n }\n const table = $cell.node(-1);\n for (let row = $cell.indexAfter(-1), rowStart = $cell.after(); row < table.childCount; row++) {\n const rowNode = table.child(row);\n if (rowNode.childCount)\n return rowStart + 1;\n rowStart += rowNode.nodeSize;\n }\n }\n return null;\n}\nfunction goToNextCell(direction) {\n return function(state, dispatch) {\n if (!isInTable(state))\n return false;\n const cell = findNextCell(selectionCell(state), direction);\n if (cell == null)\n return false;\n if (dispatch) {\n const $cell = state.doc.resolve(cell);\n dispatch(\n state.tr.setSelection(TextSelection3.between($cell, moveCellForward($cell))).scrollIntoView()\n );\n }\n return true;\n };\n}\nfunction deleteTable(state, dispatch) {\n const $pos = state.selection.$anchor;\n for (let d = $pos.depth; d > 0; d--) {\n const node = $pos.node(d);\n if (node.type.spec.tableRole == \"table\") {\n if (dispatch)\n dispatch(\n state.tr.delete($pos.before(d), $pos.after(d)).scrollIntoView()\n );\n return true;\n }\n }\n return false;\n}\n\n// src/index.ts\nfunction tableEditing({\n allowTableNodeSelection = false\n} = {}) {\n return new Plugin2({\n key: tableEditingKey,\n // This piece of state is used to remember when a mouse-drag\n // cell-selection is happening, so that it can continue even as\n // transactions (which might move its anchor cell) come in.\n state: {\n init() {\n return null;\n },\n apply(tr, cur) {\n const set = tr.getMeta(tableEditingKey);\n if (set != null)\n return set == -1 ? null : set;\n if (cur == null || !tr.docChanged)\n return cur;\n const { deleted, pos } = tr.mapping.mapResult(cur);\n return deleted ? null : pos;\n }\n },\n props: {\n decorations: drawCellSelection,\n handleDOMEvents: {\n mousedown: handleMouseDown\n },\n createSelectionBetween(view) {\n return tableEditingKey.getState(view.state) != null ? view.state.selection : null;\n },\n handleTripleClick,\n handleKeyDown,\n handlePaste\n },\n appendTransaction(_, oldState, state) {\n return normalizeSelection(\n state,\n fixTables(state, oldState),\n allowTableNodeSelection\n );\n }\n });\n}\nexport {\n CellBookmark,\n CellSelection,\n ResizeState,\n TableMap,\n TableView,\n clipCells as __clipCells,\n insertCells as __insertCells,\n pastedCells as __pastedCells,\n addColSpan,\n addColumn,\n addColumnAfter,\n addColumnBefore,\n addRow,\n addRowAfter,\n addRowBefore,\n cellAround,\n colCount,\n columnIsHeader,\n columnResizing,\n columnResizingPluginKey,\n deleteColumn,\n deleteRow,\n deleteTable,\n findCell,\n fixTables,\n fixTablesKey,\n goToNextCell,\n handlePaste,\n inSameTable,\n isInTable,\n mergeCells,\n moveCellForward,\n nextCell,\n pointsAtCell,\n removeColSpan,\n removeColumn,\n removeRow,\n rowIsHeader,\n selectedRect,\n selectionCell,\n setCellAttr,\n splitCell,\n splitCellWithType,\n tableEditing,\n tableEditingKey,\n tableNodeTypes,\n tableNodes,\n toggleHeader,\n toggleHeaderCell,\n toggleHeaderColumn,\n toggleHeaderRow,\n updateColumnsOnResize\n};\n","import { __assign } from \"tslib\";\nimport { Schema } from 'prosemirror-model';\nimport { tableNodes } from 'prosemirror-tables';\nimport { domToPmDoc, htmlToFragment, pmDocToFragment } from '../source';\nimport { rowTypeAttr, colgroupAttr, resizableAttr } from './constants';\nvar hole = 0;\nvar blockquoteDOM = ['blockquote', hole], hrDOM = ['hr'], preDOM = ['pre', ['code', hole]];\nvar olDOM = ['ol', 0], ulDOM = ['ul', 0], liDOM = ['li', 0];\nvar domAttributes = function (dom) {\n var result = {};\n var attributes = dom.attributes, attr;\n for (var i = 0; i < attributes.length; i++) {\n attr = attributes[i];\n result[attr.name] = attr.value;\n }\n return result;\n};\nvar defaultAttrs = function (attrs) {\n var nodeAttrs = {};\n attrs.forEach(function (attr) {\n nodeAttrs[attr] = { default: null };\n });\n return nodeAttrs;\n};\nvar commonAttributes = function () { return defaultAttrs(['style', 'class', 'id']); };\nvar hasAttrs = function (attrs, exclude) {\n for (var attr in attrs) {\n if (attr && attrs[attr] !== null && attr !== exclude) {\n return true;\n }\n }\n return false;\n};\nvar pmAttributes = function (attrs, exclude) {\n if (exclude === void 0) { exclude = []; }\n var result = {};\n var _loop_1 = function (attr) {\n if (attr && attrs[attr] !== null && !exclude.find(function (e) { return e === attr; })) {\n result[attr] = attrs[attr];\n }\n };\n for (var attr in attrs) {\n _loop_1(attr);\n }\n return result;\n};\nvar tagMark = function (tag) {\n var _a;\n return _a = {},\n _a[tag] = {\n name: tag,\n inclusive: true,\n parseDOM: [{ tag: tag }],\n toDOM: function () { return [tag, hole]; }\n },\n _a;\n};\nvar marks = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ \n // :: MarkSpec A link. Has `href` and `title` attributes. `title`\n // defaults to the empty string. Rendered and parsed as an ``\n // element.\n link: {\n attrs: __assign(__assign({}, commonAttributes()), { href: { default: null }, target: { default: null }, title: { default: null } }),\n inclusive: false,\n parseDOM: [{ tag: 'a', getAttrs: domAttributes }],\n toDOM: function (node) { return ['a', pmAttributes(node.attrs), hole]; }\n } }, tagMark('strong')), tagMark('b')), tagMark('em')), tagMark('i')), tagMark('del')), tagMark('sub')), tagMark('sup')), tagMark('code')), { style: {\n attrs: __assign({}, commonAttributes()),\n parseDOM: [{\n tag: 'span',\n getAttrs: domAttributes\n }],\n toDOM: function (node) { return hasAttrs(node.attrs) ?\n ['span', pmAttributes(node.attrs), hole] : ['span', hole]; }\n } }), tagMark('u'));\nvar cellAttribute = function (name) {\n var _a;\n return _a = {},\n _a[name] = {\n default: null,\n getFromDOM: function (cell) { return cell.getAttribute(name); },\n setDOMAttr: function (value, attrs) { attrs[name] = value; }\n },\n _a;\n};\nvar cellAttributes = __assign(__assign(__assign(__assign(__assign({}, cellAttribute('style')), cellAttribute('class')), cellAttribute('id')), cellAttribute('headers')), cellAttribute('scope'));\nvar colgroupNodes = {\n doc: { content: 'colgroup*' },\n col: {\n attrs: defaultAttrs(['id', 'class', 'style', 'span']),\n parseDOM: [{ getAttrs: domAttributes, tag: 'col' }],\n toDOM: function (node) { return ['col', node.attrs]; }\n },\n colgroup: {\n attrs: defaultAttrs(['id', 'class', 'style', 'span']),\n content: 'col*',\n parseDOM: [{ getAttrs: domAttributes, tag: 'colgroup' }],\n toDOM: function (node) { return ['colgroup', node.attrs, 0]; }\n },\n text: { inline: true, group: 'inline' }\n};\nvar colgroupSchema = new Schema({ nodes: colgroupNodes, marks: {} });\n// will be removed when we implement our own columnResizing\nvar shouldSkipColgroup = function (node) {\n var shouldSkip = false;\n var row = node.child(0);\n for (var r = 0; r < row.childCount; r++) {\n var cell = row.child(r);\n if (cell.attrs.colwidth) {\n shouldSkip = true;\n break;\n }\n }\n return shouldSkip;\n};\nexport var parseStrColgroup = function (colgroup) {\n var doc = domToPmDoc(htmlToFragment(colgroup), colgroupSchema, { preserveWhitespace: false });\n var fragment = pmDocToFragment(doc);\n var colgroupEl = fragment.firstChild;\n return colgroupEl;\n};\nvar tNodes = tableNodes({ tableGroup: 'block', cellContent: 'block+', cellAttributes: cellAttributes });\ntNodes.table_row.attrs = __assign(__assign({}, tNodes.table_row.attrs), defaultAttrs([rowTypeAttr, 'style', 'class', 'id']));\ntNodes.table_row.toDOM = function (node) { return ['tr', pmAttributes(node.attrs), 0]; };\ntNodes.table_row.parseDOM = [{ tag: 'tr', getAttrs: domAttributes }];\ntNodes.table.attrs = __assign(__assign({}, tNodes.table.attrs), defaultAttrs(['style', 'class', 'id', colgroupAttr, resizableAttr]));\ntNodes.table.toDOM = function (node) {\n var tableAttrs = hasAttrs(node.attrs) ? pmAttributes(node.attrs, [colgroupAttr, resizableAttr]) : {};\n var colgroup = null;\n if (node.attrs[colgroupAttr] && !shouldSkipColgroup(node)) {\n var colgroupEl = parseStrColgroup(node.attrs[colgroupAttr]);\n if (colgroupEl) {\n var cols = Array.from(colgroupEl.children).map(function (c) { return ['col', domAttributes(c)]; });\n colgroup = [\n 'colgroup',\n domAttributes(colgroupEl)\n ].concat(cols);\n }\n }\n return colgroup ? ['table', tableAttrs, colgroup, ['tbody', 0]] :\n ['table', tableAttrs, ['tbody', 0]];\n};\ntNodes.table.parseDOM = [{\n tag: 'table',\n getAttrs: function (node) {\n var attrs = domAttributes(node);\n var colgroup = Array.from(node.childNodes).find(function (c) { return c.nodeName === 'COLGROUP'; });\n if (colgroup) {\n attrs[colgroupAttr] = colgroup.outerHTML;\n }\n return attrs;\n }\n }];\nvar nodes = __assign({ \n // :: NodeSpec The top level document node.\n doc: {\n content: 'block+'\n }, \n // :: NodeSpec A plain paragraph textblock. Represented in the DOM\n // as a `

    ` element.\n paragraph: {\n content: 'inline*',\n group: 'block',\n attrs: __assign({}, commonAttributes()),\n parseDOM: [{\n tag: 'p',\n getAttrs: domAttributes\n }],\n toDOM: function (node) { return hasAttrs(node.attrs) ? ['p', pmAttributes(node.attrs), hole] : ['p', hole]; }\n }, table_wrapper: {\n content: '(table_caption_external | table)+',\n group: 'block',\n defining: true,\n attrs: {\n table: { default: null },\n style: { default: null }\n },\n parseDOM: [{\n tag: 'div[table]',\n getAttrs: domAttributes\n }],\n toDOM: function (node) { return hasAttrs(node.attrs) ? ['div', pmAttributes(node.attrs), hole] : ['div', hole]; }\n }, table_caption_external: {\n content: 'inline+',\n group: 'block',\n attrs: __assign({ caption: { default: null } }, commonAttributes()),\n parseDOM: [{\n tag: 'div[caption]',\n getAttrs: domAttributes\n }],\n toDOM: function (node) { return hasAttrs(node.attrs) ? ['div', pmAttributes(node.attrs), hole] : ['div', hole]; }\n }, div: {\n // Uncaught SyntaxError: Mixing inline and block content (in content expression '(block | inline)*')\n // content: '(block | inline)*',\n content: 'block*',\n group: 'block',\n attrs: __assign({}, commonAttributes()),\n parseDOM: [{\n tag: 'div',\n getAttrs: domAttributes\n }],\n toDOM: function (node) { return hasAttrs(node.attrs) ? ['div', pmAttributes(node.attrs), hole] : ['div', hole]; }\n }, \n // :: NodeSpec A blockquote (`

    `) wrapping one or more blocks.\n blockquote: {\n attrs: __assign({}, commonAttributes()),\n content: 'block+',\n group: 'block',\n defining: true,\n parseDOM: [{\n tag: 'blockquote',\n getAttrs: domAttributes\n }],\n toDOM: function (node) { return hasAttrs(node.attrs) ? ['blockquote', pmAttributes(node.attrs), hole] : blockquoteDOM; }\n }, \n // :: NodeSpec A horizontal rule (`
    `).\n horizontal_rule: {\n group: 'block',\n parseDOM: [{ tag: 'hr' }],\n toDOM: function () { return hrDOM; }\n }, \n // :: NodeSpec A heading textblock, with a `level` attribute that\n // has to hold the numbers from 1 to 6. Parsed and serialized as `

    ` to\n // `

    ` elements.\n heading: {\n attrs: __assign(__assign({}, commonAttributes()), { level: { default: 1 } }),\n content: 'inline*',\n group: 'block',\n defining: true,\n parseDOM: [\n { tag: 'h1', getAttrs: function (node) { return (__assign(__assign({}, domAttributes(node)), { level: 1 })); } },\n { tag: 'h2', getAttrs: function (node) { return (__assign(__assign({}, domAttributes(node)), { level: 2 })); } },\n { tag: 'h3', getAttrs: function (node) { return (__assign(__assign({}, domAttributes(node)), { level: 3 })); } },\n { tag: 'h4', getAttrs: function (node) { return (__assign(__assign({}, domAttributes(node)), { level: 4 })); } },\n { tag: 'h5', getAttrs: function (node) { return (__assign(__assign({}, domAttributes(node)), { level: 5 })); } },\n { tag: 'h6', getAttrs: function (node) { return (__assign(__assign({}, domAttributes(node)), { level: 6 })); } }\n ],\n toDOM: function (node) { return hasAttrs(node.attrs, 'level') ?\n ['h' + node.attrs.level, pmAttributes(node.attrs, ['level']), hole] :\n ['h' + node.attrs.level, hole]; }\n }, \n // :: NodeSpec A code listing. Disallows marks or non-text inline\n // nodes by default. Represented as a `
    ` element with a\n    // `` element inside it.\n    code_block: {\n        content: 'text*',\n        marks: '',\n        group: 'block',\n        code: true,\n        defining: true,\n        parseDOM: [{ tag: 'pre', preserveWhitespace: 'full' }],\n        toDOM: function () { return preDOM; }\n    }, \n    // :: NodeSpec The text node.\n    text: {\n        inline: true,\n        group: 'inline'\n    }, \n    // :: NodeSpec An inline image (``) node. Supports `src`,\n    // `alt`, and `href` attributes. The latter two default to an empty\n    // string.\n    image: {\n        inline: true,\n        attrs: __assign({ src: { default: null }, alt: { default: null }, title: { default: null }, width: { default: null }, height: { default: null } }, commonAttributes()),\n        group: 'inline',\n        draggable: true,\n        parseDOM: [{ tag: 'img', getAttrs: domAttributes }],\n        toDOM: function (node) { return hasAttrs(node.attrs) ? ['img', pmAttributes(node.attrs)] : ['img']; }\n    }, \n    // :: NodeSpec A hard line break represented in the DOM as a `
    ` element.\n hard_break: {\n inline: true,\n attrs: __assign({}, commonAttributes()),\n group: 'inline',\n selectable: false,\n parseDOM: [{\n tag: 'br',\n getAttrs: domAttributes\n }],\n toDOM: function (node) { return hasAttrs(node.attrs) ? ['br', pmAttributes(node.attrs)] : ['br']; }\n }, \n // :: NodeSpec\n // An ordered list [node spec](#model.NodeSpec). Has a single\n // attribute, `order`, which determines the number at which the list\n // starts counting, and defaults to 1. Represented as an `
      `\n // element.\n ordered_list: {\n content: 'list_item+',\n group: 'block',\n attrs: __assign(__assign({}, commonAttributes()), { type: { default: null }, order: { default: 1 } }),\n parseDOM: [{ tag: 'ol', getAttrs: function (dom) {\n return __assign(__assign({}, domAttributes(dom)), { order: dom.hasAttribute('start') ? parseInt(dom.getAttribute('start') || '1', 10) : 1 });\n } }],\n toDOM: function (node) {\n return node.attrs.order === 1 ?\n (hasAttrs(node.attrs, 'order') ? ['ol', pmAttributes(node.attrs, ['order']), hole] : olDOM) :\n ['ol', __assign(__assign({}, pmAttributes(node.attrs, ['order'])), { start: node.attrs.order }), hole];\n }\n }, \n // :: NodeSpec\n // A bullet list node specification represented in the DOM as a `
    ' + cols.reduce(function (acc, cur) { return acc + cur.outerHTML; }, '') + '', _a));\n }\n var width = parseFloat(col.style.width);\n var tr = view.state.tr.setMeta(key, { setDragging: { startX: event.clientX, startWidth: width } });\n if (!tableDom.style.width) {\n var widths = Array.from(col.parentNode.children).map(function (c) { return c.style.width; });\n if (widths.every(Boolean)) {\n var sum = widths.reduce(function (acc, cur) { return acc + parseFloat(cur); }, 0);\n tableAttrs = setNodeStyle(tableAttrs || tableNode.attrs, 'width', sum + 'px');\n }\n }\n if (tableAttrs) {\n var tablePos = $cell.posAtIndex(0, $cell.depth - 1) - 1;\n tr.setNodeMarkup(tablePos, null, tableAttrs);\n }\n view.dispatch(tr);\n function finish(ev) {\n ev.view.removeEventListener('mouseup', finish);\n ev.view.removeEventListener('mousemove', move);\n var curPluginState = key.getState(view.state);\n if (curPluginState.dragging) {\n var transaction = view.state.tr;\n updateColumnWidth(view, transaction, curPluginState.activeHandle, draggedWidth(curPluginState.dragging, ev, cellMinWidth));\n view.dispatch(transaction.setMeta(key, { setDragging: null }));\n }\n }\n function move(ev) {\n if (!ev.which) {\n return finish(ev);\n }\n var curPluginState = key.getState(view.state);\n var dragged = draggedWidth(curPluginState.dragging, ev, cellMinWidth);\n displayColumnWidth(view, curPluginState.activeHandle, dragged, cellMinWidth);\n }\n event.view.addEventListener('mouseup', finish);\n event.view.addEventListener('mousemove', move);\n event.preventDefault();\n return true;\n}\nfunction draggedWidth(dragging, event, cellMinWidth) {\n var offset = event.clientX - dragging.startX;\n return Math.max(cellMinWidth, dragging.startWidth + offset);\n}\nfunction updateHandle(view, value) {\n var tr = view.state.tr;\n tr.setMeta('addToHistory', false);\n tr.setMeta(key, { setHandle: value });\n view.dispatch(tr);\n}\nfunction updateColumnWidth(view, tr, cell, _width) {\n var _a;\n var $cell = view.state.doc.resolve(cell);\n var tableNode = $cell.node(-1), start = $cell.start(-1);\n var tablePos = $cell.posAtIndex(0, $cell.depth - 1) - 1;\n var tableDom = view.nodeDOM(start).closest('table');\n var attrs = tableNode.attrs;\n if (tableNode && attrs[colgroupAttr]) {\n var colgroup = tableDom.firstChild;\n attrs = __assign(__assign({}, attrs), (_a = {}, _a[colgroupAttr] = colgroup.outerHTML, _a));\n }\n var tableDomWidth = tableDom.style.width;\n if (tableDom && tableDomWidth && parseStyle(attrs.style).width !== tableDomWidth) {\n attrs = setNodeStyle(attrs, 'width', tableDomWidth);\n }\n tr.setNodeMarkup(tablePos, null, attrs);\n}\nfunction displayColumnWidth(view, cell, width, _cellMinWidth) {\n var $cell = view.state.doc.resolve(cell);\n var table = $cell.node(-1), start = $cell.start(-1);\n var col = TableMap.get(table).colCount($cell.pos - start) + $cell.nodeAfter.attrs.colspan - 1;\n var dom = view.domAtPos($cell.start(-1)).node;\n if (dom.nodeName !== 'TABLE') {\n dom = dom.closest('table');\n }\n var tableDom = dom;\n var colgroup = tableDom.firstChild;\n var cols = Array.from(colgroup.children);\n cols[col].style.width = width + 'px';\n if (tableDom.style.width) {\n var widths = cols.map(function (c) { return c.style.width; });\n if (widths.every(Boolean)) {\n var sum = widths.reduce(function (acc, cur) { return acc + parseFloat(cur); }, 0);\n tableDom.style.width = sum + 'px';\n }\n }\n}\nfunction handleDecorations(state, cell) {\n var decorations = [];\n var $cell = state.doc.resolve(cell);\n var table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n var cellsPositions = [];\n var cellPos = cell - start;\n var column = -1;\n for (var i = 0; i < map.height; i++) {\n cellsPositions.push(map.map.slice(i * map.width, (i * map.width) + map.width));\n if (column === -1) {\n column = cellsPositions[i].lastIndexOf(cellPos);\n }\n }\n var cells = [];\n cellsPositions.forEach(function (row) {\n var c = row[column];\n if (row[column] !== row[column + 1]) {\n cells.push(c);\n }\n });\n cells.forEach((function (cPos) {\n var pos = start + cPos + table.nodeAt(cPos).nodeSize - 1;\n var dom = document.createElement('div');\n dom.className = 'column-resize-handle';\n decorations.push(Decoration.widget(pos, dom));\n }));\n return DecorationSet.create(state.doc, decorations);\n}\n","import { __assign } from \"tslib\";\nimport { NodeSelection, Plugin } from 'prosemirror-state';\nimport { colgroupAttr, dataResizeDirTable, resizableAttr } from '../../config/constants';\nimport { getTable, parentNode, setNodeStyle, tableResizeKey as key } from './utils';\nimport { parseStyle } from './../../utils';\nimport { directions } from './../resize-utils';\nvar commonDir = {\n 'southeast': true,\n 'southwest': true,\n 'northwest': true,\n 'northeast': true\n};\nvar horizontalDir = __assign({ 'east': true, 'west': true }, commonDir);\nvar verticalDir = __assign({ 'south': true, 'north': true }, commonDir);\nvar ResizeState = /** @class */ (function () {\n function ResizeState(activeHandle, dragging, nodePosition) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n this.nodePosition = nodePosition;\n }\n ResizeState.prototype.apply = function (tr) {\n var state = this, next = tr.getMeta(key);\n if (next) {\n var nextState = new ResizeState(next.activeHandle, next.setDragging, next.nodePosition);\n return nextState;\n }\n return state;\n };\n return ResizeState;\n}());\nvar handleMouseMove = function (view, event) {\n var _a;\n var state = key.getState(view.state);\n var dragging = state.dragging, nodePosition = state.nodePosition, activeHandle = state.activeHandle;\n if (nodePosition < 0 || !dragging) {\n return;\n }\n var tableDom = getTable(view.nodeDOM(nodePosition));\n var rect = tableDom.getBoundingClientRect();\n var dir = directions[activeHandle];\n var diffX = (event.clientX - dragging.startX) * dir.x;\n var diffY = (event.clientY - dragging.startY) * dir.y;\n var win = (tableDom.ownerDocument && tableDom.ownerDocument.defaultView) || window;\n var compStyles = win.getComputedStyle(tableDom);\n var nodeWidth = /px/.test(compStyles.width) ? parseFloat(compStyles.width) : tableDom.offsetWidth;\n var nodeHeight = /px/.test(compStyles.height) ? parseFloat(compStyles.height) : tableDom.offsetHeight;\n var width = dir.x ? diffX + nodeWidth : rect.width;\n var height = dir.y ? diffY + nodeHeight : rect.height;\n dragging.startX = dir.x ? event.clientX : dragging.startX;\n dragging.startY = dir.y ? event.clientY : dragging.startY;\n if (horizontalDir[activeHandle]) {\n tableDom.style.width = width + 'px';\n }\n if (verticalDir[activeHandle]) {\n tableDom.style.height = height + 'px';\n }\n if (/px/.test(tableDom.style.width)) {\n var wrapper = (_a = tableDom.parentNode) === null || _a === void 0 ? void 0 : _a.parentNode;\n if (wrapper instanceof HTMLDivElement && wrapper.matches('div[table]') && /%/.test(wrapper.style.width)) {\n wrapper.style.width = '';\n }\n }\n};\nvar toPercents = function (view, tr, tablePos) {\n var tableNode = view.state.doc.nodeAt(tablePos);\n var tableDom = getTable(view.nodeDOM(tablePos));\n var _a = tableSize(tableDom), width = _a.width, height = _a.height, colsWidth = _a.colsWidth, rowsHeight = _a.rowsHeight, offsetWidth = _a.offsetWidth, offsetHeight = _a.offsetHeight;\n var colgroup = tableDom.firstChild;\n var cols = Array.from((colgroup && colgroup.children) || []);\n var widthChanged = false;\n cols.forEach(function (col, i) {\n if (col.style.width && !/%$/.test(col.style.width)) {\n col.style.width = ((colsWidth[i]) * 100 / width) + '%';\n widthChanged = true;\n }\n });\n var heightChange = false;\n tableNode.forEach(function (row, offset, index) {\n var rowHeight = parseStyle(row.attrs.style).height;\n if (rowHeight && !/%$/.test(rowHeight)) {\n tr.setNodeMarkup(tablePos + offset + 1, null, setNodeStyle(row.attrs, 'height', (rowsHeight[index] * 100 / height) + '%'));\n heightChange = true;\n }\n });\n var tableAttrs = tableNode.attrs;\n if (parseStyle(tableAttrs.style).width !== offsetWidth + 'px') {\n tableAttrs = setNodeStyle(tableAttrs, 'width', offsetWidth + 'px');\n }\n if (widthChanged) {\n tableAttrs[colgroupAttr] = colgroup.outerHTML;\n }\n if (heightChange) {\n tableAttrs = setNodeStyle(tableAttrs, 'height', offsetHeight + 'px');\n }\n if (widthChanged || heightChange) {\n tr.setNodeMarkup(tablePos, null, tableAttrs);\n }\n};\nvar toPixels = function (view, tr, tablePos, attrs) {\n var tableNode = view.state.doc.nodeAt(tablePos);\n var tableDom = getTable(view.nodeDOM(tablePos));\n var win = (tableDom.ownerDocument && tableDom.ownerDocument.defaultView) || window;\n var calcStyle = win.getComputedStyle;\n var rows = Array.from(tableDom.rows);\n tableNode.forEach(function (row, offset, index) {\n var rowHeight = parseStyle(row.attrs.style).height;\n if (rowHeight && !/px$/.test(rowHeight)) {\n tr.setNodeMarkup(tablePos + offset + 1, null, setNodeStyle(row.attrs, 'height', calcStyle(rows[index]).height));\n }\n });\n var colgroup = tableDom.firstChild;\n var cols = Array.from((colgroup && colgroup.children) || []);\n var widthChanged = false;\n cols.forEach(function (col, i) {\n if (col.style.width && !/px$/.test(col.style.width)) {\n col.style.width = calcStyle(cols[i]).width;\n widthChanged = true;\n }\n });\n var tableAttrs = __assign({}, attrs);\n if (widthChanged) {\n tableAttrs[colgroupAttr] = colgroup.outerHTML;\n }\n return tableAttrs;\n};\nvar tableSize = function (table) {\n var cols = Array.from(table.firstChild.children);\n var colsWidth = cols.map(function (c) { return c.offsetWidth; });\n var rowsHeight = Array.from(table.rows).map(function (row) { return row.offsetHeight; });\n var width = colsWidth.reduce(function (acc, cur) { return acc + cur; }, 0);\n var height = rowsHeight.reduce(function (acc, cur) { return acc + cur; }, 0);\n var offsetHeight = table.offsetHeight;\n var offsetWidth = table.offsetWidth;\n return { width: width, height: height, colsWidth: colsWidth, rowsHeight: rowsHeight, offsetWidth: offsetWidth, offsetHeight: offsetHeight };\n};\nvar handleMouseUp = function (view) {\n var _a = key.getState(view.state), dragging = _a.dragging, nodePosition = _a.nodePosition, activeHandle = _a.activeHandle;\n if (dragging) {\n var node = view.state.doc.nodeAt(nodePosition);\n var dom = getTable(view.nodeDOM(nodePosition));\n var rect = tableSize(dom);\n if (node) {\n var width = rect.offsetWidth + 'px';\n var height = rect.offsetHeight + 'px';\n var tr = view.state.tr;\n var attrs = node.attrs;\n var parsedStyles = parseStyle(attrs.style);\n if (horizontalDir[activeHandle] && dom.style.width && parsedStyles.width !== width) {\n attrs = setNodeStyle(attrs, 'width', width);\n }\n if (verticalDir[activeHandle] && dom.style.height && parsedStyles.height !== height) {\n attrs = setNodeStyle(attrs, 'height', height);\n }\n attrs = toPixels(view, tr, nodePosition, attrs);\n tr.setNodeMarkup(nodePosition, null, attrs);\n tr.setMeta('commandName', 'node-resize');\n tr.setMeta('args', attrs);\n tr.setMeta(key, {\n setDragging: null,\n activeHandle: null,\n nodePosition: nodePosition\n });\n if (!/%/.test(parseStyle(attrs.style).width || '')) {\n var $pos = tr.doc.resolve(nodePosition);\n var wrapper = parentNode($pos, function (n) { return n.type.name === 'table_wrapper'; });\n if (wrapper && /%/.test(parseStyle(wrapper.node.attrs.style).width || '')) {\n var wrapperAttrs = setNodeStyle(wrapper.node.attrs, 'width', '');\n var wrapperPos = $pos.start(wrapper.depth) - 1;\n tr.setNodeMarkup(wrapperPos, null, wrapperAttrs);\n }\n }\n view.dispatch(tr);\n }\n }\n};\nvar handleMouseDown = function (view, event) {\n var target = event.target;\n var activeHandle = target.getAttribute(dataResizeDirTable);\n if (!activeHandle) {\n return false;\n }\n var resizeState = key.getState(view.state);\n event.preventDefault();\n var transaction = view.state.tr;\n transaction.setMeta(key, {\n setDragging: { startX: event.clientX, startY: event.clientY },\n activeHandle: activeHandle,\n nodePosition: resizeState.nodePosition\n });\n transaction.setMeta('addToHistory', false);\n toPercents(view, transaction, resizeState.nodePosition);\n view.dispatch(transaction);\n var curWindow = event.view || window;\n function move(e) {\n handleMouseMove(view, e);\n }\n function finish(_e) {\n curWindow.removeEventListener('mouseup', finish);\n curWindow.removeEventListener('mousemove', move);\n handleMouseUp(view);\n }\n curWindow.addEventListener('mouseup', finish);\n curWindow.addEventListener('mousemove', move);\n return true;\n};\nexport var tableResizing = function (options) {\n if (options === void 0) { options = { node: 'table' }; }\n return new Plugin({\n key: key,\n view: function (_viewObj) { return ({\n selectedNode: function (state, nodeType) {\n var selection = state.selection;\n var isNodeSelected = selection instanceof NodeSelection && nodeType === selection.node.type;\n if (isNodeSelected && selection instanceof NodeSelection) {\n return { node: selection.node, pos: selection.from };\n }\n var parent = parentNode(selection.$from, function (n) { return n.type === nodeType; });\n var node = parent && parent.node;\n if (node) {\n var pos = selection.$from.start(parent.depth) - 1;\n return { node: node, pos: pos };\n }\n return null;\n },\n update: function (view, prevState) {\n var _a, _b, _c, _d, _f;\n var state = view.state;\n var nodeType = state.schema.nodes[options.node];\n var selected = this.selectedNode(state, nodeType);\n var prevSelected = this.selectedNode(prevState, nodeType);\n if (!selected && prevSelected && !prevState.doc.eq(view.state.doc)) {\n // selected table is deleted\n return;\n }\n if (selected || prevSelected) {\n var tr = state.tr;\n tr.setMeta('addToHistory', false);\n if (selected && prevSelected && selected.pos !== prevSelected.pos) {\n tr.setMeta(key, { nodePosition: selected.pos });\n var prevNode = tr.doc.nodeAt(prevSelected.pos);\n if (prevNode && prevNode.type.name === nodeType.name) {\n tr.setNodeMarkup(prevSelected.pos, nodeType, __assign(__assign({}, prevSelected.node.attrs), (_a = {}, _a[resizableAttr] = false, _a)));\n }\n tr.setNodeMarkup(selected.pos, nodeType, __assign(__assign({}, selected.node.attrs), (_b = {}, _b[resizableAttr] = true, _b)));\n view.dispatch(tr);\n }\n else if (selected && prevSelected && selected.pos === prevSelected.pos &&\n !selected.node.attrs[resizableAttr] && !state.selection.eq(prevState.selection)) {\n tr.setMeta(key, { nodePosition: selected.pos });\n view.dispatch(tr.setNodeMarkup(selected.pos, nodeType, __assign(__assign({}, selected.node.attrs), (_c = {}, _c[resizableAttr] = true, _c))));\n }\n else if (selected && !prevSelected) {\n tr.setMeta(key, { nodePosition: selected.pos });\n view.dispatch(tr.setNodeMarkup(selected.pos, nodeType, __assign(__assign({}, selected.node.attrs), (_d = {}, _d[resizableAttr] = true, _d))));\n }\n else if (!selected && prevSelected) {\n tr.setMeta(key, { nodePosition: -1 });\n view.dispatch(tr.setNodeMarkup(prevSelected.pos, nodeType, __assign(__assign({}, prevSelected.node.attrs), (_f = {}, _f[resizableAttr] = false, _f))));\n }\n }\n }\n }); },\n state: {\n init: function () {\n return new ResizeState('', null, -1);\n },\n apply: function (tr, prev) {\n return prev.apply(tr);\n }\n },\n props: {\n handleDOMEvents: {\n mousedown: function (view, event) {\n return handleMouseDown(view, event);\n }\n }\n }\n });\n};\n","import { Plugin } from 'prosemirror-state';\nimport { TableMap, tableNodeTypes } from 'prosemirror-tables';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\nimport { cellIndexes, domCellAround, otherResizeHandle, otherResizing, setNodeStyle, tableRowResizeKey as key, edgeCell } from './utils';\nimport { parseStyle } from './../../utils';\nvar TableRowView = /** @class */ (function () {\n function TableRowView() {\n }\n TableRowView.prototype.ignoreMutation = function (record) {\n return record.type === 'attributes' && record.attributeName === 'style' && record.target.nodeName === 'TR';\n };\n return TableRowView;\n}());\nexport function rowResizing() {\n var handleWidth = 5;\n var plugin = new Plugin({\n key: key,\n state: {\n init: function (_, state) {\n this.spec.props.nodeViews[tableNodeTypes(state.schema).row.name] = function (_node, _view) { return new TableRowView(); };\n return new ResizeState(-1, null);\n },\n apply: function (tr, prev) {\n return prev.apply(tr);\n }\n },\n props: {\n attributes: function (state) {\n if (otherResizeHandle(key, state)) {\n return null;\n }\n var pluginState = key.getState(state);\n return pluginState.activeHandle > -1 ? { class: 'resize-cursor-vertical' } : null;\n },\n handleDOMEvents: {\n mousemove: function (view, event) {\n if (!otherResizing(key, view.state)) {\n handleMouseMove(view, event, handleWidth);\n }\n return false;\n },\n mouseleave: function (view) {\n handleMouseLeave(view);\n return false;\n },\n mousedown: function (view, event) {\n return handleMouseDown(view, event);\n }\n },\n decorations: function (state) {\n if (otherResizing(key, state)) {\n return DecorationSet.empty;\n }\n var pluginState = key.getState(state);\n if (pluginState.activeHandle > -1) {\n return handleDecorations(state, pluginState.activeHandle);\n }\n },\n nodeViews: {}\n }\n });\n return plugin;\n}\nfunction pointsAtCell($pos) {\n return $pos.parent.type.spec.tableRole === 'row' && $pos.nodeAfter;\n}\nvar ResizeState = /** @class */ (function () {\n function ResizeState(activeHandle, dragging) {\n this.activeHandle = activeHandle;\n this.dragging = dragging;\n }\n ResizeState.prototype.apply = function (tr) {\n var state = this, action = tr.getMeta(key);\n if (action && action.setHandle != null) {\n return new ResizeState(action.setHandle, null);\n }\n if (action && action.setDragging !== undefined) {\n return new ResizeState(state.activeHandle, action.setDragging);\n }\n if (state.activeHandle > -1) {\n var handle = tr.mapping.map(state.activeHandle, -1);\n if (!pointsAtCell(tr.doc.resolve(handle))) {\n handle = null;\n }\n state = new ResizeState(handle, state.dragging);\n }\n return state;\n };\n return ResizeState;\n}());\nfunction handleMouseMove(view, event, handleWidth) {\n var pluginState = key.getState(view.state);\n if (!pluginState.dragging) {\n var target = domCellAround(event.target), cell = -1;\n if (target) {\n var indexes = cellIndexes(target);\n var _a = target.getBoundingClientRect(), top_1 = _a.top, bottom = _a.bottom;\n if (Math.abs(event.clientY - top_1) <= handleWidth && indexes.rowIndex > 0) {\n indexes.rowIndex -= target.rowSpan;\n cell = edgeCell(view, event, indexes);\n }\n else if (bottom - event.clientY > 0 && bottom - event.clientY <= handleWidth) {\n cell = edgeCell(view, event, indexes);\n }\n }\n if (cell !== pluginState.activeHandle) {\n updateHandle(view, cell);\n }\n }\n}\nfunction handleMouseLeave(view) {\n var pluginState = key.getState(view.state);\n if (pluginState.activeHandle > -1 && !pluginState.dragging) {\n updateHandle(view, -1);\n }\n}\nfunction handleMouseDown(view, event) {\n var pluginState = key.getState(view.state);\n if (pluginState.activeHandle === -1 || pluginState.dragging) {\n return false;\n }\n var doc = view.state.doc;\n var $cell = doc.resolve(pluginState.activeHandle);\n var row = $cell.parent;\n var table = $cell.node(-1);\n var rowHeightStr = parseStyle(row.attrs.style).height;\n var tableHeight = parseStyle(table.attrs.style).height;\n var rowHeight = rowHeightStr ? parseFloat(rowHeightStr) : 0;\n if (!rowHeightStr) {\n var tr = view.nodeDOM(pluginState.activeHandle);\n rowHeight = tr.offsetHeight;\n }\n view.dispatch(view.state.tr.setMeta(key, {\n setDragging: {\n startY: event.clientY,\n startHeight: { rowHeight: rowHeight, tableHeight: tableHeight }\n }\n }));\n function finish(ev) {\n ev.view.removeEventListener('mouseup', finish);\n ev.view.removeEventListener('mousemove', move);\n var curPluginState = key.getState(view.state);\n if (curPluginState.dragging) {\n var tr = view.state.tr.setMeta(key, { setDragging: null });\n updateRowHeight(view, tr, curPluginState.activeHandle);\n view.dispatch(tr);\n }\n }\n function move(ev) {\n if (!ev.which) {\n return finish(ev);\n }\n var curPluginState = key.getState(view.state);\n var dragged = draggedHeight(curPluginState.dragging, ev);\n var offset = ev.clientY - curPluginState.dragging.startY;\n displayRowHeight(view, curPluginState.activeHandle, dragged, offset, tableHeight);\n }\n event.view.addEventListener('mouseup', finish);\n event.view.addEventListener('mousemove', move);\n event.preventDefault();\n return true;\n}\nfunction draggedHeight(dragging, event) {\n var offset = event.clientY - dragging.startY;\n return dragging.startHeight.rowHeight + offset;\n}\nfunction updateHandle(view, value) {\n var tr = view.state.tr;\n tr.setMeta('addToHistory', false);\n tr.setMeta(key, { setHandle: value });\n view.dispatch(tr);\n}\nfunction updateRowHeight(view, tr, cellPos) {\n var doc = view.state.doc;\n var $cell = doc.resolve(cellPos);\n var row = $cell.parent;\n var rowPos = $cell.posAtIndex(0) - 1;\n var dom = view.nodeDOM(rowPos);\n var win = (dom.ownerDocument && dom.ownerDocument.defaultView) || window;\n dom.style.height = win.getComputedStyle(dom).height;\n tr.setNodeMarkup(rowPos, null, setNodeStyle(row.attrs, 'height', dom.style.height));\n var table = dom && dom.closest('table');\n var tableHeight = table && table.style.height;\n if (tableHeight) {\n var $pos = doc.resolve(rowPos);\n var tablePos = $pos.start($pos.depth) - 1;\n tr.setNodeMarkup(tablePos, null, setNodeStyle($pos.parent.attrs, 'height', tableHeight));\n }\n}\nfunction displayRowHeight(view, cellPos, height, offset, tableHeight) {\n var cell = view.nodeDOM(cellPos);\n var row = cell && cell.parentNode;\n if (row) {\n row.style.height = height + 'px';\n var win = (row.ownerDocument && row.ownerDocument.defaultView) || window;\n row.style.height = win.getComputedStyle(row).height;\n var table = row.closest('table');\n var newHeight = (parseFloat(tableHeight) + offset) + 'px';\n var current = table && table.style.height;\n if (current && current !== newHeight) {\n table.style.height = (parseFloat(tableHeight) + offset) + 'px';\n table.style.height = win.getComputedStyle(table).height;\n }\n }\n}\nfunction handleDecorations(state, cell) {\n var decorations = [];\n if (typeof cell !== 'number') {\n return DecorationSet.empty;\n }\n var $cell = state.doc.resolve(cell), table = $cell.node(-1), map = TableMap.get(table), start = $cell.start(-1);\n var cellsPositions = [];\n var cellPos = cell - start;\n var rowIndex = -1;\n for (var i = 0; i < map.height; i++) {\n cellsPositions.push(map.map.slice(i * map.width, (i * map.width) + map.width));\n if (cellsPositions[i].indexOf(cellPos) !== -1) {\n rowIndex = i;\n }\n }\n var cells = [];\n cellsPositions[rowIndex].forEach(function (c, i) {\n if (!cellsPositions[rowIndex + 1] || c !== cellsPositions[rowIndex + 1][i]) {\n cells.push(c);\n }\n });\n cells.forEach(function (cPos) {\n var cellNode = table.nodeAt(cPos);\n var widgetPos = start + cPos + (cellNode ? cellNode.nodeSize : 0) - 1;\n var dom = document.createElement('div');\n dom.className = 'row-resize-handle';\n decorations.push(Decoration.widget(widgetPos, dom));\n });\n return DecorationSet.create(state.doc, decorations);\n}\n","import { columnResizing } from './column-resize';\nimport { tableResizing as tableResize } from './table-resize';\nimport { rowResizing } from './row-resize';\nexport var tableResizing = function () { return [\n tableResize(),\n columnResizing(),\n rowResizing()\n]; };\nexport { tableResizeKey, tableColumnResizeKey, tableRowResizeKey } from './utils';\n","import { Plugin } from 'prosemirror-state';\nimport { dropPoint } from 'prosemirror-transform';\n\n/**\nCreate a plugin that, when added to a ProseMirror instance,\ncauses a decoration to show up at the drop position when something\nis dragged over the editor.\n\nNodes may add a `disableDropCursor` property to their spec to\ncontrol the showing of a drop cursor inside them. This may be a\nboolean or a function, which will be called with a view and a\nposition, and should return a boolean.\n*/\nfunction dropCursor(options = {}) {\n return new Plugin({\n view(editorView) { return new DropCursorView(editorView, options); }\n });\n}\nclass DropCursorView {\n constructor(editorView, options) {\n var _a;\n this.editorView = editorView;\n this.cursorPos = null;\n this.element = null;\n this.timeout = -1;\n this.width = (_a = options.width) !== null && _a !== void 0 ? _a : 1;\n this.color = options.color === false ? undefined : (options.color || \"black\");\n this.class = options.class;\n this.handlers = [\"dragover\", \"dragend\", \"drop\", \"dragleave\"].map(name => {\n let handler = (e) => { this[name](e); };\n editorView.dom.addEventListener(name, handler);\n return { name, handler };\n });\n }\n destroy() {\n this.handlers.forEach(({ name, handler }) => this.editorView.dom.removeEventListener(name, handler));\n }\n update(editorView, prevState) {\n if (this.cursorPos != null && prevState.doc != editorView.state.doc) {\n if (this.cursorPos > editorView.state.doc.content.size)\n this.setCursor(null);\n else\n this.updateOverlay();\n }\n }\n setCursor(pos) {\n if (pos == this.cursorPos)\n return;\n this.cursorPos = pos;\n if (pos == null) {\n this.element.parentNode.removeChild(this.element);\n this.element = null;\n }\n else {\n this.updateOverlay();\n }\n }\n updateOverlay() {\n let $pos = this.editorView.state.doc.resolve(this.cursorPos);\n let isBlock = !$pos.parent.inlineContent, rect;\n if (isBlock) {\n let before = $pos.nodeBefore, after = $pos.nodeAfter;\n if (before || after) {\n let node = this.editorView.nodeDOM(this.cursorPos - (before ? before.nodeSize : 0));\n if (node) {\n let nodeRect = node.getBoundingClientRect();\n let top = before ? nodeRect.bottom : nodeRect.top;\n if (before && after)\n top = (top + this.editorView.nodeDOM(this.cursorPos).getBoundingClientRect().top) / 2;\n rect = { left: nodeRect.left, right: nodeRect.right, top: top - this.width / 2, bottom: top + this.width / 2 };\n }\n }\n }\n if (!rect) {\n let coords = this.editorView.coordsAtPos(this.cursorPos);\n rect = { left: coords.left - this.width / 2, right: coords.left + this.width / 2, top: coords.top, bottom: coords.bottom };\n }\n let parent = this.editorView.dom.offsetParent;\n if (!this.element) {\n this.element = parent.appendChild(document.createElement(\"div\"));\n if (this.class)\n this.element.className = this.class;\n this.element.style.cssText = \"position: absolute; z-index: 50; pointer-events: none;\";\n if (this.color) {\n this.element.style.backgroundColor = this.color;\n }\n }\n this.element.classList.toggle(\"prosemirror-dropcursor-block\", isBlock);\n this.element.classList.toggle(\"prosemirror-dropcursor-inline\", !isBlock);\n let parentLeft, parentTop;\n if (!parent || parent == document.body && getComputedStyle(parent).position == \"static\") {\n parentLeft = -pageXOffset;\n parentTop = -pageYOffset;\n }\n else {\n let rect = parent.getBoundingClientRect();\n parentLeft = rect.left - parent.scrollLeft;\n parentTop = rect.top - parent.scrollTop;\n }\n this.element.style.left = (rect.left - parentLeft) + \"px\";\n this.element.style.top = (rect.top - parentTop) + \"px\";\n this.element.style.width = (rect.right - rect.left) + \"px\";\n this.element.style.height = (rect.bottom - rect.top) + \"px\";\n }\n scheduleRemoval(timeout) {\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => this.setCursor(null), timeout);\n }\n dragover(event) {\n if (!this.editorView.editable)\n return;\n let pos = this.editorView.posAtCoords({ left: event.clientX, top: event.clientY });\n let node = pos && pos.inside >= 0 && this.editorView.state.doc.nodeAt(pos.inside);\n let disableDropCursor = node && node.type.spec.disableDropCursor;\n let disabled = typeof disableDropCursor == \"function\" ? disableDropCursor(this.editorView, pos, event) : disableDropCursor;\n if (pos && !disabled) {\n let target = pos.pos;\n if (this.editorView.dragging && this.editorView.dragging.slice) {\n let point = dropPoint(this.editorView.state.doc, target, this.editorView.dragging.slice);\n if (point != null)\n target = point;\n }\n this.setCursor(target);\n this.scheduleRemoval(5000);\n }\n }\n dragend() {\n this.scheduleRemoval(20);\n }\n drop() {\n this.scheduleRemoval(20);\n }\n dragleave(event) {\n if (event.target == this.editorView.dom || !this.editorView.dom.contains(event.relatedTarget))\n this.setCursor(null);\n }\n}\n\nexport { dropCursor };\n","import { keydownHandler } from 'prosemirror-keymap';\nimport { Selection, NodeSelection, TextSelection, Plugin } from 'prosemirror-state';\nimport { Slice, Fragment } from 'prosemirror-model';\nimport { DecorationSet, Decoration } from 'prosemirror-view';\n\n/**\nGap cursor selections are represented using this class. Its\n`$anchor` and `$head` properties both point at the cursor position.\n*/\nclass GapCursor extends Selection {\n /**\n Create a gap cursor.\n */\n constructor($pos) {\n super($pos, $pos);\n }\n map(doc, mapping) {\n let $pos = doc.resolve(mapping.map(this.head));\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n content() { return Slice.empty; }\n eq(other) {\n return other instanceof GapCursor && other.head == this.head;\n }\n toJSON() {\n return { type: \"gapcursor\", pos: this.head };\n }\n /**\n @internal\n */\n static fromJSON(doc, json) {\n if (typeof json.pos != \"number\")\n throw new RangeError(\"Invalid input for GapCursor.fromJSON\");\n return new GapCursor(doc.resolve(json.pos));\n }\n /**\n @internal\n */\n getBookmark() { return new GapBookmark(this.anchor); }\n /**\n @internal\n */\n static valid($pos) {\n let parent = $pos.parent;\n if (parent.isTextblock || !closedBefore($pos) || !closedAfter($pos))\n return false;\n let override = parent.type.spec.allowGapCursor;\n if (override != null)\n return override;\n let deflt = parent.contentMatchAt($pos.index()).defaultType;\n return deflt && deflt.isTextblock;\n }\n /**\n @internal\n */\n static findGapCursorFrom($pos, dir, mustMove = false) {\n search: for (;;) {\n if (!mustMove && GapCursor.valid($pos))\n return $pos;\n let pos = $pos.pos, next = null;\n // Scan up from this position\n for (let d = $pos.depth;; d--) {\n let parent = $pos.node(d);\n if (dir > 0 ? $pos.indexAfter(d) < parent.childCount : $pos.index(d) > 0) {\n next = parent.child(dir > 0 ? $pos.indexAfter(d) : $pos.index(d) - 1);\n break;\n }\n else if (d == 0) {\n return null;\n }\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n // And then down into the next node\n for (;;) {\n let inside = dir > 0 ? next.firstChild : next.lastChild;\n if (!inside) {\n if (next.isAtom && !next.isText && !NodeSelection.isSelectable(next)) {\n $pos = $pos.doc.resolve(pos + next.nodeSize * dir);\n mustMove = false;\n continue search;\n }\n break;\n }\n next = inside;\n pos += dir;\n let $cur = $pos.doc.resolve(pos);\n if (GapCursor.valid($cur))\n return $cur;\n }\n return null;\n }\n }\n}\nGapCursor.prototype.visible = false;\nGapCursor.findFrom = GapCursor.findGapCursorFrom;\nSelection.jsonID(\"gapcursor\", GapCursor);\nclass GapBookmark {\n constructor(pos) {\n this.pos = pos;\n }\n map(mapping) {\n return new GapBookmark(mapping.map(this.pos));\n }\n resolve(doc) {\n let $pos = doc.resolve(this.pos);\n return GapCursor.valid($pos) ? new GapCursor($pos) : Selection.near($pos);\n }\n}\nfunction closedBefore($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.index(d), parent = $pos.node(d);\n // At the start of this parent, look at next one\n if (index == 0) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n // See if the node before (or its first ancestor) is closed\n for (let before = parent.child(index - 1);; before = before.lastChild) {\n if ((before.childCount == 0 && !before.inlineContent) || before.isAtom || before.type.spec.isolating)\n return true;\n if (before.inlineContent)\n return false;\n }\n }\n // Hit start of document\n return true;\n}\nfunction closedAfter($pos) {\n for (let d = $pos.depth; d >= 0; d--) {\n let index = $pos.indexAfter(d), parent = $pos.node(d);\n if (index == parent.childCount) {\n if (parent.type.spec.isolating)\n return true;\n continue;\n }\n for (let after = parent.child(index);; after = after.firstChild) {\n if ((after.childCount == 0 && !after.inlineContent) || after.isAtom || after.type.spec.isolating)\n return true;\n if (after.inlineContent)\n return false;\n }\n }\n return true;\n}\n\n/**\nCreate a gap cursor plugin. When enabled, this will capture clicks\nnear and arrow-key-motion past places that don't have a normally\nselectable position nearby, and create a gap cursor selection for\nthem. The cursor is drawn as an element with class\n`ProseMirror-gapcursor`. You can either include\n`style/gapcursor.css` from the package's directory or add your own\nstyles to make it visible.\n*/\nfunction gapCursor() {\n return new Plugin({\n props: {\n decorations: drawGapCursor,\n createSelectionBetween(_view, $anchor, $head) {\n return $anchor.pos == $head.pos && GapCursor.valid($head) ? new GapCursor($head) : null;\n },\n handleClick,\n handleKeyDown,\n handleDOMEvents: { beforeinput: beforeinput }\n }\n });\n}\nconst handleKeyDown = keydownHandler({\n \"ArrowLeft\": arrow(\"horiz\", -1),\n \"ArrowRight\": arrow(\"horiz\", 1),\n \"ArrowUp\": arrow(\"vert\", -1),\n \"ArrowDown\": arrow(\"vert\", 1)\n});\nfunction arrow(axis, dir) {\n const dirStr = axis == \"vert\" ? (dir > 0 ? \"down\" : \"up\") : (dir > 0 ? \"right\" : \"left\");\n return function (state, dispatch, view) {\n let sel = state.selection;\n let $start = dir > 0 ? sel.$to : sel.$from, mustMove = sel.empty;\n if (sel instanceof TextSelection) {\n if (!view.endOfTextblock(dirStr) || $start.depth == 0)\n return false;\n mustMove = false;\n $start = state.doc.resolve(dir > 0 ? $start.after() : $start.before());\n }\n let $found = GapCursor.findGapCursorFrom($start, dir, mustMove);\n if (!$found)\n return false;\n if (dispatch)\n dispatch(state.tr.setSelection(new GapCursor($found)));\n return true;\n };\n}\nfunction handleClick(view, pos, event) {\n if (!view || !view.editable)\n return false;\n let $pos = view.state.doc.resolve(pos);\n if (!GapCursor.valid($pos))\n return false;\n let clickPos = view.posAtCoords({ left: event.clientX, top: event.clientY });\n if (clickPos && clickPos.inside > -1 && NodeSelection.isSelectable(view.state.doc.nodeAt(clickPos.inside)))\n return false;\n view.dispatch(view.state.tr.setSelection(new GapCursor($pos)));\n return true;\n}\n// This is a hack that, when a composition starts while a gap cursor\n// is active, quickly creates an inline context for the composition to\n// happen in, to avoid it being aborted by the DOM selection being\n// moved into a valid position.\nfunction beforeinput(view, event) {\n if (event.inputType != \"insertCompositionText\" || !(view.state.selection instanceof GapCursor))\n return false;\n let { $from } = view.state.selection;\n let insert = $from.parent.contentMatchAt($from.index()).findWrapping(view.state.schema.nodes.text);\n if (!insert)\n return false;\n let frag = Fragment.empty;\n for (let i = insert.length - 1; i >= 0; i--)\n frag = Fragment.from(insert[i].createAndFill(null, frag));\n let tr = view.state.tr.replace($from.pos, $from.pos, new Slice(frag, 0, 0));\n tr.setSelection(TextSelection.near(tr.doc.resolve($from.pos + 1)));\n view.dispatch(tr);\n return false;\n}\nfunction drawGapCursor(state) {\n if (!(state.selection instanceof GapCursor))\n return null;\n let node = document.createElement(\"div\");\n node.className = \"ProseMirror-gapcursor\";\n return DecorationSet.create(state.doc, [Decoration.widget(state.selection.head, node, { key: \"gapcursor\" })]);\n}\n\nexport { GapCursor, gapCursor };\n","var GOOD_LEAF_SIZE = 200;\n\n// :: class A rope sequence is a persistent sequence data structure\n// that supports appending, prepending, and slicing without doing a\n// full copy. It is represented as a mostly-balanced tree.\nvar RopeSequence = function RopeSequence () {};\n\nRopeSequence.prototype.append = function append (other) {\n if (!other.length) { return this }\n other = RopeSequence.from(other);\n\n return (!this.length && other) ||\n (other.length < GOOD_LEAF_SIZE && this.leafAppend(other)) ||\n (this.length < GOOD_LEAF_SIZE && other.leafPrepend(this)) ||\n this.appendInner(other)\n};\n\n// :: (union<[T], RopeSequence>) → RopeSequence\n// Prepend an array or other rope to this one, returning a new rope.\nRopeSequence.prototype.prepend = function prepend (other) {\n if (!other.length) { return this }\n return RopeSequence.from(other).append(this)\n};\n\nRopeSequence.prototype.appendInner = function appendInner (other) {\n return new Append(this, other)\n};\n\n// :: (?number, ?number) → RopeSequence\n// Create a rope repesenting a sub-sequence of this rope.\nRopeSequence.prototype.slice = function slice (from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from >= to) { return RopeSequence.empty }\n return this.sliceInner(Math.max(0, from), Math.min(this.length, to))\n};\n\n// :: (number) → T\n// Retrieve the element at the given position from this rope.\nRopeSequence.prototype.get = function get (i) {\n if (i < 0 || i >= this.length) { return undefined }\n return this.getInner(i)\n};\n\n// :: ((element: T, index: number) → ?bool, ?number, ?number)\n// Call the given function for each element between the given\n// indices. This tends to be more efficient than looping over the\n// indices and calling `get`, because it doesn't have to descend the\n// tree for every element.\nRopeSequence.prototype.forEach = function forEach (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n if (from <= to)\n { this.forEachInner(f, from, to, 0); }\n else\n { this.forEachInvertedInner(f, from, to, 0); }\n};\n\n// :: ((element: T, index: number) → U, ?number, ?number) → [U]\n// Map the given functions over the elements of the rope, producing\n// a flat array.\nRopeSequence.prototype.map = function map (f, from, to) {\n if ( from === void 0 ) from = 0;\n if ( to === void 0 ) to = this.length;\n\n var result = [];\n this.forEach(function (elt, i) { return result.push(f(elt, i)); }, from, to);\n return result\n};\n\n// :: (?union<[T], RopeSequence>) → RopeSequence\n// Create a rope representing the given array, or return the rope\n// itself if a rope was given.\nRopeSequence.from = function from (values) {\n if (values instanceof RopeSequence) { return values }\n return values && values.length ? new Leaf(values) : RopeSequence.empty\n};\n\nvar Leaf = /*@__PURE__*/(function (RopeSequence) {\n function Leaf(values) {\n RopeSequence.call(this);\n this.values = values;\n }\n\n if ( RopeSequence ) Leaf.__proto__ = RopeSequence;\n Leaf.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Leaf.prototype.constructor = Leaf;\n\n var prototypeAccessors = { length: { configurable: true },depth: { configurable: true } };\n\n Leaf.prototype.flatten = function flatten () {\n return this.values\n };\n\n Leaf.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n return new Leaf(this.values.slice(from, to))\n };\n\n Leaf.prototype.getInner = function getInner (i) {\n return this.values[i]\n };\n\n Leaf.prototype.forEachInner = function forEachInner (f, from, to, start) {\n for (var i = from; i < to; i++)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n for (var i = from - 1; i >= to; i--)\n { if (f(this.values[i], start + i) === false) { return false } }\n };\n\n Leaf.prototype.leafAppend = function leafAppend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(this.values.concat(other.flatten())) }\n };\n\n Leaf.prototype.leafPrepend = function leafPrepend (other) {\n if (this.length + other.length <= GOOD_LEAF_SIZE)\n { return new Leaf(other.flatten().concat(this.values)) }\n };\n\n prototypeAccessors.length.get = function () { return this.values.length };\n\n prototypeAccessors.depth.get = function () { return 0 };\n\n Object.defineProperties( Leaf.prototype, prototypeAccessors );\n\n return Leaf;\n}(RopeSequence));\n\n// :: RopeSequence\n// The empty rope sequence.\nRopeSequence.empty = new Leaf([]);\n\nvar Append = /*@__PURE__*/(function (RopeSequence) {\n function Append(left, right) {\n RopeSequence.call(this);\n this.left = left;\n this.right = right;\n this.length = left.length + right.length;\n this.depth = Math.max(left.depth, right.depth) + 1;\n }\n\n if ( RopeSequence ) Append.__proto__ = RopeSequence;\n Append.prototype = Object.create( RopeSequence && RopeSequence.prototype );\n Append.prototype.constructor = Append;\n\n Append.prototype.flatten = function flatten () {\n return this.left.flatten().concat(this.right.flatten())\n };\n\n Append.prototype.getInner = function getInner (i) {\n return i < this.left.length ? this.left.get(i) : this.right.get(i - this.left.length)\n };\n\n Append.prototype.forEachInner = function forEachInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from < leftLen &&\n this.left.forEachInner(f, from, Math.min(to, leftLen), start) === false)\n { return false }\n if (to > leftLen &&\n this.right.forEachInner(f, Math.max(from - leftLen, 0), Math.min(this.length, to) - leftLen, start + leftLen) === false)\n { return false }\n };\n\n Append.prototype.forEachInvertedInner = function forEachInvertedInner (f, from, to, start) {\n var leftLen = this.left.length;\n if (from > leftLen &&\n this.right.forEachInvertedInner(f, from - leftLen, Math.max(to, leftLen) - leftLen, start + leftLen) === false)\n { return false }\n if (to < leftLen &&\n this.left.forEachInvertedInner(f, Math.min(from, leftLen), to, start) === false)\n { return false }\n };\n\n Append.prototype.sliceInner = function sliceInner (from, to) {\n if (from == 0 && to == this.length) { return this }\n var leftLen = this.left.length;\n if (to <= leftLen) { return this.left.slice(from, to) }\n if (from >= leftLen) { return this.right.slice(from - leftLen, to - leftLen) }\n return this.left.slice(from, leftLen).append(this.right.slice(0, to - leftLen))\n };\n\n Append.prototype.leafAppend = function leafAppend (other) {\n var inner = this.right.leafAppend(other);\n if (inner) { return new Append(this.left, inner) }\n };\n\n Append.prototype.leafPrepend = function leafPrepend (other) {\n var inner = this.left.leafPrepend(other);\n if (inner) { return new Append(inner, this.right) }\n };\n\n Append.prototype.appendInner = function appendInner (other) {\n if (this.left.depth >= Math.max(this.right.depth, other.depth) + 1)\n { return new Append(this.left, new Append(this.right, other)) }\n return new Append(this, other)\n };\n\n return Append;\n}(RopeSequence));\n\nexport default RopeSequence;\n","import RopeSequence from 'rope-sequence';\nimport { Mapping } from 'prosemirror-transform';\nimport { PluginKey, Plugin } from 'prosemirror-state';\n\n// ProseMirror's history isn't simply a way to roll back to a previous\n// state, because ProseMirror supports applying changes without adding\n// them to the history (for example during collaboration).\n//\n// To this end, each 'Branch' (one for the undo history and one for\n// the redo history) keeps an array of 'Items', which can optionally\n// hold a step (an actual undoable change), and always hold a position\n// map (which is needed to move changes below them to apply to the\n// current document).\n//\n// An item that has both a step and a selection bookmark is the start\n// of an 'event' — a group of changes that will be undone or redone at\n// once. (It stores only the bookmark, since that way we don't have to\n// provide a document until the selection is actually applied, which\n// is useful when compressing.)\n// Used to schedule history compression\nconst max_empty_items = 500;\nclass Branch {\n constructor(items, eventCount) {\n this.items = items;\n this.eventCount = eventCount;\n }\n // Pop the latest event off the branch's history and apply it\n // to a document transform.\n popEvent(state, preserveItems) {\n if (this.eventCount == 0)\n return null;\n let end = this.items.length;\n for (;; end--) {\n let next = this.items.get(end - 1);\n if (next.selection) {\n --end;\n break;\n }\n }\n let remap, mapFrom;\n if (preserveItems) {\n remap = this.remapping(end, this.items.length);\n mapFrom = remap.maps.length;\n }\n let transform = state.tr;\n let selection, remaining;\n let addAfter = [], addBefore = [];\n this.items.forEach((item, i) => {\n if (!item.step) {\n if (!remap) {\n remap = this.remapping(end, i + 1);\n mapFrom = remap.maps.length;\n }\n mapFrom--;\n addBefore.push(item);\n return;\n }\n if (remap) {\n addBefore.push(new Item(item.map));\n let step = item.step.map(remap.slice(mapFrom)), map;\n if (step && transform.maybeStep(step).doc) {\n map = transform.mapping.maps[transform.mapping.maps.length - 1];\n addAfter.push(new Item(map, undefined, undefined, addAfter.length + addBefore.length));\n }\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n }\n else {\n transform.maybeStep(item.step);\n }\n if (item.selection) {\n selection = remap ? item.selection.map(remap.slice(mapFrom)) : item.selection;\n remaining = new Branch(this.items.slice(0, end).append(addBefore.reverse().concat(addAfter)), this.eventCount - 1);\n return false;\n }\n }, this.items.length, 0);\n return { remaining: remaining, transform, selection: selection };\n }\n // Create a new branch with the given transform added.\n addTransform(transform, selection, histOptions, preserveItems) {\n let newItems = [], eventCount = this.eventCount;\n let oldItems = this.items, lastItem = !preserveItems && oldItems.length ? oldItems.get(oldItems.length - 1) : null;\n for (let i = 0; i < transform.steps.length; i++) {\n let step = transform.steps[i].invert(transform.docs[i]);\n let item = new Item(transform.mapping.maps[i], step, selection), merged;\n if (merged = lastItem && lastItem.merge(item)) {\n item = merged;\n if (i)\n newItems.pop();\n else\n oldItems = oldItems.slice(0, oldItems.length - 1);\n }\n newItems.push(item);\n if (selection) {\n eventCount++;\n selection = undefined;\n }\n if (!preserveItems)\n lastItem = item;\n }\n let overflow = eventCount - histOptions.depth;\n if (overflow > DEPTH_OVERFLOW) {\n oldItems = cutOffEvents(oldItems, overflow);\n eventCount -= overflow;\n }\n return new Branch(oldItems.append(newItems), eventCount);\n }\n remapping(from, to) {\n let maps = new Mapping;\n this.items.forEach((item, i) => {\n let mirrorPos = item.mirrorOffset != null && i - item.mirrorOffset >= from\n ? maps.maps.length - item.mirrorOffset : undefined;\n maps.appendMap(item.map, mirrorPos);\n }, from, to);\n return maps;\n }\n addMaps(array) {\n if (this.eventCount == 0)\n return this;\n return new Branch(this.items.append(array.map(map => new Item(map))), this.eventCount);\n }\n // When the collab module receives remote changes, the history has\n // to know about those, so that it can adjust the steps that were\n // rebased on top of the remote changes, and include the position\n // maps for the remote changes in its array of items.\n rebased(rebasedTransform, rebasedCount) {\n if (!this.eventCount)\n return this;\n let rebasedItems = [], start = Math.max(0, this.items.length - rebasedCount);\n let mapping = rebasedTransform.mapping;\n let newUntil = rebasedTransform.steps.length;\n let eventCount = this.eventCount;\n this.items.forEach(item => { if (item.selection)\n eventCount--; }, start);\n let iRebased = rebasedCount;\n this.items.forEach(item => {\n let pos = mapping.getMirror(--iRebased);\n if (pos == null)\n return;\n newUntil = Math.min(newUntil, pos);\n let map = mapping.maps[pos];\n if (item.step) {\n let step = rebasedTransform.steps[pos].invert(rebasedTransform.docs[pos]);\n let selection = item.selection && item.selection.map(mapping.slice(iRebased + 1, pos));\n if (selection)\n eventCount++;\n rebasedItems.push(new Item(map, step, selection));\n }\n else {\n rebasedItems.push(new Item(map));\n }\n }, start);\n let newMaps = [];\n for (let i = rebasedCount; i < newUntil; i++)\n newMaps.push(new Item(mapping.maps[i]));\n let items = this.items.slice(0, start).append(newMaps).append(rebasedItems);\n let branch = new Branch(items, eventCount);\n if (branch.emptyItemCount() > max_empty_items)\n branch = branch.compress(this.items.length - rebasedItems.length);\n return branch;\n }\n emptyItemCount() {\n let count = 0;\n this.items.forEach(item => { if (!item.step)\n count++; });\n return count;\n }\n // Compressing a branch means rewriting it to push the air (map-only\n // items) out. During collaboration, these naturally accumulate\n // because each remote change adds one. The `upto` argument is used\n // to ensure that only the items below a given level are compressed,\n // because `rebased` relies on a clean, untouched set of items in\n // order to associate old items with rebased steps.\n compress(upto = this.items.length) {\n let remap = this.remapping(0, upto), mapFrom = remap.maps.length;\n let items = [], events = 0;\n this.items.forEach((item, i) => {\n if (i >= upto) {\n items.push(item);\n if (item.selection)\n events++;\n }\n else if (item.step) {\n let step = item.step.map(remap.slice(mapFrom)), map = step && step.getMap();\n mapFrom--;\n if (map)\n remap.appendMap(map, mapFrom);\n if (step) {\n let selection = item.selection && item.selection.map(remap.slice(mapFrom));\n if (selection)\n events++;\n let newItem = new Item(map.invert(), step, selection), merged, last = items.length - 1;\n if (merged = items.length && items[last].merge(newItem))\n items[last] = merged;\n else\n items.push(newItem);\n }\n }\n else if (item.map) {\n mapFrom--;\n }\n }, this.items.length, 0);\n return new Branch(RopeSequence.from(items.reverse()), events);\n }\n}\nBranch.empty = new Branch(RopeSequence.empty, 0);\nfunction cutOffEvents(items, n) {\n let cutPoint;\n items.forEach((item, i) => {\n if (item.selection && (n-- == 0)) {\n cutPoint = i;\n return false;\n }\n });\n return items.slice(cutPoint);\n}\nclass Item {\n constructor(\n // The (forward) step map for this item.\n map, \n // The inverted step\n step, \n // If this is non-null, this item is the start of a group, and\n // this selection is the starting selection for the group (the one\n // that was active before the first step was applied)\n selection, \n // If this item is the inverse of a previous mapping on the stack,\n // this points at the inverse's offset\n mirrorOffset) {\n this.map = map;\n this.step = step;\n this.selection = selection;\n this.mirrorOffset = mirrorOffset;\n }\n merge(other) {\n if (this.step && other.step && !other.selection) {\n let step = other.step.merge(this.step);\n if (step)\n return new Item(step.getMap().invert(), step, this.selection);\n }\n }\n}\n// The value of the state field that tracks undo/redo history for that\n// state. Will be stored in the plugin state when the history plugin\n// is active.\nclass HistoryState {\n constructor(done, undone, prevRanges, prevTime, prevComposition) {\n this.done = done;\n this.undone = undone;\n this.prevRanges = prevRanges;\n this.prevTime = prevTime;\n this.prevComposition = prevComposition;\n }\n}\nconst DEPTH_OVERFLOW = 20;\n// Record a transformation in undo history.\nfunction applyTransaction(history, state, tr, options) {\n let historyTr = tr.getMeta(historyKey), rebased;\n if (historyTr)\n return historyTr.historyState;\n if (tr.getMeta(closeHistoryKey))\n history = new HistoryState(history.done, history.undone, null, 0, -1);\n let appended = tr.getMeta(\"appendedTransaction\");\n if (tr.steps.length == 0) {\n return history;\n }\n else if (appended && appended.getMeta(historyKey)) {\n if (appended.getMeta(historyKey).redo)\n return new HistoryState(history.done.addTransform(tr, undefined, options, mustPreserveItems(state)), history.undone, rangesFor(tr.mapping.maps[tr.steps.length - 1]), history.prevTime, history.prevComposition);\n else\n return new HistoryState(history.done, history.undone.addTransform(tr, undefined, options, mustPreserveItems(state)), null, history.prevTime, history.prevComposition);\n }\n else if (tr.getMeta(\"addToHistory\") !== false && !(appended && appended.getMeta(\"addToHistory\") === false)) {\n // Group transforms that occur in quick succession into one event.\n let composition = tr.getMeta(\"composition\");\n let newGroup = history.prevTime == 0 ||\n (!appended && history.prevComposition != composition &&\n (history.prevTime < (tr.time || 0) - options.newGroupDelay || !isAdjacentTo(tr, history.prevRanges)));\n let prevRanges = appended ? mapRanges(history.prevRanges, tr.mapping) : rangesFor(tr.mapping.maps[tr.steps.length - 1]);\n return new HistoryState(history.done.addTransform(tr, newGroup ? state.selection.getBookmark() : undefined, options, mustPreserveItems(state)), Branch.empty, prevRanges, tr.time, composition == null ? history.prevComposition : composition);\n }\n else if (rebased = tr.getMeta(\"rebased\")) {\n // Used by the collab module to tell the history that some of its\n // content has been rebased.\n return new HistoryState(history.done.rebased(tr, rebased), history.undone.rebased(tr, rebased), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n else {\n return new HistoryState(history.done.addMaps(tr.mapping.maps), history.undone.addMaps(tr.mapping.maps), mapRanges(history.prevRanges, tr.mapping), history.prevTime, history.prevComposition);\n }\n}\nfunction isAdjacentTo(transform, prevRanges) {\n if (!prevRanges)\n return false;\n if (!transform.docChanged)\n return true;\n let adjacent = false;\n transform.mapping.maps[0].forEach((start, end) => {\n for (let i = 0; i < prevRanges.length; i += 2)\n if (start <= prevRanges[i + 1] && end >= prevRanges[i])\n adjacent = true;\n });\n return adjacent;\n}\nfunction rangesFor(map) {\n let result = [];\n map.forEach((_from, _to, from, to) => result.push(from, to));\n return result;\n}\nfunction mapRanges(ranges, mapping) {\n if (!ranges)\n return null;\n let result = [];\n for (let i = 0; i < ranges.length; i += 2) {\n let from = mapping.map(ranges[i], 1), to = mapping.map(ranges[i + 1], -1);\n if (from <= to)\n result.push(from, to);\n }\n return result;\n}\n// Apply the latest event from one branch to the document and shift the event\n// onto the other branch.\nfunction histTransaction(history, state, dispatch, redo) {\n let preserveItems = mustPreserveItems(state);\n let histOptions = historyKey.get(state).spec.config;\n let pop = (redo ? history.undone : history.done).popEvent(state, preserveItems);\n if (!pop)\n return;\n let selection = pop.selection.resolve(pop.transform.doc);\n let added = (redo ? history.done : history.undone).addTransform(pop.transform, state.selection.getBookmark(), histOptions, preserveItems);\n let newHist = new HistoryState(redo ? added : pop.remaining, redo ? pop.remaining : added, null, 0, -1);\n dispatch(pop.transform.setSelection(selection).setMeta(historyKey, { redo, historyState: newHist }).scrollIntoView());\n}\nlet cachedPreserveItems = false, cachedPreserveItemsPlugins = null;\n// Check whether any plugin in the given state has a\n// `historyPreserveItems` property in its spec, in which case we must\n// preserve steps exactly as they came in, so that they can be\n// rebased.\nfunction mustPreserveItems(state) {\n let plugins = state.plugins;\n if (cachedPreserveItemsPlugins != plugins) {\n cachedPreserveItems = false;\n cachedPreserveItemsPlugins = plugins;\n for (let i = 0; i < plugins.length; i++)\n if (plugins[i].spec.historyPreserveItems) {\n cachedPreserveItems = true;\n break;\n }\n }\n return cachedPreserveItems;\n}\n/**\nSet a flag on the given transaction that will prevent further steps\nfrom being appended to an existing history event (so that they\nrequire a separate undo command to undo).\n*/\nfunction closeHistory(tr) {\n return tr.setMeta(closeHistoryKey, true);\n}\nconst historyKey = new PluginKey(\"history\");\nconst closeHistoryKey = new PluginKey(\"closeHistory\");\n/**\nReturns a plugin that enables the undo history for an editor. The\nplugin will track undo and redo stacks, which can be used with the\n[`undo`](https://prosemirror.net/docs/ref/#history.undo) and [`redo`](https://prosemirror.net/docs/ref/#history.redo) commands.\n\nYou can set an `\"addToHistory\"` [metadata\nproperty](https://prosemirror.net/docs/ref/#state.Transaction.setMeta) of `false` on a transaction\nto prevent it from being rolled back by undo.\n*/\nfunction history(config = {}) {\n config = { depth: config.depth || 100,\n newGroupDelay: config.newGroupDelay || 500 };\n return new Plugin({\n key: historyKey,\n state: {\n init() {\n return new HistoryState(Branch.empty, Branch.empty, null, 0, -1);\n },\n apply(tr, hist, state) {\n return applyTransaction(hist, state, tr, config);\n }\n },\n config,\n props: {\n handleDOMEvents: {\n beforeinput(view, e) {\n let inputType = e.inputType;\n let command = inputType == \"historyUndo\" ? undo : inputType == \"historyRedo\" ? redo : null;\n if (!command)\n return false;\n e.preventDefault();\n return command(view.state, view.dispatch);\n }\n }\n }\n });\n}\n/**\nA command function that undoes the last change, if any.\n*/\nconst undo = (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || hist.done.eventCount == 0)\n return false;\n if (dispatch)\n histTransaction(hist, state, dispatch, false);\n return true;\n};\n/**\nA command function that redoes the last undone change, if any.\n*/\nconst redo = (state, dispatch) => {\n let hist = historyKey.getState(state);\n if (!hist || hist.undone.eventCount == 0)\n return false;\n if (dispatch)\n histTransaction(hist, state, dispatch, true);\n return true;\n};\n/**\nThe amount of undoable events available in a given state.\n*/\nfunction undoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.done.eventCount : 0;\n}\n/**\nThe amount of redoable events available in a given editor state.\n*/\nfunction redoDepth(state) {\n let hist = historyKey.getState(state);\n return hist ? hist.undone.eventCount : 0;\n}\n\nexport { closeHistory, history, redo, redoDepth, undo, undoDepth };\n","import { Plugin } from 'prosemirror-state';\nimport { findWrapping, canJoin } from 'prosemirror-transform';\n\n/**\nInput rules are regular expressions describing a piece of text\nthat, when typed, causes something to happen. This might be\nchanging two dashes into an emdash, wrapping a paragraph starting\nwith `\"> \"` into a blockquote, or something entirely different.\n*/\nclass InputRule {\n // :: (RegExp, union)\n /**\n Create an input rule. The rule applies when the user typed\n something and the text directly in front of the cursor matches\n `match`, which should end with `$`.\n \n The `handler` can be a string, in which case the matched text, or\n the first matched group in the regexp, is replaced by that\n string.\n \n Or a it can be a function, which will be called with the match\n array produced by\n [`RegExp.exec`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec),\n as well as the start and end of the matched range, and which can\n return a [transaction](https://prosemirror.net/docs/ref/#state.Transaction) that describes the\n rule's effect, or null to indicate the input was not handled.\n */\n constructor(\n /**\n @internal\n */\n match, handler) {\n this.match = match;\n this.match = match;\n this.handler = typeof handler == \"string\" ? stringHandler(handler) : handler;\n }\n}\nfunction stringHandler(string) {\n return function (state, match, start, end) {\n let insert = string;\n if (match[1]) {\n let offset = match[0].lastIndexOf(match[1]);\n insert += match[0].slice(offset + match[1].length);\n start += offset;\n let cutOff = start - end;\n if (cutOff > 0) {\n insert = match[0].slice(offset - cutOff, offset) + insert;\n start = end;\n }\n }\n return state.tr.insertText(insert, start, end);\n };\n}\nconst MAX_MATCH = 500;\n/**\nCreate an input rules plugin. When enabled, it will cause text\ninput that matches any of the given rules to trigger the rule's\naction.\n*/\nfunction inputRules({ rules }) {\n let plugin = new Plugin({\n state: {\n init() { return null; },\n apply(tr, prev) {\n let stored = tr.getMeta(this);\n if (stored)\n return stored;\n return tr.selectionSet || tr.docChanged ? null : prev;\n }\n },\n props: {\n handleTextInput(view, from, to, text) {\n return run(view, from, to, text, rules, plugin);\n },\n handleDOMEvents: {\n compositionend: (view) => {\n setTimeout(() => {\n let { $cursor } = view.state.selection;\n if ($cursor)\n run(view, $cursor.pos, $cursor.pos, \"\", rules, plugin);\n });\n }\n }\n },\n isInputRules: true\n });\n return plugin;\n}\nfunction run(view, from, to, text, rules, plugin) {\n if (view.composing)\n return false;\n let state = view.state, $from = state.doc.resolve(from);\n if ($from.parent.type.spec.code)\n return false;\n let textBefore = $from.parent.textBetween(Math.max(0, $from.parentOffset - MAX_MATCH), $from.parentOffset, null, \"\\ufffc\") + text;\n for (let i = 0; i < rules.length; i++) {\n let match = rules[i].match.exec(textBefore);\n let tr = match && rules[i].handler(state, match, from - (match[0].length - text.length), to);\n if (!tr)\n continue;\n view.dispatch(tr.setMeta(plugin, { transform: tr, from, to, text }));\n return true;\n }\n return false;\n}\n/**\nThis is a command that will undo an input rule, if applying such a\nrule was the last thing that the user did.\n*/\nconst undoInputRule = (state, dispatch) => {\n let plugins = state.plugins;\n for (let i = 0; i < plugins.length; i++) {\n let plugin = plugins[i], undoable;\n if (plugin.spec.isInputRules && (undoable = plugin.getState(state))) {\n if (dispatch) {\n let tr = state.tr, toUndo = undoable.transform;\n for (let j = toUndo.steps.length - 1; j >= 0; j--)\n tr.step(toUndo.steps[j].invert(toUndo.docs[j]));\n if (undoable.text) {\n let marks = tr.doc.resolve(undoable.from).marks();\n tr.replaceWith(undoable.from, undoable.to, state.schema.text(undoable.text, marks));\n }\n else {\n tr.delete(undoable.from, undoable.to);\n }\n dispatch(tr);\n }\n return true;\n }\n }\n return false;\n};\n\n/**\nConverts double dashes to an emdash.\n*/\nconst emDash = new InputRule(/--$/, \"—\");\n/**\nConverts three dots to an ellipsis character.\n*/\nconst ellipsis = new InputRule(/\\.\\.\\.$/, \"…\");\n/**\n“Smart” opening double quotes.\n*/\nconst openDoubleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(\")$/, \"“\");\n/**\n“Smart” closing double quotes.\n*/\nconst closeDoubleQuote = new InputRule(/\"$/, \"”\");\n/**\n“Smart” opening single quotes.\n*/\nconst openSingleQuote = new InputRule(/(?:^|[\\s\\{\\[\\(\\<'\"\\u2018\\u201C])(')$/, \"‘\");\n/**\n“Smart” closing single quotes.\n*/\nconst closeSingleQuote = new InputRule(/'$/, \"’\");\n/**\nSmart-quote related input rules.\n*/\nconst smartQuotes = [openDoubleQuote, closeDoubleQuote, openSingleQuote, closeSingleQuote];\n\n/**\nBuild an input rule for automatically wrapping a textblock when a\ngiven string is typed. The `regexp` argument is\ndirectly passed through to the `InputRule` constructor. You'll\nprobably want the regexp to start with `^`, so that the pattern can\nonly occur at the start of a textblock.\n\n`nodeType` is the type of node to wrap in. If it needs attributes,\nyou can either pass them directly, or pass a function that will\ncompute them from the regular expression match.\n\nBy default, if there's a node with the same type above the newly\nwrapped node, the rule will try to [join](https://prosemirror.net/docs/ref/#transform.Transform.join) those\ntwo nodes. You can pass a join predicate, which takes a regular\nexpression match and the node before the wrapped node, and can\nreturn a boolean to indicate whether a join should happen.\n*/\nfunction wrappingInputRule(regexp, nodeType, getAttrs = null, joinPredicate) {\n return new InputRule(regexp, (state, match, start, end) => {\n let attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n let tr = state.tr.delete(start, end);\n let $start = tr.doc.resolve(start), range = $start.blockRange(), wrapping = range && findWrapping(range, nodeType, attrs);\n if (!wrapping)\n return null;\n tr.wrap(range, wrapping);\n let before = tr.doc.resolve(start - 1).nodeBefore;\n if (before && before.type == nodeType && canJoin(tr.doc, start - 1) &&\n (!joinPredicate || joinPredicate(match, before)))\n tr.join(start - 1);\n return tr;\n });\n}\n/**\nBuild an input rule that changes the type of a textblock when the\nmatched text is typed into it. You'll usually want to start your\nregexp with `^` to that it is only matched at the start of a\ntextblock. The optional `getAttrs` parameter can be used to compute\nthe new node's attributes, and works the same as in the\n`wrappingInputRule` function.\n*/\nfunction textblockTypeInputRule(regexp, nodeType, getAttrs = null) {\n return new InputRule(regexp, (state, match, start, end) => {\n let $start = state.doc.resolve(start);\n let attrs = getAttrs instanceof Function ? getAttrs(match) : getAttrs;\n if (!$start.node(-1).canReplaceWith($start.index(-1), $start.indexAfter(-1), nodeType))\n return null;\n return state.tr\n .delete(start, end)\n .setBlockType(start, start, nodeType, attrs);\n });\n}\n\nexport { InputRule, closeDoubleQuote, closeSingleQuote, ellipsis, emDash, inputRules, openDoubleQuote, openSingleQuote, smartQuotes, textblockTypeInputRule, undoInputRule, wrappingInputRule };\n","import { __assign } from \"tslib\";\nimport { addRowAfter as pmAddRowAfter, addRowBefore as pmAddRowBefore, addColumnBefore as pmAddColumnBefore, addColumnAfter as pmAddColumnAfter, deleteColumn as pmDeleteColumn, TableMap } from 'prosemirror-tables';\nimport { colgroupAttr, rowTypeAttr } from './config/constants';\nimport { parseStrColgroup } from './config/schema';\n/**\n * Creates a table.\n * @returns Node\n */\nexport var createTable = function (nodes, rows, columns) {\n var table = nodes.table, table_row = nodes.table_row, table_cell = nodes.table_cell;\n var tableRows = [];\n var cells;\n for (var r = 0; r < rows + 1; r++) {\n cells = [];\n for (var c = 0; c < columns + 1; c++) {\n cells.push(table_cell.createAndFill());\n }\n tableRows.push(table_row.createAndFill(undefined, cells));\n }\n return table.createAndFill(undefined, tableRows);\n};\nvar reTable = /^table$/;\nvar reRow = /^table_row$/;\nvar reCell = /^table_cell|table_header$/;\nvar closest = function (selection, name) {\n var pos = selection.$head;\n for (var i = pos.depth; i > 0; i--) {\n var node = pos.node(i);\n if (name.test(node.type.name)) {\n return {\n pos: pos.before(i),\n node: node\n };\n }\n }\n return null;\n};\nexport var addRowBefore = function (state, dispatch) {\n var cmdDispatch = dispatch && (function (tr) {\n var _a;\n var row = closest(tr.selection, reRow);\n var table = closest(tr.selection, reTable);\n if (row && table && row.node.attrs[rowTypeAttr]) {\n var index = 0;\n for (var i = 0; i < table.node.nodeSize; i++) {\n if (table.node.child(i).eq(row.node)) {\n index = i;\n break;\n }\n }\n var next = table.node.child(index - 1);\n var from = row.pos - next.nodeSize;\n tr.setNodeMarkup(from, undefined, (_a = {}, _a[rowTypeAttr] = row.node.attrs[rowTypeAttr], _a));\n }\n return dispatch(tr);\n });\n return pmAddRowBefore(state, cmdDispatch);\n};\nexport var addRowAfter = function (state, dispatch) {\n var cmdDispatch = dispatch && (function (tr) {\n var _a;\n var row = closest(tr.selection, reRow);\n if (row && row.node.attrs[rowTypeAttr]) {\n var from = row.pos + row.node.nodeSize;\n tr.setNodeMarkup(from, undefined, (_a = {}, _a[rowTypeAttr] = row.node.attrs[rowTypeAttr], _a));\n }\n return dispatch(tr);\n });\n return pmAddRowAfter(state, cmdDispatch);\n};\nvar columnIndex = function (table, selection) {\n if (!table) {\n return -1;\n }\n var map = TableMap.get(table.node);\n var tableCell = closest(selection, reCell);\n var idx = map.map.indexOf(tableCell.pos - table.pos - 1);\n var colIndex = -1;\n if (idx !== -1) {\n colIndex = idx % map.width;\n }\n return colIndex;\n};\nvar addCol = function (tr, table, to) {\n var _a;\n var colIndex = columnIndex(table, tr.selection);\n var colgroup = parseStrColgroup(table.node.attrs[colgroupAttr]);\n colgroup.insertBefore(colgroup.ownerDocument.createElement('col'), colgroup.children[colIndex + to]);\n tr.setNodeMarkup(table.pos, null, __assign(__assign({}, table.node.attrs), (_a = {}, _a[colgroupAttr] = colgroup.outerHTML, _a)));\n};\nvar deleteCol = function (tr, table, colIndex) {\n var _a;\n var colgroup = parseStrColgroup(table.node.attrs[colgroupAttr]);\n colgroup.removeChild(colgroup.children[colIndex]);\n tr.setNodeMarkup(table.pos, null, __assign(__assign({}, table.node.attrs), (_a = {}, _a[colgroupAttr] = colgroup.outerHTML, _a)));\n};\nexport var addColumnBefore = function (state, dispatch) {\n var cmdDispatch = dispatch && (function (tr) {\n var table = closest(tr.selection, reTable);\n if (!table.node.attrs[colgroupAttr]) {\n return dispatch(tr);\n }\n addCol(tr, table, -1);\n return dispatch(tr);\n });\n return pmAddColumnBefore(state, cmdDispatch);\n};\nexport var addColumnAfter = function (state, dispatch) {\n var cmdDispatch = dispatch && (function (tr) {\n var table = closest(tr.selection, reTable);\n if (!table.node.attrs[colgroupAttr]) {\n return dispatch(tr);\n }\n addCol(tr, table, 1);\n return dispatch(tr);\n });\n return pmAddColumnAfter(state, cmdDispatch);\n};\nexport var deleteColumn = function (state, dispatch) {\n var parentTable = closest(state.selection, reTable);\n var colgroup = parentTable && parentTable.node.attrs[colgroupAttr];\n var colIndex = columnIndex(parentTable, state.selection);\n var cmdDispatch = dispatch && (function (tr) {\n if (!colgroup) {\n return dispatch(tr);\n }\n var table = tr.doc.nodeAt(parentTable.pos);\n deleteCol(tr, { node: table, pos: parentTable.pos }, colIndex);\n return dispatch(tr);\n });\n return pmDeleteColumn(state, cmdDispatch);\n};\nexport { pmAddRowBefore, pmAddRowAfter, pmAddColumnBefore, pmAddColumnAfter, pmDeleteColumn };\n","export function saveAs(data, fileName, options) {\n if ( options === void 0 ) options = {};\n\n var save = postToProxy;\n\n if (options.forceProxy && !options.proxyURL) {\n throw new Error('No proxyURL is set, but forceProxy is true');\n }\n\n if (!options.forceProxy) {\n if (canDownload()) {\n save = saveAsDataURI;\n }\n\n if (navigator.msSaveBlob) {\n save = saveAsBlob;\n }\n }\n\n save(data, fileName, options);\n}\n\nvar anchor = function () { return document.createElement('a'); };\nvar canDownload = function () { return 'download' in anchor(); };\n\nfunction saveAsBlob(data, fileName) {\n var blob = data; // could be a Blob object\n\n if (typeof data === 'string') {\n var parts = data.split(';base64,');\n var contentType = parts[0];\n var base64 = atob(parts[1]);\n var array = new Uint8Array(base64.length);\n\n for (var idx = 0; idx < base64.length; idx++) {\n array[idx] = base64.charCodeAt(idx);\n }\n\n blob = new Blob([ array.buffer ], { type: contentType });\n }\n\n navigator.msSaveBlob(blob, fileName);\n}\n\nfunction saveAsDataURI(data, fileName) {\n var dataURI = data;\n if (window.Blob && data instanceof Blob) {\n dataURI = URL.createObjectURL(data);\n }\n\n var fileSaver = anchor();\n fileSaver.download = fileName;\n fileSaver.href = dataURI;\n\n var e = document.createEvent('MouseEvents');\n e.initMouseEvent('click', true, false, window,\n 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n\n fileSaver.dispatchEvent(e);\n setTimeout(function () { return URL.revokeObjectURL(dataURI); });\n}\n\nfunction postToProxy(dataURI, fileName, options) {\n if (!options.proxyURL) {\n return;\n }\n\n var form = document.createElement('form');\n form.setAttribute('action', options.proxyURL);\n form.setAttribute('method', 'POST');\n form.setAttribute('target', options.proxyTarget || '_self');\n\n var formData = options.proxyData || {};\n formData.fileName = fileName;\n\n var parts = dataURI.split(\";base64,\");\n formData.contentType = parts[0].replace(\"data:\", \"\");\n formData.base64 = parts[1];\n\n for (var name in formData) {\n if (formData.hasOwnProperty(name)) {\n var input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', name);\n input.setAttribute('value', formData[name]);\n\n form.appendChild(input);\n }\n }\n\n document.body.appendChild(form);\n form.submit();\n document.body.removeChild(form);\n}\n\n","var KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar fromCharCode = String.fromCharCode;\n\nexport function encodeBase64(plainText) {\n var input = encodeUTF8(plainText);\n var output = \"\";\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}\n\nfunction encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n\n if (c < 0x80) {\n // One byte\n output += fromCharCode(c);\n } else if (c < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (c >>> 6));\n output += fromCharCode(0x80 | (c & 0x3f));\n } else if (c < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (c >>> 12));\n output += fromCharCode(0x80 | (c >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (c & 0x3f));\n }\n }\n\n return output;\n}\n","var defaultData = {\n en: {\n name: \"en\",\n identity: {\n version: {\n _unicodeVersion: \"14.0.0\",\n _cldrVersion: \"41\"\n },\n language: \"en\"\n },\n territory: \"US\",\n numbers: {\n symbols: {\n decimal: \".\",\n group: \",\",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"-\",\n exponential: \"E\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"NaN\",\n timeSeparator: \":\",\n approximatelySign: \"~\"\n },\n decimal: {\n patterns: [\n \"n\"\n ],\n groupSize: [\n 3\n ]\n },\n scientific: {\n patterns: [\n \"nEn\"\n ],\n groupSize: []\n },\n percent: {\n patterns: [\n \"n%\"\n ],\n groupSize: [\n 3\n ]\n },\n currency: {\n patterns: [\n \"$n\"\n ],\n groupSize: [\n 3\n ],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n currencies: {\n BGN: {\n displayName: \"Bulgarian Lev\",\n \"displayName-count-one\": \"Bulgarian lev\",\n \"displayName-count-other\": \"Bulgarian leva\",\n symbol: \"BGN\"\n },\n EUR: {\n displayName: \"Euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euros\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n USD: {\n displayName: \"US Dollar\",\n \"displayName-count-one\": \"US dollar\",\n \"displayName-count-other\": \"US dollars\",\n symbol: \"$\",\n \"symbol-alt-narrow\": \"$\"\n }\n },\n localeCurrency: \"USD\",\n accounting: {\n patterns: [\n \"$n\",\n \"($n)\"\n ],\n groupSize: [\n 3\n ]\n }\n },\n calendar: {\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n patterns: {\n d: \"M/d/y\",\n D: \"EEEE, MMMM d, y\",\n m: \"MMM d\",\n M: \"MMMM d\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, MMMM d, y h:mm:ss a\",\n g: \"M/d/y h:mm a\",\n G: \"M/d/y h:mm:ss a\",\n t: \"h:mm a\",\n T: \"h:mm:ss a\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n EHm: \"E HH:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E HH:mm:ss\",\n Gy: \"y G\",\n GyMd: \"M/d/y GGGGG\",\n GyMMM: \"MMM y G\",\n GyMMMd: \"MMM d, y G\",\n GyMMMEd: \"E, MMM d, y G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"h:mm a\",\n Hm: \"HH:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"M/d\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMd: \"MMM d\",\n MMMEd: \"E, MMM d\",\n MMMMd: \"MMMM d\",\n \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"M/d/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMd: \"MMM d, y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'week' w 'of' Y\",\n \"yw-count-other\": \"'week' w 'of' Y\"\n }\n },\n timeFormats: {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n },\n dateFormats: {\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n narrow: {\n midnight: \"mi\",\n am: \"a\",\n \"am-alt-variant\": \"am\",\n noon: \"n\",\n pm: \"p\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n narrow: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"Before Christ\",\n \"1\": \"Anno Domini\",\n \"0-alt-variant\": \"Before Common Era\",\n \"1-alt-variant\": \"Common Era\"\n },\n abbreviated: {\n \"0\": \"BC\",\n \"1\": \"AD\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n },\n narrow: {\n \"0\": \"B\",\n \"1\": \"A\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n }\n }\n },\n dateFields: {\n era: {\n wide: \"era\",\n short: \"era\",\n narrow: \"era\"\n },\n year: {\n wide: \"year\",\n short: \"yr.\",\n narrow: \"yr.\"\n },\n quarter: {\n wide: \"quarter\",\n short: \"qtr.\",\n narrow: \"qtr.\"\n },\n month: {\n wide: \"month\",\n short: \"mo.\",\n narrow: \"mo.\"\n },\n week: {\n wide: \"week\",\n short: \"wk.\",\n narrow: \"wk.\"\n },\n weekOfMonth: {\n wide: \"week of month\",\n short: \"wk. of mo.\",\n narrow: \"wk. of mo.\"\n },\n day: {\n wide: \"day\",\n short: \"day\",\n narrow: \"day\"\n },\n dayOfYear: {\n wide: \"day of year\",\n short: \"day of yr.\",\n narrow: \"day of yr.\"\n },\n weekday: {\n wide: \"day of the week\",\n short: \"day of wk.\",\n narrow: \"day of wk.\"\n },\n weekdayOfMonth: {\n wide: \"weekday of the month\",\n short: \"wkday. of mo.\",\n narrow: \"wkday. of mo.\"\n },\n dayperiod: {\n short: \"AM/PM\",\n wide: \"AM/PM\",\n narrow: \"AM/PM\"\n },\n hour: {\n wide: \"hour\",\n short: \"hr.\",\n narrow: \"hr.\"\n },\n minute: {\n wide: \"minute\",\n short: \"min.\",\n narrow: \"min.\"\n },\n second: {\n wide: \"second\",\n short: \"sec.\",\n narrow: \"sec.\"\n },\n zone: {\n wide: \"time zone\",\n short: \"zone\",\n narrow: \"zone\"\n },\n millisecond: {\n narrow: \"ms\",\n short: \"ms\",\n wide: \"millisecond\"\n }\n }\n }\n },\n supplemental: {\n likelySubtags: {\n en: \"en-Latn-US\"\n },\n currencyData: {\n region: {\n US: [\n {\n USD: {\n _from: \"1792-01-01\"\n }\n }\n ]\n }\n },\n weekData: {\n firstDay: {\n US: \"sun\"\n },\n weekendStart: {\n \"001\": \"sat\"\n },\n weekendEnd: {\n \"001\": \"sun\"\n }\n }\n }\n};\nexport default defaultData;","export default function isString(value) {\n return typeof value === \"string\";\n}","import errorDetails from './error-details';\n\nvar formatRegExp = /\\{(\\d+)}?\\}/g;\n\nvar IntlError = function IntlError(ref) {\n var name = ref.name;\n var message = ref.message;\n\n if (!name || !message) {\n throw new Error(\"{ name: string, message: string } object is required!\");\n }\n\n this.name = name;\n this.message = message;\n};\n\nIntlError.prototype.formatMessage = function formatMessage () {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n var flattenValues = flatten(values);\n\n var formattedMessage = this.message.replace(formatRegExp, function(match, index) {\n return flattenValues[parseInt(index, 10)];\n });\n\n return ((this.name) + \": \" + formattedMessage);\n};\n\nIntlError.prototype.error = function error () {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return new Error(this.formatMessage(values));\n};\n\nvar flatten = function(arr) {\n return arr.reduce(function (a, b) { return a.concat(b); }, []);\n};\n\nvar toIntlErrors = function(errors) {\n var predicate = function(prev, name) {\n prev[name] = new IntlError({ name: name, message: errors[name] });\n return prev;\n };\n\n return Object.keys(errors).reduce(predicate, {});\n};\n\nvar errors = toIntlErrors(errorDetails);\n\nexport {\n errors,\n IntlError,\n toIntlErrors\n};\n","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\n\nexport default {\n \"NoLocale\": \"Missing locale info for '{0}'\",\n \"NoCurrency\": \"Cannot determine currency information. Please load the locale currencies data.\",\n \"NoSupplementalCurrency\": \"Cannot determine currency. Please load the supplemental currencyData.\",\n \"NoCurrencyRegion\": \"No currency data for region '{0}'\",\n \"NoCurrencyDisplay\": \"Cannot determine currency display information. Please load the locale currencies data. The default culture does not include the all currencies data.\",\n \"NoGMTInfo\": \"Cannot determine locale GMT format. Please load the locale timeZoneNames data.\",\n \"NoWeekData\": \"Cannot determine locale first day of week. Please load the supplemental weekData.\",\n \"NoFirstDay\": \"Cannot determine locale first day of week. Please load the supplemental weekData. The default culture includes only the 'en-US' first day info.\",\n \"NoValidCurrency\": \"Cannot determine a default currency for the {0} locale. Please specify explicitly the currency with the format options.\",\n \"NoDateFieldNames\": \"Cannot determine the locale date field names. Please load the locale dateFields data.\"\n};\n","import defaultData from './default-data';\nimport isString from '../common/is-string';\nimport { errors } from '../errors';\n\nfunction availableLocaleInfo(fullName, suffixes) {\n var parts = fullName.split(\"-\");\n var language = parts[0];\n var script = parts[1];\n var territory = parts[2];\n\n return cldr[fullName] || (suffixes.indexOf(territory) !== -1 && cldr[language + \"-\" + territory]) || (suffixes.indexOf(script) !== -1 && cldr[language + \"-\" + script]) || cldr[language];\n}\n\nfunction localeFullName(language, suffixes) {\n var likelySubtags = cldr.supplemental.likelySubtags;\n\n for (var idx = 0; idx < suffixes.length; idx++) {\n var name = likelySubtags[language + \"-\" + suffixes[idx ]];\n if (name) {\n return name;\n }\n }\n\n if (likelySubtags[language]) {\n return likelySubtags[language];\n }\n}\n\nexport var cldr = defaultData;\n\nexport function getLocaleInfo(locale) {\n var info;\n if (isString(locale)) {\n info = localeInfo(locale);\n } else {\n info = locale;\n }\n return info;\n}\n\nexport function localeInfo(locale) {\n if (cldr[locale]) {\n return cldr[locale];\n }\n\n var likelySubtags = cldr.supplemental.likelySubtags;\n if (likelySubtags) {\n var parts = locale.split(\"-\");\n var language = parts[0];\n var suffixes = parts.slice(1);\n var fullName = localeFullName(language, suffixes);\n var info = fullName ? availableLocaleInfo(fullName, suffixes) : null;\n if (info) {\n return info;\n }\n }\n\n throw errors.NoLocale.error(locale);\n}\n","export var DECIMAL = \"decimal\";\nexport var CURRENCY = \"currency\";\nexport var ACCOUNTING = \"accounting\";\nexport var PERCENT = \"percent\";\nexport var SCIENTIFIC = \"scientific\";\n\nexport var CURRENCY_PLACEHOLDER = \"$\";\nexport var PERCENT_PLACEHOLDER = \"%\";\nexport var NUMBER_PLACEHOLDER = \"n\";\n\nexport var LIST_SEPARATOR = \";\";\nexport var GROUP_SEPARATOR = \",\";\n\nexport var POINT = \".\";\nexport var EMPTY = \"\";\n\nexport var DEFAULT_LOCALE = \"en\";\n\n","import { cldr } from './info';\nimport { CURRENCY, ACCOUNTING, DECIMAL, CURRENCY_PLACEHOLDER, NUMBER_PLACEHOLDER, LIST_SEPARATOR, GROUP_SEPARATOR, POINT } from '../common/constants';\n\nvar LATIN_NUMBER_FORMATS = \"Formats-numberSystem-latn\";\nvar LATIN_NUMBER_SYMBOLS = \"symbols-numberSystem-latn\";\n\nvar patternRegExp = /([#,0.]+)/g;\nvar cldrCurrencyRegExp = /¤/g;\n\nfunction getPatterns(pattern) {\n patternRegExp.lastIndex = 0;\n\n return pattern.replace(cldrCurrencyRegExp, CURRENCY_PLACEHOLDER).replace(patternRegExp, NUMBER_PLACEHOLDER).split(LIST_SEPARATOR);\n}\n\nfunction getGroupSize(pattern) {\n patternRegExp.lastIndex = 0;\n\n var numberPatterns = patternRegExp.exec(pattern.split(LIST_SEPARATOR)[0])[0].split(POINT);\n var integer = numberPatterns[0];\n\n var groupSize = integer.split(GROUP_SEPARATOR).slice(1).map(function(group) {\n return group.length;\n }).reverse();\n\n return groupSize;\n}\n\nfunction loadCurrencyUnitPatterns(currencyInfo, currencyFormats) {\n for (var field in currencyFormats) {\n if (field.startsWith(\"unitPattern\")) {\n currencyInfo[field] = currencyFormats[field].replace(\"{0}\", NUMBER_PLACEHOLDER).replace(\"{1}\", CURRENCY_PLACEHOLDER);\n }\n }\n}\n\nexport default function loadNumbersInfo(locale, info) {\n var localeInfo = cldr[locale];\n var numbers = localeInfo.numbers = localeInfo.numbers || {};\n numbers.symbols = numbers.symbols || {};\n for (var field in info) {\n if (field === LATIN_NUMBER_SYMBOLS) {\n Object.assign(numbers.symbols, info[field]);\n } else if (field.includes(LATIN_NUMBER_FORMATS)) {\n var style = field.substr(0, field.indexOf(LATIN_NUMBER_FORMATS));\n var pattern = info[field].standard;\n numbers[style] = {\n patterns: getPatterns(pattern)\n };\n if (style === CURRENCY) {\n numbers[style].groupSize = getGroupSize((info[DECIMAL + LATIN_NUMBER_FORMATS] || info[field]).standard);\n loadCurrencyUnitPatterns(numbers[style], info[field]);\n numbers[ACCOUNTING] = {\n patterns: getPatterns(info[field][ACCOUNTING]),\n groupSize: numbers[style].groupSize\n };\n } else {\n numbers[style].groupSize = getGroupSize(pattern);\n }\n } else if (field === \"currencies\") {\n numbers.currencies = info[field];\n }\n }\n}","import { cldr } from './info';\n\nvar predefinedDatePatterns = {\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n};\n\nvar YEAR_REGEX = /y+/g;\nvar SHORT_DATE = [ [ \"dateFormats\", \"short\" ] ];\n\nvar datePatterns = {\n D: [ [ \"dateFormats\", \"full\" ] ],\n m: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMd\" ] ],\n M: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMMd\" ] ],\n y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMM\" ] ],\n Y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMMM\" ] ],\n F: [ [ \"dateFormats\", \"full\" ], [ \"timeFormats\", \"medium\" ] ],\n g: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"short\" ] ],\n G: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"medium\" ] ],\n t: [ [ \"timeFormats\", \"short\" ] ],\n T: [ [ \"timeFormats\", \"medium\" ] ]\n};\n\nfunction toArray(obj) {\n var result = [];\n var names = Object.getOwnPropertyNames(obj);\n for (var idx = 0; idx < names.length; idx++) {\n var value = obj[names[idx]];\n result.push(value);\n }\n return result;\n}\n\nfunction getCalendarNames(info, isObj) {\n var result = {};\n for (var formatType in info) {\n var names = result[formatType] = {};\n for (var format in info[formatType]) {\n var formats = info[formatType][format];\n names[format] = isObj ? formats : toArray(formats);\n }\n }\n return result;\n}\n\nfunction getEraNames(eras) {\n var result = {};\n var format = result.format = {};\n var eraNameMap = {\n eraAbbr: \"abbreviated\",\n eraNames: \"wide\",\n eraNarrow: \"narrow\"\n };\n\n for (var eraFormatName in eras) {\n var formatName = eraNameMap[eraFormatName];\n format[formatName] = eras[eraFormatName];\n }\n\n return result;\n}\n\nfunction loadCalendarNames(locale, calendar) {\n var localeCalendar = cldr[locale].calendar;\n localeCalendar.days = getCalendarNames(calendar.days);\n localeCalendar.months = getCalendarNames(calendar.months);\n localeCalendar.quarters = getCalendarNames(calendar.quarters);\n localeCalendar.dayPeriods = getCalendarNames(calendar.dayPeriods, true);\n\n localeCalendar.eras = getEraNames(calendar.eras);\n}\n\nfunction loadCalendarDateFields(locale, fields) {\n var localeCalendar = cldr[locale].calendar;\n var dateFields = {};\n\n for (var field in fields) {\n var ref = field.split('-');\n var fieldName = ref[0];\n var formatType = ref[1]; if ( formatType === void 0 ) formatType = 'wide';\n var fieldInfo = dateFields[fieldName] || {};\n var displayName = fields[field].displayName;\n\n if (!displayName) { continue; }\n\n fieldInfo[formatType] = displayName;\n dateFields[fieldName] = fieldInfo;\n }\n\n localeCalendar.dateFields = dateFields;\n}\n\nfunction getPredefinedFormat(paths, calendar) {\n var result = [];\n\n for (var pathIdx = 0; pathIdx < paths.length; pathIdx++) {\n var fields = paths[ pathIdx ];\n var pattern = calendar;\n for (var idx = 0; idx < fields.length; idx++) {\n pattern = pattern[fields[idx]];\n }\n result.push(pattern);\n }\n\n return result.join(\" \");\n}\n\nfunction loadCalendarPatterns(locale, calendar) {\n var cldrCalendar = cldr[locale].calendar;\n var patterns = cldrCalendar.patterns = {};\n\n patterns.d = getPredefinedFormat(SHORT_DATE, calendar).replace(YEAR_REGEX, 'y');\n\n for (var pattern in datePatterns) {\n patterns[pattern] = getPredefinedFormat(datePatterns[pattern], calendar);\n }\n\n for (var pattern$1 in predefinedDatePatterns) {\n patterns[pattern$1] = predefinedDatePatterns[pattern$1];\n }\n\n var dateTimeFormats = calendar.dateTimeFormats;\n cldrCalendar.dateTimeFormats = {\n full: dateTimeFormats.full,\n long: dateTimeFormats.long,\n medium: dateTimeFormats.medium,\n short: dateTimeFormats.short,\n availableFormats: dateTimeFormats.availableFormats\n };\n cldrCalendar.timeFormats = calendar.timeFormats;\n cldrCalendar.dateFormats = calendar.dateFormats;\n}\n\n\nexport default function loadCalendarInfo(locale, info) {\n var calendar = cldr[locale].calendar = cldr[locale].calendar || {};\n for (var field in info) {\n if (field === \"timeZoneNames\") {\n calendar.gmtFormat = info[field].gmtFormat;\n calendar.gmtZeroFormat = info[field].gmtZeroFormat;\n } else if (field === \"calendars\" && info[field].gregorian) {\n loadCalendarPatterns(locale, info[field].gregorian);\n loadCalendarNames(locale, info[field].gregorian);\n } else if (field === \"fields\") {\n loadCalendarDateFields(locale, info.fields);\n }\n }\n}\n","import { cldr } from './info';\n\nfunction territoryFromName(name, identity) {\n var likelySubtags = cldr.supplemental.likelySubtags;\n var parts = name.split(\"-\");\n if (likelySubtags) {\n var likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n if (likelyName) {\n parts = likelyName.split(\"-\");\n }\n }\n\n if (identity) {\n for (var idx = parts.length - 1; idx >= 1; idx--) {\n var part = parts[idx];\n if (part === identity.variant || part === identity.script) {\n parts.splice(idx, 1);\n }\n }\n }\n\n var length = parts.length;\n\n if (length > 1) {\n var territory = parts[length - 1];\n return territory.toUpperCase();\n }\n}\n\nexport default function localeTerritory(info) {\n if (info.territory) {\n return info.territory;\n }\n\n var name = info.name;\n var identity = info.identity;\n var territory;\n\n if (identity && identity.territory) {\n territory = identity.territory;\n } else {\n territory = territoryFromName(name, identity);\n }\n\n info.territory = territory;\n\n return territory;\n}\n","var MILLISECOND = 'duration-millisecond';\nvar UNIT_PATTERN_ONE = 'unitPattern-count-one';\nvar UNIT_PATTERN_OTHER = 'unitPattern-count-other';\nvar placeholderPattern = /\\{0\\}\\s?/;\n\nfunction extractUnit(unit) {\n var value = unit[UNIT_PATTERN_ONE] || unit[UNIT_PATTERN_OTHER];\n return value.replace(placeholderPattern, '');\n}\n\nexport default function loadUnits(localeInfo, units) {\n localeInfo.calendar.dateFields.millisecond = {\n narrow: extractUnit(units.narrow[MILLISECOND]),\n short: extractUnit(units.short[MILLISECOND]),\n wide: extractUnit(units.long[MILLISECOND])\n };\n}\n","import { cldr } from './info';\nimport loadNumbersInfo from './load-numbers';\nimport loadCalendarInfo from './load-dates';\nimport localeTerritory from './territory';\nimport loadUnits from './load-units';\n\nfunction loadLocale(locale, info) {\n for (var field in info) {\n if (field === \"numbers\") {\n loadNumbersInfo(locale, info[field]);\n } else if (field === \"dates\") {\n loadCalendarInfo(locale, info[field]);\n }\n }\n}\n\nexport default function load() {\n var arguments$1 = arguments;\n\n var length = arguments.length;\n for (var idx = 0; idx < length; idx++) {\n var entry = arguments$1[idx];\n if (entry.main) {\n var locale = Object.keys(entry.main)[0];\n var info = entry.main[locale];\n var localeInfo = cldr[locale] = cldr[locale] || {};\n\n if (info.units) {\n loadUnits(localeInfo, info.units);\n } else {\n localeInfo.name = localeInfo.name || locale;\n localeInfo.identity = localeInfo.identity || info.identity;\n\n localeTerritory(localeInfo);\n loadLocale(locale, info);\n }\n } else if (entry.supplemental) {\n if (entry.supplemental.weekData) {\n cldr.supplemental.weekData = {\n firstDay: entry.supplemental.weekData.firstDay,\n weekendStart: entry.supplemental.weekData.weekendStart,\n weekendEnd: entry.supplemental.weekData.weekendEnd\n };\n } else if (entry.supplemental.likelySubtags) {\n cldr.supplemental.likelySubtags = Object.assign(cldr.supplemental.likelySubtags, entry.supplemental.likelySubtags);\n } else if (entry.supplemental.currencyData) {\n var currencyData = cldr.supplemental.currencyData;\n currencyData.region = Object.assign(currencyData.region || {}, entry.supplemental.currencyData.region);\n currencyData.fractions = Object.assign(currencyData.fractions || {}, entry.supplemental.currencyData.fractions);\n }\n }\n }\n}\n","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\n\nexport default function dateFieldName(options, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n var info = localeInfo(locale);\n var dateFields = info.calendar.dateFields;\n if (!dateFields) {\n throw errors.NoDateFieldNames.error();\n }\n\n var fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}\n","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\n\nfunction lowerArray(arr) {\n var result = [];\n for (var idx = 0; idx < arr.length; idx++) {\n result.push(arr[idx].toLowerCase());\n }\n return result;\n}\n\nfunction lowerObject(obj) {\n var result = {};\n for (var field in obj) {\n result[field] = obj[field].toLowerCase();\n }\n return result;\n}\n\nfunction cloneLower(obj) {\n var result = Array.isArray(obj) ? lowerArray(obj) : lowerObject(obj);\n return result;\n}\n\nexport default function dateFormatNames(locale, options) {\n var type = options.type;\n var nameType = options.nameType;\n var standAlone = options.standAlone;\n var lower = options.lower;\n var info = getLocaleInfo(locale);\n var formatType = standAlone ? \"stand-alone\" : \"format\";\n var lowerNameType = (lower ? \"lower-\" : EMPTY) + nameType;\n var formatNames = info.calendar[type][formatType];\n var result = formatNames[lowerNameType];\n if (!result && lower) {\n result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n }\n return result;\n}","export default function parseRangeDate(value) {\n var parts = value.split('-');\n var year = parseInt(parts[0], 10);\n var month = parseInt(parts[1], 10) - 1;\n var day = parseInt(parts[2], 10);\n\n return new Date(year, month, day);\n}\n","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\n\n/* eslint-disable consistent-return */\n\nvar NoCurrency = errors.NoCurrency;\nvar NoCurrencyDisplay = errors.NoCurrencyDisplay;\nvar NoSupplementalCurrency = errors.NoSupplementalCurrency;\nvar NoCurrencyRegion = errors.NoCurrencyRegion;\nvar NoValidCurrency = errors.NoValidCurrency;\n\nvar DEFAULT_CURRENCY_FRACTIONS = 2;\nvar SYMBOL = \"symbol\";\nvar INVALID_CURRENCY_CODE = 'XXX';\n\nvar GLOBAL_CURRENCIES = {\n '001': 'USD', // 001 refers to world. not sure if it is correct to assume USD but seems better than throw an error\n '150': 'EUR' // 150 territory for Europe\n\n};\n\nfunction getCurrencyInfo(locale, currency, throwIfNoValid) {\n var info = getLocaleInfo(locale);\n var currencies = info.numbers.currencies;\n if (!currencies) {\n if (throwIfNoValid) {\n throw NoCurrency.error();\n }\n\n return;\n }\n\n var currencyDisplayInfo = currencies[currency];\n\n if (!currencyDisplayInfo) {\n if (throwIfNoValid) {\n throw NoCurrencyDisplay.error();\n }\n\n return;\n }\n\n return currencyDisplayInfo;\n}\n\nfunction lengthComparer(a, b) {\n return b.length - a.length;\n}\n\nfunction regionCurrency(regionCurrencies) {\n var latestValidUntil, latestValidUntilRange;\n var latestStillValid, latestStillValidDate;\n\n for (var idx = 0; idx < regionCurrencies.length; idx++) {\n var currency = regionCurrencies[idx];\n var code = Object.keys(currency)[0];\n var info = currency[code];\n if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n if (!info._to) {\n var stillValidDate = parseRangeDate(info._from);\n if (!latestStillValidDate || latestStillValidDate < stillValidDate) {\n latestStillValid = code;\n latestStillValidDate = stillValidDate;\n }\n } else if (!latestStillValid) {\n var validFrom = parseRangeDate(info._from);\n var validTo = parseRangeDate(info._to);\n if (!latestValidUntilRange || latestValidUntilRange.to < validTo || latestValidUntilRange.from < validFrom) {\n latestValidUntil = code;\n latestValidUntilRange = {\n from: validFrom,\n to: validTo\n };\n }\n }\n }\n }\n\n return latestStillValid || latestValidUntil;\n}\n\nexport function currencyDisplays(locale, currency, throwIfNoValid) {\n if ( throwIfNoValid === void 0 ) throwIfNoValid = true;\n\n var currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n if (!currencyInfo) {\n return;\n }\n\n if (!currencyInfo.displays) {\n var displays = [ currency ];\n for (var field in currencyInfo) {\n displays.push(currencyInfo[field]);\n }\n displays.sort(lengthComparer);\n currencyInfo.displays = displays;\n }\n\n return currencyInfo.displays;\n}\n\nexport function currencyDisplay(locale, options) {\n var value = options.value;\n var currency = options.currency;\n var currencyDisplay = options.currencyDisplay; if ( currencyDisplay === void 0 ) currencyDisplay = SYMBOL;\n\n if (currencyDisplay === \"code\") {\n return currency;\n }\n\n var currencyInfo = getCurrencyInfo(locale, currency, true);\n var result;\n\n if (currencyDisplay === SYMBOL) {\n result = currencyInfo[\"symbol-alt-narrow\"] || currencyInfo[SYMBOL];\n } else {\n if (typeof value === \"undefined\" || value !== 1) {\n result = currencyInfo[\"displayName-count-other\"];\n } else {\n result = currencyInfo[\"displayName-count-one\"];\n }\n }\n\n return result;\n}\n\nexport function currencyFractionOptions(code) {\n var minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n var maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n\n var fractions = ((cldr.supplemental.currencyData || {}).fractions || {})[code];\n\n if (fractions && fractions._digits) {\n maximumFractionDigits = minimumFractionDigits = parseInt(fractions._digits, 10);\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nexport function territoryCurrencyCode(territory, throwIfNoValid) {\n if ( throwIfNoValid === void 0 ) throwIfNoValid = true;\n\n if (GLOBAL_CURRENCIES[territory]) {\n return GLOBAL_CURRENCIES[territory];\n }\n\n var currencyData = cldr.supplemental.currencyData;\n if (!currencyData) {\n if (throwIfNoValid) {\n throw NoSupplementalCurrency.error();\n }\n\n return;\n }\n\n var regionCurrencies = currencyData.region[territory];\n\n if (!regionCurrencies) {\n if (throwIfNoValid) {\n throw NoCurrencyRegion.error(territory);\n }\n\n return;\n }\n\n var currencyCode = regionCurrency(regionCurrencies);\n\n return currencyCode;\n}\n\nexport function localeCurrency(locale, throwIfNoValid) {\n var info = getLocaleInfo(locale);\n var numbers = info.numbers;\n\n if (!numbers.localeCurrency) {\n var currency = territoryCurrencyCode(localeTerritory(info), throwIfNoValid);\n\n if (!currency && throwIfNoValid) {\n throw NoValidCurrency.error(info.name);\n }\n\n numbers.localeCurrency = currency;\n }\n\n return numbers.localeCurrency;\n}\n","\nexport var DAYS_OF_WEEK = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\nexport var DEFAULT_TERRITORY = '001';\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nvar NoWeekData = errors.NoWeekData;\nvar NoFirstDay = errors.NoFirstDay;\n\nexport default function firstDay(locale) {\n var info = getLocaleInfo(locale);\n\n if (!isNaN(info.firstDay)) {\n return info.firstDay;\n }\n\n var weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n var firstDay = weekData.firstDay[localeTerritory(info)] || weekData.firstDay[DEFAULT_TERRITORY];\n\n if (!firstDay) {\n throw NoFirstDay.error();\n }\n\n info.firstDay = DAYS_OF_WEEK.indexOf(firstDay);\n\n return info.firstDay;\n}\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nvar NoWeekData = errors.NoWeekData;\n\nexport default function weekendRange(locale) {\n var info = getLocaleInfo(locale);\n\n if (info.weekendRange) {\n return info.weekendRange;\n }\n\n var weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n var territory = localeTerritory(info);\n var start = weekData.weekendStart[territory] || weekData.weekendStart[DEFAULT_TERRITORY];\n var end = weekData.weekendEnd[territory] || weekData.weekendEnd[DEFAULT_TERRITORY];\n\n info.weekendRange = {\n start: DAYS_OF_WEEK.indexOf(start),\n end: DAYS_OF_WEEK.indexOf(end)\n };\n\n return info.weekendRange;\n}\n","import { getLocaleInfo } from './info';\n\nexport default function numberSymbols(locale) {\n var info = getLocaleInfo(locale);\n\n return info.numbers.symbols;\n}","export default function isNegativeZero(value) {\n return (1 / value === -Infinity);\n}\n","import { currencyDisplay, localeCurrency } from '../cldr';\n\nexport default function formatCurrencySymbol(info, options) {\n if ( options === void 0 ) options = {};\n\n if (!options.currency) {\n options.currency = localeCurrency(info, true);\n }\n\n var display = currencyDisplay(info, options);\n\n return display;\n}\n","export default function groupInteger(number, start, end, options, info) {\n var symbols = info.numbers.symbols;\n var decimalIndex = number.indexOf(symbols.decimal);\n var groupSizes = options.groupSize.slice();\n var groupSize = groupSizes.shift();\n\n var integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n var integer = number.substring(start, integerEnd);\n var result = number;\n var integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n var idx = integerLength;\n var parts = [];\n\n while (idx > -1) {\n var value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n var newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n value = integer.substring(0, idx);\n if (value) {\n parts.push(value);\n }\n break;\n }\n }\n\n integer = parts.reverse().join(symbols.group);\n result = number.substring(0, start) + integer + number.substring(integerEnd);\n }\n\n return result;\n}","import { CURRENCY, ACCOUNTING } from '../common/constants';\n\nexport default function isCurrencyStyle(style) {\n return style === CURRENCY || style === ACCOUNTING;\n}","export default function pad(number, digits, right) {\n if ( digits === void 0 ) digits = 2;\n if ( right === void 0 ) right = false;\n\n var count = digits - String(number).length;\n var result = number;\n\n if (count > 0) {\n var padString = new Array(count + 1).join(\"0\");\n result = right ? number + padString : padString + number;\n }\n\n return result;\n}","var MAX_PRECISION = 20;\n\nexport default function round(value, precision) {\n var result = value;\n var decimals = precision || 0;\n\n result = result.toString().split('e');\n result = Math.round(Number(result[0] + 'e' + (result[1] ? (Number(result[1]) + decimals) : decimals)));\n\n result = result.toString().split('e');\n result = Number(result[0] + 'e' + (result[1] ? (Number(result[1]) - decimals) : -decimals));\n\n return result.toFixed(Math.min(decimals, MAX_PRECISION));\n}","import { PERCENT, SCIENTIFIC, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, EMPTY, POINT } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport isCurrencyStyle from './is-currency-style';\nimport pad from '../common/pad';\nimport round from '../common/round';\nimport { currencyFractionOptions } from '../cldr';\n\nvar DEFAULT_DECIMAL_ROUNDING = 3;\nvar DEFAULT_PERCENT_ROUNDING = 0;\n\nvar trailingZeroRegex = /0+$/;\n\nfunction fractionOptions(options) {\n var minimumFractionDigits = options.minimumFractionDigits;\n var maximumFractionDigits = options.maximumFractionDigits;\n var style = options.style;\n var isCurrency = isCurrencyStyle(style);\n var currencyFractions;\n if (isCurrency) {\n currencyFractions = currencyFractionOptions(options.currency);\n }\n\n if (minimumFractionDigits === undefined) {\n minimumFractionDigits = isCurrency ? currencyFractions.minimumFractionDigits : 0;\n }\n\n if (maximumFractionDigits === undefined) {\n if (style === PERCENT) {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_PERCENT_ROUNDING);\n } else if (isCurrency) {\n maximumFractionDigits = Math.max(minimumFractionDigits, currencyFractions.maximumFractionDigits);\n } else {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_DECIMAL_ROUNDING);\n }\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nfunction applyPattern(value, pattern, symbol) {\n var result = EMPTY;\n for (var idx = 0, length = pattern.length; idx < length; idx++) {\n var ch = pattern.charAt(idx);\n\n if (ch === NUMBER_PLACEHOLDER) {\n result += value;\n } else if (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) {\n result += symbol;\n } else {\n result += ch;\n }\n }\n return result;\n}\n\nfunction currencyUnitPattern(info, value) {\n var currencyInfo = info.numbers.currency;\n var pattern = value !== 1 ? currencyInfo[\"unitPattern-count-other\"] : currencyInfo[\"unitPattern-count-one\"];\n if (value < 0) {\n pattern = pattern.replace(NUMBER_PLACEHOLDER, (\"-\" + NUMBER_PLACEHOLDER));\n }\n\n return pattern;\n}\n\n\nexport default function standardNumberFormat(number, options, info) {\n var symbols = info.numbers.symbols;\n var style = options.style;\n var isCurrency = isCurrencyStyle(style);\n\n //return number in exponential format\n if (style === SCIENTIFIC) {\n var exponential = options.minimumFractionDigits !== undefined ? number.toExponential(options.minimumFractionDigits) : number.toExponential();\n return exponential.replace(POINT, symbols.decimal);\n }\n\n var value = number;\n var symbol;\n\n if (isCurrency) {\n options.value = value;\n symbol = formatCurrencySymbol(info, options);\n }\n\n if (style === PERCENT) {\n value *= 100;\n symbol = symbols.percentSign;\n }\n\n var ref = fractionOptions(options);\n var minimumFractionDigits = ref.minimumFractionDigits;\n var maximumFractionDigits = ref.maximumFractionDigits;\n\n value = round(value, maximumFractionDigits);\n\n var negative = value < 0;\n var negativeZero = isNegativeZero(number);\n\n var parts = value.split(POINT);\n\n var integer = parts[0];\n var fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true);\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n if (options.minimumIntegerDigits) {\n integer = pad(integer, options.minimumIntegerDigits);\n }\n\n var formattedValue = options.useGrouping !== false ? groupInteger(integer, 0, integer.length, options, info) : integer;\n\n if (fraction) {\n formattedValue += symbols.decimal + fraction;\n }\n\n var pattern;\n\n if (isCurrency && options.currencyDisplay === \"name\") {\n pattern = currencyUnitPattern(info, number);\n } else {\n var patterns = options.patterns;\n pattern = (negative || negativeZero) ? patterns[1] || (\"-\" + patterns[0]) : patterns[0];\n }\n\n if (pattern === NUMBER_PLACEHOLDER && !negative) {\n return formattedValue;\n }\n\n var result = applyPattern(formattedValue, pattern, symbol);\n\n return result;\n}","import { PERCENT_PLACEHOLDER, CURRENCY_PLACEHOLDER, CURRENCY, PERCENT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\n\nvar literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nvar PLACEHOLDER = \"__??__\";\n\nexport function setStyleOptions(formatOptions, info) {\n var format = formatOptions.format;\n\n //multiply number if the format has percent\n if (format.indexOf(PERCENT_PLACEHOLDER) !== -1) {\n formatOptions.style = PERCENT;\n formatOptions.symbol = info.numbers.symbols.percentSign;\n formatOptions.number *= 100;\n }\n\n if (format.indexOf(CURRENCY_PLACEHOLDER) !== -1) {\n formatOptions.style = CURRENCY;\n formatOptions.symbol = formatCurrencySymbol(info);\n }\n}\n\nexport function setFormatLiterals(formatOptions) {\n var format = formatOptions.format;\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n var literals = formatOptions.literals = [];\n formatOptions.format = format.replace(literalRegExp, function(match) {\n var quoteChar = match.charAt(0).replace(\"\\\\\", EMPTY);\n var literal = match.slice(1).replace(quoteChar, EMPTY);\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n}\n\nexport function replaceLiterals(number, literals) {\n var result = number;\n if (literals) {\n var length = literals.length;\n for (var idx = 0; idx < length; idx++) {\n result = result.replace(PLACEHOLDER, literals[idx]);\n }\n }\n return result;\n}","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\nimport { setStyleOptions, setFormatLiterals, replaceLiterals } from './utils';\n\nvar SHARP = \"#\";\nvar ZERO = \"0\";\n\nvar trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nvar trailingPointRegExp = /\\.$/;\nvar commaRegExp = /,/g;\n\nfunction trimTrailingZeros(value, lastZero) {\n var trimRegex;\n\n if (lastZero === 0) {\n trimRegex = trailingZerosRegExp;\n } else {\n trimRegex = new RegExp((\"(\\\\.[0-9]{\" + lastZero + \"}[1-9]*)0+$\"), 'g');\n }\n\n return value.replace(trimRegex, '$1').replace(trailingPointRegExp, EMPTY);\n}\n\nfunction roundNumber(formatOptions) {\n var number = formatOptions.number;\n var format = formatOptions.format;\n var decimalIndex = format.indexOf(POINT);\n\n if (decimalIndex !== -1) {\n var zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n var sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n var hasZero = zeroIndex > -1;\n var hasSharp = sharpIndex > -1;\n var fraction = number.toString().split(\"e\");\n\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n\n var precision = fraction.length;\n var trailingZeros = -1;\n\n if (!hasZero && !hasSharp) {\n formatOptions.format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n decimalIndex = -1;\n precision = 0;\n } else if (hasZero && zeroIndex > sharpIndex) {\n precision = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && precision > sharpIndex) {\n precision = sharpIndex;\n } else if (hasZero && precision < zeroIndex) {\n precision = zeroIndex;\n }\n\n trailingZeros = hasZero ? zeroIndex : 0;\n }\n\n if (precision > -1) {\n number = round(number, precision);\n if (trailingZeros > -1) {\n number = trimTrailingZeros(number, trailingZeros);\n }\n }\n } else {\n number = round(number);\n }\n\n if (formatOptions.negative && (number * -1) >= 0 && !formatOptions.negativeZero) {\n formatOptions.negative = false;\n }\n\n formatOptions.number = number;\n formatOptions.decimalIndex = decimalIndex;\n}\n\nfunction isConstantFormat(format) {\n return format.indexOf(SHARP) === -1 && format.indexOf(ZERO) === -1;\n}\n\nfunction setValueSpecificFormat(formatOptions) {\n var number = formatOptions.number;\n var format = formatOptions.format;\n format = format.split(LIST_SEPARATOR);\n if ((formatOptions.negative || formatOptions.negativeZero) && format[1]) {\n format = format[1];\n formatOptions.hasNegativeFormat = true;\n } else if (number === 0) {\n var zeroFormat = format[2];\n format = zeroFormat || format[0];\n if (zeroFormat && isConstantFormat(zeroFormat)) {\n formatOptions.constant = zeroFormat;\n }\n } else {\n format = format[0];\n }\n\n formatOptions.format = format;\n}\n\nfunction setGroupOptions(formatOptions) {\n formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n if (formatOptions.hasGroup) {\n formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n }\n}\n\nfunction placeholderIndex(index1, index2, start) {\n var index;\n if (index1 === -1 && index2 !== -1) {\n index = index2;\n } else if (index1 !== -1 && index2 === -1) {\n index = index1;\n } else {\n index = start ? Math.min(index1, index2) : Math.max(index1, index2);\n }\n return index;\n}\n\nfunction setPlaceholderIndices(formatOptions) {\n var format = formatOptions.format;\n var sharpIndex = format.indexOf(SHARP);\n var zeroIndex = format.indexOf(ZERO);\n\n var start = placeholderIndex(sharpIndex, zeroIndex, true);\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n var end = placeholderIndex(sharpIndex, zeroIndex);\n\n if (start === format.length) {\n end = start;\n }\n\n formatOptions.start = start;\n formatOptions.end = end;\n formatOptions.lastZeroIndex = zeroIndex;\n}\n\nfunction replaceStyleSymbols(number, style, symbol) {\n var result = number;\n if (style === CURRENCY || style === PERCENT) {\n result = EMPTY;\n for (var idx = 0, length = number.length; idx < length; idx++) {\n var ch = number.charAt(idx);\n result += (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) ? symbol : ch;\n }\n }\n return result;\n}\n\nfunction replacePlaceHolders(formatOptions, info) {\n var start = formatOptions.start;\n var end = formatOptions.end;\n var negative = formatOptions.negative;\n var negativeZero = formatOptions.negativeZero;\n var format = formatOptions.format;\n var decimalIndex = formatOptions.decimalIndex;\n var lastZeroIndex = formatOptions.lastZeroIndex;\n var hasNegativeFormat = formatOptions.hasNegativeFormat;\n var hasGroup = formatOptions.hasGroup;\n var number = formatOptions.number;\n var value = number.toString().split(POINT);\n var length = format.length;\n var integer = value[0];\n var fraction = value[1] || EMPTY;\n var integerLength = integer.length;\n var replacement = EMPTY;\n\n number = format.substring(0, start);\n\n if ((negative || negativeZero) && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (var idx = start; idx < length; idx++) {\n var ch = format.charAt(idx);\n\n if (decimalIndex === -1) {\n if (end - idx < integerLength) {\n\n number += integer;\n break;\n }\n } else {\n if (lastZeroIndex !== -1 && lastZeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? info.numbers.symbols.decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), info.numbers.decimal, info);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n return number;\n}\n\nfunction applyCustomFormat(formatOptions, info) {\n var number = formatOptions.number;\n if (formatOptions.start !== -1) {\n number = replacePlaceHolders(formatOptions, info);\n number = replaceStyleSymbols(number, formatOptions.style, formatOptions.symbol);\n number = replaceLiterals(number, formatOptions.literals);\n }\n\n return number;\n}\n\nexport default function customNumberFormat(number, format, info) {\n var formatOptions = {\n negative: number < 0,\n number: Math.abs(number),\n negativeZero: isNegativeZero(number),\n format: format\n };\n\n setValueSpecificFormat(formatOptions);\n\n if (formatOptions.constant) {\n return formatOptions.constant;\n }\n\n setFormatLiterals(formatOptions);\n setStyleOptions(formatOptions, info);\n setGroupOptions(formatOptions);\n roundNumber(formatOptions);\n setPlaceholderIndices(formatOptions);\n\n return applyCustomFormat(formatOptions, info);\n}","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\n\nvar standardFormatRegExp = /^(n|c|p|e|a)(\\d*)$/i;\n\nfunction standardFormatOptions(format) {\n var formatAndPrecision = standardFormatRegExp.exec(format);\n\n if (formatAndPrecision) {\n var options = {\n style: DECIMAL\n };\n\n var style = formatAndPrecision[1].toLowerCase();\n\n if (style === \"c\") {\n options.style = CURRENCY;\n } else if (style === \"a\") {\n options.style = ACCOUNTING;\n } else if (style === \"p\") {\n options.style = PERCENT;\n } else if (style === \"e\") {\n options.style = SCIENTIFIC;\n }\n\n if (formatAndPrecision[2]) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseInt(formatAndPrecision[2], 10);\n }\n\n return options;\n }\n}\n\nexport default function formatOptions(format) {\n var options;\n if (isString(format)) {\n options = standardFormatOptions(format);\n } else {\n options = format;\n }\n\n return options;\n}","import { localeInfo } from '../cldr';\nimport { DECIMAL, DEFAULT_LOCALE, NUMBER_PLACEHOLDER, EMPTY } from '../common/constants';\nimport standardNumberFormat from './standard-number-format';\nimport customNumberFormat from './custom-number-format';\nimport formatOptions from './format-options';\n\nexport default function formatNumber(number, format, locale) {\n if ( format === void 0 ) format = NUMBER_PLACEHOLDER;\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n if (number === undefined || number === null) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return String(number);\n }\n\n var info = localeInfo(locale);\n var options = formatOptions(format);\n\n var result;\n if (options) {\n var style = options.style || DECIMAL;\n result = standardNumberFormat(number, Object.assign({}, info.numbers[style], options), info);\n } else {\n result = customNumberFormat(number, format, info);\n }\n\n return result;\n}\n","export default function isNumber(value) {\n return typeof value === \"number\";\n}","import { localeInfo, localeCurrency, currencyDisplays } from '../cldr';\nimport { PERCENT, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, DEFAULT_LOCALE, EMPTY, POINT } from '../common/constants';\nimport { setStyleOptions, setFormatLiterals } from './utils';\nimport isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\nimport isString from '../common/is-string';\n\nvar exponentRegExp = /[eE][-+]?[0-9]+/;\nvar nonBreakingSpaceRegExp = /\\u00A0/g;\n\nfunction cleanNegativePattern(number, patterns) {\n if (patterns.length > 1) {\n var parts = (patterns[1] || EMPTY).replace(CURRENCY_PLACEHOLDER, EMPTY).split(NUMBER_PLACEHOLDER);\n if (number.indexOf(parts[0]) > -1 && number.indexOf(parts[1]) > -1) {\n return number.replace(parts[0], EMPTY).replace(parts[1], EMPTY);\n }\n }\n}\n\nfunction cleanCurrencyNumber(value, info, format) {\n var options = formatOptions(format) || {};\n var isCurrency = isCurrencyStyle(options.style);\n var number = value;\n var negative;\n\n var currency = options.currency || localeCurrency(info, isCurrency);\n\n if (currency) {\n var displays = currencyDisplays(info, currency, isCurrency);\n if (displays) {\n for (var idx = 0; idx < displays.length; idx++) {\n var display = displays[idx];\n if (number.includes(display)) {\n number = number.replace(display, EMPTY);\n isCurrency = true;\n break;\n }\n }\n }\n\n if (isCurrency) {\n var cleanNumber = cleanNegativePattern(number, info.numbers.currency.patterns) ||\n cleanNegativePattern(number, info.numbers.accounting.patterns);\n\n if (cleanNumber) {\n negative = true;\n number = cleanNumber;\n }\n\n }\n }\n\n return {\n number: number,\n negative: negative\n };\n}\n\nfunction cleanLiterals(number, formatOptions) {\n var literals = formatOptions.literals;\n var result = number;\n\n if (literals) {\n for (var idx = 0; idx < literals.length; idx++) {\n result = result.replace(literals[idx], EMPTY);\n }\n }\n\n return result;\n}\n\nfunction divideBy100(number) {\n var strNumber = String(number);\n var pointIndex = strNumber.indexOf(POINT);\n var zeroesCount = 2;\n var result = number / Math.pow(10, zeroesCount);\n\n if (pointIndex === -1 || String(result).length <= strNumber.length + zeroesCount) {\n return result;\n }\n\n var fractionDigits = strNumber.length - pointIndex + 1 + zeroesCount;\n return parseFloat(result.toFixed(fractionDigits));\n}\n\nexport default function parseNumber(value, locale, format) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n if ( format === void 0 ) format = {};\n\n if (!value && value !== 0) {\n return null;\n }\n\n if (isNumber(value)) {\n return value;\n }\n\n var info = localeInfo(locale);\n var symbols = info.numbers.symbols;\n\n var number = value.toString();\n var formatOptions = format || {};\n var isPercent;\n\n if (isString(format)) {\n formatOptions = { format: format };\n setFormatLiterals(formatOptions);\n number = cleanLiterals(number, formatOptions);\n\n setStyleOptions(formatOptions, info);\n }\n\n if (formatOptions.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n number = number.replace(symbols.percentSign, EMPTY);\n isPercent = true;\n }\n\n if (exponentRegExp.test(number)) {\n number = parseFloat(number.replace(symbols.decimal, POINT));\n return isNaN(number) ? null : number;\n }\n\n var ref = cleanCurrencyNumber(number, info, formatOptions);\n var negativeCurrency = ref.negative;\n var currencyNumber = ref.number;\n number = String(currencyNumber).trim();\n\n var negativeSignIndex = number.indexOf(\"-\");\n if (negativeSignIndex > 0) {\n return null;\n }\n\n var isNegative = negativeSignIndex > -1;\n\n isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n\n number = number.replace(\"-\", EMPTY)\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY)\n .replace(symbols.decimal, POINT);\n\n number = parseFloat(number);\n\n if (isNaN(number)) {\n number = null;\n } else if (isNegative) {\n number *= -1;\n }\n\n if (number && isPercent) {\n number = divideBy100(number);\n }\n\n return number;\n}\n","var formatRegExp = /\\{(\\d+)}/g;\n\nexport default function formatString(format) {\n var values = arguments;\n\n return format.replace(formatRegExp, function (match, index) {\n var value = values[parseInt(index, 10) + 1];\n\n return value;\n });\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\n\nvar REMOVAL_PENALTY = 120;\nvar ADDITION_PENALTY = 20;\nvar LENGHT_DELTA = [ 2, 1, 5, 3, 4 ];\nvar LONG_LESS_PENALTY_DELTA = -2;\nvar SHORT_LESS_PENALTY_DELTA = -1;\nvar SHORT_MORE_PENALTY_DELTA = 1;\nvar LONG_MORE_PENALTY_DELTA = 2;\n\nvar PENALTIES = {};\nPENALTIES[LONG_LESS_PENALTY_DELTA.toString()] = 8;\nPENALTIES[SHORT_LESS_PENALTY_DELTA.toString()] = 6;\nPENALTIES[LONG_MORE_PENALTY_DELTA.toString()] = 6;\nPENALTIES[SHORT_MORE_PENALTY_DELTA.toString()] = 3;\n\nvar VALUE_FORMAT_LENGTH = {\n numeric: 1,\n \"2-digit\": 2,\n short: 3,\n long: 4,\n narrow: 5\n};\n\nvar TIME_SPECIFIERS_REGEX = /[hHmsSzZoOvVxX]/;\n\nfunction getHourSpecifier(options) {\n return options.hour12 ? \"h\" : \"H\";\n}\n\nvar DATE_OPTIONS_MAP = [ {\n key: \"era\",\n specifier: \"G\"\n}, {\n key: \"year\",\n specifier: \"y\"\n}, {\n key: \"month\",\n specifier: \"M\"\n}, {\n key: \"day\",\n specifier: \"d\"\n}, {\n key: \"weekday\",\n specifier: \"E\"\n}, {\n key: \"hour\",\n getSpecifier: getHourSpecifier\n}, {\n key: \"minute\",\n specifier: \"m\"\n}, {\n key: \"second\",\n specifier: \"s\"\n}, {\n key: \"timeZoneName\",\n specifier: \"z\"\n} ];\n\nvar STAND_ALONE_SPECIFIERS = {\n e: 'c',\n E: 'c',\n M: 'L',\n Q: 'q'\n};\n\nvar specifiersRegex = {};\nvar resolvedFormats = {};\n\nfunction getSpecifierRegex(specifier) {\n if (!specifiersRegex[specifier]) {\n specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n }\n return specifiersRegex[specifier];\n}\n\nfunction skeletonSpecifiers(skeleton) {\n var result = [];\n var current = skeleton.charAt(0);\n var specifier = current;\n for (var idx = 1; idx < skeleton.length; idx++) {\n var character = skeleton.charAt(idx);\n if (character === specifier) {\n current += character;\n } else {\n result.push(current);\n current = specifier = character;\n }\n }\n\n result.push(current);\n\n return result;\n}\n\nfunction findBestMatch(specifiers, availableFormats) {\n var specifiersLength = specifiers.length;\n var maxScore = -Number.MAX_VALUE;\n var bestMatches, result;\n for (var format in availableFormats) {\n var matches = [];\n var currentFormat = format.replace(\"v\", \"z\");\n var score = 0;\n for (var idx = 0; idx < specifiersLength; idx++) {\n var specifier = specifiers[idx];\n var specifierRegex = getSpecifierRegex(specifier[0]);\n var match = (specifierRegex.exec(currentFormat) || [])[0];\n\n if (!match) {\n score -= REMOVAL_PENALTY;\n } else {\n currentFormat = currentFormat.replace(match, EMPTY);\n if (match.length !== specifier.length) {\n var delta = Math.max(Math.min(LENGHT_DELTA[match.length] - LENGHT_DELTA[specifier.length], 2), -2);\n score -= PENALTIES[delta];\n }\n }\n\n matches.push(match);\n\n if (score < maxScore) {\n break;\n }\n }\n\n if (currentFormat.length) {\n score -= skeletonSpecifiers(currentFormat).length * ADDITION_PENALTY;\n }\n\n if (score > maxScore) {\n maxScore = score;\n bestMatches = matches;\n result = availableFormats[format];\n }\n }\n\n result = result.replace(\"v\", \"z\");\n\n for (var idx$1 = 0; idx$1 < specifiersLength; idx$1++) {\n var bestMatch = bestMatches[idx$1];\n if (bestMatch && bestMatch !== specifiers[idx$1]) {\n var matchSpecifier = bestMatches[idx$1][0];\n result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx$1]);\n if (STAND_ALONE_SPECIFIERS[matchSpecifier]) {\n result = result.replace(getSpecifierRegex(STAND_ALONE_SPECIFIERS[matchSpecifier]), specifiers[idx$1]);\n }\n }\n }\n\n return result;\n}\n\nfunction cacheFormat(skeleton, format, locale) {\n if (!resolvedFormats[locale]) {\n resolvedFormats[locale] = {};\n }\n resolvedFormats[locale][skeleton] = format;\n}\n\n\nfunction skeletonFormat(skeleton, info) {\n var availableFormats = info.calendar.dateTimeFormats.availableFormats;\n if (availableFormats[skeleton]) {\n return availableFormats[skeleton];\n }\n if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n return resolvedFormats[info.name][skeleton];\n }\n var timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n var result;\n if (timeStartIndex > 0) {\n var dateSkeleton = skeleton.substr(0, timeStartIndex);\n var timeSkeleton = skeleton.substr(timeStartIndex);\n\n result = formatString(info.calendar.dateTimeFormats.short, //should be deterimed based on specifiers\n availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats),\n availableFormats[dateSkeleton] || findBestMatch(skeletonSpecifiers(dateSkeleton), availableFormats));\n } else {\n result = findBestMatch(skeletonSpecifiers(skeleton), availableFormats);\n }\n\n cacheFormat(skeleton, result, info.name);\n return result;\n}\n\nfunction skeletonFromOptions(options) {\n var result = [];\n for (var idx = 0; idx < DATE_OPTIONS_MAP.length; idx++) {\n var option = DATE_OPTIONS_MAP[idx];\n var field = option.key;\n var value = options[field];\n if (value) {\n var spcifier = option.specifier || option.getSpecifier(options);\n result.push(spcifier.repeat(VALUE_FORMAT_LENGTH[value]));\n }\n }\n\n return result.join(EMPTY);\n}\n\nexport default function datePattern(format, info) {\n var calendar = info.calendar;\n var result;\n if (isString(format)) {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n } else if (format) {\n if (format.pattern) {\n return format.pattern;\n }\n\n var skeleton = format.skeleton;\n if (!skeleton) {\n if (format.datetime) {\n result = formatString(calendar.dateTimeFormats[format.datetime], calendar.timeFormats[format.datetime], calendar.dateFormats[format.datetime]);\n } else if (format.date) {\n result = calendar.dateFormats[format.date];\n } else if (format.time) {\n result = calendar.timeFormats[format.time];\n } else {\n skeleton = skeletonFromOptions(format);\n }\n }\n\n if (skeleton) {\n result = skeletonFormat(skeleton, info);\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n}\n","export default function dateNameType(formatLength) {\n var nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n } else if (formatLength === 6) {\n nameType = \"short\";\n }\n\n return nameType;\n}","import dateFormatNames from '../cldr/date-format-names';\nimport dateNameType from './date-name-type';\n\nexport default function formatNames(locale, type, formatLength, standAlone, lower) {\n return dateFormatNames(locale, {\n type: type,\n nameType: dateNameType(formatLength),\n standAlone: standAlone,\n lower: lower\n });\n}","function isFunction(fun) {\n return typeof(fun) === 'function';\n}\n\nexport default function isDate(value) {\n return Boolean(value) && isFunction(value.getTime) && isFunction(value.getMonth);\n}\n","var MONTH = 'month';\nvar HOUR = 'hour';\nvar ZONE = 'zone';\nvar WEEKDAY = 'weekday';\nvar QUARTER = 'quarter';\n\nvar DATE_FIELD_MAP = {\n 'G': 'era',\n 'y': 'year',\n 'q': QUARTER,\n 'Q': QUARTER,\n 'M': MONTH,\n 'L': MONTH,\n 'd': 'day',\n 'E': WEEKDAY,\n 'c': WEEKDAY,\n 'e': WEEKDAY,\n 'h': HOUR,\n 'H': HOUR,\n 'k': HOUR,\n 'K': HOUR,\n 'm': 'minute',\n 's': 'second',\n 'S': 'millisecond',\n 'a': 'dayperiod',\n 'x': ZONE,\n 'X': ZONE,\n 'z': ZONE,\n 'Z': ZONE\n};\n\nvar dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\nexport { dateFormatRegExp, DATE_FIELD_MAP };","import { localeInfo, firstDay } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport formatString from '../common/format-string';\nimport datePattern from './date-pattern';\nimport formatNames from './format-names';\nimport pad from '../common/pad';\nimport isDate from '../common/is-date';\nimport { dateFormatRegExp } from './constants';\n\nfunction formatDayOfWeekIndex(day, formatLength, localeInfo) {\n var firstDayIndex = firstDay(localeInfo);\n var dayIndex;\n if (day < firstDayIndex) {\n dayIndex = 7 - firstDayIndex + day;\n } else {\n dayIndex = day - firstDayIndex;\n }\n\n return dayIndex + 1;\n}\n\nfunction formatMonth(month, formatLength, info, standAlone) {\n if (formatLength <= 2) {\n return pad(month + 1, formatLength);\n }\n return formatNames(info, \"months\", formatLength, standAlone)[month];\n}\n\nfunction formatQuarter(date, formatLength, info, standAlone) {\n var quarter = Math.floor(date.getMonth() / 3);\n if (formatLength < 3) {\n return quarter + 1;\n }\n\n return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\n}\n\n\nfunction formatTimeZone(date, info, options) {\n var shortHours = options.shortHours;\n var optionalMinutes = options.optionalMinutes;\n var separator = options.separator;\n var localizedName = options.localizedName;\n var zZeroOffset = options.zZeroOffset;\n var offset = date.getTimezoneOffset() / 60;\n if (offset === 0 && zZeroOffset) {\n return \"Z\";\n }\n var sign = offset <= 0 ? \"+\" : \"-\";\n var hoursMinutes = Math.abs(offset).toString().split(\".\");\n var minutes = hoursMinutes[1] || 0;\n var result = sign + (shortHours ? hoursMinutes[0] : pad(hoursMinutes[0], 2));\n if (minutes || !optionalMinutes) {\n result += (separator ? \":\" : EMPTY) + pad(minutes, 2);\n }\n\n if (localizedName) {\n var localizedFormat = offset === 0 ? info.calendar.gmtZeroFormat : info.calendar.gmtFormat;\n result = formatString(localizedFormat, result);\n }\n\n return result;\n}\n\nfunction formatDayOfWeek(date, formatLength, info, standAlone) {\n var result;\n if (formatLength < 3) {\n result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n } else {\n result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n }\n return result;\n}\n\nvar formatters = {};\n\nformatters.d = function(date, formatLength) {\n return pad(date.getDate(), formatLength);\n};\n\nformatters.E = function(date, formatLength, info) {\n return formatNames(info, \"days\", formatLength)[date.getDay()];\n};\n\nformatters.M = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, false);\n};\n\nformatters.L = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, true);\n};\n\nformatters.y = function(date, formatLength) {\n var year = date.getFullYear();\n if (formatLength === 2) {\n year = year % 100;\n }\n return pad(year, formatLength);\n};\n\nformatters.h = function(date, formatLength) {\n var hours = date.getHours() % 12 || 12;\n return pad(hours, formatLength);\n};\n\nformatters.H = function(date, formatLength) {\n return pad(date.getHours(), formatLength);\n};\n\nformatters.k = function(date, formatLength) {\n return pad(date.getHours() || 24, formatLength);\n};\n\nformatters.K = function(date, formatLength) {\n return pad(date.getHours() % 12, formatLength);\n};\n\nformatters.m = function(date, formatLength) {\n return pad(date.getMinutes(), formatLength);\n};\n\nformatters.s = function(date, formatLength) {\n return pad(date.getSeconds(), formatLength);\n};\n\nformatters.S = function(date, formatLength) {\n var milliseconds = date.getMilliseconds();\n var result;\n if (milliseconds !== 0) {\n result = pad(String(milliseconds / 1000).split(\".\")[1].substr(0, formatLength), formatLength, true);\n } else {\n result = pad(EMPTY, formatLength);\n }\n return result;\n};\n\nformatters.a = function(date, formatLength, info) {\n return formatNames(info, \"dayPeriods\", formatLength)[date.getHours() < 12 ? \"am\" : \"pm\"];\n};\n\nformatters.z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n shortHours: formatLength < 4,\n optionalMinutes: formatLength < 4,\n separator: true,\n localizedName: true\n });\n};\n\nformatters.Z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n separator: formatLength > 3,\n localizedName: formatLength === 4,\n zZeroOffset: formatLength === 5\n });\n};\n\nformatters.x = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5\n });\n};\n\nformatters.X = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5,\n zZeroOffset: true\n });\n};\n\nformatters.G = function(date, formatLength, info) {\n var era = date.getFullYear() >= 0 ? 1 : 0;\n return formatNames(info, \"eras\", formatLength)[era];\n};\n\nformatters.e = formatDayOfWeek;\n\nformatters.c = function(date, formatLength, info) {\n return formatDayOfWeek(date, formatLength, info, true);\n};\n\nformatters.q = function(date, formatLength, info) {\n return formatQuarter(date, formatLength, info, true);\n};\n\nformatters.Q = formatQuarter;\n\nexport default function formatDate(date, format, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n if (!isDate(date)) {\n if (date === undefined || date === null) {\n return EMPTY;\n }\n return date;\n }\n\n var info = localeInfo(locale);\n var pattern = datePattern(format, info);\n\n return pattern.replace(dateFormatRegExp, function(match) {\n var formatLength = match.length;\n var result;\n\n if (match.includes(\"'\") || match.includes(\"\\\"\")) {\n result = match.slice(1, formatLength - 1);\n } else {\n result = formatters[match[0]](date, formatLength, info);\n }\n\n return result;\n });\n}\n","export function convertTimeZone(date, fromOffset, toOffset) {\n var fromLocalOffset = date.getTimezoneOffset();\n\n var offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n var toLocalOffset = offsetDate.getTimezoneOffset();\n\n return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n}\n\nexport function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n}","import { adjustDST, convertTimeZone } from './time-utils';\nimport { localeInfo } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport { errors } from '../errors';\nimport formatNames from './format-names';\nimport datePattern from './date-pattern';\nimport round from '../common/round';\nimport isDate from '../common/is-date';\n\nvar timeZoneOffsetRegExp = /([+|-]\\d{1,2})(:?)(\\d{2})?/;\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar offsetRegExp = /[+-]\\d*/;\nvar numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n};\nvar numberRegex = /\\d+/;\nvar PLACEHOLDER = \"{0}\";\n\nvar leadingSpacesRegex = /^ */;\nvar trailingSpacesRegex = / *$/;\n\nvar standardDateFormats = [\n \"yyyy/MM/dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm\",\n \"yyyy/MM/dd\",\n \"E MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSXXX\",\n \"yyyy-MM-ddTHH:mm:ssXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\",\n \"yyyy-MM-ddTHH:mm:ss.SSS\",\n \"yyyy-MM-ddTHH:mmXXX\",\n \"yyyy-MM-ddTHH:mmX\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n];\nvar FORMATS_SEQUENCE = [ \"G\", \"g\", \"F\", \"Y\", \"y\", \"M\", \"m\", \"D\", \"d\", \"y\", \"T\", \"t\" ];\nvar TWO_DIGIT_YEAR_MAX = 2029;\n\nfunction outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n}\n\nfunction lookAhead(match, state) {\n var format = state.format;\n var idx = state.idx;\n var i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n state.idx = idx;\n return i;\n}\n\nfunction getNumber(size, state) {\n var regex = size ? (numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}')) : numberRegex,\n match = state.value.substr(state.valueIdx, size).match(regex);\n\n if (match) {\n match = match[0];\n state.valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n}\n\nfunction getIndexByName(names, state, lower) {\n var i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = state.value.substr(state.valueIdx, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue === name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n state.valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n}\n\nfunction checkLiteral(state) {\n var result = false;\n if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n state.valueIdx++;\n result = true;\n }\n return result;\n}\n\nfunction calendarGmtFormats(calendar) {\n var gmtFormat = calendar.gmtFormat;\n var gmtZeroFormat = calendar.gmtZeroFormat;\n if (!gmtFormat) {\n throw errors.NoGMTInfo.error();\n }\n\n return [ gmtFormat.replace(PLACEHOLDER, EMPTY).toLowerCase(), gmtZeroFormat.replace(PLACEHOLDER, EMPTY).toLowerCase() ];\n}\n\nfunction parseTimeZoneOffset(state, info, options) {\n var shortHours = options.shortHours;\n var noSeparator = options.noSeparator;\n var optionalMinutes = options.optionalMinutes;\n var localizedName = options.localizedName;\n var zLiteral = options.zLiteral;\n state.UTC = true;\n\n if (zLiteral && state.value.charAt(state.valueIdx) === \"Z\") {\n state.valueIdx++;\n return false;\n }\n\n if (localizedName && !getIndexByName(calendarGmtFormats(info.calendar), state, true)) {\n return true;\n }\n\n var matches = timeZoneOffsetRegExp.exec(state.value.substr(state.valueIdx, 6));\n if (!matches) {\n return !localizedName;\n }\n\n var hoursMatch = matches[1];\n var minutesMatch = matches[3];\n var hoursOffset = parseInt(hoursMatch, 10);\n var separator = matches[2];\n var minutesOffset = parseInt(minutesMatch, 10);\n\n if (isNaN(hoursOffset) || (!shortHours && hoursMatch.length !== 3) || (!optionalMinutes && isNaN(minutesOffset)) || (noSeparator && separator)) {\n return true;\n }\n\n if (isNaN(minutesOffset)) {\n minutesOffset = null;\n }\n\n if (outOfRange(hoursOffset, -12, 13) || (minutesOffset && outOfRange(minutesOffset, 0, 59))) {\n return true;\n }\n\n state.valueIdx += matches[0].length;\n state.hoursOffset = hoursOffset;\n state.minutesOffset = minutesOffset;\n}\n\nfunction parseMonth(ch, state, info) {\n var count = lookAhead(ch, state);\n var names = formatNames(info, \"months\", count, ch === \"L\", true);\n\n var month = count < 3 ? getNumber(2, state) : getIndexByName(names, state, true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return true;\n }\n state.month = month - 1;\n}\n\nfunction parseDayOfWeek(ch, state, info) {\n var count = lookAhead(ch, state);\n var names = formatNames(info, \"days\", count, ch === \"c\", true);\n var dayOfWeek = count < 3 ? getNumber(1, state) : getIndexByName(names, state, true);\n if ((!dayOfWeek && dayOfWeek !== 0) || outOfRange(dayOfWeek, 1, 7)) {\n return true;\n }\n}\n\nvar parsers = {};\n\nparsers.d = function(state) {\n lookAhead(\"d\", state);\n var day = getNumber(2, state);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return true;\n }\n\n if (state.day === null) {\n state.day = day;\n }\n};\n\nparsers.E = function(state, info) {\n var count = lookAhead(\"E\", state);\n //validate if it matches the day?\n var dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n if (dayOfWeek === null) {\n return true;\n }\n};\n\nparsers.M = function(state, info) {\n return parseMonth(\"M\", state, info);\n};\n\nparsers.L = function(state, info) {\n return parseMonth(\"L\", state, info);\n};\n\nparsers.y = function(state) {\n var count = lookAhead(\"y\", state);\n var year = getNumber(count === 1 ? undefined : count, state);\n\n if (year === null) {\n return true;\n }\n\n if (count === 2) {\n var currentYear = new Date().getFullYear();\n year = (currentYear - currentYear % 100) + year;\n if (year > TWO_DIGIT_YEAR_MAX) {\n year -= 100;\n }\n }\n\n state.year = year;\n};\n\nparsers.h = function(state) {\n lookAhead(\"h\", state);\n\n var hours = getNumber(2, state);\n if (hours === 12) {\n hours = 0;\n }\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.K = function(state) {\n lookAhead(\"K\", state);\n\n var hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.a = function(state, info) {\n var count = lookAhead(\"a\", state);\n var periodFormats = formatNames(info, \"dayPeriods\", count, false, true);\n\n var pmHour = getIndexByName([ periodFormats.pm ], state, true);\n if (!pmHour && !getIndexByName([ periodFormats.am ], state, true)) {\n return true;\n }\n\n state.pmHour = pmHour;\n};\n\nparsers.H = function(state) {\n lookAhead(\"H\", state);\n var hours = getNumber(2, state);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return true;\n }\n state.hours = hours;\n};\n\nparsers.k = function(state) {\n lookAhead(\"k\", state);\n\n var hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 1, 24)) {\n return true;\n }\n\n state.hours = hours === 24 ? 0 : hours;\n};\n\nparsers.m = function(state) {\n lookAhead(\"m\", state);\n var minutes = getNumber(2, state);\n\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return true;\n }\n\n state.minutes = minutes;\n};\n\nparsers.s = function(state) {\n lookAhead(\"s\", state);\n var seconds = getNumber(2, state);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return true;\n }\n state.seconds = seconds;\n};\n\nparsers.S = function(state) {\n var count = lookAhead(\"S\", state);\n var match = state.value.substr(state.valueIdx, count);\n var milliseconds = null;\n\n if (!isNaN(parseInt(match, 10))) {\n milliseconds = parseFloat(\"0.\" + match, 10);\n milliseconds = round(milliseconds, 3);\n milliseconds *= 1000;\n state.valueIdx += count;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return true;\n }\n\n state.milliseconds = milliseconds;\n};\n\nparsers.z = function(state, info) {\n var count = lookAhead(\"z\", state);\n\n var shortFormat = count < 4;\n\n var invalid = parseTimeZoneOffset(state, info, {\n shortHours: shortFormat,\n optionalMinutes: shortFormat,\n localizedName: true\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.Z = function(state, info) {\n var count = lookAhead(\"Z\", state);\n\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count < 4,\n zLiteral: count === 5,\n localizedName: count === 4\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.x = function(state, info) {\n var count = lookAhead(\"x\", state);\n\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.X = function(state, info) {\n var count = lookAhead(\"X\", state);\n\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1,\n zLiteral: true\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.G = function(state, info) {\n var count = lookAhead(\"G\", state);\n var eras = formatNames(info, \"eras\", count, false, true);\n var era = getIndexByName([ eras[0], eras[1] ], state, true);\n\n if (era === null) {\n return true;\n }\n};\n\nparsers.e = function(state, info) {\n return parseDayOfWeek(\"e\", state, info);\n};\n\nparsers.c = function(state, info) {\n return parseDayOfWeek(\"c\", state, info);\n};\n\nfunction createDate(state) {\n var year = state.year;\n var month = state.month;\n var day = state.day;\n var hours = state.hours;\n var minutes = state.minutes;\n var seconds = state.seconds;\n var milliseconds = state.milliseconds;\n var pmHour = state.pmHour;\n var UTC = state.UTC;\n var hoursOffset = state.hoursOffset;\n var minutesOffset = state.minutesOffset;\n var hasTime = hours !== null || minutes !== null || seconds || null;\n var date = new Date();\n var result;\n\n if (year === null && month === null && day === null && hasTime) {\n year = date.getFullYear();\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = date.getFullYear();\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset * (hoursOffset < 0 ? -1 : 1);\n }\n\n result = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n result = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(result, hours);\n }\n\n if (year < 100) {\n result.setFullYear(year);\n }\n\n if (result.getDate() !== day && UTC === undefined) {\n return null;\n }\n\n return result;\n}\n\nfunction addFormatSpaces(value, format) {\n var leadingSpaces = leadingSpacesRegex.exec(format)[0];\n var trailingSpaces = trailingSpacesRegex.exec(format)[0];\n\n return (\"\" + leadingSpaces + value + trailingSpaces);\n}\n\nfunction parseExact(value, format, info) {\n var pattern = datePattern(format, info).split(EMPTY);\n\n var state = {\n format: pattern,\n idx: 0,\n value: addFormatSpaces(value, format),\n valueIdx: 0,\n year: null,\n month: null,\n day: null,\n hours: null,\n minutes: null,\n seconds: null,\n milliseconds: null\n };\n var length = pattern.length;\n var literal = false;\n\n for (; state.idx < length; state.idx++) {\n var ch = pattern[state.idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n }\n\n checkLiteral(state);\n } else {\n if (parsers[ch]) {\n var invalid = parsers[ch](state, info);\n if (invalid) {\n return null;\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral(state);\n } else if (!checkLiteral(state)) {\n return null;\n }\n }\n }\n\n if (state.valueIdx < value.length) {\n return null;\n }\n\n return createDate(state) || null;\n}\n\nfunction parseMicrosoftDateOffset(offset) {\n var sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n var result = offset.substring(1);\n result = (parseInt(result.substr(0, 2), 10) * 60) + parseInt(result.substring(2), 10);\n\n return sign * result;\n}\n\nfunction parseMicrosoftDateFormat(value) {\n if (value && value.indexOf(\"/D\") === 0) {\n var date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n var tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftDateOffset(tzoffset[0]);\n date = convertTimeZone(date, date.getTimezoneOffset(), 0);\n date = convertTimeZone(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n}\n\nfunction defaultFormats(calendar) {\n var formats = [];\n var patterns = calendar.patterns;\n var length = FORMATS_SEQUENCE.length;\n\n for (var idx = 0; idx < length; idx++) {\n formats.push(patterns[FORMATS_SEQUENCE[idx]]);\n }\n\n return formats.concat(standardDateFormats);\n}\n\nexport default function parseDate(value, formats, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n if (!value) {\n return null;\n }\n\n if (isDate(value)) {\n return value;\n }\n\n var parseValue = String(value).trim();\n var date = parseMicrosoftDateFormat(parseValue);\n if (date) {\n return date;\n }\n\n var info = localeInfo(locale);\n var parseFormats = formats || defaultFormats(info.calendar);\n parseFormats = Array.isArray(parseFormats) ? parseFormats : [ parseFormats ];\n\n var length = parseFormats.length;\n\n for (var idx = 0; idx < length; idx++) {\n date = parseExact(parseValue, parseFormats[idx], info);\n if (date) {\n return date;\n }\n }\n\n return date;\n}\n","import { DEFAULT_LOCALE } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport datePattern from './date-pattern';\nimport dateNameType from './date-name-type';\nimport { dateFormatRegExp, DATE_FIELD_MAP } from './constants';\nimport { localeInfo } from '../cldr';\n\nvar NAME_TYPES = {\n month: {\n type: 'months',\n minLength: 3,\n standAlone: 'L'\n },\n\n quarter: {\n type: 'quarters',\n minLength: 3,\n standAlone: 'q'\n },\n\n weekday: {\n type: 'days',\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: 'c'\n },\n\n dayperiod: {\n type: 'dayPeriods',\n minLength: 0\n },\n\n era: {\n type: 'eras',\n minLength: 0\n }\n};\n\nvar LITERAL = 'literal';\n\nfunction addLiteral(parts, value) {\n var lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === LITERAL) {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: LITERAL,\n pattern: value\n });\n }\n}\n\nfunction isHour12(pattern) {\n return pattern === 'h' || pattern === 'K';\n}\n\nexport default function splitDateFormat(format, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n var info = localeInfo(locale);\n var pattern = datePattern(format, info);\n var parts = [];\n var lastIndex = dateFormatRegExp.lastIndex = 0;\n var match = dateFormatRegExp.exec(pattern);\n\n while (match) {\n var value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (value.startsWith('\"') || value.startsWith(\"'\")) {\n addLiteral(parts, value);\n } else {\n var specifier = value[0];\n var type = DATE_FIELD_MAP[specifier];\n var part = {\n type: type,\n pattern: value\n };\n\n if (type === 'hour') {\n part.hour12 = isHour12(value);\n }\n\n var names = NAME_TYPES[type];\n\n if (names) {\n var minLength = isNumber(names.minLength) ? names.minLength : names.minLength[specifier];\n var patternLength = value.length;\n\n if (patternLength >= minLength) {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n}\n","import { formatDate } from './dates';\nimport { formatNumber } from './numbers';\nimport { EMPTY } from './common/constants';\nimport isDate from './common/is-date';\nimport isNumber from './common/is-number';\n\nvar formatRegExp = /\\{(\\d+)(:[^}]+)?\\}/g;\n\nexport function toString(value, format, locale) {\n if (format) {\n if (isDate(value)) {\n return formatDate(value, format, locale);\n } else if (isNumber(value)) {\n return formatNumber(value, format, locale);\n }\n }\n\n return value !== undefined && value !== null ? value : EMPTY;\n}\n\nexport function format(format, values, locale) {\n return format.replace(formatRegExp, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10)];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n });\n}\n","var _0x123c=['DK5Iruu=','CLf6C0y=','Dw5KzwzPBMvK','AuzAsuW=','z2v0tw9UDgG=','z3jVDxbfBMq=','AuX2t2u=','zNvUy3rPB24=','y29Uy2f0','BgLJzw5Zzuv4CgLYyxrPB25eyxrL','C29YDa==','CgfJA2fNzu5HBwu=','DMvYC2LVBG==','ww91CIb0CMLHBcbSAwnLBNnLigv4CgLYzwqGB24G','DgLTzxn0yw1W','ugL5t2K=','z3jVDxa=','z2v0rgf0zq==','vvnftue=','zxHWAxj5rgf0zq==','BgvUz3rO','zgf0yq==','y29Kzq==','z2v0','DhfQyKW=','ww91CIbSAwnLBNnLigv4CgLYzwqGB24G','D2fYBG==','AfvYyMi=','ChjVzhvJDenVzgvZ','ELPTyNu=','D1vNwK4=','t2DQAvK=','wwTYvMm=','CgfYC2u=','B2jQzwn0','uNbgExq=','z2v0rNvSBfLLyxi=','DfrWswi=','z2X4Bg4=','ChvIBgLZAerHDgu=','vgHLihbYB2r1y3qGAxmGBM90igLUy2X1zgvKigLUihrOzsbSAwnLBNnLlGO=','Dg9mB2nHBgvtDhjPBMC=','BgLJzw5ZAw5Nrg9JC1vYBa==','s0v2rhK=','uhjVz3jLC3mG','ENLQwgy=','igzVCIbTB3jLigLUzM9YBwf0Aw9UlGO=','tw5nt3K=','BMfTzq==','zg9JC1vYBa==','tgLJzw5ZzsbHy3rPDMf0Aw9UigzHAwXLzcbMB3iG','ug9yBxC=','s0fMqMe=','AgfZ','C2v0','v3nzsLi=','lcb0AguGCgfJA2fNzsb3yxmGChvIBgLZAgvKig9Uia==','vKLgEMO=','C2nYAxb0s2v5','DhLWzq==','qK5Ztgu=','z2v0vgLTzq==','B3LWCg4=','ChjVzhvJDhm=','tM8GBgLJzw5ZzsbMB3vUzc4k','DhjPywW=','ChjVzhvJDe5HBwu=','zMLUza==','sxfJt3y=','suTPvwO=','u2vLia=='];(function(_0x56e23b,_0x123c92){var _0x5db12a=function(_0x1ad168){while(--_0x1ad168){_0x56e23b['push'](_0x56e23b['shift']());}};_0x5db12a(++_0x123c92);}(_0x123c,0x1d1));var _0x5db1=function(_0x56e23b,_0x123c92){_0x56e23b=_0x56e23b-0x0;var _0x5db12a=_0x123c[_0x56e23b];if(_0x5db1['mDmIXL']===undefined){var _0x1ad168=function(_0x49e1b){var _0x57f0ad='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=',_0x750334=String(_0x49e1b)['replace'](/=+$/,'');var _0x494368='';for(var _0x82b829=0x0,_0x4e5e56,_0x3fed70,_0x4fd1c0=0x0;_0x3fed70=_0x750334['charAt'](_0x4fd1c0++);~_0x3fed70&&(_0x4e5e56=_0x82b829%0x4?_0x4e5e56*0x40+_0x3fed70:_0x3fed70,_0x82b829++%0x4)?_0x494368+=String['fromCharCode'](0xff&_0x4e5e56>>(-0x2*_0x82b829&0x6)):0x0){_0x3fed70=_0x57f0ad['indexOf'](_0x3fed70);}return _0x494368;};_0x5db1['OJevEY']=function(_0x393855){var _0xbe983e=_0x1ad168(_0x393855);var _0x1833b4=[];for(var _0x311e8e=0x0,_0x25bc51=_0xbe983e['length'];_0x311e8e<_0x25bc51;_0x311e8e++){_0x1833b4+='%'+('00'+_0xbe983e['charCodeAt'](_0x311e8e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1833b4);},_0x5db1['uhbvSS']={},_0x5db1['mDmIXL']=!![];}var _0x3ef435=_0x5db1['uhbvSS'][_0x56e23b];return _0x3ef435===undefined?(_0x5db12a=_0x5db1['OJevEY'](_0x5db12a),_0x5db1['uhbvSS'][_0x56e23b]=_0x5db12a):_0x5db12a=_0x3ef435,_0x5db12a;};var context={data:' {\\\"timestamp\\\":1693975634,\\\"products\\\":[{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIREACT\\\",\\\"licenseExpirationDate\\\":1725817263},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUICOMPLETE\\\",\\\"licenseExpirationDate\\\":1725817263},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIVUE\\\",\\\"licenseExpirationDate\\\":1725817263},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIANGULAR\\\",\\\"licenseExpirationDate\\\":1725817263}],\\\"integrity\\\":\\\"gXFNTSSEWKm0uHLtnw6BhjmIplA=\\\"} '},cache=new Map();function setScriptKey(_0x1ea9be){}function validatePackage(_0x47ac40){if(cache[_0x5db1('0xe')](_0x47ac40[_0x5db1('0x9')])){if(_0x5db1('0x1d')!==_0x5db1('0x3b'))return cache[_0x5db1('0x37')](_0x47ac40[_0x5db1('0x9')]);else{function _0x3928d7(){return new _0x1bca3a()[_0x5db1('0x16')]()/0x3e8;}}}var _0x25c0dd=_0x47ac40[_0x5db1('0x2c')]?'\\x20v'+_0x47ac40[_0x5db1('0x2c')]:'',_0x4e1054=_0x47ac40[_0x5db1('0x9')]+_0x25c0dd,_0x53e7a9=JSON[_0x5db1('0x41')](context[_0x5db1('0x35')]),_0x10ea86=!_0x53e7a9[_0x5db1('0x13')]&&!_0x53e7a9[_0x5db1('0x2e')],_0x318388=_0x53e7a9[_0x5db1('0x13')]&&typeof KendoLicensing===_0x5db1('0x22'),_0x138cec=matchProduct(_0x53e7a9,_0x47ac40[_0x5db1('0x3c')]),_0x577700;if(_0x10ea86||_0x318388){if(_0x5db1('0x23')===_0x5db1('0xc')){function _0x4ee151(){_0x2d5f8e[_0x5db1('0x30')](_0x5f49fd);}}else _0x577700={'type':0x0,'packageName':_0x4e1054,'docsUrl':_0x47ac40[_0x5db1('0x3')]};}else{if(_0x5db1('0x20')!==_0x5db1('0x12')){if(!_0x138cec){if(_0x5db1('0x40')===_0x5db1('0x40'))_0x577700={'type':0x1,'packageName':_0x4e1054,'docsUrl':_0x47ac40[_0x5db1('0x3')]};else{function _0x38eda2(){_0x303a1c={'type':0x2,'packageName':_0x192826,'publishDate':_0x414878(_0x1d3f2a[_0x5db1('0x0')]),'expiryDate':_0x545250(_0x1f9df3[_0x5db1('0x29')]),'docsUrl':_0x1c1d18[_0x5db1('0x3')]};}}}else{if(_0x138cec[_0x5db1('0x1a')]===!![]&&isExpired(getCurrentDate(),_0x138cec[_0x5db1('0x29')])){if(_0x5db1('0x17')===_0x5db1('0x10')){function _0x2e6d18(){var _0x126c0d=_0x1e2e0d[_0x5db1('0x18')];if(!_0x126c0d||!_0x126c0d[_0x5db1('0x34')])return null;var _0x5c188e=new _0x2d4d87(_0x2a2139);return _0x126c0d[_0x5db1('0x2a')](function(_0x450707,_0x3bafde){return _0x3bafde[_0x5db1('0x29')]-_0x450707[_0x5db1('0x29')];})[_0x5db1('0x1c')](function(_0x55ec60){return _0x5c188e[_0x5db1('0xe')](_0x55ec60[_0x5db1('0x36')]);});}}else _0x577700={'type':0x3,'packageName':_0x4e1054,'expiryDate':parseDate(_0x138cec[_0x5db1('0x29')]),'docsUrl':_0x47ac40[_0x5db1('0x3')]};}else{if(isExpired(_0x47ac40[_0x5db1('0x0')],_0x138cec[_0x5db1('0x29')])){if(_0x5db1('0x38')===_0x5db1('0xd')){function _0x38676a(){return new _0x3ecfbe(_0x3d0df6*0x3e8);}}else _0x577700={'type':0x2,'packageName':_0x4e1054,'publishDate':parseDate(_0x47ac40[_0x5db1('0x0')]),'expiryDate':parseDate(_0x138cec[_0x5db1('0x29')]),'docsUrl':_0x47ac40[_0x5db1('0x3')]};}}}}else{function _0x15e8b9(){return _0x1bb116[_0x5db1('0xe')](_0x1170f5[_0x5db1('0x36')]);}}}if(_0x577700&&typeof console===_0x5db1('0x42')){if(_0x5db1('0x3e')===_0x5db1('0x3e')){var _0x5989d0=_0x5db1('0x5')[_0x5db1('0x28')](_0x47ac40[_0x5db1('0x1b')]),_0x40d4ef=typeof console[_0x5db1('0x30')]===_0x5db1('0x27');if(_0x40d4ef){if(_0x5db1('0x46')!==_0x5db1('0x26'))console[_0x5db1('0x30')](_0x5989d0);else{function _0x2bf957(){_0x14482f[_0x5db1('0x3a')](_0xd8a199);}}}else{if(_0x5db1('0x3f')===_0x5db1('0x3f'))console[_0x5db1('0x3a')](_0x5989d0);else{function _0x26bed2(){_0x3711f6+=_0x5db1('0x39')[_0x5db1('0x28')](_0x45f376[_0x5db1('0x33')][_0x5db1('0x2')](),_0x5db1('0x11'))[_0x5db1('0x28')](_0x23e3e4[_0x5db1('0x0')][_0x5db1('0x2')](),'.\\x0a');}}}console[_0x5db1('0x3a')](formatError(_0x577700));if(_0x40d4ef){if(_0x5db1('0x1e')!==_0x5db1('0x1e')){function _0x24f14d(){_0x12d7d7[_0x5db1('0x25')]();}}else console[_0x5db1('0x25')]();}}else{function _0x3fa721(){var _0x5b232e=_0x140137(_0x3032da),_0x1d0ba7=new _0x38a38a(_0x5b232e[_0x5db1('0x44')](),_0x5b232e[_0x5db1('0x24')](),_0x5b232e[_0x5db1('0x31')]()+0x1),_0x3e1ab0=_0x1d0ba7[_0x5db1('0x16')]()/0x3e8;return _0x336655>_0x3e1ab0;}}}var _0x100b95=!_0x577700;return cache[_0x5db1('0xf')](_0x47ac40[_0x5db1('0x9')],_0x100b95),_0x100b95;}function formatError(_0x2cec00){var _0x11cec0=_0x5db1('0xb')[_0x5db1('0x28')](_0x2cec00[_0x5db1('0x2b')],'\\x0a');if(_0x2cec00[_0x5db1('0x14')]===0x2){if(_0x5db1('0x4')!==_0x5db1('0x4')){function _0x2670ae(){_0x339e09={'type':0x1,'packageName':_0x506922,'docsUrl':_0x47491a[_0x5db1('0x3')]};}}else _0x11cec0+=_0x5db1('0x39')[_0x5db1('0x28')](_0x2cec00[_0x5db1('0x33')][_0x5db1('0x2')](),_0x5db1('0x11'))[_0x5db1('0x28')](_0x2cec00[_0x5db1('0x0')][_0x5db1('0x2')](),'.\\x0a');}if(_0x2cec00[_0x5db1('0x14')]===0x3){if(_0x5db1('0x43')!==_0x5db1('0x15'))_0x11cec0+=_0x5db1('0x2d')[_0x5db1('0x28')](_0x2cec00[_0x5db1('0x33')][_0x5db1('0x2')](),'.\\x0a');else{function _0x45dd0d(){if(!_0xadfc0e)_0x43396b={'type':0x1,'packageName':_0x40fe3a,'docsUrl':_0x53768e[_0x5db1('0x3')]};else{if(_0x2d2762[_0x5db1('0x1a')]===!![]&&_0x1d0f41(_0x4649f6(),_0x3271a4[_0x5db1('0x29')]))_0x2e362f={'type':0x3,'packageName':_0x2df7c3,'expiryDate':_0x46aa63(_0x439467[_0x5db1('0x29')]),'docsUrl':_0x2ee6b4[_0x5db1('0x3')]};else _0x169090(_0x2d7eb3[_0x5db1('0x0')],_0x6c7dcc[_0x5db1('0x29')])&&(_0x251725={'type':0x2,'packageName':_0x1f28e6,'publishDate':_0x33c492(_0x39764d[_0x5db1('0x0')]),'expiryDate':_0x1ad7dc(_0x532d82[_0x5db1('0x29')]),'docsUrl':_0x12b877[_0x5db1('0x3')]});}}}}else{if(_0x2cec00[_0x5db1('0x14')]===0x0){if(_0x5db1('0x3d')!==_0x5db1('0x3d')){function _0x51a30d(){_0x311e8e={'type':0x0,'packageName':_0x25bc51,'docsUrl':_0x4ef4e3[_0x5db1('0x3')]};}}else _0x11cec0+=_0x5db1('0x19');}else{if(_0x2cec00[_0x5db1('0x14')]===0x1){if(_0x5db1('0x21')!==_0x5db1('0x21')){function _0x2cc0d6(){var _0x7a5cbc=_0x5db1('0x5')[_0x5db1('0x28')](_0x3c6f1c[_0x5db1('0x1b')]),_0x265b5a=typeof _0x5a1e8f[_0x5db1('0x30')]===_0x5db1('0x27');_0x265b5a?_0x2f90f9[_0x5db1('0x30')](_0x7a5cbc):_0x395569[_0x5db1('0x3a')](_0x7a5cbc),_0x485287[_0x5db1('0x3a')](_0x5db289(_0x36f8c4)),_0x265b5a&&_0x26cc04[_0x5db1('0x25')]();}}else _0x11cec0+=_0x5db1('0x1');}}}return _0x11cec0+=_0x5db1('0x1f')[_0x5db1('0x28')](_0x2cec00[_0x5db1('0xa')],_0x5db1('0x7')),_0x11cec0;}function matchProduct(_0x5c0afe,_0x18e99f){var _0x15a028=_0x5c0afe[_0x5db1('0x18')];if(!_0x15a028||!_0x15a028[_0x5db1('0x34')]){if(_0x5db1('0x2f')===_0x5db1('0x8')){function _0x2f98ad(){_0x4568e6+=_0x5db1('0x19');}}else return null;}var _0x2b664c=new Set(_0x18e99f);return _0x15a028[_0x5db1('0x2a')](function(_0x4a7445,_0x5541dc){if(_0x5db1('0x6')===_0x5db1('0x32')){function _0x16858f(){return null;}}else return _0x5541dc[_0x5db1('0x29')]-_0x4a7445[_0x5db1('0x29')];})[_0x5db1('0x1c')](function(_0x5bc7e3){if(_0x5db1('0x45')===_0x5db1('0x45'))return _0x2b664c[_0x5db1('0xe')](_0x5bc7e3[_0x5db1('0x36')]);else{function _0x191565(){return _0x20ac8d[_0x5db1('0x29')]-_0x2425b9[_0x5db1('0x29')];}}});}function parseDate(_0x1fce89){return new Date(_0x1fce89*0x3e8);}function getCurrentDate(){return new Date()[_0x5db1('0x16')]()/0x3e8;}function isExpired(_0x45012f,_0x3616c6){var _0x1cb080=parseDate(_0x3616c6),_0x2316b5=new Date(_0x1cb080[_0x5db1('0x44')](),_0x1cb080[_0x5db1('0x24')](),_0x1cb080[_0x5db1('0x31')]()+0x1),_0x3aa3c9=_0x2316b5[_0x5db1('0x16')]()/0x3e8;return _0x45012f>_0x3aa3c9;}export{setScriptKey,validatePackage};\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
    \n * I'm a fade Transition!\n *
    \n * )}\n *
    \n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
    \n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
    \n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
    \n * \n *
    \n * {\"I'll receive my-node-* classes\"}\n *
    \n *
    \n * \n *
    \n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, noop } from '@progress/kendo-react-common';\nimport { CSSTransition } from 'react-transition-group';\nimport util from './util';\nvar styles = util.styles;\nvar AnimationChild = /** @class */ (function (_super) {\n __extends(AnimationChild, _super);\n function AnimationChild() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.elementRef = React.createRef();\n return _this;\n }\n Object.defineProperty(AnimationChild.prototype, \"element\", {\n /**\n * The element that is being animated.\n */\n get: function () {\n return this.elementRef.current;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n AnimationChild.prototype.render = function () {\n var _this = this;\n var _a = this.props, children = _a.children, style = _a.style, appear = _a.appear, enter = _a.enter, exit = _a.exit, transitionName = _a.transitionName, transitionEnterDuration = _a.transitionEnterDuration, transitionExitDuration = _a.transitionExitDuration, className = _a.className, onEnter = _a.onEnter, onEntering = _a.onEntering, onEntered = _a.onEntered, onExit = _a.onExit, onExiting = _a.onExiting, onExited = _a.onExited, onAfterExited = _a.onAfterExited, mountOnEnter = _a.mountOnEnter, unmountOnExit = _a.unmountOnExit, animationEnteringStyle = _a.animationEnteringStyle, animationEnteredStyle = _a.animationEnteredStyle, animationExitingStyle = _a.animationExitingStyle, animationExitedStyle = _a.animationExitedStyle, other = __rest(_a, [\"children\", \"style\", \"appear\", \"enter\", \"exit\", \"transitionName\", \"transitionEnterDuration\", \"transitionExitDuration\", \"className\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"onAfterExited\", \"mountOnEnter\", \"unmountOnExit\", \"animationEnteringStyle\", \"animationEnteredStyle\", \"animationExitingStyle\", \"animationExitedStyle\"]);\n var childAnimationContainerClassNames = classNames(className, styles['child-animation-container']);\n var defaultStyle = __assign({ transitionDelay: '0ms' }, style);\n var animationStyle = {\n entering: __assign({ transitionDuration: \"\".concat(transitionEnterDuration, \"ms\") }, animationEnteringStyle),\n entered: __assign({}, animationEnteredStyle),\n exiting: __assign({ transitionDuration: \"\".concat(transitionExitDuration, \"ms\") }, animationExitingStyle),\n exited: __assign({}, animationExitedStyle)\n };\n var transitionProps = {\n in: this.props.in,\n appear: appear,\n enter: enter,\n exit: exit,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n timeout: {\n enter: transitionEnterDuration,\n exit: transitionExitDuration\n },\n onEnter: (function () {\n if (onEnter) {\n onEnter.call(undefined, { animatedElement: _this.element, target: _this });\n }\n }),\n onEntering: (function () {\n if (onEntering) {\n onEntering.call(undefined, { animatedElement: _this.element, target: _this });\n }\n }),\n onEntered: (function () {\n if (onEntered) {\n onEntered.call(undefined, { animatedElement: _this.element, target: _this });\n }\n }),\n onExit: (function () {\n if (onExit) {\n onExit.call(undefined, { animatedElement: _this.element, target: _this });\n }\n }),\n onExiting: (function () {\n if (onExiting) {\n onExiting.call(undefined, { animatedElement: _this.element, target: _this });\n }\n }),\n onExited: (function () {\n if (onAfterExited) {\n onAfterExited.call(undefined, { animatedElement: _this.element, target: _this });\n }\n if (onExited) {\n onExited.call(undefined, { animatedElement: _this.element, target: _this });\n }\n }),\n classNames: {\n appear: styles[\"\".concat(transitionName, \"-appear\")] || \"\".concat(transitionName, \"-appear\"),\n appearActive: styles[\"\".concat(transitionName, \"-appear-active\")] || \"\".concat(transitionName, \"-appear-active\"),\n enter: styles[\"\".concat(transitionName, \"-enter\")] || \"\".concat(transitionName, \"-enter\"),\n enterActive: styles[\"\".concat(transitionName, \"-enter-active\")] || \"\".concat(transitionName, \"-enter-active\"),\n exit: styles[\"\".concat(transitionName, \"-exit\")] || \"\".concat(transitionName, \"-exit\"),\n exitActive: styles[\"\".concat(transitionName, \"-exit-active\")] || \"\".concat(transitionName, \"-exit-active\")\n }\n };\n return (React.createElement(CSSTransition, __assign({}, transitionProps, other, { nodeRef: this.elementRef }), function (status) {\n return (React.createElement(\"div\", { style: __assign(__assign({}, defaultStyle), animationStyle[status]), className: childAnimationContainerClassNames, ref: _this.elementRef }, children));\n }));\n };\n /**\n * @hidden\n */\n AnimationChild.propTypes = {\n in: PropTypes.bool,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n transitionName: PropTypes.string.isRequired,\n className: PropTypes.string,\n appear: PropTypes.bool,\n enter: PropTypes.bool,\n exit: PropTypes.bool,\n transitionEnterDuration: PropTypes.number.isRequired,\n transitionExitDuration: PropTypes.number.isRequired,\n mountOnEnter: PropTypes.bool,\n unmountOnExit: PropTypes.bool,\n animationEnteringStyle: PropTypes.object,\n animationEnteredStyle: PropTypes.object,\n animationExitingStyle: PropTypes.object,\n animationExitedStyle: PropTypes.object\n };\n /**\n * @hidden\n */\n AnimationChild.defaultProps = {\n mountOnEnter: true,\n unmountOnExit: false,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop,\n onAfterExited: noop,\n animationEnteringStyle: {},\n animationEnteredStyle: {},\n animationExitingStyle: {},\n animationExitedStyle: {}\n };\n return AnimationChild;\n}(React.Component));\nexport { AnimationChild };\n","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
    ` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
    ` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-animation',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698928285,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { AnimationChild } from './AnimationChild';\nimport { TransitionGroup } from 'react-transition-group';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport util from './util';\nvar styles = util.styles;\n// tslint:enable:max-line-length\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(props) {\n var _this = _super.call(this, props) || this;\n validatePackage(packageMetadata);\n return _this;\n }\n /**\n * @hidden\n */\n Animation.prototype.render = function () {\n var _a = this.props, id = _a.id, style = _a.style, children = _a.children, component = _a.component, className = _a.className, childFactory = _a.childFactory, stackChildren = _a.stackChildren, componentChildStyle = _a.componentChildStyle, componentChildClassName = _a.componentChildClassName, other = __rest(_a, [\"id\", \"style\", \"children\", \"component\", \"className\", \"childFactory\", \"stackChildren\", \"componentChildStyle\", \"componentChildClassName\"]);\n var transitionProps = {\n id: id,\n style: style,\n component: component,\n childFactory: childFactory,\n className: classNames(styles['animation-container'], styles['animation-container-relative'], className)\n };\n var content = React.Children.map(children || null, function (child) { return (React.createElement(AnimationChild, __assign({}, other, { style: componentChildStyle, className: componentChildClassName }), child)); });\n return (React.createElement(TransitionGroup, __assign({}, transitionProps), content));\n };\n /**\n * @hidden\n */\n Animation.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any,\n transitionName: PropTypes.string.isRequired,\n appear: PropTypes.bool.isRequired,\n enter: PropTypes.bool.isRequired,\n exit: PropTypes.bool.isRequired,\n transitionEnterDuration: PropTypes.number.isRequired,\n transitionExitDuration: PropTypes.number.isRequired\n };\n /**\n * @hidden\n */\n Animation.defaultProps = {\n component: 'div'\n };\n return Animation;\n}(React.Component));\nexport { Animation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nimport { noop } from '@progress/kendo-react-common';\nimport util from './util';\nvar Reveal = /** @class */ (function (_super) {\n __extends(Reveal, _super);\n function Reveal() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {\n maxHeight: undefined,\n maxWidth: undefined\n };\n _this.componentWillEnter = function (event) {\n var _a = _this.props, onEnter = _a.onEnter, onBeforeEnter = _a.onBeforeEnter;\n if (onBeforeEnter) {\n onBeforeEnter.call(undefined, event);\n }\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onEnter) {\n onEnter.call(undefined, event);\n }\n });\n };\n _this.componentIsEntering = function (event) {\n var onEntering = _this.props.onEntering;\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onEntering) {\n onEntering.call(undefined, event);\n }\n });\n };\n _this.componentWillExit = function (event) {\n var onExit = _this.props.onExit;\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onExit) {\n onExit.call(undefined, event);\n }\n });\n };\n _this.updateContainerDimensions = function (node, done) {\n if (done === void 0) { done = noop; }\n var content = node.firstChild;\n if (content) {\n var newHeight = util.outerHeight(content);\n var newWidth = util.outerWidth(content);\n _this.setState({\n maxHeight: newHeight,\n maxWidth: newWidth\n }, done);\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n Reveal.prototype.render = function () {\n var _a = this.props, direction = _a.direction, children = _a.children, childFactory = _a.childFactory, other = __rest(_a, [\"direction\", \"children\", \"childFactory\"]);\n var _b = this.state, maxHeight = _b.maxHeight, maxWidth = _b.maxWidth;\n var maxOffset;\n if (direction === 'vertical') {\n maxOffset = { maxHeight: maxHeight ? \"\".concat(maxHeight, \"px\") : '' };\n }\n else {\n maxOffset = { maxWidth: maxWidth ? \"\".concat(maxWidth, \"px\") : '' };\n }\n var animationEnteringStyle = {\n maxHeight: maxOffset.maxHeight,\n maxWidth: maxOffset.maxWidth\n };\n var factory = function (child) {\n var result = childFactory ? childFactory(child) : child;\n if (!result.props.in) {\n return React.cloneElement(result, __assign(__assign({}, result.props), { style: __assign(__assign({}, result.props.style), { maxHeight: maxOffset.maxHeight, maxWidth: maxOffset.maxWidth }) }));\n }\n return result;\n };\n return (React.createElement(Animation, __assign({}, other, { childFactory: factory, onEnter: this.componentWillEnter, onEntering: this.componentIsEntering, onExit: this.componentWillExit, animationEnteringStyle: animationEnteringStyle, transitionName: \"reveal-\".concat(direction) }), children));\n };\n /**\n * @hidden\n */\n Reveal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf([\n 'horizontal',\n 'vertical'\n ]),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n Reveal.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'vertical'\n };\n return Reveal;\n}(React.Component));\nexport { Reveal };\n","/**\n * @hidden\n */\nvar outerHeight = function (element) {\n if (!element || !element.ownerDocument.defaultView) {\n return 0;\n }\n var wnd = element.ownerDocument.defaultView;\n var computedStyles = wnd.getComputedStyle(element);\n var marginTop = parseFloat(computedStyles.marginTop);\n var marginBottom = parseFloat(computedStyles.marginBottom);\n return element.offsetHeight + marginTop + marginBottom;\n};\n/**\n * @hidden\n */\nvar outerWidth = function (element) {\n if (!element || !element.ownerDocument.defaultView) {\n return 0;\n }\n var wnd = element.ownerDocument.defaultView;\n var computedStyles = wnd.getComputedStyle(element);\n var marginLeft = parseFloat(computedStyles.marginLeft);\n var marginRight = parseFloat(computedStyles.marginRight);\n return element.offsetWidth + marginLeft + marginRight;\n};\n/**\n * @hidden\n */\nvar styles = {\n 'animation-container': 'k-animation-container',\n 'animation-container-relative': 'k-animation-container-relative',\n 'animation-container-fixed': 'k-animation-container-fixed',\n 'push-right-enter': 'k-push-right-enter',\n 'push-right-appear': 'k-push-right-appear',\n 'push-right-enter-active': 'k-push-right-enter-active',\n 'push-right-appear-active': 'k-push-right-appear-active',\n 'push-right-exit': 'k-push-right-exit',\n 'push-right-exit-active': 'k-push-right-exit-active',\n 'push-left-enter': 'k-push-left-enter',\n 'push-left-appear': 'k-push-left-appear',\n 'push-left-enter-active': 'k-push-left-enter-active',\n 'push-left-appear-active': 'k-push-left-appear-active',\n 'push-left-exit': 'k-push-left-exit',\n 'push-left-exit-active': 'k-push-left-exit-active',\n 'push-down-enter': 'k-push-down-enter',\n 'push-down-appear': 'k-push-down-appear',\n 'push-down-enter-active': 'k-push-down-enter-active',\n 'push-down-appear-active': 'k-push-down-appear-active',\n 'push-down-exit': 'k-push-down-exit',\n 'push-down-exit-active': 'k-push-down-exit-active',\n 'push-up-enter': 'k-push-up-enter',\n 'push-up-appear': 'k-push-up-appear',\n 'push-up-enter-active': 'k-push-up-enter-active',\n 'push-up-appear-active': 'k-push-up-appear-active',\n 'push-up-exit': 'k-push-up-exit',\n 'push-up-exit-active': 'k-push-up-exit-active',\n 'expand': 'k-expand',\n 'expand-vertical-enter': 'k-expand-vertical-enter',\n 'expand-vertical-appear': 'k-expand-vertical-appear',\n 'expand-vertical-enter-active': 'k-expand-vertical-enter-active',\n 'expand-vertical-appear-active': 'k-expand-vertical-appear-active',\n 'expand-vertical-exit': 'k-expand-vertical-exit',\n 'expand-vertical-exit-active': 'k-expand-vertical-exit-active',\n 'expand-horizontal-enter': 'k-expand-horizontal-enter',\n 'expand-horizontal-appear': 'k-expand-horizontal-appear',\n 'expand-horizontal-enter-active': 'k-expand-horizontal-enter-active',\n 'expand-horizontal-appear-active': 'k-expand-horizontal-appear-active',\n 'expand-horizontal-exit': 'k-expand-horizontal-exit',\n 'expand-horizontal-exit-active': 'k-expand-horizontal-exit-active',\n 'child-animation-container': 'k-child-animation-container',\n 'fade-enter': 'k-fade-enter',\n 'fade-appear': 'k-fade-appear',\n 'fade-enter-active': 'k-fade-enter-active',\n 'fade-appear-active': 'k-fade-appear-active',\n 'fade-exit': 'k-fade-exit',\n 'fade-exit-active': 'k-fade-exit-active',\n 'zoom-in-enter': 'k-zoom-in-enter',\n 'zoom-in-appear': 'k-zoom-in-appear',\n 'zoom-in-enter-active': 'k-zoom-in-enter-active',\n 'zoom-in-appear-active': 'k-zoom-in-appear-active',\n 'zoom-in-exit': 'k-zoom-in-exit',\n 'zoom-in-exit-active': 'k-zoom-in-exit-active',\n 'zoom-out-enter': 'k-zoom-out-enter',\n 'zoom-out-appear': 'k-zoom-out-appear',\n 'zoom-out-enter-active': 'k-zoom-out-enter-active',\n 'zoom-out-appear-active': 'k-zoom-out-appear-active',\n 'zoom-out-exit': 'k-zoom-out-exit',\n 'zoom-out-exit-active': 'k-zoom-out-exit-active',\n 'slide-in-appear': 'k-slide-in-appear',\n 'centered': 'k-centered',\n 'slide-in-appear-active': 'k-slide-in-appear-active',\n 'slide-down-enter': 'k-slide-down-enter',\n 'slide-down-appear': 'k-slide-down-appear',\n 'slide-down-enter-active': 'k-slide-down-enter-active',\n 'slide-down-appear-active': 'k-slide-down-appear-active',\n 'slide-down-exit': 'k-slide-down-exit',\n 'slide-down-exit-active': 'k-slide-down-exit-active',\n 'slide-up-enter': 'k-slide-up-enter',\n 'slide-up-appear': 'k-slide-up-appear',\n 'slide-up-enter-active': 'k-slide-up-enter-active',\n 'slide-up-appear-active': 'k-slide-up-appear-active',\n 'slide-up-exit': 'k-slide-up-exit',\n 'slide-up-exit-active': 'k-slide-up-exit-active',\n 'slide-right-enter': 'k-slide-right-enter',\n 'slide-right-appear': 'k-slide-right-appear',\n 'slide-right-enter-active': 'k-slide-right-enter-active',\n 'slide-right-appear-active': 'k-slide-right-appear-active',\n 'slide-right-exit': 'k-slide-right-exit',\n 'slide-right-exit-active': 'k-slide-right-exit-active',\n 'slide-left-enter': 'k-slide-left-enter',\n 'slide-left-appear': 'k-slide-left-appear',\n 'slide-left-enter-active': 'k-slide-left-enter-active',\n 'slide-left-appear-active': 'k-slide-left-appear-active',\n 'slide-left-exit': 'k-slide-left-exit',\n 'slide-left-exit-active': 'k-slide-left-exit-active',\n 'reveal-vertical-enter': 'k-reveal-vertical-enter',\n 'reveal-vertical-appear': 'k-reveal-vertical-appear',\n 'reveal-vertical-enter-active': 'k-reveal-vertical-enter-active',\n 'reveal-vertical-appear-active': 'k-reveal-vertical-appear-active',\n 'reveal-vertical-exit': 'k-reveal-vertical-exit',\n 'reveal-vertical-exit-active': 'k-reveal-vertical-exit-active',\n 'reveal-horizontal-enter': 'k-reveal-horizontal-enter',\n 'reveal-horizontal-appear': 'k-reveal-horizontal-appear',\n 'reveal-horizontal-enter-active': 'k-reveal-horizontal-enter-active',\n 'reveal-horizontal-appear-active': 'k-reveal-horizontal-appear-active',\n 'reveal-horizontal-exit': 'k-reveal-horizontal-exit',\n 'reveal-horizontal-exit-active': 'k-reveal-horizontal-exit-active'\n};\n/**\n * @hidden\n */\nvar stylesMap = {\n outerHeight: outerHeight,\n outerWidth: outerWidth,\n styles: styles\n};\nexport default stylesMap;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, kendoThemeMaps, IconWrap, svgIconPropType } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\n/**\n * @hidden\n */\nfunction iconElement(_a) {\n var imageUrl = _a.imageUrl, name = _a.name, iconClass = _a.iconClass, svgIcon = _a.svgIcon, imageAlt = _a.imageAlt;\n if (imageUrl) {\n return (React.createElement(\"img\", { role: \"presentation\", className: 'k-button-icon', alt: imageAlt, src: imageUrl }));\n }\n else if (name || svgIcon) {\n return React.createElement(IconWrap, { className: 'k-button-icon', name: name, icon: svgIcon });\n }\n else if (iconClass) {\n return (React.createElement(\"span\", { role: \"presentation\", className: classNames('k-button-icon', iconClass) }));\n }\n return null;\n}\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n function Button(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this.handleClick = function (event) {\n _this.toggleIfApplicable();\n if (_this.props.onClick) {\n _this.props.onClick.call(undefined, event);\n }\n };\n validatePackage(packageMetadata);\n _this.state = { selected: _this.props.togglable === true && _this.props.selected === true };\n return _this;\n }\n Object.defineProperty(Button.prototype, \"element\", {\n /**\n * Gets the DOM element of the Button component.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Button.prototype, \"selected\", {\n /**\n * Returns `true` when the component is togglable and selected ([see example]({% slug toggleable_button %})).\n * Otherwise, returns `false`.\n */\n get: function () {\n return this._selectedTemp !== undefined ? this._selectedTemp : this.state.selected;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Button.getDerivedStateFromProps = function (props, state) {\n if (props.togglable && props.selected !== undefined && props.selected !== state.selected) {\n return { selected: props.selected };\n }\n return null;\n };\n /**\n * @hidden\n */\n Button.prototype.render = function () {\n var _a;\n var _this = this;\n var _b = this.props, children = _b.children, togglable = _b.togglable, icon = _b.icon, iconClass = _b.iconClass, svgIcon = _b.svgIcon, imageUrl = _b.imageUrl, imageAlt = _b.imageAlt, className = _b.className, onClick = _b.onClick, _c = _b.size, size = _c === void 0 ? Button.defaultProps.size : _c, _d = _b.rounded, rounded = _d === void 0 ? Button.defaultProps.rounded : _d, _e = _b.fillMode, fillMode = _e === void 0 ? Button.defaultProps.fillMode : _e, _f = _b.themeColor, themeColor = _f === void 0 ? Button.defaultProps.themeColor : _f, htmlAttributes = __rest(_b, [\"children\", \"togglable\", \"icon\", \"iconClass\", \"svgIcon\", \"imageUrl\", \"imageAlt\", \"className\", \"onClick\", \"size\", \"rounded\", \"fillMode\", \"themeColor\"]);\n var hasIcon = (svgIcon !== undefined || icon !== undefined || iconClass !== undefined || imageUrl !== undefined);\n var hasChildren = children !== undefined;\n var iconEl = iconElement({\n name: icon,\n svgIcon: svgIcon,\n iconClass: iconClass,\n imageUrl: imageUrl,\n imageAlt: imageAlt\n });\n return (React.createElement(\"button\", __assign({ ref: function (button) { return _this._element = button; }, \"aria-pressed\": togglable ? this.state.selected : undefined }, htmlAttributes, { onClick: this.handleClick, className: classNames('k-button', (_a = {},\n _a[\"k-button-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a[\"k-button-\".concat(fillMode)] = fillMode,\n _a[\"k-button-\".concat(fillMode, \"-\").concat(themeColor)] = Boolean(fillMode && themeColor),\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _a['k-icon-button'] = !hasChildren && hasIcon,\n _a['k-disabled'] = this.props.disabled,\n _a['k-selected'] = this.state.selected,\n _a['k-rtl'] = this.props.dir === 'rtl',\n _a), this.props.className) }),\n iconEl,\n children && (React.createElement(\"span\", { className: \"k-button-text\" }, children))));\n };\n Button.prototype.toggleIfApplicable = function () {\n var _this = this;\n if (this.props.togglable && this.props.selected === undefined) {\n var selected = !this.state.selected;\n this._selectedTemp = selected;\n this.setState({ selected: selected }, function () { return _this._selectedTemp = undefined; });\n }\n };\n /**\n * @hidden\n */\n Button.propTypes = {\n children: PropTypes.node,\n selected: PropTypes.bool,\n togglable: PropTypes.bool,\n icon: PropTypes.string,\n svgIcon: svgIconPropType,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n imageAlt: PropTypes.string,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'flat', 'link', 'outline', 'solid']),\n // eslint-disable-next-line max-len\n themeColor: PropTypes.oneOf([null, 'base', 'primary', 'secondary', 'tertiary', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse'])\n };\n /**\n * @hidden\n */\n Button.defaultProps = {\n togglable: false,\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid',\n themeColor: 'base'\n };\n return Button;\n}(React.Component));\nexport { Button };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport util from './util';\nvar styles = util.styles;\nvar ButtonGroup = /** @class */ (function (_super) {\n __extends(ButtonGroup, _super);\n function ButtonGroup(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n validatePackage(packageMetadata);\n return _this;\n }\n /**\n * @hidden\n */\n ButtonGroup.prototype.render = function () {\n var _a;\n var _this = this;\n var buttons = this.mapButtons(this.props.children);\n var groupClasses = classNames([styles['button-group']], (_a = {},\n _a['k-disabled'] = this.props.disabled,\n _a[styles['button-group-stretched']] = !!this.props.width,\n _a), this.props.className);\n var groupProps = {\n className: groupClasses,\n style: { 'width': \"\".concat(this.props.width) },\n dir: this.props.dir,\n // Accessibility properties\n role: 'group',\n 'aria-disabled': this.props.disabled\n };\n return (React.createElement(\"div\", __assign({ ref: function (div) { _this._element = div; } }, groupProps, { className: groupClasses }), buttons));\n };\n ButtonGroup.prototype.mapButtons = function (children) {\n var _this = this;\n var count = React.Children.count(children);\n var rtl = this.props.dir !== undefined\n ? this.props.dir === 'rtl'\n : (this._element && (getComputedStyle(this._element).direction === 'rtl') || false);\n return React.Children.map(children, function (child, index) {\n if (React.isValidElement(child)) {\n return _this.renderButton(child, index, (index === count - 1), rtl);\n }\n return child;\n });\n };\n ButtonGroup.prototype.renderButton = function (child, index, isLast, isRtl) {\n var _a;\n var className = classNames(child.props.className, (_a = {},\n _a[styles['group-start']] = isRtl ? isLast : index === 0,\n _a[styles['group-end']] = isRtl ? index === 0 : isLast,\n _a));\n var style = __assign(__assign({}, (this.props.width ? { width: this.props.width } : {})), (child.props.style || {}));\n var disabled = this.props.disabled || child.props.disabled;\n var buttonProps = __assign(__assign(__assign(__assign({}, child.props), (className ? { className: className } : {})), (Object.keys(style).length ? { style: style } : {})), (disabled !== undefined ? { disabled: disabled } : {}));\n return React.Children.count(child.props.children) > 0 ?\n React.cloneElement(child, buttonProps, child.props.children) :\n React.cloneElement(child, buttonProps);\n };\n /**\n * @hidden\n */\n ButtonGroup.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n width: PropTypes.string,\n dir: PropTypes.string\n };\n return ButtonGroup;\n}(React.Component));\nexport { ButtonGroup };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { ChipListSelectionContext, ChipListFocusContext, ChipListDataContext } from './ChipList';\nimport { classNames, useDir, getTabIndex, Keys, IconWrap, kendoThemeMaps, toIconName, svgIconPropType } from '@progress/kendo-react-common';\nimport { xCircleIcon } from '@progress/kendo-svg-icons';\nimport { FOCUS_ACTION } from './focus-reducer';\nimport { CHIP_DATA_ACTION } from './data-reducer';\nimport { SELECTION_ACTION } from './selection-reducer';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { useMouse } from '@progress/kendo-react-common';\n/**\n * Represents the Chip component.\n */\nexport var Chip = React.forwardRef(function (props, ref) {\n var _a;\n validatePackage(packageMetadata);\n var target = React.useRef(null);\n var chipRef = React.useRef(null);\n var dir = useDir(chipRef, props.dir);\n React.useImperativeHandle(target, function () { return ({\n element: chipRef.current,\n props: props\n }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n var _b = React.useContext(ChipListSelectionContext), selection = _b[0], dispatchSelection = _b[1];\n var _c = React.useContext(ChipListFocusContext), focus = _c[0], dispatchFocus = _c[1];\n var _d = React.useContext(ChipListDataContext), dispatchData = _d[1];\n var selected = React.useMemo(function () {\n return (props.selected || (Array.isArray(selection)\n ? selection.some(function (i) { return i === props.value; })\n : selection === props.value));\n }, [props.selected, props.value, selection]);\n var focused = React.useMemo(function () { return focus === props.value; }, [props.value, focus]);\n React.useEffect(function () {\n if (focused && chipRef.current) {\n chipRef.current.focus();\n }\n }, [focused]);\n var handleClick = React.useCallback(function (event) {\n dispatchSelection({ type: SELECTION_ACTION.toggle, payload: props.value, event: event });\n }, [dispatchSelection, props.value]);\n var handleRemove = React.useCallback(function (event) {\n if (!props.removable) {\n return;\n }\n dispatchData({ type: CHIP_DATA_ACTION.remove, payload: props.value, event: event });\n dispatchFocus({ type: FOCUS_ACTION.reset, payload: props.value, event: event });\n dispatchSelection({ type: SELECTION_ACTION.remove, payload: props.value, event: event });\n if (props.onRemove) {\n props.onRemove.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onRemove, props.value, props.removable, dispatchData, dispatchFocus, dispatchSelection]);\n var handleKeyDown = React.useCallback(function (event) {\n switch (event.keyCode) {\n case Keys.left:\n dispatchFocus({ type: FOCUS_ACTION.prev, payload: props.value, event: event });\n break;\n case Keys.right:\n dispatchFocus({ type: FOCUS_ACTION.next, payload: props.value, event: event });\n break;\n case Keys.enter:\n dispatchSelection({ type: SELECTION_ACTION.toggle, payload: props.value, event: event });\n break;\n case Keys.delete:\n handleRemove(event);\n break;\n default:\n break;\n }\n if (props.onKeyDown) {\n props.onKeyDown.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onKeyDown, props.value, dispatchFocus, dispatchSelection, handleRemove]);\n var handleFocus = React.useCallback(function (event) {\n dispatchFocus({ payload: props.value, type: FOCUS_ACTION.current, event: event });\n if (props.onFocus) {\n props.onFocus.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onFocus, props.value, dispatchFocus]);\n var handleBlur = React.useCallback(function (event) {\n if (props.onBlur) {\n props.onBlur.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onBlur]);\n var mouseProps = useMouse(props, target, { onClick: handleClick });\n return (React.createElement(\"div\", __assign({}, mouseProps, { role: props.role, id: props.value, style: props.style, ref: chipRef, dir: dir, tabIndex: getTabIndex(props.tabIndex, props.disabled, undefined), className: classNames('k-chip', (_a = {\n 'k-rtl': dir === 'rtl',\n 'k-disabled': props.disabled,\n 'k-selected': selected,\n 'k-focus': focused\n },\n _a[\"k-chip-\".concat(kendoThemeMaps.sizeMap[props.size] || props.size)] = props.size,\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[props.rounded] || props.rounded)] = props.rounded,\n _a[\"k-chip-\".concat(props.fillMode)] = props.fillMode,\n _a[\"k-chip-\".concat(props.fillMode, \"-\").concat(props.themeColor)] = Boolean(props.fillMode && props.themeColor),\n _a), props.className), \"aria-checked\": selected, \"aria-disabled\": props.disabled, \"aria-describedby\": props.ariaDescribedBy, onFocus: handleFocus, onBlur: handleBlur, onKeyDown: handleKeyDown }),\n (selected && (props.selectedIcon || props.selectedSvgIcon)) &&\n React.createElement(IconWrap, { className: 'k-chip-icon', name: props.selectedIcon ? toIconName(props.selectedIcon) : undefined, icon: props.selectedSvgIcon, size: 'small' }),\n (props.icon || props.svgIcon) &&\n React.createElement(IconWrap, { className: 'k-chip-icon', name: props.icon ? toIconName(props.icon) : undefined, icon: props.svgIcon, size: 'small' }),\n (props.avatar) &&\n React.createElement(\"div\", { className: \"k-chip-avatar k-avatar k-rounded-\".concat(props.avatar.rounded, \" k-avatar-md k-avatar-solid k-avatar-solid-primary\"), style: props.avatar.style },\n React.createElement(\"span\", { className: \"k-avatar-image\" },\n React.createElement(\"img\", { src: props.avatar.image, alt: props.avatar.imageAlt }))),\n React.createElement(\"span\", { className: 'k-chip-content' }, props.children !== undefined\n ? props.children\n : props.text &&\n React.createElement(\"span\", { \"aria-label\": props.ariaLabel || props.text, className: 'k-chip-label' }, props.text)),\n props.removable && (React.createElement(\"span\", { className: \"k-chip-actions\" },\n React.createElement(\"span\", { className: classNames('k-chip-action', 'k-chip-remove-action'), onClick: handleRemove },\n React.createElement(IconWrap, { name: props.removeIcon ? toIconName(props.removeIcon) : undefined, icon: props.removeSvgIcon || xCircleIcon, size: 'small' }))))));\n});\nvar propTypes = {\n id: PropTypes.string,\n text: PropTypes.string,\n value: PropTypes.any,\n dir: PropTypes.oneOf(['ltr', 'rtl']),\n removable: PropTypes.bool,\n removeIcon: PropTypes.string,\n removeIconSvg: svgIconPropType,\n disabled: PropTypes.bool,\n icon: PropTypes.string,\n svgIcon: svgIconPropType,\n selectedIcon: PropTypes.string,\n selectedIconSvg: svgIconPropType,\n onRemove: PropTypes.func,\n dataItem: PropTypes.any,\n selected: PropTypes.bool,\n ariaDescribedBy: PropTypes.string,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'outline', 'solid']),\n // eslint-disable-next-line max-len\n themeColor: PropTypes.oneOf([null, 'base', 'info', 'success', 'warning', 'error'])\n};\nvar defaultProps = {\n disabled: false,\n removable: false,\n removeIcon: 'k-i-x-circle',\n dir: 'ltr',\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid',\n themeColor: 'base'\n};\nChip.displayName = 'KendoReactChip';\n// TODO: delete casting when @types/react is updated!\nChip.propTypes = propTypes;\nChip.defaultProps = defaultProps;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { useDir, getter, getTabIndex, classNames, useMouse, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { selectionReducer } from './selection-reducer';\nimport { focusReducer } from './focus-reducer';\nimport { dataReducer } from './data-reducer';\nimport { Chip } from './Chip';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * @hidden\n */\nexport var ChipListSelectionContext = React.createContext([null, function (_args) {\n /**/\n }]);\n/**\n * @hidden\n */\nexport var ChipListFocusContext = React.createContext([null, function (_args) {\n /**/\n }]);\n/**\n * @hidden\n */\nexport var ChipListDataContext = React.createContext([null, function (_args) {\n /**/\n }]);\n/**\n * @hidden\n */\nvar useSelection = function (defaultValue, args, callback) {\n var _a = React.useState(defaultValue), state = _a[0], setState = _a[1];\n var handleDispatchSelection = function (action) {\n var newState = selectionReducer(args.state || state, __assign(__assign({}, action), args));\n if (callback) {\n callback(newState, action.event);\n }\n setState(newState);\n };\n return [state, handleDispatchSelection];\n};\n/**\n * @hidden\n */\nvar useFocus = function (args) {\n var _a = React.useState(null), state = _a[0], setState = _a[1];\n var handleDispatchFocus = function (action) {\n var newState = focusReducer(action.payload, __assign(__assign({}, action), args));\n setState(newState);\n };\n return [state, handleDispatchFocus];\n};\n/**\n * @hidden\n */\nvar useData = function (defaultData, args, callback) {\n var _a = React.useState(defaultData), state = _a[0], setState = _a[1];\n var handleDispatchData = function (action) {\n var newState = dataReducer(args.state || state, __assign(__assign({}, action), args));\n if (callback) {\n callback(newState, action.event);\n }\n setState(newState);\n };\n return [state, handleDispatchData];\n};\n/**\n * Represents the ChipList component.\n */\nexport var ChipList = React.forwardRef(function (props, ref) {\n var _a;\n validatePackage(packageMetadata);\n var target = React.useRef(null);\n var chipListRef = React.useRef(null);\n var dir = useDir(chipListRef, props.dir);\n var chip = props.chip, id = props.id, style = props.style, tabIndex = props.tabIndex, disabled = props.disabled, size = props.size, className = props.className, ariaDescribedBy = props.ariaDescribedBy, ariaLabelledBy = props.ariaLabelledBy, _b = props.selection, selection = _b === void 0 ? defaultProps.selection : _b, _c = props.value, value = _c === void 0 ? defaultProps.defaultValue : _c, _d = props.defaultData, defaultData = _d === void 0 ? defaultProps.defaultData : _d, _e = props.valueField, valueField = _e === void 0 ? defaultProps.valueField : _e, _f = props.textField, textField = _f === void 0 ? defaultProps.textField : _f, onChange = props.onChange, onDataChange = props.onDataChange;\n var ChipComponent = React.useMemo(function () { return chip || Chip; }, [chip, Chip]);\n React.useImperativeHandle(target, function () { return ({\n element: chipListRef.current,\n props: props\n }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n var handleChange = React.useCallback(function (newValue, event) {\n if (onChange && target.current) {\n onChange.call(undefined, {\n value: newValue,\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [onChange]);\n var _g = useSelection(value, {\n selection: selection,\n state: value\n }, handleChange), stateValue = _g[0], dispatchStateValue = _g[1];\n var handleDataChange = React.useCallback(function (newData, event) {\n if (onDataChange && target.current) {\n onDataChange.call(undefined, {\n value: newData,\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [onDataChange]);\n var _h = useData(props.data || defaultData, {\n state: props.data,\n valueField: valueField\n }, handleDataChange), stateData = _h[0], dispatchData = _h[1];\n var itemsReducer = React.useCallback(function (acc, current) {\n acc.push(current[valueField]);\n return acc;\n }, [valueField]);\n var data = React.useMemo(function () { return props.data || stateData; }, [props.data, stateData]);\n var chipValue = React.useMemo(function () { return value || stateValue; }, [value, stateValue]);\n var items = React.useMemo(function () { return data.reduce(itemsReducer, []); }, [data, itemsReducer]);\n var valueGetter = React.useCallback(function (item) { return getter(valueField)(item); }, [valueField]);\n var textGetter = React.useCallback(function (item) { return getter(textField)(item); }, [textField]);\n var _j = useFocus({ items: items }), focus = _j[0], dispatchFocus = _j[1];\n var mouseProps = useMouse(props, target);\n return (React.createElement(ChipListSelectionContext.Provider, { value: [chipValue, dispatchStateValue] },\n React.createElement(ChipListFocusContext.Provider, { value: [focus, dispatchFocus] },\n React.createElement(ChipListDataContext.Provider, { value: [data, dispatchData] },\n React.createElement(\"div\", __assign({ ref: chipListRef }, mouseProps, { role: 'listbox', id: id, dir: dir, style: style, tabIndex: getTabIndex(tabIndex, disabled, undefined), className: classNames('k-chip-list', (_a = {\n 'k-rtl': dir === 'rtl',\n 'k-disabled': disabled\n },\n _a[\"k-chip-list-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a), className), \"aria-labelledby\": ariaLabelledBy, \"aria-describedby\": ariaDescribedBy }), data.map(function (item, index) {\n return (React.createElement(ChipComponent, { role: 'option', dataItem: item, size: size, key: [valueGetter(item), index].join('-'), text: textGetter(item), value: valueGetter(item), ariaLabel: item.ariaLabel, svgIcon: item.svgIcon || undefined }));\n }))))));\n});\nvar propTypes = {\n id: PropTypes.string,\n className: PropTypes.string,\n tabIndex: PropTypes.number,\n data: PropTypes.any,\n defaultData: PropTypes.arrayOf(PropTypes.any),\n onDataChange: PropTypes.func,\n value: PropTypes.oneOfType([PropTypes.any, PropTypes.arrayOf(PropTypes.any)]),\n defaultValue: PropTypes.oneOfType([PropTypes.any, PropTypes.arrayOf(PropTypes.any)]),\n onChange: PropTypes.func,\n selection: PropTypes.oneOf(['single', 'none', 'multiple']),\n textField: PropTypes.string,\n valueField: PropTypes.string,\n disabled: PropTypes.bool,\n dir: PropTypes.oneOf(['ltr', 'rtl']),\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large'])\n};\nvar defaultProps = {\n chip: Chip,\n size: 'medium',\n disabled: false,\n defaultValue: null,\n defaultData: [],\n dir: 'ltr',\n selection: 'none',\n textField: 'text',\n valueField: 'value',\n removable: 'removable'\n};\nChipList.displayName = 'KendoReactChipList';\n// TODO: delete casting when @types/react is updated!\nChipList.propTypes = propTypes;\nChipList.defaultProps = defaultProps;\n","/**\n * @hidden\n */\nexport var CHIP_DATA_ACTION;\n(function (CHIP_DATA_ACTION) {\n CHIP_DATA_ACTION[\"remove\"] = \"remove\";\n CHIP_DATA_ACTION[\"add\"] = \"add\";\n CHIP_DATA_ACTION[\"reorder\"] = \"reorder\";\n})(CHIP_DATA_ACTION || (CHIP_DATA_ACTION = {}));\n/**\n * @hidden\n */\nexport var dataReducer = function (state, action) {\n switch (action.type) {\n case CHIP_DATA_ACTION.add:\n // TODO v2\n break;\n case CHIP_DATA_ACTION.remove:\n return state.filter(function (i) { return i[action.valueField] !== action.payload; });\n case CHIP_DATA_ACTION.reorder:\n // TODO v2\n break;\n default:\n return state;\n }\n};\n","/**\n * @hidden\n */\nexport var FOCUS_ACTION;\n(function (FOCUS_ACTION) {\n FOCUS_ACTION[\"next\"] = \"next\";\n FOCUS_ACTION[\"prev\"] = \"prev\";\n FOCUS_ACTION[\"current\"] = \"current\";\n FOCUS_ACTION[\"reset\"] = \"reset\";\n})(FOCUS_ACTION || (FOCUS_ACTION = {}));\n/**\n * @hidden\n */\nexport var focusReducer = function (state, action) {\n var currentIndex = action.items.findIndex(function (i) { return i === state; });\n switch (action.type) {\n case FOCUS_ACTION.next:\n return currentIndex === action.items.length - 1\n ? state\n : action.items[currentIndex + 1];\n case FOCUS_ACTION.prev:\n return currentIndex === 0\n ? state\n : action.items[currentIndex - 1];\n case FOCUS_ACTION.current:\n return action.payload;\n case FOCUS_ACTION.reset:\n return null;\n default:\n return state;\n }\n};\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * @hidden\n */\nexport var SELECTION_TYPE;\n(function (SELECTION_TYPE) {\n SELECTION_TYPE[\"single\"] = \"single\";\n SELECTION_TYPE[\"multiple\"] = \"multiple\";\n SELECTION_TYPE[\"none\"] = \"none\";\n})(SELECTION_TYPE || (SELECTION_TYPE = {}));\n/**\n * @hidden\n */\nexport var SELECTION_ACTION;\n(function (SELECTION_ACTION) {\n SELECTION_ACTION[\"toggle\"] = \"toggle\";\n SELECTION_ACTION[\"remove\"] = \"remove\";\n})(SELECTION_ACTION || (SELECTION_ACTION = {}));\n/**\n * @hidden\n */\nexport var selectionReducer = function (state, action) {\n switch (action.selection) {\n case SELECTION_TYPE.single:\n switch (action.type) {\n case SELECTION_ACTION.toggle: {\n if (!Array.isArray(state) || state === null) {\n return action.payload === state ? null : action.payload;\n }\n throw new Error('State cannot be an array in single selection');\n }\n case SELECTION_ACTION.remove: {\n return action.payload === state ? null : state;\n }\n default:\n return state;\n }\n case SELECTION_TYPE.multiple:\n switch (action.type) {\n case SELECTION_ACTION.toggle: {\n if (Array.isArray(state)) {\n return state.some(function (i) { return i === action.payload; })\n ? state.filter(function (i) { return i !== action.payload; })\n : __spreadArray(__spreadArray([], state, true), [action.payload], false);\n }\n if (state === null) {\n return [action.payload];\n }\n throw new Error('State cannot be non-array in multiple selection');\n }\n case SELECTION_ACTION.remove: {\n if (Array.isArray(state)) {\n return state.some(function (i) { return i === action.payload; })\n ? state.filter(function (i) { return i !== action.payload; })\n : __spreadArray(__spreadArray([], state, true), [action.payload], false);\n }\n return state;\n }\n default:\n return state;\n }\n case SELECTION_TYPE.none:\n return null;\n default:\n return state;\n }\n};\n","import * as React from 'react';\nimport { classNames, IconWrap } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var ButtonItem = function (props) {\n var handleClick = React.useCallback(function (event) {\n props.onClick(event, props.index);\n }, [props]);\n var As = props.dataItem.render || props.item || (props.item === undefined ? props.render : null);\n var text = props.dataItem.text !== undefined ? props.dataItem.text : (props.textField ? props.dataItem[props.textField] : props.dataItem);\n var item = (React.createElement(\"li\", { id: props.id, className: classNames('k-item', props.className, { 'k-focus': props.focused }), tabIndex: -1, onClick: handleClick, onMouseDown: props.onDown, onPointerDown: props.onDown, role: \"menuitem\", \"aria-disabled\": props.dataItem.disabled || undefined }, (React.createElement(\"span\", { tabIndex: -1, className: classNames('k-link k-menu-link', {\n 'k-selected': props.dataItem.selected,\n 'k-disabled': props.dataItem.disabled\n }), key: \"icon\" }, As\n ? (React.createElement(As, { item: props.dataItem, itemIndex: props.index }))\n : (React.createElement(React.Fragment, null,\n (props.dataItem.icon || props.dataItem.iconClass) && (React.createElement(IconWrap, { className: props.dataItem.iconClass, name: props.dataItem.icon, icon: props.dataItem.svgIcon })),\n (props.dataItem.imageUrl) && (React.createElement(\"img\", { role: \"presentation\", alt: \"\", src: props.dataItem.imageUrl, className: 'k-icon' })),\n (text) && (React.createElement(\"span\", { className: \"k-menu-link-text\" }, text))))))));\n return ((props.item !== undefined && /* to be removed in 5.0.0 */\n props.render !== undefined) ? props.render.call(undefined, item, props) : item);\n};\nButtonItem.displayName = 'KendoReactButtonItem';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Button } from './../main';\nimport { classNames, guid, Keys, kendoThemeMaps, svgIconPropType, getActiveElement } from '@progress/kendo-react-common';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport { navigate as navigation } from './utils/navigation';\nimport { DropDownButtonItem } from './DropDownButtonItem';\nimport { ButtonItem } from './ButtonItem';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getAnchorAlign, getPopupAlign } from './utils/popup';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the [KendoReact DropDownButton component]({% slug overview_dropdownbutton %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n function DropDownButton(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {\n opened: false,\n focused: false,\n focusedIndex: -1\n };\n _this.wrapper = null;\n _this.mainButton = null;\n _this.list = null;\n _this.skipFocus = false;\n _this.guid = guid();\n _this.buttonsData = [];\n _this.onKeyDown = function (event) {\n var focusedIndex = _this.state.focusedIndex;\n if (event.altKey) {\n if (!_this.opened && event.keyCode === Keys.down) {\n _this.setOpen(true);\n _this.dispatchPopupEvent(event, true);\n _this.setState({ focusedIndex: 0 });\n }\n else if (_this.opened && event.keyCode === Keys.up) {\n _this.setState({ focusedIndex: -1 });\n _this.setOpen(false);\n }\n return;\n }\n var newState = __assign({}, _this.state);\n if (event.keyCode === Keys.enter || event.keyCode === Keys.space) {\n if (focusedIndex >= 0) {\n _this.dispatchClickEvent(event, focusedIndex);\n }\n // Prevent default because otherwise when an item is selected\n // click on the default button gets emitted which opens the popup again.\n event.preventDefault();\n var notOpened = !_this.opened;\n _this.setOpen(notOpened);\n if (notOpened) {\n _this.dispatchPopupEvent(event, true);\n _this.setState({ focusedIndex: _this.opened ? -1 : 0 });\n }\n return;\n }\n else if (_this.opened && event.keyCode === Keys.esc) {\n _this.setState({ focusedIndex: -1 });\n _this.setOpen(false);\n return;\n }\n if (_this.opened) {\n var newFocused = navigation(focusedIndex, event.keyCode, event.altKey, _this.buttonsData.length);\n newState.focusedIndex = newFocused;\n var arrowKey = event.keyCode === Keys.up || event.keyCode === Keys.down ||\n event.keyCode === Keys.left || event.keyCode === Keys.right;\n if (!event.altKey && (arrowKey || event.keyCode === Keys.home || event.keyCode === Keys.end)) {\n // Needed to notify the parent listeners that event is handled.\n event.preventDefault();\n }\n }\n _this.setState(newState);\n };\n _this.switchFocus = function (focusFn) {\n _this.skipFocus = true;\n focusFn();\n window.setTimeout(function () { return _this.skipFocus = false; }, 0);\n };\n _this.handleFocus = function (event) {\n if (_this.skipFocus) {\n return;\n }\n _this.setState({ focused: true, focusedIndex: _this.opened ? 0 : -1 });\n dispatchEvent(_this.props.onFocus, event, _this, undefined);\n };\n _this.handleBlur = function (event) {\n if (_this.skipFocus) {\n return;\n }\n _this.setState({ focused: false, focusedIndex: -1 });\n _this.setOpen(false);\n dispatchEvent(_this.props.onBlur, event, _this, undefined);\n };\n _this.setOpen = function (value) {\n _this.openedDuringOnChange = value;\n _this.setState({ opened: value });\n };\n _this.onItemClick = function (event, clickedItemIndex) {\n _this.setState({ focusedIndex: -1 });\n _this.setOpen(false);\n _this.dispatchClickEvent(event, clickedItemIndex);\n };\n _this.onItemDown = function (event) {\n var activeElement = getActiveElement(document);\n if (activeElement === _this.list) {\n event.preventDefault();\n }\n };\n _this.mouseDown = function (event) {\n event.preventDefault();\n var activeElement = getActiveElement(document);\n if (_this.element && activeElement !== _this.element && activeElement !== _this.list) {\n _this.element.focus();\n }\n };\n _this.onPopupClose = function () {\n if (_this.state.focused) {\n _this.switchFocus(function () {\n if (_this.element) {\n _this.element.removeAttribute('tabindex');\n _this.element.focus({ preventScroll: true });\n }\n });\n }\n _this.dispatchPopupEvent({}, false);\n };\n _this.listRef = function (list) {\n _this.list = list;\n if (list && _this.state.focused) {\n _this.switchFocus(function () {\n list.focus({ preventScroll: true });\n if (_this.element) {\n _this.element.tabIndex = -1;\n }\n });\n }\n };\n _this.onClickMainButton = function (event) {\n if (!_this.buttonsData.length) {\n return;\n }\n var toOpen = !_this.opened;\n _this.setState({\n focused: true,\n focusedIndex: toOpen ? 0 : -1\n });\n _this.setOpen(toOpen);\n if (toOpen) {\n _this.dispatchPopupEvent(event, toOpen);\n }\n };\n _this.dispatchPopupEvent = function (dispatchedEvent, open) {\n dispatchEvent(open ? _this.props.onOpen : _this.props.onClose, dispatchedEvent, _this, undefined);\n _this.openedDuringOnChange = undefined;\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(DropDownButton.prototype, \"opened\", {\n get: function () {\n return this.openedDuringOnChange !== undefined\n ? this.openedDuringOnChange\n : this.props.opened === undefined\n ? this.state.opened\n : this.props.opened;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n DropDownButton.prototype.render = function () {\n var _this = this;\n var rtl = this.isRtl();\n var dir = rtl ? 'rtl' : undefined;\n var _a = this.props, id = _a.id, style = _a.style, tabIndex = _a.tabIndex, disabled = _a.disabled;\n this.buttonsData = this.props.items ||\n React.Children.toArray(this.props.children)\n .filter(function (child) { return child && child.type === DropDownButtonItem; })\n .map(function (child) { return child.props; });\n return (React.createElement(\"div\", { id: id, style: style, className: classNames('k-dropdown-button', {\n 'k-focus': this.state.focused\n }, this.props.className), onKeyDown: this.onKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, dir: dir, ref: function (el) { return _this.wrapper = el; } },\n React.createElement(Button, { size: this.props.size, rounded: this.props.rounded, fillMode: this.props.fillMode, themeColor: this.props.themeColor, onClick: this.onClickMainButton, onMouseDown: this.mouseDown, disabled: disabled || undefined, tabIndex: tabIndex, accessKey: this.props.accessKey, icon: this.props.icon, svgIcon: this.props.svgIcon, iconClass: this.props.iconClass, className: this.props.buttonClass, imageUrl: this.props.imageUrl, dir: dir, ref: function (btn) { return _this.mainButton = btn && btn.element; }, type: \"button\", \"aria-haspopup\": true, \"aria-expanded\": this.opened || undefined, \"aria-label\": this.props.ariaLabel, \"aria-controls\": this.opened ? this.guid : undefined, id: 'button-' + this.guid, title: this.props.title }, this.props.text),\n this.renderPopup(rtl)));\n };\n /**\n * @hidden\n */\n DropDownButton.prototype.componentDidMount = function () {\n // If this.props.opened is true during the initial render, the popup is not aligned.\n if ((this.props.dir === undefined && this.isRtl()) || this.opened) {\n this.forceUpdate();\n }\n };\n Object.defineProperty(DropDownButton.prototype, \"element\", {\n /**\n * The DOM element of main button.\n */\n get: function () {\n return this.mainButton;\n },\n enumerable: false,\n configurable: true\n });\n DropDownButton.prototype.dispatchClickEvent = function (dispatchedEvent, index) {\n if (!this.isItemDisabled(index)) {\n dispatchEvent(this.props.onItemClick, dispatchedEvent, this, {\n item: this.buttonsData[index],\n itemIndex: index\n });\n }\n };\n DropDownButton.prototype.renderPopup = function (rtl) {\n var _a;\n var _b = this.props.popupSettings, popupSettings = _b === void 0 ? {} : _b;\n var focusedIndex = this.state.focusedIndex;\n return (React.createElement(Popup, { anchor: this.wrapper, show: this.opened, animate: popupSettings.animate, popupClass: classNames('k-menu-popup', popupSettings.popupClass), anchorAlign: popupSettings.anchorAlign || getAnchorAlign(rtl), popupAlign: popupSettings.popupAlign || getPopupAlign(rtl), style: rtl ? { direction: 'rtl' } : undefined, onClose: this.onPopupClose },\n React.createElement(\"ul\", { role: \"menu\", id: this.guid, \"aria-labelledby\": 'button-' + this.guid, tabIndex: -1, \"aria-activedescendant\": focusedIndex >= 0 ? \"\".concat(this.guid, \"-\").concat(focusedIndex) : undefined, ref: this.listRef, className: classNames('k-group k-menu-group k-reset', (_a = {},\n _a[\"k-menu-group-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size,\n _a)) }, this.renderChildItems())));\n };\n DropDownButton.prototype.renderChildItems = function () {\n var _this = this;\n var _a = this.props, item = _a.item, itemRender = _a.itemRender, textField = _a.textField;\n return this.buttonsData.length > 0 ? (this.buttonsData.map(function (dataItem, index) {\n return (React.createElement(ButtonItem, { className: \"k-menu-item\", dataItem: dataItem, textField: textField, focused: _this.state.focusedIndex === index, onClick: _this.onItemClick, onDown: _this.onItemDown, render: itemRender, item: item, index: index, key: index, id: \"\".concat(_this.guid, \"-\").concat(index) }));\n })) : null;\n };\n DropDownButton.prototype.isItemDisabled = function (index) {\n return this.buttonsData[index] ? this.buttonsData[index].disabled : this.props.disabled;\n };\n DropDownButton.prototype.isRtl = function () {\n return this.props.dir !== undefined ? this.props.dir === 'rtl' :\n !!this.wrapper && getComputedStyle(this.wrapper).direction === 'rtl';\n };\n /**\n * @hidden\n */\n DropDownButton.propTypes = {\n accessKey: PropTypes.string,\n ariaLabel: PropTypes.string,\n title: PropTypes.string,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onItemClick: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n items: PropTypes.arrayOf(PropTypes.any),\n textField: PropTypes.string,\n tabIndex: PropTypes.number,\n disabled: PropTypes.bool,\n icon: PropTypes.string,\n svgIcon: svgIconPropType,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n popupSettings: PropTypes.object,\n itemRender: PropTypes.func,\n item: PropTypes.func,\n className: PropTypes.string,\n buttonClass: PropTypes.string,\n dir: PropTypes.string\n };\n /**\n * @hidden\n */\n DropDownButton.defaultProps = {\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid',\n themeColor: 'base'\n };\n return DropDownButton;\n}(React.Component));\nexport { DropDownButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nvar DropDownButtonItem = /** @class */ (function (_super) {\n __extends(DropDownButtonItem, _super);\n function DropDownButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n DropDownButtonItem.prototype.render = function () {\n return null;\n };\n /**\n * @hidden\n */\n DropDownButtonItem.propTypes = {\n text: PropTypes.string,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n render: PropTypes.any\n };\n return DropDownButtonItem;\n}(React.Component));\nexport { DropDownButtonItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Button } from './../main';\nimport { classNames, getActiveElement, guid, kendoThemeMaps, Keys, svgIconPropType } from '@progress/kendo-react-common';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport { ButtonItem } from './ButtonItem';\nimport { SplitButtonItem } from './SplitButtonItem';\nimport { navigate as navigation } from './utils/navigation';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getAnchorAlign, getPopupAlign } from './utils/popup';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { caretAltDownIcon } from '@progress/kendo-svg-icons';\n/**\n * Represents the [KendoReact SplitButton component]({% slug overview_splitbutton %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar SplitButton = /** @class */ (function (_super) {\n __extends(SplitButton, _super);\n function SplitButton(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {\n focused: false,\n focusedIndex: -1,\n opened: false\n };\n _this.wrapper = null;\n _this.mainButton = null;\n _this.list = null;\n _this.guid = guid();\n _this.skipFocus = false;\n _this.buttonsData = [];\n _this.onKeyDown = function (event) {\n var focusedIndex = _this.state.focusedIndex;\n if (event.altKey) {\n if (!_this.opened && event.keyCode === Keys.down) {\n _this.dispatchPopupEvent(event, true);\n _this.setState({ focusedIndex: 0 });\n _this.setOpen(true);\n }\n else if (_this.opened && event.keyCode === Keys.up) {\n _this.setState({ focusedIndex: -1 });\n _this.setOpen(false);\n }\n return;\n }\n var newState = undefined;\n if (event.keyCode === Keys.enter || event.keyCode === Keys.space) {\n // Prevent default because otherwise when an item is selected\n // click on the default button gets emitted which opens the popup again.\n event.preventDefault();\n _this.dispatchClickEvent(event, focusedIndex);\n if (focusedIndex >= 0) {\n newState = {\n focusedIndex: _this.opened ? -1 : 0\n };\n var notOpened = !_this.opened;\n _this.setOpen(notOpened);\n if (notOpened) {\n _this.dispatchPopupEvent(event, notOpened);\n }\n }\n }\n else if (_this.opened && event.keyCode === Keys.esc) {\n _this.setState({ focusedIndex: -1 });\n _this.setOpen(false);\n return;\n }\n if (_this.opened) {\n var newFocused = navigation(focusedIndex, event.keyCode, event.altKey, _this.buttonsData.length);\n if (newFocused !== focusedIndex) {\n newState = newState || {};\n newState.focusedIndex = newFocused;\n }\n var arrowKey = event.keyCode === Keys.up || event.keyCode === Keys.down ||\n event.keyCode === Keys.left || event.keyCode === Keys.right;\n if (!event.altKey && (arrowKey || event.keyCode === Keys.home || event.keyCode === Keys.end)) {\n // Needed to notify the parent listeners that event is handled.\n event.preventDefault();\n }\n }\n if (newState) {\n _this.setState(newState);\n }\n };\n _this.switchFocus = function (focusFn) {\n _this.skipFocus = true;\n focusFn();\n window.setTimeout(function () { return _this.skipFocus = false; }, 0);\n };\n _this.onFocus = function (event) {\n if (_this.skipFocus) {\n return;\n }\n dispatchEvent(_this.props.onFocus, event, _this, undefined);\n _this.setState({ focused: true });\n };\n _this.setOpen = function (value) {\n _this.openedDuringOnChange = value;\n _this.setState({ opened: value });\n };\n _this.onItemClick = function (event, clickedItemIndex) {\n var opened = _this.opened;\n if (opened) {\n _this.setState({ focusedIndex: 0 });\n _this.setOpen(false);\n }\n _this.dispatchClickEvent(event, clickedItemIndex);\n };\n _this.onBlur = function (event) {\n if (_this.skipFocus) {\n return;\n }\n _this.setState({\n focused: false,\n focusedIndex: -1\n });\n _this.setOpen(false);\n dispatchEvent(_this.props.onBlur, event, _this, undefined);\n };\n _this.onPopupClose = function () {\n if (_this.state.focused) {\n _this.switchFocus(function () {\n if (_this.element) {\n _this.element.removeAttribute('tabindex');\n _this.element.focus({ preventScroll: true });\n }\n });\n }\n _this.dispatchPopupEvent({}, false);\n };\n _this.listRef = function (list) {\n _this.list = list;\n if (list && _this.state.focused) {\n _this.switchFocus(function () {\n list.focus({ preventScroll: true });\n if (_this.element) {\n _this.element.tabIndex = -1;\n }\n });\n }\n };\n _this.onSplitPartClick = function (event) {\n if (_this.buttonsData.length) {\n var toOpen = !_this.opened;\n if (toOpen) {\n _this.dispatchPopupEvent(event, toOpen);\n }\n _this.setState({\n focusedIndex: toOpen ? 0 : -1,\n focused: true\n });\n _this.setOpen(toOpen);\n }\n };\n _this.onDownSplitPart = function (event) {\n event.preventDefault();\n var activeElement = getActiveElement(document);\n if (_this.element && activeElement !== _this.element && activeElement !== _this.list) {\n _this.element.focus();\n }\n };\n _this.onItemDown = function (event) {\n var activeElement = getActiveElement(document);\n if (activeElement === _this.list) {\n event.preventDefault();\n }\n };\n _this.dispatchPopupEvent = function (dispatchedEvent, open) {\n dispatchEvent(open ? _this.props.onOpen : _this.props.onClose, dispatchedEvent, _this, undefined);\n _this.openedDuringOnChange = undefined;\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(SplitButton.prototype, \"opened\", {\n get: function () {\n return this.openedDuringOnChange !== undefined\n ? this.openedDuringOnChange\n : this.props.opened === undefined\n ? this.state.opened\n : this.props.opened;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n SplitButton.prototype.render = function () {\n var _this = this;\n this.buttonsData = this.props.items ||\n React.Children.toArray(this.props.children)\n .filter(function (child) { return child && child.type === SplitButtonItem; })\n .map(function (child) { return child.props; });\n var rtl = this.isRtl();\n var dir = rtl ? 'rtl' : undefined;\n var _a = this.props, id = _a.id, style = _a.style, tabIndex = _a.tabIndex, disabled = _a.disabled;\n return (React.createElement(\"div\", { id: id, style: style, className: classNames('k-split-button', 'k-button-group', {\n 'k-focus': this.state.focused\n }, \"k-rounded-\".concat(kendoThemeMaps.roundedMap[this.props.rounded || 'medium']), this.props.className), onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, dir: dir, ref: function (el) { return _this.wrapper = el; } },\n React.createElement(Button, { ref: function (el) { return _this.mainButton = el && el.element; }, type: \"button\", size: this.props.size, rounded: this.props.rounded, fillMode: this.props.fillMode, themeColor: this.props.themeColor, onClick: function (event) { return _this.onItemClick(event, -1); }, disabled: disabled || undefined, tabIndex: tabIndex, accessKey: this.props.accessKey, className: this.props.buttonClass, icon: this.props.icon, svgIcon: this.props.svgIcon, iconClass: this.props.iconClass, imageUrl: this.props.imageUrl, dir: dir, \"aria-disabled\": disabled, \"aria-haspopup\": true, \"aria-expanded\": this.opened || undefined, \"aria-label\": this.props.ariaLabel, \"aria-controls\": this.opened ? this.guid : undefined, id: 'button-' + this.guid, title: this.props.title }, this.props.text),\n React.createElement(Button, { type: \"button\", size: this.props.size, rounded: this.props.rounded, fillMode: this.props.fillMode, themeColor: this.props.themeColor, icon: \"caret-alt-down\", svgIcon: caretAltDownIcon, className: \"k-split-button-arrow\", disabled: disabled || undefined, tabIndex: -1, onClick: this.onSplitPartClick, onMouseDown: this.onDownSplitPart, onPointerDown: this.onDownSplitPart, dir: dir, \"aria-label\": \"menu toggling button\" }),\n this.renderPopup(rtl)));\n };\n /**\n * @hidden\n */\n SplitButton.prototype.componentDidMount = function () {\n // If this.props.opened is true during the initial render, the popup is not aligned.\n if ((this.props.dir === undefined && this.isRtl()) || this.opened) {\n this.forceUpdate();\n }\n };\n Object.defineProperty(SplitButton.prototype, \"element\", {\n /**\n * The DOM element of main button.\n */\n get: function () {\n return this.mainButton;\n },\n enumerable: false,\n configurable: true\n });\n SplitButton.prototype.dispatchClickEvent = function (dispatchedEvent, clickedItemIndex) {\n if (!this.isItemDisabled(clickedItemIndex)) {\n if (clickedItemIndex === -1) {\n dispatchEvent(this.props.onButtonClick, dispatchedEvent, this, undefined);\n }\n else {\n dispatchEvent(this.props.onItemClick, dispatchedEvent, this, {\n item: this.buttonsData[clickedItemIndex],\n itemIndex: clickedItemIndex\n });\n }\n }\n };\n SplitButton.prototype.renderPopup = function (rtl) {\n var _a;\n var _b = this.props.popupSettings, popupSettings = _b === void 0 ? {} : _b;\n var focusedIndex = this.state.focusedIndex;\n return (React.createElement(Popup, { anchor: this.wrapper, show: this.opened, animate: popupSettings.animate, popupClass: classNames('k-menu-popup', popupSettings.popupClass), anchorAlign: popupSettings.anchorAlign || getAnchorAlign(rtl), popupAlign: popupSettings.popupAlign || getPopupAlign(rtl), style: rtl ? { direction: 'rtl' } : undefined, onClose: this.onPopupClose },\n React.createElement(\"ul\", { role: \"menu\", id: this.guid, \"aria-labelledby\": 'button-' + this.guid, tabIndex: -1, ref: this.listRef, \"aria-activedescendant\": focusedIndex >= 0 ? \"\".concat(this.guid, \"-\").concat(focusedIndex) : undefined, className: classNames('k-group k-menu-group k-reset', (_a = {},\n _a[\"k-menu-group-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size,\n _a)) }, this.renderChildItems())));\n };\n SplitButton.prototype.renderChildItems = function () {\n var _this = this;\n var _a = this.props, item = _a.item, itemRender = _a.itemRender, textField = _a.textField;\n return this.buttonsData.length > 0 ? (this.buttonsData.map(function (dataItem, index) {\n return (React.createElement(ButtonItem, { className: \"k-menu-item\", dataItem: dataItem, textField: textField, focused: _this.state.focusedIndex === index, onClick: _this.onItemClick, onDown: _this.onItemDown, render: itemRender, item: item, key: index, index: index, id: \"\".concat(_this.guid, \"-\").concat(index) }));\n })) : null;\n };\n SplitButton.prototype.isItemDisabled = function (index) {\n return this.buttonsData[index] ? this.buttonsData[index].disabled : this.props.disabled;\n };\n SplitButton.prototype.isRtl = function () {\n return this.props.dir !== undefined ? this.props.dir === 'rtl' :\n !!this.wrapper && getComputedStyle(this.wrapper).direction === 'rtl';\n };\n /**\n * @hidden\n */\n SplitButton.propTypes = {\n accessKey: PropTypes.string,\n ariaLabel: PropTypes.string,\n title: PropTypes.string,\n onButtonClick: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onItemClick: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n text: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.any),\n textField: PropTypes.string,\n tabIndex: PropTypes.number,\n disabled: PropTypes.bool,\n icon: PropTypes.string,\n svgIcon: svgIconPropType,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n popupSettings: PropTypes.object,\n itemRender: PropTypes.any,\n item: PropTypes.func,\n className: PropTypes.string,\n buttonClass: PropTypes.string,\n dir: PropTypes.string\n };\n /**\n * @hidden\n */\n SplitButton.defaultProps = {\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid',\n themeColor: 'base'\n };\n return SplitButton;\n}(React.Component));\nexport { SplitButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nvar SplitButtonItem = /** @class */ (function (_super) {\n __extends(SplitButtonItem, _super);\n function SplitButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n SplitButtonItem.prototype.render = function () {\n return null;\n };\n /**\n * @hidden\n */\n SplitButtonItem.propTypes = {\n text: PropTypes.string,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n disabled: PropTypes.bool,\n render: PropTypes.any\n };\n return SplitButtonItem;\n}(React.Component));\nexport { SplitButtonItem };\n","import { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar navigate = function (focusedIndex, keyCode, altKey, total) {\n if (altKey) {\n return focusedIndex;\n }\n var index = Math.min(total - 1, Math.max(0, focusedIndex));\n switch (keyCode) {\n case Keys.enter:\n case Keys.space:\n case Keys.esc:\n return -1;\n case Keys.up:\n case Keys.left:\n return index - 1 < 0 ? total - 1 : index - 1;\n case Keys.down:\n case Keys.right:\n return index + 1 >= total ? 0 : index + 1;\n case Keys.home:\n return 0;\n case Keys.end:\n return total - 1;\n default:\n return focusedIndex;\n }\n};\nexport { navigate };\n","/**\n * @hidden\n */\nexport function getAnchorAlign(isDirectionRightToLeft) {\n var align = { horizontal: 'left', vertical: 'bottom' };\n if (isDirectionRightToLeft) {\n align.horizontal = 'right';\n }\n return align;\n}\n/**\n * @hidden\n */\nexport function getPopupAlign(isDirectionRightToLeft) {\n var align = { horizontal: 'left', vertical: 'top' };\n if (isDirectionRightToLeft) {\n align.horizontal = 'right';\n }\n return align;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact ToolbarItem component.\n * To add a tool to the Toolbar, wrap it inside a ToolbarItem component\n * ([see example]({% slug content_toolbar %})).\n */\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._element = null;\n return _this;\n }\n Object.defineProperty(ToolbarItem.prototype, \"element\", {\n /**\n * Returns the HTML element of the ToolbarItem component.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n ToolbarItem.prototype.render = function () {\n var _this = this;\n return (React.createElement(\"div\", { id: this.props.id, className: classNames('k-toolbar-item', this.props.className), style: this.props.style, ref: function (e) { return _this._element = e; } }, this.props.children));\n };\n /**\n * @hidden\n */\n ToolbarItem.propTypes = {\n className: PropTypes.string\n };\n return ToolbarItem;\n}(React.PureComponent));\nexport { ToolbarItem };\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact ToolbarSpacer component.\n * To specify an empty space, provide a ToolbarSpacer component\n * ([see example]({% slug content_toolbar %})).\n */\nexport var ToolbarSpacer = React.forwardRef(function (props, ref) {\n var element = React.useRef(null);\n var spacer = React.useRef(null);\n React.useImperativeHandle(spacer, function () { return ({ element: element.current }); });\n React.useImperativeHandle(ref, function () { return ({ element: element.current }); });\n var className = React.useMemo(function () { return classNames('k-spacer', props.className); }, [props.className]);\n return (React.createElement(\"span\", { ref: element, className: className }));\n});\nToolbarSpacer.displayName = 'KendoReactToolbarSpacer';\nToolbarSpacer.propTypes = {\n className: PropTypes.string\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, getTabIndex, IconWrap, svgIconPropType } from '@progress/kendo-react-common';\n/**\n * Represents the [KendoReact FloatingActionButtonItem component]({% slug overview_floatingactionbutton %}).\n *\n * @example\n * ```jsx\n *\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var FloatingActionButtonItem = React.forwardRef(function (props, ref) {\n var className = props.className, disabled = props.disabled, text = props.text, icon = props.icon, style = props.style, id = props.id, focused = props.focused, tabIndex = props.tabIndex, index = props.index, dataItem = props.dataItem, item = props.item, svgIcon = props.svgIcon, onDown = props.onDown, onClick = props.onClick, others = __rest(props, [\"className\", \"disabled\", \"text\", \"icon\", \"style\", \"id\", \"focused\", \"tabIndex\", \"index\", \"dataItem\", \"item\", \"svgIcon\", \"onDown\", \"onClick\"]);\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n var getImperativeHandle = React.useCallback(function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); }, [focusElement]);\n React.useImperativeHandle(ref, getImperativeHandle);\n var handleClick = React.useCallback(function (event) {\n if (onClick && index !== undefined && !disabled) {\n onClick(event, index);\n }\n }, [onClick, index]);\n var itemClassNames = React.useMemo(function () { return classNames('k-fab-item', {\n 'k-focus': focused,\n 'k-disabled': disabled\n }, className); }, [className, disabled, focused]);\n var ItemComp = item;\n return (React.createElement(\"li\", __assign({ ref: elementRef, id: id, className: itemClassNames, style: style, role: 'menuitem', tabIndex: getTabIndex(tabIndex, disabled), \"aria-disabled\": disabled, \"aria-label\": \"\".concat(text || '', \" floatingactionbutton item\"), onClick: handleClick, onMouseDown: onDown, onPointerDown: onDown }, others), ItemComp ?\n React.createElement(ItemComp, { itemIndex: index, item: dataItem }) :\n (React.createElement(React.Fragment, null,\n text && React.createElement(\"span\", { className: \"k-fab-item-text\" }, text),\n (icon || svgIcon) ? React.createElement(IconWrap, { className: \"k-fab-item-icon\", name: icon, icon: svgIcon }) : null))));\n});\nFloatingActionButtonItem.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n children: PropTypes.any,\n disabled: PropTypes.bool,\n focused: PropTypes.bool,\n index: PropTypes.number,\n icon: PropTypes.string,\n svgIcon: svgIconPropType,\n text: PropTypes.string,\n tabIndex: PropTypes.number,\n customProp: PropTypes.any\n};\nFloatingActionButtonItem.displayName = 'KendoFloatingActionButtonItem';\n","/**\n * @hidden\n */\nexport var DEFAULT_OFFSET = '16px';\n/**\n * @hidden\n */\nexport var toStringValues = function (val) {\n if (typeof val === 'number') {\n return val + 'px';\n }\n return val;\n};\n/**\n * @hidden\n */\nexport var getAnchorAlign = function (fabAlign, rtl) {\n var align = { horizontal: (rtl ? 'right' : 'left'), vertical: 'bottom' };\n if (fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n }\n return align;\n};\n/**\n * @hidden\n */\nexport var getPopupAlign = function (fabAlign, rtl) {\n var align = { horizontal: (rtl ? 'right' : 'left'), vertical: 'top' };\n if (fabAlign.horizontal === 'end') {\n align.horizontal = rtl ? 'left' : 'right';\n }\n return align;\n};\n/**\n * @hidden\n */\nexport var getTextDirectionClass = function (rtl, hAlign) {\n var al = hAlign === 'end' ? 'end' : 'start';\n var directions = {\n rtl: { end: 'k-text-left', start: 'k-text-right' },\n ltr: { start: 'k-text-left', end: 'k-text-right' }\n };\n return directions[rtl][al];\n};\n/**\n * @hidden\n */\nexport var position = function (ref, align, alignOffset, isRtl) {\n var horizontal = align.horizontal;\n var vertical = align.vertical;\n if (ref.current) {\n var xFab = alignOffset && alignOffset.x !== undefined ?\n toStringValues(alignOffset.x) :\n DEFAULT_OFFSET;\n var xCenterFab = alignOffset && alignOffset.x !== undefined ?\n \"calc(50% + \".concat(toStringValues(alignOffset.x), \")\") :\n '50%';\n var yFab = alignOffset && alignOffset.y !== undefined ?\n toStringValues(alignOffset.y) :\n DEFAULT_OFFSET;\n var yCenterFab = alignOffset && alignOffset.y !== undefined ?\n \"calc(50% + \".concat(toStringValues(alignOffset.y), \")\") :\n '50%';\n ref.current.style.setProperty(horizontalPosition(align, isRtl), horizontal === 'center' ? xCenterFab : xFab);\n ref.current.style.setProperty(verticalPosition(align), vertical === 'middle' ? yCenterFab : yFab);\n if (isRtl) {\n if ((vertical === 'top' || vertical === 'bottom') && horizontal === 'start') {\n ref.current.style.setProperty('left', 'unset');\n }\n if (vertical === 'middle' && horizontal === 'end') {\n ref.current.style.setProperty('right', 'unset');\n }\n if (vertical === 'middle' && horizontal === 'start') {\n ref.current.style.setProperty('left', 'unset');\n }\n }\n }\n};\nvar horizontalPosition = function (align, isRtl) {\n var horizontal = align.horizontal;\n return {\n end: isRtl ? 'left' : 'right',\n center: 'left',\n start: isRtl ? 'right' : 'left'\n }[horizontal || 'end'];\n};\nvar verticalPosition = function (align) {\n return {\n top: 'top',\n middle: 'top',\n bottom: 'bottom'\n }[align.vertical || 'bottom'];\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { getActiveElement, IconWrap, kendoThemeMaps, svgIconPropType, useZIndexContext, validatePackage, ZIndexContext } from '@progress/kendo-react-common';\nimport { classNames, guid, useDir, dispatchEvent, Keys, getTabIndex } from '@progress/kendo-react-common';\nimport { FloatingActionButtonItem } from './FloatingActionButtonItem';\nimport { packageMetadata } from '../package-metadata';\nimport { position, getAnchorAlign, getPopupAlign, getTextDirectionClass } from './utils';\nimport { Popup } from '@progress/kendo-react-popup';\n/** @hidden */\nvar ZINDEX_FAB_STEP = 2;\n/** @hidden */\nvar DEFAULT_FAB_ZINDEX = 100;\n/**\n * Represents the [KendoReact FloatingActionButton component]({% slug overview_floatingactionbutton %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var FloatingActionButton = React.forwardRef(function (props, ref) {\n validatePackage(packageMetadata);\n var _a = props.align, align = _a === void 0 ? defaultProps.align : _a, alignOffset = props.alignOffset, className = props.className, disabled = props.disabled, icon = props.icon, svgIcon = props.svgIcon, iconClass = props.iconClass, id = props.id, items = props.items, item = props.item, text = props.text, _b = props.positionMode, positionMode = _b === void 0 ? defaultProps.positionMode : _b, _c = props.size, size = _c === void 0 ? defaultProps.size : _c, style = props.style, _d = props.rounded, rounded = _d === void 0 ? defaultProps.rounded : _d, _e = props.themeColor, themeColor = _e === void 0 ? defaultProps.themeColor : _e, overlayStyle = props.overlayStyle, tabIndex = props.tabIndex, accessKey = props.accessKey, _f = props.popupSettings, popupSettings = _f === void 0 ? {} : _f, modal = props.modal, onClick = props.onClick, onItemClick = props.onItemClick, onFocus = props.onFocus, onBlur = props.onBlur, onKeyDown = props.onKeyDown, onOpen = props.onOpen, onClose = props.onClose, others = __rest(props, [\"align\", \"alignOffset\", \"className\", \"disabled\", \"icon\", \"svgIcon\", \"iconClass\", \"id\", \"items\", \"item\", \"text\", \"positionMode\", \"size\", \"style\", \"rounded\", \"themeColor\", \"overlayStyle\", \"tabIndex\", \"accessKey\", \"popupSettings\", \"modal\", \"onClick\", \"onItemClick\", \"onFocus\", \"onBlur\", \"onKeyDown\", \"onOpen\", \"onClose\"]);\n var zIndexContext = useZIndexContext();\n var currentZIndex = zIndexContext ? zIndexContext + ZINDEX_FAB_STEP : DEFAULT_FAB_ZINDEX;\n var target = React.useRef(null);\n var elementRef = React.useRef(null);\n var listRef = React.useRef(null);\n var popupRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n var getImperativeHandle = React.useCallback(function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); }, [focusElement]);\n React.useImperativeHandle(target, getImperativeHandle);\n React.useImperativeHandle(ref, function () { return target.current; });\n var _g = React.useState(false), open = _g[0], setOpen = _g[1];\n var _h = React.useState(false), focused = _h[0], setFocused = _h[1];\n var _j = React.useState(-1), focusedIndex = _j[0], setFocusedIndex = _j[1];\n var buttonId = React.useMemo(function () { return guid(); }, []);\n var dir = useDir(elementRef, props.dir);\n var isRtl = dir === 'rtl';\n var listId = React.useMemo(function () { return guid(); }, []);\n React.useEffect(function () {\n position(elementRef, align, alignOffset, isRtl);\n }, [elementRef, align, alignOffset, isRtl]);\n React.useEffect(function () {\n if (focused && elementRef && elementRef.current) {\n // firefox in mac does not focus on mouse-down, next line fixes this\n elementRef.current.focus();\n }\n }, [focused, elementRef]);\n var dispatchPopupEvent = React.useCallback(function (dispatchedEvent, isOpen) {\n if (!items) {\n return;\n }\n dispatchEvent(isOpen ? onOpen : onClose, dispatchedEvent, getImperativeHandle(), undefined);\n }, [onOpen, onClose, items]);\n var handleClick = React.useCallback(function (event) {\n if (!event.target || disabled) {\n return;\n }\n if (!items && onClick) {\n dispatchEvent(onClick, event, getImperativeHandle(), undefined);\n }\n else {\n setOpen(!open);\n setFocused(true);\n setFocusedIndex(!open ? 0 : -1);\n dispatchPopupEvent(event, !open);\n }\n }, [setOpen, setFocused, setFocusedIndex, onClick, dispatchPopupEvent,\n open, items, disabled]);\n var handleFocus = React.useCallback(function (event) {\n setFocused(true);\n setFocusedIndex(open ? 0 : -1);\n if (onFocus) {\n dispatchEvent(onFocus, event, getImperativeHandle(), undefined);\n }\n }, [onFocus, setFocused, setFocusedIndex]);\n var handleBlur = React.useCallback(function (event) {\n setFocused(false);\n setOpen(false);\n setFocusedIndex(-1);\n dispatchEvent(onBlur, event, getImperativeHandle(), undefined);\n var fireCloseEvent = open;\n if (fireCloseEvent) {\n dispatchPopupEvent(event, false);\n }\n }, [onBlur, setFocused, setOpen, setFocusedIndex, dispatchPopupEvent]);\n var handleMouseDown = React.useCallback(function (event) {\n event.preventDefault();\n }, []);\n var dispatchItemClickEvent = React.useCallback(function (dispatchedEvent, index) {\n if (!items) {\n return;\n }\n if (!items[index].disabled) {\n dispatchEvent(onItemClick, dispatchedEvent, getImperativeHandle(), {\n itemProps: items[index],\n itemIndex: index\n });\n }\n }, [onItemClick]);\n var handleItemClick = React.useCallback(function (event, clickedItemIndex) {\n if (!event.target || !items) {\n return;\n }\n setFocusedIndex(clickedItemIndex);\n setOpen(false);\n dispatchItemClickEvent(event, clickedItemIndex);\n dispatchPopupEvent(event, false);\n }, [setFocusedIndex, setOpen, dispatchItemClickEvent, dispatchPopupEvent]);\n var handleItemDown = React.useCallback(function (event) {\n var activeElement = getActiveElement(document);\n if (activeElement === elementRef.current) {\n event.preventDefault();\n }\n }, [elementRef]);\n var handleKeyDown = React.useCallback(function (event) {\n var currIndex = focusedIndex;\n var maxNavIndex = items ? items.length - 1 : -1;\n var isAtBottom = align.vertical === 'bottom';\n switch (event.keyCode) {\n case Keys.enter:\n case Keys.space:\n if (currIndex >= 0) {\n dispatchItemClickEvent(event, currIndex);\n }\n event.preventDefault();\n setOpen(!open);\n setFocusedIndex(!open ? 0 : -1);\n break;\n case Keys.esc:\n event.preventDefault();\n setOpen(false);\n setFocusedIndex(-1);\n break;\n case Keys.home:\n event.preventDefault();\n setFocusedIndex(0);\n break;\n case Keys.end:\n event.preventDefault();\n setFocusedIndex(maxNavIndex);\n break;\n case Keys.down:\n case Keys.right:\n event.preventDefault();\n if (currIndex < maxNavIndex && !isAtBottom) {\n setFocusedIndex(currIndex + 1);\n }\n if (currIndex > 0 && isAtBottom) {\n setFocusedIndex(currIndex - 1);\n }\n break;\n case Keys.up:\n case Keys.left:\n event.preventDefault();\n if (currIndex > 0 && !isAtBottom) {\n setFocusedIndex(currIndex - 1);\n }\n if (currIndex < maxNavIndex && isAtBottom) {\n setFocusedIndex(currIndex + 1);\n }\n break;\n default:\n break;\n }\n dispatchEvent(onKeyDown, event, getImperativeHandle(), undefined);\n }, [onKeyDown, focusedIndex, setFocusedIndex, isRtl, setOpen]);\n var buttonClassNames = React.useMemo(function () {\n var _a;\n return classNames('k-fab k-fab-solid', (_a = {\n 'k-fab-sm': size === 'small',\n 'k-fab-md': size === 'medium',\n 'k-fab-lg': size === 'large',\n 'k-disabled': disabled,\n 'k-pos-absolute': positionMode === 'absolute',\n 'k-pos-fixed': positionMode === 'fixed',\n 'k-focus': focused\n },\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _a[\"k-fab-solid-\".concat(themeColor)] = themeColor,\n _a), \"k-\".concat(align.vertical, \"-\").concat(align.horizontal), className);\n }, [themeColor, size, rounded, disabled, positionMode, align, focused, className]);\n var fabItems = (items && (items.map(function (element, index) {\n return (React.createElement(FloatingActionButtonItem, __assign({}, element, { key: index, index: index, id: \"\".concat(listId, \"-\").concat(index), disabled: disabled || element.disabled, focused: focusedIndex === index, dataItem: element, item: item, className: classNames(element.className, getTextDirectionClass(dir || 'ltr', align.horizontal)), onClick: handleItemClick, onDown: handleItemDown })));\n })));\n var isIconFab = Boolean((icon || svgIcon) && !text);\n var fabWidth = elementRef.current ? elementRef.current.offsetWidth : 0;\n var iconWidth = 32;\n var spacing = (fabWidth / 2) - (iconWidth / 2);\n return (React.createElement(ZIndexContext.Provider, { value: currentZIndex },\n React.createElement(React.Fragment, null,\n React.createElement(\"button\", __assign({ ref: elementRef, id: id || buttonId, role: items ? 'menubutton' : 'button', type: 'button', \"aria-disabled\": disabled, \"aria-expanded\": items ? open : undefined, \"aria-haspopup\": items ? true : false, \"aria-label\": \"\".concat(text || '', \" floatingactionbutton\"), \"aria-owns\": items ? listId : undefined, \"aria-activedescendant\": focusedIndex >= 0 && items ? \"\".concat(listId, \"-\").concat(focusedIndex) : undefined, tabIndex: getTabIndex(tabIndex, disabled), accessKey: accessKey, dir: dir, disabled: disabled, className: buttonClassNames, style: style, onClick: handleClick, onMouseDown: handleMouseDown, onFocus: handleFocus, onBlur: handleBlur, onKeyDown: handleKeyDown }, others),\n (icon || svgIcon) ?\n React.createElement(IconWrap, { className: \"k-fab-icon\", name: icon, icon: svgIcon }) :\n iconClass ?\n React.createElement(\"span\", { role: \"presentation\", className: iconClass }) : null,\n text && React.createElement(\"span\", { className: \"k-fab-text\" }, text)),\n modal && open && (React.createElement(\"div\", { className: \"k-overlay\", style: __assign({ zIndex: currentZIndex }, overlayStyle) })),\n React.createElement(Popup, { ref: popupRef, anchor: elementRef.current, show: open, animate: popupSettings.animate, popupClass: classNames('k-popup-transparent k-fab-popup', popupSettings.popupClass), anchorAlign: popupSettings.anchorAlign || getAnchorAlign(align, isRtl), popupAlign: popupSettings.popupAlign || getPopupAlign(align, isRtl), style: { boxShadow: 'none' } },\n React.createElement(\"ul\", { ref: listRef, role: 'menu', \"aria-labelledby\": id, id: listId, className: classNames('k-fab-items', {\n 'k-fab-items-bottom': align.vertical !== 'bottom',\n 'k-fab-items-top': align.vertical === 'bottom'\n }), style: {\n paddingLeft: isIconFab ? spacing : undefined,\n paddingRight: isIconFab ? spacing : undefined\n } }, fabItems)))));\n});\nFloatingActionButton.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n id: PropTypes.string,\n dir: PropTypes.string,\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n disabled: PropTypes.bool,\n icon: PropTypes.string,\n svgIcon: svgIconPropType,\n iconClass: PropTypes.string,\n text: PropTypes.string,\n alignOffset: PropTypes.shape({\n x: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n y: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n }),\n align: PropTypes.shape({\n vertical: PropTypes.oneOf(['top', 'middle', 'bottom']),\n horizontal: PropTypes.oneOf(['start', 'center', 'end'])\n }),\n positionMode: PropTypes.oneOf(['absolute', 'fixed']),\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n themeColor: PropTypes.oneOf([null,\n 'primary', 'secondary', 'tertiary',\n 'info', 'success', 'warning',\n 'error', 'dark', 'light', 'inverse'\n ]),\n modal: PropTypes.bool,\n overlayStyle: PropTypes.object\n};\nvar defaultProps = {\n align: { vertical: 'bottom', horizontal: 'end' },\n size: 'medium',\n rounded: 'full',\n themeColor: 'primary',\n positionMode: 'fixed'\n};\nFloatingActionButton.displayName = 'KendoFloatingActionButton';\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-buttons',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698928460,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { toolbarButtons } from './../util';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the [KendoReact Toolbar component]({% slug overview_toolbar %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n function Toolbar(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this.offsetHeight = 0;\n _this.offsetWidth = 0;\n _this.buttons = [];\n _this.focusedSelector = _this.selectors.map(function (s) { return s + ':focus'; }).join(',');\n _this.setTabIndex = function (focusedIndex) {\n var _a = _this.props.tabIndex, tabIndex = _a === void 0 ? Toolbar.defaultProps.tabIndex : _a;\n _this.buttons.forEach(function (button, index) {\n button.tabIndex = (index === focusedIndex) ? tabIndex : -1;\n });\n };\n _this.onKeyDown = function (event) {\n var target = event.target;\n var arrowKey = event.keyCode === Keys.left || event.keyCode === Keys.right;\n if (!arrowKey || event.defaultPrevented || _this.buttons.findIndex(function (b) { return b === target; }) === -1) {\n return;\n }\n var focusedIndex = _this.focusedIndex;\n if (event.keyCode === Keys.left) {\n _this.focusButton(focusedIndex, focusedIndex - 1);\n }\n else {\n _this.focusButton(focusedIndex, focusedIndex + 1);\n }\n };\n _this.onWindowResize = function (event) {\n var element = _this.element;\n if (!element) {\n return;\n }\n var offsetWidth = element.offsetWidth;\n var offsetHeight = element.offsetHeight;\n if (_this.offsetWidth !== offsetWidth || _this.offsetHeight !== offsetHeight) {\n _this.offsetWidth = offsetWidth;\n _this.offsetHeight = offsetHeight;\n var newSizes = { offsetWidth: _this.offsetWidth, offsetHeight: _this.offsetHeight };\n if (_this.props.onResize) {\n _this.props.onResize.call(undefined, __assign(__assign({ target: _this }, newSizes), { nativeEvent: event }));\n }\n }\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(Toolbar.prototype, \"selectors\", {\n get: function () {\n return this.props.buttons || toolbarButtons;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Toolbar.prototype, \"focusedIndex\", {\n get: function () {\n var focused = this.element && this.element.querySelector(this.focusedSelector);\n return Math.max(0, this.buttons.findIndex(function (e) { return e === focused; }));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Toolbar.prototype, \"element\", {\n /**\n * Returns the HTML element of the Toolbar component.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Toolbar.prototype.componentDidMount = function () {\n window.addEventListener('resize', this.onWindowResize);\n var element = this.element;\n if (element) {\n this.offsetWidth = element.offsetWidth;\n this.offsetHeight = element.offsetHeight;\n if (this.props.keyboardNavigation !== false) {\n this.buttons = Array.from(element.querySelectorAll(this.selectors.join(',')));\n this.setTabIndex(0);\n }\n }\n };\n /**\n * @hidden\n */\n Toolbar.prototype.componentDidUpdate = function () {\n var element = this.element;\n if (!element || this.props.keyboardNavigation === false) {\n return;\n }\n this.buttons = Array.from(element.querySelectorAll(this.selectors.join(',')));\n this.setTabIndex(this.focusedIndex);\n };\n /**\n * @hidden\n */\n Toolbar.prototype.componentWillUnmount = function () {\n window.removeEventListener('resize', this.onWindowResize);\n this.buttons.length = 0;\n };\n /**\n * @hidden\n */\n Toolbar.prototype.render = function () {\n var _a;\n var _this = this;\n return (React.createElement(\"div\", { id: this.props.id, \"aria-label\": this.props.ariaLabel, className: classNames('k-toolbar', (_a = {},\n _a[\"k-toolbar-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size,\n _a), this.props.className), style: this.props.style, role: this.props.role !== undefined ? (this.props.role || undefined) : 'toolbar', dir: this.props.dir, ref: function (element) { return _this._element = element; }, onKeyDown: this.props.keyboardNavigation !== false ? this.onKeyDown : undefined }, this.props.children));\n };\n Toolbar.prototype.focusButton = function (prevIndex, index) {\n var _a = this.props.tabIndex, tabIndex = _a === void 0 ? Toolbar.defaultProps.tabIndex : _a;\n var button = this.buttons[index];\n if (button) {\n button.tabIndex = tabIndex;\n button.focus();\n var prevButton = this.buttons[prevIndex];\n if (prevButton) {\n prevButton.tabIndex = -1;\n }\n }\n };\n /**\n * @hidden\n */\n Toolbar.propTypes = {\n tabIndex: PropTypes.number,\n dir: PropTypes.string,\n keyboardNavigation: PropTypes.bool,\n style: PropTypes.object,\n className: PropTypes.string,\n role: PropTypes.string,\n onResize: PropTypes.func,\n buttons: PropTypes.arrayOf(PropTypes.string),\n size: PropTypes.oneOf([null, 'small', 'medium', 'large'])\n };\n /**\n * @hidden\n */\n Toolbar.defaultProps = {\n tabIndex: 0,\n size: 'medium'\n };\n return Toolbar;\n}(React.Component));\nexport { Toolbar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nvar ToolbarSeparator = /** @class */ (function (_super) {\n __extends(ToolbarSeparator, _super);\n function ToolbarSeparator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n ToolbarSeparator.prototype.render = function () {\n return (React.createElement(\"div\", { className: classNames('k-separator', this.props.className) }));\n };\n return ToolbarSeparator;\n}(React.PureComponent));\nexport { ToolbarSeparator };\n","/**\n * @hidden\n */\nvar styles = {\n button: 'k-button',\n 'flat': 'k-flat',\n 'outline': 'k-outline',\n 'clear': 'k-button-clear',\n 'primary': 'k-primary',\n 'state-selected': 'k-selected',\n 'button-icon': 'k-button-icon',\n 'button-icontext': 'k-button-icontext',\n 'state-disabled': 'k-disabled',\n 'group-start': 'k-group-start',\n 'group-end': 'k-group-end',\n 'button-group': 'k-button-group',\n 'button-group-stretched': 'k-button-group-stretched',\n 'ltr': 'k-ltr',\n 'rtl': 'k-rtl'\n};\n// const notDisabled = ':not(.k-disabled):not([disabled]):not([disabled=\"true\"])';\nvar noInnerButton = ':not(.k-dropdownlist button):not(.k-colorpicker button):not(.k-split-button .k-split-button-arrow)';\n/**\n * @hidden\n */\nexport var toolbarButtons = [\n 'button' + noInnerButton,\n '.k-button-group > button' + noInnerButton,\n '.k-dropdownlist',\n '.k-colorpicker'\n];\n/**\n * @hidden\n */\nexport default {\n styles: styles\n};\n","import * as React from 'react';\nimport { useDraggable } from './hooks';\n/**\n * Represents the KendoReact Draggable component.\n *\n * Accepts properties of type [DraggableProps]({% slug api_common_draggableprops %}),\n * and returns an object of type [DraggableHandle]({% slug api_common_draggablehandle %}) when the `ref` is obtained.\n */\nexport var Draggable = React.forwardRef(function (props, ref) {\n var childRef = React.useRef(null);\n var target = React.useRef(null);\n var getElement = React.useCallback(function () { return childRef.current && childRef.current.element\n ? childRef.current.element\n : childRef.current; }, [childRef]);\n React.useImperativeHandle(target, function () { return ({ element: getElement() || null }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n React.useImperativeHandle(props.childRef, function () { return childRef.current; });\n var handlePress = React.useCallback(function (event) {\n if (!props.onPress) {\n return;\n }\n props.onPress({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [getElement, props.onPress]);\n var handleRelease = React.useCallback(function (event) {\n if (!props.onRelease) {\n return;\n }\n props.onRelease({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [getElement, props.onRelease]);\n var handleDragStart = React.useCallback(function (event) {\n if (!props.onDragStart) {\n return;\n }\n props.onDragStart({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [props, getElement]);\n var handleDrag = React.useCallback(function (event) {\n if (!props.onDrag) {\n return;\n }\n props.onDrag({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [getElement, props.onDrag]);\n var handleDragEnd = React.useCallback(function (event) {\n if (!props.onDragEnd) {\n return;\n }\n props.onDragEnd({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [getElement, props.onDragEnd]);\n useDraggable(childRef, {\n onPress: handlePress,\n onRelease: handleRelease,\n onDragStart: handleDragStart,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd\n }, {\n mouseOnly: props.mouseOnly,\n autoScroll: props.autoScroll,\n hint: props.hint,\n scrollContainer: props.scrollContainer\n });\n return props.children\n ? (React.cloneElement(React.Children.only(props.children), { ref: childRef }))\n : null;\n});\nDraggable.displayName = 'KendoReactDraggable';\n","/**\n * @hidden\n */\nvar getDocument = function () { return typeof document !== 'undefined' ? document : {}; };\n/**\n * @hidden\n */\nvar BrowserSupportService = /** @class */ (function () {\n function BrowserSupportService() {\n this.scrollbar = 0;\n }\n Object.defineProperty(BrowserSupportService.prototype, \"scrollbarWidth\", {\n get: function () {\n var document = getDocument();\n if (!this.scrollbar && document && document.createElement) {\n var div = document.createElement('div');\n div.style.cssText = 'overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block';\n div.innerHTML = ' ';\n document.body.appendChild(div);\n this.scrollbar = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return this.scrollbar;\n },\n enumerable: false,\n configurable: true\n });\n return BrowserSupportService;\n}());\nexport { BrowserSupportService };\n","/**\n * @hidden\n */\nexport var canUseDOM = Boolean(\n// from fbjs\ntypeof window !== 'undefined' &&\n window.document &&\n window.document.createElement);\n","/**\n * @hidden\n */\nexport var classNames = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = {};\n var addLeafKeys = function (arg) { return typeof arg === 'object' ? Object\n .keys(arg)\n .forEach(function (key) {\n result[key] = arg[key];\n }) : result[arg] = true; };\n ;\n var addKeys = function (list) { return list\n .filter(function (arg) { return arg !== true && !!arg; })\n .map(function (arg) {\n return Array.isArray(arg) ?\n addKeys(arg) :\n addLeafKeys(arg);\n }); };\n ;\n addKeys(args);\n return Object\n .keys(result)\n .map(function (key) { return (result[key] && key) || null; })\n .filter(function (el) { return el !== null; })\n .join(' ');\n};\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var cloneDate = function (date) { return date ? new Date(date.getTime()) : null; };\n/**\n * @hidden\n */\nexport function clone(obj) {\n var result = {};\n cloneObject(obj, result);\n return result;\n}\n/**\n * @hidden\n */\nexport function cloneObject(obj, result) {\n for (var field in obj) {\n if (obj.hasOwnProperty(field)) {\n var value = obj[field];\n result[field] = cloneValue(value, result[field]);\n }\n }\n}\n/**\n * @hidden\n */\nexport function cloneValue(value, nextValue) {\n if (Array.isArray(value)) {\n return cloneArray(value);\n }\n else if (value instanceof Date) {\n return cloneDate(value);\n }\n else if (React.isValidElement(value)) {\n return React.cloneElement(value, value.props);\n }\n else if (value && typeof value === 'object') {\n var newNextValue = nextValue || {};\n cloneObject(value, newNextValue);\n return newNextValue;\n }\n else {\n return value;\n }\n}\n/**\n * @hidden\n */\nexport function cloneArray(array) {\n return array.map(function (value) { return cloneValue(value, undefined); });\n}\n","import * as React from 'react';\n/** @hidden */\nexport var ZIndexContext = React.createContext(0);\n/** @hidden */\nexport var useZIndexContext = function () { return React.useContext(ZIndexContext); };\nZIndexContext.displayName = 'KendoReactZIndexContext';\n","import * as React from 'react';\nimport { noop } from '../../noop';\n/**\n * @hidden\n */\nexport var DragContext = React.createContext([\n undefined,\n noop\n]);\n/**\n * @hidden\n */\nexport var DropContext = React.createContext([\n undefined,\n noop\n]);\n/**\n * @hidden\n */\nexport var DragsContext = React.createContext([[], noop, noop]);\n/**\n * @hidden\n */\nexport var DropsContext = React.createContext([[], noop, noop]);\n","/**\n * @hidden\n * Dispatches a new event based on an event that was already internally dispatched to KendoReact users.\n *\n * @param eventHandler - The public event handler that is assigned by the user.\n * When undefined, the method is not an option.\n * @param dispatchedEvent - The event that was already dispatched internally.\n * @param target - The target component of the new event.\n * @param eventData - The additional data that will be passed through the new event.\n * When the new event has no additional data\n * other than the `BaseEvent` arguments, pass `undefined`.\n */\nexport function dispatchEvent(eventHandler, dispatchedEvent, target, eventData) {\n if (eventHandler) {\n var eventBaseData = {\n syntheticEvent: dispatchedEvent,\n nativeEvent: dispatchedEvent.nativeEvent,\n target: target\n };\n eventHandler.call(undefined, Object.assign(eventBaseData, eventData));\n }\n}\n","/**\n * @hidden\n */\nexport var FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n","import { FIELD_REGEX } from './constants';\n/**\n * @hidden\n */\nexport function fieldList(field) {\n var fields = [];\n field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {\n fields.push(index !== undefined ? index : (indexAccessor || fieldName));\n });\n return fields;\n}\n","/**\n * @hidden\n */\nexport var focusFirstFocusableChild = function (target) {\n if (target) {\n if ((target instanceof HTMLInputElement || target.tabIndex !== -1) && target.focus) {\n target.focus();\n return;\n }\n var element = target.querySelector('input, [tabindex]:not([tabindex=\"-1\"])');\n if (element && element.focus) {\n element.focus();\n }\n }\n};\n","/**\n * @hidden\n */\nexport var getInnerActiveElement = function (element) {\n var shadowRoot = element.shadowRoot;\n var contentDocument = element.contentDocument;\n if (shadowRoot && shadowRoot.activeElement) {\n return getInnerActiveElement(shadowRoot.activeElement);\n }\n if (contentDocument && contentDocument.activeElement) {\n return getInnerActiveElement(contentDocument.activeElement);\n }\n return element;\n};\n/**\n * @hidden\n */\nexport var getActiveElement = function (document) {\n if (!document || !document.activeElement) {\n return undefined;\n }\n return getInnerActiveElement(document.activeElement);\n};\n","/* eslint-disable radix */\n/**\n * @hidden\n */\nvar DISABLED_TABINDEX = -1;\n/**\n * @hidden\n */\nvar DEFAULT_TABINDEX = 0;\n/**\n * @hidden\n */\nexport var getTabIndex = function (tabIndex, disabled, useDefaultTabIndexWhenDisabled) {\n var parsedTabIndex = typeof tabIndex === 'string' ? parseInt(tabIndex, undefined) : tabIndex;\n if (parsedTabIndex === NaN) {\n return undefined;\n }\n return parsedTabIndex !== undefined\n ? parsedTabIndex\n : disabled ?\n (useDefaultTabIndexWhenDisabled ? undefined : DISABLED_TABINDEX)\n : DEFAULT_TABINDEX;\n};\n","import { fieldList } from './fieldList';\nvar getterCache = {};\ngetterCache.undefined = function () { return undefined; };\n/**\n * Can be used for getting value from object using field path. For example `users[index].name`.\n *\n * @example\n * ```jsx-no-run\n * const values = {users:[{lastName: 'Doe'}]};\n * const firstUserLastName = getter('user[0].lastName');\n *\n * console.log(firstUserLastName(values))\n *\n * // result: 'Doe'\n * ```\n */\nexport function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n var fields = fieldList(field);\n getterCache[field] = function (obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n return result;\n };\n return getterCache[field];\n}\n","/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nexport var guid = function () {\n var id = '';\n var i;\n var random;\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += '-';\n }\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n return id;\n};\n","import { canUseDOM } from './canUseDOM';\n/** @hidden */\nexport var hasRelativeStackingContext = function (elementSource) {\n if (!canUseDOM) {\n return false;\n }\n // Component need to pass element to make sure document owner is correct.\n // This however might be performance hit if checked for example on each drag event.\n var currentDocument = elementSource ? elementSource.ownerDocument : document;\n if (!currentDocument || !currentDocument.body) {\n return false;\n }\n var top = 10;\n var parent = currentDocument.createElement('div');\n parent.style.transform = 'matrix(10, 0, 0, 10, 0, 0)';\n var child = currentDocument.createElement('div');\n child.appendChild(currentDocument.createTextNode('child'));\n child.style.position = 'fixed';\n child.style.top = top + 'px';\n parent.appendChild(child);\n currentDocument.body.appendChild(parent);\n var isDifferent = child.getBoundingClientRect().top !== top;\n currentDocument.body.removeChild(parent);\n return isDifferent;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useAsyncFocusBlur } from '../hooks/useAsyncFocusBlur';\n/**\n * An utility High-order Component for asynchronous focus/blur handling.\n *\n * By default, the `onFocus` and `onBlur` callbacks are called every time a child components receives/loses focus.\n * Use this utility HOC for scenarios where you need to know if the parent has received focus for the first time, or completely lost focus.\n *\n * @returns\n */\nexport var AsyncFocusBlur = function (_a) {\n var children = _a.children, onFocus = _a.onFocus, onBlur = _a.onBlur, onSyncFocus = _a.onSyncFocus, onSyncBlur = _a.onSyncBlur;\n var args = useAsyncFocusBlur({ onFocus: onFocus, onBlur: onBlur, onSyncFocus: onSyncFocus, onSyncBlur: onSyncBlur });\n return React.createElement(React.Fragment, null, children.call(undefined, __assign({}, args)));\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { usePropsContext } from '../hooks/usePropsContext';\n/** @hidden */\nexport var createPropsContext = function () { return React.createContext(function (props) { return props; }); };\n/** @hidden */\nexport var withPropsContext = function (context, Component\n// eslint-disable-next-line react/display-name\n) { return React.forwardRef(function (props, ref) {\n var contextProps = usePropsContext(context, props);\n return (React.createElement(Component, __assign({}, contextProps, { ref: ref })));\n}); };\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\n/**\n * An utility function for asynchronous focus/blur handling.\n *\n * By default, the `onFocus` and `onBlur` callbacks are called every time a child components receives/loses focus.\n * Use this utility hook for scenarios where you need to know if the parent has received focus for the first time, or completely lost focus.\n *\n * @returns\n */\nexport function useAsyncFocusBlur(_a) {\n var onFocus = _a.onFocus, onBlur = _a.onBlur, onSyncFocus = _a.onSyncFocus, onSyncBlur = _a.onSyncBlur;\n var focused = React.useRef(false);\n var tick = React.useRef(0);\n var nextTick = React.useCallback(function (f) {\n clearTimeout(tick.current);\n tick.current = window.setTimeout(function () { return f(); });\n }, [tick]);\n var handleFocus = React.useCallback(function () {\n var event = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n event[_i] = arguments[_i];\n }\n clearTimeout(tick.current);\n if (onSyncFocus) {\n onSyncFocus.call(undefined, event[0]);\n }\n if (focused.current) {\n return;\n }\n ;\n focused.current = true;\n if (onFocus) {\n onFocus.call.apply(onFocus, __spreadArray([undefined], event, false));\n }\n }, [focused, onFocus, onSyncFocus]);\n var handleBlur = React.useCallback(function () {\n var event = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n event[_i] = arguments[_i];\n }\n if (onSyncBlur) {\n onSyncBlur.call(undefined, event[0]);\n }\n nextTick(function () {\n if (!focused.current) {\n return;\n }\n if (onBlur) {\n focused.current = false;\n onBlur.call.apply(onBlur, __spreadArray([undefined], event, false));\n }\n });\n }, [focused, nextTick, onBlur, onSyncBlur]);\n React.useEffect(function () {\n return function () {\n clearTimeout(tick.current);\n };\n }, []);\n return {\n onFocus: handleFocus,\n onBlur: handleBlur\n };\n}\n","/**\n * @hidden\n */\nexport var useCustomComponent = function (comp) {\n /* if(React.isValidElement

    (comp)) {\n return [comp.type, comp.props];\n } */\n return [comp, {}];\n};\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport function useDir(elementRef, initialDir, args) {\n // Dir prop is read only on initial rendering due to specifics of getComputedStyles - see below\n var _a = React.useState(initialDir), dir = _a[0], setDir = _a[1];\n React.useEffect(function () {\n if (!dir && window && elementRef.current) {\n // Note: getComputedStyle forces reflow\n var rtlCandidate = window.getComputedStyle(elementRef.current).direction;\n if (rtlCandidate) {\n // rerender is needed as DOM is read after first render\n setDir(rtlCandidate);\n }\n }\n }, args);\n return dir;\n}\n","import * as React from 'react';\n/**\n * Returns a function, which gets the `ownerDocument` of the element.\n */\nexport var useDocument = function (ref) {\n var getElement = React.useCallback(function () { return ref.current && ref.current.element\n ? ref.current.element\n : ref.current; }, [ref]);\n var getDocument = React.useCallback(function () {\n var element = getElement();\n return element ? element.ownerDocument || document : document;\n }, [getElement]);\n return getDocument;\n};\n","import { intersect } from \"./algorithms\";\nimport { getWindow, autoScrollVelocity, scrollableViewPort, getScrollableParent, isPointerInsideContainer, getDocument } from \"./utils\";\n/** @hidden */\nexport var DRAG_AND_DROP_DISPATCH_ACTION;\n(function (DRAG_AND_DROP_DISPATCH_ACTION) {\n DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_DOWN\"] = \"pointerdown\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_MOVE\"] = \"pointermove\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_UP\"] = \"pointerup\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"POINTER_CANCEL\"] = \"pointercancel\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"MOUSE_DOWN\"] = \"mousedown\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"MOUSE_MOVE\"] = \"mousemove\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"MOUSE_UP\"] = \"mouseup\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"CONTEXT_MENU\"] = \"contextmenu\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_START\"] = \"touchstart\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_MOVE\"] = \"touchmove\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_END\"] = \"touchend\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"TOUCH_CANCEL\"] = \"touchcancel\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"SCROLL\"] = \"scroll\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"START\"] = \"KENDO_DRAG_AND_DROP_START\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"MOVE\"] = \"KENDO_DRAG_AND_DROP_MOVE\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"END\"] = \"KENDO_DRAG_AND_DROP_END\";\n DRAG_AND_DROP_DISPATCH_ACTION[\"CANCEL\"] = \"KENDO_DRAG_AND_DROP_CANCEL\";\n})(DRAG_AND_DROP_DISPATCH_ACTION || (DRAG_AND_DROP_DISPATCH_ACTION = {}));\nvar isTouchEvent = function (event) { return /^touch/.test(event.type); };\nvar isScrollEvent = function (event) { return /^(scroll)/.test(event.type); };\n/** @hidden */\nexport var normalizeEvent = function (event, state) { return (isTouchEvent(event)\n ? ({\n pageX: event.changedTouches[0].pageX,\n pageY: event.changedTouches[0].pageY,\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n scrollX: state.scrollOffset.x,\n scrollY: state.scrollOffset.y,\n offsetX: state.offset.x,\n offsetY: state.offset.y,\n type: event.type,\n originalEvent: event,\n isTouch: true,\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n metaKey: false\n })\n : isScrollEvent(event)\n ? ({\n pageX: state.pageOffset.x,\n pageY: state.pageOffset.y,\n clientX: state.clientOffset.x,\n clientY: state.clientOffset.y,\n scrollX: state.scrollOffset.x,\n scrollY: state.scrollOffset.y,\n offsetX: state.offset.x,\n offsetY: state.offset.y,\n type: event.type,\n originalEvent: event,\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n metaKey: false\n })\n : ({\n pageX: event.pageX,\n pageY: event.pageY,\n clientX: event.clientX,\n clientY: event.clientY,\n offsetX: event.offsetX,\n offsetY: event.offsetY,\n scrollX: state.scrollOffset.x,\n scrollY: state.scrollOffset.y,\n type: event.type,\n ctrlKey: event.ctrlKey,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n metaKey: event.metaKey,\n originalEvent: event\n })); };\nvar noop = function () { };\n/** @hidden */\nexport var dispatchDragAndDrop = function (state, action, callbacks) {\n if (callbacks === void 0) { callbacks = {}; }\n var _a = callbacks.onIsPressedChange, onIsPressedChange = _a === void 0 ? noop : _a, _b = callbacks.onIsScrollingChange, onIsScrollingChange = _b === void 0 ? noop : _b, _c = callbacks.onVelocityChange, onVelocityChange = _c === void 0 ? noop : _c, _d = callbacks.onOffsetChange, onOffsetChange = _d === void 0 ? noop : _d, _e = callbacks.onPageOffsetChange, onPageOffsetChange = _e === void 0 ? noop : _e, _f = callbacks.onClientOffsetChange, onClientOffsetChange = _f === void 0 ? noop : _f, _g = callbacks.onScrollOffsetChange, onScrollOffsetChange = _g === void 0 ? noop : _g, _h = callbacks.onInitialScrollOffsetChange, onInitialScrollOffsetChange = _h === void 0 ? noop : _h;\n var drag = action.payload;\n var element = drag.element;\n var hint = drag.hint;\n var autoScrollDirection = state.autoScrollDirection;\n var overrideScrollableParent = state.scrollableParent;\n var event = normalizeEvent(action.event, state);\n switch (event.type) {\n case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_DOWN:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.POINTER_DOWN\n && (!event.originalEvent.isPrimary\n || event.originalEvent.button !== 0)) {\n break;\n }\n // In rare cases where the `which` attribute is available in the mouse event\n // we check if the `left button` is explicitly clicked:\n // https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/which#return_value\n case DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_DOWN:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_DOWN\n && (event.originalEvent.which\n && event.originalEvent.which > 1)\n || state.ignoreMouse) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_START:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_START\n && event.originalEvent.touches.length !== 1) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.START: {\n var scrollableParent_1 = overrideScrollableParent || getScrollableParent(action.payload.element);\n onInitialScrollOffsetChange(scrollableParent_1 instanceof Window\n ? { x: scrollableParent_1.scrollX, y: scrollableParent_1.scrollY }\n : { x: scrollableParent_1.scrollLeft, y: scrollableParent_1.scrollTop });\n onClientOffsetChange({\n x: event.clientX,\n y: event.clientY\n });\n onPageOffsetChange({\n x: event.pageX,\n y: event.pageY\n });\n onOffsetChange({\n x: event.offsetX,\n y: event.offsetY\n });\n onIsPressedChange(true);\n if (drag.onPress) {\n drag.onPress(event);\n }\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.SCROLL:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.SCROLL && !state.pressed) {\n break;\n }\n var scrollableParent = overrideScrollableParent || getScrollableParent(element);\n var scrollOffset = scrollableParent instanceof Window\n ? { x: scrollableParent.scrollX, y: scrollableParent.scrollY }\n : { x: scrollableParent.scrollLeft, y: scrollableParent.scrollTop };\n event.scrollX = scrollOffset.x - state.initialScrollOffset.x;\n event.scrollY = scrollOffset.y - state.initialScrollOffset.y;\n onScrollOffsetChange({\n x: event.scrollX,\n y: event.scrollY\n });\n case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_MOVE:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.POINTER_MOVE && !event.originalEvent.isPrimary) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_MOVE:\n case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_MOVE:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_MOVE && event.originalEvent.touches.length !== 1) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.MOVE: {\n if (state.pressed) {\n if (state.autoScroll && event.originalEvent.type !== 'scroll') {\n if (element) {\n var document_1 = getDocument(element);\n var scrollableParent_2 = overrideScrollableParent || getScrollableParent(document_1.elementFromPoint(event.clientX, event.clientY));\n var newVelocity = autoScrollVelocity(event.clientX, event.clientY, scrollableViewPort(scrollableParent_2, getWindow(element)));\n onVelocityChange({\n x: (autoScrollDirection && autoScrollDirection.horizontal === false) ? 0 : newVelocity.x,\n y: (autoScrollDirection && autoScrollDirection.vertical === false) ? 0 : newVelocity.y\n });\n onIsScrollingChange(newVelocity.y !== 0 || newVelocity.x !== 0);\n }\n }\n if (!state.drag && drag.onDragStart) {\n drag.onDragStart(event);\n }\n if (drag.onDrag) {\n drag.onDrag(event);\n }\n var dropElement_1 = intersect(hint || element, state.drops.map(function (drop) { return drop && drop.element; }).filter(function (d) { return d !== (hint || element); }));\n var drop = state.drops.find(function (drop) { return drop.element === dropElement_1; });\n if (drop\n && dropElement_1\n && isPointerInsideContainer(event.clientX, event.clientY, overrideScrollableParent || getScrollableParent(dropElement_1))\n && dropElement_1 !== element) {\n if ((state.drop && state.drop.element) !== dropElement_1) {\n if (state.drop && state.drop.onDragLeave) {\n state.drop.onDragLeave(event);\n }\n if (drop.onDragEnter) {\n drop.onDragEnter(event);\n }\n }\n else {\n if (drop.onDragOver) {\n drop.onDragOver(event);\n }\n }\n }\n else if (state.drop && state.drop.onDragLeave) {\n state.drop.onDragLeave(event);\n }\n }\n onClientOffsetChange({\n x: event.clientX,\n y: event.clientY\n });\n onPageOffsetChange({\n x: event.pageX,\n y: event.pageY\n });\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_UP:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.POINTER_UP && !event.originalEvent.isPrimary) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.MOUSE_UP:\n // the last finger has been lifted, and the user is not doing gesture.\n // there might be a better way to handle this.\n case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_END:\n if (event.type === DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_END && event.originalEvent.touches.length !== 1) {\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.END: {\n onIsPressedChange(false);\n onIsScrollingChange(false);\n onScrollOffsetChange({ x: 0, y: 0 });\n if (drag.onRelease) {\n drag.onRelease(event);\n }\n if (state.drop && state.drop.onDrop) {\n state.drop.onDrop(event);\n }\n if (state.drag && drag.onDragEnd) {\n drag.onDragEnd(event);\n }\n break;\n }\n case DRAG_AND_DROP_DISPATCH_ACTION.POINTER_CANCEL:\n case DRAG_AND_DROP_DISPATCH_ACTION.CONTEXT_MENU:\n case DRAG_AND_DROP_DISPATCH_ACTION.TOUCH_CANCEL:\n case DRAG_AND_DROP_DISPATCH_ACTION.CANCEL: {\n onIsPressedChange(false);\n onIsScrollingChange(false);\n onScrollOffsetChange({ x: 0, y: 0 });\n if (drag.onDragEnd) {\n drag.onDragEnd(event);\n }\n if (state.drop && state.drop.onDragLeave) {\n state.drop.onDragLeave(event);\n }\n break;\n }\n default:\n break;\n }\n};\n","var getRatio = function (element, target) {\n var elementRect = element.getBoundingClientRect();\n var targetRect = target.getBoundingClientRect();\n var top = Math.max(targetRect.top, elementRect.top);\n var left = Math.max(targetRect.left, elementRect.left);\n var right = Math.min(targetRect.left + targetRect.width, elementRect.left + elementRect.width);\n var bottom = Math.min(targetRect.top + targetRect.height, elementRect.top + elementRect.height);\n var width = right - left;\n var height = bottom - top;\n if (left < right && top < bottom) {\n var targetArea = targetRect.width * targetRect.height;\n var entryArea = elementRect.width * elementRect.height;\n var intersectionArea = width * height;\n var intersectionRatio = intersectionArea / (targetArea + entryArea - intersectionArea);\n return Number(intersectionRatio.toFixed(4));\n }\n return 0;\n};\n/** @hidden */\nexport var intersect = function (element, candidates) {\n var max = 0;\n var result = null;\n candidates.forEach(function (candidate) {\n if (candidate && element) {\n var ration = getRatio(element, candidate);\n if (ration > max) {\n max = ration;\n result = candidate;\n }\n }\n });\n return result;\n};\n","var detectBrowser = function () {\n var ua = window && window.navigator.userAgent;\n if (!ua) {\n return false;\n }\n var browser = false;\n var match = [];\n var browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome|crios)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n match = ua.match(browserRxs[agent]);\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.DOCUMENT_NODE || match[2], 10);\n break;\n }\n }\n }\n return browser;\n};\n/** @hidden */\nexport var getDocument = function (element) {\n return element ? element.ownerDocument || window.document : window.document;\n};\n/** @hidden */\nexport var getWindow = function (element) {\n var document = getDocument(element);\n return document\n ? document.defaultView || window\n : window;\n};\n/** @hidden */\nexport var scrollableRoot = function (element) {\n var support = { browser: detectBrowser() };\n var document = getDocument(element);\n return (support.browser.edge || support.browser.safari) ? document.body : document.documentElement;\n};\n/** @hidden */\nexport var isScrollable = function (el) {\n if (el && el.className && typeof (el.className) === 'string' && el.className.indexOf('k-auto-scrollable') > -1) {\n return true;\n }\n var overflow = window.getComputedStyle(el, 'overflow').overflow;\n return overflow.indexOf('auto') > -1 || overflow.indexOf('scroll') > -1;\n};\n/** @hidden */\nexport var getScrollableParent = function (el) {\n var root = scrollableRoot(el);\n if (!el || el === document.body || el === document.documentElement) {\n return root;\n }\n var parent = el;\n while (parent\n && parent !== document.body\n && parent.nodeType !== Node.DOCUMENT_FRAGMENT_NODE\n && parent.nodeType !== Node.DOCUMENT_NODE\n && !isScrollable(parent)) {\n parent = parent.parentNode;\n }\n if (parent && (parent === document.body || parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE)) {\n return root;\n }\n return parent;\n};\n/** @hidden */\nexport var autoScrollVelocity = function (mouseX, mouseY, rect) {\n var velocity = { x: 0, y: 0 };\n var AUTO_SCROLL_AREA = 50;\n if (mouseX - rect.left < AUTO_SCROLL_AREA) {\n velocity.x = -(AUTO_SCROLL_AREA - (mouseX - rect.left));\n }\n else if (rect.right - mouseX < AUTO_SCROLL_AREA) {\n velocity.x = AUTO_SCROLL_AREA - (rect.right - mouseX);\n }\n if (mouseY - rect.top < AUTO_SCROLL_AREA) {\n velocity.y = -(AUTO_SCROLL_AREA - (mouseY - rect.top));\n }\n else if (rect.bottom - mouseY < AUTO_SCROLL_AREA) {\n velocity.y = AUTO_SCROLL_AREA - (rect.bottom - mouseY);\n }\n return velocity;\n};\n/** @hidden */\nexport var scrollableViewPort = function (el, window) {\n var root = scrollableRoot(el);\n if (el === root) {\n return {\n top: root.scrollTop,\n left: root.scrollLeft,\n bottom: root.scrollTop + window.innerHeight,\n right: root.scrollLeft + window.innerWidth\n };\n }\n else {\n var rect = el.getBoundingClientRect();\n return {\n bottom: rect.top + rect.height,\n right: rect.left + rect.width,\n left: rect.left,\n top: rect.top\n };\n }\n};\n/** @hidden */\nexport var isPointerInsideContainer = function (x, y, container) {\n var rect = container.getBoundingClientRect();\n return (rect.top <= y &&\n rect.left <= x &&\n y <= rect.bottom &&\n x <= rect.right);\n};\n","import { scrollableRoot } from './utils';\n/** @hidden */\nexport var autoScroll = function (scrollableParent, vel) {\n if (!scrollableParent) {\n return;\n }\n var yIsScrollable;\n var xIsScrollable;\n var isRootNode = scrollableParent === scrollableRoot(scrollableParent);\n if (isRootNode) {\n yIsScrollable = document.body.scrollHeight > window.innerHeight;\n xIsScrollable = document.body.scrollWidth > window.innerWidth;\n }\n else {\n yIsScrollable = scrollableParent.offsetHeight <= scrollableParent.scrollHeight;\n xIsScrollable = scrollableParent.offsetWidth <= scrollableParent.scrollWidth;\n }\n var yDelta = scrollableParent.scrollTop + vel.y;\n var yInBounds = yIsScrollable && yDelta > 0 && yDelta < scrollableParent.scrollHeight;\n var xDelta = scrollableParent.scrollLeft + vel.x;\n var xInBounds = xIsScrollable && xDelta > 0 && xDelta < scrollableParent.scrollWidth;\n if (yInBounds) {\n scrollableParent.scrollTop += vel.y;\n }\n else if (yIsScrollable && yDelta < 0) {\n scrollableParent.scrollTop = 0;\n }\n if (xInBounds) {\n scrollableParent.scrollLeft += vel.x;\n }\n else if (xIsScrollable && xDelta < 0) {\n scrollableParent.scrollLeft = 0;\n }\n};\n","import * as React from 'react';\nimport { dispatchDragAndDrop, autoScroll as autoScrollElement, getScrollableParent } from '@progress/kendo-draggable-common';\nimport { noop } from '../noop';\nimport { useInheritedState } from '../hooks/useInheritedState';\nimport { DragContext, DropContext, DragsContext, DropsContext } from '../drag-n-drop/context';\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n/**\n * Represents the KendoReact `useDraggable` hook.\n * Use it to attach `drag` events to a native HTML DOM elements, or custom React Components.\n *\n * For more information, refer to the [KendoReact Draggable]({% slug draggable_drag-and-drop %}) article.\n *\n * @param ref - The `ref` of the HTML Element or React Component which will enable the `draggable` functionality.\n * @param callbacks - A collection of callbacks, called by the `useDraggable` hook when a specific action occurs.\n * @param options - Additional configuration of the `useDraggable` hook.\n */\nexport function useDraggable(ref, callbacks, options) {\n if (options === void 0) { options = {}; }\n var _a = callbacks.onPress, onPress = _a === void 0 ? noop : _a, _b = callbacks.onRelease, onRelease = _b === void 0 ? noop : _b, _c = callbacks.onDragStart, onDragStart = _c === void 0 ? noop : _c, _d = callbacks.onDrag, onDrag = _d === void 0 ? noop : _d, _e = callbacks.onDragEnd, onDragEnd = _e === void 0 ? noop : _e;\n var _f = options.hint, hint = _f === void 0 ? null : _f, _g = options.mouseOnly, mouseOnly = _g === void 0 ? false : _g, _h = options.autoScroll, autoScroll = _h === void 0 ? true : _h, _j = options.scrollContainer, scrollContainer = _j === void 0 ? null : _j;\n var _k = React.useState(false), pressed = _k[0], setPressed = _k[1];\n var _l = React.useState(false), scrolling = _l[0], setScrolling = _l[1];\n var drop = useInheritedState(DropContext)[0];\n var _m = useInheritedState(DragContext), drag = _m[0], setDrag = _m[1];\n var drops = React.useContext(DropsContext)[0];\n var _o = React.useContext(DragsContext), drags = _o[0], registerDrag = _o[1], deregisterDrag = _o[2];\n var velocity = React.useRef({ x: 0, y: 0 });\n var scrollInterval = React.useRef();\n var ignoreMouse = React.useRef(false);\n var restoreMouseTimeout = React.useRef();\n var scrollable = React.useRef(null);\n var unmount = React.useRef(false);\n var offset = React.useRef({ x: 0, y: 0 });\n var pageOffset = React.useRef({ x: 0, y: 0 });\n var clientOffset = React.useRef({ x: 0, y: 0 });\n var initialClientOffset = React.useRef({ x: 0, y: 0 });\n var scrollOffset = React.useRef({ x: 0, y: 0 });\n var initialScrollOffset = React.useRef({ x: 0, y: 0 });\n var supportPointerEvent = Boolean((typeof window !== 'undefined') && window.PointerEvent);\n var pointers = !mouseOnly && supportPointerEvent;\n var getElement = React.useCallback(function () { return ref.current && ref.current.element\n ? ref.current.element\n : ref.current; }, [ref]);\n var getHintElement = React.useCallback(function () { return hint && hint.current && hint.current.element\n ? hint.current.element\n : hint\n ? hint.current\n : null; }, [hint]);\n var getScrollContainer = React.useCallback(function () { return scrollContainer && scrollContainer.current && scrollContainer.current.element\n ? scrollContainer.current.element\n : scrollContainer\n ? scrollContainer.current\n : null; }, [scrollContainer]);\n var getAutoScrollContainer = React.useCallback(function () { return typeof autoScroll === 'object' && autoScroll.boundaryElementRef\n && autoScroll.boundaryElementRef.current && autoScroll.boundaryElementRef.current.element\n ? autoScroll.boundaryElementRef.current.element\n : typeof autoScroll === 'object' && autoScroll.boundaryElementRef && autoScroll.boundaryElementRef.current\n ? autoScroll.boundaryElementRef.current\n : null; }, [autoScroll]);\n var target = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({\n element: getElement(),\n hint: getHintElement(),\n onPress: handlePress,\n onDragStart: handleDragStart,\n onDrag: handleDrag,\n onDragEnd: handleDragEnd,\n onRelease: handleRelease,\n data: ref.current\n }); });\n var getDocument = React.useCallback(function () {\n var element = getElement();\n return element ? element.ownerDocument || document : document;\n }, [getElement]);\n var getWindow = React.useCallback(function () {\n var document = getDocument();\n return document\n ? document.defaultView || window\n : window;\n }, [getDocument]);\n var getState = React.useCallback(function () { return ({\n drag: drag ? drag.current : null,\n drop: drop ? drop.current : null,\n drags: drags.map(function (d) { return d.current; }),\n drops: drops.map(function (d) { return d.current; }),\n pressed: pressed,\n ignoreMouse: ignoreMouse.current,\n scrollOffset: scrollOffset.current,\n offset: offset.current,\n pageOffset: pageOffset.current,\n initialScrollOffset: initialScrollOffset.current,\n clientOffset: clientOffset.current,\n initialClientOffset: initialClientOffset.current,\n velocity: velocity.current,\n autoScroll: Boolean(typeof autoScroll === 'object' ? autoScroll.enabled !== false : autoScroll),\n scrollableParent: getAutoScrollContainer(),\n autoScrollDirection: typeof autoScroll === 'object' ? autoScroll.direction : { horizontal: true, vertical: true },\n isScrolling: scrolling\n }); }, [drag, drop, drags, drops, pressed, autoScroll, getAutoScrollContainer, scrolling]);\n var handlePressedChange = React.useCallback(function (value) {\n setPressed(value);\n }, []);\n var handleScrollingChange = React.useCallback(function (value) {\n setScrolling(value);\n }, []);\n var handleVelocityChange = React.useCallback(function (value) {\n velocity.current = value;\n }, []);\n var handleOffsetChange = React.useCallback(function (value) {\n offset.current = value;\n }, []);\n var handleClientOffsetChange = React.useCallback(function (value) {\n clientOffset.current = value;\n }, []);\n var handlePageOffsetChange = React.useCallback(function (value) {\n pageOffset.current = value;\n }, []);\n var handleInitialClientOffsetChange = React.useCallback(function (value) {\n initialClientOffset.current = value;\n }, []);\n var handleScrollOffsetChange = React.useCallback(function (value) {\n scrollOffset.current = value;\n }, []);\n var handleInitialScrollOffsetChange = React.useCallback(function (value) {\n initialScrollOffset.current = value;\n }, []);\n // Drag Events\n var handlePress = React.useCallback(function (event) {\n onPress(event);\n }, [onPress]);\n var handleRelease = React.useCallback(function (event) {\n onRelease(event);\n }, [onRelease]);\n var handleDragStart = React.useCallback(function (event) {\n setDrag(target, { target: ref.current, event: event });\n onDragStart(event);\n }, [setDrag, ref, onDragStart]);\n var handleDrag = React.useCallback(function (event) {\n onDrag(event);\n }, [onDrag]);\n var handleDragEnd = React.useCallback(function (event) {\n if (unmount.current) {\n return;\n }\n setDrag(null, { target: ref.current, event: event });\n onDragEnd(event);\n }, [onDragEnd, setDrag, ref]);\n var dispatchDragEvent = React.useCallback(function (event) {\n dispatchDragAndDrop(getState(), { event: event, payload: target.current }, {\n onVelocityChange: handleVelocityChange,\n onOffsetChange: handleOffsetChange,\n onClientOffsetChange: handleClientOffsetChange,\n onPageOffsetChange: handlePageOffsetChange,\n onInitialClientOffsetChange: handleInitialClientOffsetChange,\n onScrollOffsetChange: handleScrollOffsetChange,\n onInitialScrollOffsetChange: handleInitialScrollOffsetChange,\n onIsPressedChange: handlePressedChange,\n onIsScrollingChange: handleScrollingChange\n });\n }, [\n getState,\n handleVelocityChange,\n handleOffsetChange,\n handlePageOffsetChange,\n handleClientOffsetChange,\n handleInitialClientOffsetChange,\n handleInitialScrollOffsetChange,\n handlePressedChange,\n handleScrollOffsetChange,\n handleScrollingChange\n ]);\n // Pointer Events\n var handlePointerDown = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handlePointerMove = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handlePointerCancel = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handlePointerUp = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n // Mouse Events\n var handleMouseDown = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handleMouseMove = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handleMouseUp = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handleContextMenu = React.useCallback(function (event) {\n event.preventDefault();\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n // Touch Events\n var handleTouchStart = React.useCallback(function (event) {\n event.preventDefault();\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handleTouchMove = React.useCallback(function (event) {\n event.preventDefault();\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n var handleTouchEnd = React.useCallback(function (event) {\n if (event.touches.length === 0 && event.changedTouches.length === 1) {\n var currentWindow = getWindow();\n ignoreMouse.current = true;\n restoreMouseTimeout.current = currentWindow.setTimeout(function () { ignoreMouse.current = false; }, IGNORE_MOUSE_TIMEOUT);\n }\n dispatchDragEvent(event);\n }, [dispatchDragEvent, getWindow]);\n var handleScroll = React.useCallback(function (event) {\n dispatchDragEvent(event);\n }, [dispatchDragEvent]);\n // Misc\n var prerequisites = React.useCallback(function () {\n var element = getElement();\n if (element) {\n var initialTouchAction_1 = element.style.touchAction;\n element.style.touchAction = 'none';\n return function () {\n element.style.touchAction = initialTouchAction_1;\n };\n }\n }, [getElement]);\n var register = React.useCallback(function () {\n registerDrag(target);\n return function () {\n deregisterDrag(target);\n };\n }, [deregisterDrag, registerDrag]);\n var init = function () {\n var window = getWindow();\n var element = getElement();\n var document = getDocument();\n if (pointers) {\n if (element) {\n scrollable.current = getScrollableParent(element);\n if (scrollable.current) {\n scrollable.current.addEventListener('scroll', handleScroll, { passive: true });\n }\n element.addEventListener('pointerdown', handlePointerDown, { passive: true });\n }\n if (pressed) {\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp, true);\n document.addEventListener('contextmenu', handleContextMenu);\n document.addEventListener('pointercancel', handlePointerCancel, { passive: true });\n }\n }\n else {\n // Hacky-hacky iOS Safari\n window.addEventListener('touchmove', noop, { capture: false, passive: false });\n if (element) {\n element.addEventListener('mousedown', handleMouseDown, { passive: true });\n if (!mouseOnly) {\n element.addEventListener('touchstart', handleTouchStart, { passive: true });\n if (pressed) {\n element.addEventListener('touchmove', handleTouchMove, { passive: true });\n element.addEventListener('touchend', handleTouchEnd, { passive: true });\n }\n }\n }\n if (pressed) {\n document.addEventListener('mousemove', handleMouseMove, { passive: true });\n document.addEventListener('mouseup', handleMouseUp, { passive: true });\n }\n }\n return function () {\n if (scrollable.current) {\n scrollable.current.removeEventListener('scroll', handleScroll);\n }\n if (element) {\n element.removeEventListener('pointerdown', handlePointerDown);\n element.removeEventListener('mousedown', handleMouseDown);\n element.removeEventListener('touchstart', handleTouchStart);\n element.removeEventListener('touchmove', handleTouchMove);\n element.removeEventListener('touchend', handleTouchEnd);\n }\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp, true);\n document.removeEventListener('contextmenu', handleContextMenu);\n document.removeEventListener('pointercancel', handlePointerCancel);\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n window.removeEventListener('touchmove', noop);\n window.clearTimeout(restoreMouseTimeout.current);\n };\n };\n React.useEffect(function () {\n var window = getWindow();\n if (scrolling) {\n var scrollableParent_1 = getScrollContainer()\n || getScrollableParent(document.elementFromPoint(clientOffset.current.x, clientOffset.current.y));\n window.clearInterval(scrollInterval.current);\n scrollInterval.current = window.setInterval(function () {\n autoScrollElement(scrollableParent_1, { x: velocity.current.x, y: velocity.current.y });\n }, 50);\n }\n return function () {\n window.clearInterval(scrollInterval.current);\n };\n }, [getElement, getScrollContainer, getWindow, scrolling]);\n React.useEffect(prerequisites, [prerequisites]);\n React.useEffect(init, [\n pressed,\n getWindow,\n getElement,\n getDocument,\n mouseOnly,\n pointers,\n handleContextMenu,\n handleMouseDown,\n handleMouseMove,\n handleMouseUp,\n handlePointerCancel,\n handlePointerDown,\n handlePointerMove,\n handlePointerUp,\n handleTouchEnd,\n handleTouchMove,\n handleTouchStart,\n handleScroll\n ]);\n React.useEffect(function () {\n unmount.current = false;\n return function () {\n unmount.current = true;\n };\n }, []);\n React.useLayoutEffect(register, [register]);\n}\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var useInheritedState = function (context, defaultValue) {\n var _a = React.useContext(context), contextValue = _a[0], contextSetter = _a[1];\n var _b = React.useState(defaultValue), localValue = _b[0], localSetter = _b[1];\n var value = contextValue !== undefined ? contextValue : localValue;\n var handleValueChange = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n contextValue !== undefined\n ? contextSetter.apply(void 0, args) : localSetter(args[0]);\n };\n return [\n value,\n handleValueChange\n ];\n};\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var useMouse = function (props, target, extend) {\n if (extend === void 0) { extend = {}; }\n var handleMouseDown = React.useCallback(function (event) {\n if (extend.onMouseDown) {\n extend.onMouseDown.call(undefined, event);\n }\n if (props.onMouseDown) {\n props.onMouseDown.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [extend.onMouseDown, props.onMouseDown, target]);\n var handleMouseUp = React.useCallback(function (event) {\n if (extend.onMouseUp) {\n extend.onMouseUp.call(undefined, event);\n }\n if (props.onMouseUp) {\n props.onMouseUp.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [extend.onMouseUp, props.onMouseUp, target]);\n var handleClick = React.useCallback(function (event) {\n if (extend.onClick) {\n extend.onClick.call(undefined, event);\n }\n if (props.onClick) {\n props.onClick.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [extend.onClick, props.onClick, target]);\n var handleDoubleClick = React.useCallback(function (event) {\n if (extend.onDoubleClick) {\n extend.onDoubleClick.call(undefined, event);\n }\n if (props.onDoubleClick) {\n props.onDoubleClick.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [extend.onDoubleClick, props.onDoubleClick, target]);\n var handleMouseEnter = React.useCallback(function (event) {\n if (extend.onMouseEnter) {\n extend.onMouseEnter.call(undefined, event);\n }\n if (props.onMouseEnter) {\n props.onMouseEnter.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [extend.onMouseEnter, props.onMouseEnter, target]);\n var handleMouseLeave = React.useCallback(function (event) {\n if (extend.onMouseLeave) {\n extend.onMouseLeave.call(undefined, event);\n }\n if (props.onMouseLeave) {\n props.onMouseLeave.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [extend.onMouseLeave, props.onMouseLeave, target]);\n var handelMouseMove = React.useCallback(function (event) {\n if (extend.onMouseMove) {\n extend.onMouseMove.call(undefined, event);\n }\n if (props.onMouseMove) {\n props.onMouseMove.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [extend.onMouseMove, props.onMouseMove, target]);\n var handleMouseOut = React.useCallback(function (event) {\n if (extend.onMouseOut) {\n extend.onMouseOut.call(undefined, event);\n }\n if (props.onMouseOut) {\n props.onMouseOut.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [extend.onMouseOut, props.onMouseOut, target]);\n var handleMouseOver = React.useCallback(function (event) {\n if (extend.onMouseOver) {\n extend.onMouseOver.call(undefined, event);\n }\n if (props.onMouseOver) {\n props.onMouseOver.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [extend.onMouseOver, props.onMouseOver, target]);\n return {\n onClick: handleClick,\n onMouseUp: handleMouseUp,\n onMouseDown: handleMouseDown,\n onDoubleClick: handleDoubleClick,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onMouseMove: handelMouseMove,\n onMouseOut: handleMouseOut,\n onMouseOver: handleMouseOver\n };\n};\n","import * as React from 'react';\n/** @hidden */\nexport var usePropsContext = function (context, props) {\n var contextPropsCallback = React.useContext(context);\n var contextProps = contextPropsCallback(props);\n return contextProps;\n};\n","import * as React from 'react';\n// Same as 'useDir'. Export to avoid breaking change.\n// 'useRtl' is incorrect naming, since applies that the returned value is `true` or `false`.\n// but instead, it is returning `ltr` or `rtl`.\n/**\n * @hidden\n */\nexport function useRtl(elementRef, initialDir, args) {\n // Dir prop is read only on initial rendering due to specifics of getComputedStyles - see below\n var _a = React.useState(initialDir), dir = _a[0], setDir = _a[1];\n React.useEffect(function () {\n if (!dir && window && elementRef.current) {\n // Note: getComputedStyle forces reflow\n var rtlCandidate = window.getComputedStyle(elementRef.current).direction;\n if (rtlCandidate) {\n // rerender is needed as DOM is read after first render\n setDir(rtlCandidate);\n }\n }\n }, args);\n return dir;\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '../classNames';\nimport { SIZE_CLASSES } from './constants';\nimport { toIconClass, useMouse } from '../main';\n/**\n * Represents the [KendoReact Icon component]({% slug overview_icon %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var Icon = React.forwardRef(function (props, ref) {\n var className = props.className, name = props.name, themeColor = props.themeColor, size = props.size, flip = props.flip, style = props.style, id = props.id, tabIndex = props.tabIndex, others = __rest(props, [\"className\", \"name\", \"themeColor\", \"size\", \"flip\", \"style\", \"id\", \"tabIndex\"]);\n var target = React.useRef(null);\n var elementRef = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current\n }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n var sizeProp = React.useMemo(function () { return size || defaultProps.size; }, [size]);\n var flipProp = React.useMemo(function () { return flip || defaultProps.flip; }, [flip]);\n var fontClassNames = React.useMemo(function () {\n var _a;\n return classNames('k-icon', 'k-font-icon', name && toIconClass(name), (_a = {},\n _a[\"k-color-\".concat(themeColor)] = themeColor,\n _a['k-flip-h'] = flipProp === 'horizontal' || flipProp === 'both',\n _a['k-flip-v'] = flipProp === 'vertical' || flipProp === 'both',\n _a), SIZE_CLASSES[sizeProp], className);\n }, [name, themeColor, sizeProp, flipProp, className]);\n var mouseProps = useMouse(props, target);\n return (React.createElement(\"span\", __assign({ ref: elementRef }, others, mouseProps, { className: fontClassNames, id: id, tabIndex: tabIndex, style: style, role: \"presentation\" })));\n});\nIcon.propTypes = {\n style: PropTypes.object,\n classNames: PropTypes.string,\n name: PropTypes.string,\n themeColor: PropTypes.oneOf([\n 'inherit', 'primary', 'secondary', 'tertiary',\n 'info', 'success', 'error', 'warning',\n 'dark', 'light', 'inverse'\n ]),\n size: PropTypes.oneOf(['default', 'xsmall', 'small', 'medium', 'large', 'xlarge', 'xxlarge', 'xxxlarge']),\n flip: PropTypes.oneOf(['default', 'horizontal', 'vertical', 'both'])\n};\nvar defaultProps = {\n size: 'default',\n flip: 'default'\n};\nIcon.displayName = 'KendoIcon';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Icon } from './Icon';\nimport { SvgIcon } from './SvgIcon';\nimport { IconsContext } from './IconsContext';\n/**\n * @hidden\n */\nexport var IconWrap = React.forwardRef(function (props, ref) {\n var _a, _b;\n var _c = React.useContext(IconsContext), type = _c.type, icons = _c.icons;\n var icon = props.icon, fontIconProps = __rest(props, [\"icon\"]);\n var name = type === 'svg' ? (((_a = props.icon) === null || _a === void 0 ? void 0 : _a.name) || props.name) : (props.name || ((_b = props.icon) === null || _b === void 0 ? void 0 : _b.name));\n name = (name && icons && icons[name] && typeof icons[name] === 'string') ? icons[name] : name;\n var svg = (name && icons && icons[name] && typeof icons[name] !== 'string') ? icons[name] : icon;\n return (type === 'svg' && svg) ?\n React.createElement(SvgIcon, __assign({}, props, { icon: svg, ref: ref })) :\n React.createElement(Icon, __assign({}, fontIconProps, { name: name, ref: ref }));\n});\nIconWrap.displayName = 'KendoIconWrap';\n","import * as React from 'react';\n;\n/**\n * Represents a React Context which provides you with the option to configure the KendoReact components icons.\n */\nexport var IconsContext = React.createContext({ type: 'svg' });\nIconsContext.displayName = 'KendoReactIconsContext';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '../classNames';\nimport { SIZE_CLASSES } from './constants';\n/**\n * Represents the [KendoReact SvgIcon component]({% slug overview_svgicon %}).\n *\n * @example\n * ```jsx\n * import { accessibility } from '@progress/kendo-svg-icons';\n *\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var SvgIcon = React.forwardRef(function (props, ref) {\n var children = props.children, className = props.className, svgClassName = props.svgClassName, icon = props.icon, flip = props.flip, id = props.id, tabIndex = props.tabIndex, size = props.size, style = props.style, svgStyle = props.svgStyle, themeColor = props.themeColor, viewBox = props.viewBox, name = props.name, onClick = props.onClick, others = __rest(props, [\"children\", \"className\", \"svgClassName\", \"icon\", \"flip\", \"id\", \"tabIndex\", \"size\", \"style\", \"svgStyle\", \"themeColor\", \"viewBox\", \"name\", \"onClick\"]);\n var elementRef = React.useRef(null);\n React.useImperativeHandle(ref, function () { return ({\n element: elementRef.current\n }); });\n var iconNameProp = React.useMemo(function () { return icon ? icon.name : defaultProps.icon; }, [icon]);\n var sizeProp = React.useMemo(function () { return size || defaultProps.size; }, [size]);\n var flipProp = React.useMemo(function () { return flip || defaultProps.flip; }, [flip]);\n var viewBoxProp = React.useMemo(function () { return viewBox || defaultProps.viewBox; }, [viewBox]);\n var elementClassNames = React.useMemo(function () {\n var _a;\n return classNames('k-icon', 'k-svg-icon', 'k-svg-i-' + iconNameProp, (_a = {},\n _a[\"k-color-\".concat(themeColor)] = themeColor,\n _a['k-flip-h'] = flipProp === 'horizontal' || flipProp === 'both',\n _a['k-flip-v'] = flipProp === 'vertical' || flipProp === 'both',\n _a), SIZE_CLASSES[sizeProp], className);\n }, [iconNameProp, themeColor, sizeProp, flipProp, className]);\n var elementStyle = React.useMemo(function () {\n if (props.width && props.height) {\n return __assign({ width: props.width, height: props.height }, style);\n }\n else if (props.width) {\n return __assign({ width: props.width, height: props.width }, style);\n }\n else if (props.height) {\n return __assign({ width: props.height, height: props.height }, style);\n }\n else {\n return __assign({}, style);\n }\n }, [props.width, props.height, style]);\n return (React.createElement(\"span\", { className: elementClassNames, style: elementStyle, ref: elementRef, onClick: onClick },\n React.createElement(\"svg\", __assign({ id: id, className: svgClassName, style: svgStyle, \"aria-hidden\": true, tabIndex: tabIndex, focusable: false, xmlns: \"http://www.w3.org/2000/svg\", viewBox: icon ? icon.viewBox : viewBoxProp, dangerouslySetInnerHTML: icon ? { __html: icon.content } : undefined }, others), icon ? undefined : children)));\n});\nSvgIcon.propTypes = {\n style: PropTypes.object,\n classNames: PropTypes.string,\n children: PropTypes.any,\n icon: PropTypes.object,\n themeColor: PropTypes.oneOf([\n 'inherit', 'primary', 'secondary', 'tertiary',\n 'info', 'success', 'error', 'warning',\n 'dark', 'light', 'inverse'\n ]),\n size: PropTypes.oneOf(['default', 'xsmall', 'small', 'medium', 'large', 'xlarge', 'xxlarge', 'xxxlarge']),\n flip: PropTypes.oneOf(['default', 'horizontal', 'vertical', 'both'])\n};\nvar defaultProps = {\n size: 'default',\n flip: 'default',\n icon: '',\n viewBox: '0 0 24 24'\n};\nSvgIcon.displayName = 'KendoSvgIcon';\n","/**\n * @hidden\n */\nexport var SIZE_CLASSES = {\n 'default': '',\n 'xsmall': 'k-icon-xs',\n 'small': 'k-icon-sm',\n 'medium': 'k-icon-md',\n 'large': 'k-icon-lg',\n 'xlarge': 'k-icon-xl',\n 'xxlarge': 'k-icon-xxl',\n 'xxxlarge': 'k-icon-xxxl'\n};\n","import * as PropTypes from 'prop-types';\n/**\n * @hidden\n */\nexport var toIconName = function (iconClass) { return iconClass.replace(/^k-i-/, ''); };\n/**\n * @hidden\n */\nexport var toIconClass = function (name) { return 'k-i-' + name; };\n/**\n * @hidden\n */\nexport var svgIconPropType = PropTypes.shape({\n name: PropTypes.string.isRequired,\n content: PropTypes.string.isRequired,\n viewBox: PropTypes.string.isRequired\n});\n","/**\n * @hidden\n */\nexport var Keys = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n esc: 27,\n space: 32,\n pageUp: 33,\n pageDown: 34,\n end: 35,\n home: 36,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n delete: 46\n};\n","import * as React from 'react';\n/** @hidden */\nexport var COLLECTION_ACTION;\n(function (COLLECTION_ACTION) {\n COLLECTION_ACTION[COLLECTION_ACTION[\"add\"] = 0] = \"add\";\n COLLECTION_ACTION[COLLECTION_ACTION[\"remove\"] = 1] = \"remove\";\n})(COLLECTION_ACTION || (COLLECTION_ACTION = {}));\n/** @hidden */\nexport var useCollection = function (initial) {\n if (initial === void 0) { initial = []; }\n var collection = React.useRef(initial);\n var handleCollectionAction = React.useCallback(function (action) {\n switch (action.type) {\n case COLLECTION_ACTION.add:\n collection.current.push(action.item);\n break;\n case COLLECTION_ACTION.remove:\n var index = collection.current.indexOf(action.item);\n collection.current.splice(index, 1);\n break;\n default:\n break;\n }\n }, []);\n return [collection.current, handleCollectionAction];\n};\n","/**\n * @hidden\n */\nvar isClassComponent = function (Component) { return Boolean(typeof Component === 'function' && !!Component.prototype.isReactComponent); };\n/**\n * @hidden\n */\nvar isForwardRef = function (Component) { return Boolean(Component.$$typeof && typeof Component.render === 'function'); };\n/**\n * @hidden\n */\nexport var canUseRef = function (Component) { return typeof Comment !== 'string' && (isClassComponent(Component) || isForwardRef(Component)); };\n","/**\n * @hidden\n */\nvar FormComponent = /** @class */ (function () {\n function FormComponent() {\n }\n return FormComponent;\n}());\nexport { FormComponent };\n","import * as React from 'react';\nimport { useDocument } from './useDocument';\n/**\n * Returns a function, which gets the `defaultView` based on the `ownerDocument` of the element.\n */\nexport var useWindow = function (ref) {\n var getDocument = useDocument(ref);\n var getWindow = React.useCallback(function () {\n var document = getDocument();\n return document\n ? document.defaultView || window\n : window;\n }, [getDocument]);\n return getWindow;\n};\n","/**\n * @hidden\n */\nexport var FONT_SIZE_CLASSES = {\n 'xsmall': 'k-fs-xs',\n 'small': 'k-fs-sm',\n 'medium': 'k-fs-md',\n 'large': 'k-fs-lg',\n 'xlarge': 'k-fs-xl'\n};\n/**\n * @hidden\n */\nexport var FONT_WEIGHT_CLASSES = {\n 'light': 'k-font-weight-light',\n 'normal': 'k-font-weight-normal',\n 'bold': 'k-font-weight-bold'\n};\n/**\n * @hidden\n */\nexport var MARGIN_ENUM_CLASSES = {\n 'xsmall': 'k-m-xs',\n 'small': 'k-m-sm',\n 'medium': 'k-m-md',\n 'large': 'k-m-lg',\n 'xlarge': 'k-m-xl',\n 'thin': 'k-m-thin',\n 'hair': 'k-m-hair'\n};\n/**\n * @hidden\n */\nexport var MARGIN_ENUM_VALUES = {\n 'xsmall': 'xs',\n 'small': 'sm',\n 'medium': 'md',\n 'large': 'lg',\n 'xlarge': 'xl',\n 'thin': 'thin',\n 'hair': 'hair'\n};\n/**\n * @hidden\n */\nexport var MARGIN_SIDES_CLASSES = {\n 'top': 'k-mt-',\n 'right': 'k-mr-',\n 'bottom': 'k-mb-',\n 'left': 'k-ml-'\n};\n/**\n * @hidden\n */\nexport var TEXT_ALIGN_CLASSES = {\n 'left': 'k-text-left',\n 'right': 'k-text-right',\n 'center': 'k-text-center',\n 'justify': 'k-text-justify'\n};\n/**\n * @hidden\n */\nexport var TEXT_TRANSFORM_CLASSES = {\n 'lowercase': 'k-text-lowercase',\n 'uppercase': 'k-text-uppercase',\n 'capitalize': 'k-text-capitalize'\n};\n/**\n * @hidden\n */\nexport var THEME_COLOR_CLASSES = {\n 'inherit': 'k-color-inherit',\n 'primary': 'k-color-primary',\n 'secondary': 'k-color-secondary',\n 'tertiary': 'k-color-tertiary',\n 'info': 'k-color-info',\n 'success': 'k-color-success',\n 'warning': 'k-color-warning',\n 'error': 'k-color-error',\n 'dark': 'k-color-dark',\n 'light': 'k-color-light',\n 'inverse': 'k-color-inverse'\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { FONT_SIZE_CLASSES, FONT_WEIGHT_CLASSES, MARGIN_ENUM_CLASSES, MARGIN_ENUM_VALUES, MARGIN_SIDES_CLASSES, TEXT_ALIGN_CLASSES, TEXT_TRANSFORM_CLASSES, THEME_COLOR_CLASSES } from './constants';\n/**\n * @hidden\n */\nvar generateTypography = function (element) {\n var component = React.forwardRef(function (props, ref) {\n var id = props.id, style = props.style, className = props.className, fontSize = props.fontSize, fontWeight = props.fontWeight, textAlign = props.textAlign, textTransform = props.textTransform, themeColor = props.themeColor, margin = props.margin, others = __rest(props, [\"id\", \"style\", \"className\", \"fontSize\", \"fontWeight\", \"textAlign\", \"textTransform\", \"themeColor\", \"margin\"]);\n var target = React.useRef(null);\n var elementRef = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current,\n props: props\n }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n var defaultClass = function () {\n var classMap = element === 'p' ? 'paragraph' : element;\n return \"k-\".concat(classMap);\n };\n var Component = element;\n var setMarginClassPerSide = function (marginSide, value) {\n var val = typeof value === 'string' ? MARGIN_ENUM_VALUES[value] : value;\n return \"\".concat(MARGIN_SIDES_CLASSES[marginSide]).concat(val);\n };\n var setMarginClasses = function () {\n if (margin === undefined) {\n return;\n }\n if (typeof margin === 'string') {\n return [MARGIN_ENUM_CLASSES[margin]];\n }\n // The the predefined Kendo classes are starting from 0 to 24.\n if (typeof margin === 'number' && margin >= 0 && margin <= 24) {\n return [\"k-m-\".concat(margin)];\n }\n if (typeof margin === 'object') {\n var marginClassesList_1 = [];\n Object.keys(margin).forEach(function (key) {\n if (margin[key] !== null && margin[key] !== undefined) {\n marginClassesList_1.push(setMarginClassPerSide(key, margin[key]));\n }\n });\n var classes = marginClassesList_1.join(' ');\n return classes;\n }\n };\n var setTypographyClasses = function () {\n var typographyArray = [\n defaultClass(),\n FONT_SIZE_CLASSES[fontSize],\n FONT_WEIGHT_CLASSES[fontWeight],\n TEXT_ALIGN_CLASSES[textAlign],\n TEXT_TRANSFORM_CLASSES[textTransform],\n THEME_COLOR_CLASSES[themeColor],\n setMarginClasses(),\n className\n ];\n var typographyClasses = typographyArray.filter(function (n) { return n !== undefined; }).join(' ');\n return typographyClasses;\n };\n return (React.createElement(Component, __assign({ id: id, ref: elementRef, className: setTypographyClasses(), style: style }, others), props.children));\n });\n component.propTypes = {\n style: PropTypes.object,\n className: PropTypes.string,\n fontSize: PropTypes.oneOf(['xsmall', 'small', 'medium', 'large', 'xlarge']),\n fontWeight: PropTypes.oneOf(['light', 'normal', 'bold']),\n margin: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.object,\n PropTypes.oneOf(['xsmall', 'small', 'medium', 'large', 'xlarge', 'thin', 'hair'])\n ]),\n textAlign: PropTypes.oneOf(['left', 'right', 'center', 'justify']),\n textTransform: PropTypes.oneOf(['lowercase', 'uppercase', 'capitalize']),\n themeColor: PropTypes.oneOf([\n 'inherit', 'primary', 'secondary', 'tertiary',\n 'info', 'success', 'error', 'warning',\n 'dark', 'light', 'inverse'\n ])\n };\n component.displayName = \"KendoReactTypography\".concat(element.toUpperCase());\n return component;\n};\n/**\n * Represents [KendoReact Typography Heading1 component]({% slug overview_typography %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * Heading 1\n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar h1 = generateTypography('h1');\n/**\n * Represents [KendoReact Typography Heading2 component]({% slug overview_typography %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * Heading 2\n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar h2 = generateTypography('h2');\n/**\n * Represents [KendoReact Typography Heading3 component]({% slug overview_typography %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * Heading 3\n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar h3 = generateTypography('h3');\n/**\n * Represents [KendoReact Typography Heading4 component]({% slug overview_typography %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * Heading 4\n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar h4 = generateTypography('h4');\n/**\n * Represents [KendoReact Typography Heading5 component]({% slug overview_typography %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * Heading 5\n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar h5 = generateTypography('h5');\n/**\n * Represents [KendoReact Typography Heading6 component]({% slug overview_typography %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * Heading 6\n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar h6 = generateTypography('h6');\n/**\n * Represents [KendoReact Typography Paragraph component]({% slug overview_typography %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * I'm a paragraph text.\n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar p = generateTypography('p');\n/**\n * Represents [KendoReact Typography Code component]({% slug overview_typography %}).\n * Use to create a single-line code snippet.\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * code\n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar code = generateTypography('code');\n/**\n * Represents [KendoReact Typography Pre component]({% slug overview_typography %}).\n * Used along with [KendoReact Typography Code component]({% slug overview_typography %}) to create multi-line code snippet.\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * \n * {\n * const { name, value } = target;\n * const newData = Object.assign({}, data, { [name]: value });\n * setData(newData);\n * }\n * `}} />\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar pre = generateTypography('pre');\n/**\n * Represents the [KendoReact Typography component]({% slug overview_typography %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * Heading 2\n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var Typography = {\n h1: h1,\n h2: h2,\n h3: h3,\n h4: h4,\n h5: h5,\n h6: h6,\n p: p,\n code: code,\n pre: pre\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\n/** @hidden */\nexport var useControlledState = function (defaultProp, prop, callback) {\n var _a = React.useState(prop || defaultProp), state = _a[0], setState = _a[1];\n var handleSetEdit = React.useCallback(function (value, args) {\n setState(value);\n if (callback) {\n callback.call(undefined, __assign(__assign({}, args), { value: value }));\n }\n }, [callback, setState]);\n return [prop !== undefined ? prop : state, handleSetEdit];\n};\n","import * as React from 'react';\nimport { useCollection, COLLECTION_ACTION, useControlledState } from '../hooks';\nimport { DragContext, DropContext, DragsContext, DropsContext } from './context';\n/**\n * The `DragAndDrop` component is required for the `droppable` functionality to work properly.\n *\n * It is used internally to synchronize the `drag` and `drop` functionalities.\n * Accepts properties of type [DragAndDropProps]({% slug api_common_draganddropprops %}).\n */\nexport var DragAndDrop = function (props) {\n var _a = useControlledState(null, undefined), drag = _a[0], setDrag = _a[1];\n var _b = useControlledState(null, undefined), drop = _b[0], setDrop = _b[1];\n var _c = useCollection([]), drags = _c[0], dispatchDrags = _c[1];\n var _d = useCollection([]), drops = _d[0], dispatchDrops = _d[1];\n var registerDrag = function (item) {\n dispatchDrags({\n type: COLLECTION_ACTION.add,\n item: item\n });\n };\n var deregisterDrag = function (item) {\n dispatchDrags({\n type: COLLECTION_ACTION.remove,\n item: item\n });\n };\n var registerDrop = function (item) {\n dispatchDrops({\n type: COLLECTION_ACTION.add,\n item: item\n });\n };\n var deregisterDrop = function (item) {\n dispatchDrops({\n type: COLLECTION_ACTION.remove,\n item: item\n });\n };\n return (React.createElement(DragContext.Provider, { value: [drag, setDrag] },\n React.createElement(DropContext.Provider, { value: [drop, setDrop] },\n React.createElement(DragsContext.Provider, { value: [drags, registerDrag, deregisterDrag] },\n React.createElement(DropsContext.Provider, { value: [drops, registerDrop, deregisterDrop] }, props.children)))));\n};\nDragAndDrop.displayName = 'KendoReactDragAndDrop';\n","import * as React from 'react';\nimport { noop } from '../noop';\nimport { useInheritedState } from '../hooks/useInheritedState';\nimport { DropContext, DropsContext } from '../drag-n-drop/context';\n/**\n * Represents the KendoReact `useDroppable` hook.\n * Use it to attach `drop` events to a native HTML DOM elements, or custom React Components.\n *\n * For more information, refer to the [KendoReact Droppable]({% slug droppable_drag-and-drop %}) article.\n *\n * @param ref - The `ref` of the HTML Element or React Component which will enable the `droppable` functionality.\n * @param callbacks - A collection of callbacks, called by the `useDroppable` hook when a specific action occurs.\n */\nexport function useDroppable(ref, callbacks) {\n if (callbacks === void 0) { callbacks = {\n onDragEnter: noop,\n onDragOver: noop,\n onDragLeave: noop,\n onDrop: noop\n }; }\n var _a = callbacks.onDragEnter, onDragEnter = _a === void 0 ? noop : _a, _b = callbacks.onDragOver, onDragOver = _b === void 0 ? noop : _b, _c = callbacks.onDragLeave, onDragLeave = _c === void 0 ? noop : _c, _d = callbacks.onDrop, onDrop = _d === void 0 ? noop : _d;\n var _e = useInheritedState(DropContext), setDrop = _e[1];\n var _f = React.useContext(DropsContext), registerDrop = _f[1], deregisterDrop = _f[2];\n var getElement = React.useCallback(function () { return ref.current && ref.current.element\n ? ref.current.element\n : ref.current; }, [ref]);\n var target = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({\n element: getElement(),\n onDragEnter: handleDragEnter,\n onDragOver: handleDragOver,\n onDragLeave: handleDragLeave,\n onDrop: handleDrop,\n data: ref.current\n }); });\n var handleDragEnter = React.useCallback(function (event) {\n setDrop(target, { target: ref.current, event: event });\n onDragEnter(event);\n }, [setDrop, ref, onDragEnter]);\n var handleDragOver = React.useCallback(function (event) {\n onDragOver(event);\n }, [onDragOver]);\n var handleDragLeave = React.useCallback(function (event) {\n setDrop(null, { target: ref.current, event: event });\n onDragLeave(event);\n }, [setDrop, ref, onDragLeave]);\n var handleDrop = React.useCallback(function (event) {\n setDrop(null, { target: ref.current, event: event });\n onDrop(event);\n }, [setDrop, ref, onDrop]);\n var register = React.useCallback(function () {\n registerDrop(target);\n return function () {\n deregisterDrop(target);\n };\n }, [deregisterDrop, registerDrop]);\n React.useLayoutEffect(register, [register]);\n}\n;\n","import * as React from 'react';\nimport { useDroppable } from './hooks';\n/**\n * Represents the KendoReact Droppable component.\n *\n * Accepts properties of type [DroppableProps]({% slug api_common_droppableprops %}),\n * and returns an object of type [DroppableHandle]({% slug api_common_droppablehandle %}) when the `ref` is obtained.\n */\nexport var Droppable = React.forwardRef(function (props, ref) {\n var childRef = React.useRef(null);\n var target = React.useRef(null);\n var getElement = React.useCallback(function () { return childRef.current && childRef.current.element\n ? childRef.current.element\n : childRef.current; }, [childRef]);\n React.useImperativeHandle(target, function () { return ({ element: getElement() || undefined }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n React.useImperativeHandle(props.childRef, function () { return childRef.current; });\n var handleDragEnter = React.useCallback(function (event) {\n if (!props.onDragEnter) {\n return;\n }\n props.onDragEnter({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [props.onDragEnter, getElement]);\n var handleDragOver = React.useCallback(function (event) {\n if (!props.onDragOver) {\n return;\n }\n props.onDragOver({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [getElement, props.onDragOver]);\n var handleDragLeave = React.useCallback(function (event) {\n if (!props.onDragLeave) {\n return;\n }\n props.onDragLeave({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [props.onDragLeave, getElement]);\n var handleDrop = React.useCallback(function (event) {\n if (!props.onDrop) {\n return;\n }\n props.onDrop({\n element: getElement(),\n target: target.current,\n event: event\n });\n }, [props.onDrop, getElement]);\n useDroppable(childRef, {\n onDragEnter: handleDragEnter,\n onDragOver: handleDragOver,\n onDragLeave: handleDragLeave,\n onDrop: handleDrop\n });\n return props.children\n ? (React.cloneElement(React.Children.only(props.children), { ref: childRef }))\n : null;\n});\nDroppable.displayName = 'KendoReactDroppable';\n","function isEqual(first, second) {\n return (first === second) || (Number.isNaN(first) && Number.isNaN(second));\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n/**\n * @hidden\n */\nexport function memoizeOne(resultFn, isEqualFn) {\n if (isEqualFn === void 0) { isEqualFn = areInputsEqual; }\n var cache = null;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (cache && cache.lastThis === this && isEqualFn(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n var lastResult = resultFn.apply(this, newArgs);\n cache = {\n lastResult: lastResult,\n lastArgs: newArgs,\n lastThis: this\n };\n return lastResult;\n }\n memoized.clear = function clear() {\n cache = null;\n };\n return memoized;\n}\n","/**\n * @hidden\n */\nexport var FOCUSABLE_ELEMENTS = [\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]'\n];\n/**\n * Represents the [KendoReact Navigation functionality]({% slug overview_navigation %}).\n * It handles the navigation through a collection of DOM elements.\n */\nvar Navigation = /** @class */ (function () {\n function Navigation(options) {\n var _this = this;\n /**\n * @hidden\n */\n this.rovingTabIndex = true;\n /**\n * @hidden\n */\n this.update = function () { };\n this.focusNextIndex = function (target, indexDiff) {\n var all = _this.elements;\n var index = all.indexOf(target) + indexDiff;\n index = index < 0 ? all.length - 1 : index;\n var next = all[index % all.length];\n _this.focusElement(next, target);\n return next;\n };\n this.tabIndex = options.tabIndex || 0;\n this.root = options.root;\n this.selectors = options.selectors;\n this.focusOptions = options.focusOptions || { preventScroll: true };\n this.rovingTabIndex = options.rovingTabIndex !== undefined ? options.rovingTabIndex : true;\n this.mouseEvents = options.mouseEvents || {};\n this.keyboardEvents = options.keyboardEvents || {};\n }\n Object.defineProperty(Navigation.prototype, \"elements\", {\n /**\n * Returns the collection of DOM elements which the module will navigate in.\n */\n get: function () {\n return this.root.current ? Array.from(this.root.current.querySelectorAll(this.selectors.join(','))) : [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Navigation.prototype, \"first\", {\n /**\n * Returns the first navigation DOM element.\n */\n get: function () {\n return (this.root.current && this.root.current.querySelector(this.selectors.join(','))) || null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Navigation.prototype, \"last\", {\n /**\n * Returns the last navigation DOM element.\n */\n get: function () {\n var all = this.elements;\n return all[all.length - 1] || null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Navigation.prototype, \"current\", {\n /**\n * Returns the focused DOM element from the navigation collection of DOM elements.\n */\n get: function () {\n return this.elements.find(function (el) { return el.matches(':focus'); }) || null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Focuses the next element from the navigation collection of DOM elements.\n */\n Navigation.prototype.focusNext = function (target) {\n return this.focusNextIndex(target, 1);\n };\n /**\n * Focuses the previous element from the navigation collection of DOM elements.\n */\n Navigation.prototype.focusPrevious = function (target) {\n return this.focusNextIndex(target, -1);\n };\n /**\n * The keyboard events handler.\n */\n Navigation.prototype.triggerKeyboardEvent = function (ev, options) {\n var target = ev.target instanceof Element && ev.target.closest(this.selectors.join(','));\n var key = ev.key === ' ' ? 'Space' : ev.key;\n var eventType = ev.nativeEvent.type;\n if (target && this.keyboardEvents[eventType][key]) {\n this.keyboardEvents[eventType][key].call(undefined, target, this, ev, options);\n }\n };\n /**\n * The mouse events handler.\n */\n Navigation.prototype.triggerMouseEvent = function (ev) {\n var target = ev.target instanceof Element && ev.target.closest(this.selectors.join(','));\n var eventType = ev.nativeEvent.type;\n if (target) {\n this.mouseEvents[eventType].call(undefined, target, this, ev);\n }\n };\n /**\n * Focuses the passed element from the navigation collection of DOM elements.\n */\n Navigation.prototype.focusElement = function (element, previous) {\n if (element) {\n if (previous) {\n if (this.rovingTabIndex) {\n previous.removeAttribute('tabindex');\n }\n previous.classList.remove('k-focus');\n }\n if (this.rovingTabIndex) {\n element.setAttribute('tabindex', String(this.tabIndex));\n }\n element.focus(this.focusOptions);\n }\n };\n return Navigation;\n}());\nexport { Navigation };\n;\n","/**\n * @hidden\n */\nexport var noop = function () { };\n","import { BrowserSupportService } from './browser-support.service';\nimport { canUseDOM } from './canUseDOM';\n/**\n * @hidden\n */\nexport var getScrollbarWidth = function () {\n if (!canUseDOM || !document.body) {\n return false;\n }\n var scrollbarWidth = new BrowserSupportService().scrollbarWidth;\n return scrollbarWidth;\n};\n/**\n * @hidden\n */\nexport var setScrollbarWidth = function () {\n if (!canUseDOM || !document.body) {\n return false;\n }\n var scrollbarWidth = new BrowserSupportService().scrollbarWidth;\n document.body.style.setProperty('--kendo-scrollbar-width', \"\".concat(scrollbarWidth, \"px\"));\n};\n","import { fieldList } from './fieldList';\nvar setterCache = {};\nsetterCache.undefined = function (obj) { return obj; };\nvar defaultValue = function (nextField, options) {\n return options && options.arrays && !isNaN(Number(nextField)) ? [] : {};\n};\n/**\n * Can be used for setting value to object using field path. For example `users[index].name`.\n *\n * @example\n * ```jsx-no-run\n * const values = {users:[{lastName: 'Doe'}]};\n * const firstUserFirstName = setter('user[0].firstName');\n *\n * firstUserFirstName(values, 'John');\n *\n * console.log(values)\n *\n * // result: {users:[{firstName: 'John', lastName: 'Doe'}]}\n * ```\n */\nexport function setter(field) {\n if (setterCache[field]) {\n return setterCache[field];\n }\n var fields = fieldList(field);\n setterCache[field] = function (obj, value, options) {\n var root = obj;\n var depth = fields.length - 1;\n for (var idx = 0; idx < depth && root; idx++) {\n root = root[fields[idx]] = root[fields[idx]] || defaultValue(fields[idx + 1], options);\n }\n root[fields[depth]] = value;\n };\n return setterCache[field];\n}\n","/** @hidden */\nexport var kendoThemeMaps = {\n sizeMap: {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n },\n roundedMap: {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n },\n orientationMap: {\n vertical: 'vstack',\n horizontal: 'hstack'\n }\n};\n","import { getNestedValue } from './misc';\n/**\n * @hidden\n */\nvar TreeFieldsService = /** @class */ (function () {\n function TreeFieldsService(treeViewProps) {\n this.expandField = treeViewProps.expandField;\n this.selectField = treeViewProps.selectField;\n this.hasChildrenField = treeViewProps.hasChildrenField;\n this.childrenField = treeViewProps.childrenField;\n this.textField = treeViewProps.textField;\n this.disableField = treeViewProps.disableField;\n this.checkField = treeViewProps.checkField;\n this.checkIndeterminateField = treeViewProps.checkIndeterminateField;\n this.focusIdField = treeViewProps.focusIdField;\n }\n TreeFieldsService.prototype.expanded = function (item) {\n return getNestedValue(this.expandField, item);\n };\n TreeFieldsService.prototype.selected = function (item) {\n return getNestedValue(this.selectField, item);\n };\n TreeFieldsService.prototype.text = function (item) {\n return getNestedValue(this.textField, item);\n };\n TreeFieldsService.prototype.disabled = function (item) {\n return getNestedValue(this.disableField, item);\n };\n TreeFieldsService.prototype.hasChildren = function (item) {\n return getNestedValue(this.hasChildrenField, item);\n };\n TreeFieldsService.prototype.children = function (item) {\n var children = getNestedValue(this.childrenField, item);\n return children ? children : [];\n };\n TreeFieldsService.prototype.checked = function (item) {\n return getNestedValue(this.checkField, item);\n };\n TreeFieldsService.prototype.checkIndeterminate = function (item) {\n return getNestedValue(this.checkIndeterminateField, item);\n };\n TreeFieldsService.prototype.focusId = function (item) {\n return this.focusIdField && getNestedValue(this.focusIdField, item);\n };\n TreeFieldsService.prototype.getChildrenField = function () {\n return this.childrenField;\n };\n return TreeFieldsService;\n}());\nexport { TreeFieldsService };\n","var PROPS_COUNT_LIMIT = 50000;\n/**\n * @hidden\n */\n// An alternative is to use array.sort() and\n// implement a binary search function.\nvar SortedPublicItemIds = /** @class */ (function () {\n function SortedPublicItemIds() {\n this.objects = [];\n }\n SortedPublicItemIds.prototype.init = function (publicItemIds) {\n var currentObj;\n for (var i = 0; i < publicItemIds.length; i++) {\n if (i % PROPS_COUNT_LIMIT === 0) {\n currentObj = {};\n this.objects.push(currentObj);\n }\n currentObj[publicItemIds[i]] = true;\n }\n };\n SortedPublicItemIds.prototype.hasId = function (publicItemId) {\n return this.objects.some(function (obj) { return obj[publicItemId]; });\n };\n return SortedPublicItemIds;\n}());\nexport { SortedPublicItemIds };\n","/**\n * @hidden\n */\nexport var EMPTY_ID = '';\n/**\n * @hidden\n */\nexport var ZERO_LEVEL_ZERO_NODE_ID = '0';\n/**\n * @hidden\n */\nexport var SEPARATOR = '_';\n/**\n * @hidden\n */\nexport function getItemById(itemId, items, childrenField) {\n if (isIdZeroLevel(itemId)) {\n return items[Number(itemId)];\n }\n else {\n var rootParentItem = items[Number(getRootParentId(itemId))];\n var subItems = (rootParentItem && rootParentItem[childrenField]) || [];\n return subItems.length ?\n getItemById(getIdWithoutRootParentId(itemId), subItems, childrenField) : undefined;\n }\n}\n/**\n * @hidden\n */\nexport function getRootParentId(itemId) {\n return isIdEmptyOrZeroLevel(itemId) ? itemId : itemId.split(SEPARATOR)[0];\n}\n/**\n * @hidden\n */\nexport function getIdWithoutRootParentId(itemId) {\n if (isIdEmptyOrZeroLevel(itemId)) {\n return itemId;\n }\n else {\n var firstSeparatorIndex = itemId.indexOf(SEPARATOR);\n return itemId.substring(firstSeparatorIndex + 1);\n }\n}\n/**\n * @hidden\n */\nexport function getFirstChildId(itemId) {\n return createId('0', itemId);\n}\n/**\n * @hidden\n */\nexport function createId(childId, parentId) {\n childId = childId.toString();\n return parentId ? parentId + SEPARATOR + childId : childId;\n}\n/**\n * @hidden\n */\nexport function getDirectParentId(itemId) {\n var lastSeparatorIndex = itemId.lastIndexOf(SEPARATOR);\n return lastSeparatorIndex < 0 ? EMPTY_ID : itemId.substring(0, lastSeparatorIndex);\n}\n/**\n * @hidden\n */\nexport function isIdEmptyOrZeroLevel(itemId) {\n return itemId === EMPTY_ID || itemId.indexOf(SEPARATOR) < 0;\n}\n/**\n * @hidden\n */\nexport function isIdZeroLevel(itemId) {\n return itemId !== EMPTY_ID && itemId.indexOf(SEPARATOR) < 0;\n}\n/**\n * @hidden\n */\nexport function getAllShortIds(itemId) {\n return itemId.split(SEPARATOR);\n}\n/**\n * @hidden\n */\nexport function getShortId(itemId) {\n var lastSeparatorIndex = itemId.lastIndexOf(SEPARATOR);\n return lastSeparatorIndex < 0 ? itemId : itemId.substring(lastSeparatorIndex + 1);\n}\n/**\n * @hidden\n */\nexport function isItemFirstFromSiblings(itemId) {\n return getShortId(itemId) === ZERO_LEVEL_ZERO_NODE_ID;\n}\n/**\n * @hidden\n */\nexport function getDecrementedItemIdAfterRemoval(removedItemId, itemId) {\n var preservedItemId = itemId;\n removedItemId = 'r' + SEPARATOR + removedItemId;\n itemId = 'r' + SEPARATOR + itemId;\n var itemSharedPath = getDirectParentId(removedItemId) + SEPARATOR;\n if (itemId.startsWith(itemSharedPath)) {\n var itemNotSharedPath = itemId.substring(itemSharedPath.length);\n if (itemNotSharedPath) {\n var siblingShortId = getRootParentId(itemNotSharedPath);\n if (Number(getShortId(removedItemId)) < Number(siblingShortId)) {\n var decrementedId = itemSharedPath +\n (Number(siblingShortId) - 1).toString() +\n itemNotSharedPath.substring(siblingShortId.length);\n return getIdWithoutRootParentId(decrementedId);\n }\n }\n }\n return preservedItemId;\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { EMPTY_ID, isIdZeroLevel, createId, getRootParentId, getIdWithoutRootParentId, getAllShortIds } from './itemIdUtils';\nimport { SortedPublicItemIds } from './SortedPublicItemIds';\nimport { getNestedValue } from './misc';\n/**\n * @hidden\n */\nexport function hasChildren(item, childrenField) {\n var children = getNestedValue(childrenField, item);\n return Boolean(children && children.length);\n}\n/**\n * @hidden\n */\nexport function isItemExpandedAndWithChildren(item, fieldsSvc) {\n return fieldsSvc.expanded(item) && hasChildren(item, fieldsSvc.getChildrenField());\n}\n/**\n * @hidden\n */\nexport function resolveItemId(publicId, idField, items, childrenField) {\n var resolvedIds = resolveItemsIds([publicId], idField, items, childrenField);\n return resolvedIds.length ? resolvedIds[0] : undefined;\n}\n/**\n * @hidden\n */\nexport function resolveItemsIds(publicIds, idField, items, childrenField) {\n var result = [];\n var sortedIds = new SortedPublicItemIds();\n sortedIds.init(publicIds);\n resolveItemsIdsHelper(sortedIds, idField, items, EMPTY_ID, result, childrenField);\n return result;\n}\n/**\n * @hidden\n */\nexport function updateItem(items, itemId, update, cloneField, childrenField) {\n var _a;\n var itemIndex = Number(getRootParentId(itemId));\n if (itemIndex >= items.length) {\n return items;\n }\n var result = items;\n var item = items[itemIndex];\n // Clone the item before updating it.\n if (!item[cloneField]) {\n result = items.slice();\n item = result[itemIndex] = Object.assign({}, item, (_a = {}, _a[cloneField] = true, _a));\n }\n // Directly update the item.\n if (isIdZeroLevel(itemId)) {\n update(item);\n }\n else if (item[childrenField]) {\n item[childrenField] = updateItem(item[childrenField], getIdWithoutRootParentId(itemId), update, cloneField, childrenField);\n }\n return result;\n}\n/**\n * @hidden\n */\nexport function isEnabledAndAllParentsEnabled(itemId, items, fieldsSvc) {\n var ids = getAllShortIds(itemId);\n var currentItems = items;\n for (var i = 0; i < ids.length; i++) {\n var currentItem = currentItems[Number(ids[i])];\n if (fieldsSvc.disabled(currentItem)) {\n return false;\n }\n else {\n currentItems = currentItem[fieldsSvc.getChildrenField()];\n }\n }\n return true;\n}\n/**\n * @hidden\n */\nexport function getAllDirectIndirectChildrenIds(item, itemId, childrenField, idField) {\n return idField ? getChildrenPublicIds(item) : getChildrenHierarchicalIndices(item, itemId);\n function getChildrenHierarchicalIndices(startItem, startItemId) {\n var result = [];\n var children = startItem[childrenField] || [];\n for (var i = 0; i < children.length; i++) {\n var id = createId(i, startItemId);\n result.push(id);\n result = result.concat(getChildrenHierarchicalIndices(children[i], id));\n }\n return result;\n }\n function getChildrenPublicIds(startItem) {\n var result = [];\n var children = startItem[childrenField] || [];\n for (var i = 0; i < children.length; i++) {\n result.push(getNestedValue(idField, children[i]));\n result = result.concat(getChildrenPublicIds(children[i]));\n }\n return result;\n }\n}\n/**\n * @hidden\n */\nexport function areAllDirectChildrenChecked(item, itemId, idField, childrenField, check) {\n var children = item[childrenField] || [];\n return children.every(function (child, index) {\n return check.indexOf(idField ? getNestedValue(idField, child) : createId(index, itemId)) > -1;\n });\n}\n/**\n * @hidden\n */\nexport function getAllParents(itemId, childrenField, items) {\n var result = [];\n var ids = getAllShortIds(itemId);\n var currentItems = items;\n for (var i = 0; i < ids.length - 1; i++) {\n if (!currentItems) {\n break;\n }\n var currentItem = currentItems[Number(ids[i])];\n result.push(currentItem);\n currentItems = currentItem[childrenField];\n }\n return result;\n}\n/**\n * @hidden\n */\nexport function removeItem(itemId, childrenField, items) {\n var result = items.slice();\n if (isIdZeroLevel(itemId)) {\n result.splice(Number(itemId), 1);\n }\n else {\n var rootParentIndex = Number(getRootParentId(itemId));\n var rootParent = result[rootParentIndex] = __assign({}, result[rootParentIndex]);\n rootParent[childrenField] = removeItem(getIdWithoutRootParentId(itemId), childrenField, rootParent[childrenField]);\n }\n return result;\n}\n/**\n * @hidden\n */\nexport function addItem(item, operation, childrenField, targetItemId, items) {\n var result = items.slice();\n if (isIdZeroLevel(targetItemId)) {\n if (operation === 'child') {\n var targetItem = result[Number(targetItemId)] = __assign({}, result[Number(targetItemId)]);\n if (targetItem[childrenField]) {\n targetItem[childrenField] = targetItem[childrenField].slice();\n targetItem[childrenField].push(item);\n }\n else {\n targetItem[childrenField] = [item];\n }\n }\n else {\n result.splice(Number(targetItemId) + (operation === 'after' ? 1 : 0), 0, item);\n }\n }\n else {\n var rootParentIndex = Number(getRootParentId(targetItemId));\n var rootParent = result[rootParentIndex] = __assign({}, result[rootParentIndex]);\n rootParent[childrenField] = addItem(item, operation, childrenField, getIdWithoutRootParentId(targetItemId), rootParent[childrenField]);\n }\n return result;\n}\nfunction resolveItemsIdsHelper(publicItemIds, idField, items, parentItemId, resolvedIds, childrenField) {\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var id = createId(i, parentItemId);\n if (publicItemIds.hasId(getNestedValue(idField, item))) {\n resolvedIds.push(id);\n }\n if (hasChildren(item, childrenField)) {\n resolveItemsIdsHelper(publicItemIds, idField, getNestedValue(childrenField, item), id, resolvedIds, childrenField);\n }\n }\n}\n","/**\n * @hidden\n */\nexport function getNestedValue(fieldName, dataItem) {\n var path = (fieldName || '').split('.');\n var data = dataItem;\n path.forEach(function (p) {\n data = data ? data[p] : undefined;\n });\n return data;\n}\n/**\n * @hidden\n */\nexport function isArray(operation) {\n return operation.length !== undefined;\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n// Gets and sets the children. Returns the children or the re-created item with the new children.\nfunction children(item, subItemsField, subItems) {\n var _a;\n if (subItems) {\n return __assign(__assign({}, item), (_a = {}, _a[subItemsField] = subItems.length ? __spreadArray([], subItems, true) : undefined, _a));\n }\n else {\n return item && item[subItemsField] ? __spreadArray([], item[subItemsField], true) : [];\n }\n}\nfunction mapItem(dataItem, subItemsField, callbackfn) {\n if (dataItem[subItemsField]) {\n var subItems = children(dataItem, subItemsField).map(function (child) { return mapItem(child, subItemsField, callbackfn); });\n return callbackfn(children(dataItem, subItemsField, subItems));\n }\n return callbackfn(dataItem);\n}\n/**\n * Creates a new array with the results of calling the provided callback function\n * on every element in the provided data tree.\n *\n * @param {any[]} tree - The data tree.\n * @param {string} subItemsField - The field which points to the subitems collection of each data item.\n * @param {(value: any) => any} callback - The callback function.\n * @returns {any[]} - The new data tree.\n */\nexport var mapTree = function (tree, subItemsField, callback) {\n return __spreadArray([], tree.map(function (item) { return mapItem(item, subItemsField, callback); }), true);\n};\n/**\n * Creates a new array with the results of calling the provided callback function\n * on the element which match the `level` in the provided data tree.\n *\n * @param {any[]} tree - The data tree.\n * @param {number[]} level - An array of indexes of each parent and current item in the data tree.\n * @param {string} subItemsField - The field which points to the subitems collection of each data item.\n * @param {(value: any) => any} callback - The callback function.\n * @returns {any[]} - The new data tree.\n */\nexport var mapTreeItem = function (tree, level, subItemsField, callback) {\n var curData = tree;\n var parentNodes = [];\n for (var i = 0; i < level.length; i++) {\n curData = curData[level[i]];\n curData = Array.isArray(curData) ? curData : curData[subItemsField];\n parentNodes.push(curData);\n }\n var parent = parentNodes.length > 1 ? parentNodes[parentNodes.length - 2] : tree;\n var newItemIndex = level[level.length - 1];\n var newItem = callback(parent[newItemIndex]);\n parent.splice(newItemIndex, 1, newItem);\n};\n/**\n * Similar to the `Object.assign` function. Additionally, creates a new array for the subitems.\n *\n * @param {object} item - The source data item.\n * @param {string} subItemsField - The field which points to the subitems collection of each data item.\n * @param {object} propsToExtend - The props with which the source data item will be extended.\n * @returns {object} - The target data item.\n */\nexport var extendDataItem = function (item, subItemsField, propsToExtend) {\n var _a;\n return Object.assign({}, item, item[subItemsField] ? (_a = {}, _a[subItemsField] = item[subItemsField].slice(), _a) : {}, propsToExtend || {});\n};\n/**\n * Returns the data item path in the tree based on the level parameter.\n *\n * @param {any[]} tree - The data tree.\n * @param {number[]} level - The level of the target tree item.\n * @param {string} subItemsField - The field which points to the subitems collection of each data item.\n * @returns {any[]} - The path of the data item.\n */\nexport var getItemPath = function (tree, level, subItemsField) {\n var nodes = [];\n var itemLevel = __spreadArray([], level, true);\n if (itemLevel.length) {\n var element = tree[itemLevel.shift() || 0];\n nodes.push(element);\n while (itemLevel.length && subItemsField) {\n element = element[subItemsField][itemLevel.shift() || 0];\n nodes.push(element);\n }\n }\n return nodes;\n};\n","import * as licensing from '@progress/kendo-licensing';\nvar allowed = ['telerik.com', 'progress.com', 'stackblitz.io', 'csb.app'];\n/**\n * @hidden\n */\nexport function validatePackage(packageMetadata) {\n if (typeof licensing !== 'undefined') {\n licensing.validatePackage(packageMetadata);\n }\n else {\n var message = \"License activation failed for \".concat(packageMetadata.name, \"\\n\");\n message += 'The @progress/kendo-licensing script is not loaded.\\n';\n message += \"See \".concat(packageMetadata.licensingDocsUrl, \" for more information.\\n\");\n console.warn(message);\n }\n}\n/**\n * @hidden\n */\nexport function shouldShowValidationUI(packageMetadata) {\n var skip = allowed.some(function (hostname) { var _a; return (_a = globalThis.document) === null || _a === void 0 ? void 0 : _a.location.hostname.endsWith(hostname); });\n return !skip && !(licensing === null || licensing === void 0 ? void 0 : licensing.validatePackage(packageMetadata));\n}\n","/* eslint-disable max-len */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nvar licenseKeyUrl = 'https://www.telerik.com/kendo-react-ui/components/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-banner';\nvar didRender = false;\n/**\n *\n * @hidden\n */\nexport var WatermarkOverlay = function () {\n var _a = React.useState(true), isOpen = _a[0], setIsOpen = _a[1];\n var _b = React.useState(false), bannerMounted = _b[0], setBannerMounted = _b[1];\n React.useEffect(function () {\n if (!didRender) {\n setBannerMounted(true);\n didRender = true;\n }\n }, []);\n var onCloseBannerClick = function () {\n setIsOpen(false);\n };\n var bannerElement = (React.createElement(React.Fragment, null, isOpen && (React.createElement(\"div\", { style: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'fixed',\n top: '16px',\n right: '16px',\n padding: '12px',\n borderRadius: '4px',\n boxShadow: '0px 4px 5px 0px rgba(0, 0, 0, 0.04), 0px 2px 4px 0px rgba(0, 0, 0, 0.03)',\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '20px',\n backgroundColor: '#FFC000',\n color: '#1E1E1E',\n zIndex: 999\n } },\n React.createElement(\"span\", { style: { display: 'flex', alignSelf: 'center', marginRight: '8px' } },\n React.createElement(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", fill: \"none\" },\n React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M8 1L0 15H16L8 1ZM7 6V11H9V6H7ZM7 14V12H9V14H7Z\", fill: \"#1E1E1E\" }))),\n React.createElement(\"span\", null, \"No valid license found for KendoReact. Learn how to activate your license.\"),\n React.createElement(\"div\", { style: { display: 'flex', alignItems: 'center', marginLeft: '24px' } },\n React.createElement(\"a\", { href: licenseKeyUrl, style: { marginRight: '8px', display: 'flex' } },\n React.createElement(\"button\", { title: 'Learn More', style: {\n display: 'inline-flex',\n position: 'relative',\n border: 'none',\n borderRadius: '4px',\n padding: '5px',\n backgroundColor: 'transparent',\n transition: 'color 0.2s ease-in-out',\n outline: 'none',\n cursor: 'pointer'\n } },\n React.createElement(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M15 8C15 11.8656 11.8656 15 8 15C4.13437 15 1 11.8656 1 8C1 4.13437 4.13437 1 8 1C11.8656 1 15 4.13437 15 8ZM14 8C14 4.6875 11.3125 2 8 2C4.6875 2 2 4.6875 2 8C2 11.3125 4.6875 14 8 14C11.3125 14 14 11.3125 14 8ZM11 6C11 7.4125 10.2687 8.05937 9.73125 8.53125C9.25937 8.94688 9 9.17813 9 10H7C7 8.275 7.84688 7.525 8.40938 7.03125C8.84062 6.65312 9 6.50938 9 6C9 5.45 8.55 5 8 5C7.45 5 7 5.45 7 6H5C5 4.34375 6.34375 3 8 3C9.65625 3 11 4.34375 11 6ZM9 13V11H7V13H9Z\", fill: \"#1E1E1E\" })))),\n React.createElement(\"button\", { title: 'Close', style: {\n display: 'inline-flex',\n position: 'relative',\n border: 'none',\n borderRadius: '4px',\n padding: '5px',\n backgroundColor: 'transparent',\n transition: 'color 0.2s ease-in-out',\n outline: 'none',\n cursor: 'pointer'\n }, onClick: onCloseBannerClick },\n React.createElement(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", fill: \"none\" },\n React.createElement(\"path\", { d: \"M13 4.41562L9.41563 8L13 11.5844L11.5844 13L8 9.41563L4.41562 13L3 11.5844L6.58437 8L3 4.41562L4.41562 3L8 6.58437L11.5844 3L13 4.41562Z\", fill: \"#1E1E1E\" }))))))));\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { style: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n opacity: 0.2,\n zIndex: 101,\n pointerEvents: 'none',\n backgroundImage: 'url(\\'data:image/png;base64,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\\')'\n } }),\n bannerMounted && ReactDOM.createPortal(bannerElement, document.body)));\n};\n","import { generateNavigatableId } from '../../navigation/utils';\nimport { ColumnDefaultProps } from '../ColumnProps';\n/**\n * @hidden\n */\nexport function nextColumn(columns, current) {\n var currentDepth = columns[current].depth;\n var next = null;\n for (var index = current + 1; index < columns.length; index++) {\n if (columns[index].depth === currentDepth) {\n next = columns[index];\n break;\n }\n }\n return next;\n}\nvar getColumnWidth = function (column) {\n var width = column.width ? parseFloat(column.width.toString()) : 0;\n if (!width && column.children && column.children.length) {\n width = column.children.reduce(function (currentSum, child) { return getColumnWidth(child) + currentSum; }, 0);\n }\n return width;\n};\n/**\n * @hidden\n */\nexport function mapColumns(columns) {\n var columnsMap = [[]];\n var maxDepth = 0;\n // set colspans, get maxdepth\n for (var q = columns.length - 1; q >= 0; q--) {\n maxDepth = Math.max(maxDepth, columns[q].depth);\n columns[q].colSpan = columns[q].colSpan || 1;\n if (columns[q].parentIndex !== -1) {\n columns[columns[q].parentIndex].colSpan =\n (columns[columns[q].parentIndex].colSpan || 0) + columns[q].colSpan;\n }\n }\n var colIndexByLevel = [];\n var rowSpan = 1;\n // set rowspan, kFirst, index AND create columnsMap\n columns.forEach(function (column, i) {\n columnsMap[column.depth] = columnsMap[column.depth] || [];\n var needKFirst = false;\n if (columnsMap[column.depth].length === 0) {\n if (rowSpan <= 1) {\n rowSpan = 1 + (column.children.length > 0 ? 0 : maxDepth - column.depth);\n }\n else {\n rowSpan--;\n needKFirst = true;\n }\n }\n column.rowSpan = 1 + (column.children.length > 0 ? 0 : maxDepth - column.depth);\n column.kFirst = needKFirst;\n column.index = columnsMap[column.depth].length;\n columnsMap[column.depth].push(i);\n column.ariaColumnIndex = colIndexByLevel[column.depth] ? colIndexByLevel[column.depth] + 1 : 1;\n for (var ci = column.depth; ci < column.depth + column.rowSpan; ci++) {\n colIndexByLevel[ci] = (colIndexByLevel[ci] || 0) + column.colSpan;\n }\n });\n updateLeft(columnsMap, columns);\n updateRight(columnsMap, columns);\n return columnsMap;\n}\n/**\n * @hidden\n */\nexport function updateLeft(columnsMap, columns, generateLeft) {\n var stickyLeftWidth = new Array(columnsMap.length).fill(0);\n var width = 0;\n // set left AND create stickyLeftWidth\n columns.forEach(function (column) {\n if (column.locked && (!column.left || generateLeft)) {\n column.left = stickyLeftWidth[column.depth];\n width = getColumnWidth(column);\n if (column.children.length === 0) {\n for (var i = column.depth; i < stickyLeftWidth.length; i++) {\n stickyLeftWidth[i] += width;\n }\n }\n else {\n stickyLeftWidth[column.depth] += width;\n }\n }\n });\n}\n/**\n * @hidden\n */\nexport function updateRight(columnsMap, columns, generateRight) {\n var width = 0;\n var stickyRightWidth = new Array(columnsMap.length).fill(0);\n // set right, rightBorder AND create stickyRightWidth\n for (var i = columns.length - 1; i >= 0; i--) {\n var column = columns[i];\n if (column.locked && (!column.right || generateRight)) {\n column.right = stickyRightWidth[column.depth];\n width = getColumnWidth(column);\n if (column.children.length === 0) {\n for (var j = column.depth; j < stickyRightWidth.length; j++) {\n stickyRightWidth[j] += width;\n }\n }\n else {\n stickyRightWidth[column.depth] += width;\n }\n var next = nextColumn(columns, i);\n column.rightBorder = !(next && next.locked);\n }\n }\n}\n/**\n * @hidden\n */\nexport function readColumns(elements, idInfo, depth) {\n if (depth === void 0) { depth = 0; }\n var columns = [];\n if (!elements || !elements.length) {\n return [];\n }\n elements.forEach(function (columnProps) {\n var children = readColumns(columnProps.children || [], idInfo, depth + 1);\n columns.push(Object.assign({}, { depth: depth }, ColumnDefaultProps, columnProps, {\n id: columnProps.id ? columnProps.id : generateNavigatableId(\"\".concat(idInfo.prevId++), idInfo.idPrefix, 'column'),\n declarationIndex: columns.length,\n children: children,\n rowSpan: 0,\n colSpan: 0,\n isAccessible: true\n }));\n });\n var comparator = function (a, b) {\n return a.orderIndex === b.orderIndex ?\n a.declarationIndex - b.declarationIndex :\n ((a.orderIndex || 0) - (b.orderIndex || 0));\n };\n columns.sort(comparator);\n if (depth === 0) {\n var ret_1 = [];\n var flat_1 = function (cols, pIndex) {\n return cols.forEach(function (c) {\n c.parentIndex = pIndex;\n flat_1(c.children, ret_1.push(c) - 1);\n });\n };\n flat_1(columns, -1);\n return ret_1;\n }\n return columns;\n}\n/**\n * @hidden\n */\nexport function isRtl(element) {\n return Boolean(element && getComputedStyle(element).direction === 'rtl');\n}\n/**\n * @hidden\n */\nexport function getIndex(event, parent) {\n if (!parent || !event || !event.originalEvent) {\n return -1;\n }\n var coord = { x: event.clientX, y: event.originalEvent.clientY };\n var target = parent.ownerDocument ? parent.ownerDocument.elementFromPoint(coord.x, coord.y) : null;\n while (target && target.parentElement !== parent) {\n target = target.parentElement;\n }\n if (!target && parent.matches('tr')) {\n // parent.ownerDocument.elementFromPoint did not return correct element in grid is in shadow root.\n var predicate = function (c) {\n var pos = c.getBoundingClientRect();\n return coord.x > pos.left && coord.x < pos.left + pos.width && coord.y > pos.top && coord.y < pos.top + pos.height;\n };\n target = Array.from(parent.children).find(predicate) || null;\n }\n var children = parent.children;\n for (var i = 0; i < children.length; i++) {\n if (children[i] === target) {\n return i;\n }\n }\n return -1;\n}\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var TableKeyboardNavigationContext = React.createContext(undefined);\nTableKeyboardNavigationContext.displayName = 'KendoReactTableKeyboardNavigationContext';\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar _a, _b, _c;\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_LEVEL = 'data-keyboardnavlevel';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_SCOPE = 'data-keyboardnavscope';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_HEADER = 'data-keyboardnavheader';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_BODY = 'data-keyboardnavbody';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_ID = 'data-keyboardnavid';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_DATA_ZONE = 'data-keyboardnavzone';\n/**\n * @hidden\n */\nexport var KEYBOARD_NAV_FILTER_COL_SUFFIX = '_filter';\nvar FOCUSABLE_ELEMENTS_BASE = [\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]'\n];\n/**\n * @hidden\n */\nexport var FOCUSABLE_ELEMENTS = __spreadArray(__spreadArray([], FOCUSABLE_ELEMENTS_BASE, true), ['[tabindex]'], false);\n/**\n * @hidden\n */\nexport var TABBABLE_ELEMENTS = __spreadArray(__spreadArray([], FOCUSABLE_ELEMENTS_BASE, true), ['[tabindex]'], false).map(function (selector) { return selector + ':not([tabindex=\"-1\"])'; });\n/**\n * @hidden\n */\nexport var tableKeyboardNavigationScopeAttributes = (_a = {},\n _a[KEYBOARD_NAV_DATA_SCOPE] = true,\n _a);\n/**\n * @hidden\n */\nexport var tableKeyboardNavigationHeaderAttributes = (_b = {},\n _b[KEYBOARD_NAV_DATA_HEADER] = true,\n _b);\n/**\n * @hidden\n */\nexport var tableKeyboardNavigationBodyAttributes = (_c = {},\n _c[KEYBOARD_NAV_DATA_BODY] = true,\n _c);\n","import * as React from 'react';\nimport { KEYBOARD_NAV_DATA_ID, KEYBOARD_NAV_DATA_LEVEL } from './constants';\nimport { TableKeyboardNavigationContext } from './TableKeyboardNavigationContext';\n/**\n * @hidden\n */\nexport var useTableKeyboardNavigation = function (elementId, navigatable) {\n var _a;\n var navigationContext = React.useContext(TableKeyboardNavigationContext);\n if (!navigationContext || !elementId || navigatable === false) {\n return {};\n }\n return _a = {\n tabIndex: navigationContext && navigationContext.activeId && navigationContext.activeId === elementId ? 0 : -1\n },\n _a[KEYBOARD_NAV_DATA_LEVEL] = navigationContext.level,\n _a[KEYBOARD_NAV_DATA_ID] = elementId,\n _a;\n};\n","import { FOCUSABLE_ELEMENTS, KEYBOARD_NAV_DATA_BODY, KEYBOARD_NAV_DATA_HEADER, KEYBOARD_NAV_DATA_ID, KEYBOARD_NAV_DATA_LEVEL, KEYBOARD_NAV_DATA_SCOPE, KEYBOARD_NAV_FILTER_COL_SUFFIX, TABBABLE_ELEMENTS } from './constants';\n/**\n * @hidden\n */\nexport var generateNavigatableId = function (navigationId, idPrefix, type) {\n if (type === void 0) { type = 'cell'; }\n return \"\".concat(idPrefix, \"_\").concat(navigationId, \"_\").concat(type);\n};\n/**\n * @hidden\n */\nexport var getNavigatableLevel = function (element) {\n if (!element) {\n return;\n }\n return parseInt(element.getAttribute(KEYBOARD_NAV_DATA_LEVEL) || '', 10);\n};\n/**\n * @hidden\n */\nexport var getNavigatableId = function (element) {\n if (!element) {\n return;\n }\n var dataId = element.getAttribute(KEYBOARD_NAV_DATA_ID);\n return dataId ? dataId : undefined;\n};\n/**\n * @hidden\n */\nexport var isNavigatable = function (element) {\n if (!element) {\n return false;\n }\n var dataId = element.getAttribute(KEYBOARD_NAV_DATA_ID);\n return Boolean(dataId);\n};\n/**\n * @hidden\n */\nexport var getNavigatableElement = function (scope, options) {\n if (options === void 0) { options = { level: 0 }; }\n return scope.querySelector(\"[\".concat(KEYBOARD_NAV_DATA_LEVEL, \"='\").concat(options.level, \"']\"));\n};\n/**\n * @hidden\n */\nexport var getClosestNavigatableElement = function (target) {\n return (target.parentElement &&\n target.parentElement.closest(\"[\".concat(KEYBOARD_NAV_DATA_LEVEL, \"]\")));\n};\n/**\n * @hidden\n */\nexport var getActiveElement = function (scope, activeId) {\n return scope.querySelector(\"[\".concat(KEYBOARD_NAV_DATA_ID, \"='\").concat(activeId, \"']\"));\n};\n/**\n * @hidden\n */\nexport var getClosestScope = function (target) {\n return (target.parentElement &&\n target.parentElement.closest(\"[\".concat(KEYBOARD_NAV_DATA_SCOPE, \"]\")));\n};\n/**\n * @hidden\n */\nexport var getHeaderElement = function (scope) {\n return scope.querySelector(\"[\".concat(KEYBOARD_NAV_DATA_HEADER, \"]\"));\n};\n/**\n * @hidden\n */\nexport var getBodyElement = function (scope) {\n return scope.querySelector(\"[\".concat(KEYBOARD_NAV_DATA_BODY, \"]\"));\n};\n/**\n * @hidden\n */\nexport var getFocusableElements = function (scope, options) {\n if (options === void 0) { options = { focusable: false }; }\n var selectors = options.focusable ? FOCUSABLE_ELEMENTS : TABBABLE_ELEMENTS;\n return Array.from(scope.querySelectorAll(selectors.join(',')));\n};\n/**\n * @hidden\n */\nexport var getNavigatableElements = function (scope, options) {\n if (options === void 0) { options = { level: 0 }; }\n if (!scope) {\n return [];\n }\n var selector = FOCUSABLE_ELEMENTS.map(function (el) { return el + \"[\".concat(KEYBOARD_NAV_DATA_LEVEL, \"='\").concat(options.level, \"']\"); }).join(',');\n return Array.from(scope.querySelectorAll(selector));\n};\n/**\n * @hidden\n */\nexport var filterNavigatableElements = function (options) {\n if (options === void 0) { options = { level: 0 }; }\n var selector = FOCUSABLE_ELEMENTS.map(function (sel) { return sel + \"[\".concat(KEYBOARD_NAV_DATA_LEVEL, \"='\").concat(options.level, \"']\"); }).join(',');\n return function (element) { return element.matches(selector); };\n};\n/**\n * @hidden\n */\nexport var focusElement = function (options) {\n var elementForFocus = options.elementForFocus, event = options.event, contextStateRef = options.contextStateRef, prevElement = options.prevElement;\n if (contextStateRef.current && elementForFocus && elementForFocus.focus) {\n event.preventDefault();\n elementForFocus.focus();\n if (isNavigatable(elementForFocus)) {\n elementForFocus.setAttribute('tabIndex', '0');\n contextStateRef.current.activeId = getNavigatableId(elementForFocus);\n }\n if (prevElement && isNavigatable(prevElement)) {\n prevElement.setAttribute('tabIndex', '-1');\n }\n }\n};\n/**\n * @hidden\n */\nexport var getIdPrefix = function (navigationStateRef) {\n return navigationStateRef.current ? navigationStateRef.current.idPrefix : '';\n};\n/**\n * @hidden\n */\nexport var findNextIdByRowIndex = function (initialRowIndex, cellIndex, elementId, matrix, isReverse) {\n if (!elementId) {\n return [];\n }\n var currentRowIndex = initialRowIndex + (isReverse ? -1 : 1);\n while (currentRowIndex >= 0 && currentRowIndex < matrix.length) {\n var currentId = matrix[currentRowIndex][cellIndex];\n if (currentId !== elementId) {\n return [currentId, [currentRowIndex, cellIndex]];\n }\n currentRowIndex = currentRowIndex + (isReverse ? -1 : 1);\n }\n return [];\n};\n/**\n * @hidden\n */\nexport var findNextIdByCellIndex = function (rowIndex, initialCellIndex, elementId, matrix, isReverse) {\n if (!elementId) {\n return [];\n }\n var currentCellIndex = initialCellIndex + (isReverse ? -1 : 1);\n while (currentCellIndex >= 0 && currentCellIndex < matrix[rowIndex].length) {\n var currentId = matrix[rowIndex][currentCellIndex];\n if (currentId !== elementId) {\n return [currentId, [rowIndex, currentCellIndex]];\n }\n currentCellIndex = currentCellIndex + (isReverse ? -1 : 1);\n }\n return [];\n};\n/**\n * @hidden\n */\nexport var findId = function (navigationMatrix, cellId) {\n if (!cellId) {\n return;\n }\n for (var rowIndex = 0; rowIndex < navigationMatrix.length; rowIndex++) {\n for (var cellIndex = 0; cellIndex < navigationMatrix[rowIndex].length; cellIndex++) {\n if (navigationMatrix[rowIndex][cellIndex] === cellId) {\n return [rowIndex, cellIndex];\n }\n }\n }\n};\n/**\n * @hidden\n */\nexport var getNextNavigationIndex = function (navigationStateRef) {\n return navigationStateRef.current ? navigationStateRef.current.navigationMatrix.length : 0;\n};\n/**\n * @hidden\n */\nexport var getFilterColumnId = function (columnId) {\n return columnId ? \"\".concat(columnId).concat(KEYBOARD_NAV_FILTER_COL_SUFFIX) : '';\n};\n/**\n * @hidden\n */\nexport var tableKeyboardNavigationTools = {\n generateNavigatableId: generateNavigatableId,\n getNavigatableId: getNavigatableId,\n getNavigatableLevel: getNavigatableLevel,\n getNavigatableElement: getNavigatableElement,\n getClosestNavigatableElement: getClosestNavigatableElement,\n getActiveElement: getActiveElement,\n getClosestScope: getClosestScope,\n getHeaderElement: getHeaderElement,\n getBodyElement: getBodyElement,\n getFocusableElements: getFocusableElements,\n getNavigatableElements: getNavigatableElements,\n filterNavigatableElements: filterNavigatableElements,\n focusElement: focusElement,\n getIdPrefix: getIdPrefix,\n isNavigatable: isNavigatable,\n findNextIdByRowIndex: findNextIdByRowIndex,\n findNextIdByCellIndex: findNextIdByCellIndex,\n findId: findId,\n getNextNavigationIndex: getNextNavigationIndex,\n getFilterColumnId: getFilterColumnId\n};\n","/** @hidden */\nexport var TABLE_ROW_INDEX_ATTRIBUTE = 'data-grid-row-index';\n/** @hidden */\nexport var TABLE_COL_INDEX_ATTRIBUTE = 'data-grid-col-index';\n/** @hidden */\nexport var TABLE_PREVENT_SELECTION_ELEMENT = 'data-prevent-selection';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { extendDataItem, getter, Keys, mapTree, hasRelativeStackingContext } from '@progress/kendo-react-common';\nimport { TABLE_COL_INDEX_ATTRIBUTE, TABLE_ROW_INDEX_ATTRIBUTE } from './constants';\nvar GROUP_SUBITEMS_COLLECTION = 'items';\nvar LAST_SELECTION_STATE = {};\nvar getCellSelection = function (currentSelection, selectedColumn) {\n if (!currentSelection || (Array.isArray(currentSelection) && currentSelection.length === 0)) {\n return [selectedColumn];\n }\n else {\n var foundIndex = currentSelection.findIndex(function (columnIndex) { return columnIndex === selectedColumn; });\n if (foundIndex > -1) {\n return currentSelection.filter(function (columnIndex) { return columnIndex !== selectedColumn; });\n }\n else {\n return __spreadArray(__spreadArray([], currentSelection, true), [selectedColumn], false);\n }\n }\n};\n/** @hidden */\nexport var closestTagName = function (target, tagName) {\n var currentTarget = target;\n while (currentTarget) {\n if (currentTarget.tagName === tagName) {\n return currentTarget;\n }\n else if (currentTarget.tagName === 'TABLE') {\n return null;\n }\n currentTarget = currentTarget.parentElement;\n }\n return null;\n};\n/** @hidden */\nexport var getRowIndex = function (element) {\n if (!element) {\n return;\n }\n var rowIndex = element.getAttribute(TABLE_ROW_INDEX_ATTRIBUTE);\n return rowIndex ? parseInt(rowIndex, 10) : undefined;\n};\n/** @hidden */\nexport var getColumnIndex = function (element) {\n if (!element) {\n return;\n }\n var colIndex = element.getAttribute(TABLE_COL_INDEX_ATTRIBUTE);\n return colIndex ? parseInt(colIndex, 10) : undefined;\n};\n/**\n * @hidden\n *\n * Apply the selected field to the data items based on the selected state.\n *\n * @param {{data: any, selectedState: {[id: string]: boolean | number[]}, dataItemKey: string; selectedField: string; subItemsField?: string; }} options\n * @returns {any[]}\n */\nexport var setSelectedState = function (options) {\n var subItemsField = options.subItemsField || GROUP_SUBITEMS_COLLECTION;\n var idGetter = getter(options.dataItemKey);\n return mapTree(options.data, subItemsField, function (item) {\n var _a;\n return extendDataItem(item, subItemsField, (_a = {},\n _a[options.selectedField] = options.selectedState[idGetter(item)],\n _a));\n });\n};\n/**\n * Get selected state from the component KeyDown event.\n *\n * @param {{event: TableKeyDownEvent, selectedState: {[id: string]: boolean | number[]}, dataItemKey: string}} options\n * @returns {{[id: string]: boolean | number[]}} - The new selected state.\n */\nexport var getSelectedStateFromKeyDown = function (options) {\n var event = options.event, dataItemKey = options.dataItemKey, selectedState = options.selectedState;\n var syntheticEvent = event.syntheticEvent, nativeEvent = event.nativeEvent, dataItems = event.dataItems, componentId = event.componentId, mode = event.mode, cell = event.cell, selectedField = event.selectedField;\n var target = nativeEvent.target, ctrlKey = nativeEvent.ctrlKey, metaKey = nativeEvent.metaKey, altKey = nativeEvent.altKey, shiftKey = nativeEvent.shiftKey;\n if (syntheticEvent.isDefaultPrevented() || nativeEvent.keyCode !== Keys.enter) {\n return selectedState;\n }\n var tdElement = closestTagName(target, 'TD');\n var trElement = closestTagName(target, 'TR');\n var colIndex = getColumnIndex(tdElement);\n var rowIndex = getRowIndex(trElement);\n var selectionState = {};\n if (tdElement && trElement && rowIndex !== undefined && colIndex !== undefined) {\n selectionState = getSelectedState({\n selectedState: selectedState,\n dataItemKey: dataItemKey,\n event: {\n ctrlKey: ctrlKey,\n metaKey: metaKey,\n altKey: altKey,\n shiftKey: shiftKey,\n dataItems: dataItems,\n cell: cell,\n mode: mode,\n selectedField: selectedField,\n componentId: componentId,\n startColIndex: colIndex, endColIndex: colIndex, startRowIndex: rowIndex, endRowIndex: rowIndex,\n isDrag: false,\n syntheticEvent: syntheticEvent,\n nativeEvent: nativeEvent,\n target: event.target,\n dataItem: null\n }\n });\n }\n return selectionState;\n};\n/**\n * Get selected state from the component selection event.\n *\n * @param {{event: TableSelectionChangeEvent, selectedState: {[id: string]: boolean | number[]}, dataItemKey: string}} options\n * @returns {{[id: string]: boolean | number[]}} - The new selected state.\n */\nexport var getSelectedState = function (options) {\n var event = options.event, dataItemKey = options.dataItemKey, prevSelectedState = options.selectedState;\n var dataItems = event.dataItems, startRowIndex = event.startRowIndex, endRowIndex = event.endRowIndex, startColIndex = event.startColIndex, endColIndex = event.endColIndex, cell = event.cell, isDrag = event.isDrag, ctrlKey = event.ctrlKey, shiftKey = event.shiftKey, metaKey = event.metaKey, componentId = event.componentId, mode = event.mode, dataItem = event.dataItem;\n var idGetter = getter(dataItemKey);\n var selectionState = {};\n var isInputEvent = dataItem !== null;\n if (mode === 'single') {\n var currentDataItem = dataItems.slice(startRowIndex, startRowIndex + 1)[0];\n var itemId = idGetter(currentDataItem);\n LAST_SELECTION_STATE[componentId] = {\n rowIndex: startRowIndex,\n colIndex: startColIndex\n };\n selectionState[itemId] = cell ? [startColIndex] : true;\n }\n else if (isDrag || (!shiftKey && !ctrlKey && !metaKey && !isInputEvent)) {\n if (!isDrag) {\n LAST_SELECTION_STATE[componentId] = {\n rowIndex: startRowIndex,\n colIndex: startColIndex\n };\n }\n var selectedColumns_1 = [];\n for (var i = startColIndex; i <= endColIndex; i++) {\n selectedColumns_1.push(i);\n }\n var selectedDataItems = dataItems.slice(startRowIndex, endRowIndex + 1);\n selectedDataItems.forEach(function (currentItem) {\n var itemId = idGetter(currentItem);\n selectionState[itemId] = cell ? __spreadArray([], selectedColumns_1, true) : true;\n });\n }\n else {\n if (ctrlKey || metaKey || isInputEvent) {\n LAST_SELECTION_STATE[componentId] = {\n rowIndex: startRowIndex,\n colIndex: startColIndex\n };\n var selectedDataItems = dataItems.slice(startRowIndex, endRowIndex + 1);\n var currentDataItem = selectedDataItems[0];\n var itemId = idGetter(currentDataItem);\n selectionState = __assign({}, prevSelectedState);\n selectionState[itemId] = cell && !isInputEvent ? getCellSelection(selectionState[itemId], startColIndex) : !selectionState[itemId];\n }\n else if (shiftKey) {\n var lastRowIndex = (LAST_SELECTION_STATE[componentId] && LAST_SELECTION_STATE[componentId].rowIndex) || 0;\n var lastColIndex = (LAST_SELECTION_STATE[componentId] && LAST_SELECTION_STATE[componentId].colIndex) || 0;\n var currentStartRowIndex = Math.min(lastRowIndex, startRowIndex, endRowIndex);\n var currentEndRowIndex = Math.max(lastRowIndex, startRowIndex, endRowIndex);\n var currentStarColIndex = Math.min(lastColIndex, startColIndex, endColIndex);\n var currentEndColIndex = Math.max(lastColIndex, startColIndex, endColIndex);\n var selectedColumns_2 = [];\n for (var i = currentStarColIndex; i <= currentEndColIndex; i++) {\n selectedColumns_2.push(i);\n }\n var selectedDataItems = dataItems.slice(currentStartRowIndex, currentEndRowIndex + 1);\n selectedDataItems.forEach(function (currentItem) {\n var itemId = idGetter(currentItem);\n selectionState[itemId] = cell ? __spreadArray([], selectedColumns_2, true) : true;\n });\n }\n }\n return selectionState;\n};\n/** @hidden */\nvar HAS_RELATIVE_STACKING_CONTEXT = hasRelativeStackingContext();\n/** @hidden */\nexport var relativeContextElement = function (element) {\n if (!element || !HAS_RELATIVE_STACKING_CONTEXT) {\n return null;\n }\n var node = element.parentElement;\n while (node) {\n if (window.getComputedStyle(node).transform !== 'none') {\n return node;\n }\n node = node.parentElement;\n }\n};\n/** @hidden */\nexport var getOffset = function (offsetParent) {\n if (offsetParent && offsetParent.ownerDocument) {\n if (offsetParent !== offsetParent.ownerDocument.body) {\n var rect = offsetParent.getBoundingClientRect();\n return {\n left: rect.left - offsetParent.scrollLeft,\n top: rect.top - offsetParent.scrollTop\n };\n }\n }\n return { left: 0, top: 0 };\n};\n/** @hidden */\nexport var getSelectionOptions = function (selectable) {\n var enabled = selectable ?\n (typeof selectable.enabled === 'boolean' ? selectable.enabled : true) :\n false;\n var drag = selectable ? Boolean(selectable.drag) : false;\n var mode = selectable && selectable.mode ? selectable.mode : 'multiple';\n var cell = Boolean(selectable && selectable.cell);\n return { enabled: enabled, drag: drag, mode: mode, cell: cell };\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cloneDate, getDate, isEqualDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { Virtualization } from '../../virtualization/Virtualization';\nimport { View } from './View';\nimport { Header } from './Header';\nimport { dateInRange, getToday, isInRange, shiftWeekNames } from '../../utils';\nimport { CalendarViewEnum } from '../models';\nimport { TodayCommand } from './TodayCommand';\nvar VIEWS_COUNT = 5;\n/**\n * @hidden\n */\nvar ViewList = /** @class */ (function (_super) {\n __extends(ViewList, _super);\n function ViewList(props) {\n var _this = _super.call(this, props) || this;\n _this.virtualization = null;\n _this.calendarView = null;\n _this.table = null;\n _this.intl = null;\n _this.bottomOffset = 0;\n _this.viewOffset = 0;\n _this.viewHeight = 0;\n _this._element = null;\n _this.isActive = false;\n _this.animateToIndex = true;\n _this.shouldScroll = false;\n _this.focusActiveDate = function () {\n if (!_this._element) {\n return;\n }\n var focusedCell = _this._element.querySelector('td.k-focus');\n var nextActiveCell = _this._element.querySelector('.k-state-pending-focus');\n if (focusedCell && focusedCell[0]) {\n focusedCell[0].classList.remove('k-focus');\n }\n if (nextActiveCell) {\n nextActiveCell.classList.add('k-focus');\n }\n _this.isActive = true;\n };\n _this.blurActiveDate = function () {\n if (!_this._element) {\n return;\n }\n var focusedCell = _this._element.querySelector('td.k-focus');\n if (focusedCell) {\n focusedCell.classList.remove('k-focus');\n }\n _this.isActive = false;\n };\n _this.handleVirtualizationMount = function (virtualization) {\n _this.virtualization = virtualization;\n if (_this.virtualization && _this.table) {\n _this.table.style.transform = \"translateY(\".concat(_this.viewOffset, \"px)\");\n var viewDate = dateInRange(_this.props.focusedDate, _this.props.min, _this.props.max);\n var indexToScroll = _this.props.service.skip(viewDate, _this.props.min);\n _this.virtualization.scrollToIndex(indexToScroll);\n }\n };\n _this.buildMonthView = function (cols, weekNames) {\n return (React.createElement(\"table\", { key: \"calendar-view-list-weekdays\", className: \"k-calendar-table k-calendar-weekdays\", role: \"grid\", tabIndex: _this.props.tabIndex },\n React.createElement(\"colgroup\", null, cols.map(function (_, idx) { return (React.createElement(\"col\", { key: idx })); })),\n React.createElement(\"thead\", { className: \"k-calendar-thead\" },\n React.createElement(\"tr\", { className: \"k-calendar-tr\" }, weekNames.map(function (name, idx) { return (React.createElement(\"th\", { key: idx, className: \"k-calendar-th\" }, name)); })))));\n };\n _this.buildDates = function (cols, dates) {\n var cellUID = _this.props.cellUID;\n return (React.createElement(\"table\", { className: \"k-calendar-table\", ref: function (table) { return _this.table = table; }, role: \"grid\", tabIndex: _this.props.tabIndex, \"aria-activedescendant\": cellUID + _this.props.focusedDate.getTime() },\n React.createElement(\"colgroup\", null, cols.map(function (_, idx) { return (React.createElement(\"col\", { key: idx })); })),\n dates.map(function (date) { return (React.createElement(View, { ref: function (el) { if (!_this.calendarView) {\n _this.calendarView = el;\n } }, key: date.getTime(), activeView: _this.props.activeView, viewDate: date, min: _this.props.min, max: _this.props.max, cellUID: cellUID, focusedDate: _this.props.focusedDate, cell: _this.props.cell, selectedDate: _this.props.value, showWeekNumbers: _this.weekNumber, onChange: _this.handleDateChange, bus: _this.props.bus, service: _this.props.service, weekCell: _this.props.weekCell })); })));\n };\n _this.calculateHeights = function () {\n if (!_this.props.dom) {\n return;\n }\n var scrollableHeight = _this.props.activeView === CalendarViewEnum.month ?\n _this.props.dom.scrollableContentHeight :\n _this.props.dom.scrollableYearContentHeight;\n _this.bottomOffset = scrollableHeight - _this.props.dom.viewHeight(_this.props.activeView);\n _this.viewOffset = -1 * _this.props.dom.headerHeight;\n _this.viewHeight = _this.props.dom.viewHeight(_this.props.activeView) || 1;\n };\n _this.getTake = function (skip, total) {\n return Math.min(total - skip, _this.take);\n };\n _this.handleScrollAction = function (_a) {\n var index = _a.index, scrollAction = _a.scrollAction, pageAction = _a.pageAction;\n var skip = pageAction ? pageAction.skip : _this.state.skip;\n if (_this.state.index !== index || _this.state.skip !== skip) {\n _this.setState({ index: index, skip: skip });\n }\n if (_this.table && scrollAction) {\n var translate = \"translateY(\".concat(scrollAction.offset, \"px)\");\n _this.table.style.transform = translate;\n }\n };\n _this.handleTodayClick = function (event) {\n _this.shouldScroll = true;\n _this.handleDateChange.call(undefined, event, true);\n };\n _this.handleDateChange = function (event, isTodayClick) {\n if (isTodayClick === void 0) { isTodayClick = false; }\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: cloneDate(event.value),\n target: _this,\n isTodayClick: isTodayClick\n };\n onChange.call(undefined, args);\n }\n };\n _this.lastView = _this.props.activeView;\n _this.lastFocus = _this.props.focusedDate;\n _this.state = {\n skip: _this.props.service.skip(_this.props.focusedDate, _this.props.min),\n index: _this.props.service.skip(_this.props.focusedDate, _this.props.min)\n };\n return _this;\n }\n Object.defineProperty(ViewList.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"weekNames\", {\n get: function () {\n this.intl = provideIntlService(this);\n var weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n return this.weekNumber ? [''].concat(weekNames) : weekNames;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"weekNumber\", {\n get: function () {\n return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"take\", {\n get: function () {\n return this.props.take !== undefined ? this.props.take : ViewList.defaultProps.take;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"animate\", {\n get: function () {\n return Boolean(this.props.smoothScroll && this.animateToIndex);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"todayIsInRange\", {\n get: function () {\n return isInRange(getToday(), getDate(this.props.min), getDate(this.props.max));\n },\n enumerable: false,\n configurable: true\n });\n ViewList.prototype.componentDidUpdate = function (_prevProps, _prevState) {\n this.shouldScroll = false;\n if (this.indexToScroll !== undefined && this.virtualization) {\n this.virtualization[this.animate ? 'animateToIndex' : 'scrollToIndex'](this.indexToScroll);\n }\n if (this.isActive) {\n this.focusActiveDate();\n }\n this.lastView = this.props.activeView;\n // this.lastFocus = this.props.focusedDate;\n this.indexToScroll = undefined;\n };\n ViewList.prototype.render = function () {\n var _this = this;\n this.calculateHeights();\n var didViewChange = this.lastView !== this.props.activeView;\n var focusedDate = dateInRange(this.props.focusedDate, this.props.min, this.props.max);\n var skip = !didViewChange ? this.state.skip : this.props.service.skip(focusedDate, this.props.min);\n var total = this.props.service.total(this.props.min, this.props.max);\n var take = this.getTake(skip, total);\n var viewDate = this.props.service.addToDate(this.props.min, skip);\n var activeDate = this.props.service.addToDate(this.props.min, this.state.index);\n var cols = new Array(this.props.service.rowLength(this.weekNumber)).fill('');\n var didViewChanged = this.props.activeView !== this.lastView;\n this.animateToIndex = !didViewChanged;\n if (didViewChanged\n || !isEqualDate(this.lastFocus, focusedDate)\n || this.shouldScroll\n || (!this.props.shouldScroll || this.props.shouldScroll())) {\n this.indexToScroll = this.props.service.skip(focusedDate, this.props.min);\n }\n this.lastFocus = focusedDate;\n var rootClassNames = classNames('k-calendar-view k-vstack', {\n 'k-calendar-monthview': this.props.activeView === CalendarViewEnum.month,\n 'k-calendar-yearview': this.props.activeView === CalendarViewEnum.year,\n 'k-calendar-decadeview': this.props.activeView === CalendarViewEnum.decade,\n 'k-calendar-centuryview': this.props.activeView === CalendarViewEnum.century\n });\n var dates = this.buildDates(cols, this.props.service.datesList(viewDate, take));\n var viewListBody = (React.createElement(React.Fragment, null,\n React.createElement(Header, { key: \"calendar-view-list-header\", currentDate: activeDate, min: this.props.min, max: this.props.max, activeView: this.props.activeView, bus: this.props.bus, service: this.props.service, headerTitle: this.props.headerTitle, commands: (React.createElement(React.Fragment, null,\n React.createElement(TodayCommand, { min: this.props.min, max: this.props.max, onClick: this.handleTodayClick, disabled: !this.todayIsInRange, tabIndex: this.props.tabIndex }))) }),\n this.props.activeView === CalendarViewEnum.month && this.buildMonthView(cols, this.weekNames),\n React.createElement(Virtualization, { key: \"calendar-view-list-content\", skip: skip, take: this.take, total: total, itemHeight: this.viewHeight, topOffset: this.viewOffset, bottomOffset: this.bottomOffset, scrollOffsetSize: this.viewOffset, maxScrollDifference: this.viewHeight, onScroll: this.props.onScroll, onScrollAction: this.handleScrollAction, onMount: this.handleVirtualizationMount, children: dates, tabIndex: this.props.tabIndex })));\n return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, className: rootClassNames }, this.props.dom.didCalculate ? viewListBody : null));\n };\n ViewList.propTypes = {\n activeView: PropTypes.number.isRequired,\n bottomOffset: PropTypes.number,\n cellUID: PropTypes.string.isRequired,\n focusedDate: PropTypes.instanceOf(Date).isRequired,\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n onChange: PropTypes.func,\n showWeekNumbers: PropTypes.bool,\n smoothScroll: PropTypes.bool,\n take: PropTypes.number,\n value: PropTypes.instanceOf(Date),\n viewHeight: PropTypes.number,\n viewOffset: PropTypes.number,\n tabIndex: PropTypes.number\n };\n ViewList.defaultProps = {\n take: VIEWS_COUNT,\n showWeekNumbers: false,\n smoothScroll: true\n };\n return ViewList;\n}(React.Component));\nexport { ViewList };\nregisterForIntl(ViewList);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * The `CalendarNavigationItem` component is internally used for rendering the items in the side navigation of the Calendar. Also used as a custom navigation item for the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-navigationitem) ([see example]({% slug custom_rendering_calendar %}#toc-items-in-the-side-navigation)).\n */\nvar CalendarNavigationItem = /** @class */ (function (_super) {\n __extends(CalendarNavigationItem, _super);\n function CalendarNavigationItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleClick = function (event) {\n var _a = _this.props, onClick = _a.onClick, value = _a.value;\n if (onClick) {\n onClick.call(undefined, value, event);\n }\n };\n return _this;\n }\n /**\n * @return\n * Returns a `

  • ` element with a `` inside. The text inside represents the [`value`]({% slug api_dateinputs_calendarnavigationitemprops %}#toc-value) of the `navigationItem`.\n */\n CalendarNavigationItem.prototype.render = function () {\n var _a = this.props, isRangeStart = _a.isRangeStart, value = _a.value, text = _a.text, other = __rest(_a, [\"isRangeStart\", \"value\", \"text\"]);\n return (React.createElement(\"li\", __assign({}, other, { onClick: this.handleClick }),\n React.createElement(\"span\", { className: classNames({ 'k-calendar-navigation-marker': isRangeStart }) }, this.props.children)));\n };\n return CalendarNavigationItem;\n}(React.Component));\nexport { CalendarNavigationItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate, isEqual } from '@progress/kendo-date-math';\nimport { CalendarNavigationItem } from './CalendarNavigationItem';\nimport { dateInRange } from '../../utils';\nimport { Virtualization } from '../../virtualization/Virtualization';\nvar ITEMS_COUNT = 30;\n/**\n * @hidden\n */\nvar Navigation = /** @class */ (function (_super) {\n __extends(Navigation, _super);\n function Navigation(props) {\n var _this = _super.call(this, props) || this;\n _this.virtualization = null;\n _this.list = null;\n _this.itemHeight = 0;\n _this.topOffset = 0;\n _this.maxViewHeight = 0;\n _this.bottomOffset = 0;\n _this.handleVirtualizationMount = function (virtualization) {\n _this.virtualization = virtualization;\n if (_this.virtualization && _this.list) {\n _this.list.style.transform = \"translateY(\".concat(_this.topOffset, \"px)\");\n var viewDate = dateInRange(_this.props.focusedDate, _this.props.min, _this.props.max);\n var indexToScroll = _this.props.service.skip(viewDate, _this.props.min);\n _this.virtualization.scrollToIndex(indexToScroll);\n }\n };\n _this.buildNavigationItem = function (date) {\n var text = _this.props.service.navigationTitle(date);\n var isRangeStart = _this.props.service.isRangeStart(date);\n var uniqueID = \"kendo-react-calendar-nav-item-\".concat(date.getTime());\n var navigationItemProps = {\n text: text,\n value: date,\n isRangeStart: isRangeStart,\n view: _this.props.activeView,\n onClick: _this.handleDateChange\n };\n return _this.props.navigationItem\n ? (React.createElement(_this.props.navigationItem, __assign({}, navigationItemProps, { key: uniqueID }), text))\n : (React.createElement(CalendarNavigationItem, __assign({}, navigationItemProps, { key: uniqueID }), text));\n };\n _this.calculateHeights = function () {\n var calendarHeight = _this.props.dom.calendarHeight;\n _this.itemHeight = _this.props.dom.navigationItemHeight || 1;\n _this.maxViewHeight = _this.props.dom.monthViewHeight;\n _this.topOffset = (calendarHeight - _this.itemHeight) / 2;\n _this.bottomOffset = calendarHeight - _this.itemHeight;\n };\n _this.handleDateChange = function (value, event) {\n var onChange = _this.props.onChange;\n if (onChange && event) {\n var args = {\n value: cloneDate(value),\n target: _this,\n nativeEvent: event && event.nativeEvent,\n syntheticEvent: event\n };\n onChange.call(undefined, args);\n }\n };\n _this.handleScrollAction = function (_a) {\n var scrollAction = _a.scrollAction, pageAction = _a.pageAction;\n var skip = pageAction ? pageAction.skip : _this.state.skip;\n if (_this.state.skip !== skip) {\n _this.setState({ skip: skip });\n }\n if (_this.list && scrollAction) {\n var translate = \"translateY(\".concat(scrollAction.offset, \"px)\");\n _this.list.style.transform = translate;\n }\n };\n _this.lastView = _this.props.activeView;\n _this.lastFocus = _this.props.focusedDate;\n var skip = _this.props.service.skip(_this.props.focusedDate, _this.props.min);\n var total = _this.props.service.total(_this.props.min, _this.props.max);\n _this.state = {\n skip: (skip - _this.getTake(skip, total) > 0) ? skip : 0\n };\n return _this;\n }\n Object.defineProperty(Navigation.prototype, \"take\", {\n get: function () {\n return this.props.take !== undefined\n ? this.props.take\n : Navigation.defaultProps.take;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Navigation.prototype.componentDidUpdate = function (_prevProps, _prevState) {\n if (this.indexToScroll !== undefined && this.virtualization) {\n this.virtualization.scrollToIndex(this.indexToScroll);\n }\n this.lastView = this.props.activeView;\n this.lastFocus = this.props.focusedDate;\n this.indexToScroll = undefined;\n };\n Navigation.prototype.render = function () {\n var _this = this;\n this.calculateHeights();\n var didViewChange = this.lastView !== this.props.activeView;\n var focusedDate = dateInRange(this.props.focusedDate, this.props.min, this.props.max);\n var skip = !didViewChange ? this.state.skip : this.props.service.skip(focusedDate, this.props.min);\n var total = this.props.service.total(this.props.min, this.props.max);\n var take = this.getTake(skip, total);\n var viewDate = this.props.service.addToDate(this.props.min, skip);\n var dates = this.props.service.datesList(viewDate, take);\n if (this.props.activeView !== this.lastView\n || !isEqual(focusedDate, this.lastFocus)) {\n this.indexToScroll = this.props.service.skip(focusedDate, this.props.min);\n }\n var navigationBody = (React.createElement(Virtualization, { skip: skip, take: this.take, total: total, itemHeight: this.itemHeight, topOffset: this.topOffset, bottomOffset: this.bottomOffset, onScroll: this.props.onScroll, maxScrollDifference: this.maxViewHeight, onScrollAction: this.handleScrollAction, onMount: this.handleVirtualizationMount, tabIndex: this.props.tabIndex },\n React.createElement(\"ul\", { ref: function (el) { _this.list = el; }, className: \"k-reset\" }, dates.map(function (date) { return (_this.buildNavigationItem(date)); }))));\n return (React.createElement(\"div\", { className: \"k-calendar-navigation\" },\n React.createElement(\"span\", { className: \"k-calendar-navigation-highlight\" }),\n this.props.dom.didCalculate ? navigationBody : null));\n };\n Navigation.prototype.getTake = function (skip, total) {\n return Math.min(total - skip, this.take);\n };\n Navigation.propTypes = {\n activeView: PropTypes.number.isRequired,\n focusedDate: PropTypes.instanceOf(Date).isRequired,\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n onChange: PropTypes.func,\n take: PropTypes.number,\n tabIndex: PropTypes.number\n };\n Navigation.defaultProps = {\n take: ITEMS_COUNT\n };\n return Navigation;\n}(React.Component));\nexport { Navigation };\n","import { CalendarViewEnum } from '../models/CalendarViewEnum';\nimport { domContainerFactory as containerFactory } from '../../utils';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DOMService = /** @class */ (function () {\n function DOMService() {\n // heights\n this.calendarHeight = 0;\n this.headerHeight = 0;\n this.monthViewHeight = 0;\n this.yearViewHeight = 0;\n this.decadeViewHeight = 0;\n this.centuryViewHeight = 0;\n this.navigationItemHeight = 0;\n this.scrollableContentHeight = 0;\n this.scrollableYearContentHeight = 0;\n // widths\n this.calendarWidth = 0;\n this.monthViewWidth = 0;\n this.yearViewWidth = 0;\n this.decadeViewWidth = 0;\n this.centuryViewWidth = 0;\n this.scrollableContentWidth = 0;\n this.didCalculate = false;\n this.hostContainer = null;\n }\n DOMService.prototype.ensureHeights = function () {\n if (this.calendarHeight !== undefined) {\n return;\n }\n this.calculateHeights();\n };\n DOMService.prototype.calculateHeights = function (container) {\n var _this = this;\n if (!canUseDOM) {\n return;\n }\n var div = containerFactory('div');\n var ul = containerFactory('ul');\n var li = containerFactory('li');\n var td = containerFactory('td');\n var th = containerFactory('th');\n var tr = containerFactory('tr');\n var tbody = containerFactory('tbody');\n var thead = containerFactory('thead');\n var table = containerFactory('table');\n var monthHeader = function () { return (div(\"\\n \\n March 2017\\n \\n \\n \\n \", 'k-calendar-header k-hstack')); };\n var monthWeekHeader = function () { return (table([\n thead([\n tr([th('MO', 'k-calendar-th')], 'k-calendar-tr')\n ], 'k-calendar-thead')\n ], 'k-calendar-table k-calendar-weekdays')); };\n var repeat = function (count, mapper) { return new Array(count).fill('1').map(mapper); };\n var content = function (rows, cells) {\n if (cells === void 0) { cells = 1; }\n return (table([\n tbody([tr([td('1', 'k-calendar-td k-alt')])].concat(repeat(rows, function () { return tr(repeat(cells, function (c) { return td(\"\".concat(c, \"\"), 'k-calendar-td'); }), 'k-calendar-tr'); })), 'k-calendar-tbody')\n ], 'k-calendar-table'));\n };\n var scrollable = function (children) { return div(children, 'k-content k-scrollable'); };\n var view = function (contentElement, className, renderWeekHeader) { return (div(renderWeekHeader\n ? [\n monthHeader(),\n monthWeekHeader(),\n scrollable([contentElement, contentElement])\n ]\n : [\n monthHeader(),\n scrollable([contentElement, contentElement])\n ], className, { left: '-10000px', position: 'absolute' })); };\n var navigationList = (function () {\n var navElement;\n return function () {\n if (!canUseDOM) {\n return null;\n }\n if (!navElement) {\n navElement = div([scrollable([ul([li('FEB')])])], 'k-calendar-navigation', { left: '0px', position: 'absolute' });\n }\n return navElement;\n };\n })();\n var viewFactory = function (_a, className, renderWeekHeader) {\n var cells = _a.cells, rows = _a.rows;\n var viewElement;\n return function () {\n if (!canUseDOM) {\n return null;\n }\n if (!viewElement) {\n viewElement = view(content(rows, cells), className, renderWeekHeader);\n }\n return viewElement;\n };\n };\n var getScrollable = function (element) { return element.querySelector('.k-scrollable'); };\n var horizontal = function (element) {\n var scrollableElement = getScrollable(element);\n scrollableElement.className = \"\".concat(scrollableElement.className, \" k-scrollable-horizontal\");\n return element;\n };\n var monthView = viewFactory({ cells: 7, rows: 6 }, 'k-calendar-view k-calendar-monthview k-vstack', true);\n var yearView = viewFactory({ cells: 5, rows: 3 }, 'k-calendar-view k-calendar-yearview', false);\n var decadeView = viewFactory({ cells: 5, rows: 2 }, 'k-calendar-view k-calendar-decadeview', false);\n var horzMonthView = function () { return horizontal(monthView()); };\n var horzYearView = function () { return horizontal(yearView()); };\n var horzDecadeView = function () { return horizontal(decadeView()); };\n var height = function (element) { return (parseFloat(window.getComputedStyle(element).height) || element.offsetHeight); };\n var width = function (element) {\n var styles = window.getComputedStyle(element);\n var computed = parseFloat(styles.width)\n + parseFloat(styles.paddingLeft)\n + parseFloat(styles.paddingRight);\n return computed || element.offsetWidth;\n };\n var getBody = function (element) { return element.querySelector('tbody'); };\n this.didCalculate = true;\n if (container) {\n this.hostContainer = container;\n }\n this.batch(monthView(), function (contentElement) {\n var viewElement = getBody(contentElement);\n _this.calendarHeight = height(contentElement);\n _this.monthViewHeight = height(viewElement);\n _this.headerHeight = height(viewElement.children[0]);\n _this.scrollableContentHeight = height(getScrollable(contentElement));\n });\n this.batch(horzMonthView(), function (contentElement) {\n var viewElement = getBody(contentElement);\n _this.calendarWidth = width(contentElement);\n _this.monthViewWidth = width(viewElement);\n _this.scrollableContentWidth = width(getScrollable(contentElement));\n });\n this.batch(yearView(), function (contentElement) {\n _this.yearViewHeight = height(getBody(contentElement));\n _this.scrollableYearContentHeight = height(getScrollable(contentElement));\n });\n this.batch(horzYearView(), function (contentElement) {\n _this.yearViewWidth = width(getBody(contentElement));\n });\n this.batch(decadeView(), function (contentElement) {\n _this.decadeViewHeight = height(getBody(contentElement));\n _this.centuryViewHeight = _this.decadeViewHeight;\n });\n this.batch(horzDecadeView(), function (contentElement) {\n _this.decadeViewWidth = width(getBody(contentElement));\n _this.centuryViewWidth = _this.decadeViewWidth;\n });\n this.batch(navigationList(), function (contentElement) {\n _this.navigationItemHeight = height(contentElement.querySelector('li'));\n });\n };\n DOMService.prototype.viewHeight = function (viewType) {\n return this.viewDimension(viewType, 'height');\n };\n DOMService.prototype.viewWidth = function (viewType) {\n return this.viewDimension(viewType, 'width');\n };\n DOMService.prototype.viewDimension = function (viewType, dimension) {\n var viewProp = dimension === 'height' ? 'ViewHeight' : 'ViewWidth';\n switch (viewType) {\n case CalendarViewEnum.month:\n return this[\"month\".concat(viewProp)];\n case CalendarViewEnum.year:\n return this[\"year\".concat(viewProp)];\n case CalendarViewEnum.decade:\n return this[\"decade\".concat(viewProp)];\n case CalendarViewEnum.century:\n return this[\"century\".concat(viewProp)];\n default:\n return 1;\n }\n };\n DOMService.prototype.batch = function (contentElement, action) {\n var hostContainer = this.hostContainer || document.body;\n var appendedContent = hostContainer.appendChild(contentElement);\n action(appendedContent);\n hostContainer.removeChild(appendedContent);\n };\n return DOMService;\n}());\nexport { DOMService };\n","var divideByMagnitude = function (magnitude) { return function (x) { return Math.floor(x / magnitude); }; };\nvar powerByMagnitude = function (magnitude) { return function (x) { return x * magnitude; }; };\n/**\n * @hidden\n */\nvar ScrollSyncService = /** @class */ (function () {\n function ScrollSyncService(dom) {\n this.dom = dom;\n this.divideByMagnitude = null;\n this.powerByMagnitude = null;\n this.navigator = null;\n this.view = null;\n this.monthScrolled = false;\n this.navScrolled = false;\n }\n ScrollSyncService.prototype.configure = function (activeView) {\n var magnitude = Math.max(this.dom.viewHeight(activeView) / this.dom.navigationItemHeight, 1);\n this.divideByMagnitude = divideByMagnitude(magnitude);\n this.powerByMagnitude = powerByMagnitude(magnitude);\n };\n ScrollSyncService.prototype.sync = function (navigator, view, e) {\n if (!navigator || !view) {\n return;\n }\n this.navigator = navigator;\n this.view = view;\n if (e.target === this.navigator.element) {\n if (this.monthScrolled) {\n this.monthScrolled = false;\n return;\n }\n this.navScrolled = true;\n this.scrollSiblingOf(this.navigator.element);\n }\n if (e.target === this.view.element) {\n if (this.navScrolled) {\n this.navScrolled = false;\n return;\n }\n this.monthScrolled = true;\n this.scrollSiblingOf(this.view.element);\n }\n };\n ScrollSyncService.prototype.scrollSiblingOf = function (scrolledElement) {\n var component = this.siblingComponent(scrolledElement);\n var scrollTop = this.calculateScroll(component, scrolledElement.scrollTop);\n component.scrollTo(scrollTop);\n };\n ScrollSyncService.prototype.siblingComponent = function (scrollableElement) {\n return this.navigator.element === scrollableElement ? this.view : this.navigator;\n };\n ScrollSyncService.prototype.calculateScroll = function (component, scrollTop) {\n var modifier = component === this.navigator ? this.divideByMagnitude : this.powerByMagnitude;\n return modifier ? modifier(scrollTop) : 0;\n };\n return ScrollSyncService;\n}());\nexport { ScrollSyncService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, guid, Keys, validatePackage, withPropsContext, createPropsContext, setScrollbarWidth } from '@progress/kendo-react-common';\nimport { cloneDate, getDate, isEqualDate } from '@progress/kendo-date-math';\nimport { provideIntlService, registerForIntl } from '@progress/kendo-react-intl';\nimport { packageMetadata } from '../../package-metadata';\nimport { ViewList } from './ViewList';\nimport { Navigation } from './Navigation';\nimport { CalendarViewEnum } from '../models';\nimport { getToday, dateInRange, isInRange, viewInRange, MIN_DATE, MAX_DATE } from '../../utils';\nimport { BusViewService, DOMService, ScrollSyncService, NavigationService } from '../services';\nvar virtualizationProp = function (x) { return x ? x.virtualization : null; };\nvar calculateValue = function (min, max, stateValue, propValue) {\n if (min === void 0) { min = CalendarWithoutContext.defaultProps.min; }\n if (max === void 0) { max = CalendarWithoutContext.defaultProps.max; }\n return propValue !== undefined\n ? propValue !== null && isInRange(getDate(propValue), min, max)\n ? propValue\n : null\n : stateValue !== null && isInRange(getDate(stateValue), min, max)\n ? stateValue\n : null;\n};\n/** @hidden */\nvar CalendarWithoutContext = /** @class */ (function (_super) {\n __extends(CalendarWithoutContext, _super);\n function CalendarWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this.scrollSyncService = null;\n _this.focusedDate = null;\n _this.cellUID = guid();\n _this.id = guid();\n _this.Navigation = null;\n _this.calendarViewList = null;\n _this._element = null;\n _this.intl = null;\n _this.service = null;\n _this.isActive = false;\n _this.didNavigationChange = false;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._element) {\n _this._element.focus();\n }\n };\n _this.shouldScroll = function () { return _this.didNavigationChange; };\n _this.handleScroll = function (event) {\n if (!_this.scrollSyncService) {\n return;\n }\n _this.scrollSyncService.sync(virtualizationProp(_this.Navigation), virtualizationProp(_this.calendarViewList), event);\n };\n _this.handleNavigationChange = function (event) {\n if (_this.props.disabled) {\n return;\n }\n _this.didNavigationChange = true;\n var focusedDate = cloneDate(event.value);\n _this.setState({ focusedDate: focusedDate });\n };\n _this.handleViewChange = function (_a) {\n var view = _a.view;\n if (_this.scrollSyncService) {\n _this.scrollSyncService.configure(view);\n }\n _this.setState({ activeView: view });\n };\n _this.handleDateChange = function (event) {\n var value = cloneDate(event.value);\n var focusedDate = cloneDate(event.value);\n var canNavigateDown = _this.bus.canMoveDown(_this.state.activeView);\n if (_this.props.disabled) {\n return;\n }\n if (canNavigateDown) {\n if (event.isTodayClick) {\n _this.bus.moveToBottom(_this.state.activeView);\n }\n else {\n _this.bus.moveDown(_this.state.activeView, event.syntheticEvent);\n _this.setState({ focusedDate: focusedDate });\n return;\n }\n }\n _this.setState({ value: value, focusedDate: focusedDate });\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: value,\n target: _this\n };\n onChange.call(undefined, args);\n }\n _this.valueDuringOnChange = undefined;\n };\n _this.handleFocus = function (event) {\n _this.isActive = true;\n if (!_this.calendarViewList) {\n return;\n }\n _this.calendarViewList.focusActiveDate();\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n _this.isActive = false;\n if (!_this.calendarViewList) {\n return;\n }\n _this.calendarViewList.blurActiveDate();\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n if (!_this.focusedDate || !_this.service) {\n return;\n }\n if (keyCode === Keys.enter) {\n if (_this.value !== null\n && isEqualDate(_this.focusedDate, _this.value)) {\n var viewDate = dateInRange(_this.focusedDate, _this.min, _this.max);\n virtualizationProp(_this.calendarViewList).scrollToIndex(_this.service.skip(viewDate, _this.min));\n }\n var args = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.focusedDate,\n target: _this\n };\n _this.handleDateChange(args);\n }\n else {\n var candidate = dateInRange(_this.navigation.move(_this.focusedDate, _this.navigation.action(event), _this.state.activeView, _this.service, event), _this.min, _this.max);\n if (isEqualDate(_this.focusedDate, candidate)) {\n return;\n }\n _this.setState({ focusedDate: candidate });\n }\n event.preventDefault();\n };\n _this.handleMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleClick = function (_) {\n if (_this._element) {\n _this._element.focus({ preventScroll: true });\n }\n };\n validatePackage(packageMetadata);\n var value = calculateValue(_this.min, _this.max, _this.props.defaultValue || CalendarWithoutContext.defaultProps.defaultValue, _this.props.value);\n _this.state = {\n value: value,\n activeView: viewInRange(CalendarViewEnum[props.defaultActiveView], _this.bottomView, _this.topView),\n focusedDate: dateInRange(props.focusedDate\n || value\n || getToday(), _this.min, _this.max)\n };\n _this.dom = new DOMService();\n _this.bus = new BusViewService(_this.handleViewChange);\n _this.navigation = new NavigationService(_this.bus);\n _this.oldValue = value;\n return _this;\n }\n Object.defineProperty(CalendarWithoutContext.prototype, \"element\", {\n /**\n * Gets the wrapping element of the Calendar.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CalendarWithoutContext.prototype, \"value\", {\n /**\n * Gets the value of the Calendar.\n */\n get: function () {\n return this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CalendarWithoutContext.prototype, \"min\", {\n get: function () {\n return getDate(this.props.min !== undefined\n ? this.props.min\n : CalendarWithoutContext.defaultProps.min);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CalendarWithoutContext.prototype, \"max\", {\n get: function () {\n return getDate(this.props.max !== undefined\n ? this.props.max\n : CalendarWithoutContext.defaultProps.max);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CalendarWithoutContext.prototype, \"bottomView\", {\n get: function () {\n return CalendarViewEnum[this.props.bottomView !== undefined\n ? this.props.bottomView\n : CalendarWithoutContext.defaultProps.bottomView];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CalendarWithoutContext.prototype, \"topView\", {\n get: function () {\n return CalendarViewEnum[this.props.topView !== undefined\n ? this.props.topView\n : CalendarWithoutContext.defaultProps.topView];\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n CalendarWithoutContext.prototype.componentDidMount = function () {\n var _this = this;\n // Async calculation of height to avoid animation cancellation\n Promise.resolve().then(function () {\n setScrollbarWidth();\n if (!_this._element) {\n return;\n }\n _this.dom.calculateHeights(_this._element);\n _this.scrollSyncService = new ScrollSyncService(_this.dom);\n _this.scrollSyncService.configure(_this.state.activeView);\n _this.forceUpdate();\n });\n };\n /**\n * @hidden\n */\n CalendarWithoutContext.prototype.componentDidUpdate = function (_, prevState) {\n setScrollbarWidth();\n if (prevState.activeView !== this.state.activeView && this.scrollSyncService) {\n this.scrollSyncService.configure(this.state.activeView);\n }\n if (this.calendarViewList) {\n (this.isActive ? this.calendarViewList.focusActiveDate : this.calendarViewList.blurActiveDate)();\n }\n this.didNavigationChange = false;\n this.oldValue = this.value;\n };\n /**\n * @hidden\n */\n CalendarWithoutContext.prototype.render = function () {\n var _this = this;\n if (this.props._ref) {\n this.props._ref(this);\n }\n var didValueChange = this.value !== null && this.oldValue !== null\n ? !isEqualDate(this.value, this.oldValue)\n : this.value !== this.oldValue;\n var activeView = viewInRange(this.state.activeView, CalendarViewEnum[this.props.bottomView !== undefined\n ? this.props.bottomView\n : CalendarWithoutContext.defaultProps.bottomView], CalendarViewEnum[this.props.topView !== undefined\n ? this.props.topView\n : CalendarWithoutContext.defaultProps.topView]);\n var value = calculateValue(this.min, this.max, this.value, this.value);\n var sanitizedValue = value ? getDate(value) : null;\n this.focusedDate = getDate(dateInRange(didValueChange && value !== null\n ? value\n : this.state.focusedDate, this.min, this.max));\n this.intl = provideIntlService(this);\n this.bus.configure(this.bottomView, this.topView);\n this.service = this.bus.service(activeView, this.intl);\n var _a = this.props.smoothScroll, smoothScroll = _a === void 0 ? Number.parseFloat(React.version) < 18 : _a;\n var rootClassNames = classNames('k-widget k-calendar k-calendar-infinite', {\n 'k-disabled': this.props.disabled,\n 'k-week-number': this.props.weekNumber,\n 'k-calendar-lg': this.props.mobileMode\n }, this.props.className);\n var calendarBody = [this.props.navigation && (React.createElement(Navigation, { key: 0, ref: function (el) { _this.Navigation = el; }, activeView: this.state.activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, onScroll: this.handleScroll, onChange: this.handleNavigationChange, service: this.service, dom: this.dom, navigationItem: this.props.navigationItem, tabIndex: this.props.tabIndex })), (React.createElement(ViewList, { key: 1, ref: function (el) { _this.calendarViewList = el; }, activeView: this.state.activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, bus: this.bus, shouldScroll: this.shouldScroll, onScroll: this.handleScroll, service: this.service, cell: this.props.cell, weekCell: this.props.weekCell, dom: this.dom, smoothScroll: smoothScroll, showWeekNumbers: this.props.weekNumber, onChange: this.handleDateChange, value: sanitizedValue, cellUID: this.cellUID, headerTitle: this.props.headerTitle, tabIndex: this.props.tabIndex }))];\n return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, className: rootClassNames, id: this.props.id || this.id, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, \"aria-disabled\": this.props.disabled, tabIndex: !this.props.disabled ? this.props.tabIndex || 0 : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, onMouseDown: this.handleMouseDown, onClick: this.handleClick }, calendarBody));\n };\n /**\n * @hidden\n */\n CalendarWithoutContext.displayName = 'Calendar';\n /**\n * @hidden\n */\n CalendarWithoutContext.propTypes = {\n className: PropTypes.string,\n defaultActiveView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n defaultValue: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n focusedDate: PropTypes.instanceOf(Date),\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n navigation: PropTypes.bool,\n smoothScroll: PropTypes.bool,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n tabIndex: PropTypes.number,\n value: PropTypes.instanceOf(Date),\n weekNumber: PropTypes.bool,\n topView: function (props, propName, componentName) {\n var prop = props[propName];\n var bottomView = props.bottomView;\n if (prop && bottomView && CalendarViewEnum[prop] < CalendarViewEnum[bottomView]) {\n return new Error(\"Invalid prop + \".concat(propName, \" suplied to \").concat(componentName, \".\\n \").concat(propName, \" can not be smaller than bottomView.\\n \"));\n }\n return null;\n },\n bottomView: function (props, propName, componentName) {\n var prop = props[propName];\n var topView = props.topView;\n if (prop && topView && CalendarViewEnum[prop] > CalendarViewEnum[topView]) {\n return new Error(\"Invalid prop + \".concat(propName, \" suplied to \").concat(componentName, \".\\n \").concat(propName, \" can not be bigger than topView.\\n \"));\n }\n return null;\n }\n };\n /**\n * @hidden\n */\n CalendarWithoutContext.defaultProps = {\n disabled: false,\n min: MIN_DATE,\n max: MAX_DATE,\n navigation: true,\n defaultActiveView: 'month',\n defaultValue: null,\n topView: 'century',\n bottomView: 'month'\n };\n return CalendarWithoutContext;\n}(React.Component));\nexport { CalendarWithoutContext };\n/**\n * Represents the PropsContext of the `Calendar` component.\n * Used for global configuration of all `Calendar` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var CalendarPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the KendoReact Calendar Component.\n *\n * Accepts properties of type [CalendarProps]({% slug api_dateinputs_calendarprops %}).\n * Obtaining the `ref` returns an object of type [CalendarHandle]({% slug api_dateinputs_calendarhandle %}).\n */\nexport var Calendar = withPropsContext(CalendarPropsContext, CalendarWithoutContext);\nCalendar.displayName = 'KendoReactCalendar';\nregisterForIntl(CalendarWithoutContext);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Button } from '@progress/kendo-react-buttons';\nimport * as React from 'react';\n/**\n * The `CalendarHeaderTitle` component is internally used for rendering the title of the current calendar view. Also used as a custom `headerTitle` for the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-headertitle) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-headertitle) components.\n *\n * * [Customizing the title for the current Calendar view]({% slug custom_rendering_calendar %}#toc-cells-inside-the-view)\n * * [Customizing the title for the current MultiViewCalendar view]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-view)\n */\nvar CalendarHeaderTitle = /** @class */ (function (_super) {\n __extends(CalendarHeaderTitle, _super);\n function CalendarHeaderTitle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return\n * Returns a `` element with the [`value`]({% slug api_dateinputs_calendarheadertitleprops %}#toc-value) of the title as a child.\n */\n CalendarHeaderTitle.prototype.render = function () {\n var _a = this.props, view = _a.view, props = __rest(_a, [\"view\"]);\n return (React.createElement(Button, __assign({ type: \"button\", fillMode: \"flat\" }, props), this.props.children));\n };\n return CalendarHeaderTitle;\n}(React.PureComponent));\nexport { CalendarHeaderTitle };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForLocalization } from '@progress/kendo-react-intl';\nimport { classNames } from '@progress/kendo-react-common';\nimport { CalendarHeaderTitle } from './CalendarHeaderTitle';\nimport { MIN_DATE, MAX_DATE } from '../../utils';\n/**\n * @hidden\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.getTitle = function () {\n if (!_this.props.currentDate) {\n return '';\n }\n var take = _this.rangeLength - 1;\n var title = _this.props.service.title(_this.props.currentDate);\n var nextDate = _this.props.service.addToDate(_this.props.currentDate, take);\n if (take < 1 || !_this.props.service.isInRange(nextDate, _this.min, _this.max)) {\n return title;\n }\n return \"\".concat(title, \" - \").concat(_this.props.service.title(nextDate));\n };\n _this.handleTitleClick = function (event) {\n if (!_this.canMoveUp) {\n return;\n }\n _this.props.bus.moveUp(_this.props.activeView, event);\n };\n return _this;\n }\n Object.defineProperty(Header.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : Header.defaultProps.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : Header.defaultProps.max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"rangeLength\", {\n get: function () {\n return this.props.rangeLength !== undefined ? this.props.rangeLength : Header.defaultProps.rangeLength;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"canMoveUp\", {\n get: function () {\n return this.props.bus.canMoveUp(this.props.activeView);\n },\n enumerable: false,\n configurable: true\n });\n Header.prototype.render = function () {\n var title = this.getTitle();\n var titleClassNames = classNames('k-calendar-title');\n var headerTitleProps = {\n children: title,\n value: title,\n view: this.props.activeView,\n className: titleClassNames,\n onClick: this.handleTitleClick,\n disabled: !this.canMoveUp\n };\n var headerTitle = this.props.headerTitle\n ? React.createElement(this.props.headerTitle, __assign({}, headerTitleProps), title)\n : React.createElement(CalendarHeaderTitle, __assign({}, headerTitleProps), title);\n return (React.createElement(\"div\", { className: classNames('k-calendar-header', {\n 'k-vstack': this.props.verticalView,\n 'k-hstack': !this.props.verticalView\n }) },\n headerTitle,\n React.createElement(\"span\", { className: \"k-spacer\" }),\n React.createElement(\"span\", { className: \"k-calendar-nav k-hstack\" }, this.props.commands)));\n };\n Header.propTypes = {\n activeView: PropTypes.number.isRequired,\n currentDate: PropTypes.instanceOf(Date).isRequired,\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n rangeLength: PropTypes.number\n };\n Header.defaultProps = {\n rangeLength: 1,\n min: MIN_DATE,\n max: MAX_DATE\n };\n return Header;\n}(React.Component));\nexport { Header };\nregisterForLocalization(Header);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { classNames } from '@progress/kendo-react-common';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { getDate } from '@progress/kendo-date-math';\nimport { messages, today } from '../../messages';\nimport { dateInRange, getToday, isInRange } from '../../utils';\nimport { MIN_DATE, MAX_DATE } from '../../utils';\nvar TodayCommand = /** @class */ (function (_super) {\n __extends(TodayCommand, _super);\n function TodayCommand() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.localization = null;\n _this.handleClick = function (syntheticEvent) {\n if (!_this.todayIsInRange) {\n return;\n }\n if (_this.props.onClick) {\n var event_1 = {\n syntheticEvent: syntheticEvent,\n nativeEvent: syntheticEvent.nativeEvent,\n value: dateInRange(getToday(), _this.min, _this.max),\n target: _this,\n isTodayClick: true\n };\n _this.props.onClick.call(undefined, event_1);\n }\n };\n return _this;\n }\n Object.defineProperty(TodayCommand.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : TodayCommand.defaultProps.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TodayCommand.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : TodayCommand.defaultProps.max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TodayCommand.prototype, \"todayIsInRange\", {\n get: function () {\n return isInRange(getToday(), getDate(this.min), getDate(this.max));\n },\n enumerable: false,\n configurable: true\n });\n TodayCommand.prototype.render = function () {\n this.localization = provideLocalizationService(this);\n var todayMessage = this.localization.toLanguageString(today, messages[today]);\n var todayClassNames = classNames('k-calendar-nav-today', {\n 'k-disabled': this.props.disabled\n });\n return (React.createElement(Button, { className: todayClassNames, onClick: this.handleClick, tabIndex: this.props.tabIndex, fillMode: 'flat' }, todayMessage));\n };\n TodayCommand.propTypes = {\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n onClick: PropTypes.func,\n disabled: PropTypes.bool\n };\n TodayCommand.defaultProps = {\n min: MIN_DATE,\n max: MAX_DATE\n };\n return TodayCommand;\n}(React.Component));\nexport { TodayCommand };\nregisterForLocalization(TodayCommand);\n","/**\n * Enumeration which represents the week days.\n */\nexport var Day;\n(function (Day) {\n /**\n * The Sunday value with an underlying `0` number value.\n */\n Day[Day[\"Sunday\"] = 0] = \"Sunday\";\n /**\n * The Monday value with an underlying `1` number value.\n */\n Day[Day[\"Monday\"] = 1] = \"Monday\";\n /**\n * The Tuesday value with an underlying `2` number value.\n */\n Day[Day[\"Tuesday\"] = 2] = \"Tuesday\";\n /**\n * The Wednesday value with an underlying `3` number value.\n */\n Day[Day[\"Wednesday\"] = 3] = \"Wednesday\";\n /**\n * The Thursday value with an underlying `4` number value.\n */\n Day[Day[\"Thursday\"] = 4] = \"Thursday\";\n /**\n * The Friday value with an underlying `5` number value.\n */\n Day[Day[\"Friday\"] = 5] = \"Friday\";\n /**\n * The Saturday value with an underlying `6` number value.\n */\n Day[Day[\"Saturday\"] = 6] = \"Saturday\";\n})(Day || (Day = {}));\n","import { Day } from './day.enum';\nimport { addDays } from './add-days';\nimport { createDate } from './create-date';\nimport { prevDayOfWeek } from './prev-day-of-week';\nimport { MS_PER_DAY } from './constants';\nimport { getDate } from './get-date';\nvar moveDateToWeekStart = function (date, weekStartDay) {\n if (weekStartDay !== Day.Monday) {\n return addDays(prevDayOfWeek(date, weekStartDay), 4);\n }\n return addDays(date, (4 - (date.getDay() || 7)));\n};\nvar calcWeekInYear = function (date, weekStartDay) {\n var firstWeekInYear = createDate(date.getFullYear(), 0, 1, -6);\n var newDate = moveDateToWeekStart(date, weekStartDay);\n var diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n var days = Math.floor(diffInMS / MS_PER_DAY);\n return 1 + Math.floor(days / 7);\n};\n/**\n * A function that returns the number of the week within a year, which is calculated in relation to the date.\n *\n * For more information, refer to the [**ISO week date**](https://en.wikipedia.org/wiki/ISO_week_date) article.\n *\n * @param date - The date used for the week number calculation.\n * @param weekStartDay - The first day of the week. By default, the first week day is Monday.\n * @returns - The number of the week within the year.\n *\n * @example\n * ```ts-no-run\n * weekInYear(new Date(2016, 0, 1)); // Week 53, 2015\n * weekInYear(new Date(2016, 0, 5)); // Week 1, 2016\n * weekInYear(new Date(2017, 0, 1)); // Week 52, 2016\n * weekInYear(new Date(2017, 0, 2)); // Week 1, 2017\n * ```\n */\nexport var weekInYear = function (date, weekStartDay) {\n if (weekStartDay === void 0) { weekStartDay = Day.Monday; }\n date = getDate(date);\n var prevWeekDate = addDays(date, -7);\n var nextWeekDate = addDays(date, 7);\n var weekNumber = calcWeekInYear(date, weekStartDay);\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n return weekNumber;\n};\n","import { Direction } from \"./direction.enum\";\nimport { dayOfWeek } from './day-of-week';\n/**\n * A function which returns a date by a specific week name. For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * prevDayOfWeek(new Date(2016, 0, 1), Day.Wednesday); // 2015-12-30, Wednesday\n * ```\n */\nexport var prevDayOfWeek = function (date, weekDay) {\n return dayOfWeek(date, weekDay, Direction.Backward);\n};\n","/**\n * The number of milliseconds in one minute.\n */\nexport var MS_PER_MINUTE = 60000;\n/**\n * The number of milliseconds in one hour.\n */\nexport var MS_PER_HOUR = 3600000;\n/**\n * The number of milliseconds in one standard day.\n */\nexport var MS_PER_DAY = 86400000;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar compareProps = function (x, y) {\n var xProps = Object.getOwnPropertyNames(x);\n var yProps = Object.getOwnPropertyNames(y);\n if (xProps.length !== yProps.length) {\n return false;\n }\n for (var i = 0; i < xProps.length; i++) {\n var propName = xProps[i];\n if (x[propName] !== y[propName]) {\n return false;\n }\n }\n return true;\n};\n/**\n * The `CalendarCell` component is internally used for rendering the items in the current view. Also be used as a custom `cell` of the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-cell) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-cell).\n *\n * * [Customizing the cells inside the Calendar view]({% slug custom_rendering_calendar %}#toc-cells-inside-the-view)\n * * [Customizing the cells inside the MultiViewCalendar view]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-view)\n */\nvar CalendarCell = /** @class */ (function (_super) {\n __extends(CalendarCell, _super);\n function CalendarCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // tslint:enable:max-line-length\n _this.handleClick = function (event) {\n var _a = _this.props, onClick = _a.onClick, value = _a.value;\n if (onClick) {\n onClick.call(undefined, value, event);\n }\n };\n _this.handleMouseEnter = function () {\n var _a = _this.props, onMouseEnter = _a.onMouseEnter, value = _a.value;\n if (onMouseEnter) {\n onMouseEnter.call(undefined, value);\n }\n };\n _this.handleMouseLeave = function () {\n var _a = _this.props, onMouseLeave = _a.onMouseLeave, value = _a.value;\n if (onMouseLeave) {\n onMouseLeave.call(undefined, value);\n }\n };\n return _this;\n }\n // Manually checking if the component needs an update\n // due to date object being compared by instance\n // and new Date object is created\n // every time and fails the shallow compare of the React.PureComponent.\n /**\n * @hidden\n */\n CalendarCell.prototype.shouldComponentUpdate = function (nextProps) {\n var _a = this.props, value = _a.value, props = __rest(_a, [\"value\"]);\n var newValue = nextProps.value, newProps = __rest(nextProps, [\"value\"]);\n var valueEqual = !(value && newValue) || value.getTime() === newValue.getTime();\n return !(valueEqual && compareProps(props, newProps));\n };\n /* eslint-disable max-len */\n /**\n * @return\n * Returns a `
  • ' + cols.reduce(function (acc, cur) { return acc + cur.outerHTML; }, '') + '', _b));\n tr.setNodeMarkup(tablePos, null, attrs);\n }\n};\nvar setCellHeight = function (tr, pos, height) {\n var $cell = tr.doc.resolve(pos);\n var row = $cell.parent;\n var rowPos = $cell.posAtIndex(0) - 1;\n tr.setNodeMarkup(rowPos, null, setNodeStyle(row.attrs, 'height', height));\n};\nvar applyOnCell = function (tr, data, cells) {\n cells.forEach(function (_a) {\n var node = _a.node, pos = _a.pos;\n var attrs = __assign({}, node.attrs);\n attrs = setNodeStyle(attrs, 'border-color', data.borderColor || '');\n attrs = setNodeStyle(attrs, 'border-style', data.borderStyle || '');\n attrs = setNodeStyle(attrs, 'border-width', typeof data.borderWidth === 'number' ? data.borderWidth + 'px' : '');\n attrs = setNodeStyle(attrs, 'padding', typeof data.cellPadding === 'number' ? data.cellPadding + 'px' : '');\n attrs = setNodeStyle(attrs, 'background-color', data.backgroundColor || '');\n attrs = setNodeStyle(attrs, 'text-align', data.alignment.x || '');\n attrs = setNodeStyle(attrs, 'vertical-align', data.alignment.y || '');\n attrs = setNodeStyle(attrs, 'white-space', data.textControl || '');\n attrs.id = data.id || null;\n attrs.class = data.className || null;\n tr.setNodeMarkup(pos, null, attrs);\n if (typeof data.cellWidth === 'number') {\n setCellWidth(tr, pos, data.cellWidth + (data.widthUnit || 'px'));\n }\n if (typeof data.cellHeight === 'number') {\n setCellHeight(tr, pos, data.cellHeight + (data.heightUnit || 'px'));\n }\n });\n};\n/**\n * @hidden\n */\nvar applyCellsData = function (state, data) {\n var tr = state.tr;\n var cells = data.applyToAll ? tableCells(state) : selectedCells(state);\n applyOnCell(tr, data, cells);\n return tr;\n};\nexport { initialCellData, cellsDefaultData, applyCellsData };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { Checkbox, ColorPicker, InputPrefix, NumericTextBox, TextBox } from '@progress/kendo-react-inputs';\nimport { AutoComplete, DropDownList } from '@progress/kendo-react-dropdowns';\nimport { Window, WindowActionsBar } from '@progress/kendo-react-dialogs';\nimport { tableAlignBottomCenterIcon, tableAlignBottomLeftIcon, tableAlignBottomRightIcon, tableAlignMiddleCenterIcon, tableAlignMiddleLeftIcon, tableAlignMiddleRightIcon, tableAlignTopCenterIcon, tableAlignTopLeftIcon, tableAlignTopRightIcon, tableAlignRemoveIcon, tableCellPropertiesIcon, textWrapIcon, parameterStringIcon } from '@progress/kendo-svg-icons';\nimport { borderStyles as borderStylesData, onDownPreventDefault, popupSettings, units, parentNode } from '../utils';\nimport { IconWrap } from '@progress/kendo-react-common';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { messages, keys } from './../../messages';\nimport { applyCellsData, cellsDefaultData } from './cellPropsUtils';\n/**\n * @hidden\n */\nexport var TableCellProperties = function (props) {\n var view = props.view, buttonProps = __rest(props, [\"view\"]);\n var _a = React.useState(false), showDialog = _a[0], setShowDialog = _a[1];\n var loc = useLocalization();\n var inTable = Boolean(view && parentNode(view.state.selection.$from, function (n) { return n.type.spec.tableRole === 'table'; }));\n var onClick = React.useCallback(function () {\n setShowDialog(true);\n }, []);\n var closeDialog = React.useCallback(function () {\n setShowDialog(false);\n view === null || view === void 0 ? void 0 : view.focus();\n }, [view]);\n var onSave = React.useCallback(function (data) {\n if (view && data) {\n var tr = applyCellsData(view.state, data);\n if (tr.docChanged) {\n view.dispatch(tr);\n }\n }\n closeDialog();\n }, [view, closeDialog]);\n return (React.createElement(React.Fragment, null,\n React.createElement(Button, __assign({ type: \"button\", title: loc.toLanguageString(keys.cellProperties, messages[keys.cellProperties]), icon: 'table-cell-properties', svgIcon: tableCellPropertiesIcon, onClick: onClick, disabled: !inTable }, onDownPreventDefault, buttonProps)),\n showDialog && view && React.createElement(TableCellPropertiesDialog, { view: view, onCancel: closeDialog, onSave: onSave })));\n};\nvar alignData = [\n { textKey: keys.cellPropertiesLeftTop, text: messages[keys.cellPropertiesLeftTop],\n icon: 'table-align-top-left', svgIcon: tableAlignTopLeftIcon, value: { x: 'left', y: 'top' } },\n { textKey: keys.cellPropertiesCenterTop, text: messages[keys.cellPropertiesCenterTop],\n icon: 'table-align-top-center', svgIcon: tableAlignTopCenterIcon, value: { x: 'center', y: 'top' } },\n { textKey: keys.cellPropertiesRightTop, text: messages[keys.cellPropertiesRightTop],\n icon: 'table-align-top-right', svgIcon: tableAlignTopRightIcon, value: { x: 'right', y: 'top' } },\n { textKey: keys.cellPropertiesLeftMiddle, text: messages[keys.cellPropertiesLeftMiddle],\n icon: 'table-align-middle-left', svgIcon: tableAlignMiddleLeftIcon, value: { x: 'left', y: 'middle' } },\n { textKey: keys.cellPropertiesCenterMiddle, text: messages[keys.cellPropertiesCenterMiddle],\n icon: 'table-align-middle-center', svgIcon: tableAlignMiddleCenterIcon, value: { x: 'center', y: 'middle' } },\n { textKey: keys.cellPropertiesRightMiddle, text: messages[keys.cellPropertiesRightMiddle],\n icon: 'table-align-middle-right', svgIcon: tableAlignMiddleRightIcon, value: { x: 'right', y: 'middle' } },\n { textKey: keys.cellPropertiesLeftBottom, text: messages[keys.cellPropertiesLeftBottom],\n icon: 'table-align-bottom-left', svgIcon: tableAlignBottomLeftIcon, value: { x: 'left', y: 'bottom' } },\n { textKey: keys.cellPropertiesCenterBottom, text: messages[keys.cellPropertiesCenterBottom],\n icon: 'table-align-bottom-center', svgIcon: tableAlignBottomCenterIcon, value: { x: 'center', y: 'bottom' } },\n { textKey: keys.cellPropertiesRightBottom, text: messages[keys.cellPropertiesRightBottom],\n icon: 'table-align-bottom-right', svgIcon: tableAlignBottomRightIcon, value: { x: 'right', y: 'bottom' } },\n { textKey: keys.cellPropertiesNoAlignment, text: messages[keys.cellPropertiesNoAlignment],\n icon: 'align-remove', svgIcon: tableAlignRemoveIcon, value: { x: '', y: '' } }\n];\nvar textControlData = [\n { textKey: keys.cellPropertiesWrap, text: messages[keys.cellPropertiesWrap],\n value: '', icon: 'text-wrap', svgIcon: textWrapIcon },\n { textKey: keys.cellPropertiesFitToCell, text: messages[keys.cellPropertiesFitToCell],\n value: 'nowrap', icon: 'parameter-string', svgIcon: parameterStringIcon }\n];\n/**\n * @hidden\n */\nexport var valueRenderWithIcon = function (element, value) {\n if (!value) {\n return element;\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(InputPrefix, null,\n React.createElement(IconWrap, { icon: value.svgIcon, name: value.icon })),\n element));\n};\n/**\n * @hidden\n */\nexport var itemRenderWithIcon = function (li, itemProps) {\n var itemChildren = (React.createElement(React.Fragment, null,\n React.createElement(InputPrefix, null,\n React.createElement(IconWrap, { icon: itemProps.dataItem.svgIcon, name: itemProps.dataItem.icon })),\n li.props.children));\n return React.cloneElement(li, li.props, itemChildren);\n};\nvar TableCellPropertiesDialog = function (props) {\n var defaults = React.useMemo(function () {\n return cellsDefaultData(props.view.state);\n }, [props.view]);\n var loc = useLocalization();\n var applyToAll = React.useRef(null);\n var applyToAllDef = defaults.applyToAll;\n var cellWidth = React.useRef(null);\n var cellWidthDef = defaults.cellWidth;\n var widthUnit = React.useRef(null);\n if (defaults.widthUnit && !units.includes(defaults.widthUnit)) {\n units.push(defaults.widthUnit);\n }\n var widthUnitDef = defaults.widthUnit || '';\n var cellHeight = React.useRef(null);\n var cellHeightDef = defaults.cellHeight;\n var heightUnit = React.useRef(null);\n if (defaults.heightUnit && !units.includes(defaults.heightUnit)) {\n units.push(defaults.heightUnit);\n }\n var heightUnitDef = defaults.heightUnit || '';\n var alignment = React.useRef(null);\n var alignmentDef = alignData.find(function (al) { return al.value.x !== undefined && defaults.alignment &&\n al.value.x === defaults.alignment.x && al.value.y === defaults.alignment.y; }) || null;\n var textControl = React.useRef(null);\n var textControlDef = textControlData.find(function (d) { return d.value === defaults.textControl; });\n var backgroundColor = React.useRef(null);\n var backgroundColorDef = defaults.backgroundColor;\n var cellPadding = React.useRef(null);\n var cellPaddingDef = defaults.cellPadding;\n var borderWidth = React.useRef(null);\n var borderWidthDef = defaults.borderWidth;\n var borderColor = React.useRef(null);\n var borderColorDef = defaults.borderColor;\n var borderStyle = React.useRef(null);\n var borderStyleDef = borderStylesData.find(function (s) { return s.value === defaults.borderStyle; });\n var id = React.useRef(null);\n var idDef = defaults.id;\n var className = React.useRef(null);\n var classNameDef = defaults.className;\n var onSave = React.useCallback(function () {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;\n var data = {\n applyToAll: Boolean((_b = (_a = applyToAll.current) === null || _a === void 0 ? void 0 : _a.element) === null || _b === void 0 ? void 0 : _b.checked),\n cellWidth: ((_c = cellWidth.current) === null || _c === void 0 ? void 0 : _c.value) || null,\n widthUnit: ((_d = widthUnit.current) === null || _d === void 0 ? void 0 : _d.value) || '',\n cellHeight: ((_e = cellHeight.current) === null || _e === void 0 ? void 0 : _e.value) || null,\n heightUnit: ((_f = heightUnit.current) === null || _f === void 0 ? void 0 : _f.value) || '',\n alignment: (_h = (_g = alignment.current) === null || _g === void 0 ? void 0 : _g.value) === null || _h === void 0 ? void 0 : _h.value,\n textControl: (_k = (_j = textControl.current) === null || _j === void 0 ? void 0 : _j.value) === null || _k === void 0 ? void 0 : _k.value,\n backgroundColor: (_l = backgroundColor.current) === null || _l === void 0 ? void 0 : _l.value,\n cellPadding: typeof ((_m = cellPadding.current) === null || _m === void 0 ? void 0 : _m.value) === 'number' ? (_o = cellPadding.current) === null || _o === void 0 ? void 0 : _o.value : null,\n borderWidth: typeof ((_p = borderWidth.current) === null || _p === void 0 ? void 0 : _p.value) === 'number' ? (_q = borderWidth.current) === null || _q === void 0 ? void 0 : _q.value : null,\n borderColor: (_r = borderColor.current) === null || _r === void 0 ? void 0 : _r.value,\n borderStyle: ((_t = (_s = borderStyle.current) === null || _s === void 0 ? void 0 : _s.value) === null || _t === void 0 ? void 0 : _t.value) || null,\n id: String(((_u = id.current) === null || _u === void 0 ? void 0 : _u.value) || ''),\n className: String(((_v = className.current) === null || _v === void 0 ? void 0 : _v.value) || '')\n };\n props.onSave.call(undefined, data);\n }, [props.onSave]);\n var content = (React.createElement(\"div\", { className: \"k-form k-form-md\" },\n React.createElement(\"fieldset\", { className: \"k-form-fieldset\" },\n React.createElement(\"div\", { className: \"k-form-layout k-d-grid k-grid-cols-4 k-gap-x-4\" },\n React.createElement(\"div\", { className: \"k-form-field k-col-span-full\" },\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(\"span\", { className: \"k-checkbox-wrap\" },\n React.createElement(Checkbox, { ref: applyToAll, defaultChecked: applyToAllDef })),\n React.createElement(\"label\", { className: \"k-checkbox-label\" }, loc.toLanguageString(keys.cellPropertiesApplyToAllCells, messages[keys.cellPropertiesApplyToAllCells])))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.cellPropertiesWidth, messages[keys.cellPropertiesWidth])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: cellWidth, defaultValue: cellWidthDef, min: 0, placeholder: loc.toLanguageString(keys.sizeAuto, messages[keys.sizeAuto]) }),\n React.createElement(\"div\", { className: \"k-form-hint\" }, loc.toLanguageString(keys.cellPropertiesApplyToColumn, messages[keys.cellPropertiesApplyToColumn])))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, \"\\u00A0\"),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(AutoComplete, { ref: widthUnit, defaultValue: widthUnitDef, data: units, popupSettings: popupSettings }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.cellPropertiesHeight, messages[keys.cellPropertiesHeight])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: cellHeight, defaultValue: cellHeightDef, min: 0, placeholder: loc.toLanguageString(keys.sizeAuto, messages[keys.sizeAuto]) }),\n React.createElement(\"div\", { className: \"k-form-hint\" }, loc.toLanguageString(keys.cellPropertiesApplyToRow, messages[keys.cellPropertiesApplyToRow])))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, \"\\u00A0\"),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(AutoComplete, { ref: heightUnit, defaultValue: heightUnitDef, data: units, popupSettings: popupSettings }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.cellPropertiesAlignment, messages[keys.cellPropertiesAlignment])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(DropDownList, { ref: alignment, defaultValue: alignmentDef, data: alignData.map(function (i) { return (__assign(__assign({}, i), { text: loc.toLanguageString(i.textKey, i.text) })); }), textField: 'text', dataItemKey: 'text', popupSettings: popupSettings, valueRender: valueRenderWithIcon, itemRender: itemRenderWithIcon }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.cellPropertiesTextControl, messages[keys.cellPropertiesTextControl])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(DropDownList, { ref: textControl, defaultValue: textControlDef, data: textControlData.map(function (i) { return (__assign(__assign({}, i), { text: loc.toLanguageString(i.textKey, i.text) })); }), textField: 'text', dataItemKey: 'value', popupSettings: popupSettings, valueRender: valueRenderWithIcon, itemRender: itemRenderWithIcon }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.cellPropertiesCellPadding, messages[keys.cellPropertiesCellPadding])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: cellPadding, defaultValue: cellPaddingDef, min: 0 }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.cellPropertiesBackground, messages[keys.cellPropertiesBackground])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(ColorPicker, { ref: backgroundColor, defaultValue: backgroundColorDef }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.cellPropertiesBorderWidth, messages[keys.cellPropertiesBorderWidth])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: borderWidth, defaultValue: borderWidthDef, min: 0 }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.cellPropertiesBorderColor, messages[keys.cellPropertiesBorderColor])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(ColorPicker, { ref: borderColor, defaultValue: borderColorDef }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.cellPropertiesBorderStyle, messages[keys.cellPropertiesBorderStyle])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(DropDownList, { ref: borderStyle, defaultValue: borderStyleDef, popupSettings: popupSettings, data: borderStylesData, textField: 'text', dataItemKey: 'value' }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-full\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.cellPropertiesId, messages[keys.cellPropertiesId])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(TextBox, { ref: id, defaultValue: idDef }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-full\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.cellPropertiesCssClass, messages[keys.cellPropertiesCssClass])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(TextBox, { ref: className, defaultValue: classNameDef })))))));\n var actionButtons = [(React.createElement(Button, { themeColor: 'primary', key: \"save\", onClick: onSave }, loc.toLanguageString(keys.cellPropertiesSave, messages[keys.cellPropertiesSave]))), (React.createElement(Button, { onClick: props.onCancel, key: \"cancel\" }, loc.toLanguageString(keys.cellPropertiesCancel, messages[keys.cellPropertiesCancel])))];\n return (React.createElement(Window, { className: 'k-editor-window k-editor-table-wizard-window', title: loc.toLanguageString(keys.cellProperties, messages[keys.cellProperties]), onClose: props.onCancel, key: \"dialog\", style: { userSelect: 'none' }, width: 408, height: 587, modal: true, minimizeButton: function () { return null; }, maximizeButton: function () { return null; }, resizable: false },\n content,\n React.createElement.apply(React, __spreadArray([WindowActionsBar, { layout: 'start' }], actionButtons, false))));\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { CellSelection, TableMap, fragmentToHtml, pmDocToFragment, addColumnAfter, addRowAfter, Selection, TextSelection, parseContent } from '@progress/kendo-editor-common';\nimport { deleteColumnCmd, deleteRowCmd } from '../tableEdit';\nimport { nodeSize, parseStyle, setNodeStyle, selectedCells, tableCells } from './utils';\nimport { parentNode } from '../utils';\n/**\n * @hidden\n */\nvar initialTableData = {\n rows: 0,\n columns: 0,\n width: null,\n widthUnit: '',\n height: null,\n heightUnit: '',\n position: null,\n textAlign: '',\n cellPadding: null,\n cellSpacing: null,\n backgroundColor: undefined,\n borderWidth: null,\n borderColor: undefined,\n borderStyle: null,\n collapseBorders: false,\n id: '',\n className: '',\n caption: '',\n captionAlignment: null,\n captionPosition: null,\n headerRows: 0,\n headerColumns: 0,\n associateHeaders: 'none'\n};\n/**\n * @hidden\n */\nvar tablePositionStyles = {\n left: { 'margin-left': '', 'margin-right': 'auto' },\n center: { 'margin-left': 'auto', 'margin-right': 'auto' },\n right: { 'margin-left': 'auto', 'margin-right': '' },\n '': {}\n};\nvar toCellsMap = function (map) {\n var cells = [];\n for (var h = 0; h < map.height; h++) {\n var start = h * map.width;\n var end = start + map.width;\n cells.push(map.map.slice(start, end));\n }\n return cells;\n};\nvar headerCellsCount = function (table, map) {\n var headerRows = 0;\n var headerColumns = 0;\n var cells = toCellsMap(map);\n cells.forEach(function (row) {\n var headerCells = true;\n row.forEach(function (cellPos) {\n var cell = table.nodeAt(cellPos);\n if (cell && cell.type.name !== 'table_header') {\n headerCells = false;\n }\n });\n if (headerCells) {\n headerRows++;\n }\n });\n for (var col = 0; col < map.width; col++) {\n var headerCells = true;\n for (var row = 0; row < map.height; row++) {\n var cellPos = cells[row] && cells[row][col];\n var cell = typeof cellPos === 'number' && table.nodeAt(cellPos);\n if (cell && cell.type.name !== 'table_header') {\n headerCells = false;\n }\n }\n if (headerCells) {\n headerColumns++;\n }\n }\n return { rows: headerRows, columns: headerColumns };\n};\nvar tableCellsPadding = function (table) {\n var padding = new Set();\n table.content.forEach(function (row) {\n row.content.forEach(function (cell) {\n padding.add(parseStyle(cell.attrs.style).padding || '');\n });\n });\n return padding.size === 1 ? Array.from(padding)[0] : '';\n};\nvar associateHeadersType = function (table) {\n var useScope = true;\n var useIds = true;\n table.content.forEach(function (row) {\n row.content.forEach(function (cell) {\n var th = cell.type.name === 'table_header';\n var td = cell.type.name === 'table_cell';\n if (th && !cell.attrs.scope) {\n useScope = false;\n }\n if ((th && !cell.attrs.id) || (td && !cell.attrs.headers)) {\n useIds = false;\n }\n });\n });\n return useScope ? 'scope' : (useIds ? 'id' : 'none');\n};\n/**\n * @hidden\n */\nvar tableDefaultData = function (state) {\n var _a, _b, _c;\n var cells = selectedCells(state);\n var $pos = state.selection.$from;\n var table = cells.length ? parentNode($pos, function (n) { return n.type.spec.tableRole === 'table'; }) : null;\n if (!table) {\n return initialTableData;\n }\n var tableParent = parentNode($pos, function (n) { return n.type.name === 'table_wrapper'; });\n var captionStr = '';\n var captionStyles = {};\n var parentStyles = {};\n if (tableParent) {\n parentStyles = parseStyle(tableParent.node.attrs.style);\n tableParent.node.content.forEach(function (node) {\n if (node.type.name === 'table_caption_external') {\n var fr = pmDocToFragment(node);\n captionStr = fragmentToHtml(fr);\n captionStr = captionStr === '' ? '' : captionStr;\n captionStyles = parseStyle(node.attrs.style);\n }\n });\n }\n var styles = parseStyle(((_a = table.node.attrs) === null || _a === void 0 ? void 0 : _a.style) || '');\n var map = TableMap.get(table.node);\n var pos = (parentStyles['margin-left'] === 'auto' && parentStyles['margin-right'] === 'auto') ? 'center' :\n parentStyles['margin-right'] === 'auto' ? 'left' :\n parentStyles['margin-left'] === 'auto' ? 'right' : null;\n var headerCells = headerCellsCount(table.node, map);\n var cellsPadding = tableCellsPadding(table.node);\n return __assign(__assign(__assign(__assign(__assign(__assign({}, initialTableData), { columns: map.width, rows: map.height }), nodeSize(table.node, 'width')), (tableParent && /%/.test(parentStyles.width || '') ? nodeSize(tableParent.node, 'width') : {})), nodeSize(table.node, 'height')), { textAlign: styles['text-align'] || '', position: pos || null, cellPadding: cellsPadding ? parseFloat(cellsPadding) : null, cellSpacing: styles['border-spacing'] ? parseFloat(styles['border-spacing']) : null, backgroundColor: styles['background-color'], borderWidth: styles['border-width'] ? parseFloat(styles['border-width']) : null, borderColor: styles['border-color'], borderStyle: styles['border-style'] || null, collapseBorders: styles['border-collapse'] === 'collapse', caption: captionStr || undefined, captionAlignment: captionStyles['text-align'] || '', captionPosition: captionStyles['caption-side'] || null, headerRows: headerCells.rows, headerColumns: headerCells.columns, associateHeaders: (headerCells.rows || headerCells.columns) ? associateHeadersType(table.node) : 'none', id: ((_b = table.node.attrs) === null || _b === void 0 ? void 0 : _b.id) || '', className: ((_c = table.node.attrs) === null || _c === void 0 ? void 0 : _c.class) || '' });\n};\nvar lastCell = function (table) {\n var lastRow = table.lastChild;\n var cell = lastRow.lastChild;\n return { node: cell, pos: table.content.size - cell.nodeSize };\n};\nvar addTableNodes = function (state, tablePos, table, toAdd, command) {\n var last = lastCell(table);\n var cellPos = tablePos + last.pos;\n var cell = state.doc.nodeAt(cellPos);\n if (!cell) {\n return state;\n }\n var res = state.doc.resolve(cellPos);\n var sel = new CellSelection(res, res);\n var selTr = state.tr.setSelection(sel);\n var resultState = state.apply(selTr);\n for (var i = 0; i < toAdd; i++) {\n command(resultState, function (tr) {\n resultState = resultState.apply(tr);\n });\n }\n return resultState;\n};\nvar removeTableNodes = function (state, tablePos, toDelete, command) {\n var resultState = state;\n for (var i = 0; i < toDelete; i++) {\n var table = resultState.doc.nodeAt(tablePos);\n if (table) {\n var last = lastCell(table);\n var cellPos = tablePos + last.pos;\n var res = resultState.doc.resolve(cellPos);\n var selection = new CellSelection(res, res);\n var selTr = resultState.tr.setSelection(selection);\n resultState = resultState.apply(selTr);\n command(resultState, function (tr) {\n resultState = resultState.apply(tr);\n });\n }\n }\n return resultState;\n};\nvar resizeTable = function (state, tablePos, rows, columns) {\n var nextState = state;\n var table = nextState.doc.nodeAt(tablePos);\n if (!table) {\n return nextState;\n }\n var map = TableMap.get(table);\n if (map.width === columns && map.height === rows) {\n return nextState;\n }\n if (columns > map.width) {\n nextState = addTableNodes(nextState, tablePos, table, columns - map.width, addColumnAfter);\n }\n else if (columns < map.width) {\n nextState = removeTableNodes(nextState, tablePos, map.width - columns, deleteColumnCmd);\n }\n table = nextState.doc.nodeAt(tablePos);\n if (!table) {\n return nextState;\n }\n map = TableMap.get(table);\n if (rows > map.height) {\n nextState = addTableNodes(nextState, tablePos, table, rows - map.height, addRowAfter);\n }\n else if (rows < map.height) {\n nextState = removeTableNodes(nextState, tablePos, map.height - rows, deleteRowCmd);\n }\n return nextState;\n};\nvar setTableStyles = function (state, data, tablePos) {\n var table = state.doc.nodeAt(tablePos);\n if (!table) {\n return state;\n }\n var attrs = __assign({}, table.attrs);\n var shouldSetWidth = data.width !== null && (data.widthUnit !== '%' || (!data.caption && !data.position));\n attrs = setNodeStyle(attrs, 'width', shouldSetWidth ? data.width + data.widthUnit : '');\n attrs = setNodeStyle(attrs, 'height', data.height !== null ? data.height + data.heightUnit : '');\n attrs = setNodeStyle(attrs, 'text-align', data.textAlign || '');\n attrs = setNodeStyle(attrs, 'background-color', data.backgroundColor || '');\n attrs = setNodeStyle(attrs, 'border-width', data.borderWidth ? data.borderWidth + 'px' : '');\n attrs = setNodeStyle(attrs, 'border-style', data.borderStyle || '');\n attrs = setNodeStyle(attrs, 'border-color', data.borderColor || '');\n attrs = setNodeStyle(attrs, 'border-spacing', data.cellSpacing !== null ? data.cellSpacing + 'px' : '');\n if (data.cellSpacing !== null) {\n attrs = setNodeStyle(attrs, 'border-collapse', 'unset');\n }\n else {\n attrs = setNodeStyle(attrs, 'border-collapse', data.collapseBorders ? 'collapse' : '');\n }\n var posStyles = tablePositionStyles[data.position || ''] || {};\n Object.keys(posStyles).forEach(function (style) {\n attrs = setNodeStyle(attrs, style, posStyles[style]);\n });\n attrs.id = data.id || null;\n attrs.class = data.className || null;\n var tr = state.tr.setNodeMarkup(tablePos, null, attrs);\n state = state.apply(tr);\n return state;\n};\nvar setCellType = function (state, cell, pos, type, attrs) {\n if (cell.type.name !== type.name || Object.keys(attrs).length > 0) {\n var tr = state.tr.setNodeMarkup(pos, type, __assign(__assign({}, cell.attrs), attrs));\n return state.apply(tr);\n }\n return state;\n};\nvar resetId = function (cell, attrs) {\n if (/^cell-[0-9]+-[0-9]+$/.test(cell.attrs.id || '')) {\n attrs.id = null;\n }\n};\nvar setTableHeaderCells = function (state, data, tablePos) {\n var table = state.doc.nodeAt(tablePos);\n var map = table && TableMap.get(table);\n if (!table || !map) {\n return state;\n }\n var cells = toCellsMap(map);\n var newState = state;\n var _a = state.schema.nodes, table_header = _a.table_header, table_cell = _a.table_cell;\n var id = String(new Date().getTime());\n var ids = [];\n var cellId = function (row, col) {\n var result = \"cell-\".concat(row).concat(col, \"-\").concat(id);\n if (!ids[row]) {\n ids.push([]);\n }\n if (!ids[row][col]) {\n ids[row].push([]);\n }\n ids[row][col] = result;\n return result;\n };\n var headers = function (row, col, colHeader, rowHeader) {\n var result = [];\n if (rowHeader) {\n for (var r = 0; r < row; r++) {\n if (ids[r] && ids[r][col]) {\n result.push(ids[r][col]);\n }\n }\n }\n if (colHeader) {\n for (var c = 0; c < col; c++) {\n if (ids[row] && ids[row][c]) {\n result.push(ids[row][c]);\n }\n }\n }\n return result.join(' ');\n };\n cells.forEach(function (row, rowIndex) {\n row.forEach(function (cellPos, cellIndex) {\n var cell = table.nodeAt(cellPos);\n if (cell) {\n var colHeader = cellIndex < data.headerColumns;\n var rowHeader = rowIndex < data.headerRows;\n var attrs = __assign({}, cell.attrs);\n resetId(cell, attrs);\n attrs.headers = null;\n attrs.scope = null;\n if (rowHeader || colHeader) {\n if (data.associateHeaders === 'scope') {\n attrs.scope = rowHeader ? 'col' : 'row';\n }\n if (data.associateHeaders === 'id') {\n attrs.id = cellId(rowIndex, cellIndex);\n if (cellIndex > 0 || rowIndex > 0) {\n attrs.headers = headers(rowIndex, cellIndex, colHeader, rowHeader) || null;\n }\n }\n newState = setCellType(newState, cell, tablePos + cellPos + 1, table_header, attrs);\n }\n else {\n if (data.associateHeaders === 'id') {\n attrs.headers = headers(rowIndex, cellIndex, data.headerColumns > 0, data.headerRows > 0) || null;\n }\n newState = setCellType(newState, cell, tablePos + cellPos + 1, table_cell, attrs);\n }\n }\n });\n });\n return newState;\n};\nvar setTablePosition = function (state, wrapperNode, wrapperPos, styles) {\n var attrs = __assign({}, wrapperNode.attrs);\n attrs = setNodeStyle(attrs, 'margin-left', '');\n attrs = setNodeStyle(attrs, 'margin-right', '');\n Object.keys(styles || {}).forEach(function (s) {\n attrs = setNodeStyle(attrs, s, (styles || {})[s] || '');\n });\n return state.apply(state.tr.setNodeMarkup(wrapperPos, null, attrs));\n};\nvar parseCaptionContent = function (content, schema) {\n var doc = parseContent('

    ' + content + '

    ', schema);\n return doc.content.firstChild.content;\n};\nvar createCaption = function (data, schema) {\n if (!data.caption) {\n return;\n }\n var captAttrs = { caption: '', style: 'display: table-caption' };\n if (data.captionAlignment) {\n captAttrs = setNodeStyle(captAttrs, 'text-align', data.captionAlignment);\n }\n if (data.captionPosition) {\n captAttrs = setNodeStyle(captAttrs, 'caption-side', data.captionPosition);\n }\n var captionContent = parseCaptionContent(data.caption, schema);\n var captionNode = (captionContent && schema.nodes.table_caption_external.createAndFill(captAttrs, captionContent)) || undefined;\n return captionNode;\n};\nvar hasCaption = function (wrapperNode) {\n return wrapperNode.firstChild && wrapperNode.firstChild.type.name === 'table_caption_external';\n};\nvar setTableCaption = function (state, wrapperNode, wrapperPos, data) {\n var nextState = state;\n var captionNode;\n var captContentPos = wrapperPos + 2;\n var captPos = wrapperPos + 1;\n var schema = nextState.schema;\n if (hasCaption(wrapperNode)) {\n captionNode = wrapperNode.firstChild;\n if (data.caption) {\n var captionContent = parseCaptionContent(data.caption, schema);\n nextState = nextState.apply(nextState.tr.replaceWith(captContentPos, captContentPos + captionNode.content.size, captionContent));\n captionNode = nextState.doc.nodeAt(captPos);\n if (captionNode) {\n var captAttrs = __assign({}, captionNode.attrs);\n captAttrs = setNodeStyle(captAttrs, 'text-align', data.captionAlignment || '');\n captAttrs = setNodeStyle(captAttrs, 'caption-side', data.captionPosition || '');\n nextState = nextState.apply(nextState.tr.setNodeAttribute(captPos, 'style', captAttrs.style));\n }\n }\n else {\n nextState = nextState.apply(nextState.tr.deleteRange(captContentPos, captContentPos + captionNode.content.size));\n }\n }\n else {\n captionNode = createCaption(data, schema);\n if (captionNode) {\n nextState = nextState.apply(nextState.tr.replaceWith(captPos, captPos, captionNode));\n }\n }\n return nextState;\n};\nvar updateWrapper = function (state, data, tablePos, tableWrapper, tableWrapperPos) {\n var result = {\n state: state,\n pos: tablePos\n };\n if (!tableWrapper && (data.position || data.caption)) {\n var wrapperAttrs_1 = { table: '', style: 'display: table' };\n var children = [];\n var position = data.position;\n var posStyles_1 = position && tablePositionStyles[position];\n if (posStyles_1) {\n Object.keys(posStyles_1).forEach(function (styleName) {\n wrapperAttrs_1 = setNodeStyle(wrapperAttrs_1, styleName, posStyles_1[styleName] || '');\n });\n }\n if (typeof data.width === 'number' && data.widthUnit === '%') {\n wrapperAttrs_1 = setNodeStyle(wrapperAttrs_1, 'width', data.width + data.widthUnit);\n }\n var captionNode = createCaption(data, state.schema);\n if (captionNode) {\n children.push(captionNode);\n }\n var table = state.doc.nodeAt(tablePos);\n children.push(table);\n var createdWrapper = state.schema.nodes.table_wrapper.createAndFill(wrapperAttrs_1, children);\n if (createdWrapper) {\n var tr = state.tr.replaceWith(tablePos, tablePos + table.content.size, createdWrapper);\n state = state.apply(tr);\n result = { state: state, pos: tablePos };\n }\n }\n else if (tableWrapper && (data.position || data.caption || (!data.caption && hasCaption(tableWrapper.node)))) {\n state = setTablePosition(state, tableWrapper.node, tableWrapperPos, data.position && tablePositionStyles[data.position]);\n state = setTableCaption(state, tableWrapper.node, tableWrapperPos, data);\n result = { state: state, pos: tableWrapperPos };\n }\n else if (tableWrapper && !(data.position || data.caption)) {\n result = { state: state, node: tableWrapper.node, pos: state.selection.$from.start(tableWrapper.depth) - 1 };\n }\n else {\n result = { state: state, pos: tablePos };\n }\n var wrapper = tableWrapper && result.state.doc.nodeAt(tableWrapperPos);\n if (wrapper) {\n var attrs = void 0;\n if (typeof data.width === 'number' && data.widthUnit === '%') {\n attrs = setNodeStyle(wrapper.attrs, 'width', data.width + data.widthUnit);\n }\n else if (data.widthUnit !== '%' && /%/.test(parseStyle(wrapper.attrs.style || '').width || '')) {\n attrs = setNodeStyle(wrapper.attrs, 'width', '');\n }\n if (attrs) {\n result.state = result.state.apply(result.state.tr.setNodeMarkup(tableWrapperPos, null, attrs));\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nvar applyTableData = function (state, data) {\n var $from = state.selection.$from;\n var table = parentNode($from, function (n) { return n.type.spec.tableRole === 'table'; });\n if (!table) {\n return;\n }\n var tablePos = $from.start(table.depth) - 1;\n var nextState = resizeTable(state, tablePos, data.rows, data.columns);\n if (!nextState) {\n return;\n }\n var transaction = nextState.tr;\n tableCells(nextState).forEach(function (cell) {\n var attrs = __assign({}, cell.node.attrs);\n attrs = setNodeStyle(attrs, 'padding', typeof data.cellPadding === 'number' ? data.cellPadding + 'px' : '');\n transaction.setNodeMarkup(cell.pos, null, attrs);\n });\n nextState = nextState.apply(transaction);\n nextState = setTableStyles(nextState, data, tablePos);\n nextState = setTableHeaderCells(nextState, data, tablePos);\n var tableParent = parentNode($from, function (n) { return n.type.name === 'table_wrapper'; });\n var tableParentPos = $from.start((tableParent === null || tableParent === void 0 ? void 0 : tableParent.depth) || 0) - 1;\n var result = updateWrapper(nextState, data, tablePos, tableParent, tableParentPos);\n nextState = result.state;\n var from = result.pos;\n var node = nextState.doc.nodeAt(result.pos);\n if (!node) {\n return;\n }\n var to = from + (tableParent || table).node.content.size;\n var tr = state.tr.replaceWith(from, to, node);\n var atEnd = Selection.atEnd(node);\n var selection = TextSelection.create(tr.doc, from + atEnd.to + 1);\n tr.setSelection(selection);\n return tr;\n};\nexport { initialTableData, tablePositionStyles, tableDefaultData, applyTableData };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { Checkbox, ColorPicker, NumericTextBox, TextBox } from '@progress/kendo-react-inputs';\nimport { AutoComplete, DropDownList } from '@progress/kendo-react-dropdowns';\nimport { Window, WindowActionsBar } from '@progress/kendo-react-dialogs';\nimport { TabStrip, TabStripTab } from '@progress/kendo-react-layout';\nimport { tableAlignMiddleCenterIcon, tableAlignMiddleLeftIcon, tableAlignMiddleRightIcon, tableAlignRemoveIcon, tablePropertiesIcon, tablePositionStartIcon, tablePositionCenterIcon, tablePositionEndIcon, positionTopIcon, positionBottomIcon } from '@progress/kendo-svg-icons';\nimport { borderStyles, onDownPreventDefault, popupSettings, units, parentNode } from './../utils';\nimport { itemRenderWithIcon, valueRenderWithIcon } from './tableCellProperties';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { messages, keys } from './../../messages';\nimport { applyTableData, initialTableData, tableDefaultData, tablePositionStyles } from './tablePropsUtils';\n/**\n * @hidden\n */\nexport var TableProperties = function (props) {\n var view = props.view, buttonProps = __rest(props, [\"view\"]);\n var loc = useLocalization();\n var _a = React.useState(false), showDialog = _a[0], setShowDialog = _a[1];\n var inTable = Boolean(view && parentNode(view.state.selection.$from, function (n) { return n.type.spec.tableRole === 'table'; }));\n var onClick = React.useCallback(function () {\n setShowDialog(true);\n }, []);\n var closeDialog = React.useCallback(function () {\n setShowDialog(false);\n view === null || view === void 0 ? void 0 : view.focus();\n }, [view]);\n var onSave = React.useCallback(function (data) {\n if (view && data) {\n var tr = applyTableData(view.state, data);\n if (tr) {\n view.dispatch(tr);\n }\n }\n closeDialog();\n }, [view, closeDialog]);\n return (React.createElement(React.Fragment, null,\n React.createElement(Button, __assign({ type: \"button\", title: loc.toLanguageString(keys.tableProperties, messages[keys.tableProperties]), icon: 'table-properties', svgIcon: tablePropertiesIcon, onClick: onClick, disabled: !inTable }, onDownPreventDefault, buttonProps)),\n showDialog && React.createElement(TablePropertiesDialog, { onClose: closeDialog, onSave: onSave, view: view })));\n};\nvar alignData = [\n { textKey: keys.tablePropertiesAlignLeft, text: messages[keys.tablePropertiesAlignLeft],\n value: 'left', icon: 'table-align-middle-left', svgIcon: tableAlignMiddleLeftIcon },\n { textKey: keys.tablePropertiesAlignCenter, text: messages[keys.tablePropertiesAlignCenter],\n value: 'center', icon: 'table-align-middle-center', svgIcon: tableAlignMiddleCenterIcon },\n { textKey: keys.tablePropertiesAlignRight, text: messages[keys.tablePropertiesAlignRight],\n value: 'right', icon: 'table-align-middle-right', svgIcon: tableAlignMiddleRightIcon },\n { textKey: keys.tablePropertiesNoAlignment, text: messages[keys.tablePropertiesNoAlignment],\n value: '', icon: 'align-remove', svgIcon: tableAlignRemoveIcon }\n];\nvar tablePosition = [{\n textKey: keys.tablePropertiesLeft,\n text: messages[keys.tablePropertiesLeft],\n value: 'left',\n style: {},\n icon: 'table-position-left',\n svgIcon: tablePositionStartIcon\n }, {\n textKey: keys.tablePropertiesCenter,\n text: messages[keys.tablePropertiesCenter],\n value: 'center',\n style: {},\n icon: 'table-position-center',\n svgIcon: tablePositionCenterIcon\n }, {\n textKey: keys.tablePropertiesRight,\n text: messages[keys.tablePropertiesRight],\n value: 'right',\n style: {},\n icon: 'table-position-right',\n svgIcon: tablePositionEndIcon\n }].map(function (p) { return (__assign(__assign({}, p), { style: tablePositionStyles[p.value] })); });\nvar captionPositionData = [{\n textKey: keys.tablePropertiesTop,\n text: messages[keys.tablePropertiesTop],\n value: 'top',\n icon: 'position-top',\n svgIcon: positionTopIcon\n }, {\n textKey: keys.tablePropertiesBottom,\n text: messages[keys.tablePropertiesBottom],\n value: 'bottom',\n icon: 'position-bottom',\n svgIcon: positionBottomIcon\n }];\nvar associateHeadersData = [\n { textKey: keys.tablePropertiesNone, text: messages[keys.tablePropertiesNone], value: 'none' },\n { textKey: keys.tablePropertiesUsingScopeAttribute, text: messages[keys.tablePropertiesUsingScopeAttribute], value: 'scope' },\n { textKey: keys.tablePropertiesUsingIdAttributes, text: messages[keys.tablePropertiesUsingIdAttributes], value: 'id' }\n];\nvar TablePropertiesDialog = function (props) {\n var defaults = React.useMemo(function () {\n var state = props.view && props.view.state;\n var data = state ? tableDefaultData(state) : initialTableData;\n return data;\n }, [props.view]);\n var loc = useLocalization();\n var _a = React.useState(0), selected = _a[0], setSelected = _a[1];\n var onSelect = React.useCallback(function (event) {\n setSelected(event.selected);\n }, []);\n // General tab refs\n var rows = React.useRef(null);\n var columns = React.useRef(null);\n var width = React.useRef(null);\n var height = React.useRef(null);\n var cellSpacing = React.useRef(null);\n var cellPadding = React.useRef(null);\n var borderWidth = React.useRef(null);\n var widthUnit = React.useRef(null);\n var heightUnit = React.useRef(null);\n var position = React.useRef(null);\n var alignment = React.useRef(null);\n var borderStyle = React.useRef(null);\n var backgroundColor = React.useRef(null);\n var borderColor = React.useRef(null);\n var collapseBorders = React.useRef(null);\n // Advanced tab refs\n var id = React.useRef(null);\n var className = React.useRef(null);\n var caption = React.useRef(null);\n var headerRows = React.useRef(null);\n var headerColumns = React.useRef(null);\n var captionAlignment = React.useRef(null);\n var captionPosition = React.useRef(null);\n var associateHeaders = React.useRef(null);\n var onSave = React.useCallback(function () {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;\n var data = {\n rows: ((_a = rows.current) === null || _a === void 0 ? void 0 : _a.value) || 0,\n columns: ((_b = columns.current) === null || _b === void 0 ? void 0 : _b.value) || 0,\n width: width.current ? width.current.value : null,\n height: height.current ? height.current.value : null,\n cellSpacing: cellSpacing.current ? cellSpacing.current.value : null,\n cellPadding: cellPadding.current ? cellPadding.current.value : null,\n borderWidth: borderWidth.current ? borderWidth.current.value : null,\n widthUnit: ((_c = widthUnit.current) === null || _c === void 0 ? void 0 : _c.value) || '',\n heightUnit: ((_d = heightUnit.current) === null || _d === void 0 ? void 0 : _d.value) || '',\n position: ((_f = (_e = position.current) === null || _e === void 0 ? void 0 : _e.value) === null || _f === void 0 ? void 0 : _f.value) || null,\n textAlign: ((_g = alignment.current) === null || _g === void 0 ? void 0 : _g.value) ? alignment.current.value.value : null,\n borderStyle: ((_h = borderStyle.current) === null || _h === void 0 ? void 0 : _h.value) ? borderStyle.current.value.value : null,\n backgroundColor: (_j = backgroundColor.current) === null || _j === void 0 ? void 0 : _j.value,\n borderColor: (_k = borderColor.current) === null || _k === void 0 ? void 0 : _k.value,\n collapseBorders: Boolean((_m = (_l = collapseBorders.current) === null || _l === void 0 ? void 0 : _l.element) === null || _m === void 0 ? void 0 : _m.checked),\n id: String(((_o = id.current) === null || _o === void 0 ? void 0 : _o.value) || ''),\n className: String(((_p = className.current) === null || _p === void 0 ? void 0 : _p.value) || ''),\n caption: String(((_q = caption.current) === null || _q === void 0 ? void 0 : _q.value) || ''),\n headerRows: ((_r = headerRows.current) === null || _r === void 0 ? void 0 : _r.value) || 0,\n headerColumns: ((_s = headerColumns.current) === null || _s === void 0 ? void 0 : _s.value) || 0,\n captionAlignment: ((_t = captionAlignment.current) === null || _t === void 0 ? void 0 : _t.value) ? captionAlignment.current.value.value : null,\n captionPosition: ((_u = captionPosition.current) === null || _u === void 0 ? void 0 : _u.value) ? captionPosition.current.value.value : null,\n associateHeaders: ((_v = associateHeaders.current) === null || _v === void 0 ? void 0 : _v.value) ? associateHeaders.current.value.value : 'none'\n };\n props.onSave.call(undefined, data);\n }, [props.onSave]);\n var general = (React.createElement(\"div\", { className: \"k-form k-form-md\" },\n React.createElement(\"fieldset\", { className: \"k-form-fieldset\" },\n React.createElement(\"div\", { className: \"k-form-layout k-d-grid k-grid-cols-4 k-gap-x-4\" },\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesRows, messages[keys.tablePropertiesRows])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: rows, defaultValue: defaults.rows, min: 1 }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesColumns, messages[keys.tablePropertiesColumns])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: columns, defaultValue: defaults.columns, min: 1 }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesWidth, messages[keys.tablePropertiesWidth])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: width, defaultValue: defaults.width, min: 0, placeholder: loc.toLanguageString(keys.sizeAuto, messages[keys.sizeAuto]) }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, \"\\u00A0\"),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(AutoComplete, { ref: widthUnit, defaultValue: defaults.widthUnit, data: units, popupSettings: popupSettings }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesHeight, messages[keys.tablePropertiesHeight])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: height, defaultValue: defaults.height, min: 0, placeholder: loc.toLanguageString(keys.sizeAuto, messages[keys.sizeAuto]) }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, \"\\u00A0\"),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(AutoComplete, { ref: heightUnit, defaultValue: defaults.heightUnit, data: units.filter(function (x) { return x !== '%'; }), popupSettings: popupSettings }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesPosition, messages[keys.tablePropertiesPosition])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(DropDownList, { ref: position, defaultValue: tablePosition.find(function (p) { return p.value === defaults.position; }), popupSettings: popupSettings, data: tablePosition.map(function (i) { return (__assign(__assign({}, i), { text: loc.toLanguageString(i.textKey, i.text) })); }), textField: 'text', dataItemKey: 'value', valueRender: valueRenderWithIcon, itemRender: itemRenderWithIcon }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesAlignment, messages[keys.tablePropertiesAlignment])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(DropDownList, { ref: alignment, defaultValue: alignData.find(function (a) { return a.value === defaults.textAlign; }), data: alignData.map(function (i) { return (__assign(__assign({}, i), { text: loc.toLanguageString(i.textKey, i.text) })); }), textField: 'text', dataItemKey: 'value', popupSettings: popupSettings, valueRender: valueRenderWithIcon, itemRender: itemRenderWithIcon }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesCellSpacing, messages[keys.tablePropertiesCellSpacing])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: cellSpacing, defaultValue: defaults.cellSpacing, placeholder: loc.toLanguageString(keys.sizeAuto, messages[keys.sizeAuto]), min: 0 }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesCellPadding, messages[keys.tablePropertiesCellPadding])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: cellPadding, defaultValue: defaults.cellPadding, placeholder: loc.toLanguageString(keys.sizeAuto, messages[keys.sizeAuto]), min: 0 }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-full\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesTableBackground, messages[keys.tablePropertiesTableBackground])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(ColorPicker, { ref: backgroundColor, defaultValue: defaults.backgroundColor }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesBorderWidth, messages[keys.tablePropertiesBorderWidth])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: borderWidth, defaultValue: defaults.borderWidth, min: 0 }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesBorderColor, messages[keys.tablePropertiesBorderColor])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(ColorPicker, { ref: borderColor, defaultValue: defaults.borderColor }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesBorderStyle, messages[keys.tablePropertiesBorderStyle])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(DropDownList, { ref: borderStyle, defaultValue: borderStyles.find(function (s) { return s.value === defaults.borderStyle; }), popupSettings: popupSettings, data: borderStyles.map(function (i) { return (__assign(__assign({}, i), { text: loc.toLanguageString(i.textKey, i.text) })); }), textField: 'text', dataItemKey: 'value' }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-full\" },\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(Checkbox, { ref: collapseBorders, className: \"k-checkbox-wrap\", label: loc.toLanguageString(keys.tablePropertiesCollapseBorders, messages[keys.tablePropertiesCollapseBorders]), defaultChecked: defaults.collapseBorders })))))));\n var advanced = (React.createElement(\"div\", { className: \"k-form k-form-md\" },\n React.createElement(\"fieldset\", { className: \"k-form-fieldset\" },\n React.createElement(\"div\", { className: \"k-form-layout k-d-grid\" },\n React.createElement(\"div\", { className: \"k-form-field\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesId, messages[keys.tablePropertiesId])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(TextBox, { ref: id, defaultValue: defaults.id }))),\n React.createElement(\"div\", { className: \"k-form-field\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesCssClass, messages[keys.tablePropertiesCssClass])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(TextBox, { ref: className, defaultValue: defaults.className }))),\n React.createElement(\"fieldset\", { className: \"k-form-fieldset\" },\n React.createElement(\"legend\", { className: \"k-form-legend\" }, loc.toLanguageString(keys.tablePropertiesAccessibility, messages[keys.tablePropertiesAccessibility])),\n React.createElement(\"div\", { className: \"k-d-grid k-grid-cols-4 k-gap-x-4\" },\n React.createElement(\"div\", { className: \"k-form-field k-col-span-full\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesCaption, messages[keys.tablePropertiesCaption])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(TextBox, { ref: caption, defaultValue: defaults.caption }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesCaptionPosition, messages[keys.tablePropertiesCaptionPosition])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(DropDownList, { ref: captionPosition, defaultValue: captionPositionData.find(function (i) { return i.value === defaults.captionPosition; }), data: captionPositionData.map(function (i) { return (__assign(__assign({}, i), { text: loc.toLanguageString(i.textKey, i.text) })); }), popupSettings: popupSettings, textField: 'text', dataItemKey: 'value', valueRender: valueRenderWithIcon, itemRender: itemRenderWithIcon }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesCaptionAlignment, messages[keys.tablePropertiesCaptionAlignment])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(DropDownList, { ref: captionAlignment, defaultValue: alignData.find(function (i) { return i.value === defaults.captionAlignment; }), data: alignData.map(function (i) { return (__assign(__assign({}, i), { text: loc.toLanguageString(i.textKey, i.text) })); }), popupSettings: popupSettings, textField: 'text', dataItemKey: 'value', valueRender: valueRenderWithIcon, itemRender: itemRenderWithIcon }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesHeaderRows, messages[keys.tablePropertiesHeaderRows])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: headerRows, defaultValue: defaults.headerRows, min: 0 }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-1\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesHeaderCols, messages[keys.tablePropertiesHeaderCols])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(NumericTextBox, { ref: headerColumns, defaultValue: defaults.headerColumns, min: 0 }))),\n React.createElement(\"div\", { className: \"k-form-field k-col-span-2\" },\n React.createElement(\"label\", { className: \"k-label k-form-label\" }, loc.toLanguageString(keys.tablePropertiesAssociateHeaders, messages[keys.tablePropertiesAssociateHeaders])),\n React.createElement(\"div\", { className: \"k-form-field-wrap\" },\n React.createElement(DropDownList, { ref: associateHeaders, defaultValue: associateHeadersData.find(function (i) { return i.value === defaults.associateHeaders; }), data: associateHeadersData.map(function (i) { return (__assign(__assign({}, i), { text: loc.toLanguageString(i.textKey, i.text) })); }), popupSettings: popupSettings, textField: 'text', dataItemKey: 'value' })))))))));\n var content = (React.createElement(TabStrip, { selected: selected, onSelect: onSelect, animation: false, keepTabsMounted: true },\n React.createElement(TabStripTab, { title: loc.toLanguageString(keys.tablePropertiesGeneral, messages[keys.tablePropertiesGeneral]) }, general),\n React.createElement(TabStripTab, { title: loc.toLanguageString(keys.tablePropertiesAdvanced, messages[keys.tablePropertiesAdvanced]) }, advanced)));\n var actionButtons = [(React.createElement(Button, { themeColor: 'primary', key: \"save\", onClick: onSave }, loc.toLanguageString(keys.tablePropertiesSave, messages[keys.tablePropertiesSave]))), (React.createElement(Button, { onClick: props.onClose, key: \"cancel\" }, loc.toLanguageString(keys.tablePropertiesCancel, messages[keys.tablePropertiesCancel])))];\n return (React.createElement(Window, { className: 'k-editor-window k-editor-table-wizard-window', title: loc.toLanguageString(keys.tableProperties, messages[keys.tableProperties]), onClose: props.onClose, key: \"dialog\", style: { userSelect: 'none' }, width: 480, height: 630, modal: true, minimizeButton: function () { return null; }, maximizeButton: function () { return null; }, resizable: false },\n content,\n React.createElement.apply(React, __spreadArray([WindowActionsBar, { layout: 'start' }], actionButtons, false))));\n};\n","import { Editor } from './Editor';\nimport { EditorTools } from './tools/main';\nimport { EditorToolsSettings } from './config/toolsSettings';\nimport { EditorUtils } from './utils';\nimport { EditorDialogs } from './dialogs/main';\nimport { editorPropsKey } from './utils/props-key';\nimport { nodes, marks } from './config/schema';\nimport { \n// prosemirror-state\nSelection, SelectionRange, TextSelection, NodeSelection, AllSelection, EditorState, Plugin, PluginKey, Transaction, \n// prosemirror-view\nDecoration, DecorationSet, EditorView, \n// prosemirror-model\nNode, ResolvedPos, NodeRange, Fragment, Slice, ReplaceError, Mark, Schema, NodeType, MarkType, ContentMatch, DOMParser, DOMSerializer, \n// prosemirror-transform\nTransform, Step, StepResult, joinPoint, canJoin, canSplit, insertPoint, dropPoint, liftTarget, findWrapping, StepMap, MapResult, Mapping, AddMarkStep, RemoveMarkStep, ReplaceStep, ReplaceAroundStep, replaceStep, \n// prosemirror-commands\ndeleteSelection, joinBackward, selectNodeBackward, joinForward, selectNodeForward, joinUp, joinDown, lift, newlineInCode, exitCode, createParagraphNear, liftEmptyBlock, splitBlock, splitBlockKeepMarks, selectParentNode, selectAll, wrapIn, setBlockType, toggleMark, autoJoin, chainCommands, pcBaseKeymap, macBaseKeymap, baseKeymap, \n// prosemirror-history\nhistory, undo, redo, undoDepth, redoDepth, \n// prosemirror-inputrules\nInputRule, inputRules, undoInputRule, emDash, ellipsis, openDoubleQuote, closeDoubleQuote, openSingleQuote, closeSingleQuote, smartQuotes, wrappingInputRule, textblockTypeInputRule, \n// prosemirror-keymap\nkeymap, keydownHandler, \n// prosemirror-schema-list\norderedList, bulletList, listItem, addListNodes, wrapInList, splitListItem, liftListItem, sinkListItem, \n// prosemirror-dropcursor\ndropCursor, \n// prosemirror-gapcursor\ngapCursor, \n// prosemirror-tables\ntableEditing, fixTables, fixTablesKey, cellAround, isInTable, selectionCell, moveCellForward, inSameTable, findCell, colCount, nextCell, removeColSpan, addColSpan, columnIsHeader, tableNodes, tableNodeTypes, CellSelection, TableMap, tableEditingKey, columnResizing, columnResizingPluginKey, updateColumnsOnResize, selectedRect, addColumn, addColumnBefore, addColumnAfter, deleteColumn, rowIsHeader, addRow, addRowBefore, addRowAfter, deleteRow, mergeCells, splitCell, splitCellWithType, setCellAttr, toggleHeader, toggleHeaderRow, toggleHeaderColumn, toggleHeaderCell, goToNextCell, deleteTable, getHtml, parseContent } from '@progress/kendo-editor-common';\n/**\n * An object containing the content of ProseMirror packages used at the Editor component.\n *\n * \"prosemirror-state\",\n * \"prosemirror-view\",\n * \"prosemirror-model\",\n * \"prosemirror-transform\",\n * \"prosemirror-commands\",\n * \"prosemirror-keymap\",\n * \"prosemirror-tables\",\n * \"prosemirror-schema-list\",\n * \"prosemirror-history\",\n * \"prosemirror-inputrules\",\n * \"prosemirror-dropcursor\",\n * \"prosemirror-gapcursor\"\n */\nexport var ProseMirror = {\n // prosemirror-state\n Selection: Selection,\n SelectionRange: SelectionRange,\n TextSelection: TextSelection,\n NodeSelection: NodeSelection,\n AllSelection: AllSelection,\n EditorState: EditorState,\n Plugin: Plugin,\n PluginKey: PluginKey,\n Transaction: Transaction,\n // prosemirror-view\n Decoration: Decoration,\n DecorationSet: DecorationSet,\n EditorView: EditorView,\n // prosemirror-model\n Node: Node,\n ResolvedPos: ResolvedPos,\n NodeRange: NodeRange,\n Fragment: Fragment,\n Slice: Slice,\n ReplaceError: ReplaceError,\n Mark: Mark,\n Schema: Schema,\n NodeType: NodeType,\n MarkType: MarkType,\n ContentMatch: ContentMatch,\n DOMParser: DOMParser,\n DOMSerializer: DOMSerializer,\n // prosemirror-transform\n Transform: Transform,\n Step: Step,\n StepResult: StepResult,\n joinPoint: joinPoint,\n canJoin: canJoin,\n canSplit: canSplit,\n insertPoint: insertPoint,\n dropPoint: dropPoint,\n liftTarget: liftTarget,\n findWrapping: findWrapping,\n StepMap: StepMap,\n MapResult: MapResult,\n Mapping: Mapping,\n AddMarkStep: AddMarkStep,\n RemoveMarkStep: RemoveMarkStep,\n ReplaceStep: ReplaceStep,\n ReplaceAroundStep: ReplaceAroundStep,\n replaceStep: replaceStep,\n // prosemirror-commands\n deleteSelection: deleteSelection,\n joinBackward: joinBackward,\n selectNodeBackward: selectNodeBackward,\n joinForward: joinForward,\n selectNodeForward: selectNodeForward,\n joinUp: joinUp,\n joinDown: joinDown,\n lift: lift,\n newlineInCode: newlineInCode,\n exitCode: exitCode,\n createParagraphNear: createParagraphNear,\n liftEmptyBlock: liftEmptyBlock,\n splitBlock: splitBlock,\n splitBlockKeepMarks: splitBlockKeepMarks,\n selectParentNode: selectParentNode,\n selectAll: selectAll,\n wrapIn: wrapIn,\n setBlockType: setBlockType,\n toggleMark: toggleMark,\n autoJoin: autoJoin,\n chainCommands: chainCommands,\n pcBaseKeymap: pcBaseKeymap,\n macBaseKeymap: macBaseKeymap,\n baseKeymap: baseKeymap,\n // prosemirror-history\n history: history,\n undo: undo,\n redo: redo,\n undoDepth: undoDepth,\n redoDepth: redoDepth,\n // prosemirror-inputrules\n InputRule: InputRule,\n inputRules: inputRules,\n undoInputRule: undoInputRule,\n emDash: emDash,\n ellipsis: ellipsis,\n openDoubleQuote: openDoubleQuote,\n closeDoubleQuote: closeDoubleQuote,\n openSingleQuote: openSingleQuote,\n closeSingleQuote: closeSingleQuote,\n smartQuotes: smartQuotes,\n wrappingInputRule: wrappingInputRule,\n textblockTypeInputRule: textblockTypeInputRule,\n // prosemirror-keymap\n keymap: keymap,\n keydownHandler: keydownHandler,\n // prosemirror-schema-list\n orderedList: orderedList,\n bulletList: bulletList,\n listItem: listItem,\n addListNodes: addListNodes,\n wrapInList: wrapInList,\n splitListItem: splitListItem,\n liftListItem: liftListItem,\n sinkListItem: sinkListItem,\n // prosemirror-dropcursor\n dropCursor: dropCursor,\n // prosemirror-gapcursor\n gapCursor: gapCursor,\n // prosemirror-tables\n tableEditing: tableEditing,\n fixTables: fixTables,\n fixTablesKey: fixTablesKey,\n cellAround: cellAround,\n isInTable: isInTable,\n selectionCell: selectionCell,\n moveCellForward: moveCellForward,\n inSameTable: inSameTable,\n findCell: findCell,\n colCount: colCount,\n nextCell: nextCell,\n removeColSpan: removeColSpan,\n addColSpan: addColSpan,\n columnIsHeader: columnIsHeader,\n tableNodes: tableNodes,\n tableNodeTypes: tableNodeTypes,\n CellSelection: CellSelection,\n TableMap: TableMap,\n tableEditingKey: tableEditingKey,\n columnResizing: columnResizing,\n columnResizingPluginKey: columnResizingPluginKey,\n updateColumnsOnResize: updateColumnsOnResize,\n selectedRect: selectedRect,\n addColumn: addColumn,\n addColumnBefore: addColumnBefore,\n addColumnAfter: addColumnAfter,\n deleteColumn: deleteColumn,\n rowIsHeader: rowIsHeader,\n addRow: addRow,\n addRowBefore: addRowBefore,\n addRowAfter: addRowAfter,\n deleteRow: deleteRow,\n mergeCells: mergeCells,\n splitCell: splitCell,\n splitCellWithType: splitCellWithType,\n setCellAttr: setCellAttr,\n toggleHeader: toggleHeader,\n toggleHeaderRow: toggleHeaderRow,\n toggleHeaderColumn: toggleHeaderColumn,\n toggleHeaderCell: toggleHeaderCell,\n goToNextCell: goToNextCell,\n deleteTable: deleteTable\n};\nexport { Editor, EditorTools, EditorToolsSettings, EditorUtils, EditorDialogs, nodes, marks, getHtml, parseContent, editorPropsKey };\n","var _a;\n/**\n * @hidden\n */\nvar bold = 'editor.bold';\n/**\n * @hidden\n */\nvar italic = 'editor.italic';\n/**\n * @hidden\n */\nvar underline = 'editor.underline';\n/**\n * @hidden\n */\nvar strikethrough = 'editor.strikethrough';\n/**\n * @hidden\n */\nvar subscript = 'editor.subscript';\n/**\n * @hidden\n */\nvar superscript = 'editor.superscript';\n/**\n * @hidden\n */\nvar insertHyperlink = 'editor.hyperlink';\n/**\n * @hidden\n */\nvar insertFile = 'editor.insertFile';\n/**\n * @hidden\n */\nvar print = 'editor.print';\n/**\n * @hidden\n */\nvar selectAll = 'editor.selectAll';\n/**\n * @hidden\n */\nvar cleanFormatting = 'editor.cleanFormatting';\n/**\n * @hidden\n */\nvar pdf = 'editor.pdf';\n/**\n * @hidden\n */\nvar foregroundColor = 'editor.foregroundColor';\n/**\n * @hidden\n */\nvar backgroundColor = 'editor.backgroundColor';\n/**\n * @hidden\n */\nvar createTable = 'editor.createTable';\n/**\n * @hidden\n */\nvar createTableHint = 'editor.insertTableHint';\n/**\n * @hidden\n */\nvar addRowBefore = 'editor.addRowBefore';\n/**\n * @hidden\n */\nvar addRowAfter = 'editor.addRowAfter';\n/**\n * @hidden\n */\nvar addColumnBefore = 'editor.addColumnBefore';\n/**\n * @hidden\n */\nvar addColumnAfter = 'editor.addColumnAfter';\n/**\n * @hidden\n */\nvar deleteRow = 'editor.deleteRow';\n/**\n * @hidden\n */\nvar deleteColumn = 'editor.deleteColumn';\n/**\n * @hidden\n */\nvar deleteTable = 'editor.deleteTable';\n/**\n * @hidden\n */\nvar mergeCells = 'editor.mergeCells';\n/**\n * @hidden\n */\nvar splitCell = 'editor.splitCell';\n/**\n * @hidden\n */\nvar insertHyperlinkDialogTitle = 'editor.hyperlink-dialog-title';\n/**\n * @hidden\n */\nvar insertHyperlinkAddress = 'editor.hyperlink-dialog-content-address';\n/**\n * @hidden\n */\nvar insertHyperlinkTitle = 'editor.hyperlink-dialog-content-title';\n/**\n * @hidden\n */\nvar insertHyperlinkNewWindow = 'editor.hyperlink-dialog-content-newwindow';\n/**\n * @hidden\n */\nvar insertHyperlinkCancel = 'editor.hyperlink-dialog-cancel';\n/**\n * @hidden\n */\nvar insertHyperlinkInsert = 'editor.hyperlink-dialog-insert';\n/**\n * @hidden\n */\nvar insertFileDialogTitle = 'editor.insertfile-dialog-title';\n/**\n * @hidden\n */\nvar insertFileAddress = 'editor.insertfile-dialog-content-address';\n/**\n * @hidden\n */\nvar insertFileTitle = 'editor.insertfile-dialog-content-title';\n/**\n * @hidden\n */\nvar insertFileCancel = 'editor.insertfile-dialog-cancel';\n/**\n * @hidden\n */\nvar insertFileInsert = 'editor.insertfile-dialog-insert';\n/**\n * @hidden\n */\nvar insertImage = 'editor.image';\n/**\n * @hidden\n */\nvar insertImageDialogTitle = 'editor.image-dialog-title';\n/**\n * @hidden\n */\nvar insertImageAddress = 'editor.image-address';\n/**\n * @hidden\n */\nvar insertImageTitle = 'editor.image-title';\n/**\n * @hidden\n */\nvar insertImageAltText = 'editor.image-altText';\n/**\n * @hidden\n */\nvar insertImageWidth = 'editor.image-width';\n/**\n * @hidden\n */\nvar insertImageHeight = 'editor.image-height';\n/**\n * @hidden\n */\nvar insertImageCancel = 'editor.image-cancel';\n/**\n * @hidden\n */\nvar insertImageInsert = 'editor.image-insert';\n/**\n * @hidden\n */\nvar viewHtml = 'editor.viewHtml';\n/**\n * @hidden\n */\nvar viewHtmlDialogTitle = 'editor.viewHtml-dialog-title';\n/**\n * @hidden\n */\nvar viewHtmlCancel = 'editor.viewHtml-cancel';\n/**\n * @hidden\n */\nvar viewHtmlUpdate = 'editor.viewHtml-update';\n/**\n * @hidden\n */\nvar unlink = 'editor.unlink';\n/**\n * @hidden\n */\nvar undo = 'editor.undo';\n/**\n * @hidden\n */\nvar redo = 'editor.redo';\n/**\n * @hidden\n */\nvar fontSize = 'editor.fontSize';\n/**\n * @hidden\n */\nvar fontName = 'editor.fontName';\n/**\n * @hidden\n */\nvar format = 'editor.format';\n/**\n * @hidden\n */\nvar alignLeft = 'editor.alignLeft';\n/**\n * @hidden\n */\nvar alignRight = 'editor.alignRight';\n/**\n * @hidden\n */\nvar alignCenter = 'editor.alignCenter';\n/**\n * @hidden\n */\nvar alignJustify = 'editor.alignJustify';\n/**\n * @hidden\n */\nvar indent = 'editor.indent';\n/**\n * @hidden\n */\nvar outdent = 'editor.outdent';\n/**\n * @hidden\n */\nvar orderedList = 'editor.orderedList';\n/**\n * @hidden\n */\nvar bulletList = 'editor.bulletList';\n/**\n * @hidden\n */\nvar findReplaceToolTitle = 'editor.findReplace-tool-title';\n/**\n * @hidden\n */\nvar findReplaceDialogTitle = 'editor.findReplace-dialog-title';\n/**\n * @hidden\n */\nvar findReplaceTabFind = 'editor.findReplace-tab-find';\n/**\n * @hidden\n */\nvar findReplaceTabReplace = 'editor.findReplace-tab-replace';\n/**\n * @hidden\n */\nvar findReplaceFindWhat = 'editor.findReplace-findWhat';\n/**\n * @hidden\n */\nvar findReplaceReplaceWith = 'editor.findReplace-replaceWith';\n/**\n * @hidden\n */\nvar findReplaceReplace = 'editor.findReplace-replace';\n/**\n * @hidden\n */\nvar findReplaceReplaceAll = 'editor.findReplace-replaceAll';\n/**\n * @hidden\n */\nvar findReplaceMatchCase = 'editor.findReplace-matchCase';\n/**\n * @hidden\n */\nvar findReplaceMatchWord = 'editor.findReplace-matchWord';\n/**\n * @hidden\n */\nvar findReplaceMatchCyclic = 'editor.findReplace-matchCyclic';\n/**\n * @hidden\n */\nvar findReplaceUseRegExp = 'editor.findReplace-useRegExp';\n/**\n * @hidden\n */\nvar findReplacePrevMatch = 'editor.findReplace-prevMatch';\n/**\n * @hidden\n */\nvar findReplaceNextMatch = 'editor.findReplace-nextMatch';\n/**\n * @hidden\n */\nvar findReplaceMatches = 'editor.findReplace-matches';\n/**\n * @hidden\n */\nvar iframeTitle = 'editor.iframeTitle';\n/**\n * @hidden\n */\nvar foreColorLabel = 'editorTools.foreColorLabel';\n/**\n * @hidden\n */\nvar backColorLabel = 'editorTools.backColorLabel';\n/**\n * @hidden\n */\nvar cellProperties = 'editor.cellProperties';\n/**\n * @hidden\n */\nvar cellPropertiesLeftTop = 'editor.cellPropertiesLeftTop';\n/**\n * @hidden\n */\nvar cellPropertiesCenterTop = 'editor.cellPropertiesCenterTop';\n/**\n * @hidden\n */\nvar cellPropertiesRightTop = 'editor.cellPropertiesRightTop';\n/**\n * @hidden\n */\nvar cellPropertiesLeftMiddle = 'editor.cellPropertiesLeftMiddle';\n/**\n * @hidden\n */\nvar cellPropertiesCenterMiddle = 'editor.cellPropertiesCenterMiddle';\n/**\n * @hidden\n */\nvar cellPropertiesRightMiddle = 'editor.cellPropertiesRightMiddle';\n/**\n * @hidden\n */\nvar cellPropertiesLeftBottom = 'editor.cellPropertiesLeftBottom';\n/**\n * @hidden\n */\nvar cellPropertiesCenterBottom = 'editor.cellPropertiesCenterBottom';\n/**\n * @hidden\n */\nvar cellPropertiesRightBottom = 'editor.cellPropertiesRightBottom';\n/**\n * @hidden\n */\nvar cellPropertiesNoAlignment = 'editor.cellPropertiesNoAlignment';\n/**\n * @hidden\n */\nvar cellPropertiesWrap = 'editor.cellPropertiesWrap';\n/**\n * @hidden\n */\nvar cellPropertiesFitToCell = 'editor.cellPropertiesFitToCell';\n/**\n * @hidden\n */\nvar cellPropertiesApplyToAllCells = 'editor.cellPropertiesApplyToAllCells';\n/**\n * @hidden\n */\nvar cellPropertiesWidth = 'editor.cellPropertiesWidth';\n/**\n * @hidden\n */\nvar cellPropertiesApplyToColumn = 'editor.cellPropertiesApplyToColumn';\n/**\n * @hidden\n */\nvar cellPropertiesHeight = 'editor.cellPropertiesHeight';\n/**\n * @hidden\n */\nvar cellPropertiesApplyToRow = 'editor.cellPropertiesApplyToRow';\n/**\n * @hidden\n */\nvar cellPropertiesAlignment = 'editor.cellPropertiesAlignment';\n/**\n * @hidden\n */\nvar cellPropertiesTextControl = 'editor.cellPropertiesTextControl';\n/**\n * @hidden\n */\nvar cellPropertiesCellPadding = 'editor.cellPropertiesCellPadding';\n/**\n * @hidden\n */\nvar cellPropertiesBackground = 'editor.cellPropertiesBackground';\n/**\n * @hidden\n */\nvar cellPropertiesBorderWidth = 'editor.cellPropertiesBorderWidth';\n/**\n * @hidden\n */\nvar cellPropertiesBorderColor = 'editor.cellPropertiesBorderColor';\n/**\n * @hidden\n */\nvar cellPropertiesBorderStyle = 'editor.cellPropertiesBorderStyle';\n/**\n * @hidden\n */\nvar cellPropertiesId = 'editor.cellPropertiesId';\n/**\n * @hidden\n */\nvar cellPropertiesCssClass = 'editor.cellPropertiesCssClass';\n/**\n * @hidden\n */\nvar cellPropertiesSave = 'editor.cellPropertiesSave';\n/**\n * @hidden\n */\nvar cellPropertiesCancel = 'editor.cellPropertiesCancel';\n/**\n * @hidden\n */\nvar tableProperties = 'editor.tableProperties';\n/**\n * @hidden\n */\nvar tablePropertiesAlignLeft = 'editor.tablePropertiesAlignLeft';\n/**\n * @hidden\n */\nvar tablePropertiesAlignCenter = 'editor.tablePropertiesAlignCenter';\n/**\n * @hidden\n */\nvar tablePropertiesAlignRight = 'editor.tablePropertiesAlignRight';\n/**\n * @hidden\n */\nvar tablePropertiesNoAlignment = 'editor.tablePropertiesNoAlignment';\n/**\n * @hidden\n */\nvar tablePropertiesLeft = 'editor.tablePropertiesLeft';\n/**\n * @hidden\n */\nvar tablePropertiesCenter = 'editor.tablePropertiesCenter';\n/**\n * @hidden\n */\nvar tablePropertiesRight = 'editor.tablePropertiesRight';\n/**\n * @hidden\n */\nvar tablePropertiesTop = 'editor.tablePropertiesTop';\n/**\n * @hidden\n */\nvar tablePropertiesBottom = 'editor.tablePropertiesBottom';\n/**\n * @hidden\n */\nvar tablePropertiesNone = 'editor.tablePropertiesNone';\n/**\n * @hidden\n */\nvar tablePropertiesUsingScopeAttribute = 'editor.tablePropertiesUsingScopeAttribute';\n/**\n * @hidden\n */\nvar tablePropertiesUsingIdAttributes = 'editor.tablePropertiesUsingIdAttributes';\n/**\n * @hidden\n */\nvar tablePropertiesRows = 'editor.tablePropertiesRows';\n/**\n * @hidden\n */\nvar tablePropertiesColumns = 'editor.tablePropertiesColumns';\n/**\n * @hidden\n */\nvar tablePropertiesWidth = 'editor.tablePropertiesWidth';\n/**\n * @hidden\n */\nvar tablePropertiesHeight = 'editor.tablePropertiesHeight';\n/**\n * @hidden\n */\nvar tablePropertiesPosition = 'editor.tablePropertiesPosition';\n/**\n * @hidden\n */\nvar tablePropertiesAlignment = 'editor.tablePropertiesAlignment';\n/**\n * @hidden\n */\nvar tablePropertiesCellSpacing = 'editor.tablePropertiesCellSpacing';\n/**\n * @hidden\n */\nvar tablePropertiesCellPadding = 'editor.tablePropertiesCellPadding';\n/**\n * @hidden\n */\nvar tablePropertiesTableBackground = 'editor.tablePropertiesTableBackground';\n/**\n * @hidden\n */\nvar tablePropertiesBorderWidth = 'editor.tablePropertiesBorderWidth';\n/**\n * @hidden\n */\nvar tablePropertiesBorderColor = 'editor.tablePropertiesBorderColor';\n/**\n * @hidden\n */\nvar tablePropertiesBorderStyle = 'editor.tablePropertiesBorderStyle';\n/**\n * @hidden\n */\nvar tablePropertiesCollapseBorders = 'editor.tablePropertiesCollapseBorders';\n/**\n * @hidden\n */\nvar tablePropertiesId = 'editor.tablePropertiesID';\n/**\n * @hidden\n */\nvar tablePropertiesCssClass = 'editor.tablePropertiesCssClass';\n/**\n * @hidden\n */\nvar tablePropertiesAccessibility = 'editor.tablePropertiesAccessibility';\n/**\n * @hidden\n */\nvar tablePropertiesCaption = 'editor.tablePropertiesCaption';\n/**\n * @hidden\n */\nvar tablePropertiesCaptionPosition = 'editor.tablePropertiesCaptionPosition';\n/**\n * @hidden\n */\nvar tablePropertiesCaptionAlignment = 'editor.tablePropertiesCaptionAlignment';\n/**\n * @hidden\n */\nvar tablePropertiesHeaderRows = 'editor.tablePropertiesHeaderRows';\n/**\n * @hidden\n */\nvar tablePropertiesHeaderCols = 'editor.tablePropertiesHeaderCols';\n/**\n * @hidden\n */\nvar tablePropertiesAssociateHeaders = 'editor.tablePropertiesAssociateHeaders';\n/**\n * @hidden\n */\nvar tablePropertiesGeneral = 'editor.tablePropertiesGeneral';\n/**\n * @hidden\n */\nvar tablePropertiesAdvanced = 'editor.tablePropertiesAdvanced';\n/**\n * @hidden\n */\nvar tablePropertiesSave = 'editor.tablePropertiesSave';\n/**\n * @hidden\n */\nvar tablePropertiesCancel = 'editor.tablePropertiesCancel';\n/**\n * @hidden\n */\nvar borderStyleNone = 'editor.borderStyleNone';\n/**\n * @hidden\n */\nvar borderStyleSolid = 'editor.borderStyleSolid';\n/**\n * @hidden\n */\nvar borderStyleDotted = 'editor.borderStyleDotted';\n/**\n * @hidden\n */\nvar borderStyleDashed = 'editor.borderStyleDashed';\n/**\n * @hidden\n */\nvar borderStyleDouble = 'editor.borderStyleDouble';\n/**\n * @hidden\n */\nvar borderStyleGroove = 'editor.borderStyleGroove';\n/**\n * @hidden\n */\nvar borderStyleRidge = 'editor.borderStyleRidge';\n/**\n * @hidden\n */\nvar borderStyleInset = 'editor.borderStyleInset';\n/**\n * @hidden\n */\nvar borderStyleOutset = 'editor.borderStyleOutset';\n/**\n * @hidden\n */\nvar borderStyleInitial = 'editor.borderStyleInitial';\n/**\n * @hidden\n */\nvar borderStyleInherit = 'editor.borderStyleInherit';\n/**\n * @hidden\n */\nvar borderStyleHidden = 'editor.borderStyleHidden';\n/**\n * @hidden\n */\nvar sizeAuto = 'editor.sizeAuto';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[bold] = 'Bold',\n _a[italic] = 'Italic',\n _a[underline] = 'Underline',\n _a[strikethrough] = 'Strikethrough',\n _a[subscript] = 'Subscript',\n _a[superscript] = 'Superscript',\n _a[unlink] = 'Remove hyperlink',\n _a[undo] = 'Undo',\n _a[redo] = 'Redo',\n _a[fontSize] = 'Font Size',\n _a[fontName] = 'Font Name',\n _a[format] = 'Format',\n _a[alignLeft] = 'Align text left',\n _a[alignRight] = 'Align text right',\n _a[alignCenter] = 'Center text',\n _a[alignJustify] = 'Justify',\n _a[indent] = 'Indent',\n _a[outdent] = 'Outdent',\n _a[orderedList] = 'Insert ordered list',\n _a[bulletList] = 'Insert unordered list',\n _a[print] = 'Print',\n _a[selectAll] = 'Select All',\n _a[cleanFormatting] = 'Clean formatting',\n _a[pdf] = 'Export as PDF',\n _a[foregroundColor] = 'Color',\n _a[backgroundColor] = 'Background color',\n // Tables\n _a[createTable] = 'Create a table',\n _a[createTableHint] = 'Create a {0} x {1} table',\n _a[addRowBefore] = 'Add row above',\n _a[addRowAfter] = 'Add row below',\n _a[addColumnBefore] = 'Add column on the left',\n _a[addColumnAfter] = 'Add column on the right',\n _a[deleteRow] = 'Delete row',\n _a[deleteColumn] = 'Delete column',\n _a[deleteTable] = 'Delete table',\n _a[mergeCells] = 'Merge cells',\n _a[splitCell] = 'Split cell',\n // Insert Link\n _a[insertHyperlink] = 'Insert hyperlink',\n _a[insertHyperlinkDialogTitle] = 'Insert hyperlink',\n _a[insertHyperlinkAddress] = 'Web address',\n _a[insertHyperlinkTitle] = 'Title',\n _a[insertHyperlinkNewWindow] = 'Open link in new window',\n _a[insertHyperlinkCancel] = 'Cancel',\n _a[insertHyperlinkInsert] = 'Insert',\n // Insert File\n _a[insertFile] = 'Insert file',\n _a[insertFileDialogTitle] = 'Insert file',\n _a[insertFileAddress] = 'Web address',\n _a[insertFileTitle] = 'Title',\n _a[insertFileCancel] = 'Cancel',\n _a[insertFileInsert] = 'Insert',\n // Insert Image\n _a[insertImage] = 'Insert image',\n _a[insertImageDialogTitle] = 'Insert image',\n _a[insertImageAddress] = 'Web address',\n _a[insertImageTitle] = 'Title',\n _a[insertImageAltText] = 'Alternate text',\n _a[insertImageWidth] = 'Width (px)',\n _a[insertImageHeight] = 'Height (px)',\n _a[insertImageCancel] = 'Cancel',\n _a[insertImageInsert] = 'Insert',\n // View HTML\n _a[viewHtml] = 'View HTML',\n _a[viewHtmlDialogTitle] = 'View HTML',\n _a[viewHtmlCancel] = 'Cancel',\n _a[viewHtmlUpdate] = 'Update',\n // Find and Replace\n _a[findReplaceToolTitle] = 'Find and Replace',\n _a[findReplaceDialogTitle] = 'Find and Replace',\n _a[findReplaceTabFind] = 'Find',\n _a[findReplaceTabReplace] = 'Replace',\n _a[findReplaceFindWhat] = 'Find What:',\n _a[findReplaceReplaceWith] = 'Replace With',\n _a[findReplaceReplace] = 'Replace',\n _a[findReplaceReplaceAll] = 'Replace All',\n _a[findReplaceMatchCase] = 'Match Case',\n _a[findReplaceMatchWord] = 'Match whole word only',\n _a[findReplaceMatchCyclic] = 'Match cyclic (Wrap around)',\n _a[findReplaceUseRegExp] = 'Regular Expression',\n _a[findReplacePrevMatch] = 'Prev',\n _a[findReplaceNextMatch] = 'Next',\n _a[findReplaceMatches] = '{0} of {1} matches',\n _a[iframeTitle] = 'Editable area. Press Alt + F10 for toolbar.',\n _a[foreColorLabel] = 'Fore Color',\n _a[backColorLabel] = 'Back Color',\n _a[cellProperties] = 'Cell properties',\n _a[cellPropertiesLeftTop] = 'Left Top',\n _a[cellPropertiesCenterTop] = 'Center Top',\n _a[cellPropertiesRightTop] = 'Right Top',\n _a[cellPropertiesLeftMiddle] = 'Left Middle',\n _a[cellPropertiesCenterMiddle] = 'Center Middle',\n _a[cellPropertiesRightMiddle] = 'Right Middle',\n _a[cellPropertiesLeftBottom] = 'Left Bottom',\n _a[cellPropertiesCenterBottom] = 'Center Bottom',\n _a[cellPropertiesRightBottom] = 'Right Bottom',\n _a[cellPropertiesNoAlignment] = 'No Alignment',\n _a[cellPropertiesWrap] = 'Wrap',\n _a[cellPropertiesFitToCell] = 'Fit to cell',\n _a[cellPropertiesApplyToAllCells] = 'Apply to all cells',\n _a[cellPropertiesWidth] = 'Width',\n _a[cellPropertiesApplyToColumn] = 'apply to column',\n _a[cellPropertiesHeight] = 'Height',\n _a[cellPropertiesApplyToRow] = 'apply to row',\n _a[cellPropertiesAlignment] = 'Alignment',\n _a[cellPropertiesTextControl] = 'Text control',\n _a[cellPropertiesCellPadding] = 'Cell padding',\n _a[cellPropertiesBackground] = 'Background',\n _a[cellPropertiesBorderWidth] = 'Border width',\n _a[cellPropertiesBorderColor] = 'Border color',\n _a[cellPropertiesBorderStyle] = 'Border style',\n _a[cellPropertiesId] = 'ID',\n _a[cellPropertiesCssClass] = 'CSS class',\n _a[cellPropertiesSave] = 'Save',\n _a[cellPropertiesCancel] = 'Cancel',\n _a[tableProperties] = 'Table properties',\n _a[tablePropertiesAlignLeft] = 'Align Left',\n _a[tablePropertiesAlignCenter] = 'Align Center',\n _a[tablePropertiesAlignRight] = 'Align Right',\n _a[tablePropertiesNoAlignment] = 'No Alignment',\n _a[tablePropertiesLeft] = 'Left',\n _a[tablePropertiesCenter] = 'Center',\n _a[tablePropertiesRight] = 'Right',\n _a[tablePropertiesTop] = 'Top',\n _a[tablePropertiesBottom] = 'Bottom',\n _a[tablePropertiesNone] = 'None',\n _a[tablePropertiesUsingScopeAttribute] = 'Using \\'scope\\' attribute',\n _a[tablePropertiesUsingIdAttributes] = 'Using \\'id\\' attributes',\n _a[tablePropertiesRows] = 'Rows',\n _a[tablePropertiesColumns] = 'Columns',\n _a[tablePropertiesWidth] = 'Width',\n _a[tablePropertiesHeight] = 'Height',\n _a[tablePropertiesPosition] = 'Position',\n _a[tablePropertiesAlignment] = 'Alignment',\n _a[tablePropertiesCellSpacing] = 'Cell spacing',\n _a[tablePropertiesCellPadding] = 'Cell padding',\n _a[tablePropertiesTableBackground] = 'Table background',\n _a[tablePropertiesBorderWidth] = 'Border width',\n _a[tablePropertiesBorderColor] = 'Border color',\n _a[tablePropertiesBorderStyle] = 'Border style',\n _a[tablePropertiesCollapseBorders] = 'Collapse borders',\n _a[tablePropertiesId] = 'ID',\n _a[tablePropertiesCssClass] = 'CSS class',\n _a[tablePropertiesAccessibility] = 'Accessibility',\n _a[tablePropertiesCaption] = 'Caption',\n _a[tablePropertiesCaptionPosition] = 'Position',\n _a[tablePropertiesCaptionAlignment] = 'Alignment',\n _a[tablePropertiesHeaderRows] = 'Header rows',\n _a[tablePropertiesHeaderCols] = 'Header cols',\n _a[tablePropertiesAssociateHeaders] = 'Associate headers',\n _a[tablePropertiesGeneral] = 'General',\n _a[tablePropertiesAdvanced] = 'Advanced',\n _a[tablePropertiesSave] = 'Save',\n _a[tablePropertiesCancel] = 'Cancel',\n _a[borderStyleNone] = 'None',\n _a[borderStyleSolid] = 'Solid',\n _a[borderStyleDotted] = 'Dotted',\n _a[borderStyleDashed] = 'Dashed',\n _a[borderStyleDouble] = 'Double',\n _a[borderStyleGroove] = 'Groove',\n _a[borderStyleRidge] = 'Ridge',\n _a[borderStyleInset] = 'Inset',\n _a[borderStyleOutset] = 'Outset',\n _a[borderStyleInitial] = 'Initial',\n _a[borderStyleInherit] = 'Inherit',\n _a[borderStyleHidden] = 'Hidden',\n _a[sizeAuto] = 'Auto',\n _a);\n/**\n * @hidden\n */\nexport var keys = {\n bold: bold,\n italic: italic,\n underline: underline,\n strikethrough: strikethrough,\n subscript: subscript,\n superscript: superscript,\n unlink: unlink,\n undo: undo,\n redo: redo,\n fontSize: fontSize,\n fontName: fontName,\n format: format,\n alignLeft: alignLeft,\n alignRight: alignRight,\n alignCenter: alignCenter,\n alignJustify: alignJustify,\n indent: indent,\n outdent: outdent,\n orderedList: orderedList,\n bulletList: bulletList,\n print: print,\n selectAll: selectAll,\n cleanFormatting: cleanFormatting,\n pdf: pdf,\n foregroundColor: foregroundColor,\n backgroundColor: backgroundColor,\n createTable: createTable,\n createTableHint: createTableHint,\n addRowBefore: addRowBefore,\n addRowAfter: addRowAfter,\n addColumnBefore: addColumnBefore,\n addColumnAfter: addColumnAfter,\n deleteRow: deleteRow,\n deleteColumn: deleteColumn,\n deleteTable: deleteTable,\n mergeCells: mergeCells,\n splitCell: splitCell,\n insertHyperlink: insertHyperlink,\n insertHyperlinkDialogTitle: insertHyperlinkDialogTitle,\n insertHyperlinkAddress: insertHyperlinkAddress,\n insertHyperlinkTitle: insertHyperlinkTitle,\n insertHyperlinkNewWindow: insertHyperlinkNewWindow,\n insertHyperlinkCancel: insertHyperlinkCancel,\n insertHyperlinkInsert: insertHyperlinkInsert,\n insertFile: insertFile,\n insertFileDialogTitle: insertFileDialogTitle,\n insertFileAddress: insertFileAddress,\n insertFileTitle: insertFileTitle,\n insertFileCancel: insertFileCancel,\n insertFileInsert: insertFileInsert,\n insertImage: insertImage,\n insertImageDialogTitle: insertImageDialogTitle,\n insertImageAddress: insertImageAddress,\n insertImageTitle: insertImageTitle,\n insertImageAltText: insertImageAltText,\n insertImageWidth: insertImageWidth,\n insertImageHeight: insertImageHeight,\n insertImageCancel: insertImageCancel,\n insertImageInsert: insertImageInsert,\n viewHtml: viewHtml,\n viewHtmlDialogTitle: viewHtmlDialogTitle,\n viewHtmlCancel: viewHtmlCancel,\n viewHtmlUpdate: viewHtmlUpdate,\n findReplaceToolTitle: findReplaceToolTitle,\n findReplaceDialogTitle: findReplaceDialogTitle,\n findReplaceTabFind: findReplaceTabFind,\n findReplaceTabReplace: findReplaceTabReplace,\n findReplaceFindWhat: findReplaceFindWhat,\n findReplaceReplaceWith: findReplaceReplaceWith,\n findReplaceReplace: findReplaceReplace,\n findReplaceReplaceAll: findReplaceReplaceAll,\n findReplaceMatchCase: findReplaceMatchCase,\n findReplaceMatchWord: findReplaceMatchWord,\n findReplaceMatchCyclic: findReplaceMatchCyclic,\n findReplaceUseRegExp: findReplaceUseRegExp,\n findReplacePrevMatch: findReplacePrevMatch,\n findReplaceNextMatch: findReplaceNextMatch,\n findReplaceMatches: findReplaceMatches,\n iframeTitle: iframeTitle,\n foreColorLabel: foreColorLabel,\n backColorLabel: backColorLabel,\n cellProperties: cellProperties,\n cellPropertiesLeftTop: cellPropertiesLeftTop,\n cellPropertiesCenterTop: cellPropertiesCenterTop,\n cellPropertiesRightTop: cellPropertiesRightTop,\n cellPropertiesLeftMiddle: cellPropertiesLeftMiddle,\n cellPropertiesCenterMiddle: cellPropertiesCenterMiddle,\n cellPropertiesRightMiddle: cellPropertiesRightMiddle,\n cellPropertiesLeftBottom: cellPropertiesLeftBottom,\n cellPropertiesCenterBottom: cellPropertiesCenterBottom,\n cellPropertiesRightBottom: cellPropertiesRightBottom,\n cellPropertiesNoAlignment: cellPropertiesNoAlignment,\n cellPropertiesWrap: cellPropertiesWrap,\n cellPropertiesFitToCell: cellPropertiesFitToCell,\n cellPropertiesApplyToAllCells: cellPropertiesApplyToAllCells,\n cellPropertiesWidth: cellPropertiesWidth,\n cellPropertiesApplyToColumn: cellPropertiesApplyToColumn,\n cellPropertiesHeight: cellPropertiesHeight,\n cellPropertiesApplyToRow: cellPropertiesApplyToRow,\n cellPropertiesAlignment: cellPropertiesAlignment,\n cellPropertiesTextControl: cellPropertiesTextControl,\n cellPropertiesCellPadding: cellPropertiesCellPadding,\n cellPropertiesBackground: cellPropertiesBackground,\n cellPropertiesBorderWidth: cellPropertiesBorderWidth,\n cellPropertiesBorderColor: cellPropertiesBorderColor,\n cellPropertiesBorderStyle: cellPropertiesBorderStyle,\n cellPropertiesId: cellPropertiesId,\n cellPropertiesCssClass: cellPropertiesCssClass,\n cellPropertiesSave: cellPropertiesSave,\n cellPropertiesCancel: cellPropertiesCancel,\n tableProperties: tableProperties,\n tablePropertiesAlignLeft: tablePropertiesAlignLeft,\n tablePropertiesAlignCenter: tablePropertiesAlignCenter,\n tablePropertiesAlignRight: tablePropertiesAlignRight,\n tablePropertiesNoAlignment: tablePropertiesNoAlignment,\n tablePropertiesLeft: tablePropertiesLeft,\n tablePropertiesCenter: tablePropertiesCenter,\n tablePropertiesRight: tablePropertiesRight,\n tablePropertiesTop: tablePropertiesTop,\n tablePropertiesBottom: tablePropertiesBottom,\n tablePropertiesNone: tablePropertiesNone,\n tablePropertiesUsingScopeAttribute: tablePropertiesUsingScopeAttribute,\n tablePropertiesUsingIdAttributes: tablePropertiesUsingIdAttributes,\n tablePropertiesRows: tablePropertiesRows,\n tablePropertiesColumns: tablePropertiesColumns,\n tablePropertiesWidth: tablePropertiesWidth,\n tablePropertiesHeight: tablePropertiesHeight,\n tablePropertiesPosition: tablePropertiesPosition,\n tablePropertiesAlignment: tablePropertiesAlignment,\n tablePropertiesCellSpacing: tablePropertiesCellSpacing,\n tablePropertiesCellPadding: tablePropertiesCellPadding,\n tablePropertiesTableBackground: tablePropertiesTableBackground,\n tablePropertiesBorderWidth: tablePropertiesBorderWidth,\n tablePropertiesBorderColor: tablePropertiesBorderColor,\n tablePropertiesBorderStyle: tablePropertiesBorderStyle,\n tablePropertiesCollapseBorders: tablePropertiesCollapseBorders,\n tablePropertiesId: tablePropertiesId,\n tablePropertiesCssClass: tablePropertiesCssClass,\n tablePropertiesAccessibility: tablePropertiesAccessibility,\n tablePropertiesCaption: tablePropertiesCaption,\n tablePropertiesCaptionPosition: tablePropertiesCaptionPosition,\n tablePropertiesCaptionAlignment: tablePropertiesCaptionAlignment,\n tablePropertiesHeaderRows: tablePropertiesHeaderRows,\n tablePropertiesHeaderCols: tablePropertiesHeaderCols,\n tablePropertiesAssociateHeaders: tablePropertiesAssociateHeaders,\n tablePropertiesGeneral: tablePropertiesGeneral,\n tablePropertiesAdvanced: tablePropertiesAdvanced,\n tablePropertiesSave: tablePropertiesSave,\n tablePropertiesCancel: tablePropertiesCancel,\n borderStyleNone: borderStyleNone,\n borderStyleSolid: borderStyleSolid,\n borderStyleDotted: borderStyleDotted,\n borderStyleDashed: borderStyleDashed,\n borderStyleDouble: borderStyleDouble,\n borderStyleGroove: borderStyleGroove,\n borderStyleRidge: borderStyleRidge,\n borderStyleInset: borderStyleInset,\n borderStyleOutset: borderStyleOutset,\n borderStyleInitial: borderStyleInitial,\n borderStyleInherit: borderStyleInherit,\n borderStyleHidden: borderStyleHidden,\n sizeAuto: sizeAuto\n};\n","import * as React from 'react';\nimport { messages, keys } from './../messages';\n/**\n * @hidden\n */\nvar onDownPreventDefault = {\n onMouseDown: function (e) { return e.preventDefault(); },\n onPointerDown: function (e) { return e.preventDefault(); }\n};\n/**\n * @hidden\n */\nvar userSelectNone = {\n userSelect: 'none'\n};\n/**\n * @hidden\n */\nvar formatString = function (input) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n args.forEach(function (value, index) {\n input = input.replace('{' + index + '}', String(value));\n });\n return input;\n};\n/**\n * @hidden\n */\nvar itemRender = function (li, itemProps) {\n return itemProps.dataItem.style ? React.cloneElement(li, li.props, (React.createElement(\"span\", { style: itemProps.dataItem.style }, li.props.children))) : li;\n};\n/**\n * @hidden\n */\nvar units = ['px', 'em', '%'];\n/**\n * @hidden\n */\nvar popupSettings = { animate: { openDuration: 150, closeDuration: 150 } };\n/**\n * @hidden\n */\nvar borderStyles = [\n { textKey: keys.borderStyleNone, text: messages[keys.borderStyleNone], value: 'none' },\n { textKey: keys.borderStyleSolid, text: messages[keys.borderStyleSolid], value: 'solid' },\n { textKey: keys.borderStyleDotted, text: messages[keys.borderStyleDotted], value: 'dotted' },\n { textKey: keys.borderStyleDashed, text: messages[keys.borderStyleDashed], value: 'dashed' },\n { textKey: keys.borderStyleDouble, text: messages[keys.borderStyleDouble], value: 'double' },\n { textKey: keys.borderStyleGroove, text: messages[keys.borderStyleGroove], value: 'groove' },\n { textKey: keys.borderStyleRidge, text: messages[keys.borderStyleRidge], value: 'ridge' },\n { textKey: keys.borderStyleInset, text: messages[keys.borderStyleInset], value: 'inset' },\n { textKey: keys.borderStyleOutset, text: messages[keys.borderStyleOutset], value: 'outset' },\n { textKey: keys.borderStyleInitial, text: messages[keys.borderStyleInitial], value: 'initial' },\n { textKey: keys.borderStyleInherit, text: messages[keys.borderStyleInherit], value: 'inherit' },\n { textKey: keys.borderStyleHidden, text: messages[keys.borderStyleHidden], value: 'hidden' }\n];\n/**\n * @hidden\n */\nfunction parentNode(pos, predicate) {\n for (var depth = pos.depth; depth > 0; depth--) {\n var node = pos.node(depth);\n if (predicate(node)) {\n return { node: node, depth: depth };\n }\n }\n return null;\n}\nexport { onDownPreventDefault, formatString, itemRender, units, borderStyles, popupSettings, userSelectNone, parentNode };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as shortcuts from './../config/shortcuts';\nimport { marks as schemaMarks, nodes as schemaNodes } from './../config/schema';\nimport { alignBlocks as alignBlocksCommon, applyInlineStyle as applyInlineStyleCommon, applyLink as applyLinkCommon, canIndentAsListItem, canOutdentAsListItem, parseContent, canInsert as canInsertCommon, createTable as createTableCommon, formatBlockElements as formatBlockElementsCommon, getBlockFormats as getBlockFormatsCommon, getHtml as getHtmlCommon, getInlineStyles as getInlineStylesCommon, getMark as getMarkCommon, hasMark as hasMarkCommon, hasNode as hasNodeCommon, indentBlocks as indentBlocksCommon, setHtml as setHtmlCommon, insertNode as insertNodeCommon, isAligned as isAlignedCommon, isIndented as isIndentedCommon, toggleInlineFormat as toggleInlineFormatCommon, toggleList as toggleListCommon, indentHtml as indentHtmlCommon, convertMsLists as convertMsListsCommon, removeComments as removeCommentsCommon, removeTag as removeTagCommon, sanitize as sanitizeCommon, pasteCleanup as pasteCleanupCommon, sanitizeClassAttr as sanitizeClassAttrCommon, sanitizeStyleAttr as sanitizeStyleAttrCommon, removeAttribute as removeAttributeCommon, replaceImageSourcesFromRtf as replaceImageSourcesFromRtfCommon, textHighlight as textHighlightCommon, imageResizing as imageResizingCommon, imageResizeKey as imageResizeKeyCommon, tableResizing as tableResizingCommon, trimWhitespace } from '@progress/kendo-editor-common';\nimport { editorPropsKey } from './props-key';\n/**\n * Represents a wrapping namespace for the utility functions, `nodes`, and `marks` objects of the Editor.\n */\nexport var EditorUtils;\n(function (EditorUtils) {\n /**\n * Aligns the block elements in the selection.\n *\n * @returns {boolean}—If alignment is applied to any of the elements, returns `true`.\n */\n function alignBlocks(view, actions, command) {\n return Boolean(alignBlocksCommon(actions, command)(view.state, view.dispatch));\n }\n EditorUtils.alignBlocks = alignBlocks;\n /**\n * Wraps the selection in a `span` element with inline styles.\n *\n * @returns {boolean}—If a style is applied to any of the elements, returns `true`.\n */\n function applyInlineStyle(view, options, command) {\n return applyInlineStyleCommon(options, command)(view.state, view.dispatch);\n }\n EditorUtils.applyInlineStyle = applyInlineStyle;\n /**\n * Applies the link mark.\n *\n * @returns {boolean}—If the link is applied, returns `true`.\n */\n function applyLink(view, options, command) {\n return applyLinkCommon(options, command)(view.state, view.dispatch);\n }\n EditorUtils.applyLink = applyLink;\n /**\n * Checks if any of the `list` elements in the selection can be indented.\n *\n * @returns {boolean}\n */\n function canIndentList(state, nodeType) {\n return canIndentAsListItem(state, nodeType);\n }\n EditorUtils.canIndentList = canIndentList;\n /**\n * Checks if a node can be inserted in the current selection.\n *\n * @param {EditorState} state—The `state` object of the Editor.\n * @param {NodeType} nodeType—The type of the node that will be inserted.\n * @returns {boolean}—The node of this type can be inserted in the current selection.\n */\n function canInsert(state, nodeType) {\n return canInsertCommon(state, nodeType);\n }\n EditorUtils.canInsert = canInsert;\n /**\n * Checks if any of the `list` elements in the selection can be outdented.\n *\n * @returns {boolean}\n */\n function canOutdentList(state, listsTypes) {\n return canOutdentAsListItem(state, { listsTypes: listsTypes, nodes: [] });\n }\n EditorUtils.canOutdentList = canOutdentList;\n /**\n * Converts the MS Word lists into HTML lists.\n *\n * @param {string} html—The input HTML.\n * @returns {string}—The result HTML.\n */\n function convertMsLists(html) {\n return convertMsListsCommon(html);\n }\n EditorUtils.convertMsLists = convertMsLists;\n /**\n * Creates an Editor document from HTML content.\n *\n * @param {Schema} schema—The `schema` object of the Editor.\n * @param {string} html—The HTML content.\n * @param {ParseOptions} parseOptions—The HTML parsing options. Defaults to `{ preserveWhitespace: 'full' }`.\n * @returns {Node}—The `document` object of the Editor.\n */\n function createDocument(schema, html, parseOptions) {\n return parseContent(trimWhitespace(html), schema, parseOptions !== undefined ? parseOptions : { preserveWhitespace: 'full' });\n }\n EditorUtils.createDocument = createDocument;\n /**\n * Creates a table.\n *\n * @param {object} tableTypes—An object which contains `table`, `table_row`, and `table_cell` node types.\n * @param {number} rows—The number of rows.\n * @param {number} columns—The number of columns.\n * @returns {Node}—The generated table.\n *\n * @example\n * ```jsx-no-run\n * import { EditorUtils } from '@progress/kendo-react-editor';\n *\n * const nodes = editorRef.view.state.schema.nodes;\n * const rows = 3;\n * const columns = 4;\n *\n * const table = EditorUtils.createTable(nodes, rows, columns);\n * ```\n */\n function createTable(tableTypes, rows, columns) {\n return createTableCommon(tableTypes, rows, columns);\n }\n EditorUtils.createTable = createTable;\n /**\n * Formats the paragraph and heading nodes in the selection.\n *\n * @returns {boolean}—If an element is formatted, returns `true`.\n */\n function formatBlockElements(view, value, commandName) {\n return formatBlockElementsCommon(value, commandName)(view.state, view.dispatch);\n }\n EditorUtils.formatBlockElements = formatBlockElements;\n /**\n * Returns the paragraph and heading nodes in the selection.\n *\n * @returns {string[]}\n */\n function getBlockFormats(state) {\n return getBlockFormatsCommon(state);\n }\n EditorUtils.getBlockFormats = getBlockFormats;\n /**\n * Gets the HTML from the `EditorState` object.\n *\n * @param {EditorState} state—The `state` object of the Editor or an object containing editor's `doc` and `schema`\n *—{ doc: value, schema: value.types.schema } where the `value` variable is the editor's value prop.\n * @returns {string}—The HTML content.\n */\n function getHtml(state) {\n return getHtmlCommon(state);\n }\n EditorUtils.getHtml = getHtml;\n /**\n * @returns {string[]}—An array of matched styles that are found in the selection.\n */\n function getInlineStyles(state, style) {\n return getInlineStylesCommon(state, style);\n }\n EditorUtils.getInlineStyles = getInlineStyles;\n /**\n * Returns a mark of the specified type from the nodes in selection.\n *\n * @returns {Mark}\n */\n function getMark(state, markType) {\n return getMarkCommon(state, markType);\n }\n EditorUtils.getMark = getMark;\n /**\n * Checks if according to the specified `InlineFormatOptions` a node in the selection is present.\n *\n * @returns {boolean}\n */\n function hasMark(state, options) {\n return hasMarkCommon(state, options);\n }\n EditorUtils.hasMark = hasMark;\n /**\n * Checks if the selection contains a specific type of node.\n *\n * @returns {boolean}\n */\n function hasNode(state, nodeType) {\n return hasNodeCommon(state, nodeType);\n }\n EditorUtils.hasNode = hasNode;\n /**\n * Indents the block elements in the selection.\n *\n * @returns {boolean}—If indentation is applied to any of the elements, returns `true`.\n */\n function indentBlocks(view, actions, command, dir) {\n return Boolean(indentBlocksCommon(actions, command, dir)(view.state, view.dispatch));\n }\n EditorUtils.indentBlocks = indentBlocks;\n /**\n * Adds new lines after block elements and hard breaks.\n *\n * @param {string} content—The HTML content.\n * @returns {string}—The indented HTML.\n */\n function indentHtml(content) {\n return indentHtmlCommon(content);\n }\n EditorUtils.indentHtml = indentHtml;\n /**\n * Inserts a node in the selection.\n *\n * @param {EditorView} view—The `view` object of the Editor.\n * @param {Node} node—A `node` object of the Editor.\n * @param {boolean} scrollIntoView—An optional parameter.\n * Defines if the content element will be scrolled to the current selection.\n */\n function insertNode(view, node, scrollIntoView) {\n insertNodeCommon(node, scrollIntoView)(view.state, view.dispatch);\n }\n EditorUtils.insertNode = insertNode;\n /**\n * Checks if any of the block elements in the selection is aligned.\n *\n * @returns {boolean}\n */\n function isAligned(state, actions) {\n return isAlignedCommon(state, actions);\n }\n EditorUtils.isAligned = isAligned;\n /**\n * Checks if any of the block elements in the selection is indented.\n *\n * @returns {boolean}\n */\n function isIndented(state, actions, dir) {\n return isIndentedCommon(state, actions, dir);\n }\n EditorUtils.isIndented = isIndented;\n /**\n * Removes the comments from the HTML.\n *\n * @param {string} html—The input HTML.\n * @returns {string}—The result HTML.\n *\n * @example\n * ```jsx-no-run\n * import { EditorUtils } from '@progress/kendo-react-editor';\n * const html = EditorUtils.removeComments('

    some content

    ');\n * ```\n */\n function removeComments(html) {\n return removeCommentsCommon(html);\n }\n EditorUtils.removeComments = removeComments;\n /**\n * Removes the specified tag from the HTML and keeps its child nodes.\n *\n * @param {string} html—The input HTML.\n * @param {string} tag—A tag or multiple tags separated by a vertical slash which will be removed.\n * For example, `span` or `b|i|u|span`.\n * @returns {string}—The resulting HTML.\n *\n * @example\n * ```jsx-no-run\n * import { EditorUtils } from '@progress/kendo-react-editor';\n * const html = EditorUtils.removeTag('

    some content

    ', 'span|p');\n * ```\n */\n function removeTag(html, tag) {\n return removeTagCommon(html, tag);\n }\n EditorUtils.removeTag = removeTag;\n /**\n * A function for sanitizing the content on paste ([see example]({% slug paste_editor %})).\n *\n * @param {string} html—The input HTML.\n * @param {PasteCleanupSettings} settings—The settings used for sanitizing the content.\n * @returns {string}—The resulting HTML.\n */\n function pasteCleanup(html, settings) {\n return pasteCleanupCommon(html, settings);\n }\n EditorUtils.pasteCleanup = pasteCleanup;\n /**\n * A function for sanitizing the CSS classes of the pasted from MS Word content ([see example]({% slug paste_editor %})).\n * The function will remove any class attribute which value starts with `Mso`.\n * For example `

    pasted from MS Word

    ` will result in `

    pasted from MS Word

    `.\n *\n * @param {Attr} attr—The DOM class attribute that will be sanitized.\n */\n function sanitizeClassAttr(attr) {\n sanitizeClassAttrCommon(attr);\n }\n EditorUtils.sanitizeClassAttr = sanitizeClassAttr;\n /**\n * A function for sanitizing the style attributes of the pasted from MS Word content ([see example]({% slug paste_editor %})).\n * The function will loop through all styles and will remove those that are invalid.\n * For example `

    content

    `,\n * will result in `

    content

    `.\n *\n * @param {Attr} attr—The DOM style attribute that will be sanitized.\n */\n function sanitizeStyleAttr(attr) {\n sanitizeStyleAttrCommon(attr);\n }\n EditorUtils.sanitizeStyleAttr = sanitizeStyleAttr;\n /**\n * A function that will remove a DOM attribute from the pasted content ([see example]({% slug paste_editor %})).\n *\n * @param {Attr} attr—The DOM attribute that will be removed.\n */\n function removeAttribute(attr) {\n removeAttributeCommon(attr);\n }\n EditorUtils.removeAttribute = removeAttribute;\n /**\n * Removes the invalid HTML.\n *\n * @param {string} html—The HTML which will be sanitized.\n * @returns {string}—The sanitized HTML.\n *\n * @example\n * ```jsx-no-run\n * import { EditorUtils } from '@progress/kendo-react-editor';\n * const html = EditorUtils.sanitize('something pasted from MS Word, containing , , component');\n // }\n return null;\n }\n var value = form.valueGetter(name);\n // TODO: For future versions as it's better to have render prop\n // if (typeof children === 'function') {\n // return children({ ...field, children: undefined, ...others });\n // }\n if (typeof component === 'string') {\n // ignore meta, combine input with any other props\n return React.createElement(component, __assign({ onChange: onNativeComponentChange, onBlur: handleOnBlur, onFocus: handleOnFocus, value: value, children: children }, others));\n }\n return React.createElement(component, __assign(__assign({ children: children }, others), { \n // input\n onChange: handleOnChange, onBlur: handleOnBlur, onFocus: handleOnFocus, value: value, \n // meta\n validationMessage: form.errors[name], touched: form.touched[name], modified: form.modified[name], visited: form.visited[name], \n // Our `valid` implementation requires double submit to show html5 validation errors,\n // however it's NOT recommended to show html5 validation errors at all as:\n // - There is no standard way to change validation look and feel with CSS.\n // - Look different in each browser / OS\n // - You can have a page in one language but an error message displayed in another language (not localizable)\n valid: !(Boolean(form.errors[name]) && form.touched[name]), name: name }));\n};\nField.displayName = 'KendoReactField';\n","import * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact FieldWrapper component.\n * It's designed to wrap the field editor, Label, Hint and Error components.\n * The FieldWrapper supports only single editor inside it.\n */\nexport var FieldWrapper = function (props) {\n var fieldClassName = classNames({\n 'k-form-field': true,\n 'k-rtl': props.dir === 'rtl'\n }, props.className);\n return (React.createElement(\"div\", { className: fieldClassName, style: props.style }, props.children));\n};\nFieldWrapper.displayName = 'KendoReactFieldWrapper';\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-form',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698928961,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { FormContext } from './FormContext';\nimport { getter, setter, clone, cloneObject, guid } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\n/**\n * @hidden\n */\nvar FORCEUPDATE_ACCUMULATOR_TIMEOUT = 0;\n/**\n * Represents the [KendoReact Form component]({% slug overview_form %}).\n *\n * @example\n * ```jsx\n * export const FormInput = (fieldRenderProps) => {\n * const onValueChange = React.useCallback(\n * (event) => fieldRenderProps.onChange(event.target.value),\n * [fieldRenderProps.onChange]\n * );\n * return (\n * \n * );\n * };\n *\n * export const App = () => {\n * const handleSubmit = (dataItem) => alert(JSON.stringify(dataItem));\n * return (\n * (\n *
    \n * \n * \n * Submit\n * \n *
    \n * )}\n * />\n * );\n * };\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar Form = /** @class */ (function (_super) {\n __extends(Form, _super);\n /**\n * @hidden\n */\n function Form(props) {\n var _this = _super.call(this, props) || this;\n _this._id = guid();\n _this._touched = {};\n _this._visited = {};\n _this._modified = {};\n _this._validatorsByField = {};\n _this._values = {};\n _this._fields = {};\n _this._unmounted = false;\n _this._submitted = false;\n /**\n * @hidden\n */\n _this.isValid = function () {\n return _this.isFormValid(_this.errors);\n };\n /**\n * @hidden\n */\n _this.accumulatedForceUpdate = function () {\n // IMPORTANT:\n // Should only be used for updates not comming from editors as it\n // will cause cursor jump as react will reset the editor to old value\n if (_this._accumulatorTimeout) {\n clearTimeout(_this._accumulatorTimeout);\n }\n _this._accumulatorTimeout = window.setTimeout(function () {\n _this._accumulatorTimeout = undefined;\n _this.forceUpdate();\n }, FORCEUPDATE_ACCUMULATOR_TIMEOUT);\n };\n /**\n * @hidden\n */\n _this.resetForm = function () {\n _this.values = clone(_this.props.initialValues);\n _this._id = guid();\n _this._touched = {};\n _this._visited = {};\n _this._modified = {};\n _this._validatorsByField = {};\n _this._fields = {};\n _this._submitted = false;\n _this.forceUpdate();\n };\n /**\n * Method for resetting the form state outside the form component.\n *\n * > Use `onReset` only if you cannot achieve the desired behavior through the Field component or by FormRenderProps.\n */\n _this.onReset = function () { return _this.resetForm(); };\n /**\n * @hidden\n */\n _this.addField = function (field) {\n _this._fields[field] = true;\n };\n /**\n * @hidden\n */\n _this.onSubmit = function (event) {\n var touchedVisited = {};\n var fields = _this.fields;\n if (event) {\n if (typeof event.preventDefault === 'function') {\n event.preventDefault();\n }\n if (typeof event.stopPropagation === 'function') {\n event.stopPropagation();\n }\n }\n fields.forEach(function (fieldName) {\n touchedVisited[fieldName] = true;\n });\n // show validations\n _this.visited = __assign({}, touchedVisited);\n _this.touched = __assign({}, touchedVisited);\n var values = _this.values;\n var isValid = _this.isFormValid(_this.errors);\n var isModified = _this.isFormModified(_this.modified, fields);\n if (_this.props.onSubmitClick) {\n _this.props.onSubmitClick.call(undefined, {\n values: values,\n isValid: isValid,\n isModified: isModified,\n event: event\n });\n }\n if (isValid && (_this.props.ignoreModified || isModified) && _this.props.onSubmit) {\n _this._submitted = true;\n _this.props.onSubmit.call(undefined, values, event);\n }\n _this.forceUpdate();\n };\n /**\n * Method for emiting changes to a specific field outside the form component.\n *\n * > Use `onChange` only if you cannot achieve the desired behavior through the Field component by FormRenderProps.\n */\n _this.onChange = function (name, options) {\n var _a;\n var value = options.value;\n _this.addField(name);\n if (!_this.modified[name]) {\n _this.modified = __assign(__assign({}, _this.modified), (_a = {}, _a[name] = true, _a));\n }\n _this.valueSetter(name, value);\n _this.forceUpdate();\n };\n /**\n * @hidden\n */\n _this.onFocus = function (name, skipForceUpdate) {\n var _a;\n if (_this.visited[name]) {\n return;\n }\n _this.visited = __assign(__assign({}, _this.visited), (_a = {}, _a[name] = true, _a));\n if (!skipForceUpdate) {\n _this.forceUpdate();\n }\n };\n /**\n * @hidden\n */\n _this.onBlur = function (name, skipForceUpdate) {\n var _a;\n if (_this.touched[name]) {\n return;\n }\n _this.onFocus(name, skipForceUpdate);\n _this.touched = __assign(__assign({}, _this.touched), (_a = {}, _a[name] = true, _a));\n if (!skipForceUpdate) {\n _this.forceUpdate();\n }\n };\n /**\n * @hidden\n */\n _this.onFieldRegister = function (name, validator) {\n var _a;\n _this.addField(name);\n // The sole reason for using class props over state - nextIndex, needed for destroying validators\n var oldValidators = (_this.validatorsByField[name] || []);\n var nextIndex = oldValidators.length;\n _this.validatorsByField = __assign(__assign({}, _this.validatorsByField), (_a = {}, _a[name] = __spreadArray(__spreadArray([], oldValidators, true), [validator], false), _a));\n _this.accumulatedForceUpdate();\n return function () {\n var _a;\n // onFieldUnregister:\n if (_this._unmounted) {\n return;\n }\n var newValidators = __spreadArray([], (_this.validatorsByField[name] || []), true);\n var validatorIsUnregistered = Boolean(newValidators[nextIndex]);\n newValidators[nextIndex] = undefined;\n _this.validatorsByField = __assign(__assign({}, _this.validatorsByField), (_a = {}, _a[name] = newValidators, _a));\n if (validatorIsUnregistered) {\n _this.accumulatedForceUpdate();\n }\n };\n };\n /**\n * @hidden\n */\n _this.isFormValid = function (errors) {\n return !Object.keys(errors).some(function (fieldName) { return Boolean(errors[fieldName]); });\n };\n /**\n * @hidden\n */\n _this.isFormModified = function (modified, fields) {\n return fields.some(function (fieldName) { return modified[fieldName]; });\n };\n /**\n * @hidden\n */\n _this.isFormHasNotTouched = function (touched, fields) {\n return fields.some(function (fieldName) { return !touched[fieldName]; });\n };\n /**\n * @hidden\n */\n _this.isFormTouched = function (touched, fields) {\n return fields.some(function (fieldName) { return touched[fieldName]; });\n };\n /**\n * @hidden\n */\n _this.isFormVisited = function (visited, fields) {\n return fields.some(function (fieldName) { return visited[fieldName]; });\n };\n /**\n * @hidden\n */\n _this.valueGetter = function (fieldName) {\n return getter(fieldName)(_this.values);\n };\n /**\n * @hidden\n */\n _this.valueSetter = function (fieldName, value) {\n return setter(fieldName)(_this.values, value);\n };\n /**\n * @hidden\n */\n _this.onArrayAction = function (name) {\n var _a;\n _this.addField(name);\n if (!_this.modified[name]) {\n _this.modified = __assign(__assign({}, _this.modified), (_a = {}, _a[name] = true, _a));\n }\n _this.onBlur(name, true);\n };\n /**\n * @hidden\n */\n _this.onInsert = function (name, options) {\n _this.onArrayAction(name);\n var newArray = __spreadArray([], (_this.valueGetter(name) || []), true);\n newArray.splice(options.index, 0, options.value);\n _this.valueSetter(name, newArray);\n _this.forceUpdate();\n };\n /**\n * @hidden\n */\n _this.onUnshift = function (name, options) {\n _this.onInsert(name, {\n value: options.value,\n index: 0\n });\n };\n /**\n * @hidden\n */\n _this.onPush = function (name, options) {\n _this.onArrayAction(name);\n var newArray = __spreadArray(__spreadArray([], (_this.valueGetter(name) || []), true), [options.value], false);\n _this.valueSetter(name, newArray);\n _this.forceUpdate();\n };\n /**\n * @hidden\n */\n _this.onPop = function (name) {\n _this.onArrayAction(name);\n var newArray = __spreadArray([], (_this.valueGetter(name) || []), true);\n var value = newArray.pop();\n _this.valueSetter(name, newArray);\n _this.forceUpdate();\n return value;\n };\n /**\n * @hidden\n */\n _this.onRemove = function (name, options) {\n _this.onArrayAction(name);\n var newArray = __spreadArray([], (_this.valueGetter(name) || []), true);\n var value = newArray.splice(options.index, 1);\n _this.valueSetter(name, newArray);\n _this.forceUpdate();\n return value;\n };\n /**\n * @hidden\n */\n _this.onReplace = function (name, options) {\n _this.onArrayAction(name);\n var newArray = __spreadArray([], (_this.valueGetter(name) || []), true);\n newArray.splice(options.index, 1, options.value);\n _this.valueSetter(name, newArray);\n _this.forceUpdate();\n };\n /**\n * @hidden\n */\n _this.onMove = function (name, options) {\n _this.onArrayAction(name);\n var newArray = __spreadArray([], (_this.valueGetter(name) || []), true);\n var value = newArray[options.prevIndex];\n newArray.splice(options.prevIndex, 1);\n newArray.splice(options.nextIndex, 0, value);\n _this.valueSetter(name, newArray);\n _this.forceUpdate();\n };\n validatePackage(packageMetadata);\n _this.values = clone(props.initialValues);\n return _this;\n }\n Object.defineProperty(Form.prototype, \"touched\", {\n /**\n * @hidden\n */\n get: function () {\n return this._touched;\n },\n /**\n * @hidden\n */\n set: function (value) {\n this._touched = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"visited\", {\n /**\n * @hidden\n */\n get: function () {\n return this._visited;\n },\n /**\n * @hidden\n */\n set: function (value) {\n this._visited = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"modified\", {\n /**\n * @hidden\n */\n get: function () {\n return this._modified;\n },\n /**\n * @hidden\n */\n set: function (value) {\n this._modified = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"validatorsByField\", {\n /**\n * @hidden\n */\n get: function () {\n return this._validatorsByField;\n },\n /**\n * @hidden\n */\n set: function (value) {\n this._validatorsByField = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"values\", {\n /**\n * @hidden\n */\n get: function () {\n return this._values;\n },\n /**\n * @hidden\n */\n set: function (value) {\n this._values = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"fields\", {\n /**\n * @hidden\n */\n get: function () {\n return Object.keys(this._fields);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"formErrors\", {\n /**\n * @hidden\n */\n get: function () {\n if (this.props.validator) {\n return this.props.validator(this.values, this.valueGetter);\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Form.prototype, \"errors\", {\n /**\n * @hidden\n */\n get: function () {\n var _this = this;\n var errors = {};\n var fields = this.fields;\n var validatorsByField = this.validatorsByField;\n fields.forEach(function (fieldName) {\n errors[fieldName] = '';\n if (validatorsByField[fieldName]) {\n var validators_1 = [];\n validatorsByField[fieldName].forEach(function (validator) {\n if (Array.isArray(validator)) {\n validators_1.push.apply(validators_1, validator);\n }\n else {\n validators_1.push(validator);\n }\n });\n // find first validation error\n validators_1.find(function (validator) {\n if (validator) {\n var result = validator(_this.valueGetter(fieldName), _this.valueGetter, { name: fieldName });\n if (result) {\n errors[fieldName] = result;\n return true;\n }\n }\n return false;\n });\n }\n });\n var formErrors = this.formErrors;\n if (formErrors) {\n cloneObject(this.formErrors, errors);\n }\n return errors;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Form.prototype.componentWillUnmount = function () {\n this._unmounted = true;\n if (this._accumulatorTimeout) {\n clearTimeout(this._accumulatorTimeout);\n }\n };\n /**\n * @hidden\n */\n Form.prototype.render = function () {\n var render = this.props.render;\n var touched = this.touched;\n var visited = this.visited;\n var modified = this.modified;\n var fields = this.fields;\n var errors = this.errors;\n var formValid = this.isFormValid(errors);\n var formModified = this.isFormModified(modified, fields);\n var formTouched = this.isFormTouched(touched, fields);\n var formVisited = this.isFormVisited(visited, fields);\n var formHasNotTouched = this.isFormHasNotTouched(touched, fields);\n // 1. The form is not touched, but has errors - allow submit to force validation.\n // 2. The form is valid and modified - if not modified, disable submit.\n var allowSubmit = (formHasNotTouched && !formValid) || (formValid && (this.props.ignoreModified || formModified));\n return (React.createElement(FormContext.Provider, { key: this._id, value: {\n id: this._id,\n valueGetter: this.valueGetter,\n errors: errors,\n modified: modified,\n touched: touched,\n visited: visited,\n registerField: this.onFieldRegister,\n onSubmit: this.onSubmit,\n onChange: this.onChange,\n onFocus: this.onFocus,\n onBlur: this.onBlur,\n onUnshift: this.onUnshift,\n onPush: this.onPush,\n onInsert: this.onInsert,\n onPop: this.onPop,\n onRemove: this.onRemove,\n onReplace: this.onReplace,\n onMove: this.onMove\n } }, render({\n valid: formValid,\n modified: formModified,\n touched: formTouched,\n visited: formVisited,\n submitted: this._submitted,\n valueGetter: this.valueGetter,\n errors: errors,\n allowSubmit: allowSubmit,\n onChange: this.onChange,\n onSubmit: this.onSubmit,\n onFormReset: this.resetForm\n })));\n };\n /**\n * @hidden\n */\n Form.displayName = 'KendoReactForm';\n /**\n * @hidden\n */\n Form.propTypes = {\n initialValues: PropTypes.any,\n onSubmit: PropTypes.func,\n onSubmitClick: PropTypes.func,\n render: PropTypes.func.isRequired\n };\n return Form;\n}(React.Component));\nexport { Form };\n","import * as React from 'react';\n/** @hidden */\nexport var FormContext = React.createContext(null);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { FormContext } from './FormContext';\n/**\n * Represents the KendoReact FormElement component.\n * It's small wrapper around HTML form element which automatically attach the\n * Form component's `onSubmit` render prop and Kendo CSS classes.\n * Other props are passed to the DOM node.\n */\nexport var FormElement = React.forwardRef(function (props, ref) {\n var _a;\n var combinedProps = __assign({ size: 'medium' }, props);\n var element = React.useRef(null);\n var target = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({ element: element.current, props: combinedProps }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n var form = React.useContext(FormContext);\n var className = combinedProps.className, style = combinedProps.style, horizontal = combinedProps.horizontal, size = combinedProps.size, others = __rest(combinedProps, [\"className\", \"style\", \"horizontal\", \"size\"]);\n var formClassName = classNames((_a = {\n 'k-form': true\n },\n _a[\"k-form-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a['k-form-horizontal'] = horizontal === true,\n _a), className);\n return (React.createElement(\"form\", __assign({ ref: element }, others, { style: props.style, className: formClassName, onSubmit: form ? form.onSubmit : undefined }), props.children));\n});\nFormElement.displayName = 'KendoReactFormElement';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { FormContext } from './FormContext';\n/**\n * Represents the FieldArray component that is used inside the KendoReact Form component.\n * It provides methods via render props for common array manipulations.\n */\nexport var FieldArray = function (props) {\n var name = props.name, component = props.component, validator = props.validator, type = props.type, children = props.children, others = __rest(props, [\"name\", \"component\", \"validator\", \"type\", \"children\"]);\n var form = React.useContext(FormContext);\n var formId = form ? form.id : '';\n React.useEffect(function () {\n if (!form) {\n return;\n }\n var unregisterField = form.registerField(name, validator);\n return unregisterField;\n }, [name, formId, validator]);\n var onUnshift = React.useCallback(function (event) { return form.onUnshift(name, event); }, [name, formId]);\n var onPush = React.useCallback(function (event) { return form.onPush(name, event); }, [name, formId]);\n var onInsert = React.useCallback(function (event) { return form.onInsert(name, event); }, [name, formId]);\n var onPop = React.useCallback(function () { return form.onPop(name); }, [name, formId]);\n var onRemove = React.useCallback(function (event) { return form.onRemove(name, event); }, [name, formId]);\n var onReplace = React.useCallback(function (event) { return form.onReplace(name, event); }, [name, formId]);\n var onMove = React.useCallback(function (event) { return form.onMove(name, event); }, [name, formId]);\n if (!form) {\n // TODO: For future versions - warn for missing form in dev mode\n // if (__process.env.NODE_ENV !== 'production') { // or __DEV__\n // throw new Error('Field must be used inside of a
    component');\n // }\n return null;\n }\n // TODO: remove this and pass down getter to allow users optimize when to refresh the data?\n var value = form.valueGetter(name);\n // TODO: For future versions as it's better to have render prop\n // if (typeof children === 'function') {\n // return children({ ...field, children: undefined, ...others });\n // }\n return React.createElement(component, __assign({ \n // input\n value: value, \n // meta\n validationMessage: form.errors[name], touched: form.touched[name], modified: form.modified[name], visited: form.visited[name], \n // Our `valid` implementation requires double submit to show html5 validation errors,\n // however it's NOT recommended to show html5 validation errors at all as:\n // - There is no standard way to change validation look and feel with CSS.\n // - Look different in each browser / OS\n // - You can have a page in one language but an error message displayed in another language (not localizable)\n valid: !(Boolean(form.errors[name]) && form.touched[name]), onUnshift: onUnshift, onPush: onPush, onInsert: onInsert, onPop: onPop, onRemove: onRemove, onReplace: onReplace, onMove: onMove, children: children, name: name }, others));\n};\nFieldArray.displayName = 'KendoReactFieldArray';\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { getActiveElement, guid, Keys } from '@progress/kendo-react-common';\nimport { findId, findNextIdByCellIndex, findNextIdByRowIndex, getBodyElement, getHeaderElement, getNavigatableId, tableKeyboardNavigationTools as navigationTools } from './utils';\n/**\n * @hidden\n */\nvar onConstructor = function (options) {\n var navigatable = options.navigatable, contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef, idPrefix = options.idPrefix;\n // v.2: check if nested navigation\n if (navigatable) {\n contextStateRef.current = {\n activeId: '',\n level: 0\n };\n navigationStateRef.current = {\n activeElementIsFocused: false,\n prevNavigationIndexes: undefined,\n idPrefix: idPrefix || guid(),\n navigationMatrix: [],\n lastHeaderIndex: -1\n };\n }\n};\n/**\n * @hidden\n */\nvar onComponentDidMount = function (options) {\n var scope = options.scope, contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef;\n if (contextStateRef.current && navigationStateRef.current && scope) {\n generateMatrix(options);\n var firstId = navigationStateRef.current.navigationMatrix[0][0];\n var firstIdElement = navigationTools.getActiveElement(scope, firstId);\n if (firstId && firstIdElement) {\n contextStateRef.current.activeId = firstId;\n firstIdElement.setAttribute('tabIndex', '0');\n }\n }\n};\n/**\n * @hidden\n */\nvar onGetSnapshotBeforeUpdate = function (options) {\n var contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef, currentDocument = options.document;\n if (contextStateRef.current && navigationStateRef.current && currentDocument) {\n var activeElement = getActiveElement(currentDocument);\n var activeId = navigationTools.getNavigatableId(activeElement);\n if (activeId && activeId === contextStateRef.current.activeId) {\n navigationStateRef.current.activeElementIsFocused = true;\n }\n }\n};\n/**\n * @hidden\n */\nvar onComponentDidUpdate = function (options) {\n var scope = options.scope, contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef;\n generateMatrix(options);\n // check if nested navigation\n if (contextStateRef.current && navigationStateRef.current && scope) {\n var activeElement = navigationTools.getActiveElement(scope, contextStateRef.current.activeId);\n if (!activeElement) {\n var firstId = navigationStateRef.current.navigationMatrix[0][0];\n var firstIdElement = navigationTools.getActiveElement(scope, firstId);\n if (firstId && firstIdElement) {\n contextStateRef.current.activeId = firstId;\n firstIdElement.setAttribute('tabIndex', '0');\n if (navigationStateRef.current.activeElementIsFocused) {\n firstIdElement.focus();\n }\n }\n }\n navigationStateRef.current.activeElementIsFocused = false;\n }\n};\n/**\n * @hidden\n */\nvar onFocus = function (event, options) {\n var contextStateRef = options.contextStateRef;\n if (event.isDefaultPrevented()) {\n return;\n }\n if (!contextStateRef.current) {\n return;\n }\n var focusedElement = event.target;\n var activeId = navigationTools.getNavigatableId(focusedElement);\n if (activeId && activeId !== contextStateRef.current.activeId) {\n var scope = navigationTools.getClosestScope(focusedElement);\n if (!scope) {\n return;\n }\n var prevElement = navigationTools.getActiveElement(scope, contextStateRef.current.activeId);\n if (prevElement) {\n prevElement.setAttribute('tabIndex', '-1');\n }\n focusedElement.setAttribute('tabIndex', '0');\n contextStateRef.current.activeId = activeId;\n }\n};\n/**\n * @hidden\n */\nvar onKeyDown = function (event, options) {\n var contextStateRef = options.contextStateRef, navigationStateRef = options.navigationStateRef, onNavigationAction = options.onNavigationAction;\n if (event.isDefaultPrevented()) {\n return;\n }\n if (!contextStateRef.current || !navigationStateRef.current) {\n return;\n }\n if (event.keyCode === Keys.esc) {\n // activate navigation\n var elementForFocus = navigationTools.getClosestNavigatableElement(event.target);\n navigationTools.focusElement({ elementForFocus: elementForFocus, event: event, contextStateRef: contextStateRef });\n return;\n }\n var element = event.target;\n var elementId = navigationTools.getNavigatableId(element);\n var dataLevel = navigationTools.getNavigatableLevel(element);\n var scope = navigationTools.getClosestScope(element);\n var matrix = navigationStateRef.current.navigationMatrix;\n if (dataLevel !== undefined && scope) {\n if (event.keyCode === Keys.enter) {\n // activate nested navigation or focus focusable element\n var navigatableElement = navigationTools.getNavigatableElement(element, { level: dataLevel + 1 });\n if (navigatableElement) {\n navigationTools.focusElement({\n elementForFocus: navigatableElement,\n event: event,\n contextStateRef: contextStateRef,\n prevElement: element\n });\n return;\n }\n else {\n var elementForFocus = navigationTools.getFocusableElements(element)[0];\n navigationTools.focusElement({ elementForFocus: elementForFocus, event: event, contextStateRef: contextStateRef, prevElement: element });\n return;\n }\n }\n if (event.keyCode === Keys.up ||\n event.keyCode === Keys.down ||\n event.keyCode === Keys.left ||\n event.keyCode === Keys.right) {\n var isReverse = event.keyCode === Keys.up || event.keyCode === Keys.left;\n var isVertical = event.keyCode === Keys.up || event.keyCode === Keys.down;\n var currentIdIndexes = void 0;\n if (navigationStateRef.current && navigationStateRef.current.prevNavigationIndexes) {\n var _a = navigationStateRef.current.prevNavigationIndexes, rowIndex = _a[0], cellIndex = _a[1];\n if (matrix[rowIndex][cellIndex] === elementId) {\n currentIdIndexes = navigationStateRef.current.prevNavigationIndexes;\n }\n else {\n currentIdIndexes = findId(matrix, elementId);\n }\n }\n else {\n currentIdIndexes = findId(matrix, elementId);\n }\n if (currentIdIndexes) {\n var rowIndex = currentIdIndexes[0], cellIndex = currentIdIndexes[1];\n var _b = isVertical ?\n findNextIdByRowIndex(rowIndex, cellIndex, elementId, matrix, isReverse) :\n findNextIdByCellIndex(rowIndex, cellIndex, elementId, matrix, isReverse), idForFocus = _b[0], currentIndexes = _b[1];\n if (idForFocus) {\n var elementForFocus = navigationTools.getActiveElement(scope, idForFocus);\n // emit event\n navigationTools.focusElement({ elementForFocus: elementForFocus, event: event, contextStateRef: contextStateRef, prevElement: element });\n navigationStateRef.current.prevNavigationIndexes = currentIndexes;\n if (onNavigationAction) {\n onNavigationAction({ focusElement: elementForFocus, event: event });\n }\n }\n }\n }\n }\n};\n/**\n * @hidden\n */\nvar generateMatrix = function (options) {\n var navigationStateRef = options.navigationStateRef, scope = options.scope;\n if (!navigationStateRef.current || !scope) {\n return;\n }\n var matrix = [];\n var thead = getHeaderElement(scope);\n var tbody = getBodyElement(scope);\n if (!thead || !tbody) {\n return;\n }\n var headerRows = Array.from(thead.children);\n var bodyRows = Array.from(tbody.children);\n __spreadArray(__spreadArray([], headerRows, true), bodyRows, true).forEach(function (row, rowIndex) {\n Array.from(row.children).forEach(function (cell) {\n var cellId = getNavigatableId(cell);\n if (!cellId) {\n return;\n } // cell is not navigatable\n var rowSpan = cell.rowSpan || 1;\n var cellSpan = cell.colSpan || 1;\n var cellIndex;\n for (var depth = rowIndex, maxDepth = rowIndex + rowSpan; depth < maxDepth; depth++) {\n if (!matrix[depth]) {\n matrix[depth] = [];\n }\n if (cellIndex === undefined) {\n var freeSlotIndex = matrix[depth].findIndex(function (mi) { return !mi; });\n cellIndex = freeSlotIndex > -1 ? freeSlotIndex : matrix[depth].length;\n }\n matrix[depth][cellIndex] = cellId || '';\n }\n for (var depth = cellIndex + 1, maxDepth = cellIndex + cellSpan; depth < maxDepth; depth++) {\n matrix[rowIndex][depth] = cellId || '';\n }\n });\n });\n navigationStateRef.current.navigationMatrix = matrix.filter(function (row) { return !!row; });\n navigationStateRef.current.lastHeaderIndex = headerRows.length - 1;\n};\n/**\n * @hidden\n */\nexport var tableKeyboardNavigation = {\n onConstructor: onConstructor,\n onComponentDidMount: onComponentDidMount,\n onGetSnapshotBeforeUpdate: onGetSnapshotBeforeUpdate,\n onComponentDidUpdate: onComponentDidUpdate,\n onFocus: onFocus,\n onKeyDown: onKeyDown,\n generateMatrix: generateMatrix\n};\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * @hidden\n */\nexport function tableColumnsVirtualization(args) {\n var enabled = args.enabled, _a = args.columns, columns = _a === void 0 ? [] : _a, tableViewPortWidth = args.tableViewPortWidth, scrollLeft = args.scrollLeft;\n var colSpans = columns.map(function () { return 1; });\n var hiddenColumns = columns.map(function () { return false; });\n if (!enabled) {\n return { colSpans: colSpans, hiddenColumns: hiddenColumns };\n }\n var widths = columns.map(function (c) { return parseFloat((c.width || '').toString()) || 10; });\n var widthOfHiddenColumns = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].locked) {\n continue;\n }\n var considerNext = (i < widths.length - 1) ? widths[i + 1] : 0;\n if (widthOfHiddenColumns + widths[i] + considerNext < scrollLeft) {\n hiddenColumns[i] = true;\n widthOfHiddenColumns += widths[i];\n }\n else {\n break;\n }\n }\n var totalWidth = widths.reduce(function (acc, current) { return acc + current; }, 0);\n widthOfHiddenColumns = 0;\n for (var i = columns.length - 1; i >= 0; i--) {\n if (columns[i].locked) {\n continue;\n }\n if (widthOfHiddenColumns + 2 * widths[i] < totalWidth - tableViewPortWidth - scrollLeft) {\n hiddenColumns[i] = true;\n widthOfHiddenColumns += widths[i];\n }\n else {\n break;\n }\n }\n var hiddenCols = __spreadArray([], hiddenColumns, true);\n var hidden = function (value) { return value; };\n var lastVisible = hiddenCols.lastIndexOf(false);\n var anyHidden = hiddenCols.some(hidden);\n var allHidden = hiddenCols.every(hidden);\n var hiddenSeqLength;\n var updateIndex;\n while (anyHidden && hiddenCols.length && (lastVisible !== -1 || allHidden)) {\n if (lastVisible < hiddenCols.length - 1) {\n hiddenSeqLength = allHidden ? hiddenCols.length : hiddenCols.length - lastVisible - 1;\n updateIndex = hiddenCols.length - hiddenSeqLength;\n if (updateIndex === 0) {\n updateIndex = hiddenSeqLength - 1;\n }\n hiddenColumns[updateIndex] = false;\n colSpans[updateIndex] = hiddenSeqLength;\n hiddenCols.splice(lastVisible + 1, hiddenSeqLength);\n }\n while (hiddenCols.length && !hiddenCols[hiddenCols.length - 1]) {\n hiddenCols.pop();\n }\n lastVisible = hiddenCols.lastIndexOf(false);\n anyHidden = hiddenCols.some(hidden);\n allHidden = hiddenCols.every(hidden);\n }\n return { colSpans: colSpans, hiddenColumns: hiddenColumns };\n}\n","var _a;\n/**\n * @hidden\n */\nexport var pagerInfo = 'pager.info';\n/**\n * @hidden\n */\nexport var pagerFirstPage = 'pager.firstPage';\n/**\n * @hidden\n */\nexport var pagerPreviousPage = 'pager.previousPage';\n/**\n * @hidden\n */\nexport var pagerNextPage = 'pager.nextPage';\n/**\n * @hidden\n */\nexport var pagerLastPage = 'pager.lastPage';\n/**\n * @hidden\n */\nexport var pagerItemPerPage = 'pager.itemsPerPage';\n/**\n * @hidden\n */\nexport var pagerPageSelection = 'pager.pageSelection';\n/**\n * @hidden\n */\nexport var pagerPage = 'pager.page';\n/**\n * @hidden\n */\nexport var pagerOf = 'pager.of';\n/**\n * @hidden\n */\nexport var pagerTotalPages = 'pager.totalPages';\n/**\n * @hidden\n */\nexport var pagerPageNumberLabel = 'pager.pageLabel';\n/**\n * @hidden\n */\nexport var pagerAriaKeyshortcuts = 'pager.ariaKeyshortcuts';\n/**\n * @hidden\n */\nexport var pagerAriaLabel = 'pager.ariaLabel';\n/**\n * @hidden\n */\nexport var pagerPageSizeAriaLabel = 'pager.pageSizeAriaLabel';\n/**\n * @hidden\n */\nexport var pagerMobileSelect = 'pager.mobileSelect';\n/**\n * @hidden\n */\nexport var pagerMoreButtonLabel = 'pager.moreButtonLabel';\n/**\n * @hidden\n */\nexport var filterEqOperator = 'filter.eqOperator';\n/**\n * @hidden\n */\nexport var filterNotEqOperator = 'filter.notEqOperator';\n/**\n * @hidden\n */\nexport var filterIsNullOperator = 'filter.isNullOperator';\n/**\n * @hidden\n */\nexport var filterIsNotNullOperator = 'filter.isNotNullOperator';\n/**\n * @hidden\n */\nexport var filterIsEmptyOperator = 'filter.isEmptyOperator';\n/**\n * @hidden\n */\nexport var filterIsNotEmptyOperator = 'filter.isNotEmptyOperator';\n/**\n * @hidden\n */\nexport var filterStartsWithOperator = 'filter.startsWithOperator';\n/**\n * @hidden\n */\nexport var filterContainsOperator = 'filter.containsOperator';\n/**\n * @hidden\n */\nexport var filterNotContainsOperator = 'filter.notContainsOperator';\n/**\n * @hidden\n */\nexport var filterEndsWithOperator = 'filter.endsWithOperator';\n/**\n * @hidden\n */\nexport var filterGteOperator = 'filter.gteOperator';\n/**\n * @hidden\n */\nexport var filterGtOperator = 'filter.gtOperator';\n/**\n * @hidden\n */\nexport var filterLteOperator = 'filter.lteOperator';\n/**\n * @hidden\n */\nexport var filterLtOperator = 'filter.ltOperator';\n/**\n * @hidden\n */\nexport var filterIsTrue = 'filter.isTrue';\n/**\n * @hidden\n */\nexport var filterIsFalse = 'filter.isFalse';\n/**\n * @hidden\n */\nexport var filterAfterOrEqualOperator = 'filter.afterOrEqualOperator';\n/**\n * @hidden\n */\nexport var filterAfterOperator = 'filter.afterOperator';\n/**\n * @hidden\n */\nexport var filterBeforeOperator = 'filter.beforeOperator';\n/**\n * @hidden\n */\nexport var filterBeforeOrEqualOperator = 'filter.beforeOrEqualOperator';\n/**\n * @hidden\n */\nexport var filterAndLogic = 'filter.andLogic';\n/**\n * @hidden\n */\nexport var filterOrLogic = 'filter.orLogic';\n/**\n * @hidden\n */\nexport var filterAddExpression = 'filter.addExpression';\n/**\n * @hidden\n */\nexport var filterAddGroup = 'filter.addGroup';\n/**\n * @hidden\n */\nexport var filterClose = 'filter.close';\n/**\n * @hidden\n */\nexport var filterGroupAriaLabel = 'filter.groupAriaLabel';\n/**\n * @hidden\n */\nexport var filterExpressionAriaLabel = 'filter.expressionAriaLabel';\n/**\n * @hidden\n */\nexport var filterExpressionDropdownAriaLabel = 'filter.expressionDropdownAriaLabel';\n/**\n * @hidden\n */\nexport var filterExpressionOperatorDropdownAriaLabel = 'filter.expressionOperatorDropdownAriaLabel';\n/**\n * @hidden\n */\nexport var filterEnumFilterDropdownAriaLabel = 'filter.enumFilterDropdownAriaLabel';\n/**\n * @hidden\n */\nexport var filterNumericFilterAriaLabel = 'filter.numericFilterAriaLabel';\n/**\n * @hidden\n */\nexport var filterTextFilterAriaLabel = 'filter.textFilterAriaLabel';\n/**\n * @hidden\n */\nexport var columnMenuFilterClearButton = 'columnMenu.filterClearButton';\n/**\n * @hidden\n */\nexport var columnMenuFilterSubmitButton = 'columnMenu.filterSubmitButton';\n/**\n * @hidden\n */\nexport var columnMenuFilterTitle = 'columnMenu.filterTitle';\n/**\n * @hidden\n */\nexport var columnMenuSortAscending = 'columnMenu.sortAscending';\n/**\n * @hidden\n */\nexport var columnMenuSortDescending = 'columnMenu.sortDescending';\n/**\n * @hidden\n */\nexport var columnMenuFilterEqOperator = 'columnMenu.filterEqOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterNotEqOperator = 'columnMenu.filterNotEqOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsNullOperator = 'columnMenu.filterIsNullOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsNotNullOperator = 'columnMenu.filterIsNotNullOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsEmptyOperator = 'columnMenu.filterIsEmptyOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsNotEmptyOperator = 'columnMenu.filterIsNotEmptyOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterStartsWithOperator = 'columnMenu.filterStartsWithOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterContainsOperator = 'columnMenu.filterContainsOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterNotContainsOperator = 'columnMenu.filterNotContainsOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterEndsWithOperator = 'columnMenu.filterEndsWithOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterGteOperator = 'columnMenu.filterGteOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterGtOperator = 'columnMenu.filterGtOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterLteOperator = 'columnMenu.filterLteOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterLtOperator = 'columnMenu.filterLtOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterIsTrue = 'columnMenu.filterIsTrue';\n/**\n * @hidden\n */\nexport var columnMenuFilterAfterOrEqualOperator = 'columnMenu.filterAfterOrEqualOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterAfterOperator = 'columnMenu.filterAfterOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterBeforeOperator = 'columnMenu.filterBeforeOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterBeforeOrEqualOperator = 'columnMenu.filterBeforeOrEqualOperator';\n/**\n * @hidden\n */\nexport var columnMenuFilterAndLogic = 'columnMenu.filterAndLogic';\n/**\n * @hidden\n */\nexport var columnMenuFilterOrLogic = 'columnMenu.filterOrLogic';\n/**\n * @hidden\n */\nexport var sortAriaLabel = 'sort.ariaLabel';\n/**\n * @hidden\n */\nexport var filterAriaLabel = 'filter.ariaLabel';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[pagerItemPerPage] = 'items per page',\n _a[pagerPageSelection] = 'Select page',\n _a[pagerInfo] = '{0} - {1} of {2} items',\n _a[pagerFirstPage] = 'Go to the first page',\n _a[pagerPreviousPage] = 'Go to the previous page',\n _a[pagerNextPage] = 'Go to the next page',\n _a[pagerLastPage] = 'Go to the last page',\n _a[pagerPage] = 'Page',\n _a[pagerOf] = 'of',\n _a[pagerTotalPages] = '{0}',\n _a[pagerPageNumberLabel] = 'Page',\n _a[pagerAriaKeyshortcuts] = 'Enter ArrowRight ArrowLeft',\n _a[pagerAriaLabel] = 'Pager',\n _a[pagerPageSizeAriaLabel] = 'Page size',\n _a[pagerMobileSelect] = 'Select',\n _a[pagerMoreButtonLabel] = 'More pages',\n _a[sortAriaLabel] = 'Sortable',\n _a[filterAriaLabel] = 'Filter',\n _a[filterEqOperator] = 'Is equal to',\n _a[filterNotEqOperator] = 'Is not equal to',\n _a[filterIsNullOperator] = 'Is null',\n _a[filterIsNotNullOperator] = 'Is not null',\n _a[filterIsEmptyOperator] = 'Is empty',\n _a[filterIsNotEmptyOperator] = 'Is not empty',\n _a[filterStartsWithOperator] = 'Starts with',\n _a[filterContainsOperator] = 'Contains',\n _a[filterNotContainsOperator] = 'Does not contain',\n _a[filterEndsWithOperator] = 'Ends with',\n _a[filterGteOperator] = 'Is greater than or equal to',\n _a[filterGtOperator] = 'Is greater than',\n _a[filterLteOperator] = 'Is less than or equal to',\n _a[filterLtOperator] = 'Is less than',\n _a[filterIsTrue] = 'Is true',\n _a[filterIsFalse] = 'Is false',\n _a[filterAfterOrEqualOperator] = 'Is after or equal to',\n _a[filterAfterOperator] = 'Is after',\n _a[filterBeforeOperator] = 'Is before',\n _a[filterBeforeOrEqualOperator] = 'Is before or equal to',\n _a[filterAndLogic] = 'And',\n _a[filterOrLogic] = 'Or',\n _a[filterAddExpression] = 'Add Expression',\n _a[filterAddGroup] = 'Add Group',\n _a[filterClose] = 'Close',\n _a[filterGroupAriaLabel] = 'Filter toolbar',\n _a[filterExpressionAriaLabel] = 'Filter expression row',\n _a[filterExpressionDropdownAriaLabel] = 'Filter dropdown',\n _a[filterExpressionOperatorDropdownAriaLabel] = 'Filter operator dropdown',\n _a[filterEnumFilterDropdownAriaLabel] = 'Select True/False',\n _a[filterNumericFilterAriaLabel] = 'Enter number',\n _a[filterTextFilterAriaLabel] = 'Enter text',\n _a[columnMenuFilterClearButton] = 'Clear',\n _a[columnMenuFilterSubmitButton] = 'Filter',\n _a[columnMenuFilterTitle] = 'Filter',\n _a[columnMenuSortAscending] = 'Sort Ascending',\n _a[columnMenuSortDescending] = 'Sort Descending',\n _a[columnMenuFilterEqOperator] = 'Is equal to',\n _a[columnMenuFilterNotEqOperator] = 'Is not equal to',\n _a[columnMenuFilterIsNullOperator] = 'Is null',\n _a[columnMenuFilterIsNotNullOperator] = 'Is not null',\n _a[columnMenuFilterIsEmptyOperator] = 'Is empty',\n _a[columnMenuFilterIsNotEmptyOperator] = 'Is not empty',\n _a[columnMenuFilterStartsWithOperator] = 'Starts with',\n _a[columnMenuFilterContainsOperator] = 'Contains',\n _a[columnMenuFilterNotContainsOperator] = 'Does not contain',\n _a[columnMenuFilterEndsWithOperator] = 'Ends with',\n _a[columnMenuFilterGteOperator] = 'Is greater than or equal to',\n _a[columnMenuFilterGtOperator] = 'Is greater than',\n _a[columnMenuFilterLteOperator] = 'Is less than or equal to',\n _a[columnMenuFilterLtOperator] = 'Is less than',\n _a[columnMenuFilterIsTrue] = 'Is true',\n _a[columnMenuFilterAfterOrEqualOperator] = 'Is after or equal to',\n _a[columnMenuFilterAfterOperator] = 'Is after',\n _a[columnMenuFilterBeforeOperator] = 'Is before',\n _a[columnMenuFilterBeforeOrEqualOperator] = 'Is before or equal to',\n _a[columnMenuFilterAndLogic] = 'And',\n _a[columnMenuFilterOrLogic] = 'Or',\n _a);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { messages, pagerMobileSelect, pagerPage, pagerMoreButtonLabel } from '../messages';\nimport { provideLocalizationService } from '@progress/kendo-react-intl';\nvar dots = '...';\n/**\n * @hidden\n */\nvar PagerNumericButtons = /** @class */ (function (_super) {\n __extends(PagerNumericButtons, _super);\n function PagerNumericButtons() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handlePageChange = function (e, page) {\n e.preventDefault();\n _this.props.pageChange(page, e);\n };\n _this.handleSelectPageChange = function (e) {\n e.preventDefault();\n _this.props.pageChange(e.target.value, e);\n };\n return _this;\n }\n PagerNumericButtons.prototype.render = function () {\n var _a;\n var _this = this;\n var localizationService = provideLocalizationService(this);\n var mobileSelectMessage = this.props.messagesMap ? this.props.messagesMap(pagerMobileSelect) :\n ({ messageKey: pagerMobileSelect, defaultMessage: messages[pagerMobileSelect] });\n var pageNumberLabelMessage = this.props.messagesMap ? this.props.messagesMap(pagerPage) :\n ({ messageKey: pagerPage, defaultMessage: messages[pagerPage] });\n var pagerMorePagesLabelMessage = this.props.messagesMap ? this.props.messagesMap(pagerMoreButtonLabel) :\n ({ messageKey: pagerMoreButtonLabel, defaultMessage: messages[pagerMoreButtonLabel] });\n var pagerMoreButtonAriaLabel = localizationService.toLanguageString(pagerMorePagesLabelMessage.messageKey, pagerMorePagesLabelMessage.defaultMessage);\n var prevDots = this.start > 1 && this.renderDots(this.start - 1, pagerMoreButtonAriaLabel);\n var postDots = this.end < this.props.totalPages && this.renderDots(this.end + 1, pagerMoreButtonAriaLabel);\n var prevOptionDots = this.start > 1 && this.renderOptionDots(this.start - 1);\n var postOptionDots = this.end < this.props.totalPages && this.renderOptionDots(this.end + 1);\n var buttons = [];\n for (var idx = this.start; idx <= this.end; idx++) {\n buttons.push(idx);\n }\n var numerics = buttons.map(function (page) { return (React.createElement(Button, { className: classNames({ 'k-selected': _this.props.currentPage === page }), key: page, fillMode: 'flat', themeColor: 'primary', size: _this.props.size, rounded: null, role: \"button\", \"aria-label\": localizationService.toLanguageString(pageNumberLabelMessage.messageKey, pageNumberLabelMessage.defaultMessage) + ' ' + page, \"aria-current\": _this.props.currentPage === page ? true : undefined, onClick: function (e) { return _this.handlePageChange(e, page); } }, page)); });\n var options = buttons.map(function (page) { return (React.createElement(\"option\", { key: page }, page)); });\n return (React.createElement(React.Fragment, null,\n React.createElement(\"select\", { style: { width: '5em', margin: '0px 1em', display: this.props.type === 'dropdown'\n ? 'inline-flex'\n : 'none' }, className: classNames('k-picker k-dropdown-list k-dropdown k-rounded-md', (_a = {},\n _a[\"k-picker-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size,\n _a)), \"aria-label\": localizationService.toLanguageString(mobileSelectMessage.messageKey, mobileSelectMessage.defaultMessage), value: this.props.currentPage, onChange: function (e) { return _this.handleSelectPageChange(e); } },\n prevOptionDots,\n options,\n postOptionDots),\n React.createElement(\"div\", { className: \"k-pager-numbers\", style: { display: this.props.type === 'numbers'\n ? ''\n : 'none' } },\n prevDots,\n numerics,\n postDots)));\n };\n Object.defineProperty(PagerNumericButtons.prototype, \"end\", {\n get: function () {\n return Math.min((this.start + this.props.buttonCount) - 1, this.props.totalPages);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PagerNumericButtons.prototype, \"start\", {\n get: function () {\n var page = this.props.currentPage;\n var buttonCount = this.props.buttonCount;\n if (page > buttonCount) {\n var reminder = (page % buttonCount);\n return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;\n }\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n PagerNumericButtons.prototype.renderDots = function (page, ariaLabel) {\n var _this = this;\n return (React.createElement(Button, { fillMode: 'flat', themeColor: 'primary', size: this.props.size, rounded: null, role: \"button\", \"aria-label\": ariaLabel, onClick: function (e) { return _this.handlePageChange(e, page); } }, dots));\n };\n PagerNumericButtons.prototype.renderOptionDots = function (page) {\n return (React.createElement(\"option\", { value: page }, dots));\n };\n return PagerNumericButtons;\n}(React.Component));\nexport { PagerNumericButtons };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService, provideIntlService } from '@progress/kendo-react-intl';\nimport { messages, pagerOf, pagerPage, pagerTotalPages } from './../messages';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\n/**\n * @hidden\n */\nvar PagerInput = /** @class */ (function (_super) {\n __extends(PagerInput, _super);\n function PagerInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = { page: _this.props.currentPage };\n _this.handleOnChange = function (e) {\n _this.setState({ page: e.target.value });\n if (e.target.value) {\n _this.props.pageChange(e.target.value, e);\n }\n };\n return _this;\n }\n PagerInput.prototype.render = function () {\n var intlService = provideIntlService(this);\n var localizationService = provideLocalizationService(this);\n var pageMessage = this.props.messagesMap ? this.props.messagesMap(pagerPage) :\n ({ messageKey: pagerPage, defaultMessage: messages[pagerPage] });\n var ofMessage = this.props.messagesMap ? this.props.messagesMap(pagerOf) :\n ({ messageKey: pagerOf, defaultMessage: messages[pagerOf] });\n var totalPagesMessage = this.props.messagesMap ? this.props.messagesMap(pagerTotalPages) :\n ({ messageKey: pagerTotalPages, defaultMessage: messages[pagerTotalPages] });\n return (React.createElement(React.Fragment, null,\n React.createElement(\"span\", { className: \"k-pager-input\" },\n React.createElement(\"span\", null, localizationService.toLanguageString(pageMessage.messageKey, pageMessage.defaultMessage)),\n React.createElement(NumericTextBox, { value: this.props.currentPage !== undefined ? this.props.currentPage : this.state.page, onChange: this.handleOnChange, min: 1, spinners: false }),\n React.createElement(\"span\", null, \"\".concat(localizationService.toLanguageString(ofMessage.messageKey, ofMessage.defaultMessage), \" \").concat(intlService\n .format(localizationService.toLanguageString(totalPagesMessage.messageKey, totalPagesMessage.defaultMessage), [\n this.props.totalPages\n ]))))));\n };\n return PagerInput;\n}(React.Component));\nexport { PagerInput };\nregisterForLocalization(PagerInput);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, pagerItemPerPage, pagerPageSizeAriaLabel } from './../messages';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\n/**\n * @hidden\n */\nvar PagerPageSizes = /** @class */ (function (_super) {\n __extends(PagerPageSizes, _super);\n function PagerPageSizes() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.pageSizeChange = function (e) {\n if (_this.props.pageChange) {\n _this.props.pageChange({ skip: 0, take: parseInt(e.target.value, 10) }, e);\n }\n };\n return _this;\n }\n PagerPageSizes.prototype.render = function () {\n var _a = this.props, value = _a.value, pageSizes = _a.pageSizes, pageSize = _a.pageSize, messagesMap = _a.messagesMap;\n var sizes = pageSizes.slice();\n if (value === undefined && sizes.filter(function (s) { return s === pageSize; }).length === 0) {\n sizes.unshift(pageSize);\n }\n var itemPerPageMessage = messagesMap ? messagesMap(pagerItemPerPage) :\n ({ messageKey: pagerItemPerPage, defaultMessage: messages[pagerItemPerPage] });\n var pageSelectionMessage = messagesMap ? messagesMap(pagerPageSizeAriaLabel) :\n ({ messageKey: pagerPageSizeAriaLabel, defaultMessage: messages[pagerPageSizeAriaLabel] });\n return (React.createElement(\"span\", { className: \"k-pager-sizes\" },\n React.createElement(DropDownList, { value: value !== undefined ? value : pageSize, data: sizes, onChange: this.pageSizeChange, ariaLabel: provideLocalizationService(this).toLanguageString(pageSelectionMessage.messageKey, pageSelectionMessage.defaultMessage), size: this.props.size }),\n React.createElement(\"span\", null, provideLocalizationService(this).toLanguageString(itemPerPageMessage.messageKey, itemPerPageMessage.defaultMessage))));\n };\n return PagerPageSizes;\n}(React.Component));\nexport { PagerPageSizes };\nregisterForLocalization(PagerPageSizes);\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-data-tools',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698929209,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { PagerNumericButtons } from './PagerNumericButtons';\nimport { PagerInput } from './PagerInput';\nimport { PagerPageSizes } from './PagerPageSizes';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { messages, pagerFirstPage, pagerLastPage, pagerNextPage, pagerPreviousPage, pagerInfo, pagerAriaKeyshortcuts, pagerAriaLabel } from '../messages';\nimport { registerForIntl, registerForLocalization, provideLocalizationService, provideIntlService } from '@progress/kendo-react-intl';\nimport { classNames, kendoThemeMaps, validatePackage } from '@progress/kendo-react-common';\nimport { caretAltToLeftIcon, caretAltLeftIcon, caretAltRightIcon, caretAltToRightIcon } from '@progress/kendo-svg-icons';\nimport { packageMetadata } from '../package-metadata';\n/**\n * @hidden\n */\nvar RESPONSIVE_BREAKPOINT_MEDIUM = 600;\n/**\n * @hidden\n */\nvar RESPONSIVE_BREAKPOINT_LARGE = 768;\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n function Pager(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this.onPageChange = function (eventData, targetEvent) {\n var event = __assign({ target: _this, syntheticEvent: targetEvent.syntheticEvent, nativeEvent: targetEvent.nativeEvent, targetEvent: targetEvent }, eventData);\n if (_this.props.onPageChange) {\n _this.props.onPageChange.call(undefined, event);\n }\n };\n _this.changePage = function (page, event) {\n if (_this.props.onPageChange && page > 0 && page <= _this.totalPages) {\n _this.props.onPageChange({\n target: _this,\n skip: (page - 1) * _this.props.take,\n take: _this.props.take,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n targetEvent: event\n });\n }\n };\n _this.onWindowResize = function () {\n var element = _this.element;\n if (!element || !_this.props.responsive) {\n return;\n }\n var width = element.offsetWidth;\n if (width < RESPONSIVE_BREAKPOINT_MEDIUM) {\n _this.setState({ showPagerSizes: false });\n }\n else if (width >= RESPONSIVE_BREAKPOINT_MEDIUM && width < RESPONSIVE_BREAKPOINT_LARGE) {\n _this.setState({ showPagerInfo: false, showPagerSizes: true });\n }\n else {\n _this.setState({ showPagerInfo: true, showPagerSizes: true });\n }\n };\n validatePackage(packageMetadata);\n _this.state = { showPagerSizes: true, showPagerInfo: true };\n return _this;\n }\n Object.defineProperty(Pager.prototype, \"isRtl\", {\n get: function () {\n return this.props.dir === 'rtl';\n },\n enumerable: false,\n configurable: true\n });\n ;\n Object.defineProperty(Pager.prototype, \"element\", {\n /**\n * Returns the HTML element of the Pager component.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Pager.prototype.componentDidMount = function () {\n window.addEventListener('resize', this.onWindowResize);\n this.onWindowResize();\n };\n /**\n * @hidden\n */\n Pager.prototype.componentWillUnmount = function () {\n window.removeEventListener('resize', this.onWindowResize);\n };\n /**\n * @hidden\n */\n Pager.prototype.render = function () {\n var _a;\n var _this = this;\n var _b = this.state, showPagerSizes = _b.showPagerSizes, showPagerInfo = _b.showPagerInfo;\n var _c = this.props, skip = _c.skip, take = _c.take, total = _c.total, pageSizes = _c.pageSizes, size = _c.size, responsive = _c.responsive, messagesMap = _c.messagesMap, pageSizeValue = _c.pageSizeValue;\n var localizationService = provideLocalizationService(this);\n var intlService = provideIntlService(this);\n var currentPage = Math.floor(skip / take) + 1;\n var changer = this.props.type === 'numeric' ?\n (React.createElement(PagerNumericButtons, { type: (responsive && !showPagerSizes) ? 'dropdown' : 'numbers', buttonCount: this.props.buttonCount || 0, totalPages: this.totalPages, currentPage: currentPage, pageChange: this.changePage, messagesMap: this.props.messagesMap, size: this.props.size })) : (React.createElement(PagerInput, { buttonCount: this.props.buttonCount || 0, totalPages: this.totalPages, currentPage: currentPage, pageChange: this.changePage, messagesMap: messagesMap, size: this.props.size }));\n var firstPageMessage = messagesMap ? messagesMap(pagerFirstPage) :\n ({ messageKey: pagerFirstPage, defaultMessage: messages[pagerFirstPage] });\n var previousPageMessage = messagesMap ? messagesMap(pagerPreviousPage) :\n ({ messageKey: pagerPreviousPage, defaultMessage: messages[pagerPreviousPage] });\n var nextPageMessage = messagesMap ? messagesMap(pagerNextPage) :\n ({ messageKey: pagerNextPage, defaultMessage: messages[pagerNextPage] });\n var lastPageMessage = messagesMap ? messagesMap(pagerLastPage) :\n ({ messageKey: pagerLastPage, defaultMessage: messages[pagerLastPage] });\n var infoMessage = messagesMap ? messagesMap(pagerInfo) :\n ({ messageKey: pagerInfo, defaultMessage: messages[pagerInfo] });\n var ariaKeyshortcutsMessage = messagesMap ? messagesMap(pagerAriaKeyshortcuts) :\n ({ messageKey: pagerAriaKeyshortcuts, defaultMessage: messages[pagerAriaKeyshortcuts] });\n var ariaLabelMessage = messagesMap ? messagesMap(pagerAriaLabel) :\n ({ messageKey: pagerAriaLabel, defaultMessage: messages[pagerAriaLabel] });\n var first, prev, next, last;\n if (this.props.previousNext) {\n first = this.renderButton(1, 'k-pager-nav k-pager-first' + (currentPage === 1 ? ' k-disabled' : ''), localizationService.toLanguageString(firstPageMessage.messageKey, firstPageMessage.defaultMessage), this.isRtl ? 'caret-alt-to-right' : 'caret-alt-to-left', this.isRtl ? caretAltToRightIcon : caretAltToLeftIcon, (currentPage === 1 ? true : undefined));\n prev = this.renderButton(currentPage - 1, 'k-pager-nav' + (currentPage === 1 ? ' k-disabled' : ''), localizationService.toLanguageString(previousPageMessage.messageKey, previousPageMessage.defaultMessage), this.isRtl ? 'caret-alt-right' : 'caret-alt-left', this.isRtl ? caretAltRightIcon : caretAltLeftIcon, (currentPage === 1 ? true : undefined));\n next = this.renderButton(currentPage + 1, 'k-pager-nav' + (currentPage >= this.totalPages ? ' k-disabled' : ''), localizationService.toLanguageString(nextPageMessage.messageKey, nextPageMessage.defaultMessage), this.isRtl ? 'caret-alt-left' : 'caret-alt-right', this.isRtl ? caretAltLeftIcon : caretAltRightIcon, (currentPage >= this.totalPages ? true : undefined));\n last = this.renderButton(this.totalPages, 'k-pager-nav k-pager-last' + (currentPage >= this.totalPages ? ' k-disabled' : ''), localizationService.toLanguageString(lastPageMessage.messageKey, lastPageMessage.defaultMessage), this.isRtl ? 'caret-alt-to-left' : 'caret-alt-to-right', this.isRtl ? caretAltToLeftIcon : caretAltToRightIcon, (currentPage >= this.totalPages ? true : undefined));\n }\n var pagerPageSizes = pageSizes && (React.createElement(PagerPageSizes, { pageChange: this.onPageChange, pageSize: take, pageSizes: pageSizes, value: pageSizeValue, messagesMap: messagesMap, size: this.props.size }));\n var info = this.props.info && (React.createElement(\"span\", { className: \"k-pager-info\" }, intlService\n .format(localizationService.toLanguageString(infoMessage.messageKey, infoMessage.defaultMessage), [\n Math.min(skip + 1, total),\n Math.min(skip + take, total),\n total\n ])));\n return (React.createElement(\"div\", { className: classNames('k-pager', (_a = {},\n _a[\"k-pager-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a), this.props.className), style: this.props.style, role: \"application\", \"aria-roledescription\": \"pager\", dir: this.props.dir, \"aria-keyshortcuts\": localizationService.toLanguageString(ariaKeyshortcutsMessage.messageKey, ariaKeyshortcutsMessage.defaultMessage), \"aria-label\": localizationService.toLanguageString(ariaLabelMessage.messageKey, ariaLabelMessage.defaultMessage), ref: function (element) { return _this._element = element; } },\n React.createElement(\"div\", { className: classNames('k-pager-numbers-wrap') },\n first,\n prev,\n changer,\n next,\n last),\n responsive ? (showPagerSizes && pagerPageSizes) : pagerPageSizes,\n responsive ? (showPagerInfo && info) : info));\n };\n Pager.prototype.renderButton = function (page, className, title, icon, svgIcon, isDisabled) {\n var _this = this;\n return (React.createElement(Button, { fillMode: 'flat', themeColor: 'base', size: this.props.size, rounded: null, className: className, icon: icon, svgIcon: svgIcon, title: title, role: \"button\", \"aria-disabled\": isDisabled, onClick: function (e) {\n e.preventDefault();\n _this.changePage(page, e);\n } }));\n };\n Object.defineProperty(Pager.prototype, \"totalPages\", {\n get: function () {\n return Math.ceil((this.props.total || 0) / this.props.take);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Pager.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n total: PropTypes.number.isRequired,\n skip: PropTypes.number.isRequired,\n take: PropTypes.number.isRequired,\n buttonCount: PropTypes.number,\n info: PropTypes.bool,\n type: PropTypes.oneOf(['numeric', 'input']),\n pageSizes: PropTypes.arrayOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ])),\n previousNext: PropTypes.bool,\n onPageChange: PropTypes.func,\n messagesMap: PropTypes.func,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n dir: PropTypes.string\n };\n /**\n * @hidden\n */\n Pager.defaultProps = {\n buttonCount: 10,\n info: true,\n type: 'numeric',\n size: 'medium'\n };\n return Pager;\n}(React.Component));\nexport { Pager };\nregisterForIntl(Pager);\nregisterForLocalization(Pager);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Draggable, useDocument } from '@progress/kendo-react-common';\nimport { closestTagName, getColumnIndex, getOffset, getRowIndex, getSelectionOptions, relativeContextElement } from './utils';\nimport { TABLE_PREVENT_SELECTION_ELEMENT } from './constants';\n/** @hidden */\nexport var TableSelection = function (props) {\n var _a;\n var onRelease = props.onRelease, childRef = props.childRef;\n var _b = getSelectionOptions(props.selectable), selectionEnabled = _b.enabled, selectionDrag = _b.drag, selectionMode = _b.mode, selectionCell = _b.cell;\n var draggableRef = React.useRef(null);\n var overlayElementRef = React.useRef(null);\n var dragStartRef = React.useRef({ clientX: 0, clientY: 0 });\n var _c = React.useState(null), overlaySettings = _c[0], setOverlaySettings = _c[1];\n var offsetParentRef = React.useRef();\n var isDraggedRef = React.useRef(false);\n var isPreventedRef = React.useRef(false);\n var onPressHandler = React.useCallback(function (eventData) {\n var event = eventData.event;\n isPreventedRef.current = event.originalEvent.target.hasAttribute(TABLE_PREVENT_SELECTION_ELEMENT);\n if (isPreventedRef.current || !draggableRef.current) {\n return;\n }\n offsetParentRef.current = relativeContextElement(draggableRef.current.element);\n dragStartRef.current = {\n clientY: event.clientY,\n clientX: event.clientX\n };\n }, []);\n var onDragHandler = React.useCallback(function (eventData) {\n var event = eventData.event;\n var _a = dragStartRef.current, clientX = _a.clientX, clientY = _a.clientY;\n if (isPreventedRef.current) {\n return;\n }\n if (!selectionDrag || selectionMode === 'single') {\n return;\n }\n if (Math.abs(clientY - event.clientY) > 5 || Math.abs(clientX - event.clientX) > 5) {\n isDraggedRef.current = true;\n }\n if (isDraggedRef.current) {\n var offset = getOffset(offsetParentRef.current);\n setOverlaySettings({\n top: Math.min(clientY, event.clientY) - offset.top,\n left: Math.min(clientX, event.clientX) - offset.left,\n width: Math.abs(event.clientX - clientX),\n height: Math.abs(event.clientY - clientY)\n });\n }\n }, [setOverlaySettings, selectionDrag, selectionMode]);\n var onReleaseHandler = React.useCallback(function (eventData) {\n var event = eventData.event;\n var _a = dragStartRef.current, clientX = _a.clientX, clientY = _a.clientY;\n if (isPreventedRef.current || !draggableRef.current) {\n return;\n }\n var currentDocument = draggableRef.current.element && draggableRef.current.element.ownerDocument;\n if (!currentDocument) {\n return;\n }\n if (!isDraggedRef.current) {\n var startElement = currentDocument.elementFromPoint(clientX, clientY);\n if (!startElement) {\n return;\n }\n var tdElement = closestTagName(startElement, 'TD');\n var trElement = closestTagName(startElement, 'TR');\n var colIndex = getColumnIndex(tdElement);\n var rowIndex = getRowIndex(trElement);\n if (tdElement && trElement && rowIndex !== undefined && colIndex !== undefined) {\n onRelease({\n nativeEvent: event.originalEvent,\n startRowIndex: rowIndex,\n startColIndex: colIndex,\n endRowIndex: rowIndex,\n endColIndex: colIndex,\n altKey: event.altKey,\n shiftKey: event.shiftKey,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n mode: selectionMode,\n cell: selectionCell,\n isDrag: false\n });\n }\n }\n else {\n var top_1 = Math.min(clientY, event.clientY);\n var left = Math.min(clientX, event.clientX);\n var bottom = Math.max(clientY, event.clientY);\n var right = Math.max(clientX, event.clientX);\n var overlayElement = overlayElementRef.current;\n if (!overlayElement) {\n return;\n }\n overlayElement.style.visibility = 'hidden';\n var startElement = currentDocument.elementFromPoint(left, top_1);\n var endElement = currentDocument.elementFromPoint(right, bottom);\n overlayElement.style.visibility = '';\n if (!startElement || !endElement) {\n return;\n }\n var startTdElement = closestTagName(startElement, 'TD');\n var startTrElement = closestTagName(startTdElement, 'TR');\n var endTdElement = closestTagName(endElement, 'TD');\n var endTrElement = closestTagName(endTdElement, 'TR');\n var startColIndex = getColumnIndex(startTdElement);\n var startRowIndex = getRowIndex(startTrElement);\n var endColIndex = getColumnIndex(endTdElement);\n var endRowIndex = getRowIndex(endTrElement);\n if (startColIndex !== undefined &&\n startRowIndex !== undefined &&\n endColIndex !== undefined &&\n endRowIndex !== undefined) {\n onRelease({\n nativeEvent: event.originalEvent,\n startRowIndex: startRowIndex,\n startColIndex: startColIndex,\n endRowIndex: endRowIndex,\n endColIndex: endColIndex,\n altKey: event.altKey,\n shiftKey: event.shiftKey,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n mode: selectionMode,\n cell: selectionCell,\n isDrag: true\n });\n }\n }\n setOverlaySettings(null);\n isDraggedRef.current = false;\n dragStartRef.current = { clientX: 0, clientY: 0 };\n }, [setOverlaySettings, selectionMode, selectionCell, onRelease]);\n var getDocument = useDocument(overlayElementRef);\n if (!selectionEnabled) {\n return (React.cloneElement(React.Children.only(props.children), { ref: childRef }));\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(Draggable, { onPress: onPressHandler, onDrag: onDragHandler, onRelease: onReleaseHandler, ref: draggableRef, childRef: childRef }, props.children),\n overlaySettings &&\n ReactDOM.createPortal(React.createElement(\"div\", { ref: overlayElementRef, style: __assign(__assign({}, overlaySettings), { position: 'fixed' }), className: 'k-marquee k-marquee-color' }), (_a = getDocument()) === null || _a === void 0 ? void 0 : _a.body)));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DropClue = /** @class */ (function (_super) {\n __extends(DropClue, _super);\n function DropClue(props) {\n var _this = _super.call(this, props) || this;\n _this.state = {\n height: 0,\n visible: false,\n left: 0,\n top: 0\n };\n _this.hiddenElementRef = React.createRef();\n return _this;\n }\n DropClue.prototype.render = function () {\n var hiddenElement = this.hiddenElementRef.current;\n var dropClue = this.state.visible && canUseDOM && createPortal((React.createElement(\"div\", { className: \"k-grouping-dropclue\", style: {\n zIndex: 10000,\n display: 'block',\n top: this.state.top + 'px',\n left: this.state.left + 'px',\n height: this.state.height + 'px'\n } })), (hiddenElement && hiddenElement.ownerDocument ?\n hiddenElement.ownerDocument.body :\n document.body));\n return (React.createElement(React.Fragment, null,\n dropClue,\n React.createElement(\"div\", { ref: this.hiddenElementRef, style: { display: 'none' } })));\n };\n return DropClue;\n}(React.PureComponent));\nexport { DropClue };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { canUseDOM, IconWrap } from '@progress/kendo-react-common';\nimport { cancelIcon, plusIcon } from '@progress/kendo-svg-icons';\n/**\n * @hidden\n */\nvar DragClue = /** @class */ (function (_super) {\n __extends(DragClue, _super);\n function DragClue(props) {\n var _this = _super.call(this, props) || this;\n _this.elementRef = React.createRef();\n _this.state = {\n visible: false,\n top: 0,\n left: 0,\n innerText: '',\n status: 'k-i-cancel'\n };\n _this.hiddenElementRef = React.createRef();\n return _this;\n }\n Object.defineProperty(DragClue.prototype, \"element\", {\n get: function () {\n return this.elementRef.current;\n },\n enumerable: false,\n configurable: true\n });\n DragClue.prototype.render = function () {\n var hiddenElement = this.hiddenElementRef.current;\n var status = this.state.status;\n var dragClue = this.state.visible && canUseDOM && createPortal((React.createElement(\"div\", { ref: this.elementRef, className: \"k-header k-drag-clue\", style: {\n display: 'block',\n position: 'absolute',\n zIndex: 20000,\n padding: '8px 12px',\n top: this.state.top + 'px',\n left: this.state.left + 'px'\n } },\n React.createElement(IconWrap, { className: 'k-drag-status', name: status, icon: status === 'k-i-cancel' ? cancelIcon : plusIcon }),\n this.state.innerText)), (hiddenElement && hiddenElement.ownerDocument ?\n hiddenElement.ownerDocument.body :\n document.body));\n return (React.createElement(React.Fragment, null,\n dragClue,\n React.createElement(\"div\", { ref: this.hiddenElementRef, style: { display: 'none' } })));\n };\n return DragClue;\n}(React.PureComponent));\nexport { DragClue };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames, getScrollbarWidth, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { isRtl, tableKeyboardNavigationHeaderAttributes } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.headerWrap = null;\n _this.table = null;\n _this.syncScroll = false;\n _this.scrollbarWidth = getScrollbarWidth();\n _this.onScroll = function (_event) {\n if (_this.syncScroll) {\n _this.syncScroll = false;\n return;\n }\n if (!_this.headerWrap) {\n return;\n }\n var scrollLeft = _this.headerWrap.scrollLeft;\n var scrollableDataElement = _this.props.scrollableDataElement();\n if (scrollableDataElement && scrollableDataElement.scrollLeft !== scrollLeft) {\n scrollableDataElement.scrollLeft = scrollLeft;\n }\n };\n return _this;\n }\n Object.defineProperty(Header.prototype, \"element\", {\n get: function () {\n return this.props.elemRef.current;\n },\n enumerable: false,\n configurable: true\n });\n Header.prototype.componentDidMount = function () {\n var rtl = isRtl(this.element);\n if (this.props.columnResize) {\n this.props.columnResize.setIsRtl(rtl);\n }\n this.forceUpdate();\n };\n /**\n *\n * @param scrollLeft - Scrolls to the left (in pixels).\n */\n Header.prototype.setScrollLeft = function (scrollLeft) {\n if (this.headerWrap && this.headerWrap.scrollLeft !== scrollLeft) {\n this.syncScroll = true;\n this.headerWrap.scrollLeft = scrollLeft;\n }\n };\n /**\n *\n * @param width - Scrolls the width (in pixels).\n */\n Header.prototype.setWidth = function (width) {\n if (this.table) {\n this.table.style.width = width + 'px';\n }\n };\n Header.prototype.render = function () {\n var _a;\n var _this = this;\n if (!this.props.staticHeaders) {\n return (React.createElement(\"thead\", __assign({ role: \"presentation\", className: classNames('k-table-thead', { 'k-grid-draggable-header': this.props.draggable }) }, tableKeyboardNavigationHeaderAttributes),\n this.props.headerRow,\n this.props.filterRow));\n }\n return (React.createElement(\"div\", { ref: this.props.elemRef, className: classNames('k-grid-header', { 'k-grid-draggable-header': this.props.draggable }), role: \"presentation\" },\n React.createElement(\"div\", { ref: function (div) { _this.headerWrap = div; }, className: \"k-grid-header-wrap\", style: this.scrollbarWidth ? {} : { borderWidth: 0 }, onScroll: this.onScroll, role: \"presentation\" },\n React.createElement(\"table\", { ref: function (table) { _this.table = table; }, className: classNames('k-table k-grid-header-table', (_a = {\n 'k-table-md': !this.props.size\n },\n _a[\"k-table-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size,\n _a), this.props.className), role: \"presentation\" },\n React.createElement(\"colgroup\", { ref: function (e) { _this.props.columnResize.colGroupHeader = e; } }, this.props.cols),\n React.createElement(\"thead\", __assign({ className: 'k-table-thead', role: \"rowgroup\" }, tableKeyboardNavigationHeaderAttributes),\n this.props.headerRow,\n this.props.filterRow)))));\n };\n return Header;\n}(React.Component));\nexport { Header };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnDraggable = /** @class */ (function (_super) {\n __extends(ColumnDraggable, _super);\n function ColumnDraggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.draggable = null;\n /**\n * @hidden\n */\n _this.onPress = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.pressHandler) {\n _this.props.pressHandler(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.dragHandler) {\n _this.props.dragHandler(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.releaseHandler) {\n _this.props.releaseHandler(data.event);\n }\n };\n return _this;\n }\n ColumnDraggable.prototype.render = function () {\n var _this = this;\n return (React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, hint: this.props.dragClue, autoScroll: { boundaryElementRef: this.props.headerRef, direction: { horizontal: true, vertical: false } }, scrollContainer: this.props.containerRef || undefined, ref: function (component) { _this.draggable = component; } },\n React.createElement(\"tr\", { className: 'k-table-row', style: { touchAction: 'none' }, role: \"row\", \"aria-rowindex\": this.props.ariaRowIndex }, this.props.children)));\n };\n return ColumnDraggable;\n}(React.PureComponent));\nexport { ColumnDraggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnResizer = /** @class */ (function (_super) {\n __extends(ColumnResizer, _super);\n function ColumnResizer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.draggable = null;\n _this.isDragged = false;\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n _this.isDragged = true;\n var element = _this.draggable && _this.draggable.element;\n if (element) {\n _this.props.resize(data.event, element, false);\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n if (!_this.isDragged) {\n return;\n }\n var element = _this.draggable && _this.draggable.element;\n if (element) {\n _this.props.resize(data.event, element, true);\n }\n _this.isDragged = false;\n };\n /**\n * @hidden\n */\n _this.onDoubleClick = function (event) {\n if (_this.isDragged) {\n return;\n }\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.autofit) {\n _this.props.autofit(event, element);\n }\n };\n return _this;\n }\n ColumnResizer.prototype.render = function () {\n var _this = this;\n return (React.createElement(Draggable, { onPress: function (e) { e.event.originalEvent.stopPropagation(); }, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n React.createElement(\"span\", { className: \"k-column-resizer\", style: { touchAction: 'none' }, draggable: false, onDoubleClick: this.onDoubleClick })));\n };\n return ColumnResizer;\n}(React.Component));\nexport { ColumnResizer };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useTableKeyboardNavigation } from '../navigation/hooks';\n/**\n * @hidden\n */\nexport var HeaderThElement = function (props) {\n var ariaSort = props.ariaSort, colSpan = props.colSpan, rowSpan = props.rowSpan, className = props.className, style = props.style, columnId = props.columnId, onKeyDown = props.onKeyDown, navigatable = props.navigatable, ariaColumnIndex = props.ariaColumnIndex, ariaLabel = props.ariaLabel, role = props.role, ariaSelected = props.ariaSelected;\n var navigationAttributes = useTableKeyboardNavigation(columnId, navigatable);\n return (React.createElement(\"th\", __assign({ \"aria-sort\": ariaSort, \"aria-label\": ariaLabel, \"aria-colindex\": ariaColumnIndex, \"aria-selected\": ariaSelected, \n // TODO: Enable this with React 18. Currently throws warnings\n // aria-description={ariaDescription}\n colSpan: colSpan, rowSpan: rowSpan, className: className, style: style, onKeyDown: onKeyDown, role: role }, navigationAttributes), props.children));\n};\nHeaderThElement.displayName = 'KendoReactHeaderThElement';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { normalize } from '../interfaces/GridSortSettings';\nimport { ColumnDraggable } from '../drag/ColumnDraggable';\nimport { GridHeaderCell } from './GridHeaderCell';\nimport { classNames, IconWrap, Keys } from '@progress/kendo-react-common';\nimport { HeaderThElement, ColumnResizer } from '@progress/kendo-react-data-tools';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, sortAriaLabel } from '../messages';\nimport { sortAscSmallIcon, sortDescSmallIcon } from '@progress/kendo-svg-icons';\nimport { resolveCells } from '../utils';\n/**\n * @hidden\n */\nvar sortSeqMap = {\n true: { 'asc': 'desc', 'desc': '', '': 'asc' },\n false: { 'asc': 'desc', 'desc': 'asc', '': 'asc' }\n};\n/**\n * @hidden\n */\nvar ariaSortMap = {\n 'none': 'none',\n 'asc': 'ascending',\n 'desc': 'descending'\n};\n/**\n * @hidden\n */\nvar HeaderRow = /** @class */ (function (_super) {\n __extends(HeaderRow, _super);\n function HeaderRow(props) {\n var _this = _super.call(this, props) || this;\n _this.serviceIndex = 0;\n _this.index = -1;\n _this.cellKeyDown = function (event, column) {\n if (event.isDefaultPrevented()) {\n return;\n }\n if (event.keyCode === Keys.enter) {\n _this.cellClick(event, column);\n }\n };\n _this.cells = function (rowIndexes) { return rowIndexes.map(function (columnIndex) {\n var column = _this.props.columns[columnIndex];\n var sortable = _this.props.sortable && column.sortable;\n var sortIndex = _this.props.sort ? _this.props.sort.findIndex(function (s) { return s.field === column.field; }) : -1;\n var sortDir = sortIndex >= 0 ? ((_this.props.sort)[sortIndex].dir || 'none') : 'none';\n var columnMenu = (column.columnMenu === null) ? null : (column.columnMenu || _this.props.columnMenu);\n var className = classNames({\n 'k-first': column.kFirst,\n 'k-filterable': Boolean(columnMenu),\n 'k-table-th': true,\n 'k-header': true,\n 'k-grid-header-sticky': column.locked,\n 'k-sorted': _this.props.sort && _this.props.sort.some(function (descriptor) { return descriptor.field === column.field; })\n }, column.headerClassName);\n var style = column.left !== undefined\n ? !_this.props.isRtl\n ? { left: column.left, right: column.right }\n : { left: column.right, right: column.left }\n : {};\n var sortLabel = intl(_this).toLanguageString(sortAriaLabel, messages[sortAriaLabel]);\n var ariaAttrs = column.isAccessible ? {\n ariaSort: ariaSortMap[sortDir],\n role: 'columnheader',\n ariaColumnIndex: column.ariaColumnIndex,\n ariaSelected: false,\n ariaDescription: sortable ? sortLabel : ''\n } : {\n 'role': 'presentation'\n };\n var key = (column.declarationIndex >= 0) ? ++_this.index : --_this.serviceIndex;\n var HeaderCell = column.headerCell ? column.headerCell : GridHeaderCell;\n var headerCell = (React.createElement(HeaderCell, { key: 1, field: column.field, onClick: sortable && (function (e) { return _this.cellClick(e, column); }) || undefined, selectionChange: _this.props.selectionChange, title: column.title, selectionValue: column.headerSelectionValue, render: _this.props.cellRender, children: _this.sortIcon(sortIndex), columnMenuWrapperProps: {\n column: {\n field: column.field,\n title: column.title,\n locked: column.locked,\n filter: column.filter,\n id: column.id\n },\n sortable: sortable && _this.props.sortable,\n sort: _this.props.sort,\n onSortChange: _this.props.sortChange,\n filter: _this.props.filter,\n filterable: _this.props.filterable && column.filterable,\n filterOperators: _this.props.filterOperators,\n onFilterChange: _this.props.filterChange,\n group: _this.props.group,\n groupable: _this.props.groupable,\n onGroupChange: _this.props.groupChange,\n columnMenu: columnMenu\n } }));\n var thProps = __assign(__assign({}, ariaAttrs), { key: key, colSpan: column.colSpan, rowSpan: column.rowSpan, className: className, style: style, columnId: column.id, navigatable: column.navigatable, onKeyDown: sortable && (function (e) { return _this.cellKeyDown(e, column); }) || undefined, role: 'columnheader' });\n var content = [\n headerCell,\n (_this.props.columnResize && _this.props.columnResize.resizable && column.resizable\n && React.createElement(ColumnResizer, { key: 2, resize: function (e, element, end) {\n return _this.props.columnResize &&\n _this.props.columnResize.dragHandler(e, column, element, end);\n }, autofit: function (e) {\n return _this.props.columnResize &&\n _this.props.columnResize.dblClickHandler(e, [column.id]);\n } }))\n ];\n var customCells = resolveCells(_this.props.cells, column.cells);\n if (customCells && customCells.headerCell) {\n var CustomCell = customCells.headerCell;\n return (React.createElement(CustomCell, { key: key, thProps: thProps, index: columnIndex }, content));\n }\n return (React.createElement(HeaderThElement, __assign({}, thProps, { key: key }), content));\n }); };\n _this.cellClick = _this.cellClick.bind(_this);\n return _this;\n }\n HeaderRow.prototype.cellClick = function (e, column) {\n e.preventDefault();\n if (!this.props.sortChange) {\n return;\n }\n var _a = normalize(this.props.sortable || false, column.sortable || false), allowUnsort = _a.allowUnsort, mode = _a.mode;\n var oldDescriptor = (this.props.sort || []).filter(function (d) { return d.field === column.field; })[0];\n var dir = sortSeqMap[allowUnsort][oldDescriptor && oldDescriptor.dir || ''];\n var newDescriptor = (mode === 'single') ?\n [] : (this.props.sort || []).filter(function (d) { return d.field !== column.field; });\n if (dir !== '' && column.field) {\n newDescriptor.push({ field: column.field, dir: dir });\n }\n this.props.sortChange(newDescriptor, e);\n };\n HeaderRow.prototype.sortIcon = function (sortIndex) {\n if (!this.props.sort) {\n return null;\n }\n return sortIndex >= 0 && [\n React.createElement(\"span\", { key: 1, className: 'k-sort-icon' },\n React.createElement(IconWrap, { name: 'sort-' + this.props.sort[sortIndex].dir + '-small', icon: this.props.sort[sortIndex].dir === 'asc' ? sortAscSmallIcon : sortDescSmallIcon })),\n this.props.sort.length > 1 &&\n React.createElement(\"span\", { key: 2, className: 'k-sort-icon' },\n React.createElement(\"span\", { className: \"k-sort-order\" }, sortIndex + 1))\n ];\n };\n HeaderRow.prototype.render = function () {\n var _this = this;\n this.serviceIndex = 0;\n this.index = -1;\n return this.props.columnsMap.map(function (rowIndexes, i) {\n return _this.props.pressHandler && (React.createElement(ColumnDraggable, { key: i, pressHandler: _this.props.pressHandler, dragHandler: _this.props.dragHandler, releaseHandler: _this.props.releaseHandler, ariaRowIndex: i + 1, dragClue: _this.props.dragClue, headerRef: _this.props.headerRef, containerRef: _this.props.containerRef }, _this.cells(rowIndexes))) || React.createElement(\"tr\", { className: 'k-table-row', role: \"row\", \"aria-rowindex\": i + 1 }, _this.cells(rowIndexes));\n });\n };\n return HeaderRow;\n}(React.Component));\nexport { HeaderRow };\nregisterForLocalization(HeaderRow);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { GridFilterCell } from '../cells/GridFilterCell';\nimport { operatorMap, booleanFilterValues, getFilterType } from '../filterCommon';\nimport { tableKeyboardNavigationTools as navigationTools, HeaderThElement } from '@progress/kendo-react-data-tools';\nimport { filterAriaLabel, messages } from '../messages';\nimport { classNames } from '@progress/kendo-react-common';\nimport { resolveCells } from '../utils';\n/**\n * @hidden\n */\nexport var FILTER_ROW_CLASS = 'k-table-row k-filter-row';\n/**\n *\n * @hidden\n */\nvar FilterRow = /** @class */ (function (_super) {\n __extends(FilterRow, _super);\n function FilterRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterRow.prototype.headerCellClassName = function (field, locked) {\n var result = \"\".concat(locked ? 'k-grid-header-sticky' : '');\n if (this.props.sort &&\n this.props.sort.filter(function (descriptor) { return descriptor.field === field; }).length > 0) {\n result += ' k-sorted';\n }\n return result;\n };\n FilterRow.prototype.setFilter = function (value, operator, field, e) {\n if (!this.props.filterChange) {\n return;\n }\n var filters = [];\n if (value !== '' && value !== null || operator !== '') {\n filters.push({\n field: field,\n operator: operator,\n value: value\n });\n }\n if (this.props.filter && this.props.filter.filters) {\n var oldFilters = this.props.filter.filters || [];\n oldFilters.forEach(function (filter) {\n var descriptor = filter;\n if (descriptor && descriptor.field !== field) {\n filters.push(descriptor);\n }\n });\n }\n var logic = this.props.filter && this.props.filter.logic ? this.props.filter.logic : 'and';\n this.props.filterChange(filters.length > 0 ? { logic: logic, filters: filters } : null, e);\n };\n FilterRow.prototype.render = function () {\n var _this = this;\n var intl = provideLocalizationService(this);\n var oldFilters = this.props.filter && this.props.filter.filters || [];\n var activeFilter = function (field) {\n if (field === undefined) {\n return;\n }\n var currentFilters = oldFilters.filter(function (filter) { return filter.field === field; });\n return currentFilters.length ? currentFilters[0] : undefined;\n };\n var serviceIndex = 0, index = -1;\n var filterCells = this.props.columns.filter(function (c) { return c.children.length === 0; })\n .map(function (column) {\n var filterType = getFilterType(column.filter);\n var currentActiveFilter = activeFilter(column.field);\n var ariaLabel = column.filterable ? intl.toLanguageString(filterAriaLabel, messages[filterAriaLabel]) : undefined;\n var value = currentActiveFilter && currentActiveFilter.value;\n if (value === undefined) {\n value = filterType === 'text' ? '' : null;\n }\n var filterCellProps = column.filterable && {\n render: _this.props.cellRender,\n field: column.field,\n title: column.filterTitle,\n value: value,\n operator: currentActiveFilter && currentActiveFilter.operator,\n operators: operatorMap(_this.props.filterOperators[filterType] || [], intl),\n booleanValues: operatorMap(booleanFilterValues, intl),\n filterType: filterType,\n ariaLabel: ariaLabel,\n onChange: function (e) { _this.setFilter(e.value, e.operator, column.field, e.syntheticEvent); }\n };\n var key = (column.declarationIndex >= 0) ? ++index : --serviceIndex;\n var ariaAttrs = {\n ariaLabel: ariaLabel,\n ariaColumnIndex: column.ariaColumnIndex\n };\n var style = column.left !== undefined\n ? !_this.props.isRtl\n ? { left: column.left, right: column.right }\n : { left: column.right, right: column.left }\n : {};\n var thProps = __assign({ columnId: navigationTools.getFilterColumnId(column.id), navigatable: column.navigatable, style: style, className: classNames('k-table-th', _this.headerCellClassName(column.field, column.locked) || undefined), role: 'columnheader' }, ariaAttrs);\n var content = (filterCellProps && (column.filterCell ?\n React.createElement(column.filterCell, __assign({}, filterCellProps)) :\n React.createElement(GridFilterCell, __assign({ size: _this.props.size }, filterCellProps))));\n var customCells = resolveCells(_this.props.cells, column.cells);\n if (customCells && customCells.filterCell) {\n var CustomCell = customCells.filterCell;\n return (React.createElement(CustomCell, __assign({ key: key }, filterCellProps, { thProps: thProps, index: index }), content));\n }\n return (React.createElement(HeaderThElement, __assign({ key: key }, thProps), content));\n });\n return React.createElement(\"tr\", { className: FILTER_ROW_CLASS, \"aria-rowindex\": this.props.ariaRowIndex, role: \"row\" }, filterCells);\n };\n return FilterRow;\n}(React.Component));\nexport { FilterRow };\nregisterForLocalization(FilterRow);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Draggable, IconWrap } from '@progress/kendo-react-common';\nimport { registerForLocalization } from '@progress/kendo-react-intl';\nimport { sortAscSmallIcon, sortDescSmallIcon, xCircleIcon } from '@progress/kendo-svg-icons';\n/**\n * @hidden\n */\nvar GroupingIndicator = /** @class */ (function (_super) {\n __extends(GroupingIndicator, _super);\n function GroupingIndicator() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.draggable = null;\n /**\n * @hidden\n */\n _this.onPress = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.onPress) {\n _this.props.onPress(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.onDrag) {\n _this.props.onDrag(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.onRelease) {\n _this.props.onRelease(data.event);\n }\n };\n _this.sortChange = function (event) {\n event.preventDefault();\n if (_this.props.onSortChange) {\n var sort = (_this.props.dir === 'asc') ? 'desc' : 'asc';\n _this.props.onSortChange(event, sort);\n }\n };\n _this.groupRemove = function (event) {\n event.preventDefault();\n event.stopPropagation();\n if (_this.props.onRemove) {\n _this.props.onRemove(event);\n }\n };\n _this.onContextMenu = function (event) {\n var dataItem = {\n title: _this.props.title,\n dir: _this.props.dir,\n index: _this.props.index\n };\n if (_this.props.onContextMenu) {\n _this.props.onContextMenu.call(undefined, event, { dataItem: __assign({}, dataItem) });\n }\n };\n return _this;\n }\n GroupingIndicator.prototype.render = function () {\n var _this = this;\n var dir = this.props.dir;\n return (React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n React.createElement(\"div\", { className: \"k-chip k-chip-md k-chip-solid k-chip-solid-base k-rounded-md\", onClick: this.sortChange, onContextMenu: this.onContextMenu, role: \"button\", style: { touchAction: 'none' } },\n React.createElement(\"span\", null,\n React.createElement(IconWrap, { name: 'sort-' + dir + '-small', icon: dir === 'asc' ? sortAscSmallIcon : sortDescSmallIcon, size: 'small' })),\n React.createElement(\"span\", { className: 'k-chip-content' }, this.props.title),\n React.createElement(\"span\", { className: \"k-chip-actions\" },\n React.createElement(\"span\", { className: \"k-chip-action k-chip-remove-action\", onClick: this.groupRemove },\n React.createElement(IconWrap, { name: 'x-circle', icon: xCircleIcon, size: 'small' }))))));\n };\n return GroupingIndicator;\n}(React.Component));\nexport { GroupingIndicator };\nregisterForLocalization(GroupingIndicator);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { GroupingIndicator } from '../drag/GroupingIndicator';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, groupPanelEmpty as messageKey, groupPanelAriaLabel } from './../messages';\n/**\n * @hidden\n */\nvar GroupPanel = /** @class */ (function (_super) {\n __extends(GroupPanel, _super);\n function GroupPanel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onGroupRemove = function (event, index) {\n var newGroups = _this.props.group.slice();\n newGroups.splice(index, 1);\n _this.props.groupChange(newGroups, event);\n };\n _this.onGroupSortChange = function (event, index, groupDesc, dir) {\n var group = Object.assign({}, groupDesc, { dir: dir });\n var newGroups = _this.props.group.slice();\n newGroups.splice(index, 1, group);\n _this.props.groupChange(newGroups, event);\n };\n return _this;\n }\n GroupPanel.prototype.render = function () {\n var _this = this;\n var groupsProp = this.props.group || [];\n var groups = groupsProp.map(function (groupDesc, index) { return (React.createElement(GroupingIndicator, { key: index, index: index, dir: groupDesc.dir || 'asc', title: _this.props.resolveTitle(groupDesc.field), onRemove: function (event) {\n _this.onGroupRemove(event, index);\n }, onSortChange: function (event, dir) {\n _this.onGroupSortChange(event, index, groupDesc, dir);\n }, onPress: _this.props.pressHandler, onDrag: _this.props.dragHandler, onRelease: _this.props.releaseHandler, onContextMenu: _this.props.onContextMenu })); });\n return (React.createElement(\"div\", { ref: this.props.refCallback, className: \"k-grouping-header\", role: \"toolbar\", \"aria-label\": intl(this).toLanguageString(groupPanelAriaLabel, messages[groupPanelAriaLabel]), \"aria-controls\": this.props.ariaControls || '' },\n React.createElement(\"div\", { className: \"k-chip-list k-chip-list-md\", role: \"none\" }, groups),\n React.createElement(\"div\", { className: \"k-grouping-drop-container\" },\n !groups.length && intl(this).toLanguageString(messageKey, messages[messageKey]),\n \"\\u00A0\")));\n };\n return GroupPanel;\n}(React.Component));\nexport { GroupPanel };\nregisterForLocalization(GroupPanel);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { getScrollbarWidth } from '@progress/kendo-react-common';\nimport * as React from 'react';\nimport { classNames, kendoThemeMaps } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar Footer = /** @class */ (function (_super) {\n __extends(Footer, _super);\n function Footer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.footerWrap = null;\n _this.table = null;\n _this.scrollbarWidth = getScrollbarWidth();\n return _this;\n }\n Footer.prototype.componentDidMount = function () {\n this.setState({});\n };\n /**\n *\n * @param scrollLeft - Scrolls to the left (in pixels).\n */\n Footer.prototype.setScrollLeft = function (scrollLeft) {\n if (this.footerWrap) {\n this.footerWrap.scrollLeft = scrollLeft;\n }\n };\n /**\n *\n * @param width - Scrolls the width (in pixels).\n */\n Footer.prototype.setWidth = function (width) {\n if (this.table) {\n this.table.style.width = width + 'px';\n }\n };\n Footer.prototype.render = function () {\n var _a;\n var _this = this;\n if (!this.props.staticHeaders) {\n return (React.createElement(\"tfoot\", { className: \"k-table-tfoot\" }, this.props.row));\n }\n return (React.createElement(\"div\", { className: \"k-grid-footer\", role: \"presentation\" },\n React.createElement(\"div\", { ref: function (div) { _this.footerWrap = div; }, className: \"k-grid-footer-wrap\", style: this.scrollbarWidth ? {} : { borderWidth: 0 }, role: \"presentation\" },\n React.createElement(\"table\", { ref: function (table) { _this.table = table; }, className: classNames('k-table k-grid-footer-table', (_a = {\n 'k-table-md': !this.props.size\n },\n _a[\"k-table-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size,\n _a), this.props.className), role: \"presentation\" },\n React.createElement(\"colgroup\", { ref: function (e) { _this.props.columnResize.colGroupFooter = e; }, role: \"presentation\" }, this.props.cols),\n React.createElement(\"tfoot\", { className: \"k-table-tfoot\", role: \"presentation\" }, this.props.row)))));\n };\n return Footer;\n}(React.Component));\nexport { Footer };\n","import * as React from 'react';\n/**\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(cached) {\n var _this = this;\n this.table = null;\n this.containerHeight = 0;\n this.topCacheCount = 0; // 4;\n this.attendedSkip = 0; // -4;\n this.propsSkip = 0;\n this.total = 0;\n this.scrollableVirtual = false;\n this.realSkip = 0;\n this.pageSize = 0;\n this.PageChange = null;\n this.tableBodyRef = React.createRef();\n this.fixedScroll = false;\n this.askedSkip = undefined;\n this.containerRef = React.createRef();\n this.tableTransform = '';\n this.prevScrollPos = 0;\n this.tableTranslate = 0;\n this.scrollSyncing = false;\n this.reactVersion = Number.parseFloat(React.version);\n this.topItems = function (heights, skipTopBuffer) {\n if (!_this.container || skipTopBuffer) {\n return { topItemsCount: 0, topItemsHeight: 0 };\n }\n var screenHeight = _this.container.clientHeight;\n var itemsOnScreen = Math.ceil(screenHeight / heights[0].line);\n var topItemsCount = Math.ceil((heights.length - itemsOnScreen) / 2);\n var topItemsHeight = 0;\n for (var i = 0; i < topItemsCount; i++) {\n topItemsHeight += heights[i].line + heights[i].acc;\n }\n return {\n topItemsCount: topItemsCount,\n topItemsHeight: topItemsHeight,\n itemsNeededOnScreen: itemsOnScreen + itemsOnScreen / 2\n };\n };\n this.horizontalScrollbarHeight = function () {\n if (!_this.container) {\n return 0;\n }\n return _this.container.offsetHeight - _this.container.clientHeight;\n };\n if (cached) {\n this.topCacheCount = 4;\n this.attendedSkip = -this.topCacheCount;\n }\n this.scrollHandler = this.scrollHandler.bind(this);\n }\n Object.defineProperty(VirtualScroll.prototype, \"container\", {\n get: function () {\n return this.containerRef.current;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(VirtualScroll.prototype, \"rowHeights\", {\n /**\n * @return - The row heights in an array.\n */\n get: function () {\n var result = [];\n var allRows = this.tableBodyRef.current && this.tableBodyRef.current.children || [];\n var accumulate = 0;\n for (var i = 0; i < allRows.length; i++) {\n if (allRows[i].className.indexOf('k-grouping-row') > -1) {\n accumulate += allRows[i].scrollHeight;\n continue;\n }\n if (allRows[i].className.indexOf('k-detail-row') > -1) {\n result[result.length - 1].line += allRows[i].scrollHeight;\n }\n else {\n result.push({\n line: allRows[i].scrollHeight,\n acc: accumulate\n });\n accumulate = 0;\n }\n }\n return result;\n },\n enumerable: false,\n configurable: true\n });\n VirtualScroll.prototype.changePage = function (skip, e) {\n this.attendedSkip = skip - this.topCacheCount;\n if (this.PageChange) {\n this.PageChange({\n skip: Math.max(0, skip - this.topCacheCount),\n take: this.pageSize\n }, e);\n }\n };\n VirtualScroll.prototype.translate = function (dY, forceSet) {\n this.tableTranslate = dY;\n if (this.scrollableVirtual && this.table) {\n if (this.reactVersion <= 17 || forceSet) {\n this.table.style.transform = 'translateY(' + dY + 'px)';\n }\n else {\n this.tableTransform = 'translateY(' + dY + 'px)';\n }\n }\n };\n VirtualScroll.prototype.reset = function () {\n this.scrollSyncing = true;\n if (this.fixedScroll) {\n return;\n }\n if (this.container) {\n this.container.scrollTop = 0;\n }\n this.translate(0, true);\n };\n VirtualScroll.prototype.localScrollUp = function (e) {\n if (!this.container) {\n return;\n }\n var heights = this.rowHeights;\n var scrollTop = this.container.scrollTop;\n var targetTranslate = this.tableTranslate;\n var rowsCount = 0;\n var _a = this.topItems(heights, Boolean(this.topCacheCount)), topItemsCount = _a.topItemsCount, topItemsHeight = _a.topItemsHeight, itemsNeededOnScreen = _a.itemsNeededOnScreen;\n var additionalOnTop = scrollTop - targetTranslate;\n if ((additionalOnTop > topItemsHeight) || heights.length <= itemsNeededOnScreen) {\n return;\n }\n while ((rowsCount < this.topCacheCount + this.attendedSkip - this.realSkip + topItemsCount)\n && this.propsSkip - rowsCount > 0 &&\n !(targetTranslate + (heights[heights.length - 1 - rowsCount].line + heights[heights.length - 1 - rowsCount].acc) + additionalOnTop <= scrollTop)) {\n targetTranslate -= heights[heights.length - 1 - rowsCount].line +\n heights[heights.length - 1 - rowsCount].acc;\n rowsCount++;\n }\n if (rowsCount === 0 && this.topCacheCount === 0 && this.attendedSkip > 0) {\n // allows local scrolling up, when top caching is disabled\n // for variable heights 'topCacheCount' should be atleast 1 to avoid flickering\n targetTranslate = Math.max(targetTranslate - heights[0].line, 0);\n rowsCount = 1;\n }\n if (this.propsSkip - rowsCount <= 0 && targetTranslate > scrollTop) {\n this.translate(0);\n this.changePage(0, e);\n this.container.scrollTop = 0;\n return;\n }\n if (targetTranslate > scrollTop) {\n targetTranslate = scrollTop;\n // need to handle these cases\n // if the item height is not available:\n // floor the translate to beginning of the item in absolute value\n }\n if (targetTranslate !== this.tableTranslate) {\n this.translate(Math.max(0, targetTranslate - topItemsHeight));\n var nextSkip = Math.max(0, this.propsSkip - rowsCount - topItemsCount);\n this.changePage(nextSkip, e);\n }\n };\n VirtualScroll.prototype.localScrollDown = function (e) {\n if (!this.container) {\n return;\n }\n var heights = this.rowHeights;\n var scrollTop = this.container.scrollTop;\n var targetTranslate = this.tableTranslate;\n var rowsCount = 0;\n var _a = this.topItems(heights, Boolean(this.topCacheCount)), topItemsCount = _a.topItemsCount, topItemsHeight = _a.topItemsHeight, itemsNeededOnScreen = _a.itemsNeededOnScreen;\n while (rowsCount < heights.length - this.topCacheCount &&\n !(targetTranslate + heights[rowsCount].line + heights[rowsCount].acc > scrollTop)) {\n targetTranslate += heights[rowsCount].line + heights[rowsCount].acc;\n rowsCount++;\n }\n if ((topItemsCount > this.propsSkip + rowsCount) || heights.length <= itemsNeededOnScreen) {\n return;\n }\n if (rowsCount >= heights.length - this.topCacheCount && this.propsSkip + rowsCount >= this.total) {\n this.translate(targetTranslate - topItemsHeight);\n this.changePage(this.total - 1 - topItemsCount, e);\n }\n else if (targetTranslate !== this.tableTranslate && this.propsSkip + rowsCount - topItemsCount !== this.propsSkip) {\n this.translate(targetTranslate - topItemsHeight);\n this.changePage(this.propsSkip + rowsCount - topItemsCount, e);\n }\n };\n VirtualScroll.prototype.scrollNonStrict = function (e) {\n var floatRowIndex = this.total * this.prevScrollPos / (this.containerHeight);\n var rowIndex = Math.floor(floatRowIndex);\n if (rowIndex >= this.total) {\n rowIndex = this.total - 1;\n }\n var rowpercentage = Math.min(floatRowIndex - rowIndex, 1);\n var microAdjust = 0;\n var rowIndexOffset = rowIndex - this.propsSkip;\n var heights = this.rowHeights;\n if (rowIndexOffset >= 0 && rowIndexOffset <= 1) {\n microAdjust = -((heights[0].line + heights[0].acc) * rowpercentage);\n }\n else if (rowIndexOffset === -1) {\n microAdjust = -((heights[heights.length - 1].line + heights[heights.length - 1].acc) * rowpercentage);\n }\n var _a = this.topItems(heights, Boolean(this.topCacheCount)), topItemsCount = _a.topItemsCount, topItemsHeight = _a.topItemsHeight;\n this.translate(Math.max(0, microAdjust - topItemsHeight - this.horizontalScrollbarHeight() + this.containerHeight * floatRowIndex / this.total));\n this.changePage(rowIndex - topItemsCount, e);\n };\n VirtualScroll.prototype.scrollHandler = function (e) {\n if (!this.scrollableVirtual) {\n return;\n }\n if (this.scrollSyncing || !this.container || !this.table) {\n this.scrollSyncing = false;\n return;\n }\n var scrollTop = this.container.scrollTop;\n var prev = this.prevScrollPos;\n this.prevScrollPos = scrollTop;\n if (this.askedSkip !== undefined) {\n this.translate(this.containerHeight * this.askedSkip / this.total);\n this.changePage(this.askedSkip, e);\n this.prevScrollPos = scrollTop;\n this.askedSkip = undefined;\n return;\n }\n if (scrollTop - prev < 0 && scrollTop > this.tableTranslate - this.table.scrollHeight / 10) {\n this.localScrollUp(e);\n }\n else if (scrollTop - prev > 0 && scrollTop < this.tableTranslate + this.table.scrollHeight * 2 / 3) {\n this.localScrollDown(e);\n }\n else {\n this.scrollNonStrict(e);\n }\n this.prevScrollPos = scrollTop;\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","import * as React from 'react';\nimport { firefox } from './utils';\n/**\n * @hidden\n */\nvar RowHeightService = /** @class */ (function () {\n function RowHeightService(total, rowHeight, detailRowHeight, data) {\n if (total === void 0) { total = 0; }\n this.total = total;\n this.offsets = [];\n this.heights = [];\n var agg = 0;\n for (var idx = 0; idx < total; idx++) {\n this.offsets.push(agg);\n var currHeight = (data && data[idx].expanded && data[idx].rowType === 'data') ? detailRowHeight : rowHeight;\n agg += currHeight;\n this.heights.push(currHeight);\n }\n }\n RowHeightService.prototype.height = function (rowIndex) {\n return this.heights[rowIndex];\n };\n RowHeightService.prototype.index = function (position) {\n if (position < 0) {\n return undefined;\n }\n var result = this.offsets.reduce(function (prev, current, idx) {\n if (prev !== undefined) {\n return prev;\n }\n else if (current === position) {\n return idx;\n }\n else if (current > position) {\n return idx - 1;\n }\n return undefined;\n }, undefined);\n return result === undefined ? this.total - 1 : result;\n };\n RowHeightService.prototype.offset = function (rowIndex) {\n return this.offsets[rowIndex];\n };\n RowHeightService.prototype.totalHeight = function () {\n var lastOffset = this.offsets[this.offsets.length - 1];\n var lastHeight = this.heights[this.heights.length - 1];\n return lastOffset + lastHeight;\n // return this.heights.reduce((prev, curr) => prev + curr, 0);\n };\n return RowHeightService;\n}());\nexport { RowHeightService };\n/**\n * @hidden\n */\nvar VirtualScrollFixed = /** @class */ (function () {\n function VirtualScrollFixed(_cached) {\n this.table = null;\n this.containerHeight = 0;\n this.topCacheCount = 0;\n this.attendedSkip = 0;\n this.propsSkip = 0;\n this.total = 0;\n this.scrollableVirtual = false;\n this.realSkip = 0;\n this.pageSize = 0;\n this.PageChange = null;\n this.tableBodyRef = React.createRef();\n this.fixedScroll = false;\n this.askedSkip = undefined;\n this.containerRef = React.createRef();\n this.tableTransform = '';\n this.scrollSyncing = false;\n this.lastLoaded = 0;\n this.firstLoaded = 0;\n this.lastScrollTop = 0;\n this.reactVersion = Number.parseFloat(React.version);\n this.firstLoaded = this.pageSize;\n this.lastLoaded = this.realSkip + this.pageSize;\n this.scrollHandler = this.scrollHandler.bind(this);\n }\n Object.defineProperty(VirtualScrollFixed.prototype, \"container\", {\n get: function () {\n return this.containerRef.current;\n },\n enumerable: false,\n configurable: true\n });\n VirtualScrollFixed.prototype.translate = function (dY, forceSet) {\n if (this.scrollableVirtual && this.table) {\n if (firefox || this.reactVersion <= 17 || forceSet) {\n this.table.style.transform = 'translateY(' + dY + 'px)';\n }\n else {\n this.tableTransform = 'translateY(' + dY + 'px)';\n }\n }\n };\n VirtualScrollFixed.prototype.changePage = function (skip, e) {\n if (this.PageChange) {\n this.PageChange({ skip: Math.max(0, skip), take: this.pageSize }, e);\n }\n };\n VirtualScrollFixed.prototype.reset = function () {\n this.scrollSyncing = true;\n if (this.fixedScroll) {\n return;\n }\n if (this.container) {\n this.container.scrollTop = 0;\n }\n this.translate(0, true);\n };\n VirtualScrollFixed.prototype.scrollHandler = function (e) {\n if (!this.scrollableVirtual || !this.container || !this.table ||\n !this.rowHeightService || !this.containerRef.current) {\n return;\n }\n if (this.scrollSyncing) {\n this.scrollSyncing = false;\n return;\n }\n var scrollTop = this.container.scrollTop;\n var up = this.lastScrollTop >= scrollTop;\n var down = !up;\n this.lastScrollTop = scrollTop;\n var firstItemIndex = this.rowHeightService.index(scrollTop);\n var firstItemOffset = this.rowHeightService.offset(firstItemIndex);\n var offsetHeight = this.containerRef.current.offsetHeight;\n var lastItemIndex = this.rowHeightService.index(scrollTop + offsetHeight);\n if (down && lastItemIndex >= this.lastLoaded && this.lastLoaded < this.total) {\n var overflow = (firstItemIndex + this.pageSize) - this.total;\n if (overflow > 0) {\n firstItemIndex = firstItemIndex - overflow;\n firstItemOffset = this.rowHeightService.offset(firstItemIndex);\n }\n this.firstLoaded = firstItemIndex;\n this.translate(firstItemOffset);\n var nextTake = this.firstLoaded + this.pageSize;\n this.lastLoaded = Math.min(nextTake, this.total);\n this.changePage(this.firstLoaded, e);\n }\n else if (up && firstItemIndex < this.firstLoaded) {\n var nonVisibleBuffer = Math.floor(this.pageSize * 0.3);\n this.firstLoaded = Math.max(firstItemIndex - nonVisibleBuffer, 0);\n this.translate(this.rowHeightService.offset(this.firstLoaded));\n this.lastLoaded = Math.min(this.firstLoaded + this.pageSize, this.total);\n this.changePage(this.firstLoaded, e);\n }\n };\n return VirtualScrollFixed;\n}());\nexport { VirtualScrollFixed };\n","// offsetWidth() is slowly transition to reporting double instead of integet in all browsers\n// during this process (which is a bit back-and-forth) we need to make sure we are working across all browsers and versions\nvar OFFSET_ROUND = 1;\nvar LOCK_COLUMN_BUFFER = 20;\n/**\n * @hidden\n */\nvar ColumnResize = /** @class */ (function () {\n function ColumnResize(triggerResize) {\n var _this = this;\n // Typings. `col` and `colgroup` do not differ, both represent a `HTMLTableColElement`.\n // Implemented as `any`.\n this.columns = [];\n /**\n * The settings for resizing the Grid.\n */\n this.resizable = false;\n this.isRtl = false;\n this.setIsRtl = function (isRtl) {\n _this.isRtl = isRtl;\n };\n this.dragHandler = function (event, column, dragCue, end) {\n var e = event.originalEvent;\n if (!end) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n var thElement = dragCue.closest('th');\n if (!thElement || !thElement) {\n return;\n }\n var oldWidth = thElement.clientWidth;\n var newWidth = oldWidth;\n if (_this.isRtl) {\n newWidth += (dragCue.getBoundingClientRect().right - (dragCue.offsetWidth / 2)) - event.clientX;\n }\n else {\n newWidth += event.clientX - dragCue.getBoundingClientRect().left - (dragCue.offsetWidth / 2);\n }\n if (!end && Math.abs(newWidth - oldWidth) < 1) {\n return;\n }\n _this.fixateInitialWidths(thElement.parentElement.clientWidth);\n _this.setWidths(column, Math.floor(newWidth) / oldWidth);\n var index = _this.columns.filter(function (c) { return !c.children.length; }).findIndex(function (c) { return c.id === column.id; });\n _this.onResize(index, oldWidth, newWidth, e, end, column.id);\n };\n this.dblClickHandler = function (event, columnIds) {\n var columns = _this.columns.filter(function (c) { return columnIds.indexOf(c.id) > -1; });\n if (!_this.colGroupMain || !columns.length) {\n return;\n }\n var leafsForAdjust = {};\n var stack = columns;\n while (stack.length > 0) {\n var currentCol = stack.pop();\n if (!currentCol) {\n break;\n }\n if (currentCol.children.length) {\n stack.push.apply(stack, currentCol.children);\n }\n else {\n leafsForAdjust[currentCol.id] = currentCol;\n }\n }\n var leafs = _this.columns.filter(function (c) { return !c.children.length; });\n var indexesForAdjust = [];\n leafs.forEach(function (currentColumn, index) {\n if (leafsForAdjust[currentColumn.id]) {\n indexesForAdjust.push(index);\n }\n });\n var tables = [_this.colGroupMain.parentElement];\n var colgroups = [_this.colGroupMain];\n if (_this.colGroupHeader) {\n tables.push(_this.colGroupHeader.parentElement);\n colgroups.push(_this.colGroupHeader);\n }\n if (_this.colGroupFooter) {\n tables.push(_this.colGroupFooter.parentElement);\n colgroups.push(_this.colGroupFooter);\n }\n tables.forEach(function (table) { return table.classList.add('k-autofitting'); });\n var maxWidths = [];\n colgroups.forEach(function (colgroup) {\n indexesForAdjust.forEach(function (columnIndex) {\n if (colgroup.children[columnIndex]) {\n colgroup.children[columnIndex].width = '';\n maxWidths[columnIndex] = Math.max(maxWidths[columnIndex] || 0, colgroup.children[columnIndex].offsetWidth + OFFSET_ROUND);\n }\n });\n });\n colgroups.forEach(function (colgroup) {\n indexesForAdjust.forEach(function (columnIndex) {\n if (colgroup.children[columnIndex]) {\n colgroup.children[columnIndex].width = maxWidths[columnIndex] + 'px';\n leafs[columnIndex].width = maxWidths[columnIndex];\n }\n });\n });\n tables.forEach(function (table) { return table.classList.remove('k-autofitting'); });\n _this.onResize(indexesForAdjust[0], 0, 0, event, true, columnIds[0]);\n };\n this.updateColElements = function (affectedColumns) {\n var leafColumns = _this.columns.filter(function (c) { return !c.children.length; });\n var difference = 1e-10;\n var _loop_1 = function (i) {\n var currentColumn = affectedColumns[i];\n var colIndex = leafColumns.findIndex(function (c) { return c.id === currentColumn.id; });\n var currentColumnFloatWidth = parseFloat((currentColumn.width || 0).toString());\n var currentColumnFloorWidth = Math.floor(currentColumnFloatWidth);\n difference += currentColumnFloatWidth - currentColumnFloorWidth;\n var currentWidth = currentColumnFloorWidth + Math.floor(difference);\n difference -= Math.floor(difference);\n if (_this.colGroupMain && _this.colGroupMain.children[colIndex]) {\n var mainWidth = parseInt(_this.colGroupMain.children[colIndex].width, 10);\n _this.colGroupMain.children[colIndex].width = currentWidth + 'px';\n _this.updateNextLockedCol(_this.colGroupMain.parentElement, currentColumn, mainWidth - currentWidth);\n }\n if (_this.colGroupHeader && _this.colGroupHeader.children[colIndex]) {\n var headerWidth = parseInt(_this.colGroupHeader.children[colIndex].width, 10);\n // static headers\n _this.colGroupHeader.children[colIndex].width = currentWidth + 'px';\n _this.updateNextLockedCol(_this.colGroupHeader.parentElement, currentColumn, headerWidth - currentWidth);\n }\n if (_this.colGroupFooter && _this.colGroupFooter.children[colIndex]) {\n var footerWidth = parseInt(_this.colGroupFooter.children[colIndex].width, 10);\n // static footers\n _this.colGroupFooter.children[colIndex].width = currentWidth + 'px';\n _this.updateNextLockedCol(_this.colGroupFooter.parentElement, currentColumn, footerWidth - currentWidth);\n }\n };\n for (var i = 0; i < affectedColumns.length; i++) {\n _loop_1(i);\n }\n };\n this.onResize = triggerResize;\n }\n ColumnResize.prototype.fixateInitialWidths = function (width) {\n var columns = this.columns.filter(function (c) { return !c.children.length; });\n var remainingCount = 0;\n var cols = this.colGroupMain ? this.colGroupMain.children : [];\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].width) {\n width -= parseFloat(cols[i].width);\n }\n else {\n remainingCount++;\n }\n }\n if (remainingCount === 0) {\n return;\n }\n var perCol = Math.floor(width / remainingCount);\n for (var i = 0; i < cols.length; i++) {\n var col = cols[i];\n if (!col.width) {\n col.width = perCol;\n columns[i].width = perCol.toString();\n if (this.colGroupHeader) {\n this.colGroupHeader.children[i].width = perCol;\n }\n if (this.colGroupFooter) {\n this.colGroupFooter.children[i].width = perCol;\n }\n }\n }\n };\n ColumnResize.prototype.setWidths = function (column, coef) {\n var indexInOriginal = this.columns.findIndex(function (c) { return c.id === column.id; });\n var toAdjust = [];\n var more = column.children.length;\n for (var i = indexInOriginal + 1; more > 0 && i < this.columns.length; i++, more--) {\n var cc = this.columns[i];\n if (!cc.children.length) {\n toAdjust.push(cc);\n }\n else {\n more += cc.children.length;\n }\n }\n if (toAdjust.length === 0) {\n toAdjust.push(column);\n }\n toAdjust.forEach(function (colToAdjust) {\n var targetWidth = colToAdjust.width ? parseFloat(colToAdjust.width.toString()) * coef : 0;\n var min = colToAdjust.minResizableWidth === undefined ? 10 : colToAdjust.minResizableWidth;\n if (targetWidth < min) {\n targetWidth = min;\n }\n colToAdjust.width = targetWidth;\n });\n this.updateColElements(toAdjust);\n return toAdjust;\n };\n ColumnResize.prototype.updateNextLockedCol = function (element, current, deltaWidth) {\n var _this = this;\n var currentIndex = current.index;\n var gridWrapperEl = this.colGroupMain.parentElement.closest('.k-grid');\n var maxWidth = gridWrapperEl === null || gridWrapperEl === void 0 ? void 0 : gridWrapperEl.clientWidth;\n var widthOfLocked = this.columns.filter(function (c) { return c.locked; }).map(function (e) { return parseInt(e.width + '', 10); }).reduce(function (a, b) { return a + b; }, 0);\n if (!current.locked || maxWidth <= widthOfLocked + LOCK_COLUMN_BUFFER) {\n return;\n }\n this.columns.forEach(function (nColumn) {\n if ((nColumn === null || nColumn === void 0 ? void 0 : nColumn.locked) && deltaWidth) {\n var allColumnEls = element === null || element === void 0 ? void 0 : element.querySelectorAll('[aria-colindex=\"' + nColumn.ariaColumnIndex + '\"]');\n allColumnEls === null || allColumnEls === void 0 ? void 0 : allColumnEls.forEach(function (el) {\n var currentStyle = el.style;\n if (_this.isRtl) {\n if (nColumn.index > currentIndex && currentStyle && currentStyle.right) {\n currentStyle.right = parseInt(currentStyle.right, 10) - deltaWidth + 'px';\n }\n if (nColumn.index < currentIndex && currentStyle && currentStyle.left) {\n currentStyle.left = parseInt(currentStyle.left, 10) - deltaWidth + 'px';\n }\n }\n else {\n if (nColumn.index > currentIndex && currentStyle && currentStyle.left) {\n currentStyle.left = parseInt(currentStyle.left, 10) - deltaWidth + 'px';\n }\n if (nColumn.index < currentIndex && currentStyle && currentStyle.right) {\n currentStyle.right = parseInt(currentStyle.right, 10) - deltaWidth + 'px';\n }\n }\n });\n }\n });\n };\n return ColumnResize;\n}());\nexport { ColumnResize };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { guid } from '@progress/kendo-react-common';\nimport { GridColumnMenuWrapper } from '../columnMenu/GridColumnMenuWrapper';\n/**\n * @hidden\n */\nvar GridHeaderSelectionCell = /** @class */ (function (_super) {\n __extends(GridHeaderSelectionCell, _super);\n function GridHeaderSelectionCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._inputId = guid();\n return _this;\n }\n GridHeaderSelectionCell.prototype.render = function () {\n var _this = this;\n var columnMenuWrapperProps = this.props.columnMenuWrapperProps;\n var defaultRendering = [\n (React.createElement(\"input\", { key: 0, checked: this.props.selectionValue, id: this._inputId, type: \"checkbox\", className: \"k-checkbox k-checkbox-md k-rounded-md\", onChange: function (e) {\n return _this.props.selectionChange({\n field: _this.props.field,\n syntheticEvent: e\n });\n } })),\n (React.createElement(\"label\", { key: 1, className: \"k-checkbox-label\", htmlFor: this._inputId })),\n columnMenuWrapperProps.columnMenu && React.createElement(GridColumnMenuWrapper, __assign({}, columnMenuWrapperProps))\n ];\n return this.props.render ?\n this.props.render.call(undefined, defaultRendering, this.props) :\n defaultRendering;\n };\n return GridHeaderSelectionCell;\n}(React.Component));\nexport { GridHeaderSelectionCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { footerColumns, resolveCells } from './../utils';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar FooterRow = /** @class */ (function (_super) {\n __extends(FooterRow, _super);\n function FooterRow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._element = null;\n _this.renderCell = function (column, index) {\n var _a;\n var tdProps = (_a = {\n colSpan: column.colSpan !== 1 ? column.colSpan : undefined,\n style: column.left !== undefined\n ? !_this.props.isRtl\n ? { left: column.left, right: column.right }\n : { left: column.right, right: column.left }\n : {},\n className: classNames('k-table-td', column.locked && column.left !== undefined ? 'k-grid-footer-sticky' : ''),\n key: index,\n role: 'gridcell'\n },\n _a['aria-colindex'] = column.ariaColumnIndex,\n _a);\n var cellProps = __assign({ field: column.field, ariaColumnIndex: column.ariaColumnIndex }, tdProps);\n var customCells = resolveCells(_this.props.cells, column.cells);\n if (customCells && customCells.footerCell) {\n var CustomCell = customCells.footerCell;\n return React.createElement(CustomCell, __assign({}, cellProps, { tdProps: tdProps, index: index }));\n }\n return (column.footerCell && React.createElement(column.footerCell, __assign({}, cellProps, { key: index }))) || (React.createElement(\"td\", __assign({}, tdProps)));\n };\n return _this;\n }\n Object.defineProperty(FooterRow.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n FooterRow.prototype.render = function () {\n return React.createElement(\"tr\", { className: 'k-table-row', role: \"row\", \"aria-rowindex\": this.props.ariaRowIndex }, footerColumns(this.props.columns).map(this.renderCell));\n };\n return FooterRow;\n}(React.Component));\nexport { FooterRow };\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-grid',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698929672,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport * as React from 'react';\n/** @hidden */\nexport var GridDetailCell = function (props) {\n var colSpan = props.colSpan, ariaColIndex = props.ariaColIndex, dataItem = props.dataItem, dataIndex = props.dataIndex, id = props.id;\n var navigationAttributes = useTableKeyboardNavigation(id);\n var onContextMenu = React.useCallback(function (event) {\n if (props.onContextMenu) {\n props.onContextMenu.call(undefined, event, props.dataItem);\n }\n }, [props.onContextMenu, props.dataItem]);\n return (React.createElement(\"td\", __assign({ onContextMenu: onContextMenu, className: \"k-table-td k-detail-cell\", colSpan: colSpan, \"aria-colindex\": ariaColIndex, role: 'gridcell' }, navigationAttributes),\n React.createElement(props.detail, { dataItem: dataItem, dataIndex: dataIndex })));\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport * as React from 'react';\n/** @hidden */\nexport var GridDetailHierarchyCell = function (props) {\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n return (React.createElement(\"td\", __assign({ className: \"k-table-td k-hierarchy-cell\" }, navigationAttributes, { role: 'gridcell' })));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent, classNames, getter, guid, setScrollbarWidth, canUseDOM, memoizeOne, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { tableColumnsVirtualization, Pager, mapColumns, updateLeft, updateRight, isRtl, tableKeyboardNavigation, TableKeyboardNavigationContext, tableKeyboardNavigationScopeAttributes, tableKeyboardNavigationTools as navigationTools, tableKeyboardNavigationBodyAttributes, getSelectionOptions, TableSelection, DropClue, DragClue } from '@progress/kendo-react-data-tools';\nimport { GridSelectionCell } from './cells/GridSelectionCell';\nimport { GridHierarchyCell } from './cells/GridHierarchyCell';\nimport { GridEditCell } from './cells/GridEditCell';\nimport { Header } from './header/Header';\nimport { HeaderRow } from './header/HeaderRow';\nimport { FilterRow } from './header/FilterRow';\nimport { GroupPanel } from './header/GroupPanel';\nimport { Footer } from './footer/Footer';\nimport { VirtualScroll } from './VirtualScroll';\nimport { RowHeightService, VirtualScrollFixed } from './VirtualScrollFixed';\nimport { ColumnResize } from './drag/ColumnResize';\nimport { CommonDragLogic } from './drag/CommonDragLogic';\nimport { getNestedValue, flatData, readColumns, autoGenerateColumns, firefox, firefoxMaxHeight, sanitizeColumns, resolveCells, getColumnWidth } from './utils/index';\nimport { GridCell } from './cells/GridCell';\nimport { GridGroupCell } from './cells/GridGroupCell';\nimport { GridRow } from './rows/GridRow';\nimport { GridHeaderSelectionCell } from './header/GridHeaderSelectionCell';\nimport { GridNoRecords } from './GridNoRecords';\nimport { operators } from './filterCommon';\nimport { FooterRow } from './footer/FooterRow';\nimport { normalize } from './paging/GridPagerSettings';\nimport { pagerMessagesMap } from './messages';\nimport { validatePackage, shouldShowValidationUI, WatermarkOverlay } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport { GridDetailCell } from './cells/GridDetailCell';\nimport { GridDetailHierarchyCell } from './cells/GridDetailHierarchyCell';\n/**\n * Represents the [KendoReact Grid component]({% slug overview_grid %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * data: [\n * { 'foo': 'A1', 'bar': 'B1' },\n * { 'foo': 'A2', 'bar': 'B2' },\n * { 'foo': 'A3', 'bar': 'B2' }\n * ]\n * };\n * }\n * render() {\n * return (\n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n function Grid(props) {\n var _this = _super.call(this, props) || this;\n _this._columns = [];\n _this._columnsMap = [[]];\n _this._columnsMutations = 0;\n _this._resized = false;\n _this._shouldUpdateLeftRight = true;\n _this.contextStateRef = { current: undefined };\n _this.navigationStateRef = { current: undefined };\n _this._data = [];\n _this._slicedData = undefined;\n _this.wrapperScrollTop = 0;\n _this.showLicenseWatermark = false;\n _this.headerRef = React.createRef();\n _this.headerElementRef = React.createRef();\n _this._element = null;\n _this.tableElement = null;\n _this.containerRef = React.createRef();\n _this.tableBodyRef = React.createRef();\n _this._footer = null;\n _this.forceUpdateTimeout = undefined;\n _this.isRtl = false;\n _this._gridId = guid();\n _this._gridRoleElementId = guid(); // Needed for aria-control accessibility attribute\n _this.observer = null;\n _this.handleIntersection = function (entries) {\n var options = { rowIndex: _this.rowIndex };\n entries.forEach(function (entry) {\n if (!entry.isIntersecting) {\n _this.setCurrentOnTop(options);\n }\n });\n };\n _this.setCurrentOnTop = function (options) {\n if (!_this.vs.container || _this.props.scrollable === 'none') {\n return;\n }\n if (_this.observer) {\n _this.observer.disconnect();\n }\n var rowIndex = options.rowIndex;\n if (_this.props.scrollable === 'virtual') {\n _this.vs.askedSkip = rowIndex;\n _this.vs.container.scroll(0, Math.round(_this.vs.askedSkip / _this.vs.total * _this.vs.container.scrollHeight));\n }\n else if (_this.element) {\n var selectedRow = rowIndex < 1\n ? _this.element.querySelector(\"tbody > tr:nth-child(\".concat(1, \")\"))\n : _this.element.querySelector(\"tbody > tr:nth-child(\".concat(rowIndex + 1, \")\"));\n if (selectedRow && _this.containerRef.current) {\n _this.containerRef.current.scrollTop = selectedRow.offsetTop;\n }\n }\n };\n /**\n * Method to allow the scroll to be set to a specific row index when the Grid is scrollable. It is zero based.\n *\n * @param options - Object, containing the rowIndex to which is going to be scrolled.\n */\n _this.scrollIntoView = function (options) {\n if (!_this.vs.container || _this.props.scrollable === 'none') {\n return;\n }\n _this.rowIndex = options.rowIndex;\n var rowIndex = options.rowIndex;\n var element = _this.element;\n if (_this.observer && element) {\n _this.observer.disconnect();\n var target = element.querySelector(\"[absolute-row-index=\\\"\".concat(rowIndex, \"\\\"]\"));\n if (target) {\n _this.observer.observe(target);\n }\n else {\n _this.setCurrentOnTop(options);\n }\n }\n };\n /**\n * Method to fit columns according to their content.\n *\n * @param columnIds - Array of column ids to be fitted.\n */\n _this.fitColumns = function (columnIds) {\n _this.columnResize.dblClickHandler(null, columnIds);\n };\n _this.onContextMenu = function (event, dataItem, field) {\n if (_this.props.onContextMenu) {\n var ev = {\n target: _this,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n dataItem: dataItem,\n field: field\n };\n _this.props.onContextMenu.call(undefined, ev);\n }\n };\n _this.getVirtualScroll = function (props) {\n var rowHeight = props.rowHeight, detailRowHeight = props.detailRowHeight, detail = props.detail, expandField = props.expandField, groupable = props.groupable;\n var hasAllData = _this.isAllData();\n var hasRowHeight = rowHeight !== undefined && rowHeight > 0;\n var hasDetailRowHeight = detailRowHeight !== undefined && detailRowHeight > 0;\n var isGroupable = groupable === true || (typeof groupable === 'object' && groupable.enabled !== false);\n var hasDetails = Boolean(detail && expandField);\n if (!hasRowHeight ||\n (isGroupable && !hasAllData) ||\n (hasDetails && (!hasDetailRowHeight || !hasAllData))) {\n return VirtualScroll;\n }\n return VirtualScrollFixed;\n };\n _this.isAllData = function () {\n var _a = _this.props, data = _a.data, total = _a.total;\n if (Array.isArray(data)) {\n return data.length === total;\n }\n else if (data) {\n return total === data.total;\n }\n return false;\n };\n _this.initializeVirtualization = function (total, groupable) {\n _this.reInitVirtualization(_this.props.scrollable === 'virtual', _this.props.total, _this.props.filter, _this.props.group, _this.props.sort, groupable || _this.props.rowHeight === undefined || _this.props.rowHeight === 0);\n _this.vs.fixedScroll = _this.props.fixedScroll || false;\n _this.vs.PageChange = _this.pageChange;\n _this.vs.realSkip = _this.props.skip || 0;\n _this.vs.pageSize = (_this.props.take !== undefined ? _this.props.take : _this.props.pageSize) || 0;\n _this.vs.scrollableVirtual = (_this.props.scrollable === 'virtual');\n _this.vs.total = total;\n _this.vs.propsSkip = (_this.props.skip || 0) + (_this.props.scrollable === 'virtual' ?\n _this.vs.topCacheCount + (_this.vs.attendedSkip - (_this.props.skip || 0)) : 0);\n if (_this.props.rowHeight !== undefined && _this.props.rowHeight > 0 && !groupable) {\n var containerHeight = _this.props.rowHeight * total;\n _this.vs.containerHeight = firefox ? Math.min(firefoxMaxHeight, containerHeight) : containerHeight;\n }\n else {\n _this.vs.containerHeight = 1533915;\n }\n _this.vs.containerRef = _this.containerRef;\n _this.vs.tableBodyRef = _this.tableBodyRef;\n _this.vs.table = _this.tableElement;\n _this._slicedData = undefined;\n if (_this.vs instanceof VirtualScrollFixed) {\n var _a = _this.props, _b = _a.rowHeight, rowHeight = _b === void 0 ? 0 : _b, detail = _a.detail, expandField = _a.expandField;\n var _c = _this.props.detailRowHeight, detailRowHeight = _c === void 0 ? 0 : _c;\n detailRowHeight = Boolean(detail && expandField) ? detailRowHeight : rowHeight;\n if (_this.isAllData()) {\n _this.vs.total = _this._data.length;\n _this._slicedData = _this._data.slice(_this.vs.realSkip, _this.vs.realSkip + _this.vs.pageSize);\n _this.vs.rowHeightService = _this.rowHeightService(_this.vs, _this._data.length, rowHeight, detailRowHeight, _this._data);\n }\n else {\n _this.vs.rowHeightService = new RowHeightService(total, rowHeight, detailRowHeight);\n }\n var containerHeight = _this.vs.rowHeightService.totalHeight();\n _this.vs.containerHeight = firefox ? Math.min(firefoxMaxHeight, containerHeight) : containerHeight;\n }\n };\n _this.scrollHandler = function (event) {\n if (event.target !== event.currentTarget) {\n return;\n }\n clearTimeout(_this.forceUpdateTimeout);\n _this.vs.table = _this.tableElement;\n var scrollLeft = event.currentTarget.scrollLeft;\n var scrollTop = event.currentTarget.scrollTop;\n if (_this.props.columnVirtualization && (!_this.vs.scrollableVirtual || scrollTop === _this.wrapperScrollTop)) {\n _this.forceUpdateTimeout = window.setTimeout(function () { _this.forceUpdate(); }, 0);\n }\n if (_this._header) {\n _this._header.setScrollLeft(scrollLeft);\n }\n if (_this._footer) {\n _this._footer.setScrollLeft(scrollLeft);\n }\n if (_this.vs && scrollTop !== _this.wrapperScrollTop) {\n _this.vs.scrollHandler(event);\n }\n dispatchEvent(_this.props.onScroll, event, _this, undefined);\n _this.wrapperScrollTop = scrollTop;\n };\n _this.onKeyDown = function (event) {\n tableKeyboardNavigation.onKeyDown(event, {\n contextStateRef: _this.contextStateRef,\n navigationStateRef: _this.navigationStateRef,\n onNavigationAction: _this.onNavigationAction\n });\n if (_this.props.onKeyDown) {\n var _a = getSelectionOptions(_this.props.selectable), mode = _a.mode, cell = _a.cell;\n var ev = __assign({ dataItems: _this.getLeafDataItems(), mode: mode, cell: cell, componentId: _this._gridId, selectedField: _this.props.selectedField }, _this.getArguments(event));\n _this.props.onKeyDown.call(undefined, ev);\n }\n };\n _this.onFocus = function (event) {\n tableKeyboardNavigation.onFocus(event, {\n contextStateRef: _this.contextStateRef\n });\n };\n _this.onNavigationAction = function (options) {\n if (_this.props.onNavigationAction) {\n var ev = __assign({ focusElement: options.focusElement }, _this.getArguments(options.event));\n _this.props.onNavigationAction.call(undefined, ev);\n }\n };\n _this.rowClick = function (e, item) {\n if (_this.props.onRowClick && e.target.nodeName === 'TD') {\n _this.props.onRowClick.call(undefined, __assign({ dataItem: item.dataItem }, _this.getArguments(e)));\n }\n };\n _this.rowDblClick = function (e, item) {\n if (_this.props.onRowDoubleClick && e.target.nodeName === 'TD') {\n _this.props.onRowDoubleClick.call(undefined, __assign({ dataItem: item.dataItem }, _this.getArguments(e)));\n }\n };\n _this.itemChange = function (event) {\n var itemChange = _this.props.onItemChange;\n if (event.field === _this.props.expandField || _this.props.group && event.field === undefined) {\n var expandChange = _this.props.onExpandChange;\n if (expandChange) {\n expandChange.call(undefined, __assign(__assign({}, _this.getArguments(event.syntheticEvent)), { dataItem: event.dataItem, dataIndex: event.dataIndex, value: event.value }));\n }\n return;\n }\n if (itemChange) {\n itemChange.call(undefined, __assign(__assign({}, _this.getArguments(event.syntheticEvent)), { dataItem: event.dataItem, field: event.field, value: event.value }));\n }\n };\n _this.onHeaderSelectionChange = function (event) {\n if (_this.props.onHeaderSelectionChange) {\n _this.props.onHeaderSelectionChange.call(undefined, {\n field: event.field,\n nativeEvent: event.syntheticEvent && event.syntheticEvent.nativeEvent,\n syntheticEvent: event.syntheticEvent,\n target: _this,\n dataItems: _this.getLeafDataItems(),\n selectedField: _this.props.selectedField\n });\n }\n };\n _this.selectionRelease = function (event) {\n if (_this.props.onSelectionChange) {\n var selectionEvent = __assign({ syntheticEvent: undefined, target: _this, selectedField: _this.props.selectedField || '', componentId: _this._gridId, dataItems: _this.getLeafDataItems(), dataItem: null }, event);\n _this.props.onSelectionChange.call(undefined, selectionEvent);\n }\n };\n _this.pageChange = function (page, syntheticEvent, targetEvent) {\n _this.raiseDataEvent(_this.props.onPageChange, { page: page }, { skip: page.skip, take: page.take }, syntheticEvent, targetEvent);\n };\n _this.pagerPageChange = function (event) {\n _this.pageChange({ skip: event.skip, take: event.take }, event.syntheticEvent, event.targetEvent);\n };\n _this.sortChange = function (sort, syntheticEvent) {\n _this.raiseDataEvent(_this.props.onSortChange, { sort: sort }, __assign({ sort: sort }, (_this.props.scrollable === 'virtual' ? { skip: 0 } : {})), syntheticEvent);\n };\n _this.filterChange = function (filter, syntheticEvent) {\n _this.raiseDataEvent(_this.props.onFilterChange, { filter: filter }, { filter: filter || undefined, skip: 0 }, syntheticEvent);\n };\n _this.groupChange = function (groups, event) {\n var syntheticEvent = event.nativeEvent ?\n event : { nativeEvent: event.nativeEvent || event.originalEvent };\n _this.raiseDataEvent(_this.props.onGroupChange, { group: groups }, { group: groups, skip: 0 }, syntheticEvent);\n };\n _this.onResize = function (index, newWidth, oldWidth, nativeEvent, end, targetId) {\n _this.resetTableWidth();\n _this._shouldUpdateLeftRight = true;\n _this._resized = true;\n _this._columnsMutations++;\n if (_this.props.onColumnResize) {\n _this.props.onColumnResize.call(undefined, {\n columns: _this.columns,\n nativeEvent: nativeEvent,\n targetColumnId: targetId,\n index: index,\n newWidth: newWidth,\n oldWidth: oldWidth,\n end: end,\n target: _this\n });\n }\n };\n _this.reInitVirtualization = memoizeOne(function (_vScrolling, _total, _filter, _group, _sort, useCached) {\n _this.vs.reset();\n var VS = _this.getVirtualScroll(_this.props);\n _this.vs = new VS(useCached);\n });\n _this.flatData = memoizeOne(function (propsData, groupingFooter, skip, group, expandField, _filter, _sort) {\n var flattedData = [];\n var resolvedGroupsCount = flatData(flattedData, propsData, groupingFooter, { index: skip }, group !== undefined, expandField);\n return { flattedData: flattedData, resolvedGroupsCount: resolvedGroupsCount };\n });\n _this.rowHeightService = memoizeOne(function (_vs, total, rowHeight, detailRowHeight, data) {\n return new RowHeightService(total, rowHeight, detailRowHeight, data);\n });\n _this.childrenToArray = memoizeOne(function (children) {\n return React.Children.toArray(children);\n });\n _this.readColumns = memoizeOne(function (children, idPrefix, _mutationsCount) {\n var columnElements = children.filter(function (child) { return child && child.type && child.type.displayName === 'KendoReactGridColumn'; });\n return readColumns(columnElements, _this.columns, { prevId: 0, idPrefix: idPrefix });\n });\n _this.mapColumns = memoizeOne(function (columns) {\n return mapColumns(columns);\n });\n _this.configureColumns = memoizeOne(function (columns, groupCount, idPrefix) {\n if (_this.props.selectedField) {\n columns.filter(function (c) { return c.field === _this.props.selectedField; }).forEach(function (c) {\n c.width = c.width || '50px';\n c.cell = c.cell || GridSelectionCell;\n c.headerCell = c.headerCell || GridHeaderSelectionCell;\n });\n }\n var defaultServiceProps = {\n id: '',\n resizable: true,\n width: '32px',\n title: ' ',\n declarationIndex: -1,\n orderIndex: -1,\n children: [],\n parentIndex: -1,\n depth: 0,\n colSpan: 0,\n rowSpan: 0,\n left: 0,\n right: 0,\n index: 0,\n rightBorder: false,\n ariaColumnIndex: 0,\n isAccessible: true\n };\n var columnIndexOffset = 0;\n if (_this.props.expandField && (_this.props.onExpandChange) && _this.props.detail) {\n columns.unshift(__assign(__assign({}, defaultServiceProps), { cell: GridHierarchyCell, field: _this.props.expandField, headerClassName: 'k-hierarchy-cell k-header', id: navigationTools.generateNavigatableId(\"\".concat(_this._columns.length), idPrefix, 'column') }));\n columnIndexOffset++;\n }\n for (var i = 0; i < groupCount; i++) {\n columns.unshift(__assign(__assign({}, defaultServiceProps), { isAccessible: false, cell: GridGroupCell, field: 'value', locked: _this.props.lockGroups }));\n columnIndexOffset++;\n }\n columns.slice(columnIndexOffset).forEach(function (c) { return c.parentIndex >= 0 && (c.parentIndex += columnIndexOffset); });\n });\n _this.getHeaderRow = memoizeOne(function (sort, sortable, group, groupable, filter, filterable, filterOperators, headerCellRender, columnMenu, columns, columnsMap, isHeaderRtl) {\n return (React.createElement(HeaderRow, { cells: _this.props.cells, sort: sort, sortable: sortable, sortChange: _this.sortChange, group: group || [], groupable: groupable, groupChange: _this.groupChange, filter: filter, filterable: filterable, filterOperators: filterOperators, filterChange: _this.filterChange, columnMenu: columnMenu, selectionChange: _this.onHeaderSelectionChange, columns: columns, columnResize: _this.columnResize, pressHandler: _this.dragLogic.pressHandler, dragHandler: _this.dragLogic.dragHandler, releaseHandler: _this.dragLogic.releaseHandler, columnsMap: columnsMap, cellRender: headerCellRender, isRtl: isHeaderRtl, dragClue: _this.dragLogic.dragClueRef, headerRef: _this.headerElementRef, containerRef: _this.containerRef }));\n });\n _this.resolveTitle = function (field) {\n var column = _this._columns.find(function (c) { return c.field === field; });\n var title = column && (column.title || column.field);\n return title === undefined ? field : title;\n };\n _this.getLeafDataItems = function () {\n return _this._data.filter(function (item) { return item.rowType === 'data'; }).map(function (item) { return item.dataItem; });\n };\n validatePackage(packageMetadata);\n _this.showLicenseWatermark = shouldShowValidationUI(packageMetadata);\n var groupable = _this.props.groupable === true ||\n (typeof _this.props.groupable === 'object') && _this.props.groupable.enabled !== false;\n var VS = _this.getVirtualScroll(props);\n _this.vs = new VS(groupable || props.rowHeight === undefined || props.rowHeight === 0);\n _this.dragLogic = new CommonDragLogic(_this.columnReorder.bind(_this), _this.groupReorder.bind(_this), _this.columnToGroup.bind(_this));\n _this.columnResize = new ColumnResize(_this.onResize);\n tableKeyboardNavigation.onConstructor({\n navigatable: Boolean(props.navigatable),\n contextStateRef: _this.contextStateRef,\n navigationStateRef: _this.navigationStateRef,\n idPrefix: _this._gridId\n });\n return _this;\n }\n Object.defineProperty(Grid.prototype, \"columns\", {\n /* eslint-disable max-len */\n /**\n * A getter of the current columns. Gets the current column width or current columns, or any other [`GridColumnProps`]({% slug api_grid_gridcolumnprops %}) for each defined column. Can be used on each Grid instance. To obtain the instance of the rendered Grid, use the `ref` callback. The following example demonstrates how to reorder the columns by dragging their handlers and check the properties afterwards. You can check the result in the browser console.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * data: [\n * { 'foo': 'A1', 'bar': 'B1' },\n * { 'foo': 'A2', 'bar': 'B2' },\n * { 'foo': 'A3', 'bar': 'B2' }\n * ]\n * };\n * this.grid = null;\n * }\n * render() {\n * return (\n *
    \n * { this.grid = g; }}\n * >\n * \n * \n * \n * \n *
    \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n // tslint:enable:max-line-length\n get: function () {\n var shuffledColumns = this._columns.filter(function (q) { return q.declarationIndex >= 0 && q.parentIndex === -1; });\n return sanitizeColumns(shuffledColumns);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Grid.prototype, \"element\", {\n /**\n * Returns the HTML element of the Grid component.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Grid.prototype, \"document\", {\n get: function () {\n if (!canUseDOM) {\n return;\n }\n // useful only for user actions\n return (this.element && this.element.ownerDocument) || document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Grid.prototype, \"_header\", {\n get: function () {\n return this.headerRef.current;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Grid.prototype.componentDidMount = function () {\n this.resetTableWidth();\n setScrollbarWidth();\n var rtl = isRtl(this.element);\n this.isRtl = rtl;\n tableKeyboardNavigation.onComponentDidMount({\n scope: this.element || undefined,\n contextStateRef: this.contextStateRef,\n navigationStateRef: this.navigationStateRef\n });\n if (this.isRtl) {\n this.forceUpdate();\n }\n var observerOptions = {\n rootMargin: '0px',\n threshold: 0.9\n };\n this.observer = (canUseDOM && window.IntersectionObserver &&\n new window.IntersectionObserver(this.handleIntersection, observerOptions) || null);\n };\n /**\n * @hidden\n */\n Grid.prototype.getSnapshotBeforeUpdate = function () {\n tableKeyboardNavigation.onGetSnapshotBeforeUpdate({\n document: this.document,\n contextStateRef: this.contextStateRef,\n navigationStateRef: this.navigationStateRef\n });\n return null;\n };\n /**\n * @hidden\n */\n Grid.prototype.componentDidUpdate = function () {\n this.resetTableWidth();\n setScrollbarWidth();\n if (this.vs.tableTransform && this.vs.table) {\n this.vs.table.style.transform = this.vs.tableTransform;\n this.vs.tableTransform = '';\n }\n tableKeyboardNavigation.onComponentDidUpdate({\n scope: this.element || undefined,\n contextStateRef: this.contextStateRef,\n navigationStateRef: this.navigationStateRef\n });\n };\n /**\n * @hidden\n */\n Grid.prototype.componentWillUnmount = function () {\n clearTimeout(this.forceUpdateTimeout);\n };\n /**\n * @hidden\n */\n Grid.prototype.render = function () {\n var _a, _b, _c, _d;\n var _this = this;\n var _e;\n var total = this.props.total || 0;\n var idPrefix = navigationTools.getIdPrefix(this.navigationStateRef);\n var propsData = [];\n if (Array.isArray(this.props.data)) {\n propsData = this.props.data;\n total = total || this.props.data.length;\n }\n else if (this.props.data) {\n propsData = this.props.data.data;\n total = total || this.props.data.total;\n }\n var groupingFooter = (typeof this.props.groupable === 'object') && this.props.groupable.footer || 'none';\n var _f = this.flatData(propsData, groupingFooter, this.props.skip || 0, this.props.group, this.props.expandField, this.props.filter, this.props.sort), resolvedGroupsCount = _f.resolvedGroupsCount, flattedData = _f.flattedData;\n this._data = flattedData;\n var groupable = this.props.groupable === true ||\n (typeof this.props.groupable === 'object') && this.props.groupable.enabled !== false;\n this.columnResize.resizable = this.props.resizable || false;\n this.dragLogic.reorderable = this.props.reorderable || false;\n this.dragLogic.groupable = groupable;\n var tableUserSelect = this.props.selectable && this.props.selectable.drag ? 'none' : undefined;\n this.initializeVirtualization(total, groupable);\n var children = this.childrenToArray(this.props.children);\n this.initColumns(children, resolvedGroupsCount);\n var toolbar = children.map(function (child) {\n if (child && child.type && child.type.displayName === 'KendoReactGridToolbar') {\n return React.cloneElement(child, __assign(__assign({}, child.props), { ariaControls: _this._gridRoleElementId }));\n }\n return null;\n });\n var noRecords = children.filter(function (child) { return child && child.type &&\n child.type.displayName === 'KendoReactGridNoRecords'; });\n var statusBar = children.filter(function (child) { return child && child.type &&\n child.type.displayName === 'KendoReactGridStatusBar'; });\n var leafColumns = this._columns.filter(function (c) { return c.children.length === 0; });\n var groupingPanel = groupable && (React.createElement(GroupPanel, { group: this.props.group || [], groupChange: this.groupChange, pressHandler: this.dragLogic.pressHandler, dragHandler: this.dragLogic.dragHandler, releaseHandler: this.dragLogic.releaseHandler, refCallback: this.dragLogic.refGroupPanelDiv, resolveTitle: this.resolveTitle, ariaControls: this._gridRoleElementId, onContextMenu: this.onContextMenu }));\n var _g = this.props, sort = _g.sort, sortable = _g.sortable, group = _g.group, filter = _g.filter, filterable = _g.filterable, _h = _g.filterOperators, filterOperators = _h === void 0 ? operators : _h, headerCellRender = _g.headerCellRender, columnMenu = _g.columnMenu;\n var header = (React.createElement(Header, { size: this.props.size, columnResize: this.columnResize, staticHeaders: this.props.scrollable !== 'none', scrollableDataElement: function () { return _this.vs.container; }, draggable: this.props.reorderable || groupable, ref: this.headerRef, elemRef: this.headerElementRef, headerRow: this.getHeaderRow(sort, sortable, group, groupable, filter, filterable, filterOperators, headerCellRender, columnMenu, this._columns, this._columnsMap, this.isRtl), filterRow: this.props.filterable && React.createElement(FilterRow, { cells: this.props.cells, size: this.props.size, columns: this._columns, filter: this.props.filter, filterOperators: this.props.filterOperators || operators, filterChange: this.filterChange, sort: this.props.sort, cellRender: this.props.filterCellRender, isRtl: this.isRtl, ariaRowIndex: this._columnsMap.length + 1 }) || undefined, cols: leafColumns.map(function (column, index) { return (React.createElement(\"col\", { key: index.toString(), width: getColumnWidth(column) })); }) }));\n var scrollLeft = this.vs && this.vs.container && this.vs.container.scrollLeft || 0;\n var tableWidth = parseFloat(((this.props.style || {}).width || '').toString());\n var _j = tableColumnsVirtualization({\n enabled: this.props.columnVirtualization,\n columns: leafColumns,\n tableViewPortWidth: tableWidth,\n scrollLeft: scrollLeft\n }), colSpans = _j.colSpans, isColHidden = _j.hiddenColumns;\n var dataRow = function (item, rowId, rowDataIndex) {\n var isInEdit = false;\n var selectedValue = _this.props.selectedField ? getNestedValue(_this.props.selectedField, item.dataItem) : undefined;\n return {\n row: leafColumns.map(function (column, columnIndex) {\n if (isColHidden[columnIndex]) {\n return null;\n }\n var columnKey = column.id ? column.id : columnIndex;\n var className = \"\".concat(column.className ? column.className + ' ' : '')\n + \"\".concat(column.locked ? 'k-grid-content-sticky' : '');\n var style = column.left !== undefined\n ? !_this.isRtl\n ? { left: column.left, right: column.right }\n : { left: column.right, right: column.left }\n : {};\n var currentColumnIsInEdit = false;\n if (column.editable && _this.props.editField) {\n var inEdit = getNestedValue(_this.props.editField, item.dataItem);\n if (inEdit && (inEdit === true || inEdit === column.field)) {\n isInEdit = true;\n currentColumnIsInEdit = true;\n }\n }\n var Cell = column.cell || (currentColumnIsInEdit && GridEditCell) || GridCell;\n return (React.createElement(Cell, { onContextMenu: _this.onContextMenu, key: columnKey, locked: _this.props.lockGroups, id: navigationTools.generateNavigatableId(\"\".concat(rowId, \"-\").concat(String(columnIndex)), idPrefix), colSpan: colSpans[columnIndex], dataItem: item.dataItem, field: column.field, editor: column.editor, format: column.format, className: className, render: _this.props.cellRender, cells: resolveCells(_this.props.cells, column.cells), onChange: _this.itemChange, selectionChange: (_this.props.onSelectionChange) ?\n (function (e) { _this.selectionChange({ event: e, dataItem: item.dataItem, dataIndex: rowDataIndex, columnIndex: columnIndex }); }) :\n undefined, columnIndex: columnIndex, columnsCount: leafColumns.length, rowType: item.rowType, level: item.level, expanded: item.expanded, dataIndex: item.dataIndex, style: style, ariaColumnIndex: column.ariaColumnIndex, isSelected: Array.isArray(selectedValue) && selectedValue.indexOf(columnIndex) > -1 }));\n }),\n isInEdit: isInEdit,\n isSelected: typeof selectedValue === 'boolean' && selectedValue\n };\n };\n var hiddenRows = 0;\n if (this.props.scrollable === 'virtual') {\n for (var i = 0; i < this.vs.topCacheCount + this.vs.attendedSkip - (this.props.skip || 0); i++) {\n var item = this._data.shift();\n if (item) {\n this._data.push(item);\n hiddenRows++;\n if (item.rowType === 'groupHeader') {\n i--;\n }\n }\n else {\n break;\n }\n }\n }\n var hidden = function (index) {\n return (index >= _this._data.length - hiddenRows);\n };\n var absoluteDataIndex = this.vs.realSkip || 0;\n var body = [];\n var rowIndexStart = this._columnsMap.length + (this.props.filterable ? 1 : 0) + 1;\n var currentAriaRowIndex = 0;\n if (this._data.length) {\n var dataIndex_1 = -1;\n var detailRowCount_1 = 0;\n (this._slicedData || this._data).forEach(function (item, rowIndex) {\n if (item.rowType === 'data') {\n absoluteDataIndex++;\n dataIndex_1++;\n }\n var isAlt = absoluteDataIndex % 2 === 0;\n var dataItemKey = _this.props.dataItemKey && getter(_this.props.dataItemKey)(item.dataItem);\n var absoluteIndex = rowIndex + (_this.vs.realSkip || 0);\n var rowId = dataItemKey ? dataItemKey : 'ai' + absoluteIndex;\n var detailRowId = rowId + '_1';\n var gridRow = dataRow(item, rowId, dataIndex_1);\n currentAriaRowIndex = absoluteIndex + rowIndexStart + detailRowCount_1;\n body.push((React.createElement(GridRow, { key: rowId, dataItem: item.dataItem, isAltRow: isAlt, isInEdit: gridRow.isInEdit, rowType: item.rowType, isHidden: hidden(rowIndex), onClick: function (e) { return _this.rowClick(e, item); }, onDoubleClick: function (e) { return _this.rowDblClick(e, item); }, selectedField: _this.props.selectedField, rowHeight: _this.props.rowHeight, render: _this.props.rowRender, ariaRowIndex: currentAriaRowIndex, absoluteRowIndex: absoluteIndex, dataIndex: dataIndex_1, isSelected: gridRow.isSelected }, gridRow.row)));\n if (_this.props.detail && item.rowType === 'data' && item.expanded) {\n var detailColspan = (leafColumns.length\n - (_this.props.expandField ? 1 : 0)\n - (_this.props.group ? _this.props.group.length : 0)) || 1;\n detailRowCount_1++;\n currentAriaRowIndex = absoluteIndex + rowIndexStart + detailRowCount_1;\n body.push((React.createElement(\"tr\", { key: detailRowId, className: classNames('k-table-row', isAlt ? 'k-detail-row k-table-alt-row k-alt' : 'k-detail-row'), style: { visibility: hidden(rowIndex) ? 'hidden' : '', height: _this.props.detailRowHeight }, role: \"row\", \"aria-rowindex\": currentAriaRowIndex },\n _this.props.group && _this.props.group.map(function (gr, idx) {\n var _a;\n var columnStyle = (_a = gridRow === null || gridRow === void 0 ? void 0 : gridRow.row[idx]) === null || _a === void 0 ? void 0 : _a.props.style;\n var style = columnStyle\n ? !_this.isRtl\n ? { left: columnStyle.left, right: columnStyle.right }\n : { left: columnStyle.right, right: columnStyle.left }\n : {};\n return (React.createElement(GridGroupCell, { id: '', dataIndex: item.dataIndex, field: gr.field, dataItem: item.dataItem, key: idx, style: style, ariaColumnIndex: 1 + idx, isSelected: false, locked: _this.props.lockGroups, isRtl: _this.isRtl, cells: _this.props.cells }));\n }),\n _this.props.expandField &&\n React.createElement(GridDetailHierarchyCell, { id: navigationTools.generateNavigatableId(\"\".concat(detailRowId, \"-dhcell\"), idPrefix) }),\n React.createElement(GridDetailCell, { onContextMenu: _this.onContextMenu, dataItem: item.dataItem, dataIndex: item.dataIndex, colSpan: detailColspan, ariaColIndex: 2 + (_this.props.group ? _this.props.group.length : 0), detail: _this.props.detail, id: navigationTools.generateNavigatableId(\"\".concat(detailRowId, \"-dcell\"), idPrefix) }))));\n }\n });\n }\n else {\n body.push((React.createElement(\"tr\", { key: \"no-records\", className: \"k-table-row k-grid-norecords\", role: 'row', \"aria-rowindex\": rowIndexStart },\n React.createElement(\"td\", { className: 'k-table-td', colSpan: leafColumns.length, role: 'gridcell' }, noRecords.length ? noRecords : React.createElement(GridNoRecords, null)))));\n }\n var pagerProps = __assign({ size: this.props.size, onPageChange: this.pagerPageChange, total: total, dir: this.isRtl ? 'rtl' : undefined, skip: this.vs.propsSkip || 0, take: (this.props.take !== undefined ? this.props.take : this.props.pageSize) || 10, messagesMap: pagerMessagesMap }, (normalize(this.props.pageable || {})));\n var pager = this.props.pager ? React.createElement(this.props.pager, __assign({}, pagerProps)) : React.createElement(Pager, __assign({ className: \"k-grid-pager\" }, pagerProps));\n var sorted = function (field) {\n return _this.props.sort && _this.props.sort.filter(function (descriptor) { return descriptor.field === field; }).length > 0;\n };\n var footerCols = function (column, index) {\n return (React.createElement(\"col\", { key: index.toString(), width: getColumnWidth(column) }));\n };\n var footer = (Boolean((_e = this.props.cells) === null || _e === void 0 ? void 0 : _e.footerCell)\n || this._columns.some(function (c) { var _a; return Boolean(c.footerCell || Boolean((_a = c.cells) === null || _a === void 0 ? void 0 : _a.footerCell)); }))\n ? (React.createElement(Footer, { size: this.props.size, columnResize: this.columnResize, staticHeaders: this.props.scrollable !== 'none', ref: function (f) { return _this._footer = f; }, row: React.createElement(FooterRow, { cells: this.props.cells, columns: this._columns, isRtl: this.isRtl, ariaRowIndex: currentAriaRowIndex + 1 }), cols: leafColumns.map(footerCols) })) : null;\n var colGroups = (React.createElement(\"colgroup\", { ref: function (c) {\n _this.columnResize.colGroupMain = c;\n } }, leafColumns.map(function (column, index) { return (React.createElement(\"col\", { key: index.toString(), className: sorted(column.field) ? 'k-sorted' : undefined, width: getColumnWidth(column) })); })));\n var enableDragClues = this.dragLogic.reorderable || this.dragLogic.groupable;\n var tableDisplay = this.props.columnVirtualization ? 'block' : 'table';\n if (this.props.scrollable === 'none') {\n return (React.createElement(TableKeyboardNavigationContext.Provider, { value: this.contextStateRef.current },\n React.createElement(\"div\", __assign({ id: this.props.id, style: this.props.style, className: classNames('k-grid', (_a = {\n 'k-grid-md': !this.props.size\n },\n _a[\"k-grid-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size,\n _a), this.props.className), ref: function (el) { _this._element = el; }, \"aria-label\": this.props.ariaLabel, onKeyDown: this.onKeyDown, onFocus: this.onFocus }, tableKeyboardNavigationScopeAttributes),\n toolbar,\n groupingPanel,\n React.createElement(TableSelection, { selectable: this.props.selectable, onRelease: this.selectionRelease, childRef: function (table) { _this.tableElement = table; } },\n React.createElement(\"table\", { className: classNames('k-table k-grid-table', (_b = {}, _b[\"k-table-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size, _b)), style: { userSelect: tableUserSelect, display: tableDisplay } },\n colGroups,\n header,\n React.createElement(\"tbody\", __assign({ role: 'rowgroup', className: 'k-table-tbody' }, tableKeyboardNavigationBodyAttributes), body),\n footer)),\n enableDragClues && (React.createElement(React.Fragment, null,\n React.createElement(DropClue, { ref: this.dragLogic.refDropElementClue }),\n React.createElement(DragClue, { ref: this.dragLogic.refDragElementClue })))),\n statusBar,\n this.props.pageable && pager));\n }\n var wrapperStyle = this.props.style || {};\n if (this.props.scrollable === 'virtual') {\n // Set the default height for vs if not existing.\n if (!wrapperStyle.height) {\n wrapperStyle = Object.assign({}, wrapperStyle, { height: '450px' });\n }\n }\n return (React.createElement(TableKeyboardNavigationContext.Provider, { value: this.contextStateRef.current },\n React.createElement(\"div\", __assign({ id: this.props.id, style: wrapperStyle, className: classNames('k-grid', (_c = {\n 'k-grid-md': !this.props.size\n },\n _c[\"k-grid-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size,\n _c['k-grid-virtual'] = this.props.scrollable === 'virtual',\n _c), this.props.className), ref: function (el) {\n _this._element = el;\n }, \"aria-label\": this.props.ariaLabel, onKeyDown: this.onKeyDown, onFocus: this.onFocus }, tableKeyboardNavigationScopeAttributes),\n toolbar,\n groupingPanel,\n React.createElement(\"div\", { className: 'k-grid-aria-root', role: \"grid\", \"aria-colcount\": leafColumns.length, \"aria-rowcount\": total, id: this._gridRoleElementId },\n header,\n React.createElement(\"div\", { className: \"k-grid-container\", role: \"presentation\" },\n React.createElement(\"div\", { ref: this.containerRef, className: \"k-grid-content k-virtual-content\", onScroll: this.scrollHandler, role: \"presentation\" },\n React.createElement(\"div\", { className: 'k-grid-table-wrap', role: \"presentation\" },\n React.createElement(TableSelection, { selectable: this.props.selectable, onRelease: this.selectionRelease, childRef: function (table) {\n _this.tableElement = table;\n } },\n React.createElement(\"table\", { className: classNames('k-table k-grid-table', (_d = {\n 'k-table-md': !this.props.size\n },\n _d[\"k-table-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size,\n _d)), role: \"presentation\", style: { userSelect: tableUserSelect, display: tableDisplay } },\n colGroups,\n React.createElement(\"tbody\", __assign({ className: 'k-table-tbody', ref: this.tableBodyRef, role: 'rowgroup' }, tableKeyboardNavigationBodyAttributes), body)))),\n React.createElement(\"div\", { className: \"k-height-container\", role: \"presentation\" },\n React.createElement(\"div\", { style: this.props.scrollable === 'virtual' ?\n { 'height': (this.vs.containerHeight) + 'px' } : {} })))),\n footer,\n enableDragClues && (React.createElement(React.Fragment, null,\n React.createElement(DropClue, { ref: this.dragLogic.refDropElementClue }),\n React.createElement(DragClue, { ref: this.dragLogic.refDragElementClue }))),\n this.showLicenseWatermark && React.createElement(WatermarkOverlay, null)),\n statusBar,\n this.props.pageable && pager)));\n };\n Grid.prototype.selectionChange = function (options) {\n if (this.props.onSelectionChange) {\n var event_1 = options.event, dataItem = options.dataItem, dataIndex = options.dataIndex, columnIndex = options.columnIndex;\n var _a = getSelectionOptions(this.props.selectable), mode = _a.mode, cell = _a.cell;\n var selectionEvent = __assign(__assign({}, this.getArguments(event_1.syntheticEvent)), { dataItem: dataItem, startColIndex: columnIndex, endColIndex: columnIndex, startRowIndex: dataIndex, endRowIndex: dataIndex, dataItems: this.getLeafDataItems(), altKey: false, ctrlKey: false, shiftKey: false, metaKey: false, mode: mode, cell: cell, isDrag: false, componentId: this._gridId, selectedField: this.props.selectedField || '' });\n this.props.onSelectionChange.call(undefined, selectionEvent);\n }\n };\n Grid.prototype.raiseDataEvent = function (handler, data, moreData, syntheticEvent, targetEvent) {\n var dataStateChange = this.props.onDataStateChange;\n if (handler) {\n var ev = __assign(__assign(__assign({}, this.getArguments(syntheticEvent)), data), { targetEvent: targetEvent });\n handler.call(undefined, ev);\n }\n else if (dataStateChange) {\n dataStateChange.call(undefined, __assign(__assign({}, this.getArguments(syntheticEvent)), { targetEvent: targetEvent || {}, dataState: __assign(__assign({}, this.getDataState()), moreData) }));\n }\n };\n Grid.prototype.columnReorder = function (prev, next, nativeEvent) {\n var _a;\n var _this = this;\n var column = this._columns[prev];\n var depth = column.depth;\n var end = function (index) {\n do {\n index++;\n } while (index < _this._columns.length && _this._columns[index].depth > depth);\n return index;\n };\n var spliced = this._columns.splice(prev, end(prev) - prev);\n (_a = this._columns).splice.apply(_a, __spreadArray([prev < next ? end(next - spliced.length) : next, 0], spliced, false));\n this._columns.filter(function (q) { return q.declarationIndex >= 0; }).forEach(function (c, i) { return c.orderIndex = i; });\n this._columnsMutations++;\n var shouldUpdateRL = this._columns[prev].locked && this._columns[next].locked;\n updateLeft(this._columnsMap, this._columns, shouldUpdateRL || this._shouldUpdateLeftRight);\n updateRight(this._columnsMap, this._columns, shouldUpdateRL || this._shouldUpdateLeftRight);\n if (this._resized) {\n this._shouldUpdateLeftRight = false;\n this._resized = false;\n }\n var eventColumnProps = this.columns;\n this.forceUpdate();\n if (this.props.onColumnReorder) {\n var reorderEvent = {\n target: this,\n columns: eventColumnProps,\n columnId: column.id,\n nativeEvent: nativeEvent\n };\n this.props.onColumnReorder.call(undefined, reorderEvent);\n }\n };\n Grid.prototype.groupReorder = function (prevIndex, nextIndex, nativeEvent) {\n if (this.props.group === undefined) {\n return;\n }\n var group = this.props.group.slice();\n group.splice.apply(group, __spreadArray([nextIndex, 0], group.splice(prevIndex, 1), false));\n this.groupChange(group, nativeEvent);\n };\n Grid.prototype.columnToGroup = function (columnIndex, groupIndex, nativeEvent) {\n var field = this._columns[columnIndex].field;\n if (!field) {\n return;\n }\n var group = (this.props.group || []).slice();\n group.splice(groupIndex, 0, { field: field });\n this.groupChange(group, nativeEvent);\n };\n Grid.prototype.resetTableWidth = function () {\n var totalWidth = 0;\n if (!this.columnResize.colGroupMain) {\n return;\n }\n var colElements = this.columnResize.colGroupMain.children;\n for (var i = 0; i < colElements.length; i++) {\n var width = colElements[i].width;\n if (!width) {\n return;\n }\n totalWidth += parseFloat(width.toString());\n }\n totalWidth = Math.round(totalWidth);\n if (this._header) {\n this._header.setWidth(totalWidth);\n }\n if (this._footer) {\n this._footer.setWidth(totalWidth);\n }\n if (this.tableElement) {\n this.tableElement.style.width = totalWidth + 'px';\n }\n };\n Grid.prototype.initColumns = function (children, groupCount) {\n var idPrefix = navigationTools.getIdPrefix(this.navigationStateRef);\n this._columns = this.readColumns(children, idPrefix, this._columnsMutations);\n if (this._columns.length === 0) {\n this._columns = autoGenerateColumns(this.props.data, this.props.group, this.props.expandField, { prevId: 0, idPrefix: idPrefix });\n }\n this.configureColumns(this._columns, groupCount, idPrefix);\n this._columnsMap = this.mapColumns(this._columns);\n this.columnResize.columns = this._columns;\n this.dragLogic.columns = this._columns;\n };\n Grid.prototype.getDataState = function () {\n return {\n filter: this.props.filter,\n sort: this.props.sort,\n skip: this.props.skip,\n take: (this.props.take !== undefined ? this.props.take : this.props.pageSize),\n group: this.props.group\n };\n };\n Grid.prototype.getArguments = function (syntheticEvent) {\n return {\n nativeEvent: syntheticEvent && syntheticEvent.nativeEvent,\n syntheticEvent: syntheticEvent,\n target: this\n };\n };\n /**\n * @hidden\n */\n Grid.displayName = 'KendoReactGrid';\n /**\n * @hidden\n */\n Grid.defaultProps = {\n // never use this\n };\n /**\n * @hidden\n */\n Grid.propTypes = {\n data: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.shape({\n data: PropTypes.array,\n total: PropTypes.number\n })\n ]),\n sortable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n mode: PropTypes.oneOf(['single', 'multiple']),\n allowUnsort: PropTypes.bool\n })\n ]),\n onSortChange: PropTypes.func,\n sort: PropTypes.array,\n filterable: PropTypes.bool,\n filter: PropTypes.any,\n onFilterChange: PropTypes.func,\n pageable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n buttonCount: PropTypes.number,\n info: PropTypes.bool,\n type: PropTypes.oneOf(['numeric', 'input']),\n pageSizes: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.arrayOf(PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]))\n ]),\n previousNext: PropTypes.bool\n })\n ]),\n pageSize: PropTypes.number,\n onPageChange: PropTypes.func,\n total: PropTypes.number,\n skip: PropTypes.number,\n take: PropTypes.number,\n fixedScroll: PropTypes.bool,\n onExpandChange: PropTypes.func,\n expandField: PropTypes.string,\n selectedField: PropTypes.string,\n onSelectionChange: PropTypes.func,\n onHeaderSelectionChange: PropTypes.func,\n resizable: PropTypes.bool,\n reorderable: PropTypes.bool,\n group: PropTypes.any,\n groupable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n enabled: PropTypes.bool,\n footer: PropTypes.oneOf(['always', 'visible', 'none'])\n })\n ]),\n onGroupChange: PropTypes.func,\n onRowClick: PropTypes.func,\n onRowDoubleClick: PropTypes.func,\n onItemChange: PropTypes.func,\n editField: PropTypes.string,\n scrollable: PropTypes.oneOf(['none', 'scrollable', 'virtual']),\n rowHeight: PropTypes.number,\n detailRowHeight: PropTypes.number,\n detail: PropTypes.any,\n style: PropTypes.object,\n onDataStateChange: PropTypes.func,\n onColumnResize: PropTypes.func,\n onColumnReorder: PropTypes.func,\n dataItemKey: PropTypes.string,\n navigatable: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'medium'])\n };\n /** @hidden */\n Grid.contextType = TableKeyboardNavigationContext;\n return Grid;\n}(React.Component));\nexport { Grid };\n","/**\n * @hidden\n */\nvar normalizeSettings = function (_a) {\n var _b = _a.buttonCount, buttonCount = _b === void 0 ? 10 : _b, _c = _a.info, info = _c === void 0 ? true : _c, _d = _a.type, type = _d === void 0 ? 'numeric' : _d, _e = _a.pageSizes, pageSizes = _e === void 0 ? undefined : _e, _f = _a.previousNext, previousNext = _f === void 0 ? true : _f, _g = _a.responsive, responsive = _g === void 0 ? undefined : _g, _h = _a.pageSizeValue, pageSizeValue = _h === void 0 ? undefined : _h;\n return ({\n buttonCount: buttonCount,\n info: info,\n pageSizes: pageSizes === true ? [5, 10, 20] : (pageSizes || undefined),\n previousNext: previousNext,\n responsive: responsive === false ? false : true,\n type: type,\n pageSizeValue: pageSizeValue\n });\n};\n/**\n * @hidden\n */\nexport var normalize = function (settings) {\n return normalizeSettings(settings === true ? {} : settings);\n};\n","import * as PropTypes from 'prop-types';\n/**\n * @hidden\n */\nexport var GridColumn = function (_) { return null; };\n/**\n * @hidden\n */\nGridColumn.displayName = 'KendoReactGridColumn';\n/**\n * @hidden\n */\nGridColumn.defaultProps = {\n filterable: true,\n editable: true,\n sortable: true,\n resizable: true,\n reorderable: true,\n groupable: true\n};\n/**\n * @hidden\n */\nGridColumn.propTypes = {\n field: PropTypes.string,\n title: PropTypes.string,\n editable: PropTypes.bool,\n sortable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n allowUnsort: PropTypes.bool.isRequired\n })\n ]),\n cell: PropTypes.any,\n filterCell: PropTypes.any,\n filterTitle: PropTypes.string,\n filterable: PropTypes.bool,\n filter: PropTypes.oneOf(['text', 'numeric', 'boolean', 'date']),\n editor: PropTypes.oneOf(['text', 'numeric', 'boolean', 'date']),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minResizableWidth: PropTypes.number,\n headerCell: PropTypes.any,\n footerCell: PropTypes.any,\n headerSelectionValue: PropTypes.bool,\n format: PropTypes.string,\n headerClassName: PropTypes.string,\n className: PropTypes.string,\n reorderable: PropTypes.bool,\n resizable: PropTypes.bool,\n orderIndex: PropTypes.number,\n groupable: PropTypes.bool,\n columnMenu: PropTypes.any,\n locked: PropTypes.bool\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, noRecords } from './messages';\n/* eslint-disable max-len */\n/**\n * Represents the GridNoRecords component. The component is rendered when the `data` property of the Grid is empty or `null`.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * There is no data available\n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(\n * ,\n * document.querySelector('my-app')\n * );\n * ```\n */\n// tslint:enable:max-line-length\nvar GridNoRecords = /** @class */ (function (_super) {\n __extends(GridNoRecords, _super);\n function GridNoRecords() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridNoRecords.prototype.render = function () {\n return this.props.children || intl(this).toLanguageString(noRecords, messages[noRecords]);\n };\n /**\n * @hidden\n */\n GridNoRecords.displayName = 'KendoReactGridNoRecords';\n return GridNoRecords;\n}(React.Component));\nexport { GridNoRecords };\nregisterForLocalization(GridNoRecords);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { useInternationalization } from '@progress/kendo-react-intl';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport { GRID_COL_INDEX_ATTRIBUTE } from '../constants';\nimport { classNames } from '@progress/kendo-react-common';\nexport var GridCell = function (props) {\n var _a;\n var defaultRendering = null;\n var intl = useInternationalization();\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n var onContextMenu = React.useCallback(function (event) {\n if (props.onContextMenu) {\n props.onContextMenu.call(undefined, event, props.dataItem, props.field);\n }\n }, [props.onContextMenu, props.dataItem, props.field]);\n var tdProps = null;\n var content = null;\n if (props.rowType === 'groupFooter') {\n tdProps = {\n onContextMenu: onContextMenu,\n className: props.className\n };\n defaultRendering = React.createElement(\"td\", __assign({}, tdProps));\n }\n else if (props.rowType !== 'groupHeader') {\n if (props.field !== undefined) {\n var data = getNestedValue(props.field, props.dataItem);\n if (data !== undefined && data !== null) {\n content = props.format ?\n intl.format(props.format, data) :\n data.toString();\n }\n }\n var className = classNames('k-table-td', props.className, { 'k-selected': props.isSelected });\n tdProps = __assign((_a = { onContextMenu: onContextMenu, colSpan: props.colSpan, style: props.style, className: className, role: 'gridcell', 'aria-colindex': props.ariaColumnIndex, 'aria-selected': props.isSelected }, _a[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _a), navigationAttributes);\n defaultRendering = (React.createElement(\"td\", __assign({}, tdProps), content));\n }\n var rowTypeSetting = props.rowType || 'data';\n var customCells = props.cells;\n if (customCells && customCells[rowTypeSetting]) {\n var CustomCell = customCells[rowTypeSetting];\n return (React.createElement(CustomCell, __assign({}, props, { tdProps: tdProps }), content));\n }\n return props.render ?\n props.render.call(undefined, defaultRendering, props) :\n defaultRendering;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { guid, classNames } from '@progress/kendo-react-common';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport { GRID_COL_INDEX_ATTRIBUTE } from '../constants';\n/**\n * @hidden\n */\nexport var GridEditCell = function (props) {\n var _a, _b, _c, _d, _e;\n var data = getNestedValue(props.field, props.dataItem);\n var defaultRendering = null;\n var editCellClasses = classNames('k-table-td', 'k-grid-edit-cell', (_a = {},\n _a['k-selected'] = props.isSelected,\n _a), props.className);\n var inputId = React.useMemo(function () { return guid(); }, []);\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n var tdProps = null;\n var content = null;\n var handleOnChange = React.useCallback(function (syntheticEvent) {\n if (props.onChange) {\n var value = syntheticEvent.target.type === 'checkbox' ?\n syntheticEvent.target.checked :\n syntheticEvent.target.value;\n props.onChange({\n dataItem: props.dataItem,\n dataIndex: props.dataIndex,\n field: props.field,\n syntheticEvent: syntheticEvent,\n value: value\n });\n }\n }, [props.onChange, props.dataItem, props.dataIndex, props.field]);\n var onContextMenu = React.useCallback(function (event) {\n if (props.onContextMenu) {\n props.onContextMenu.call(undefined, event, props.dataItem, props.field);\n }\n }, [props.onContextMenu, props.dataItem, props.field]);\n var inputChange = React.useCallback(function (e) {\n if (props.onChange) {\n props.onChange({\n dataItem: props.dataItem,\n dataIndex: props.dataIndex,\n field: props.field,\n syntheticEvent: e.syntheticEvent,\n value: e.value\n });\n }\n }, [props.onChange, props.dataItem, props.dataIndex, props.field]);\n switch (props.editor) {\n case 'numeric':\n tdProps = __assign((_b = { onContextMenu: onContextMenu, colSpan: props.colSpan, style: props.style, className: editCellClasses }, _b['aria-colindex'] = props.ariaColumnIndex, _b['aria-selected'] = props.isSelected, _b[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _b.role = 'gridcell', _b), navigationAttributes);\n content = (React.createElement(NumericTextBox, { width: \"100%\", value: (data === undefined) ? null : data, onChange: inputChange }));\n defaultRendering = (React.createElement(\"td\", __assign({}, tdProps), content));\n break;\n case 'date':\n tdProps = __assign((_c = { onContextMenu: onContextMenu, colSpan: props.colSpan, style: props.style, className: editCellClasses }, _c['aria-colindex'] = props.ariaColumnIndex, _c['aria-selected'] = props.isSelected, _c[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _c.role = 'gridcell', _c), navigationAttributes);\n content = (React.createElement(DatePicker, { width: \"100%\", value: data, onChange: inputChange }));\n defaultRendering = (React.createElement(\"td\", __assign({}, tdProps), content));\n break;\n case 'boolean':\n tdProps = __assign((_d = { onContextMenu: onContextMenu, colSpan: props.colSpan, style: props.style, className: editCellClasses }, _d['aria-colindex'] = props.ariaColumnIndex, _d['aria-selected'] = props.isSelected, _d[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _d.role = 'gridcell', _d), navigationAttributes);\n content = ([\n React.createElement(\"input\", { checked: data || false, id: inputId, type: \"checkbox\", className: \"k-checkbox k-checkbox-md k-rounded-md\", onChange: handleOnChange, key: 1 }),\n React.createElement(\"label\", { className: \"k-checkbox-label\", htmlFor: inputId, key: 2 })\n ]);\n defaultRendering = (React.createElement(\"td\", __assign({}, tdProps), content));\n break;\n default:\n tdProps = __assign((_e = { onContextMenu: onContextMenu, colSpan: props.colSpan, style: props.style, className: editCellClasses }, _e['aria-colindex'] = props.ariaColumnIndex, _e['aria-selected'] = props.isSelected, _e[GRID_COL_INDEX_ATTRIBUTE] = props.columnIndex, _e.role = 'gridcell', _e), navigationAttributes);\n content = (React.createElement(\"input\", { style: { width: '100%' }, className: \"k-input\", value: data || '', onChange: handleOnChange }));\n defaultRendering = (React.createElement(\"td\", __assign({}, tdProps), content));\n }\n var editorSetting = props.editor || 'text';\n var customCells = props.cells;\n if (customCells && customCells.edit && customCells.edit[editorSetting]) {\n var CustomCell = customCells.edit[editorSetting];\n return (React.createElement(CustomCell, __assign({}, props, { tdProps: tdProps }), content));\n }\n return props.render ?\n props.render.call(undefined, defaultRendering, props) :\n defaultRendering;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { NumericTextBox, TextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { messages, filterClearButton, filterChooseOperator } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { filterClearIcon, filterIcon } from '@progress/kendo-svg-icons';\nimport { cellBoolDropdownChange, cellInputChange, cellOperatorChange } from '../filterCommon';\nimport { classNames } from '@progress/kendo-react-common';\nvar GridFilterCell = /** @class */ (function (_super) {\n __extends(GridFilterCell, _super);\n function GridFilterCell(props) {\n var _this = _super.call(this, props) || this;\n _this._inputRef = React.createRef();\n _this.renderOperatorEditor = function (localization) {\n if (_this.props.filterType === 'boolean') {\n return;\n }\n var value = _this.props.operators.find(function (item) { return item.operator === _this.props.operator; }) || null;\n return (React.createElement(DropDownList, { size: _this.props.size, value: value, onChange: _this.operatorChange, className: \"k-dropdown-operator\", iconClassName: \"k-i-filter k-icon\", svgIcon: filterIcon, data: _this.props.operators, textField: \"text\", title: localization.toLanguageString(filterChooseOperator, messages[filterChooseOperator]), popupSettings: {\n width: ''\n } }));\n };\n _this.inputChange = _this.inputChange.bind(_this);\n _this.clear = _this.clear.bind(_this);\n _this.operatorChange = _this.operatorChange.bind(_this);\n _this.boolDropdownChange = _this.boolDropdownChange.bind(_this);\n return _this;\n }\n /**\n * @hidden\n */\n GridFilterCell.prototype.render = function () {\n var _a;\n var localizationService = provideLocalizationService(this);\n var defaultRendering = (React.createElement(\"div\", { className: \"k-filtercell\" },\n React.createElement(\"div\", { className: \"k-filtercell-wrapper\" },\n this.filterComponent(this.props.filterType, this.props.value, this.props.booleanValues),\n React.createElement(\"div\", { className: \"k-filtercell-operator\" },\n this.renderOperatorEditor(localizationService),\n \"\\u00A0\",\n React.createElement(Button, { size: this.props.size, icon: 'filter-clear', svgIcon: filterClearIcon, className: classNames((_a = {},\n _a['k-clear-button-visible'] = Boolean(!(this.props.value === null || this.props.value === '') || this.props.operator),\n _a)), title: localizationService.toLanguageString(filterClearButton, messages[filterClearButton]), type: \"button\", onClick: this.clear, disabled: !(!(this.props.value === null || this.props.value === '') || this.props.operator) })))));\n if (this.props.render) {\n return this.props.render.call(undefined, defaultRendering, this.props);\n }\n return defaultRendering;\n };\n GridFilterCell.prototype.inputChange = function (value, e) {\n cellInputChange(value, e, this.props);\n };\n GridFilterCell.prototype.operatorChange = function (event) {\n cellOperatorChange(event, this.props.value, this.props.onChange);\n };\n GridFilterCell.prototype.boolDropdownChange = function (event) {\n cellBoolDropdownChange(event, this.props.onChange);\n };\n GridFilterCell.prototype.clear = function (e) {\n var _this = this;\n e.preventDefault();\n this.props.onChange({ value: '', operator: '', syntheticEvent: e });\n if (this._inputRef.current) {\n this._inputRef.current.element.value = '';\n setTimeout(function () {\n _this._inputRef.current.element.focus();\n }, 0);\n }\n };\n GridFilterCell.prototype.filterComponent = function (filterType, value, booleanValues) {\n var _this = this;\n switch (filterType) {\n case 'numeric':\n return (React.createElement(NumericTextBox, { ref: this._inputRef, size: this.props.size, value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); }, title: this.props.title, ariaLabel: this.props.ariaLabel }));\n case 'date':\n return (React.createElement(DatePicker, { ref: this._inputRef, size: this.props.size, value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); }, title: this.props.title, ariaLabel: this.props.ariaLabel }));\n case 'boolean':\n var noFilterSet_1 = function (filter) { return filter === null || filter === undefined; };\n return (React.createElement(DropDownList, { ref: this._inputRef, size: this.props.size, onChange: this.boolDropdownChange, value: booleanValues.find(function (item) { return item.operator === (noFilterSet_1(value) ? '' : value); }), data: booleanValues, textField: \"text\", title: this.props.title, ariaLabel: this.props.ariaLabel }));\n default: return (React.createElement(TextBox, { ref: this._inputRef, size: this.props.size, value: value || '', onChange: function (e) { _this.inputChange(e.target.value, e.syntheticEvent); }, title: this.props.title, \"aria-label\": this.props.ariaLabel }));\n }\n };\n return GridFilterCell;\n}(React.Component));\nexport { GridFilterCell };\nregisterForLocalization(GridFilterCell);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { classNames, IconWrap, Keys } from '@progress/kendo-react-common';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { caretAltDownIcon, caretAltLeftIcon, caretAltRightIcon } from '@progress/kendo-svg-icons';\nimport * as React from 'react';\nimport { messages, groupCollapse, groupExpand } from '../messages';\n/**\n * @hidden\n */\nexport var GridGroupCell = function (props) {\n var defaultRendering = null;\n var columnIndex = props.columnIndex, level = props.level, columnsCount = props.columnsCount, rowType = props.rowType, dataItem = props.dataItem, field = props.field, onChange = props.onChange, expanded = props.expanded, render = props.render, dataIndex = props.dataIndex, ariaColumnIndex = props.ariaColumnIndex, isRtl = props.isRtl;\n var definedField = field || '';\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n var localization = useLocalization();\n var tdProps = null;\n var td2Props = null;\n var content = null;\n var onKeyDownHandler = React.useCallback(function (event) {\n if (event.isDefaultPrevented()) {\n return;\n }\n if (event.keyCode === Keys.enter && onChange) {\n event.preventDefault();\n onChange({\n dataItem: dataItem,\n dataIndex: dataIndex,\n syntheticEvent: event,\n field: undefined,\n value: !expanded\n });\n }\n }, [expanded, onChange, dataItem, dataIndex]);\n var onContextMenu = React.useCallback(function (event) {\n if (props.onContextMenu) {\n props.onContextMenu.call(undefined, event, props.dataItem, props.field);\n }\n }, [props.onContextMenu, props.dataItem, props.field]);\n var renderCellCollapse = function (colspan, styles) {\n var _a;\n var baseMessage = expanded ? groupCollapse : groupExpand;\n var message = localization.toLanguageString(baseMessage, messages[baseMessage]);\n tdProps = __assign((_a = { className: 'k-table-td', style: __assign(__assign({}, props.style), styles), colSpan: colspan, key: 'g-colspan', role: 'gridcell' }, _a['aria-selected'] = false, _a['aria-expanded'] = expanded, _a['aria-colindex'] = ariaColumnIndex, _a.onKeyDown = onKeyDownHandler, _a.onContextMenu = onContextMenu, _a), navigationAttributes);\n content = (React.createElement(\"p\", { className: \"k-reset\" },\n React.createElement(\"a\", { onClick: function (e) {\n e.preventDefault();\n if (onChange) {\n onChange({\n dataItem: dataItem,\n dataIndex: dataIndex,\n syntheticEvent: e,\n field: undefined,\n value: !expanded\n });\n }\n }, href: \"#\", tabIndex: -1, \"aria-label\": message },\n React.createElement(IconWrap, { name: expanded ?\n 'caret-alt-down'\n : isRtl ? 'caret-alt-left' : 'caret-alt-right', icon: expanded ?\n caretAltDownIcon\n : isRtl ? caretAltLeftIcon : caretAltRightIcon })),\n ((dataItem[definedField] instanceof Date) && dataItem[definedField].toString) ?\n dataItem[definedField].toString() :\n dataItem[definedField]));\n return (React.createElement(\"td\", __assign({}, tdProps), content));\n };\n if (columnIndex === undefined || level === undefined || columnIndex < level ||\n columnsCount === undefined || rowType !== 'groupHeader' || dataItem[definedField] === undefined) {\n tdProps = {\n style: props.style,\n key: 'g' + columnIndex,\n className: classNames('k-table-td', 'k-group-cell', { 'k-grid-content-sticky': props.locked }),\n role: 'gridcell',\n onContextMenu: onContextMenu\n };\n defaultRendering = (React.createElement(\"td\", __assign({}, tdProps)));\n }\n else if (columnIndex <= level && !props.locked) {\n defaultRendering = renderCellCollapse(columnsCount - columnIndex, {});\n }\n else if (columnIndex <= level && props.locked) {\n td2Props = {\n className: 'k-table-td',\n role: 'gridcell',\n colSpan: (columnsCount - columnIndex),\n style: { borderLeftWidth: 0, borderRightWidth: 0 },\n onContextMenu: onContextMenu\n };\n defaultRendering = (React.createElement(React.Fragment, null,\n renderCellCollapse(0, { position: 'sticky', zIndex: 2 }),\n React.createElement(\"td\", __assign({}, td2Props))));\n }\n var rowTypeSetting = props.rowType || 'data';\n var customCells = props.cells;\n if (customCells && customCells.group\n && customCells.group[rowTypeSetting]) {\n var CustomCell = customCells.group[rowTypeSetting];\n return (React.createElement(CustomCell, __assign({}, props, { tdProps: tdProps, td2Props: td2Props }), content));\n }\n return render ?\n render.call(undefined, defaultRendering, props) :\n defaultRendering;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { IconWrap, Keys } from '@progress/kendo-react-common';\nimport { detailCollapse, detailExpand, messages } from '../messages';\nimport { minusIcon, plusIcon } from '@progress/kendo-svg-icons';\n/**\n * @hidden\n */\nexport var GridHierarchyCell = function (props) {\n var defaultRendering = null;\n var tdProps = null;\n var content = null;\n var expanded = getNestedValue(props.field, props.dataItem);\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n var localization = useLocalization();\n var onKeyDownHandler = React.useCallback(function (event) {\n if (event.isDefaultPrevented()) {\n return;\n }\n if (event.keyCode === Keys.enter && props.onChange) {\n event.preventDefault();\n props.onChange({\n dataItem: props.dataItem,\n dataIndex: props.dataIndex,\n syntheticEvent: event,\n field: props.field,\n value: !expanded\n });\n }\n }, [props.dataItem, props.dataIndex, props.field, props.onChange, expanded]);\n if (props.rowType === 'groupFooter') {\n tdProps = __assign({ className: 'k-table-td k-hierarchy-cell', role: 'gridcell' }, navigationAttributes);\n defaultRendering =\n React.createElement(\"td\", __assign({}, tdProps));\n }\n else if (props.rowType !== 'groupHeader') {\n var baseMessage = expanded ? detailCollapse : detailExpand;\n var message = localization.toLanguageString(baseMessage, messages[baseMessage]);\n tdProps = __assign({ className: 'k-table-td k-hierarchy-cell', onKeyDown: onKeyDownHandler, 'aria-expanded': expanded ? true : false, role: 'gridcell', 'aria-colindex': props.ariaColumnIndex }, navigationAttributes);\n content = (React.createElement(\"a\", { onClick: function (e) {\n e.preventDefault();\n if (props.onChange) {\n props.onChange({\n dataItem: props.dataItem,\n dataIndex: props.dataIndex,\n syntheticEvent: e,\n field: props.field,\n value: !expanded\n });\n }\n }, \"aria-label\": message, href: \"#\", tabIndex: -1 },\n React.createElement(IconWrap, { name: expanded ? 'minus' : 'plus', icon: expanded ? minusIcon : plusIcon })));\n defaultRendering = (React.createElement(\"td\", __assign({}, tdProps), content));\n }\n var rowTypeSetting = props.rowType || 'data';\n var customCells = props.cells;\n if (customCells && customCells.hierarchy && customCells.hierarchy[rowTypeSetting]) {\n var CustomCell = customCells.hierarchy[rowTypeSetting];\n return (React.createElement(CustomCell, __assign({}, props, { tdProps: tdProps }), content));\n }\n return props.render ?\n props.render.call(undefined, defaultRendering, props) :\n defaultRendering;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { guid } from '@progress/kendo-react-common';\nimport { useTableKeyboardNavigation } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nexport var GridSelectionCell = function (props) {\n var _a;\n var handleOnChange = React.useCallback(function (syntheticEvent) {\n if (props.selectionChange) {\n props.selectionChange({ syntheticEvent: syntheticEvent });\n }\n }, [props.selectionChange]);\n var inputId = React.useMemo(function () { return guid(); }, []);\n var selectedValue = getNestedValue(props.field, props.dataItem);\n var navigationAttributes = useTableKeyboardNavigation(props.id);\n var tdProps = __assign((_a = { colSpan: props.colSpan, style: props.style, className: props.className }, _a['aria-colindex'] = props.ariaColumnIndex, _a.role = 'gridcell', _a), navigationAttributes);\n var content = [\n (React.createElement(\"input\", { key: \"1\", checked: typeof selectedValue === 'boolean' && selectedValue, id: inputId, type: \"checkbox\", className: \"k-checkbox k-checkbox-md k-rounded-md\", onChange: handleOnChange })),\n (React.createElement(\"label\", { className: \"k-checkbox-label\", htmlFor: inputId, key: \"2\" }))\n ];\n var defaultRendering = props.rowType !== 'groupHeader' ? (React.createElement(\"td\", __assign({}, tdProps), content)) : null;\n var rowTypeSetting = props.rowType || 'data';\n var customCells = props.cells;\n if (customCells && customCells.select && customCells.select[rowTypeSetting]) {\n var CustomCell = customCells.select[rowTypeSetting];\n return (React.createElement(CustomCell, __assign({}, props, { tdProps: tdProps }), content));\n }\n return props.render ?\n props.render.call(undefined, defaultRendering, props) :\n defaultRendering;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { IconWrap, Keys } from '@progress/kendo-react-common';\nimport { moreVerticalIcon } from '@progress/kendo-svg-icons';\nimport { columnMenu, messages } from '../messages';\nimport { provideLocalizationService } from '@progress/kendo-react-intl';\n/**\n * The GridColumnMenuWrapper component.\n */\nvar GridColumnMenuWrapper = /** @class */ (function (_super) {\n __extends(GridColumnMenuWrapper, _super);\n function GridColumnMenuWrapper() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @hidden */\n _this.state = {\n show: false\n };\n /** @hidden */\n _this._anchor = null;\n /** @hidden */\n _this._content = null;\n /** @hidden */\n _this.blurTimeout = undefined;\n /** @hidden */\n _this.willBlur = false;\n /** @hidden */\n _this.blur = function () {\n if (_this.willBlur) {\n _this.willBlur = false;\n return;\n }\n clearTimeout(_this.blurTimeout);\n _this.blurTimeout = window.setTimeout(function () { _this.closeMenu(); });\n };\n /** @hidden */\n _this.focus = function () {\n clearTimeout(_this.blurTimeout);\n };\n /** @hidden */\n _this.anchorClick = function (event) {\n event.preventDefault();\n _this.setState({\n show: !_this.state.show\n }, function () { return _this.state.show && _this._content && _this._content.focus(); });\n };\n /** @hidden */\n _this.closeMenu = function () {\n _this.setState({ show: false });\n };\n /** @hidden */\n _this.onAnchorMouseDown = function (event) {\n _this.willBlur = _this.state.show && event.currentTarget === _this._anchor;\n };\n /** @hidden */\n _this.onAnchorKeyDown = function (event) {\n var _a;\n if (event.keyCode === Keys.tab) {\n var elementToFocus = event.target;\n var parentScroll = elementToFocus && ((_a = elementToFocus.closest('.k-grid')) === null || _a === void 0 ? void 0 : _a.getElementsByClassName('k-grid-content')[0]);\n var hasHorizontalScrollbar = parentScroll && (parentScroll.scrollWidth > parentScroll.clientWidth);\n if (hasHorizontalScrollbar) {\n elementToFocus.scrollIntoView({ inline: 'center' });\n }\n }\n };\n return _this;\n }\n GridColumnMenuWrapper.prototype.render = function () {\n var _this = this;\n var _a = this.props, ColumnMenu = _a.columnMenu, others = __rest(_a, [\"columnMenu\"]);\n var column = this.props.column;\n var localizationService = provideLocalizationService(this);\n var fieldMessage = column.title || column.field;\n var field = fieldMessage ? \"\".concat(fieldMessage, \" \") : '';\n return (React.createElement(React.Fragment, null,\n React.createElement(\"a\", { className: 'k-grid-header-menu k-grid-column-menu', ref: function (e) { return _this._anchor = e; }, onClick: this.anchorClick, onMouseDown: this.onAnchorMouseDown, onKeyDown: this.onAnchorKeyDown, href: \"#\", \"aria-label\": \"\".concat(field).concat(localizationService.toLanguageString(columnMenu, messages[columnMenu])) },\n React.createElement(IconWrap, { name: 'more-vertical', icon: moreVerticalIcon })),\n React.createElement(Popup, { anchor: this._anchor, show: this.state.show },\n React.createElement(\"div\", { ref: function (e) { return _this._content = e; }, className: 'k-grid-columnmenu-popup', tabIndex: 0, onBlur: this.blur, onFocus: this.focus, style: { outline: 'none' } }, ColumnMenu && (React.createElement(ColumnMenu, __assign({}, others, { onCloseMenu: this.closeMenu })))))));\n };\n return GridColumnMenuWrapper;\n}(React.Component));\nexport { GridColumnMenuWrapper };\n","import { TABLE_COL_INDEX_ATTRIBUTE, TABLE_PREVENT_SELECTION_ELEMENT, TABLE_ROW_INDEX_ATTRIBUTE } from '@progress/kendo-react-data-tools';\n/** The attribute required by the Grid selection on Grid `tr` elements. */\nexport var GRID_ROW_INDEX_ATTRIBUTE = TABLE_ROW_INDEX_ATTRIBUTE;\n/** The attribute required by the Grid selection on Grid `td` elements. */\nexport var GRID_COL_INDEX_ATTRIBUTE = TABLE_COL_INDEX_ATTRIBUTE;\n/** Attribute which disable selection start from this element. */\nexport var GRID_PREVENT_SELECTION_ELEMENT = TABLE_PREVENT_SELECTION_ELEMENT;\n","import * as React from 'react';\nimport { getIndex } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nvar CommonDragLogic = /** @class */ (function () {\n function CommonDragLogic(columnReorder, groupReorder, columnToGroup) {\n var _this = this;\n this.refDragElementClue = React.createRef();\n this.refDropElementClue = React.createRef();\n this.columns = [];\n this.reorderable = false;\n this.groupable = false;\n this.startColumn = -1;\n this.startGroup = -1;\n this.currentColumn = -1;\n this.currentGroup = -1;\n this.groupPanelDivElement = null;\n this.refGroupPanelDiv = function (e) {\n _this.groupPanelDivElement = (e && e.children) ? e.children[0] : e;\n };\n this.pressHandler = function (event, element) {\n var startColumn = _this.getColumnIndex(event, element);\n _this.startGroup = _this.getGroupIndex(event);\n if (startColumn >= 0) {\n var col = _this.columns[startColumn];\n if (col.reorderable && _this.reorderable || col.groupable && _this.groupable) {\n _this.startColumn = startColumn;\n }\n }\n };\n this.dragHandler = function (event, element) {\n if (!event.isTouch) {\n event.originalEvent.preventDefault();\n }\n event.originalEvent.stopPropagation();\n if (_this.startColumn === -1 && _this.startGroup === -1) {\n return;\n }\n _this.currentColumn = _this.getColumnIndex(event, element);\n var groupPanelChildren = _this.groupPanelDivElement && _this.groupPanelDivElement.children;\n _this.currentGroup = _this.isTargetGroupingContainer(event)\n ? groupPanelChildren && groupPanelChildren.length\n ? groupPanelChildren.length\n : 0\n : _this.getGroupIndex(event);\n var invalidIndex = !_this.isValid();\n if (invalidIndex) {\n _this.currentColumn = -1;\n _this.currentGroup = -1;\n }\n var targetElement = (_this.currentColumn >= 0) ?\n element.children[_this.columns[_this.currentColumn].index] :\n _this.isTargetGroupingContainer(event)\n ? event.originalEvent.target\n : _this.groupPanelDivElement && _this.groupPanelDivElement.children[_this.currentGroup];\n _this.updateDragElementClue(event, element, targetElement, invalidIndex);\n _this.updateDropElementClue(event, element, targetElement, invalidIndex);\n };\n this.releaseHandler = function (event) {\n var prevColumnIndex = _this.startColumn;\n var nextColumnIndex = _this.currentColumn;\n var prevGroupIndex = _this.startGroup;\n var nextGroupIndex = _this.currentGroup;\n event.originalEvent.preventDefault();\n if (_this.dropElementClue) {\n _this.dropElementClue.setState({ visible: false });\n }\n if (_this.dragElementClue) {\n _this.dragElementClue.setState({ visible: false });\n }\n var isValid = _this.isValid();\n _this.startColumn = _this.startGroup = _this.currentColumn = _this.currentGroup = -1;\n if (!isValid) {\n return;\n }\n if (prevColumnIndex >= 0 && nextColumnIndex >= 0) {\n _this.columnReorder(prevColumnIndex, nextColumnIndex, event.originalEvent);\n }\n else if (prevGroupIndex >= 0 && nextGroupIndex >= 0) {\n _this.groupReorder(prevGroupIndex, nextGroupIndex, event.originalEvent);\n }\n else if (prevColumnIndex >= 0 && nextGroupIndex >= 0) {\n _this.columnToGroup(prevColumnIndex, nextGroupIndex, event.originalEvent);\n }\n };\n this.columnReorder = columnReorder;\n this.groupReorder = groupReorder;\n this.columnToGroup = columnToGroup;\n }\n Object.defineProperty(CommonDragLogic.prototype, \"dragClueRef\", {\n get: function () {\n return this.refDragElementClue;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommonDragLogic.prototype, \"dropClueRef\", {\n get: function () {\n return this.refDropElementClue;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommonDragLogic.prototype, \"dragElementClue\", {\n get: function () {\n return this.refDragElementClue.current;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommonDragLogic.prototype, \"dropElementClue\", {\n get: function () {\n return this.refDropElementClue.current;\n },\n enumerable: false,\n configurable: true\n });\n CommonDragLogic.prototype.getColumnIndex = function (event, parent) {\n if (!parent || (parent.parentElement === this.groupPanelDivElement)) {\n return -1;\n }\n var index = getIndex(event, parent);\n if (index === -1) {\n return -1;\n }\n var _loop_1 = function (i) {\n if (parent.parentNode.children[i] === parent) {\n return { value: this_1.columns.findIndex(function (c) { return ((c.index === index) && (c.depth === i)); }) };\n }\n };\n var this_1 = this;\n for (var i = 0; i < parent.parentNode.children.length; i++) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return -1;\n };\n CommonDragLogic.prototype.isTargetGroupingContainer = function (event) {\n var target = event.originalEvent.target;\n return target.className.indexOf\n ? target.className.indexOf('k-grouping-drop-container') !== -1\n : false;\n };\n CommonDragLogic.prototype.getGroupIndex = function (event) {\n return getIndex(event, this.groupPanelDivElement);\n };\n CommonDragLogic.prototype.isValid = function () {\n if (this.startGroup >= 0) {\n // group can be moved into group only\n return this.currentGroup >= 0 && this.currentGroup !== this.startGroup;\n }\n if (this.startColumn === -1) {\n return false;\n }\n if (this.currentGroup >= 0) {\n // column to group is possible\n return this.columns[this.startColumn].groupable === true && this.groupable === true;\n }\n // reorder is possible\n return this.reorderable === true &&\n this.currentColumn >= 0 &&\n this.currentColumn !== this.startColumn &&\n this.columns[this.startColumn].reorderable === true &&\n this.columns[this.currentColumn].parentIndex === this.columns[this.startColumn].parentIndex;\n };\n CommonDragLogic.prototype.updateDragElementClue = function (event, element, targetElement, invalidIndex) {\n if (!this.dragElementClue) {\n return;\n }\n var innerText = this.startColumn >= 0 ?\n element.children[this.columns[this.startColumn].index].innerText :\n element.innerText;\n this.dragElementClue.setState({\n visible: true,\n top: (event.pageY + 10),\n left: event.pageX,\n innerText: innerText,\n status: (invalidIndex || !targetElement) ? 'k-i-cancel' : 'k-i-plus'\n });\n };\n CommonDragLogic.prototype.updateDropElementClue = function (event, element, targetElement, invalidIndex) {\n if (!this.dropElementClue) {\n return;\n }\n if (invalidIndex || !targetElement) {\n this.dropElementClue.setState({ visible: false });\n return;\n }\n var rect = targetElement.getBoundingClientRect();\n var groupElement = targetElement.closest('.k-grouping-header');\n var rectParent = (groupElement || targetElement).getBoundingClientRect();\n var left = rect.left + event.pageX - event.clientX - 6;\n if (!this.isTargetGroupingContainer(event) && (this.currentColumn > this.startColumn\n || this.currentGroup > this.startGroup && this.startGroup !== -1)) {\n left += rect.width;\n }\n var top = rectParent.top + event.pageY - event.clientY;\n this.dropElementClue.setState({\n visible: true,\n top: top,\n left: left,\n height: (this.currentColumn >= 0) ? element.clientHeight : rectParent.height\n });\n };\n return CommonDragLogic;\n}());\nexport { CommonDragLogic };\n","import { messages } from './messages';\n/**\n * @hidden\n */\nexport var filterLogicList = [\n { text: 'grid.filterAndLogic', operator: 'and' },\n { text: 'grid.filterOrLogic', operator: 'or' }\n];\n/**\n * @hidden\n */\nexport var operators = {\n 'text': [\n { text: 'grid.filterContainsOperator', operator: 'contains' },\n { text: 'grid.filterNotContainsOperator', operator: 'doesnotcontain' },\n { text: 'grid.filterEqOperator', operator: 'eq' },\n { text: 'grid.filterNotEqOperator', operator: 'neq' },\n { text: 'grid.filterStartsWithOperator', operator: 'startswith' },\n { text: 'grid.filterEndsWithOperator', operator: 'endswith' },\n { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' },\n { text: 'grid.filterIsEmptyOperator', operator: 'isempty' },\n { text: 'grid.filterIsNotEmptyOperator', operator: 'isnotempty' }\n ],\n 'numeric': [\n { text: 'grid.filterEqOperator', operator: 'eq' },\n { text: 'grid.filterNotEqOperator', operator: 'neq' },\n { text: 'grid.filterGteOperator', operator: 'gte' },\n { text: 'grid.filterGtOperator', operator: 'gt' },\n { text: 'grid.filterLteOperator', operator: 'lte' },\n { text: 'grid.filterLtOperator', operator: 'lt' },\n { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' }\n ],\n 'date': [\n { text: 'grid.filterEqOperator', operator: 'eq' },\n { text: 'grid.filterNotEqOperator', operator: 'neq' },\n { text: 'grid.filterAfterOrEqualOperator', operator: 'gte' },\n { text: 'grid.filterAfterOperator', operator: 'gt' },\n { text: 'grid.filterBeforeOperator', operator: 'lt' },\n { text: 'grid.filterBeforeOrEqualOperator', operator: 'lte' },\n { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' }\n ],\n 'boolean': [\n { text: 'grid.filterEqOperator', operator: 'eq' }\n ]\n};\n/**\n * @hidden\n */\nexport var IsUnaryFilter = function (operator) {\n return operator === 'isnull' || operator === 'isnotnull' || operator === 'isempty' || operator === 'isnotempty';\n};\n/**\n * @hidden\n */\nexport var operatorMap = function (iterable, service) { return iterable.map(function (operator) { return ({\n text: service.toLanguageString(operator.text, messages[operator.text]),\n operator: operator.operator\n}); }); };\n/**\n * @hidden\n */\nexport var defaultBooleanOperator = 'eq';\n/**\n * @hidden\n */\nexport var booleanFilterValues = [\n { text: 'grid.filterBooleanAll', operator: '' },\n { text: 'grid.filterIsTrue', operator: true },\n { text: 'grid.filterIsFalse', operator: false }\n];\n/**\n * @hidden\n */\nexport var defaultHideSecondFilter = {\n text: false,\n numeric: false,\n date: false,\n boolean: true\n};\n/**\n * @hidden\n */\nexport var cellInputChange = function (value, e, props) {\n var defaultOperator = getDefaultOperator(props.operators);\n var operator = props.operator;\n switch (props.filterType) {\n case 'numeric':\n if (!operator || IsUnaryFilter(operator)) {\n // change the operator to default\n operator = defaultOperator;\n }\n if (value === null && operator === defaultOperator) {\n // clear only the default operator\n operator = '';\n }\n break;\n case 'date':\n if (!operator || IsUnaryFilter(operator)) {\n operator = defaultOperator;\n }\n if (value === null && operator === defaultOperator) {\n operator = '';\n }\n break;\n case 'text':\n if (!operator || IsUnaryFilter(operator)) {\n operator = defaultOperator;\n }\n if (!value && operator === defaultOperator) {\n operator = '';\n }\n break;\n default: return;\n }\n props.onChange({ value: value, operator: operator, syntheticEvent: e });\n};\n/**\n * @hidden\n */\nexport var getDefaultOperator = function (filterOperators, filterType) {\n if (filterType) {\n return filterOperators[filterType][0].operator;\n }\n else {\n return filterOperators[0].operator;\n }\n};\n/**\n * @hidden\n */\nexport var getFilterType = function (filterType) {\n return filterType || 'text';\n};\n/**\n * @hidden\n */\nexport var cellBoolDropdownChange = function (event, onChange) {\n var item = event.target.value;\n onChange({\n value: item.operator,\n operator: item.operator === '' ? '' : defaultBooleanOperator,\n syntheticEvent: event.syntheticEvent\n });\n};\n/**\n * @hidden\n */\nexport var cellOperatorChange = function (event, currentValue, onChange) {\n var value = currentValue;\n var item = event.target.value;\n if (!event.target.state.opened) {\n return;\n }\n if (IsUnaryFilter(item.operator)) {\n // clear the value to avoid confusion on what is filtered\n value = null;\n }\n if (currentValue === null && !IsUnaryFilter(item.operator)) {\n value = undefined;\n }\n onChange({ value: value, operator: item.operator, syntheticEvent: event.syntheticEvent });\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { classNames } from '@progress/kendo-react-common';\nimport * as React from 'react';\nimport { GridColumnMenuWrapper } from '../columnMenu/GridColumnMenuWrapper';\n/**\n * @example\n * ```jsx\n * class App extends React.PureComponent {\n * state = {\n * details: false,\n * data: [\n * { foo: 'A1', bar: 'B1', b1: 1, b2:2 },\n * { foo: 'A2', bar: 'B2', b1: 3, b2:4 },\n * { foo: 'A3', bar: 'B2', b1: 5, b2:6 }\n * ]\n * };\n *\n * CustomHeaderCell = (props) =>\n * \n * {props.title || props.field + ' '}\n * \n * {props.children}\n * \n *\n * render() {\n * return (\n * \n * \n * \n * {this.state.barDetails && [\n * ,\n * \n * ]}\n * \n * \n * );\n * }\n * }\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar GridHeaderCell = /** @class */ (function (_super) {\n __extends(GridHeaderCell, _super);\n function GridHeaderCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridHeaderCell.prototype.render = function () {\n var columnMenuWrapperProps = this.props.columnMenuWrapperProps;\n var clickProps = this.props.onClick ? {\n onClick: this.props.onClick\n } : {};\n var defaultRendering = (React.createElement(\"span\", { className: 'k-cell-inner' },\n React.createElement(\"span\", __assign({ className: classNames('k-link', {\n '!k-cursor-default': !this.props.columnMenuWrapperProps.sortable\n }) }, clickProps),\n React.createElement(\"span\", { className: 'k-column-title' }, this.props.title || this.props.field || '\\u00A0'),\n this.props.children),\n columnMenuWrapperProps.columnMenu && React.createElement(GridColumnMenuWrapper, __assign({}, columnMenuWrapperProps))));\n if (this.props.render) {\n return this.props.render.call(undefined, defaultRendering, this.props);\n }\n return defaultRendering;\n };\n return GridHeaderCell;\n}(React.Component));\nexport { GridHeaderCell };\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * @hidden\n */\nexport var normalize = function () {\n var settings = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n settings[_i] = arguments[_i];\n }\n return Object.assign.apply(Object, __spreadArray([{ allowUnsort: true, mode: 'single' }], settings, false));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { classNames } from '@progress/kendo-react-common';\nimport * as React from 'react';\n/**\n * The GridColumnMenuItemGroup that will be used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItemGroup = /** @class */ (function (_super) {\n __extends(GridColumnMenuItemGroup, _super);\n function GridColumnMenuItemGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridColumnMenuItemGroup.prototype.render = function () {\n var children = this.props.children;\n return (React.createElement(\"div\", { id: this.props.id, className: classNames('k-columnmenu-item-wrapper', this.props.className), style: this.props.style }, children));\n };\n return GridColumnMenuItemGroup;\n}(React.Component));\nexport { GridColumnMenuItemGroup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { IconWrap, toIconName } from '@progress/kendo-react-common';\n/**\n * The GridColumnMenuItem component that is used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItem = /** @class */ (function (_super) {\n __extends(GridColumnMenuItem, _super);\n function GridColumnMenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridColumnMenuItem.prototype.render = function () {\n var _a = this.props, title = _a.title, iconClass = _a.iconClass, svgIcon = _a.svgIcon, selected = _a.selected;\n return (React.createElement(\"div\", { onClick: this.props.onClick, className: \"k-columnmenu-item \".concat(selected ? 'k-selected' : '') },\n (iconClass || svgIcon) && React.createElement(IconWrap, { name: iconClass ? toIconName(iconClass) : iconClass, icon: svgIcon }),\n title));\n };\n return GridColumnMenuItem;\n}(React.Component));\nexport { GridColumnMenuItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { provideLocalizationService, registerForIntl, registerForLocalization } from '@progress/kendo-react-intl';\nimport { GridColumnMenuItemGroup } from './GridColumnMenuItemGroup';\nimport { GridColumnMenuItem } from './GridColumnMenuItem';\nimport { groupColumn, ungroupColumn, messages } from '../messages';\nimport { groupIcon, ungroupIcon } from '@progress/kendo-svg-icons';\n/**\n * @example\n * ```jsx-no-run\n * class TextColumnMenu extends React.Component {\n * render() {\n * return (\n *
    \n * \n * \n *
    );\n * }\n * }\n *\n * class App extends React.PureComponent {\n * constructor(props) {\n * super(props);\n *\n * this.state = this.createAppState({\n * take: 10,\n * skip: 0\n * });\n * }\n *\n * createAppState(dataState) {\n * return {\n * result: process(products.slice(0), dataState),\n * dataState: dataState\n * };\n * }\n *\n * dataStateChange = (event) => {\n * this.setState(this.createAppState(event.dataState));\n * }\n *\n * render() {\n * return (\n *
    \n * \n * \n * \n * \n *
    \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar GridColumnMenuGroup = /** @class */ (function (_super) {\n __extends(GridColumnMenuGroup, _super);\n function GridColumnMenuGroup() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.onGroupClick = function (event) {\n event.preventDefault();\n if (_this.props.onGroupChange) {\n var column_1 = _this.props.column;\n if (!column_1.field) {\n return;\n }\n var newGroup = (_this.props.group || []).slice();\n var groupIndex = newGroup.findIndex(function (group) { return group.field === column_1.field; });\n if (groupIndex > -1) {\n newGroup.splice(groupIndex, 1);\n }\n else {\n newGroup.push({\n field: column_1.field\n });\n }\n _this.props.onGroupChange(newGroup, event);\n }\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n GridColumnMenuGroup.prototype.render = function () {\n var _a = this.props, group = _a.group, column = _a.column;\n var localizationService = provideLocalizationService(this);\n var isGrouped = Boolean(group && column.field && group.find(function (currentGroup) { return currentGroup.field === column.field; }));\n var message = !isGrouped ? groupColumn : ungroupColumn;\n return (React.createElement(GridColumnMenuItemGroup, null,\n React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(message, messages[message]), iconClass: !isGrouped ? 'k-i-group' : 'k-i-ungroup', svgIcon: !isGrouped ? groupIcon : ungroupIcon, onClick: this.onGroupClick })));\n };\n return GridColumnMenuGroup;\n}(React.Component));\nexport { GridColumnMenuGroup };\nregisterForIntl(GridColumnMenuGroup);\nregisterForLocalization(GridColumnMenuGroup);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { GridColumnMenuItem } from './GridColumnMenuItem';\nimport { GridColumnMenuItemGroup } from './GridColumnMenuItemGroup';\nimport { normalize } from '../interfaces/GridSortSettings';\nimport { provideLocalizationService, registerForIntl, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, sortAscending, sortDescending } from '../messages';\nimport { sortAscSmallIcon, sortDescSmallIcon } from '@progress/kendo-svg-icons';\n/**\n * @hidden\n */\nvar ASC_DIR = 'asc';\n/**\n * @hidden\n */\nvar DESC_DIR = 'desc';\n/**\n * @hidden\n */\nvar sortSeqMap = {\n true: {\n 'asc': { 'asc': '', 'desc': 'desc' },\n 'desc': { 'asc': 'asc', 'desc': '' },\n '': { 'asc': 'asc', 'desc': 'desc' }\n },\n false: {\n 'asc': { 'asc': 'asc', 'desc': 'desc' },\n 'desc': { 'asc': 'asc', 'desc': 'desc' },\n '': { 'asc': 'asc', 'desc': 'desc' }\n }\n};\n/**\n * @hidden\n */\nvar sortIndex = function (field, sort) {\n if (!sort) {\n return -1;\n }\n return sort.findIndex(function (s) { return s.field === field; });\n};\n/**\n * @hidden\n */\nvar sortedAsc = function (sortedIndex, sort) {\n return !!(sort && sortedIndex > -1 && sort[sortedIndex].dir === ASC_DIR);\n};\n/**\n * @hidden\n */\nvar sortedDesc = function (sortedIndex, sort) {\n return !!(sort && sortedIndex > -1 && sort[sortedIndex].dir === DESC_DIR);\n};\n/**\n * @example\n * ```jsx-no-run\n * class ColumnMenu extends React.Component {\n * render() {\n * return (\n *
    \n * \n *
    );\n * }\n * }\n *\n * class App extends React.PureComponent {\n * constructor(props) {\n * super(props);\n *\n * this.state = this.createAppState({\n * take: 10,\n * skip: 0\n * });\n * }\n *\n * createAppState(dataState) {\n * return {\n * result: process(products.slice(0), dataState),\n * dataState: dataState\n * };\n * }\n *\n * dataStateChange = (event) => {\n * this.setState(this.createAppState(event.dataState));\n * }\n *\n * render() {\n * return (\n *
    \n * \n * \n * \n * \n *
    \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar GridColumnMenuSort = /** @class */ (function (_super) {\n __extends(GridColumnMenuSort, _super);\n function GridColumnMenuSort() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.onAscClick = function (event) {\n _this.onSort(event, ASC_DIR);\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n /**\n * @hidden\n */\n _this.onDescClick = function (event) {\n _this.onSort(event, DESC_DIR);\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n /**\n * @hidden\n */\n _this.onSort = function (event, selectedDir) {\n event.preventDefault();\n if (!_this.props.onSortChange) {\n return;\n }\n var _a = _this.props, column = _a.column, sortable = _a.sortable, sort = _a.sort;\n var _b = normalize(sortable || false, false), allowUnsort = _b.allowUnsort, mode = _b.mode;\n var oldDescriptor = (sort || []).filter(function (d) { return d.field === column.field; })[0];\n var dir = sortSeqMap[allowUnsort][oldDescriptor && oldDescriptor.dir || ''][selectedDir];\n var newDescriptor = (mode === 'single') ?\n [] : (_this.props.sort || []).filter(function (d) { return d.field !== column.field; });\n if (dir !== '' && column.field) {\n newDescriptor.push({ field: column.field, dir: dir });\n }\n _this.props.onSortChange(newDescriptor, event);\n };\n return _this;\n }\n /**\n * @hidden\n */\n GridColumnMenuSort.prototype.render = function () {\n var _a = this.props, sort = _a.sort, column = _a.column;\n var currentSortIndex = sortIndex(column.field, sort);\n var localizationService = provideLocalizationService(this);\n return (React.createElement(GridColumnMenuItemGroup, null,\n React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(sortAscending, messages[sortAscending]), iconClass: 'k-i-sort-asc-sm', svgIcon: sortAscSmallIcon, selected: sortedAsc(currentSortIndex, sort), onClick: this.onAscClick }),\n React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(sortDescending, messages[sortDescending]), iconClass: 'k-i-sort-desc-sm', svgIcon: sortDescSmallIcon, selected: sortedDesc(currentSortIndex, sort), onClick: this.onDescClick })));\n };\n /* eslint-disable max-len */\n /**\n * Can be used to check if sorting is applied to a specific field ([see example]({% slug column_menu_grid %}#toc-styling-the-column-menu-icon)). Useful for creating active sort indicators.\n */\n // tslint:enable:max-line-length\n GridColumnMenuSort.active = function (field, sort) {\n var currentSortIndex = sortIndex(field, sort);\n return sortedDesc(currentSortIndex, sort) || sortedAsc(currentSortIndex, sort);\n };\n return GridColumnMenuSort;\n}(React.Component));\nexport { GridColumnMenuSort };\nregisterForIntl(GridColumnMenuSort);\nregisterForLocalization(GridColumnMenuSort);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Reveal } from '@progress/kendo-react-animation';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * The GridColumnMenuItemContent that will be used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItemContent = /** @class */ (function (_super) {\n __extends(GridColumnMenuItemContent, _super);\n function GridColumnMenuItemContent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridColumnMenuItemContent.prototype.render = function () {\n return (React.createElement(\"div\", { id: this.props.id, className: classNames('k-columnmenu-item-content', this.props.className), style: this.props.style },\n React.createElement(Reveal, { style: { position: 'relative', display: 'block' } }, this.props.show ? this.props.children : null)));\n };\n return GridColumnMenuItemContent;\n}(React.Component));\nexport { GridColumnMenuItemContent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { NumericTextBox, Input } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { cellBoolDropdownChange, cellInputChange, cellOperatorChange } from '../filterCommon';\n/**\n * @hidden\n */\nvar GridColumnMenuFilterCell = /** @class */ (function (_super) {\n __extends(GridColumnMenuFilterCell, _super);\n function GridColumnMenuFilterCell(props) {\n var _this = _super.call(this, props) || this;\n _this.renderOperatorEditor = function () {\n if (_this.props.filterType === 'boolean') {\n return;\n }\n var value = _this.props.operators.find(function (item) { return item.operator === _this.props.operator; }) || null;\n return (React.createElement(DropDownList, { value: value, onChange: _this.operatorChange, data: _this.props.operators, textField: \"text\" }));\n };\n _this.inputChange = _this.inputChange.bind(_this);\n _this.operatorChange = _this.operatorChange.bind(_this);\n _this.boolDropdownChange = _this.boolDropdownChange.bind(_this);\n return _this;\n }\n /**\n * @hidden\n */\n GridColumnMenuFilterCell.prototype.render = function () {\n return (React.createElement(React.Fragment, null,\n this.renderOperatorEditor(),\n this.filterComponent(this.props.filterType, this.props.value, this.props.booleanValues)));\n };\n GridColumnMenuFilterCell.prototype.inputChange = function (value, e) {\n cellInputChange(value, e, this.props);\n };\n GridColumnMenuFilterCell.prototype.operatorChange = function (event) {\n cellOperatorChange(event, this.props.value, this.props.onChange);\n };\n GridColumnMenuFilterCell.prototype.boolDropdownChange = function (event) {\n cellBoolDropdownChange(event, this.props.onChange);\n };\n GridColumnMenuFilterCell.prototype.filterComponent = function (filterType, value, booleanValues) {\n var _this = this;\n switch (filterType) {\n case 'numeric':\n return (React.createElement(NumericTextBox, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); }, rangeOnEnter: false }));\n case 'date':\n return (React.createElement(DatePicker, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); } }));\n case 'boolean':\n var noFilterSet_1 = function (filter) { return filter === null || filter === undefined; };\n return (React.createElement(DropDownList, { onChange: this.boolDropdownChange, value: booleanValues.find(function (item) { return item.operator === (noFilterSet_1(value) ? '' : value); }), data: booleanValues, textField: \"text\" }));\n default: return (React.createElement(Input, { value: value || '', onChange: function (e) { _this.inputChange(e.target.value, e.syntheticEvent); } }));\n }\n };\n return GridColumnMenuFilterCell;\n}(React.Component));\nexport { GridColumnMenuFilterCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { GridColumnMenuFilterCell } from './GridColumnMenuFilterCell';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\n/**\n * @hidden\n */\nvar GridColumnMenuFilterUI = /** @class */ (function (_super) {\n __extends(GridColumnMenuFilterUI, _super);\n function GridColumnMenuFilterUI() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridColumnMenuFilterUI.prototype.render = function () {\n var _a = this.props, firstFilterProps = _a.firstFilterProps, hideSecondFilter = _a.hideSecondFilter, secondFilterProps = _a.secondFilterProps, logicData = _a.logicData, logicValue = _a.logicValue, onLogicChange = _a.onLogicChange;\n return (React.createElement(React.Fragment, null,\n React.createElement(GridColumnMenuFilterCell, __assign({}, firstFilterProps)),\n !hideSecondFilter && (React.createElement(React.Fragment, null,\n React.createElement(DropDownList, { data: logicData, value: logicValue, onChange: onLogicChange, className: 'k-filter-and', textField: \"text\" }),\n React.createElement(GridColumnMenuFilterCell, __assign({}, secondFilterProps))))));\n };\n return GridColumnMenuFilterUI;\n}(React.Component));\nexport { GridColumnMenuFilterUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { isCompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { GridColumnMenuItem } from './GridColumnMenuItem';\nimport { GridColumnMenuItemGroup } from './GridColumnMenuItemGroup';\nimport { GridColumnMenuItemContent } from './GridColumnMenuItemContent';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { operatorMap, getDefaultOperator, filterLogicList, defaultHideSecondFilter, booleanFilterValues, getFilterType, IsUnaryFilter } from '../filterCommon';\nimport { messages, filterClearButton, filterSubmitButton, filterTitle } from '../messages';\nimport { GridColumnMenuFilterUI } from './GridColumnMenuFilterUI';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { filterIcon } from '@progress/kendo-svg-icons';\n/**\n * @hidden\n */\nexport var rootFilterOrDefault = function (rootFilter) {\n return (rootFilter || { filters: [], logic: 'and' });\n};\n/**\n * @hidden\n */\nexport var filterGroupByField = function (field, filter) {\n var rootFilter = rootFilterOrDefault(filter);\n var compositeFilters = rootFilter.filters\n .filter(function (f) {\n if (isCompositeFilterDescriptor(f)) {\n return f.filters &&\n f.filters.length &&\n f.filters.length <= 2 &&\n !f.filters.find(function (nf) { return isCompositeFilterDescriptor(nf) || nf.field !== field; });\n }\n return false;\n });\n return compositeFilters[0] || null;\n};\n/**\n * @example\n * ```jsx-no-run\n * class TextColumnMenu extends React.Component {\n * render() {\n * return (\n *
    \n * \n * \n *
    );\n * }\n * }\n *\n * class App extends React.PureComponent {\n * constructor(props) {\n * super(props);\n *\n * this.state = this.createAppState({\n * take: 10,\n * skip: 0\n * });\n * }\n *\n * createAppState(dataState) {\n * return {\n * result: process(products.slice(0), dataState),\n * dataState: dataState\n * };\n * }\n *\n * dataStateChange = (event) => {\n * this.setState(this.createAppState(event.dataState));\n * }\n *\n * render() {\n * return (\n *
    \n * \n * \n * \n * \n *
    \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar GridColumnMenuFilter = /** @class */ (function (_super) {\n __extends(GridColumnMenuFilter, _super);\n function GridColumnMenuFilter(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.removeGroup = function (group, rootFilter) {\n var filters = __spreadArray([], rootFilter.filters, true);\n var groupIndex = filters\n .findIndex(function (f) { return f === group; });\n if (groupIndex > -1) {\n filters.splice(groupIndex, 1);\n }\n return __assign(__assign({}, rootFilter), { filters: filters });\n };\n /**\n * @hidden\n */\n _this.insertGroup = function (group, rootFilter) {\n return __assign(__assign({}, rootFilter), { filters: __spreadArray([\n group\n ], rootFilter.filters, true) });\n };\n /**\n * @hidden\n */\n _this.isControlled = function () { return _this.props.expanded !== undefined; };\n /**\n * @hidden\n */\n _this.onFilterExpand = function () {\n var isControlled = _this.isControlled();\n var nextValue = !(isControlled ? _this.props.expanded : _this.state.expanded);\n if (_this.props.onExpandChange) {\n _this.props.onExpandChange(nextValue);\n }\n if (!isControlled) {\n _this.setState({\n expanded: nextValue\n });\n }\n };\n /**\n * @hidden\n */\n _this.firstFilterChange = function (event) {\n _this.filterChange(0, event);\n };\n /**\n * @hidden\n */\n _this.secondFilterChange = function (event) {\n _this.filterChange(1, event);\n };\n /**\n * @hidden\n */\n _this.filterChange = function (filterIndex, e) {\n var filters = _this.state.filterGroup.filters.map(function (f, i) {\n if (i === filterIndex) {\n return __assign(__assign({}, f), { value: e.value, operator: e.operator });\n }\n return f;\n });\n _this.setState({\n filterGroup: __assign(__assign({}, _this.state.filterGroup), { filters: filters })\n });\n };\n /**\n * @hidden\n */\n _this.logicChange = function (event) {\n _this.setState({\n filterGroup: __assign(__assign({}, _this.state.filterGroup), { logic: event.target.value.operator })\n });\n };\n /**\n * @hidden\n */\n _this.clear = function (event) {\n event.preventDefault();\n if (!_this.props.onFilterChange) {\n return;\n }\n var field = _this.props.column.field;\n var rootFilter = rootFilterOrDefault(_this.props.filter);\n var filterGroup = filterGroupByField(field, _this.props.filter);\n var rootFilters = rootFilter.filters.filter(function (f) { return f !== filterGroup; });\n if (!rootFilters.length) {\n _this.props.onFilterChange(null, event);\n }\n else {\n _this.props.onFilterChange(__assign(__assign({}, rootFilter), { filters: rootFilters }), event);\n }\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n /**\n * @hidden\n */\n _this.currentFilterGroup = function () {\n return __assign(__assign({}, _this.state.filterGroup), { filters: _this.state\n .filterGroup\n .filters\n .filter(function (nf) {\n return (nf.value !== undefined && nf.value !== null && nf.value !== '') ||\n (nf.value === null && nf.operator);\n }) });\n };\n /**\n * @hidden\n */\n _this.submit = function (event) {\n event.preventDefault();\n if (!_this.props.onFilterChange) {\n return;\n }\n var field = _this.props.column.field;\n var rootFilter = rootFilterOrDefault(_this.props.filter);\n var filterGroup = filterGroupByField(field, _this.props.filter);\n var currentFilterGroup = _this.currentFilterGroup();\n var updatedFilter = null;\n if (filterGroup && currentFilterGroup.filters.length > 0) {\n var rootFilters = rootFilter.filters.map(function (f) {\n if (f === filterGroup) {\n return currentFilterGroup;\n }\n return f;\n });\n updatedFilter = __assign(__assign({}, rootFilter), { filters: rootFilters });\n }\n else if (currentFilterGroup.filters.length === 0) {\n var rootFilters = rootFilter\n .filters\n .filter(function (f) { return f !== filterGroup; });\n if (rootFilters.length) {\n updatedFilter = __assign(__assign({}, rootFilter), { filters: rootFilters });\n }\n }\n else {\n updatedFilter = __assign(__assign({}, rootFilter), { filters: __spreadArray(__spreadArray([], rootFilter.filters, true), [currentFilterGroup], false) });\n }\n _this.props.onFilterChange(updatedFilter, event);\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n var filterGroup;\n if (props.column && props.column.field) {\n var filterType = getFilterType(props.column.filter);\n var defaultOperator = getDefaultOperator(props.filterOperators, filterType);\n filterGroup = filterGroupByField(props.column.field, props.filter);\n filterGroup = filterGroup ? __assign(__assign({}, filterGroup), { filters: filterGroup.filters.map(function (f) {\n return __assign({}, f);\n }) }) : {\n logic: 'and',\n filters: [\n { field: props.column.field, operator: defaultOperator, value: IsUnaryFilter(defaultOperator) ? null : undefined },\n { field: props.column.field, operator: defaultOperator, value: IsUnaryFilter(defaultOperator) ? null : undefined }\n ]\n };\n if (filterGroup.filters.filter(function (x) { return x.field === props.column.field; }).length === 1) {\n filterGroup.filters.splice(1, 0, { field: props.column.field, operator: defaultOperator });\n }\n }\n _this.state = {\n expanded: props.expanded || false,\n filterGroup: filterGroup\n };\n return _this;\n }\n /**\n * @hidden\n */\n GridColumnMenuFilter.prototype.render = function () {\n var _a = this.props, column = _a.column, filterUI = _a.filterUI, hideSecondFilter = _a.hideSecondFilter, filterOperators = _a.filterOperators;\n if (!column || !column.field) {\n return React.createElement(\"div\", null);\n }\n var filterType = getFilterType(column.filter);\n var currentHideSecondFilter = hideSecondFilter !== undefined ?\n hideSecondFilter : defaultHideSecondFilter[filterType];\n var localizationService = provideLocalizationService(this);\n var filters = this.state.filterGroup.filters;\n var currentOperators = operatorMap(filterOperators[filterType], localizationService);\n var booleanValues = operatorMap(booleanFilterValues, localizationService);\n var firstFilterCellProps = {\n field: column.field,\n value: filters[0].value,\n operator: filters[0].operator,\n operators: currentOperators,\n booleanValues: booleanValues,\n onChange: this.firstFilterChange,\n filterType: filterType\n };\n var secondFilterCellProps = {\n field: column.field,\n value: filters[1].value,\n operator: filters[1].operator,\n operators: currentOperators,\n booleanValues: booleanValues,\n onChange: this.secondFilterChange,\n filterType: filterType\n };\n var filterLogic = this.state.filterGroup.logic;\n var logicData = operatorMap(filterLogicList, localizationService);\n var logicProps = {\n value: logicData.find(function (item) { return item.operator === (filterLogic === null ? '' : filterLogic); }),\n onChange: this.logicChange,\n data: logicData\n };\n var FilterUI = filterUI;\n var filterUIProps = {\n firstFilterProps: firstFilterCellProps,\n secondFilterProps: secondFilterCellProps,\n logicData: logicProps.data,\n logicValue: logicProps.value,\n onLogicChange: logicProps.onChange,\n hideSecondFilter: currentHideSecondFilter\n };\n var isFilterValid = this.currentFilterGroup().filters.length !== 0 ||\n IsUnaryFilter(filters[0].operator) ||\n IsUnaryFilter(filters[1].operator);\n var expandState = this.isControlled() ? this.props.expanded : this.state.expanded;\n var alwaysExpand = this.props.alwaysExpand;\n return (React.createElement(GridColumnMenuItemGroup, null,\n !alwaysExpand && React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(filterTitle, messages[filterTitle]), iconClass: 'k-i-filter', svgIcon: filterIcon, onClick: this.onFilterExpand }),\n React.createElement(GridColumnMenuItemContent, { show: alwaysExpand || !!expandState },\n React.createElement(\"div\", { className: 'kendo-grid-filter-menu-container' },\n React.createElement(\"form\", { className: 'k-filter-menu k-group k-reset k-state-border-up', onSubmit: this.submit, onReset: this.clear, onKeyDown: function (e) { return e.stopPropagation(); } },\n React.createElement(\"div\", { className: 'k-filter-menu-container' },\n FilterUI ?\n React.createElement(FilterUI, __assign({}, filterUIProps)) :\n React.createElement(GridColumnMenuFilterUI, __assign({}, filterUIProps)),\n React.createElement(\"div\", { className: 'k-actions k-actions-stretched' },\n React.createElement(Button, { themeColor: \"primary\", disabled: !isFilterValid }, localizationService.toLanguageString(filterSubmitButton, messages[filterSubmitButton])),\n React.createElement(Button, { type: 'reset' }, localizationService.toLanguageString(filterClearButton, messages[filterClearButton])))))))));\n };\n /* eslint-disable max-len */\n /**\n * Can be used to check if filtering is applied to a specific field ([see example]({% slug column_menu_grid %}#toc-styling-the-column-menu-icon)). Useful for creating active filter indicators.\n */\n // tslint:enable:max-line-length\n GridColumnMenuFilter.active = function (field, filter) {\n return !!filterGroupByField(field, filter);\n };\n return GridColumnMenuFilter;\n}(React.Component));\nexport { GridColumnMenuFilter };\nregisterForLocalization(GridColumnMenuFilter);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { GridColumnMenuItem } from './GridColumnMenuItem';\nimport { GridColumnMenuItemGroup } from './GridColumnMenuItemGroup';\nimport { GridColumnMenuItemContent } from './GridColumnMenuItemContent';\nimport { Checkbox, Input } from '@progress/kendo-react-inputs';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, filterClearButton, filterSubmitButton, filterTitle, searchPlaceholder, filterCheckAll, filterSelectedItems } from '../messages';\nimport { filterBy } from '@progress/kendo-data-query';\nimport { clone, IconWrap } from '@progress/kendo-react-common';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { getNestedValue } from '../utils';\nimport { filterIcon, searchIcon, xIcon } from '@progress/kendo-svg-icons';\n/**\n * @hidden\n */\nvar isArrayEqual = function (firstArray, secondArray) {\n if (firstArray.length !== secondArray.length) {\n return false;\n }\n return firstArray.every(function (ex, i) { return ex === secondArray[i]; });\n};\nvar GridColumnMenuCheckboxFilter = /** @class */ (function (_super) {\n __extends(GridColumnMenuCheckboxFilter, _super);\n function GridColumnMenuCheckboxFilter(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.defaultFilter = function () {\n if (_this.props.filter) {\n return clone(_this.props.filter);\n }\n return { filters: [], logic: 'and' };\n };\n /**\n * @hidden\n */\n _this.isControlled = function () { return _this.props.expanded !== undefined; };\n /**\n * @hidden\n */\n _this.parseData = function (originalData, isUnique) {\n var field = _this.props.column.field || '';\n var data = originalData.map(function (item) { return getNestedValue(field, item); });\n if (isUnique) {\n return data.filter(function (item, index) { return data.indexOf(item) === index; });\n }\n return data;\n };\n /**\n * @hidden\n */\n _this.getFilterIndex = function () {\n var field = _this.props.column.field;\n var currentFilter = _this.defaultFilter();\n var compositeFilterIndex = currentFilter.filters.findIndex(function (filter) {\n return filter.filters && filter.filters.length > 0 && filter.filters[0].field === field;\n });\n return compositeFilterIndex;\n };\n /**\n * @hidden\n */\n _this.onFilterExpand = function () {\n var isControlled = _this.isControlled();\n var nextValue = !(isControlled ? _this.props.expanded : _this.state.expanded);\n if (_this.props.onExpandChange) {\n _this.props.onExpandChange(nextValue);\n }\n if (!isControlled) {\n _this.setState({\n expanded: nextValue\n });\n }\n };\n /**\n * @hidden\n */\n _this.handleSearchChange = function (e) {\n var filterOperator = _this.props.searchBoxFilterOperator ? _this.props.searchBoxFilterOperator : 'startswith';\n var filterExpression = {\n logic: 'and',\n filters: [\n { field: _this.props.column.field, operator: filterOperator, value: e.target.value, ignoreCase: true }\n ]\n };\n _this.setState({\n value: e.target.value,\n data: _this.parseData(filterBy(_this.props.data || [], filterExpression), _this.props.uniqueData)\n });\n };\n /**\n * @hidden\n */\n _this.handleClear = function () {\n var filterOperator = _this.props.searchBoxFilterOperator ? _this.props.searchBoxFilterOperator : 'startswith';\n var filterExpression = {\n logic: 'and',\n filters: [\n { field: _this.props.column.field, operator: filterOperator, value: '', ignoreCase: true }\n ]\n };\n _this.setState({\n value: '',\n data: _this.parseData(filterBy(_this.props.data || [], filterExpression), _this.props.uniqueData)\n });\n };\n /**\n * @hidden\n */\n _this.clear = function (e) {\n e.preventDefault();\n if (!_this.props.onFilterChange) {\n return;\n }\n var updatedFilter = _this.state.currentFilter || null;\n if (updatedFilter !== null && updatedFilter.filters.length > 0) {\n if (_this.compositeFilterIndex >= 0) {\n updatedFilter.filters.splice(_this.compositeFilterIndex, 1);\n }\n _this.props.onFilterChange(updatedFilter, e);\n }\n else {\n _this.props.onFilterChange(null, e);\n }\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n /**\n * @hidden\n */\n _this.submit = function (e) {\n e.preventDefault();\n if (!_this.props.onFilterChange) {\n return;\n }\n var updatedFilter = _this.state.currentFilter || null;\n _this.props.onFilterChange(updatedFilter, e);\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n /**\n * @hidden\n */\n _this.handleCheckBoxChange = function (e, value) {\n var field = _this.props.column.field || '';\n var newFilter = __assign({}, _this.state.currentFilter);\n var filters = __spreadArray([], _this.state.currentFilter.filters, true) || [];\n var fieldFilters = [];\n if (_this.compositeFilterIndex !== -1 && newFilter.filters[_this.compositeFilterIndex].filters && value !== 'all') {\n fieldFilters = newFilter.filters[_this.compositeFilterIndex].filters;\n }\n if (e.value && value === 'all') {\n _this.state.data.forEach(function (item) {\n fieldFilters.push({ field: field, operator: 'eq', value: item });\n });\n }\n else if (e.value) {\n fieldFilters.push({ field: field, operator: 'eq', value: value });\n }\n else if (_this.state.currentFilter) {\n var index = fieldFilters.findIndex(function (filter) { return filter.value === value; });\n fieldFilters.splice(index, 1);\n }\n newFilter.logic = 'and';\n if (_this.compositeFilterIndex !== -1) {\n filters[_this.compositeFilterIndex] = {\n logic: 'or',\n filters: fieldFilters\n };\n }\n else {\n filters.push({\n logic: 'or',\n filters: fieldFilters\n });\n }\n if (!e.value && value === 'all' || fieldFilters.length === 0) {\n filters.splice(_this.compositeFilterIndex, 1);\n }\n newFilter.filters = filters;\n _this.setState({ currentFilter: newFilter });\n };\n /**\n * @hidden\n */\n _this.isAllSelected = function () {\n var isAllChecked = false;\n if (_this.state.currentFilter) {\n var filters_1 = __spreadArray([], _this.state.currentFilter.filters, true);\n if (_this.compositeFilterIndex === -1) {\n return false;\n }\n isAllChecked = _this.state.data.every(function (item) {\n if (_this.compositeFilterIndex !== -1 && filters_1[_this.compositeFilterIndex].filters) {\n var index = filters_1[_this.compositeFilterIndex].filters.findIndex(function (filter) { return filter.value === item; });\n return index >= 0;\n }\n return false;\n });\n return isAllChecked;\n }\n return isAllChecked;\n };\n _this.compositeFilterIndex = _this.getFilterIndex();\n _this.state = {\n expanded: props.expanded || false,\n value: '',\n data: _this.parseData(_this.props.data, _this.props.uniqueData) || [],\n dataFromProps: _this.parseData(_this.props.data, false) || [],\n currentFilter: _this.defaultFilter()\n };\n return _this;\n }\n /**\n * @hidden\n */\n GridColumnMenuCheckboxFilter.prototype.componentDidUpdate = function () {\n var field = this.props.column.field || '';\n var data = this.props.data.map(function (item) { return getNestedValue(field, item); });\n if (!isArrayEqual(data, this.state.dataFromProps)) {\n this.setState({\n data: data,\n dataFromProps: data\n });\n }\n };\n /**\n * @hidden\n */\n GridColumnMenuCheckboxFilter.prototype.render = function () {\n var _this = this;\n var column = this.props.column;\n if (!column || !column.field) {\n return React.createElement(\"div\", null);\n }\n var localizationService = provideLocalizationService(this);\n var expandState = this.isControlled() ? this.props.expanded : this.state.expanded;\n var filterValues = [];\n if (this.state.currentFilter) {\n var currentFilter = __spreadArray([], this.state.currentFilter.filters, true);\n this.compositeFilterIndex = currentFilter.findIndex(function (filter) {\n if (filter.filters && filter.filters.length > 0) {\n return filter.filters[0].field === column.field;\n }\n return false;\n });\n if (this.compositeFilterIndex !== -1 && currentFilter[this.compositeFilterIndex].filters.length > 0) {\n currentFilter[this.compositeFilterIndex].filters.forEach(function (filterItem) {\n if (filterItem.field === _this.props.column.field) {\n filterValues.push(filterItem.value);\n }\n });\n }\n }\n var searchBox = this.props.searchBox ?\n React.createElement(this.props.searchBox, { value: this.state.value, onChange: this.handleSearchChange }) :\n (React.createElement(\"div\", { className: \"k-searchbox k-textbox k-input k-input-md k-input-solid\" },\n React.createElement(IconWrap, { className: \"k-input-icon\", name: 'search', icon: searchIcon }),\n React.createElement(Input, { className: \"k-input-inner\", type: \"text\", placeholder: localizationService.toLanguageString(searchPlaceholder, messages[searchPlaceholder]), value: this.state.value, onChange: function (e) { return _this.handleSearchChange(e.nativeEvent); } }),\n React.createElement(Button, { type: \"button\", rounded: null, className: \"k-input-button\", onClick: this.handleClear, icon: \"x\", svgIcon: xIcon })));\n var uniqueFilterValues = filterValues.filter(function (item, index) { return filterValues.indexOf(item) === index; });\n return (React.createElement(GridColumnMenuItemGroup, null,\n React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(filterTitle, messages[filterTitle]), iconClass: \"k-i-filter\", svgIcon: filterIcon, onClick: this.onFilterExpand }),\n React.createElement(GridColumnMenuItemContent, { show: !!expandState },\n React.createElement(\"div\", { className: \"kendo-grid-filter-menu-container\" },\n React.createElement(\"form\", { className: \"k-filter-menu k-group k-reset k-state-border-up\", onSubmit: this.submit, onReset: this.clear },\n React.createElement(\"div\", { className: \"k-filter-menu-container\" },\n searchBox,\n React.createElement(\"ul\", { className: \"k-reset k-multicheck-wrap\" },\n React.createElement(\"li\", { className: \"k-item k-check-all-wrap\" },\n React.createElement(Checkbox, { label: localizationService.toLanguageString(filterCheckAll, messages[filterCheckAll]), onChange: function (e) { return _this.handleCheckBoxChange(e, 'all'); }, checked: this.isAllSelected() })),\n this.state.data.map(function (item, index) {\n return (React.createElement(\"li\", { className: \"k-item\", key: index },\n React.createElement(Checkbox, { label: String(item), onChange: function (e) { return _this.handleCheckBoxChange(e, item); }, checked: uniqueFilterValues.includes(item) })));\n })),\n React.createElement(\"div\", { className: \"k-filter-selected-items\" }, uniqueFilterValues.length + ' ' + localizationService.toLanguageString(filterSelectedItems, messages[filterSelectedItems])),\n React.createElement(\"div\", { className: \"k-actions k-hstack k-justify-content-stretch\" },\n React.createElement(Button, { themeColor: \"primary\", type: 'submit' }, localizationService.toLanguageString(filterSubmitButton, messages[filterSubmitButton])),\n React.createElement(Button, { className: \"k-button\", type: 'reset' }, localizationService.toLanguageString(filterClearButton, messages[filterClearButton])))))))));\n };\n /**\n * @hidden\n */\n GridColumnMenuCheckboxFilter.defaultProps = {\n uniqueData: true\n };\n return GridColumnMenuCheckboxFilter;\n}(React.Component));\nexport { GridColumnMenuCheckboxFilter };\nregisterForLocalization(GridColumnMenuCheckboxFilter);\n","import * as React from 'react';\nimport { Checkbox, InputPrefix, TextBox } from '@progress/kendo-react-inputs';\nimport { IconWrap } from '@progress/kendo-react-common';\nimport { searchIcon } from '@progress/kendo-svg-icons';\nimport { Button } from '@progress/kendo-react-buttons';\n/**\n * Represents the KendoReact GridColumnMenuColumnsList component.\n */\nexport var GridColumnMenuColumnsList = function (props) {\n var _a = React.useState(''), filter = _a[0], setFilter = _a[1];\n var selectedColumnsIds = React.useMemo(function () { return new Set(props.columnsState.map(function (c) { return c.id; })); }, [props.columnsState]);\n var filtered = React.useMemo(function () {\n return props.columns.filter(function (c) { var _a; return (_a = (c.title || c.field)) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(filter.toLowerCase()); });\n }, [props.columns, filter]);\n var state = props.columns.map(function (c) { return React.useState(selectedColumnsIds.has(c.id)); });\n var onApply = React.useCallback(function () {\n var nextColumns = props.columns.filter(function (_c, i) { return state[i][0]; });\n props.onColumnsChange.call(undefined, nextColumns);\n props.onCloseMenu.call(undefined);\n }, [state, props.columns, props.onColumnsChange, props.onCloseMenu]);\n var onReset = React.useCallback(function () {\n props.columns.forEach(function (c, i) {\n state[i][1](selectedColumnsIds.has(c.id));\n });\n }, [state, selectedColumnsIds, props.columns]);\n var checkedCount = state.filter(function (st) { return st[0]; }).length;\n var allSelected = checkedCount === state.length;\n var onSelectAll = React.useCallback(function () {\n state.forEach(function (st, i) {\n if (allSelected && i === 0) {\n st[1](true);\n }\n else {\n st[1](!allSelected);\n }\n });\n }, [state, allSelected]);\n return (React.createElement(\"form\", { className: \"k-filter-menu k-group k-reset\" },\n React.createElement(\"div\", { className: \"k-filter-menu-container\" },\n React.createElement(TextBox, { className: 'k-searchbox', value: filter, onChange: function (e) { return setFilter(String(e.target.value)); }, prefix: function () { return (React.createElement(React.Fragment, null,\n React.createElement(InputPrefix, null,\n React.createElement(IconWrap, { name: \"search\", icon: searchIcon })))); } }),\n React.createElement(\"ul\", { className: \"k-reset k-multicheck-wrap\" },\n !filter && React.createElement(\"li\", { className: \"k-item k-check-all-wrap\" },\n React.createElement(Checkbox, { checked: allSelected, onChange: onSelectAll, label: '(Select all)' })),\n filtered.map(function (c, i) {\n return (React.createElement(\"li\", { key: c.id, className: \"k-item\" },\n React.createElement(Checkbox, { disabled: state[i][0] && checkedCount === 1, checked: state[i][0], onChange: function (e) { var _a; return state[i][1](Boolean((_a = e.target.element) === null || _a === void 0 ? void 0 : _a.checked)); }, label: c.title || c.field })));\n })),\n React.createElement(\"div\", { className: \"k-filter-selected-items\" },\n checkedCount,\n \" selected items\"),\n React.createElement(\"div\", { className: \"k-actions k-actions-start k-actions-horizontal\" },\n React.createElement(Button, { type: \"button\", themeColor: 'primary', onClick: onApply }, \"Apply\"),\n React.createElement(Button, { type: \"button\", onClick: onReset }, \"Reset\")))));\n};\nGridColumnMenuColumnsList.displayName = 'GridColumnMenuColumnsList';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/* eslint-disable max-len */\n/**\n * Represents the detail row class of the KendoReact Grid. Used to define custom details for each row. Can be applied for building the hierarchy. If `expandField` is set, the details for each row will be visible or hidden depending on the current data item and its `expandField` value.\n *\n * @example\n * ```jsx\n * class CustomGridDetailRow extends GridDetailRow {\n * render() {\n * const detailData = this.props.dataItem.MasterField2;\n * return (\n *
    \n * This is detail template with another grid inside it\n * \n *
    \n * );\n * }\n * }\n *\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * data: [{MasterField1:'A1', MasterField2: [{DetailField1: 1, DetailField2: 2}]},\n * {MasterField1:'B1', MasterField2: [{DetailField1: 3, DetailField2: 4}]},\n * {MasterField1:'C1', MasterField2: [{DetailField1: 5, DetailField2: 6}]}]\n * };\n * }\n * render() {\n * return (\n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(\n * ,\n * document.querySelector('my-app')\n * );\n * ```\n */\n// tslint:enable:max-line-length\nvar GridDetailRow = /** @class */ (function (_super) {\n __extends(GridDetailRow, _super);\n function GridDetailRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridDetailRow.prototype.render = function () {\n return null;\n };\n return GridDetailRow;\n}(React.Component));\nexport { GridDetailRow };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames, kendoThemeMaps } from '@progress/kendo-react-common';\n/**\n * Represents the GridToolbar component.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * state = {\n * data: [\n * {'Column1':'A1', 'Column2':'A2'},\n * {'Column1':'B1', 'Column2':'B2'},\n * {'Column1':'C1', 'Column2':'C2'}\n * ]\n * }\n *\n * customClick = () => {\n * alert(\"Custom handler in custom toolbar\");\n * }\n * render() {\n * return (\n * \n * \n * Click\n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(\n * ,\n * document.querySelector('my-app')\n * );\n * ```\n */\nvar GridToolbar = /** @class */ (function (_super) {\n __extends(GridToolbar, _super);\n function GridToolbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridToolbar.prototype.render = function () {\n var _a;\n return (React.createElement(\"div\", { className: classNames('k-toolbar k-grid-toolbar', (_a = {\n 'k-toolbar-md': !this.props.size\n },\n _a[\"k-toolbar-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size,\n _a), this.props.className), \"aria-label\": this.props.ariaLabel, \"aria-controls\": this.props.ariaControls, role: \"toolbar\" }, this.props.children));\n };\n /**\n * @hidden\n */\n GridToolbar.displayName = 'KendoReactGridToolbar';\n return GridToolbar;\n}(React.Component));\nexport { GridToolbar };\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { getter } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact Grid's StatusBar component.\n */\nexport var StatusBar = function (props) {\n var _a = props.data, data = _a === void 0 ? [] : _a;\n return (React.createElement(\"div\", { className: \"k-selection-aggregates k-grid-selection-aggregates\" }, data.map(function (item, index) { return (React.createElement(\"div\", { key: index },\n React.createElement(\"span\", { className: \"k-selection-aggregates-item-text\" },\n item.type,\n \": \"),\n React.createElement(\"span\", { className: \"k-selection-aggregates-item-value\" }, item.formattedValue))); })));\n};\nStatusBar.displayName = 'KendoReactGridStatusBar';\n;\n;\n/**\n * @hidden\n */\nexport var leafColumns = function (columns) {\n var _a;\n var result = columns.slice();\n for (var i = 0; i < result.length; i++) {\n while (result[i] && ((_a = result[i].children) === null || _a === void 0 ? void 0 : _a.length)) {\n result.splice.apply(result, __spreadArray([i, 1], result[i].children, false));\n }\n }\n return result;\n};\n;\n/**\n * Calculates the status data.\n *\n * @param args StatusDataArgs\n * @returns StatusItem[]\n */\nexport var getStatusData = function (args) {\n var dataItems = args.dataItems, target = args.target, selectedField = args.selectedField;\n var columns = leafColumns(target.columns);\n var getters = columns.map(function (c) { return c.field; }).filter(function (f) { return f && typeof f === 'string'; }).map(function (f) { return getter(f); });\n var getSelected = getter(selectedField);\n var grouped = { dates: [], numbers: [], booleans: [], others: [] };\n var add = function (value) {\n if (typeof value === 'number') {\n grouped.numbers.push(value);\n }\n else if (typeof value === 'boolean') {\n grouped.booleans.push(value);\n }\n else if (value instanceof Date) {\n grouped.dates.push(value);\n }\n else {\n grouped.others.push(value);\n }\n };\n dataItems.forEach(function (item) {\n var selected = getSelected(item);\n if (selected) {\n selected.forEach(function (colIndex) {\n add(getters[colIndex](item));\n });\n }\n });\n var datesAsNumbers = grouped.dates.map(function (d) { return d.getTime(); });\n var isTrueCount = grouped.booleans.filter(function (bool) { return bool; }).length;\n var isFalseCount = grouped.booleans.filter(function (bool) { return !bool; }).length;\n var sum = grouped.numbers.length ? grouped.numbers.reduce(function (acc, curr) { return acc += curr; }, 0) : undefined;\n var aggregates = {\n sum: sum,\n average: typeof sum === 'number' ? sum / grouped.numbers.length : undefined,\n min: grouped.numbers.length ? Math.min.apply(Math, grouped.numbers) : undefined,\n max: grouped.numbers.length ? Math.max.apply(Math, grouped.numbers) : undefined,\n count: grouped.numbers.length + grouped.booleans.length + grouped.dates.length + grouped.others.length,\n isTrue: isTrueCount > 0 ? isTrueCount : undefined,\n isFalse: isFalseCount > 0 ? isFalseCount : undefined,\n earliest: grouped.dates.length ? new Date(Math.min.apply(Math, datesAsNumbers)) : undefined,\n latest: grouped.dates.length ? new Date(Math.max.apply(Math, datesAsNumbers)) : undefined\n };\n var format = function (value, key) {\n if ((key === 'sum' || key === 'average') && typeof value === 'number') {\n return value.toFixed(2);\n }\n else if ((key === 'earliest' || key === 'latest') && value instanceof Date) {\n return value.toLocaleDateString();\n }\n else {\n return String(value);\n }\n };\n var result = [];\n Object.keys(aggregates).forEach(function (a) {\n var type = a;\n var value = aggregates[type];\n if (value !== undefined) {\n result.push({ type: type, value: value, formattedValue: format(value, type) });\n }\n });\n return result;\n};\n","var _a;\n/**\n * @hidden\n */\nexport var noRecords = 'grid.noRecords';\n/**\n * @hidden\n */\nexport var pagerInfo = 'grid.pagerInfo';\n/**\n * @hidden\n */\nexport var pagerFirstPage = 'grid.pagerFirstPage';\n/**\n * @hidden\n */\nexport var pagerPreviousPage = 'grid.pagerPreviousPage';\n/**\n * @hidden\n */\nexport var pagerNextPage = 'grid.pagerNextPage';\n/**\n * @hidden\n */\nexport var pagerLastPage = 'grid.pagerLastPage';\n/**\n * @hidden\n */\nexport var pagerItemPerPage = 'grid.pagerItemsPerPage';\n/**\n * @hidden\n */\nexport var pagerPage = 'grid.pagerPage';\n/**\n * @hidden\n */\nexport var pagerPageSizeAriaLabel = 'grid.pagerPageSizeAriaLabel';\n/**\n * @hidden\n */\nexport var pagerOf = 'grid.pagerOf';\n/**\n * @hidden\n */\nexport var pagerTotalPages = 'grid.pagerTotalPages';\n/**\n * @hidden\n */\nexport var groupPanelEmpty = 'grid.groupPanelEmpty';\n/**\n * @hidden\n */\nexport var groupColumn = 'grid.groupColumn';\n/**\n * @hidden\n */\nexport var ungroupColumn = 'grid.ungroupColumn';\n/**\n * @hidden\n */\nexport var columnMenu = 'grid.columnMenu';\n/**\n * @hidden\n */\nexport var filterClearButton = 'grid.filterClearButton';\n/**\n * @hidden\n */\nexport var filterSubmitButton = 'grid.filterSubmitButton';\n/**\n * @hidden\n */\nexport var filterTitle = 'grid.filterTitle';\n/**\n * @hidden\n */\nexport var sortAscending = 'grid.sortAscending';\n/**\n * @hidden\n */\nexport var sortDescending = 'grid.sortDescending';\n/**\n * @hidden\n */\nexport var searchPlaceholder = 'grid.searchPlaceholder';\n/**\n * @hidden\n */\nexport var filterCheckAll = 'grid.filterCheckAll';\n/**\n * @hidden\n */\nexport var filterChooseOperator = 'grid.filterChooseOperator';\n/**\n * @hidden\n */\nexport var filterSelectedItems = 'grid.filterSelectedItems';\n/**\n * @hidden\n */\nexport var sortAriaLabel = 'grid.sortAriaLabel';\n/**\n * @hidden\n */\nexport var filterAriaLabel = 'grid.filterAriaLabel';\n/**\n * @hidden\n */\nexport var groupPanelAriaLabel = 'grid.groupPanelAriaLabel';\n/**\n * @hidden\n */\nexport var groupExpand = 'grid.groupExpand';\n/**\n * @hidden\n */\nexport var groupCollapse = 'grid.groupCollapse';\n/**\n * @hidden\n */\nexport var detailExpand = 'grid.detailExpand';\n/**\n * @hidden\n */\nexport var detailCollapse = 'grid.detailCollapse';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[detailExpand] = 'Expand detail row',\n _a[detailCollapse] = 'Collapse detail row',\n _a[groupExpand] = 'Expand group',\n _a[groupCollapse] = 'Collapse Group',\n _a[noRecords] = 'No records available',\n _a[groupPanelEmpty] = 'Drag a column header and drop it here to group by that column',\n _a[filterClearButton] = 'Clear',\n _a[filterSubmitButton] = 'Filter',\n _a[filterTitle] = 'Filter',\n _a[sortAscending] = 'Sort Ascending',\n _a[sortDescending] = 'Sort Descending',\n _a[sortAriaLabel] = 'Sortable',\n _a[groupColumn] = 'Group Column',\n _a[ungroupColumn] = 'Ungroup Column',\n _a[columnMenu] = 'Column menu',\n _a[pagerItemPerPage] = 'items per page',\n _a[pagerInfo] = '{0} - {1} of {2} items',\n _a[pagerFirstPage] = 'Go to the first page',\n _a[pagerPreviousPage] = 'Go to the previous page',\n _a[pagerNextPage] = 'Go to the next page',\n _a[pagerLastPage] = 'Go to the last page',\n _a[pagerPage] = 'Page',\n _a[pagerPageSizeAriaLabel] = 'Page size',\n _a[pagerOf] = 'of',\n _a[pagerTotalPages] = '{0}',\n _a[searchPlaceholder] = 'Search',\n _a[filterCheckAll] = 'Check All',\n _a[filterChooseOperator] = 'Choose Operator',\n _a[filterSelectedItems] = 'selected items',\n _a[filterAriaLabel] = 'Filter',\n _a[groupPanelAriaLabel] = 'Group panel',\n _a['grid.filterEqOperator'] = 'Is equal to',\n _a['grid.filterNotEqOperator'] = 'Is not equal to',\n _a['grid.filterIsNullOperator'] = 'Is null',\n _a['grid.filterIsNotNullOperator'] = 'Is not null',\n _a['grid.filterIsEmptyOperator'] = 'Is empty',\n _a['grid.filterIsNotEmptyOperator'] = 'Is not empty',\n _a['grid.filterStartsWithOperator'] = 'Starts with',\n _a['grid.filterContainsOperator'] = 'Contains',\n _a['grid.filterNotContainsOperator'] = 'Does not contain',\n _a['grid.filterEndsWithOperator'] = 'Ends with',\n _a['grid.filterGteOperator'] = 'Is greater than or equal to',\n _a['grid.filterGtOperator'] = 'Is greater than',\n _a['grid.filterLteOperator'] = 'Is less than or equal to',\n _a['grid.filterLtOperator'] = 'Is less than',\n _a['grid.filterIsTrue'] = 'Is true',\n _a['grid.filterIsFalse'] = 'Is false',\n _a['grid.filterBooleanAll'] = '(All)',\n _a['grid.filterAfterOrEqualOperator'] = 'Is after or equal to',\n _a['grid.filterAfterOperator'] = 'Is after',\n _a['grid.filterBeforeOperator'] = 'Is before',\n _a['grid.filterBeforeOrEqualOperator'] = 'Is before or equal to',\n _a['grid.filterAndLogic'] = 'And',\n _a['grid.filterOrLogic'] = 'Or',\n _a);\n/**\n * @hidden\n */\nexport function pagerMessagesMap(pagerMessageKey) {\n var messageKey = pagerMessageKey.replace(/^pager\\.([a-z])/, function (_match, group) { return 'grid.pager' + group.toUpperCase(); });\n return ({ messageKey: messageKey, defaultMessage: messages[messageKey] });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { GRID_ROW_INDEX_ATTRIBUTE } from '../constants';\n/**\n * The component for each of the items in the `data` property which the Grid renders.\n */\nvar GridRow = /** @class */ (function (_super) {\n __extends(GridRow, _super);\n function GridRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridRow.prototype.render = function () {\n var _a;\n var className = classNames('k-table-row', {\n 'k-grouping-row': this.props.rowType === 'groupHeader',\n 'k-group-footer': this.props.rowType === 'groupFooter',\n 'k-master-row': this.props.rowType !== 'groupHeader' &&\n this.props.rowType !== 'groupFooter',\n 'k-table-alt-row k-alt': this.props.rowType !== 'groupHeader' &&\n this.props.rowType !== 'groupFooter' &&\n this.props.isAltRow,\n 'k-selected': this.props.isSelected,\n 'k-grid-edit-row': this.props.isInEdit\n });\n var defaultRendering = (React.createElement(\"tr\", __assign({ id: this.props.id, onClick: this.props.onClick, onDoubleClick: this.props.onDoubleClick, className: className, style: {\n height: this.props.rowHeight ? this.props.rowHeight + 'px' : '',\n visibility: this.props.isHidden ? 'hidden' : ''\n }, role: \"row\", \"aria-rowindex\": this.props.ariaRowIndex, \"absolute-row-index\": this.props.absoluteRowIndex, key: this.props.absoluteRowIndex }, (_a = {}, _a[GRID_ROW_INDEX_ATTRIBUTE] = this.props.rowType === 'data' ? this.props.dataIndex : undefined, _a)), this.props.children));\n return this.props.render ?\n this.props.render.call(undefined, defaultRendering, this.props) :\n defaultRendering;\n };\n return GridRow;\n}(React.Component));\nexport { GridRow };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n/**\n * @hidden\n */\nexport function getNestedValue(fieldName, dataItem) {\n var path = (fieldName || '').split('.');\n var data = dataItem;\n path.forEach(function (p) {\n data = data ? data[p] : undefined;\n });\n return data;\n}\n/**\n * @hidden\n */\nexport function flatData(output, input, footer, dataIndex, groupDefined, field, level) {\n if (level === void 0) { level = 0; }\n var maxLevel = level;\n for (var i = 0; i < input.length; i++) {\n if (!groupDefined || input[i].value === undefined || input[i].items === undefined) {\n output[output.length] = {\n dataIndex: dataIndex.index,\n dataItem: input[i],\n rowType: 'data',\n level: level,\n expanded: field === undefined || getNestedValue(field, input[i])\n };\n dataIndex.index++;\n continue;\n }\n maxLevel = Math.max(maxLevel, level + 1);\n var expanded = field === undefined ||\n getNestedValue(field, input[i]) === undefined ||\n getNestedValue(field, input[i]);\n // header\n output[output.length] = {\n dataIndex: -1,\n dataItem: input[i],\n level: level,\n rowType: 'groupHeader',\n expanded: expanded\n };\n // children\n if (expanded) {\n maxLevel = Math.max(flatData(output, input[i].items, footer, dataIndex, groupDefined, field, level + 1), maxLevel);\n }\n // footer\n if (footer === 'always' || (expanded && footer === 'visible')) {\n output[output.length] = {\n dataIndex: -1,\n dataItem: input[i],\n rowType: 'groupFooter',\n level: level,\n expanded: expanded\n };\n }\n }\n return maxLevel;\n}\nvar eventKeys = [\n 'sortChange',\n 'filterChange',\n 'groupChange',\n 'pageChange',\n 'expandChange',\n 'selectionChange',\n 'headerSelectionChange',\n 'rowClick',\n 'itemChange',\n 'dataStateChange',\n 'columnResize',\n 'columnReorder'\n];\nvar deprecatedHandlerMessage = function (oldKey, newKey) { return (\"The \".concat(oldKey, \" event handler property is deprecated, \") +\n \"use https://www.telerik.com/kendo-react-ui/components/grid/api/GridProps/#toc-\".concat(newKey, \" instead\")); };\n/**\n * @hidden\n */\nexport function checkPropCompatibility(props) {\n for (var index = 0; index < eventKeys.length; index++) {\n var eventKey = eventKeys[index];\n if (props[eventKey] !== undefined) {\n var newKey = 'on' + eventKey.charAt(0).toUpperCase() + eventKey.slice(1);\n console.warn(deprecatedHandlerMessage(eventKey, newKey));\n }\n }\n}\nimport { GridColumn } from '../GridColumn';\nimport { tableKeyboardNavigationTools as navigationTools } from '@progress/kendo-react-data-tools';\n/**\n * @hidden\n */\nexport function readColumns(elements, oldColumns, idInfo, depth) {\n if (depth === void 0) { depth = 0; }\n var columns = [];\n if (!elements) {\n return [];\n }\n if (elements && elements.length === undefined) {\n elements = [elements];\n }\n elements.forEach(function (columnProps, index) {\n columnProps = columnProps.props ? columnProps.props : columnProps;\n var oldColumn = oldColumns[index] || null;\n var children = readColumns(columnProps.children, oldColumn && oldColumn.children || [], idInfo, depth + 1);\n columns.push(Object.assign({ depth: depth }, GridColumn.defaultProps, (children.length) ? { cell: function () { return null; }, filterCell: function () { return null; } } : {}, oldColumn ? { width: oldColumn.width, orderIndex: oldColumn.orderIndex } : {}, columnProps, {\n id: columnProps.id ? columnProps.id : navigationTools.generateNavigatableId(\"\".concat(idInfo.prevId++), idInfo.idPrefix, 'column'),\n declarationIndex: columns.length,\n children: children,\n rowSpan: 0,\n colSpan: 0,\n isAccessible: true,\n left: oldColumn && Math.floor(oldColumn.left),\n right: oldColumn && Math.floor(oldColumn.right)\n }));\n });\n var comparator = function (a, b) {\n return a.orderIndex === b.orderIndex ?\n a.declarationIndex - b.declarationIndex :\n ((a.orderIndex || 0) - (b.orderIndex || 0));\n };\n columns.sort(comparator);\n if (depth === 0) {\n var ret_1 = [];\n var flat_1 = function (cols, pIndex) {\n return cols.forEach(function (c) {\n c.parentIndex = pIndex;\n flat_1(c.children, ret_1.push(c) - 1);\n });\n };\n flat_1(columns, -1);\n return ret_1;\n }\n return columns;\n}\n/**\n * @hidden\n */\nexport function autoGenerateColumns(data, group, expandField, idInfo) {\n var propData = [];\n if (Array.isArray(data)) {\n propData = data;\n }\n else if (data) {\n propData = data.data;\n }\n var columns = [];\n if (propData.length > 0) {\n var itemForColumnsGen = propData[0];\n if (group) {\n for (var i = 0; i < group.length; i++) {\n itemForColumnsGen = itemForColumnsGen.items && itemForColumnsGen.items[0];\n }\n }\n var fields = Object.getOwnPropertyNames(itemForColumnsGen);\n fields.forEach(function (field) {\n if (field !== expandField) {\n columns.push(Object.assign({\n id: navigationTools.generateNavigatableId(\"\".concat(idInfo.prevId++), idInfo.idPrefix, 'column'),\n declarationIndex: -1,\n parentIndex: -1,\n depth: 0,\n colSpan: 0,\n rowSpan: 0,\n index: 0,\n left: 0,\n right: 0,\n rightBorder: false,\n children: [],\n ariaColumnIndex: 0,\n isAccessible: true\n }, GridColumn.defaultProps, { field: field }));\n }\n });\n }\n return columns;\n}\nvar hasParentFooterCell = function (columns, column) {\n var parent = columns[column.parentIndex];\n while (parent) {\n if (parent.footerCell) {\n return true;\n }\n parent = columns[parent.parentIndex];\n }\n return false;\n};\n/**\n * @hidden\n */\nexport var footerColumns = function (columns) {\n return columns.filter(function (column) {\n if (hasParentFooterCell(columns, column)) {\n return false;\n }\n return Boolean(column.footerCell) || !(column.children && column.children.length > 0);\n });\n};\n/**\n * @hidden\n */\nexport var getColumnWidth = function (column) {\n return column.width !== undefined\n ? Math.floor(parseFloat(column.width.toString())) + 'px'\n : undefined;\n};\n/**\n * @hidden\n */\nexport var sanitizeColumns = function (columns) {\n columns.sort(function (a, b) {\n return a.declarationIndex - b.declarationIndex;\n });\n return columns.map(function (column) {\n var declarationIndex = column.declarationIndex, parentIndex = column.parentIndex, depth = column.depth, colSpan = column.colSpan, rowSpan = column.rowSpan, index = column.index, kFirst = column.kFirst, children = column.children, props = __rest(column, [\"declarationIndex\", \"parentIndex\", \"depth\", \"colSpan\", \"rowSpan\", \"index\", \"kFirst\", \"children\"]);\n return children.length ? __assign({ children: sanitizeColumns(children) }, props) : props;\n });\n};\n/**\n * @hidden\n */\nexport var firefox = typeof window !== 'undefined' &&\n /Firefox/.test(window.navigator.userAgent);\n/**\n * @hidden\n */\nexport var firefoxMaxHeight = 17895697;\n/**\n * @hidden\n */\nexport var resolveCells = function (gridCells, columnCells) {\n if (!gridCells && !columnCells) {\n return undefined;\n }\n if (!columnCells) {\n return gridCells;\n }\n if (!gridCells) {\n return columnCells;\n }\n return __assign(__assign(__assign({}, gridCells), columnCells), { select: __assign(__assign({}, (gridCells.select || {})), (columnCells.select || {})), hierarchy: __assign(__assign({}, (gridCells.hierarchy || {})), (columnCells.hierarchy || {})), group: __assign(__assign({}, (gridCells.group || {})), (columnCells.group || {})), edit: __assign(__assign({}, (gridCells.edit || {})), (columnCells.edit || {})) });\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, kendoThemeMaps, useDir } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the [KendoReact Badge component]({% slug overview_badge %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * 99+\n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var Badge = React.forwardRef(function (props, target) {\n validatePackage(packageMetadata);\n var children = props.children, className = props.className, style = props.style;\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); });\n var dir = useDir(elementRef, props.dir);\n var size = React.useMemo(function () {\n if (props.size === null) {\n return null;\n }\n else {\n return props.size || defaultProps.size;\n }\n }, [props.size]);\n var fillMode = React.useMemo(function () {\n if (props.fillMode === null) {\n return null;\n }\n else if (props.fill === null) {\n return null;\n }\n else {\n return props.fill || props.fillMode || defaultProps.fillMode;\n }\n }, [props.fillMode, props.fill]);\n var themeColor = React.useMemo(function () { return props.themeColor || defaultProps.themeColor; }, [props.themeColor]);\n var rounded = React.useMemo(function () {\n if (props.rounded !== undefined) {\n return props.rounded || 'medium';\n }\n else if (props.shape !== undefined) {\n switch (props.shape) {\n case 'rounded':\n return 'md';\n case 'rectangle':\n return null;\n default:\n return 'full';\n }\n }\n return 'medium';\n }, [props.rounded, props.shape]);\n var _a = props.cutoutBorder, cutoutBorder = _a === void 0 ? defaultProps.cutoutBorder : _a, _b = props.position, position = _b === void 0 ? defaultProps.position : _b, _c = props.align, align = _c === void 0 ? defaultProps.align : _c;\n var badgeClasses = React.useMemo(function () {\n var _a;\n return classNames('k-badge', (_a = {\n 'k-badge-sm': size === 'small',\n 'k-badge-md': size === 'medium',\n 'k-badge-lg': size === 'large'\n },\n _a[\"k-badge-\".concat(fillMode)] = fillMode,\n _a[\"k-badge-\".concat(fillMode, \"-\").concat(themeColor)] = Boolean(fillMode && themeColor),\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _a['k-badge-border-cutout'] = cutoutBorder,\n _a[\"k-badge-\".concat(position)] = position,\n _a['k-top-start'] = align.vertical === 'top' && align.horizontal === 'start',\n _a['k-top-end'] = align.vertical === 'top' && align.horizontal === 'end',\n _a['k-bottom-start'] = align.vertical === 'bottom' && align.horizontal === 'start',\n _a['k-bottom-end'] = align.vertical === 'bottom' && align.horizontal === 'end',\n _a), className);\n }, [\n size, fillMode, themeColor,\n rounded, cutoutBorder, align,\n position, className\n ]);\n return (React.createElement(\"span\", { className: badgeClasses, style: style, dir: dir }, children));\n});\nBadge.propTypes = {\n className: PropTypes.string,\n dir: PropTypes.string,\n style: PropTypes.object,\n align: PropTypes.shape({\n vertical: PropTypes.oneOf(['top', 'bottom']),\n horizontal: PropTypes.oneOf(['start', 'end'])\n }),\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n fillMode: PropTypes.oneOf([null, 'solid', 'outline']),\n fill: PropTypes.oneOf([null, 'solid', 'outline']),\n themeColor: PropTypes.oneOf([null,\n 'primary', 'secondary', 'tertiary',\n 'info', 'success', 'warning',\n 'error', 'dark', 'light', 'inverse', 'inherit'\n ]),\n shape: PropTypes.oneOf(['circle', 'rectangle', 'rounded', 'dot', 'pill']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n position: PropTypes.oneOf(['edge', 'outside', 'inside']),\n cutoutBorder: PropTypes.bool\n};\nvar defaultProps = {\n size: 'medium',\n fillMode: 'solid',\n themeColor: 'primary',\n position: 'edge',\n align: { vertical: 'top', horizontal: 'end' },\n cutoutBorder: false\n};\nBadge.defaultProps = defaultProps;\nBadge.displayName = 'KendoBadge';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, useDir } from '@progress/kendo-react-common';\n/**\n * Represents the [KendoReact BadgeContainer component]({% slug overview_badge %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * \n * \n * \n * \n * \n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var BadgeContainer = React.forwardRef(function (props, target) {\n var children = props.children, className = props.className, style = props.style;\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); });\n var dir = useDir(elementRef, props.dir);\n var containerClasses = React.useMemo(function () { return classNames('k-badge-container', className); }, [className]);\n var containerStyles = React.useMemo(function () { return (__assign({ display: 'inline-block' }, style)); }, [style]);\n return (React.createElement(\"span\", { className: containerClasses, style: containerStyles, dir: dir }, children));\n});\nBadgeContainer.propTypes = {\n className: PropTypes.string,\n dir: PropTypes.string,\n style: PropTypes.object\n};\nBadgeContainer.displayName = 'KendoBadgeContainer';\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nvar SEGMENT_COUNT = {\n 'pulsing': 2,\n 'infinite-spinner': 3,\n 'converging-spinner': 4\n};\nvar TYPE_CLASSES = {\n 'pulsing': 'k-loader-pulsing-2',\n 'infinite-spinner': 'k-loader-spinner-3',\n 'converging-spinner': 'k-loader-spinner-4'\n};\n/**\n * Represents the [KendoReact Loader component]({% slug overview_loader %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var Loader = React.forwardRef(function (props, target) {\n validatePackage(packageMetadata);\n var className = props.className, style = props.style;\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); });\n var size = React.useMemo(function () { return props.size || defaultProps.size; }, [props.size]);\n var themeColor = React.useMemo(function () { return props.themeColor || defaultProps.themeColor; }, [props.themeColor]);\n var type = React.useMemo(function () { return props.type || defaultProps.type; }, [props.type]);\n var LoaderClasses = React.useMemo(function () { return classNames('k-loader', {\n 'k-loader-sm': size === 'small',\n 'k-loader-md': size === 'medium',\n 'k-loader-lg': size === 'large',\n 'k-loader-primary': themeColor === 'primary',\n 'k-loader-secondary': themeColor === 'secondary',\n 'k-loader-tertiary': themeColor === 'tertiary',\n 'k-loader-info': themeColor === 'info',\n 'k-loader-success': themeColor === 'success',\n 'k-loader-warning': themeColor === 'warning',\n 'k-loader-error': themeColor === 'error',\n 'k-loader-dark': themeColor === 'dark',\n 'k-loader-light': themeColor === 'light',\n 'k-loader-inverse': themeColor === 'inverse'\n }, className, TYPE_CLASSES[type]); }, [\n size, themeColor, className, type\n ]);\n var spans = new Array(SEGMENT_COUNT[type]);\n spans.fill(0, 0, SEGMENT_COUNT[type]);\n return (React.createElement(\"div\", { className: LoaderClasses, style: style },\n React.createElement(\"div\", { className: \"k-loader-canvas\" }, spans.map(function (_, i) { return React.createElement(\"span\", { key: i, className: \"k-loader-segment\" }); }))));\n});\nLoader.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n type: PropTypes.oneOf([\n 'pulsing',\n 'infinite-spinner',\n 'converging-spinner'\n ]),\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n themeColor: PropTypes.oneOf([\n 'primary', 'secondary', 'tertiary',\n 'info', 'success', 'warning',\n 'error', 'dark', 'light', 'inverse'\n ])\n};\nvar defaultProps = {\n size: 'medium',\n themeColor: 'primary',\n type: 'pulsing'\n};\nLoader.defaultProps = defaultProps;\nLoader.displayName = 'KendoLoader';\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the [KendoReact Skeleton component]({% slug overview_skeleton %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var Skeleton = React.forwardRef(function (props, target) {\n validatePackage(packageMetadata);\n var className = props.className, style = props.style;\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); });\n var shape = React.useMemo(function () { return props.shape || defaultProps.shape; }, [props.shape]);\n var animation = React.useMemo(function () {\n if (props.animation === false) {\n return false;\n }\n else {\n return props.animation || defaultProps.animation;\n }\n }, [props.animation]);\n var skeletonClasses = React.useMemo(function () { return classNames('k-skeleton', {\n 'k-skeleton-circle': shape === 'circle',\n 'k-skeleton-rect': shape === 'rectangle',\n 'k-skeleton-text': shape === 'text',\n 'k-skeleton-pulse': (typeof animation === 'object' && animation.type === 'pulse'),\n 'k-skeleton-wave': (typeof animation === 'object' && animation.type === 'wave') || (animation === true)\n }, className); }, [shape, animation, className]);\n return (React.createElement(\"span\", { ref: elementRef, className: skeletonClasses, style: style }));\n});\nSkeleton.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n animation: PropTypes.shape({\n type: PropTypes.oneOf(['wave', 'pulse'])\n }),\n shape: PropTypes.oneOf(['circle', 'rectangle', 'text'])\n};\nvar defaultProps = {\n shape: 'text',\n animation: { type: 'pulse' }\n};\nSkeleton.defaultProps = defaultProps;\nSkeleton.displayName = 'KendoSkeleton';\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-indicators',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698929761,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Keys, classNames, guid, useDir, getTabIndex, dispatchEvent, createPropsContext, usePropsContext, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { messages, checkboxValidation, checkboxOptionalText } from './../messages';\n/**\n * Represents the PropsContext of the `Checkbox` component.\n * Used for global configuration of all `Checkbox` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var CheckboxPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact Checkbox component]({% slug overview_checkbox %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var Checkbox = React.forwardRef(function (directProps, target) {\n var _a;\n validatePackage(packageMetadata);\n var props = usePropsContext(CheckboxPropsContext, directProps);\n var _b = props, ariaDescribedBy = _b.ariaDescribedBy, ariaLabelledBy = _b.ariaLabelledBy, checked = _b.checked, className = _b.className, labelClassName = _b.labelClassName, children = _b.children, defaultChecked = _b.defaultChecked, disabled = _b.disabled, defaultValue = _b.defaultValue, id = _b.id, size = _b.size, rounded = _b.rounded, label = _b.label, labelPlacement = _b.labelPlacement, name = _b.name, labelOptional = _b.labelOptional, onChange = _b.onChange, onFocus = _b.onFocus, onBlur = _b.onBlur, tabIndex = _b.tabIndex, value = _b.value, required = _b.required, valid = _b.valid, validationMessage = _b.validationMessage, validityStyles = _b.validityStyles, \n // Removed to support direct use in Form Field component\n visited = _b.visited, touched = _b.touched, modified = _b.modified, others = __rest(_b, [\"ariaDescribedBy\", \"ariaLabelledBy\", \"checked\", \"className\", \"labelClassName\", \"children\", \"defaultChecked\", \"disabled\", \"defaultValue\", \"id\", \"size\", \"rounded\", \"label\", \"labelPlacement\", \"name\", \"labelOptional\", \"onChange\", \"onFocus\", \"onBlur\", \"tabIndex\", \"value\", \"required\", \"valid\", \"validationMessage\", \"validityStyles\", \"visited\", \"touched\", \"modified\"]);\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n var getImperativeHandle = React.useCallback(function () { return ({\n element: elementRef.current,\n focus: focusElement,\n get name() { return elementRef.current && elementRef.current.name; }\n }); }, [focusElement]);\n React.useImperativeHandle(target, getImperativeHandle);\n var _c = React.useState(defaultChecked), stateChecked = _c[0], setStateChecked = _c[1];\n var _d = React.useState(defaultValue), stateValue = _d[0], setStateValue = _d[1];\n var valueIsBoolean = (typeof value === 'boolean' || value === null);\n var isCheckedControlled = checked !== undefined;\n var isValueControlled = valueIsBoolean;\n var currentValue = isValueControlled ? value : stateValue;\n var currentChecked = isCheckedControlled ? checked : isValueControlled ? undefined : stateChecked;\n var useValueAsChecked = currentChecked === undefined && currentValue;\n var checkedProp = useValueAsChecked ? currentValue : currentChecked;\n var valueProp = (useValueAsChecked || isValueControlled) ? (value === null ? value : undefined) : value || currentValue;\n var indeterminateProp = checkedProp === null || valueProp === null;\n var calculatedId = React.useMemo(function () { return guid(); }, []);\n var localizationService = useLocalization();\n var localizeMessage = function (message) {\n return localizationService.toLanguageString(message, messages[message]);\n };\n var defaultValidationMessage = localizeMessage(checkboxValidation);\n var optionalMessage = localizeMessage(checkboxOptionalText);\n var isValid = valid !== undefined ?\n valid :\n !required ?\n true :\n currentChecked ? true : false;\n React.useEffect(function () {\n if (elementRef.current && elementRef.current.setCustomValidity) {\n elementRef.current.setCustomValidity(isValid\n ? ''\n : (validationMessage || defaultValidationMessage));\n }\n }, [isValid, validationMessage, defaultValidationMessage]);\n var setValue = React.useCallback(function (e, val) {\n if (!isValueControlled && !disabled) {\n setStateValue(val);\n if (!isCheckedControlled && !disabled) {\n setStateChecked(val);\n }\n }\n if (onChange && !disabled) {\n dispatchEvent(onChange, e, __assign(__assign({}, getImperativeHandle()), { value: val }), { value: val });\n }\n }, [isCheckedControlled, disabled, onChange, isValueControlled, getImperativeHandle]);\n var handleChange = React.useCallback(function (e) {\n var newValue = e.target.checked;\n setValue(e, newValue);\n }, [setValue, value]);\n var handleKeyDown = React.useCallback(function (e) {\n if (disabled) {\n return;\n }\n var keyCode = e.keyCode;\n var currentVal = e.currentTarget.checked;\n if (keyCode === Keys.space) {\n e.preventDefault();\n e.stopPropagation();\n setValue(e, !currentVal);\n }\n }, [disabled, setValue]);\n var handleKeyUp = React.useCallback(function (e) {\n if (disabled) {\n return;\n }\n var keyCode = e.keyCode;\n if (keyCode === Keys.space) {\n e.preventDefault();\n }\n }, [disabled]);\n var handleFocus = React.useCallback(function (e) {\n if (onFocus && !disabled) {\n dispatchEvent(onFocus, e, getImperativeHandle(), undefined);\n }\n }, [onFocus, disabled, getImperativeHandle]);\n var handleBlur = React.useCallback(function (e) {\n if (onBlur && !disabled) {\n dispatchEvent(onBlur, e, getImperativeHandle(), undefined);\n }\n }, [onBlur, disabled, getImperativeHandle]);\n var dir = useDir(elementRef, props.dir);\n var checkboxClasses = classNames('k-checkbox-wrap', className);\n var inputProps = __assign(__assign({ type: 'checkbox', className: classNames('k-checkbox', (_a = {},\n _a[\"k-checkbox-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _a['k-indeterminate'] = indeterminateProp,\n _a['k-disabled'] = disabled,\n _a['k-invalid k-invalid'] = !(isValid || validityStyles !== undefined || validityStyles === true),\n _a)), ref: elementRef, name: name, id: id || calculatedId, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, checked: Boolean(checkedProp), disabled: disabled, tabIndex: getTabIndex(tabIndex, disabled), role: 'checkbox', required: required !== undefined ? required : false, 'aria-checked': currentChecked || checkedProp ?\n true :\n indeterminateProp ?\n 'mixed' :\n false, 'aria-disabled': disabled || undefined }, others), { onChange: handleChange, onKeyDown: handleKeyDown, onKeyUp: handleKeyUp, onFocus: handleFocus, onBlur: handleBlur });\n var checkboxInput = (React.createElement(React.Fragment, null, \n // removing value prop is required due to bug in react where\n // value set to undefined override default submit value\n valueProp === undefined ? (React.createElement(\"input\", __assign({}, inputProps))) : (React.createElement(\"input\", __assign({}, inputProps, { value: valueIsBoolean ? undefined : valueProp === null ? '' : valueProp })))));\n var checkboxLabel = (React.createElement(React.Fragment, null, label !== undefined ? (React.createElement(\"label\", { className: classNames('k-checkbox-label', labelClassName), htmlFor: id || calculatedId, style: { userSelect: 'none' } },\n label,\n labelOptional && React.createElement(\"span\", { className: \"k-label-optional\" }, optionalMessage))) : null));\n return (React.createElement(React.Fragment, null, (labelPlacement === 'before') ? (React.createElement(\"span\", { className: checkboxClasses, dir: 'rtl' },\n checkboxInput,\n checkboxLabel,\n children)) : (React.createElement(\"span\", { className: checkboxClasses, dir: dir },\n checkboxInput,\n checkboxLabel,\n children))));\n});\nCheckbox.propTypes = {\n checked: PropTypes.bool,\n className: PropTypes.string,\n defaultChecked: PropTypes.bool,\n defaultValue: PropTypes.any,\n dir: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n label: PropTypes.any,\n labelPlacement: PropTypes.string,\n labelOptional: PropTypes.bool,\n name: PropTypes.string,\n tabIndex: PropTypes.number,\n value: PropTypes.any,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n};\nvar defaultProps = {\n size: 'medium',\n rounded: 'medium'\n};\nCheckbox.defaultProps = defaultProps;\nCheckbox.displayName = 'KendoCheckbox';\n","var cache = {};\n/**\n * @hidden\n */\nexport function cacheHsva(componentGuid, value, hsva) {\n cache[componentGuid] = { value: value, hsva: hsva };\n}\n/**\n * @hidden\n */\nexport function cacheRgba(componentGuid, value, rgba) {\n cache[componentGuid] = { value: value, rgba: rgba };\n}\n/**\n * @hidden\n */\nexport function cacheHex(componentGuid, value, hex) {\n cache[componentGuid] = { value: value, hex: hex };\n}\n/**\n * @hidden\n */\nexport function removeCachedColor(componentGuid) {\n delete cache[componentGuid];\n}\n/**\n * @hidden\n */\nexport function getCachedHex(componentGuid, value) {\n if (componentGuid) {\n var cachedColor = cache[componentGuid];\n return cachedColor && cachedColor.value === value ? cachedColor.hex : undefined;\n }\n else {\n return undefined;\n }\n}\n/**\n * @hidden\n */\nexport function getCachedHsva(componentGuid, value) {\n if (componentGuid) {\n var cachedColor = cache[componentGuid];\n return cachedColor && cachedColor.value === value ? cachedColor.hsva : undefined;\n }\n else {\n return undefined;\n }\n}\n/**\n * @hidden\n */\nexport function getCachedRgba(componentGuid, value) {\n if (componentGuid) {\n var cachedColor = cache[componentGuid];\n return cachedColor && cachedColor.value === value ? cachedColor.rgba : undefined;\n }\n else {\n return undefined;\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, colorGradientContrastRatio, colorGradientAALevel, colorGradientAAALevel, colorGradientPass, colorGradientFail } from '../messages';\nimport { getContrastFromTwoRGBAs } from './utils/color-parser';\nimport { IconWrap } from '@progress/kendo-react-common';\nimport { checkIcon, xIcon } from '@progress/kendo-svg-icons';\n/**\n * @hidden\n */\nvar ColorContrastLabels = /** @class */ (function (_super) {\n __extends(ColorContrastLabels, _super);\n function ColorContrastLabels() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColorContrastLabels.prototype.render = function () {\n var localizationService = provideLocalizationService(this);\n var contrastRatioMessage = localizationService.toLanguageString(colorGradientContrastRatio, messages[colorGradientContrastRatio]);\n var AALevelMessage = localizationService.toLanguageString(colorGradientAALevel, messages[colorGradientAALevel]);\n var AAALevelMessage = localizationService.toLanguageString(colorGradientAAALevel, messages[colorGradientAAALevel]);\n var passMessage = localizationService.toLanguageString(colorGradientPass, messages[colorGradientPass]);\n var failMessage = localizationService.toLanguageString(colorGradientFail, messages[colorGradientFail]);\n var contrast = getContrastFromTwoRGBAs(this.props.rgba, this.props.bgColor);\n var requiredAAContrast = (4.5).toFixed(1);\n var requiredAAAContrast = (7.0).toFixed(1);\n var contrastText = \"\".concat(contrastRatioMessage, \": \").concat(contrast.toFixed(2));\n var aaText = \"\".concat(AALevelMessage, \": \").concat(requiredAAContrast);\n var aaaText = \"\".concat(AAALevelMessage, \": \").concat(requiredAAAContrast);\n var success = (React.createElement(\"span\", { className: \"k-contrast-validation k-text-success\" },\n passMessage,\n \" \",\n React.createElement(IconWrap, { name: \"check\", icon: checkIcon })));\n var error = (React.createElement(\"span\", { className: \"k-contrast-validation k-text-error\" },\n failMessage,\n \" \",\n React.createElement(IconWrap, { name: \"x\", icon: xIcon })));\n return (React.createElement(\"div\", { className: \"k-vbox k-colorgradient-color-contrast\" },\n React.createElement(\"div\", { className: \"k-contrast-ratio\" },\n React.createElement(\"span\", { className: \"k-contrast-ratio-text\" }, contrastText),\n contrast >= 4.5 ? (React.createElement(\"span\", { className: \"k-contrast-validation k-text-success\" },\n React.createElement(IconWrap, { name: \"check\", icon: checkIcon }),\n contrast >= 7 && React.createElement(IconWrap, { name: \"check\", icon: checkIcon }))) : (React.createElement(\"span\", { className: \"k-contrast-validation k-text-error\" },\n React.createElement(IconWrap, { name: \"x\", icon: xIcon })))),\n React.createElement(\"div\", null,\n React.createElement(\"span\", null, aaText),\n contrast >= 4.5 ? success : error),\n React.createElement(\"div\", null,\n React.createElement(\"span\", null, aaaText),\n contrast >= 7 ? success : error)));\n };\n return ColorContrastLabels;\n}(React.Component));\nexport { ColorContrastLabels };\nregisterForLocalization(ColorContrastLabels);\n","/**\n * @hidden\n *\n * Render the svg element.\n *\n * @param points (array) Represents the points coordinates as an array of tuples.\n * @param command (function) The command that is used (bezierCommand, lineCommand).\n * @param point (array) [x,y] Represents the current point coordinates.\n * @param i (integer) Represents the index of 'point' in the array 'a'.\n * @param a (array) Represents the complete array of points coordinates.\n * @output (string) a svg path command.\n * @output (string) a Svg element\n */\nexport var svgPath = function (points, command) {\n if (points.length === 0) {\n return '';\n }\n // build the d attributes by looping over the points\n var d = points.reduce(function (acc, point, i, a) {\n return i === 0 ?\n // if first point\n \"M \".concat(point[0], \",\").concat(point[1]) :\n // else\n \"\".concat(acc, \" \").concat(command(point, i, a));\n }, '');\n return \"\");\n};\n/**\n * @hidden\n *\n * Returns the properties of a line.\n *\n * @param pointA (array) [x,y] Represents the start point coordinates.\n * @param pointB (array) [x,y] Represents the end point coordinates.\n * @output (object) { length: (integer), angle: (integer) }\n */\nexport var line = function (pointA, pointB) {\n var lengthX = pointB[0] - pointA[0];\n var lengthY = pointB[1] - pointA[1];\n return {\n length: Math.sqrt(Math.pow(lengthX, 2) + Math.pow(lengthY, 2)),\n angle: Math.atan2(lengthY, lengthX)\n };\n};\n/**\n * @hidden\n *\n * Create a function to calculate the position of the control point.\n *\n * @param lineCalc (function) Represents the line function.\n * @param pointA (array) [x,y] Represents the start point coordinates.\n * @param pointB (array) [x,y] Represents the end point coordinates.\n * @output (object) { length: (integer), angle: (integer) }\n * @output (function) closure.\n * @param current (array) [x, y] Represents the current point coordinates.\n * @param previous (array) [x, y] Represents the previous point coordinates.\n * @param next (array) [x, y] ]Represents the next point coordinates.\n * @param reverse (boolean, optional) Sets the direction.\n * @output (array) [x, y] coordinates of a control point.\n */\nexport var controlPoint = function (lineCalc) {\n return function (current, previous, next, reverse) {\n // when 'current' is the first or last point of the array\n // 'previous' and 'next' are undefined \n // replace with 'current'\n var p = previous || current;\n var n = next || current;\n var smooth = 0.1;\n // properties of the line between previous and next \n var l = lineCalc(p, n);\n // If is end-control-point, add PI to the angle to go backward\n var angle = l.angle + (reverse ? Math.PI : 0);\n var length = l.length * smooth;\n // The control point position is relative to the current point\n var x = current[0] + Math.cos(angle) * length;\n var y = current[1] + Math.sin(angle) * length;\n return [x, y];\n };\n};\n/**\n * @hidden\n *\n * Create a function to calculate a bezier curve command.\n *\n * @param controlPointCalc (function) Represents the controlPoint function.\n * @param current (array) [x, y] Represents the current point coordinates.\n * @param previous (array) [x, y] Represents the previous point coordinates.\n * @param next (array) [x, y] ]Represents the next point coordinates.\n * @param reverse (boolean, optional) Sets the direction.\n * @output (array) [x, y] coordinates of a control point.\n * @output (function) closure.\n * @param point (array) [x,y] Represents the current point coordinates.\n * @param i (integer) Represents the index of 'point' in the array 'a'.\n * @param a (array) Represents the complete array of points coordinates.\n * @output (string) 'C x2,y2 x1,y1 x,y' Cubic bezier command.\n */\nexport var bezierCommand = function (controlPointCalc) { return function (point, i, a) {\n // start control point\n var _a = controlPointCalc(a[i - 1], a[i - 2], point), cpsX = _a[0], cpsY = _a[1];\n // end control point\n var _b = controlPointCalc(point, a[i - 1], a[i + 1], true), cpeX = _b[0], cpeY = _b[1];\n return \"C \".concat(cpsX, \",\").concat(cpsY, \" \").concat(cpeX, \",\").concat(cpeY, \" \").concat(point[0], \",\").concat(point[1]);\n}; };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { bezierCommand, controlPoint, line, svgPath } from './utils/svg-calc';\nimport { getColorFromHSV, getRGBA, getContrastFromTwoRGBAs } from './utils/color-parser';\nvar AA_CONTRAST = 4.5;\nvar AAA_CONTRAST = 7;\nvar STEP_COUNT = 16;\n;\n/**\n * @hidden\n */\nvar ColorContrastSvg = /** @class */ (function (_super) {\n __extends(ColorContrastSvg, _super);\n function ColorContrastSvg() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColorContrastSvg.prototype.renderSvgCurveLine = function () {\n var _this = this;\n var gradientRectMetrics = this.props.metrics;\n var findValue = function (contrast, saturation, low, high, comparer) {\n var mid = (low + high) / 2;\n var hsva = Object.assign({}, _this.props.hsva, { s: saturation / gradientRectMetrics.width, v: 1 - mid / gradientRectMetrics.height });\n var currentContrast = getContrastFromTwoRGBAs(getRGBA(getColorFromHSV(hsva)), getRGBA(_this.props.backgroundColor || ''));\n if (low + 0.5 > high) {\n if (currentContrast < contrast + 1 && currentContrast > contrast - 1) {\n return mid;\n }\n else {\n return null;\n }\n }\n if (comparer(currentContrast, contrast)) {\n return findValue(contrast, saturation, low, high - (high - low) / 2, comparer);\n }\n return findValue(contrast, saturation, low + (high - low) / 2, high, comparer);\n };\n var getPaths = function (contrast, stepCount, reversed) {\n if (reversed === void 0) { reversed = false; }\n var points = [];\n for (var i = 0; i <= gradientRectMetrics.width; i += gradientRectMetrics.width / stepCount) {\n var value = findValue(contrast, i, 0, gradientRectMetrics.height, reversed ? (function (a, b) { return a < b; }) : (function (a, b) { return a > b; }));\n if (value !== null) {\n points.push([i, value]);\n }\n }\n return points;\n };\n var bezierCommandCalc = bezierCommand(controlPoint(line));\n return svgPath(getPaths(AA_CONTRAST, STEP_COUNT), bezierCommandCalc) +\n svgPath(getPaths(AA_CONTRAST, STEP_COUNT, true), bezierCommandCalc) +\n svgPath(getPaths(AAA_CONTRAST, STEP_COUNT), bezierCommandCalc) +\n svgPath(getPaths(AAA_CONTRAST, STEP_COUNT, true), bezierCommandCalc);\n };\n ColorContrastSvg.prototype.shouldComponentUpdate = function (nextProps) {\n if (nextProps.hsva.h === this.props.hsva.h &&\n nextProps.hsva.a === this.props.hsva.a &&\n this.props.backgroundColor === nextProps.backgroundColor) {\n return false;\n }\n return true;\n };\n ColorContrastSvg.prototype.render = function () {\n return (React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", className: 'k-color-contrast-svg', dangerouslySetInnerHTML: { __html: this.renderSvgCurveLine() }, style: {\n position: 'absolute',\n overflow: 'visible',\n pointerEvents: 'none',\n left: 0,\n top: 0,\n zIndex: 3\n } }));\n };\n return ColorContrastSvg;\n}(React.Component));\nexport { ColorContrastSvg };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Draggable, guid, classNames, focusFirstFocusableChild, getTabIndex, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { Slider } from './../main';\nimport { fitIntoBounds, isPresent } from './utils/misc';\nimport { getColorFromHue, parseColor, getHSV, getColorFromHSV, getRGBA, getColorFromRGBA } from './utils/color-parser';\nimport { cacheHsva, removeCachedColor, getCachedHsva, getCachedRgba, getCachedHex, cacheRgba, cacheHex } from './utils/color-cache';\nimport ColorInput from './ColorInput';\nimport { ColorContrastLabels } from './ColorContrastLabels';\nimport { ColorContrastSvg } from './ColorContrastSvg';\nimport { provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, colorGradientHueSliderLabel, colorGradientAlphaSliderLabel } from './../messages';\nvar FORMAT = 'rgba';\nvar DEFAULT_SELECTED_COLOR = 'rgba(255, 255, 255, 1)';\n/** @hidden */\nvar ColorGradientWithoutContext = /** @class */ (function (_super) {\n __extends(ColorGradientWithoutContext, _super);\n function ColorGradientWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.wrapper = null;\n /**\n * @hidden\n */\n _this.onHexChange = function (hex, value, event) {\n if (_this.isUncontrolled) {\n var hsva = getHSV(value);\n _this.setState({ hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: getRGBA(value), hex: hex });\n }\n else {\n cacheHex(_this.state.guid, value, hex);\n }\n _this.dispatchChangeEvent(value, event, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onRgbaChange = function (rgba, event) {\n var value = getColorFromRGBA(rgba);\n if (_this.isUncontrolled) {\n var hsva = getHSV(value);\n var hex = parseColor(value, 'hex');\n _this.setState({ hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: rgba, hex: hex });\n }\n else {\n cacheRgba(_this.state.guid, value, rgba);\n }\n _this.dispatchChangeEvent(value, event.syntheticEvent, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onAlphaSliderChange = function (event) {\n _this.handleHsvaChange(Object.assign({}, _this.state.hsva, { a: event.value / 100 }), event.syntheticEvent, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onHueSliderChange = function (event) {\n _this.handleHsvaChange(Object.assign({}, _this.state.hsva, { h: event.value }), event.syntheticEvent, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onDrag = function (e) {\n _this.gradientWrapper.classList.add('k-dragging');\n _this.changePosition(e.event);\n };\n /**\n * @hidden\n */\n _this.onRelease = function () {\n _this.gradientWrapper.classList.remove('k-dragging');\n };\n /**\n * @hidden\n */\n _this.onGradientWrapperClick = function (event) {\n _this.changePosition(event);\n };\n /**\n * @hidden\n */\n _this.changePosition = function (event) {\n var gradientRectMetrics = _this.getGradientRectMetrics();\n var deltaX = event.clientX - gradientRectMetrics.left;\n var deltaY = event.clientY - gradientRectMetrics.top;\n var left = fitIntoBounds(deltaX, 0, gradientRectMetrics.width);\n var top = fitIntoBounds(deltaY, 0, gradientRectMetrics.height);\n var hsva = Object.assign({}, _this.state.hsva, { s: left / gradientRectMetrics.width, v: 1 - top / gradientRectMetrics.height });\n _this.handleHsvaChange(hsva, event, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onFocus = function (nativeEvent) {\n if (_this.props.onFocus) {\n _this.props.onFocus.call(undefined, { nativeEvent: nativeEvent, target: _this });\n }\n };\n /**\n * @hidden\n */\n _this.focus = function () {\n focusFirstFocusableChild(_this.wrapper);\n };\n validatePackage(packageMetadata);\n var value = props.value || props.defaultValue || parseColor(DEFAULT_SELECTED_COLOR, FORMAT);\n _this.state = Object.assign({}, ColorGradientWithoutContext.getStateFromValue(value), { isFirstRender: true, guid: guid() });\n return _this;\n }\n /**\n * @hidden\n */\n ColorGradientWithoutContext.getDerivedStateFromProps = function (props, state) {\n if (props.value && !state.isFirstRender) {\n // The component is in controlled mode.\n return ColorGradientWithoutContext.getStateFromValue(props.value, state.guid);\n }\n return null;\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.componentDidMount = function () {\n this.setAlphaSliderBackground(this.state.backgroundColor);\n if (this.state.isFirstRender) {\n this.setState({ isFirstRender: false });\n }\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.componentWillUnmount = function () {\n removeCachedColor(this.state.guid);\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.componentDidUpdate = function (_, prevState) {\n if (prevState.backgroundColor !== this.state.backgroundColor) {\n this.setAlphaSliderBackground(this.state.backgroundColor);\n }\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.renderRectangleDragHandle = function () {\n var style = {};\n if (!this.state.isFirstRender) {\n var gradientRectMetrics = this.getGradientRectMetrics();\n var top_1 = (1 - this.state.hsva.v) * gradientRectMetrics.height;\n var left = this.state.hsva.s * gradientRectMetrics.width;\n style.top = \"\".concat(top_1, \"px\");\n style.left = \"\".concat(left, \"px\");\n }\n return (React.createElement(\"div\", { role: 'slider', tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled), \"aria-valuetext\": this.props.ariaValueText, \"aria-valuenow\": parseInt(this.state.hex.substring(1), 16), \"aria-label\": this.props.ariaLabelHSV, \"aria-orientation\": undefined, \"aria-disabled\": this.props.disabled ? 'true' : undefined, className: \"k-hsv-draghandle k-draghandle\", style: style }));\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.handleHsvaChange = function (hsva, syntheticEvent, nativeEvent) {\n var value = getColorFromHSV(hsva);\n if (this.isUncontrolled) {\n var hex = parseColor(value, 'hex');\n this.setState({ hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: getRGBA(value), hex: hex });\n }\n else {\n cacheHsva(this.state.guid, value, hsva);\n }\n this.dispatchChangeEvent(value, syntheticEvent, nativeEvent);\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.dispatchChangeEvent = function (value, syntheticEvent, nativeEvent) {\n if (this.props.onChange) {\n this.props.onChange.call(undefined, { syntheticEvent: syntheticEvent, nativeEvent: nativeEvent, target: this, value: value });\n }\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.getStateFromValue = function (value, componentGuid) {\n if (!isPresent(parseColor(value, 'hex'))) {\n // Validate/sanitize the input.\n value = DEFAULT_SELECTED_COLOR;\n }\n var hsva = getCachedHsva(componentGuid, value) || getHSV(value);\n var rgba = getCachedRgba(componentGuid, value) || getRGBA(value);\n var hex = getCachedHex(componentGuid, value) || parseColor(value, 'hex');\n var backgroundColor = getColorFromHue(hsva.h);\n return { hsva: hsva, backgroundColor: backgroundColor, rgba: rgba, hex: hex };\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.setAlphaSliderBackground = function (backgroundColor) {\n if (this.props.opacity && this.alphaSlider && this.alphaSlider.sliderTrack) {\n this.alphaSlider.sliderTrack.style.background = \"linear-gradient(to top, transparent, \".concat(backgroundColor, \")\");\n }\n };\n Object.defineProperty(ColorGradientWithoutContext.prototype, \"isUncontrolled\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.value === undefined;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.getGradientRectMetrics = function () {\n return this.gradientWrapper.getBoundingClientRect();\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.prototype.render = function () {\n var _this = this;\n var lS = provideLocalizationService(this);\n var className = classNames('k-colorgradient', { 'k-disabled': this.props.disabled }, this.props.className);\n return (React.createElement(\"div\", { id: this.props.id, role: this.props.role, className: className, \"aria-disabled\": this.props.disabled ? 'true' : undefined, style: this.props.style, ref: function (el) { return _this.wrapper = el; }, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled), \"aria-label\": this.props.ariaLabel, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, onFocus: this.onFocus },\n React.createElement(\"div\", { className: \"k-colorgradient-canvas k-hstack\" },\n React.createElement(\"div\", { className: \"k-hsv-rectangle\", style: { background: this.state.backgroundColor } },\n React.createElement(Draggable, { onDrag: this.onDrag, onRelease: this.onRelease, ref: function (el) { return _this.gradientWrapper = el ? el.element : undefined; } },\n React.createElement(\"div\", { className: \"k-hsv-gradient\", style: { touchAction: 'none' }, onClick: this.onGradientWrapperClick }, this.renderRectangleDragHandle())),\n this.props.backgroundColor && !this.state.isFirstRender &&\n React.createElement(ColorContrastSvg, { metrics: this.gradientWrapper ? this.getGradientRectMetrics() : undefined, hsva: this.state.hsva, backgroundColor: this.props.backgroundColor })),\n React.createElement(\"div\", { className: \"k-hsv-controls k-hstack\" },\n React.createElement(Slider, { value: this.state.hsva.h, buttons: false, vertical: true, min: 0, max: 360, step: 5, onChange: this.onHueSliderChange, className: \"k-hue-slider k-colorgradient-slider\", disabled: this.props.disabled, ariaLabel: lS.toLanguageString(colorGradientHueSliderLabel, messages[colorGradientHueSliderLabel]) }),\n this.props.opacity &&\n React.createElement(Slider, { value: isPresent(this.state.hsva.a) ? this.state.hsva.a * 100 : 100, buttons: false, vertical: true, min: 0, max: 100, step: 1, ariaLabel: lS.toLanguageString(colorGradientAlphaSliderLabel, messages[colorGradientAlphaSliderLabel]), onChange: this.onAlphaSliderChange, className: \"k-alpha-slider k-colorgradient-slider\", disabled: this.props.disabled, ref: function (el) { return _this.alphaSlider = el; } }))),\n React.createElement(ColorInput, { rgba: this.state.rgba, onRgbaChange: this.onRgbaChange, hex: this.state.hex, onHexChange: this.onHexChange, opacity: this.props.opacity, disabled: this.props.disabled, defaultInputMode: this.props.format }),\n this.props.backgroundColor && (React.createElement(ColorContrastLabels, { bgColor: getRGBA(this.props.backgroundColor), rgba: this.state.rgba }))));\n };\n ColorGradientWithoutContext.displayName = 'ColorGradient';\n /**\n * @hidden\n */\n ColorGradientWithoutContext.propTypes = {\n defaultValue: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n opacity: PropTypes.bool,\n backgroundColor: PropTypes.string,\n format: PropTypes.any,\n disabled: PropTypes.bool,\n style: PropTypes.any,\n id: PropTypes.string,\n role: PropTypes.string,\n ariaLabel: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n className: PropTypes.string\n };\n /**\n * @hidden\n */\n ColorGradientWithoutContext.defaultProps = {\n opacity: true,\n role: 'textbox',\n format: 'rgb'\n };\n return ColorGradientWithoutContext;\n}(React.Component));\nexport { ColorGradientWithoutContext };\n/**\n * Represents the PropsContext of the `ColorGradient` component.\n * Used for global configuration of all `ColorGradient` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var ColorGradientPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact ColorGradient component]({% slug overview_colorgradient %}).\n *\n * Accepts properties of type [ColorGradientProps]({% slug api_inputs_colorgradientprops %}).\n * Obtaining the `ref` returns an object of type [ColorGradientHandle]({% slug api_inputs_colorgradienthandle %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var ColorGradient = withPropsContext(ColorGradientPropsContext, ColorGradientWithoutContext);\nColorGradient.displayName = 'KendoReactColorGradient';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { parseColor } from './utils/color-parser';\nimport { isPresent } from './utils/misc';\nimport { Input } from '../input/Input';\n/**\n * @hidden\n */\nvar HexInput = /** @class */ (function (_super) {\n __extends(HexInput, _super);\n function HexInput(props) {\n var _this = _super.call(this, props) || this;\n _this.onChange = function (event) {\n var hex = event.target.value;\n var value = parseColor(hex, 'rgba');\n _this.setState({ hex: hex });\n if (isPresent(value)) {\n _this.props.onHexChange(hex, value, event);\n }\n };\n _this.onBlur = function () {\n if (!isPresent(parseColor(_this.state.hex, 'rgba'))) {\n _this.setState({ hex: _this.state.originalHex });\n }\n };\n _this.state = { hex: _this.props.hex, originalHex: _this.props.hex };\n return _this;\n }\n HexInput.prototype.render = function () {\n return (React.createElement(Input, { value: this.state.hex, onChange: this.onChange, onBlur: this.onBlur, disabled: this.props.disabled }));\n };\n HexInput.getDerivedStateFromProps = function (props, state) {\n if (props.hex !== state.originalHex) {\n return { hex: props.hex, originalHex: props.hex };\n }\n return null;\n };\n return HexInput;\n}(React.Component));\nexport default HexInput;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { NumericTextBox } from '../main';\nimport HexInput from './HexInput';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { Label } from '@progress/kendo-react-labels';\nimport { caretAltExpandIcon } from '@progress/kendo-svg-icons';\nimport { registerForIntl, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, colorGradientR, colorGradientHex, colorGradientA, colorGradientB, colorGradientG, colorGradientToggleInputsButton } from '../messages';\n/**\n * @hidden\n */\nvar modes = ['rgba', 'rgb', 'hex'];\n/**\n * @hidden\n */\nvar ColorInput = /** @class */ (function (_super) {\n __extends(ColorInput, _super);\n function ColorInput(props) {\n var _this = _super.call(this, props) || this;\n _this.onRgbaRChange = function (event) {\n _this.dispatchRgbaChange({ r: event.value }, event);\n };\n _this.onRgbaGChange = function (event) {\n _this.dispatchRgbaChange({ g: event.value }, event);\n };\n _this.onRgbaBChange = function (event) {\n _this.dispatchRgbaChange({ b: event.value }, event);\n };\n _this.onRgbaAChange = function (event) {\n _this.dispatchRgbaChange({ a: event.value }, event);\n };\n _this.state = { inputMode: props.defaultInputMode || modes[1] };\n return _this;\n }\n ColorInput.prototype.render = function () {\n var localizationService = provideLocalizationService(this);\n var hexMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientHex]);\n var rMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientR]);\n var gMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientG]);\n var bMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientB]);\n var aMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientA]);\n var toggleButtonMessage = localizationService.toLanguageString(colorGradientToggleInputsButton, messages[colorGradientToggleInputsButton]);\n return (React.createElement(\"div\", { className: \"k-colorgradient-inputs k-hstack\" },\n React.createElement(\"div\", { className: \"k-vstack\" },\n React.createElement(Button, { \"aria-label\": toggleButtonMessage, fillMode: 'flat', icon: 'caret-alt-expand', svgIcon: caretAltExpandIcon, className: \"k-colorgradient-toggle-mode k-icon-button\", onClick: this.onToggleModeChange.bind(this) })),\n this.state.inputMode === 'hex' &&\n React.createElement(\"div\", { className: \"k-vstack k-flex-1\" },\n React.createElement(\"span\", { className: \"k-hex-value k-textbox k-input\" },\n React.createElement(HexInput, { hex: this.props.hex, onHexChange: this.props.onHexChange, disabled: this.props.disabled })),\n React.createElement(Label, { className: \"k-colorgradient-input-label\" }, hexMessage)),\n (this.state.inputMode === 'rgb' || this.state.inputMode === 'rgba') &&\n React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"k-vstack\" },\n React.createElement(NumericTextBox, { inputType: 'number', value: this.props.rgba.r, ariaLabel: String(this.props.rgba.r), min: 0, max: 255, spinners: false, format: \"n\", onChange: this.onRgbaRChange, disabled: this.props.disabled }),\n React.createElement(Label, { className: \"k-colorgradient-input-label\" }, rMessage)),\n React.createElement(\"div\", { className: \"k-vstack\" },\n React.createElement(NumericTextBox, { inputType: 'number', value: this.props.rgba.g, ariaLabel: String(this.props.rgba.g), min: 0, max: 255, spinners: false, format: \"n\", onChange: this.onRgbaGChange, disabled: this.props.disabled }),\n React.createElement(Label, { className: \"k-colorgradient-input-label\" }, gMessage)),\n React.createElement(\"div\", { className: \"k-vstack\" },\n React.createElement(NumericTextBox, { inputType: 'number', value: this.props.rgba.b, ariaLabel: String(this.props.rgba.b), min: 0, max: 255, spinners: false, format: \"n\", onChange: this.onRgbaBChange, disabled: this.props.disabled }),\n React.createElement(Label, { className: \"k-colorgradient-input-label\" }, bMessage))),\n this.state.inputMode === 'rgba' &&\n React.createElement(\"div\", { className: \"k-vstack\" },\n this.props.opacity &&\n React.createElement(NumericTextBox, { inputType: 'number', value: this.props.rgba.a, ariaLabel: String(this.props.rgba.a), min: 0, max: 1, step: 0.01, spinners: false, format: \"n2\", onChange: this.onRgbaAChange, disabled: this.props.disabled }),\n this.props.opacity && (React.createElement(Label, { className: \"k-colorgradient-input-label\" }, aMessage)))));\n };\n ColorInput.prototype.dispatchRgbaChange = function (newValue, event) {\n var rgba = __assign({}, this.props.rgba);\n if (newValue.r !== undefined) {\n rgba.r = newValue.r;\n }\n if (newValue.g !== undefined) {\n rgba.g = newValue.g;\n }\n if (newValue.b !== undefined) {\n rgba.b = newValue.b;\n }\n if (newValue.a !== undefined) {\n rgba.a = newValue.a;\n }\n this.props.onRgbaChange(rgba, event);\n };\n ;\n ColorInput.prototype.onToggleModeChange = function () {\n var index = modes.length - 1 === modes.indexOf(this.state.inputMode) ? 0 : modes.indexOf(this.state.inputMode) + 1;\n if (!this.props.opacity) {\n var nextIndex = modes[index] === 'rgba' ? index + 1 : index;\n this.setState({ inputMode: modes[nextIndex] });\n }\n else {\n this.setState({ inputMode: modes[index] });\n }\n };\n return ColorInput;\n}(React.Component));\nexport default ColorInput;\nregisterForIntl(ColorInput);\nregisterForLocalization(ColorInput);\n","import { isPresent } from './misc';\nimport { parseColor } from '@progress/kendo-drawing';\n/**\n * @hidden\n */\nvar ColorPaletteService = /** @class */ (function () {\n function ColorPaletteService() {\n this.colorRows = [];\n }\n ColorPaletteService.prototype.setColorMatrix = function (palette, columns) {\n this.colorRows = [];\n if (!(isPresent(palette) && palette.length)) {\n return;\n }\n columns = columns || palette.length;\n for (var start = 0; start < palette.length; start += columns) {\n var row = palette.slice(start, columns + start);\n this.colorRows.push(row);\n }\n };\n ColorPaletteService.prototype.getCellCoordsFor = function (color) {\n var _this = this;\n if (!isPresent(color)) {\n return;\n }\n var parsedColor = color ? parseColor(color, true) : color;\n var colors = [color];\n if (isPresent(parsedColor)) {\n colors.push(parsedColor.toCss(), parsedColor.toCssRgba());\n }\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n if (colors.some(function (c) { return c === _this.colorRows[row][col]; })) {\n return { value: { row: row, col: col } };\n }\n };\n for (var col = 0; col < this_1.colorRows[row].length; col++) {\n var state_2 = _loop_2(col);\n if (typeof state_2 === \"object\")\n return state_2;\n }\n };\n var this_1 = this;\n for (var row = 0; row < this.colorRows.length; row++) {\n var state_1 = _loop_1(row);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n };\n ColorPaletteService.prototype.getColorAt = function (cellCoords) {\n if (!(isPresent(cellCoords) && isPresent(this.colorRows[cellCoords.row]))) {\n return;\n }\n return this.colorRows[cellCoords.row][cellCoords.col];\n };\n ColorPaletteService.prototype.getNextCell = function (current, horizontalStep, verticalStep) {\n if (!(isPresent(current) && isPresent(current.row) && isPresent(current.col))) {\n return { row: 0, col: 0 };\n }\n var row = this.clampIndex(current.row + verticalStep, this.colorRows.length - 1);\n var col = this.clampIndex(current.col + horizontalStep, this.colorRows[row].length - 1);\n return { row: row, col: col };\n };\n ColorPaletteService.prototype.clampIndex = function (index, max) {\n var minArrayIndex = 0;\n if (index < minArrayIndex) {\n return minArrayIndex;\n }\n if (index > max) {\n return max;\n }\n return index;\n };\n return ColorPaletteService;\n}());\nexport { ColorPaletteService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { ColorPaletteService } from './utils/color-palette.service';\nimport { classNames, Keys, dispatchEvent, guid, getTabIndex, withPropsContext, createPropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { PALETTEPRESETS } from './models/palette-presets';\nimport { isPresent } from './utils/misc';\nimport { parseColor } from './utils/color-parser';\n/**\n * @hidden\n */\nexport var DEFAULT_TILE_SIZE = 24;\n/**\n * @hidden\n */\nexport var DEFAULT_COLUMNS_COUNT = 10;\n/**\n * @hidden\n */\nexport var DEFAULT_PRESET = 'office';\n/** @hidden */\nvar ColorPaletteWithoutContext = /** @class */ (function (_super) {\n __extends(ColorPaletteWithoutContext, _super);\n function ColorPaletteWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.wrapper = null;\n _this.paletteService = null;\n _this.guid = guid();\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this.wrapper) {\n _this.wrapper.focus();\n }\n };\n _this.onKeyDown = function (event) {\n switch (event.keyCode) {\n case Keys.down:\n _this.handleCellNavigation(0, 1);\n break;\n case Keys.up:\n _this.handleCellNavigation(0, -1);\n break;\n case Keys.right:\n _this.handleCellNavigation(1, 0);\n break;\n case Keys.left:\n _this.handleCellNavigation(-1, 0);\n break;\n case Keys.enter:\n _this.handleEnter(event);\n break;\n default: return;\n }\n event.preventDefault();\n };\n _this.onColorClick = function (color, event) {\n if (_this.isUncontrolled) {\n _this.setState({ selectedColor: color, focusedColor: color });\n }\n else {\n _this.setState({ focusedColor: color });\n }\n _this.dispatchChangeEvent(color, event);\n };\n _this.onFocus = function (nativeEvent) {\n if (!_this.paletteService) {\n return;\n }\n _this.setState({ focusedColor: _this.state.selectedColor || _this.paletteService.colorRows[0][0] });\n if (_this.props.onFocus) {\n _this.props.onFocus.call(undefined, nativeEvent);\n }\n };\n _this.onBlur = function () {\n _this.setState({ focusedColor: undefined });\n };\n validatePackage(packageMetadata);\n // The empty string for the `value` prop means no selection but controlled mode.\n _this.state = {\n selectedColor: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue,\n isFirstRender: true\n };\n return _this;\n }\n /**\n * @hidden\n */\n ColorPaletteWithoutContext.prototype.render = function () {\n var _this = this;\n var paletteInfo = this.getPaletteInfo();\n var svc = this.paletteService = new ColorPaletteService();\n svc.setColorMatrix(paletteInfo.colors, paletteInfo.columns);\n var selectedCellCoords = svc.getCellCoordsFor(this.state.selectedColor);\n var focusedCellCoords = svc.getCellCoordsFor(this.state.focusedColor);\n var className = classNames('k-colorpalette', { 'k-disabled': this.props.disabled }, this.props.className);\n if (paletteInfo.colors.length) {\n return (React.createElement(\"div\", { id: this.props.id, role: \"grid\", className: className, onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, \"aria-disabled\": this.props.ariaDisabled || (this.props.disabled ? 'true' : undefined), \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled), ref: function (el) { return _this.wrapper = el; } },\n React.createElement(\"table\", { className: \"k-colorpalette-table\", role: \"presentation\" },\n React.createElement(\"tbody\", { role: \"rowgroup\" }, this.renderRows(svc.colorRows, selectedCellCoords, focusedCellCoords)))));\n }\n else {\n // In this way, the code prevents an eventual focus of the component when no cells are available.\n // This is needed because upon focus the first cell gets focused.\n return '';\n }\n };\n /**\n * @hidden\n */\n ColorPaletteWithoutContext.getDerivedStateFromProps = function (props, state) {\n if (!state.isFirstRender && props.value !== undefined) {\n // The component is in controlled mode.\n if (props.value === '' && state.selectedColor !== undefined) {\n // The selection has to be removed.\n return { selectedColor: undefined };\n }\n else if (props.value !== '' && props.value !== state.selectedColor) {\n return { selectedColor: props.value };\n }\n }\n else if (state.isFirstRender) {\n return { isFirstRender: false };\n }\n return null;\n };\n ColorPaletteWithoutContext.prototype.handleCellNavigation = function (horizontalStep, verticalStep) {\n if (!this.paletteService) {\n return;\n }\n if (this.focusedColorCooridanates) {\n var newCoords = this.paletteService.getNextCell(this.focusedColorCooridanates, horizontalStep, verticalStep);\n this.setState({ focusedColor: this.paletteService.getColorAt(newCoords) });\n }\n else {\n this.setState({ focusedColor: this.paletteService.colorRows[0][0] });\n }\n };\n ColorPaletteWithoutContext.prototype.handleEnter = function (event) {\n if (this.isUncontrolled) {\n this.setState({ selectedColor: this.state.focusedColor });\n }\n this.dispatchChangeEvent(this.state.focusedColor, event);\n };\n ColorPaletteWithoutContext.prototype.dispatchChangeEvent = function (value, event) {\n dispatchEvent(this.props.onChange, event, this, { value: value, rgbaValue: parseColor(value, 'rgba') });\n };\n Object.defineProperty(ColorPaletteWithoutContext.prototype, \"focusedColorCooridanates\", {\n get: function () {\n return this.state.focusedColor && this.paletteService ? this.paletteService.getCellCoordsFor(this.state.focusedColor) : undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ColorPaletteWithoutContext.prototype, \"isUncontrolled\", {\n get: function () {\n return this.props.value === undefined;\n },\n enumerable: false,\n configurable: true\n });\n ColorPaletteWithoutContext.prototype.getPaletteInfo = function () {\n if (typeof this.props.palette === 'string') {\n var preset = PALETTEPRESETS[this.props.palette];\n if (isPresent(preset)) {\n return {\n colors: preset.colors,\n columns: this.props.columns || preset.columns || DEFAULT_COLUMNS_COUNT\n };\n }\n else {\n return { colors: [], columns: 0 };\n }\n }\n else {\n return { colors: this.props.palette || [], columns: this.props.columns || DEFAULT_COLUMNS_COUNT };\n }\n };\n ColorPaletteWithoutContext.prototype.renderRows = function (rows, selectedCellCoords, focusedCellCoords) {\n var _this = this;\n return rows.map(function (row, i) {\n return React.createElement(\"tr\", { role: \"row\", key: i }, _this.renderColumns(row, i, selectedCellCoords, focusedCellCoords));\n });\n };\n ColorPaletteWithoutContext.prototype.renderColumns = function (columns, rowIndex, selectedCellCoords, focusedCellCoords) {\n var _this = this;\n var rowIsSelected = selectedCellCoords !== undefined && selectedCellCoords.row === rowIndex;\n var selectedColumn = selectedCellCoords && selectedCellCoords.col;\n var rowIsFocused = focusedCellCoords !== undefined && focusedCellCoords.row === rowIndex;\n var focusedColumn = focusedCellCoords && focusedCellCoords.col;\n var tileSize = typeof this.props.tileSize !== 'number' ?\n this.props.tileSize : { width: this.props.tileSize, height: this.props.tileSize };\n var width = tileSize.width + 'px';\n var height = tileSize.height + 'px';\n return columns.map(function (color, i) {\n var isSelected = rowIsSelected && selectedColumn === i;\n var className = classNames('k-colorpalette-tile', {\n 'k-selected': isSelected,\n 'k-focus': rowIsFocused && focusedColumn === i\n });\n return (React.createElement(\"td\", { role: \"gridcell\", className: className, \"aria-label\": color, \"aria-selected\": isSelected ? true : _this.props.disabled ? undefined : false, style: { backgroundColor: color, width: width, height: height, minWidth: width }, onClick: function (event) { return _this.onColorClick(color, event); }, id: _this.createCellId({ row: rowIndex, col: i }), key: i }));\n });\n };\n ColorPaletteWithoutContext.prototype.createCellId = function (cellCoords) {\n return \"\".concat(this.guid, \"_\").concat(cellCoords.row, \"_\").concat(cellCoords.col);\n };\n ColorPaletteWithoutContext.displayName = 'ColorPalette';\n /**\n * @hidden\n */\n ColorPaletteWithoutContext.propTypes = {\n palette: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string.isRequired), PropTypes.string]),\n columns: PropTypes.number,\n tileSize: PropTypes.any,\n defaultValue: PropTypes.string,\n value: PropTypes.string,\n disabled: PropTypes.bool,\n tabIndex: PropTypes.number,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n className: PropTypes.string\n };\n /**\n * @hidden\n */\n ColorPaletteWithoutContext.defaultProps = {\n palette: DEFAULT_PRESET,\n tileSize: DEFAULT_TILE_SIZE\n };\n return ColorPaletteWithoutContext;\n}(React.Component));\nexport { ColorPaletteWithoutContext };\n/**\n * Represents the PropsContext of the `ColorPalette` component.\n * Used for global configuration of all `ColorPalette` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var ColorPalettePropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact ColorPalette component]({% slug overview_colorpalette %}).\n *\n * Accepts properties of type [ColorPaletteProps]({% slug api_inputs_colorpaletteprops %}).\n * Obtaining the `ref` returns an object of type [ColorPaletteHandle]({% slug api_inputs_colorpalettehandle %}).\n *\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var ColorPalette = withPropsContext(ColorPalettePropsContext, ColorPaletteWithoutContext);\nColorPalette.displayName = 'KendoReactColorPalette';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ANCHOR_VERTICAL_ALIGN = 'bottom';\n/**\n * @hidden\n */\nvar POPUP_VERTICAL_ALIGN = 'top';\n/**\n * @hidden\n */\nexport var Picker = function (props) {\n var popupSettings = props.popupSettings || {};\n var horizontalAlign = props.dir === 'rtl' ? 'right' : 'left';\n var anchorAlign = React.useMemo(function () { return ({ horizontal: horizontalAlign, vertical: ANCHOR_VERTICAL_ALIGN }); }, [horizontalAlign]);\n var popupAlign = React.useMemo(function () { return ({ horizontal: horizontalAlign, vertical: POPUP_VERTICAL_ALIGN }); }, [horizontalAlign]);\n return (React.createElement(React.Fragment, null,\n props.input,\n props.button,\n React.createElement(Popup, __assign({ style: __assign(__assign({}, (popupSettings || {}).style), { direction: props.dir }) }, popupSettings, { anchor: props.popupAnchor, anchorAlign: anchorAlign, popupAlign: popupAlign, show: props.open, onOpen: props.onOpen, onClose: props.onClose, className: classNames('k-reset', popupSettings.className) }), props.content)));\n};\nPicker.displayName = 'KendoPickerComponent';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, useDir, getTabIndex, createPropsContext, usePropsContext, kendoThemeMaps, svgIconPropType, IconWrap } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { Picker } from './Picker';\nimport { ColorGradient } from './ColorGradient';\nimport { ColorPalette, DEFAULT_PRESET, DEFAULT_TILE_SIZE } from './ColorPalette';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { caretAltDownIcon } from '@progress/kendo-svg-icons';\nimport { messages, colorPickerDropdownButtonAriaLabel } from '../messages';\nimport { useLocalization } from '@progress/kendo-react-intl';\n/**\n * @hidden\n */\nvar DEFAULT_GRADIENT_SETTINGS = {\n opacity: true\n};\n/**\n * @hidden\n */\nvar DEFAULT_PALETTE_SETTINGS = {\n palette: DEFAULT_PRESET,\n tileSize: DEFAULT_TILE_SIZE\n};\n/**\n * @hidden\n */\nvar isControlled = function (prop) {\n return prop !== undefined;\n};\n/**\n * Represents the PropsContext of the `ColorPicker` component.\n * Used for global configuration of all `ColorPicker` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var ColorPickerPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact ColorPicker component]({% slug overview_colorpicker %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var ColorPicker = React.forwardRef(function (directProps, target) {\n var _a;\n validatePackage(packageMetadata);\n var props = usePropsContext(ColorPickerPropsContext, directProps);\n var localization = useLocalization();\n var _b = props.size, size = _b === void 0 ? defaultProps.size : _b, _c = props.rounded, rounded = _c === void 0 ? defaultProps.rounded : _c, _d = props.fillMode, fillMode = _d === void 0 ? defaultProps.fillMode : _d, popupSettings = props.popupSettings, gradientSettings = props.gradientSettings, paletteSettings = props.paletteSettings, valid = props.valid, disabled = props.disabled, tabIndex = props.tabIndex, view = props.view, icon = props.icon, svgIcon = props.svgIcon, iconClassName = props.iconClassName, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, onActiveColorClick = props.onActiveColorClick, className = props.className;\n var focusableElementRef = React.useRef(null);\n var gradientRef = React.useRef(null);\n var paletteRef = React.useRef(null);\n var blurTimeoutRef = React.useRef();\n var buttonRef = React.useRef(null);\n var _e = React.useState(false), focused = _e[0], setFocused = _e[1];\n var _f = React.useState(props.defaultValue), stateValue = _f[0], setStateValue = _f[1];\n var _g = React.useState(false), stateOpen = _g[0], setStateOpen = _g[1];\n var isValueControlled = isControlled(props.value);\n var isOpenControlled = isControlled(props.open);\n var value = isValueControlled ? props.value : stateValue;\n var open = isOpenControlled ? props.open : stateOpen;\n var focusElement = React.useCallback(function () {\n if (focusableElementRef.current) {\n focusableElementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n // we agreed that each element will have focus method exposed\n element: focusableElementRef.current,\n actionElement: buttonRef.current,\n value: value,\n focus: focusElement\n }); }, [value, focusElement]);\n var setOpen = React.useCallback(function (nextOpen, isBlur) {\n if (!isOpenControlled) {\n if (!nextOpen && !isBlur && focusableElementRef && focusableElementRef.current) {\n focusableElementRef.current.focus();\n }\n setStateOpen(nextOpen);\n }\n }, [isOpenControlled]);\n var onKeyDownHandler = React.useCallback(function (event) {\n var altKey = event.altKey, keyCode = event.keyCode;\n if (keyCode === Keys.esc) {\n setOpen(false);\n return;\n }\n if (keyCode === Keys.enter && !isOpenControlled) {\n event.preventDefault();\n event.stopPropagation();\n setOpen(!open);\n return;\n }\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n if (keyCode === Keys.up && focusableElementRef && focusableElementRef.current) {\n focusableElementRef.current.focus();\n setOpen(false);\n }\n if (keyCode === Keys.down) {\n setOpen(true);\n }\n }\n }, [open, isOpenControlled]);\n var onOpenHandler = React.useCallback(function () {\n // Skip content autofocus when in controlled mode\n if (!isOpenControlled) {\n if (gradientRef.current) {\n gradientRef.current.focus();\n }\n else if (paletteRef.current) {\n paletteRef.current.focus();\n }\n }\n }, [isOpenControlled]);\n var onClickHandler = React.useCallback(function () {\n setOpen(!open, true);\n }, [open]);\n var onActiveColorClickHandler = React.useCallback(function (event) {\n if (onActiveColorClick) {\n onActiveColorClick.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: value\n });\n }\n }, [onActiveColorClick, value]);\n var onFocusHandler = React.useCallback(function (event) {\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = undefined;\n // case where moving back to input from popup\n // if (event.target === focusableElementRef.current) {\n // setOpen(false); // in this case we should focus input on keydown\n // }\n }\n else {\n setFocused(true);\n }\n if (onFocus) {\n onFocus.call(undefined, {\n nativeEvent: event.nativeEvent,\n syntheticEvent: event\n });\n }\n }, [onFocus]);\n var onBlurTimeout = React.useCallback(function () {\n setOpen(false, true);\n setFocused(false);\n blurTimeoutRef.current = undefined;\n }, []);\n var onBlurHandler = React.useCallback(function (event) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = window.setTimeout(onBlurTimeout);\n if (onBlur) {\n onBlur.call(undefined, {\n nativeEvent: event.nativeEvent,\n syntheticEvent: event\n });\n }\n }, [onBlur]);\n var onChangeHandler = React.useCallback(function (event, isPalette) {\n var currentValue = isPalette ? event.rgbaValue : event.value;\n if (!isValueControlled) {\n setStateValue(currentValue);\n }\n if (isPalette) {\n setOpen(false);\n }\n if (onChange) {\n onChange.call(undefined, {\n value: currentValue,\n nativeEvent: event.nativeEvent,\n syntheticEvent: event.syntheticEvent\n });\n }\n }, [isValueControlled, onChange]);\n var onPaletteChangeHandler = React.useCallback(function (event) { return onChangeHandler(event, true); }, [isControlled, onChangeHandler]);\n var dir = useDir(focusableElementRef, props.dir);\n var isValid = valid !== false;\n return (React.createElement(\"span\", { id: props.id, role: 'combobox', \"aria-label\": props.ariaLabel, \"aria-labelledby\": props.ariaLabelledBy, \"aria-describedby\": props.ariaDescribedBy, \"aria-haspopup\": 'dialog', \"aria-expanded\": open, \"aria-disabled\": disabled ? 'true' : undefined, className: classNames('k-colorpicker', 'k-picker', 'k-icon-picker', (_a = {},\n _a[\"k-picker-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a[\"k-picker-\".concat(fillMode)] = fillMode,\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _a['k-invalid'] = !isValid,\n _a['k-disabled'] = disabled,\n _a['k-focus'] = focused,\n _a.className = className,\n _a)), ref: focusableElementRef, tabIndex: getTabIndex(tabIndex, disabled), title: props.title, onKeyDown: onKeyDownHandler, onFocus: onFocusHandler, onBlur: onBlurHandler, dir: dir },\n React.createElement(Picker, { dir: dir, open: open, onOpen: onOpenHandler, popupAnchor: focusableElementRef.current || undefined, popupSettings: __assign({}, popupSettings), input: (React.createElement(\"span\", { onClick: onActiveColorClickHandler, className: 'k-input-inner' },\n React.createElement(\"span\", { className: classNames('k-value-icon', 'k-color-preview', {\n 'k-no-color': !value,\n 'k-icon-color-preview': (icon || svgIcon || iconClassName)\n }) },\n iconClassName && React.createElement(\"span\", { className: classNames('k-color-preview-icon', iconClassName) }),\n !iconClassName && (icon || svgIcon) && React.createElement(IconWrap, { name: icon, icon: svgIcon }),\n React.createElement(\"span\", { className: \"k-color-preview-mask\", style: { backgroundColor: value } })))), button: (React.createElement(Button, { tabIndex: -1, type: \"button\", onClick: onClickHandler, className: \"k-input-button\", rounded: null, icon: 'caret-alt-down', svgIcon: caretAltDownIcon, \"aria-label\": localization.toLanguageString(colorPickerDropdownButtonAriaLabel, messages[colorPickerDropdownButtonAriaLabel]) })), content: (React.createElement(React.Fragment, null,\n (view === 'combo' || view === 'gradient') && (React.createElement(ColorGradient, __assign({}, gradientSettings, { tabIndex: 0, ref: gradientRef, value: value, onChange: onChangeHandler }))),\n (view === 'combo' || view === 'palette') && (React.createElement(ColorPalette, __assign({}, paletteSettings, { ref: paletteRef, value: value, onChange: onPaletteChangeHandler }))))) })));\n});\nColorPicker.propTypes = {\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n disabled: PropTypes.bool,\n view: PropTypes.oneOf(['gradient', 'palette', 'combo']),\n dir: PropTypes.string,\n id: PropTypes.string,\n icon: PropTypes.string,\n svgIcon: svgIconPropType,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline']),\n className: PropTypes.string\n};\nvar defaultProps = {\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid',\n view: 'palette',\n gradientSettings: DEFAULT_GRADIENT_SETTINGS,\n paletteSettings: DEFAULT_PALETTE_SETTINGS\n};\nColorPicker.defaultProps = defaultProps;\nColorPicker.displayName = 'KendoColorPicker';\n","/* eslint-disable max-len */\n/**\n * @hidden\n */\nexport var PALETTEPRESETS = {\n basic: {\n colors: ['#000000', '#7f7f7f', '#880015', '#ed1c24', '#ff7f27', '#fff200', '#22b14c', '#00a2e8', '#3f48cc', '#a349a4', ' ffffff', '#c3c3c3', '#b97a57', '#ffaec9', '#ffc90e', '#efe4b0', '#b5e61d', '#99d9ea', '#7092be', '#c8bfe7'],\n columns: 10\n },\n office: {\n colors: ['#ffffff', '#000000', '#e6e6e6', '#435569', '#4371c4', '#ed7e32', '#a5a4a5', '#febf04', '#5a9bd5', '#71ae48', '#f2f2f3', '#7f7f7f', '#d1cece', '#d5dde3', '#dae1f4', '#fce5d4', '#deeded', '#fff2cc', '#deeaf6', '#e1efd9', '#d7d8d8', '#585959', '#aeabab', '#adbaca', '#b4c5e7', '#f6caac', '#dbdbdb', '#ffe498', '#bcd6ee', '#c5e0b2', '#bfbfc0', '#3f3f3f', '#767070', '#8595b1', '#8fabdb', '#f5b183', '#c9c8c9', '#fed965', '#9bc4e5', '#a8d08d', '#a5a5a6', '#262625', '#393939', '#334050', '#2e5496', '#c45a11', '#7b7b7a', '#bf9000', '#2f75b5', '#548235', '#7f7f7f', '#0b0c0c', '#161616', '#222a34', '#203764', '#843d0b', '#525252', '#7f6000', '#1d4d79', '#375623'],\n columns: 10\n },\n apex: {\n colors: ['#ffffff', '#000000', '#c9c2d1', '#69676d', '#ceb966', '#9cb084', '#6bb1c9', '#6585cf', '#7e6bc9', '#a379bb', '#f2f2f2', '#7f7f7f', '#f4f2f5', '#e0e0e2', '#f5f1e0', '#ebefe6', '#e1eff4', '#e0e6f5', '#e5e1f4', '#ece4f1', '#d8d8d8', '#595959', '#e9e6ec', '#c2c1c5', '#ebe3c1', '#d7dfcd', '#c3dfe9', '#c1ceeb', '#cbc3e9', '#dac9e3', '#bfbfbf', '#3f3f3f', '#dedae3', '#a4a3a8', '#e1d5a3', '#c3cfb5', '#a6d0de', '#a2b5e2', '#b1a6de', '#c7aed6', '#a5a5a5', '#262626', '#9688a5', '#4e4d51', '#ae9638', '#758c5a', '#3d8da9', '#365bb0', '#533da9', '#7d4d99', '#7f7f7f', '#0c0c0c', '#635672', '#343336', '#746425', '#4e5d3c', '#295e70', '#243c75', '#372970', '#533366'],\n columns: 10\n },\n austin: {\n colors: ['#ffffff', '#000000', '#caf278', '#3e3d2d', '#94c600', '#71685a', '#ff6700', '#909465', '#956b43', '#fea022', '#f2f2f2', '#7f7f7f', '#f4fce4', '#dddcd0', '#efffc0', '#e3e1dc', '#ffe0cb', '#e8e9df', '#ece1d6', '#feecd2', '#d8d8d8', '#595959', '#e9f9c9', '#bbb9a1', '#dfff82', '#c8c3ba', '#ffc299', '#d2d4c0', '#dac3ad', '#fed9a6', '#bfbfbf', '#3f3f3f', '#dff7ae', '#ada598', '#cfff43', '#ada598', '#ffa365', '#bcbfa1', '#c8a585', '#fec67a', '#a5a5a5', '#262626', '#a9ea25', '#2e2d21', '#6f9400', '#544e43', '#bf4d00', '#6c6f4b', '#6f5032', '#d77b00', '#7f7f7f', '#0c0c0c', '#74a50f', '#1f1e16', '#4a6300', '#38342d', '#7f3300', '#484a32', '#4a3521', '#8f5200'],\n columns: 10\n },\n clarity: {\n colors: ['#ffffff', '#292934', '#f3f2dc', '#d2533c', '#93a299', '#ad8f67', '#726056', '#4c5a6a', '#808da0', '#79463d', '#f2f2f2', '#e7e7ec', '#e7e5b9', '#f6dcd8', '#e9ecea', '#eee8e0', '#e4dedb', '#d8dde3', '#e5e8ec', '#e9d6d3', '#d8d8d8', '#c4c4d1', '#d5d185', '#edbab1', '#d3d9d6', '#ded2c2', '#c9beb8', '#b2bcc8', '#ccd1d9', '#d3aea7', '#bfbfbf', '#8a8aa3', '#aca73b', '#e4978a', '#bec7c1', '#cdbba3', '#af9e94', '#8c9bac', '#b2bac6', '#bd857c', '#a5a5a5', '#56566e', '#56531d', '#a43925', '#6b7c72', '#866b48', '#554840', '#39434f', '#5c697b', '#5a342d', '#7f7f7f', '#3b3b4b', '#22210b', '#6d2619', '#47534c', '#594730', '#39302b', '#262d35', '#3d4652', '#3c231e'],\n columns: 10\n },\n slipstream: {\n colors: ['#ffffff', '#000000', '#b4dcfa', '#212745', '#4e67c8', '#5eccf3', '#a7ea52', '#5dceaf', '#ff8021', '#f14124', '#f2f2f2', '#7f7f7f', '#8bc9f7', '#c7cce4', '#dbe0f4', '#def4fc', '#edfadc', '#def5ef', '#ffe5d2', '#fcd9d3', '#d8d8d8', '#595959', '#4facf3', '#909aca', '#b8c2e9', '#beeafa', '#dbf6b9', '#beebdf', '#ffcca6', '#f9b3a7', '#bfbfbf', '#3f3f3f', '#0d78c9', '#5967af', '#94a3de', '#9ee0f7', '#caf297', '#9de1cf', '#ffb279', '#f68d7b', '#a5a5a5', '#262626', '#063c64', '#181d33', '#31479f', '#11b2eb', '#81d319', '#34ac8b', '#d85c00', '#c3260c', '#7f7f7f', '#0c0c0c', '#021828', '#101322', '#202f6a', '#0b769c', '#568c11', '#22725c', '#903d00', '#821908'],\n columns: 10\n },\n metro: {\n colors: ['#ffffff', '#000000', '#d6ecff', '#4e5b6f', '#7fd13b', '#ea157a', '#feb80a', '#00addc', '#738ac8', '#1ab39f', '#f2f2f2', '#7f7f7f', '#a7d6ff', '#d9dde4', '#e5f5d7', '#fad0e4', '#fef0cd', '#c5f2ff', '#e2e7f4', '#c9f7f1', '#d8d8d8', '#595959', '#60b5ff', '#b3bcca', '#cbecb0', '#f6a1c9', '#fee29c', '#8be6ff', '#c7d0e9', '#94efe3', '#bfbfbf', '#3f3f3f', '#007dea', '#8d9baf', '#b2e389', '#f272af', '#fed46b', '#51d9ff', '#aab8de', '#5fe7d5', '#a5a5a5', '#262626', '#003e75', '#3a4453', '#5ea226', '#af0f5b', '#c58c00', '#0081a5', '#425ea9', '#138677', '#7f7f7f', '#0c0c0c', '#00192e', '#272d37', '#3f6c19', '#750a3d', '#835d00', '#00566e', '#2c3f71', '#0c594f'],\n columns: 10\n },\n flow: {\n colors: ['#ffffff', '#000000', '#dbf5f9', '#04617b', '#0f6fc6', '#009dd9', '#0bd0d9', '#10cf9b', '#7cca62', '#a5c249', '#f2f2f2', '#7f7f7f', '#b2e9f2', '#b4ecfc', '#c7e2fa', '#c4eeff', '#c9fafc', '#c9faed', '#e4f4df', '#edf2da', '#d8d8d8', '#595959', '#76d9e8', '#6adafa', '#90c6f6', '#89deff', '#93f5f9', '#94f6db', '#cae9c0', '#dbe6b6', '#bfbfbf', '#3f3f3f', '#21b2c8', '#20c8f7', '#59a9f2', '#4fceff', '#5df0f6', '#5ff2ca', '#b0dfa0', '#c9da91', '#a5a5a5', '#262626', '#105964', '#02485c', '#0b5394', '#0075a2', '#089ca2', '#0b9b74', '#54a838', '#7e9532', '#7f7f7f', '#0c0c0c', '#062328', '#01303d', '#073763', '#004e6c', '#05686c', '#07674d', '#387025', '#546321'],\n columns: 10\n },\n hardcover: {\n colors: ['#ffffff', '#000000', '#ece9c6', '#895d1d', '#873624', '#d6862d', '#d0be40', '#877f6c', '#972109', '#aeb795', '#f2f2f2', '#7f7f7f', '#e1dca5', '#f2e0c6', '#f0d0c9', '#f6e6d5', '#f5f2d8', '#e7e5e1', '#fbc7bc', '#eef0e9', '#d8d8d8', '#595959', '#d0c974', '#e6c28d', '#e2a293', '#eeceaa', '#ece5b2', '#cfccc3', '#f78f7a', '#dee2d4', '#bfbfbf', '#3f3f3f', '#a29a36', '#daa454', '#d4735e', '#e6b681', '#e2d88c', '#b7b2a5', '#f35838', '#ced3bf', '#a5a5a5', '#262626', '#514d1b', '#664515', '#65281a', '#a2641f', '#a39428', '#655f50', '#711806', '#879464', '#7f7f7f', '#0c0c0c', '#201e0a', '#442e0e', '#431b11', '#6c4315', '#6d621a', '#433f35', '#4b1004', '#5a6243'],\n columns: 10\n },\n trek: {\n colors: ['#ffffff', '#000000', '#fbeec9', '#4e3b30', '#f0a22e', '#a5644e', '#b58b80', '#c3986d', '#a19574', '#c17529', '#f2f2f2', '#7f7f7f', '#f7e09e', '#e1d6cf', '#fcecd5', '#eddfda', '#f0e7e5', '#f3eae1', '#ece9e3', '#f5e3d1', '#d8d8d8', '#595959', '#f3cc5f', '#c4ad9f', '#f9d9ab', '#dcc0b6', '#e1d0cc', '#e7d5c4', '#d9d4c7', '#ebc7a3', '#bfbfbf', '#3f3f3f', '#d29f0f', '#a78470', '#f6c781', '#cba092', '#d2b9b2', '#dbc1a7', '#c6bfab', '#e1ac76', '#a5a5a5', '#262626', '#694f07', '#3a2c24', '#c87d0e', '#7b4b3a', '#926255', '#a17242', '#7b7153', '#90571e', '#7f7f7f', '#0c0c0c', '#2a1f03', '#271d18', '#855309', '#523226', '#614138', '#6b4c2c', '#524b37', '#603a14'],\n columns: 10\n },\n verve: {\n colors: ['#ffffff', '#000000', '#d2d2d2', '#666666', '#ff388c', '#e40059', '#9c007f', '#68007f', '#005bd3', '#00349e', '#f2f2f2', '#7f7f7f', '#bdbdbd', '#e0e0e0', '#ffd7e8', '#ffc6dc', '#ffb8f1', '#f1b2ff', '#c3dcff', '#b8cfff', '#d8d8d8', '#595959', '#9d9d9d', '#c1c1c1', '#ffafd1', '#ff8eba', '#ff71e4', '#e365ff', '#87baff', '#72a0ff', '#bfbfbf', '#3f3f3f', '#696969', '#a3a3a3', '#ff87ba', '#ff5597', '#ff2ad7', '#d519ff', '#4b98ff', '#2b71ff', '#a5a5a5', '#262626', '#343434', '#4c4c4c', '#e90062', '#ab0042', '#75005f', '#4e005f', '#00449e', '#002676', '#7f7f7f', '#0c0c0c', '#151515', '#333333', '#9b0041', '#72002c', '#4e003f', '#34003f', '#002d69', '#00194f'],\n columns: 10\n },\n monochrome: {\n colors: ['#000000', '#1a1a1a', '#333333', '#4d4d4d', '#666666', '#808080', '#999999', '#b3b3b3', '#cccccc', '#e6e6e6', '#f2f2f2', '#ffffff'],\n columns: 12\n }\n};\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nvar DARK_TRESHOLD = 180;\n\nvar Color = (function (Class) {\n function Color(value) {\n var this$1 = this;\n\n Class.call(this);\n\n if (arguments.length === 1) {\n var formats = Color.formats;\n var resolvedColor = this.resolveColor(value);\n\n for (var idx = 0; idx < formats.length; idx++) {\n var formatRegex = formats[idx].re;\n var processor = formats[idx].process;\n var parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n var channels = processor(parts);\n this$1.r = channels[0];\n this$1.g = channels[1];\n this$1.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n }\n\n if ( Class ) Color.__proto__ = Class;\n Color.prototype = Object.create( Class && Class.prototype );\n Color.prototype.constructor = Color;\n\n Color.prototype.toHex = function toHex () {\n var pad = this.padDigit;\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n };\n\n Color.prototype.resolveColor = function resolveColor (value) {\n var color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n };\n\n Color.prototype.normalizeByte = function normalizeByte (value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n };\n\n Color.prototype.padDigit = function padDigit (value) {\n return (value.length === 1) ? \"0\" + value : value;\n };\n\n Color.prototype.brightness = function brightness (value) {\n var round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n };\n\n Color.prototype.percBrightness = function percBrightness () {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n };\n\n Color.prototype.isDark = function isDark () {\n return this.percBrightness() < DARK_TRESHOLD;\n };\n\n Color.fromBytes = function fromBytes (r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n };\n\n Color.fromRGB = function fromRGB (r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n };\n\n Color.fromHSV = function fromHSV (h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n };\n\n Color.fromHSL = function fromHSL (h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n };\n\n return Color;\n}(Class));\n\nColor.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","import { parseColor as parse, Color } from '@progress/kendo-drawing';\nimport { isPresent, fitIntoBounds } from './misc';\n/**\n * @hidden\n *\n * Returns the hex or RGBA string representation of the color.\n */\nexport var parseColor = function (value, format, safe) {\n if (safe === void 0) { safe = true; }\n var allowedFormats = ['hex', 'rgba']; // TODO: constant?\n // Angular supports third type: name : const allowedFormats: Array = ['hex', 'rgba', 'name'];\n if (allowedFormats.indexOf(format) === -1) {\n throw new Error(\"Unsupported color output format '\".concat(format, \"'. The available options are 'hex' or 'rgba'.\"));\n }\n if (!isPresent(value)) {\n return;\n }\n var parsedColor = parse(value.trim(), safe);\n if (!isPresent(parsedColor)) {\n return;\n }\n return format === 'hex' ? parsedColor.toCss() : parsedColor.toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns an HSV object representation of the color string.\n */\nexport var getHSV = function (value, safe) {\n if (safe === void 0) { safe = true; }\n var parsed = parse(value, safe);\n if (!isPresent(parsed)) {\n return {};\n }\n return parsed.toHSV();\n};\n/**\n * @hidden\n *\n * Returns an RGBA object representation of the color string.\n */\nexport var getRGBA = function (value, safe) {\n if (safe === void 0) { safe = true; }\n var parsed = parse(value, safe);\n if (!isPresent(parsed)) {\n return {};\n }\n return parsed.toBytes();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nexport var getColorFromHSV = function (hsva) {\n var hue = fitIntoBounds(hsva.h, 0, 359.9);\n var saturation = fitIntoBounds(hsva.s, 0, 1);\n var value = fitIntoBounds(hsva.v, 0, 1);\n var alpha = fitIntoBounds(hsva.a, 0, 1);\n return Color.fromHSV(hue, saturation, value, alpha).toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color based on the `hue` and\n * assuming the `value`, `saturation`, and `alpha` have a value of `1`.\n */\nexport var getColorFromHue = function (hue) {\n return getColorFromHSV({ h: hue, s: 1, v: 1, a: 1 });\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nexport var getColorFromRGBA = function (rgba) {\n var red = fitIntoBounds(rgba.r, 0, 255);\n var green = fitIntoBounds(rgba.g, 0, 255);\n var blue = fitIntoBounds(rgba.b, 0, 255);\n var alpha = fitIntoBounds(rgba.a, 0, 1);\n return Color.fromBytes(red, green, blue, alpha).toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns the RGB object representation of the color based on the background color.\n */\nexport var getRGBFromRGBA = function (foregroundColor, backgroundColor) {\n var r1 = fitIntoBounds(foregroundColor.r, 0, 255);\n var g1 = fitIntoBounds(foregroundColor.g, 0, 255);\n var b1 = fitIntoBounds(foregroundColor.b, 0, 255);\n var a1 = fitIntoBounds(foregroundColor.a, 0, 1);\n var r2 = fitIntoBounds(backgroundColor.r, 0, 255);\n var g2 = fitIntoBounds(backgroundColor.g, 0, 255);\n var b2 = fitIntoBounds(backgroundColor.b, 0, 255);\n return {\n r: Math.round(((1 - a1) * r2) + (a1 * r1)),\n g: Math.round(((1 - a1) * g2) + (a1 * g1)),\n b: Math.round(((1 - a1) * b2) + (a1 * b1))\n };\n};\n/**\n * @hidden\n *\n * Returns the relative luminance.\n */\nexport var getLuminance = function (rgb) {\n var a = [rgb.r || 0, rgb.g || 0, rgb.b || 0].map(function (v) {\n v /= 255;\n return v <= 0.03928\n ? v / 12.92\n : Math.pow((v + 0.055) / 1.055, 2.4);\n });\n return a[0] * 0.2126 + a[1] * 0.7152 + a[2] * 0.0722;\n};\n/**\n * @hidden\n *\n * Returns the color contrast.\n */\nexport var getContrast = function (luminance1, luminance2) {\n var brightest = Math.max(luminance1, luminance2);\n var darkest = Math.min(luminance1, luminance2);\n return (brightest + 0.05)\n / (darkest + 0.05);\n};\n/**\n * @hidden\n *\n * Returns the color contrast from two RGBA colors.\n */\nexport var getContrastFromTwoRGBAs = function (a, b) {\n return getContrast(getLuminance(getRGBFromRGBA(a, b)), getLuminance(getRGBFromRGBA(b, { r: 0, g: 0, b: 0, a: 1 })));\n};\n","/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n *\n * Fits the contender number into the specified bounds.\n * If the number is NaN or null, the minimum is returned.\n *\n * @param contender Represents the number you want to fit into the specified bounds.\n * @param min The inclusive lower bound number.\n * @param max The inclusive upper bound number.\n */\nexport var fitIntoBounds = function (contender, min, max) {\n if (!isPresent(contender) || isNaN(contender)) {\n return min;\n }\n return contender <= min ? min : contender >= max ? max : contender;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { guid, classNames, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/** @hidden */\nvar InputWithoutContext = /** @class */ (function (_super) {\n __extends(InputWithoutContext, _super);\n function InputWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this._input = null;\n _this._inputId = guid();\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._input) {\n _this._input.focus();\n }\n };\n _this.isInvalid = function (state) {\n var result = false;\n for (var prop in state) {\n if (state.hasOwnProperty(prop)) {\n result = result || Boolean(state[prop]);\n }\n }\n return result;\n };\n /**\n * @hidden\n */\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this.validity.valid || !_this.validityStyles\n ? _this._input.classList.remove('k-invalid')\n : _this._input.classList.add('k-invalid');\n _this._input.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || '');\n }\n };\n _this.handleChange = function (event) {\n _this.setState({\n value: event.target.value\n });\n _this.valueDuringOnChange = event.target.value;\n if (_this.props.onChange) {\n _this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: event.target.value,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n };\n /**\n * @hidden\n */\n _this.handleAutoFill = function (e) {\n if (e.animationName === 'autoFillStart') {\n var parent_1 = e.target.parentNode;\n if (parent_1 && parent_1.classList.contains('k-empty')) {\n parent_1.classList.remove('k-empty');\n }\n }\n };\n validatePackage(packageMetadata);\n _this.state = {\n value: _this.props.defaultValue || InputWithoutContext.defaultProps.defaultValue\n };\n return _this;\n }\n Object.defineProperty(InputWithoutContext.prototype, \"element\", {\n /**\n * Gets the native input element of the Input component.\n */\n get: function () {\n return this._input;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(InputWithoutContext.prototype, \"value\", {\n /**\n * Gets the value of the Input.\n */\n get: function () {\n return this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(InputWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the Input.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(InputWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the Input is set.\n */\n get: function () {\n var result = {\n badInput: this._input ? this._input.validity.badInput : false,\n patternMismatch: this._input\n ? this._input.validity.patternMismatch\n : false,\n rangeOverflow: this._input ? this._input.validity.rangeOverflow : false,\n rangeUnderflow: this._input ? this._input.validity.rangeUnderflow : false,\n stepMismatch: this._input ? this._input.validity.stepMismatch : false,\n tooLong: this._input ? this._input.validity.tooLong : false,\n typeMismatch: this._input ? this._input.validity.typeMismatch : false,\n valueMissing: this._input ? this._input.validity.valueMissing : false\n };\n return __assign(__assign({}, result), { customError: this.props.validationMessage !== undefined, valid: this.props.valid !== undefined\n ? this.props.valid\n : this._input\n ? !this.isInvalid(result)\n : true });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(InputWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : InputWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n InputWithoutContext.prototype.componentDidMount = function () {\n this.forceUpdate();\n };\n /**\n * @hidden\n */\n InputWithoutContext.prototype.componentDidUpdate = function () {\n this.setValidity();\n };\n /**\n * @hidden\n */\n InputWithoutContext.prototype.render = function () {\n var _this = this;\n var _a = this.props, className = _a.className, label = _a.label, labelClassName = _a.labelClassName, id = _a.id, validationMessage = _a.validationMessage, defaultValue = _a.defaultValue, valid = _a.valid, \n // Removed to support direct use in Form Field component\n visited = _a.visited, touched = _a.touched, modified = _a.modified, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy, validityStyles = _a.validityStyles, style = _a.style, ariaLabel = _a.ariaLabel, props = __rest(_a, [\"className\", \"label\", \"labelClassName\", \"id\", \"validationMessage\", \"defaultValue\", \"valid\", \"visited\", \"touched\", \"modified\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"validityStyles\", \"style\", \"ariaLabel\"]);\n var inputId = id || this._inputId;\n var isValid = !this.validityStyles || this.validity.valid;\n var inputClassName = classNames(className, 'k-input k-input-md k-rounded-md k-input-solid');\n var textbox = (React.createElement(\"input\", __assign({ \"aria-labelledby\": ariaLabelledBy, \"aria-describedby\": ariaDescribedBy, \"aria-disabled\": this.props.disabled || undefined, \"aria-invalid\": !isValid || undefined, \"aria-label\": ariaLabel || undefined }, props, { style: !label\n ? style\n : undefined, value: this.value, id: inputId, className: inputClassName, onChange: this.handleChange, onAnimationStart: this.handleAutoFill, ref: function (el) {\n _this._input = el;\n } })));\n return label ?\n (React.createElement(FloatingLabel, { label: label, labelClassName: labelClassName, editorId: inputId, editorValue: String(this.value), editorValid: isValid, editorDisabled: props.disabled, editorPlaceholder: props.placeholder, children: textbox, style: style, dir: props.dir }))\n : textbox;\n };\n InputWithoutContext.displayName = 'Input';\n /**\n * @hidden\n */\n InputWithoutContext.propTypes = {\n label: PropTypes.string,\n labelClassName: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n ariaLabel: PropTypes.string\n };\n /**\n * @hidden\n */\n InputWithoutContext.defaultProps = {\n defaultValue: '',\n required: false,\n validityStyles: true\n };\n return InputWithoutContext;\n}(React.Component));\nexport { InputWithoutContext };\n/**\n * Represents the PropsContext of the `Input` component.\n * Used for global configuration of all `Input` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var InputPropsContext = createPropsContext();\n;\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact Input component]({% slug overview_textbox %}).\n *\n * Accepts properties of type [InputProps]({% slug api_inputs_inputprops %}).\n * Obtaining the `ref` returns an object of type [InputHandle]({% slug api_inputs_inputhandle %}).\n */\nexport var Input = withPropsContext(InputPropsContext, InputWithoutContext);\nInput.displayName = 'KendoReactInput';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { classNames } from '@progress/kendo-react-common';\nimport * as React from 'react';\n/**\n * Represents the KendoReact InputPrefix component.\n */\nexport var InputPrefix = React.forwardRef(function (props, ref) {\n var target = React.useRef(null);\n var element = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({ element: element.current }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n return (React.createElement(\"span\", __assign({}, props, { className: classNames('k-input-prefix', props.className) })));\n});\nInputPrefix.displayName = 'KendoReactInputPrefix';\n","/* eslint-disable max-len */\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, validatePackage, getTabIndex } from '@progress/kendo-react-common';\nimport { ButtonGroup, Button } from '@progress/kendo-react-buttons';\nimport { paletteIcon, dropletSlashIcon, dropletSliderIcon } from '@progress/kendo-svg-icons';\nimport { ColorPalette, ColorGradient } from '../main';\nimport { packageMetadata } from '../package-metadata';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { messages, flatColorPickerApplyBtn, flatColorPickerCancelBtn, flatColorPickerColorGradientBtn, flatColorPickerColorPaletteBtn, flatColorPickerClearBtn } from '../messages';\nvar defaultColor = 'rgba(255, 255, 255, 1)';\n;\n;\n/**\n * Represents the [KendoReact FlatColorPicker component]({% slug overview_flatcolorpicker %}).\n * Accepts properties of type [FlatColorPickerProps]({% slug api_inputs_flatcolorpickerprops %}). Obtaining the [FlatColorPickerHandle]({% slug api_inputs_flatcolorpickerhandle %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var FlatColorPicker = React.forwardRef(function (props, ref) {\n validatePackage(packageMetadata);\n var target = React.useRef(null);\n var flatColorPickerRef = React.useRef(null);\n var colorGradientRef = React.useRef(null);\n var _a = props.defaultValue, defaultValue = _a === void 0 ? defaultColor : _a, _b = props.showButtons, showButtons = _b === void 0 ? true : _b, _c = props.showPreview, showPreview = _c === void 0 ? true : _c, _d = props.showClearButton, showClearButton = _d === void 0 ? true : _d;\n var _e = React.useState((props.view || 'ColorGradient') === 'ColorGradient'), colorGradientView = _e[0], setColorGradientView = _e[1];\n var _f = React.useState(props.value || defaultValue), colorValue = _f[0], setColorValue = _f[1];\n var _g = React.useState(props.value || defaultValue), prevColor = _g[0], setPrevColor = _g[1];\n var value = props.value !== undefined ? props.value : prevColor;\n React.useEffect(function () {\n setColorValue(props.value || defaultValue);\n }, [props.value, defaultValue]);\n var localizationService = useLocalization();\n var focus = React.useCallback(function () {\n if (target.current) {\n target.current.focus();\n }\n }, [target]);\n React.useImperativeHandle(target, function () { return ({\n element: flatColorPickerRef.current,\n focus: focus,\n props: props,\n value: value\n }); }, [value, focus, props]);\n React.useImperativeHandle(ref, function () { return target.current; });\n var handleViewChange = React.useCallback(function (viewType) {\n if ((viewType === 'ColorGradient' && !colorGradientView) || (viewType === 'ColorPalette' && colorGradientView)) {\n setColorGradientView(!colorGradientView);\n }\n }, [colorGradientView]);\n var handleResetColor = React.useCallback(function (event) {\n setColorValue(defaultValue);\n if (props.onPreviewChange) {\n var ev = {\n value: defaultValue,\n nativeEvent: event.nativeEvent,\n syntheticEvent: event\n };\n props.onPreviewChange.call(undefined, ev);\n }\n }, [defaultValue, props.onPreviewChange]);\n var handleColorChange = React.useCallback(function (event) {\n setColorValue(event.value);\n if (props.onPreviewChange) {\n var ev = {\n value: event.value,\n nativeEvent: event.nativeEvent,\n syntheticEvent: event.syntheticEvent\n };\n props.onPreviewChange.call(undefined, ev);\n }\n }, [props.onPreviewChange]);\n var handleApplyBtnClick = React.useCallback(function (event) {\n setPrevColor(colorValue);\n if (props.onChange) {\n var ev = {\n value: colorValue,\n nativeEvent: event.nativeEvent,\n syntheticEvent: event\n };\n props.onChange.call(undefined, ev);\n }\n }, [colorValue, props.onChange]);\n var handleCancelBtnClick = React.useCallback(function () {\n setPrevColor(defaultColor);\n }, []);\n var handlePrevColorClick = React.useCallback(function (event) {\n setColorValue(prevColor);\n if (props.onPreviewChange) {\n var ev = {\n value: prevColor,\n nativeEvent: event.nativeEvent,\n syntheticEvent: event\n };\n props.onPreviewChange.call(undefined, ev);\n }\n }, [prevColor, props.onPreviewChange]);\n var handleFocus = React.useCallback(function (event) {\n if (flatColorPickerRef.current && event.nativeEvent.target instanceof HTMLInputElement === false) {\n flatColorPickerRef.current.focus();\n }\n }, [flatColorPickerRef]);\n var handleFlatColorPickerBlur = React.useCallback(function (event) {\n var _a;\n var blurred = (!event.relatedTarget || !((_a = flatColorPickerRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.relatedTarget)));\n if (!blurred) {\n return;\n }\n if (!showButtons) {\n setPrevColor(colorValue);\n }\n if (!showButtons && props.onChange) {\n var ev = {\n value: colorValue,\n nativeEvent: event.nativeEvent,\n syntheticEvent: event\n };\n props.onChange.call(undefined, ev);\n }\n }, [colorValue, showButtons, props.onChange]);\n return (React.createElement(\"div\", { id: props.id, role: 'textbox', \"aria-label\": props.ariaLabel, \"aria-labelledby\": props.ariaLabelledBy, \"aria-disabled\": props.disabled ? 'true' : undefined, style: props.style, ref: flatColorPickerRef, tabIndex: getTabIndex(props.tabIndex, props.disabled), className: classNames('k-flatcolorpicker k-coloreditor', {\n 'k-disabled': props.disabled\n }, props.className), onBlur: handleFlatColorPickerBlur },\n React.createElement(React.Fragment, null,\n props.header ||\n React.createElement(\"div\", { className: \"k-coloreditor-header k-hstack\" },\n React.createElement(\"div\", { className: \"k-coloreditor-header-actions k-hstack\" },\n React.createElement(ButtonGroup, { className: \"k-button-group-flat\" },\n React.createElement(Button, { type: \"button\", \"aria-label\": localizationService.toLanguageString(flatColorPickerColorGradientBtn, messages[flatColorPickerColorGradientBtn]), togglable: true, fillMode: 'flat', selected: colorGradientView, onClick: function () { return handleViewChange('ColorGradient'); }, icon: \"droplet-slider\", svgIcon: dropletSliderIcon }),\n React.createElement(Button, { type: \"button\", \"aria-label\": localizationService.toLanguageString(flatColorPickerColorPaletteBtn, messages[flatColorPickerColorPaletteBtn]), togglable: true, fillMode: 'flat', selected: !colorGradientView, onClick: function () { return handleViewChange('ColorPalette'); }, icon: \"palette\", svgIcon: paletteIcon }))),\n React.createElement(\"div\", { className: \"k-spacer\" }),\n React.createElement(\"div\", { className: \"k-coloreditor-header-actions k-hstack\" },\n showClearButton &&\n React.createElement(Button, { type: \"button\", fillMode: 'flat', onClick: handleResetColor, \"aria-label\": localizationService.toLanguageString(flatColorPickerClearBtn, messages[flatColorPickerClearBtn]), icon: \"droplet-slash\", svgIcon: dropletSlashIcon }),\n showPreview &&\n React.createElement(\"div\", { className: \"k-coloreditor-preview k-vstack\" },\n React.createElement(\"span\", { className: \"k-coloreditor-preview-color k-color-preview\", style: { background: colorValue } }),\n React.createElement(\"span\", { className: \"k-coloreditor-current-color k-color-preview\", style: { background: prevColor }, onClick: handlePrevColorClick })))),\n React.createElement(\"div\", { className: \"k-coloreditor-views k-vstack\" }, colorGradientView\n ? React.createElement(ColorGradient, { ref: colorGradientRef, role: \"none\", tabIndex: -1, ariaLabel: undefined, value: colorValue, onChange: handleColorChange, onFocus: handleFocus, opacity: props.opacity, format: props.format })\n : React.createElement(ColorPalette, { ariaDisabled: true, ariaLabelledBy: 'required_label', value: colorValue, onChange: handleColorChange, onFocus: handleFocus })),\n showButtons &&\n React.createElement(\"div\", { className: \"k-coloreditor-footer k-actions k-actions-end\" },\n React.createElement(Button, { type: \"button\", className: \"k-coloreditor-cancel\", onClick: handleCancelBtnClick }, messages[flatColorPickerCancelBtn]),\n React.createElement(Button, { type: \"button\", className: \"k-coloreditor-apply k-primary\", onClick: handleApplyBtnClick }, messages[flatColorPickerApplyBtn])))));\n});\nvar propTypes = {\n id: PropTypes.string,\n style: PropTypes.any,\n className: PropTypes.string,\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n onPreviewChange: PropTypes.func,\n onChange: PropTypes.func,\n opacity: PropTypes.bool,\n format: PropTypes.any,\n tabIndex: PropTypes.number,\n ariaLabel: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n disabled: PropTypes.bool,\n view: PropTypes.any,\n header: PropTypes.any,\n showClearButton: PropTypes.bool,\n showPreview: PropTypes.bool,\n showButtons: PropTypes.bool\n};\nFlatColorPicker.displayName = 'KendoFlatColorPicker';\nFlatColorPicker.propTypes = propTypes;\n","/* eslint-disable */\n/**\n * @hidden\n */\nexport var ResultType;\n(function (ResultType) {\n ResultType[ResultType[\"Literal\"] = 0] = \"Literal\";\n ResultType[ResultType[\"Mask\"] = 1] = \"Mask\";\n // eslint-disable-next-line id-denylist\n ResultType[ResultType[\"Undefined\"] = 2] = \"Undefined\";\n})(ResultType || (ResultType = {}));\n/**\n * @hidden\n */\nvar Result = /** @class */ (function () {\n function Result(value, rest, type) {\n if (type === void 0) { type = ResultType.Undefined; }\n this.value = value;\n this.rest = rest;\n this.type = type;\n }\n //map :: Functor f => f a ~> (a -> b) -> f b\n Result.prototype.map = function (fn) {\n return new Result(fn(this.value), this.rest);\n };\n //chain :: Chain m => m a ~> (a -> m b) -> m b\n Result.prototype.chain = function (fn) {\n return fn(this.value, this.rest);\n };\n Result.prototype.fold = function (s, _ /*we don't need it*/) {\n return s(this.value, this.rest);\n };\n Result.prototype.concat = function (r) {\n return this.map(function (vs, _) { return r.chain(function (v, __) { return vs.concat([v]); }); });\n };\n Result.prototype.toString = function () {\n return \"Result({ value: '\" + this.value + \"', rest: \" + this.rest + \" })\";\n };\n return Result;\n}());\nexport { Result };\n","/* eslint-disable */\n/**\n * @hidden\n */\nvar Stream = /** @class */ (function () {\n function Stream(input, control) {\n if (input === void 0) { input = []; }\n if (control === void 0) { control = []; }\n this.input = input;\n this.control = control;\n this.inputCursor = 0;\n this.controlCursor = 0;\n }\n Stream.prototype.eof = function () {\n return this.inputCursor >= this.input.length;\n };\n // Get the first value from the input.\n Stream.prototype.next = function () {\n return {\n char: this.input[this.inputCursor++],\n control: this.control[this.controlCursor++]\n };\n };\n Stream.prototype.peek = function () {\n return {\n char: this.input[this.inputCursor],\n control: this.control[this.controlCursor]\n };\n };\n Stream.prototype.eat_input = function () {\n this.inputCursor++;\n };\n Stream.prototype.eat_control = function () {\n this.controlCursor++;\n };\n Stream.prototype.eat = function () {\n this.inputCursor++;\n this.controlCursor++;\n };\n return Stream;\n}());\nexport { Stream };\n","/* eslint-disable */\nimport { Result, ResultType } from './result';\nimport { Stream } from './stream';\nvar toArray = function (value) { return (value || '').split(''); };\nvar ESCAPE_CHARACTER = '\\\\';\n/**\n * @hidden\n */\nvar Parser = /** @class */ (function () {\n function Parser(parse) {\n this.parse = parse;\n }\n Parser.prototype.run = function (input, control) {\n if (control === void 0) { control = ''; }\n if (input instanceof Stream) {\n return this.parse(input);\n }\n else {\n return this.parse(new Stream(toArray(input), toArray(control)));\n }\n };\n //map :: Functor f => f a ~> (a -> b) -> f b\n Parser.prototype.map = function (f) {\n var _this = this;\n return new Parser(function (stream) { return _this.parse(stream).map(f); });\n };\n //chain :: Chain m => m a ~> (a -> m b) -> m b\n Parser.prototype.chain = function (f) {\n var _this = this;\n return new Parser(function (stream) { return _this.parse(stream).chain(function (v, s) { return f(v).run(s); }); });\n };\n Parser.prototype.isLiteral = function (c) {\n return this.run(c).type === ResultType.Literal;\n };\n return Parser;\n}());\nexport { Parser };\n/**\n * @hidden\n */\nexport var mask = function (_a) {\n var prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder;\n return function (rule) { return new Parser(function (stream) {\n while (!stream.eof()) {\n var _a = stream.peek(), char = _a.char, control = _a.control;\n if (char === control && control === prompt) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream, ResultType.Mask);\n }\n if (char === promptPlaceholder) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }); };\n};\n/**\n * @hidden\n */\nexport var literal = function (_token) { return new Parser(function (stream) {\n // let {char, control} = stream.peek();\n var char = stream.peek().char;\n if (char === _token) {\n stream.eat();\n return new Result(_token, stream, ResultType.Literal);\n }\n // if (control === _token) {\n // while (!stream.eof() && char !== _token) {\n // stream.eat_input();\n // char = stream.peek().char;\n // }\n // }\n //\n // if (control !== undefined) {\n // stream.eat();\n // }\n return new Result(_token, stream, ResultType.Literal);\n}); };\n/**\n * @hidden\n */\nexport var unmask = function (prompt) { return function (rule) { return new Parser(function (stream) {\n while (!stream.eof()) {\n var _a = stream.peek(), char = _a.char, control = _a.control;\n if (char === prompt && control === prompt) {\n stream.eat();\n return new Result(char, stream);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result('', stream);\n}); }; };\n/**\n * @hidden\n */\nexport var unliteral = function (_token) { return new Parser(function (stream) {\n if (stream.eof()) {\n return new Result('', stream);\n }\n var char = stream.peek().char;\n if (char === _token) {\n stream.eat();\n }\n return new Result(_token, stream);\n}); };\n/**\n * @hidden\n */\nexport var token = function (rules, creator) { return new Parser(function (stream) {\n var char = stream.next().char;\n var rule = rules[char];\n if (char === ESCAPE_CHARACTER) {\n char = stream.next().char;\n return new Result(creator.literal(char), stream);\n }\n if (!rule) {\n return new Result(creator.literal(char), stream);\n }\n return new Result(creator.mask(rule), stream);\n}); };\n/**\n * @hidden\n */\nexport var rawMask = function (_a) {\n var prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder;\n return new Parser(function (stream) {\n var char = stream.next().char;\n if (char === prompt) {\n return new Result(promptPlaceholder, stream);\n }\n return new Result(char, stream);\n });\n};\n/**\n * @hidden\n */\nexport var rawLiteral = function (includeLiterals) { return new Parser(function (stream) {\n var char = stream.next().char;\n if (includeLiterals) {\n return new Result(char, stream);\n }\n return new Result('', stream);\n}); };\n","/* eslint-disable */\nimport { Parser } from './parsers';\nimport { Result } from './result';\n/**\n * @hidden\n */\nvar always = function (value) { return new Parser(function (stream) { return new Result(value, stream); }); };\n/**\n * @hidden\n */\nvar append = function (p1, p2) { return p1.chain(function (vs) { return p2.map(function (v) { return vs.concat([v]); }); }); };\n/**\n * @hidden\n */\nexport var sequence = function (list) { return list.reduce(function (acc, parser) { return append(acc, parser); }, always([])); };\n/**\n * @hidden\n */\nexport var greedy = function (parser) { return new Parser(function (stream) {\n var result = new Result([], stream);\n while (!stream.eof()) {\n result = result.concat(parser.run(stream));\n }\n return result;\n}); };\n","/* eslint-disable */\nimport { greedy, sequence } from './parsing/combinators';\nimport { literal, mask as maskParser, rawLiteral, rawMask, token, unliteral, unmask } from './parsing/parsers';\n/**\n * @hidden\n */\nvar MaskingService = /** @class */ (function () {\n function MaskingService() {\n this.rules = {};\n this.prompt = '_';\n this.mask = '';\n this.promptPlaceholder = ' ';\n this.includeLiterals = false;\n this.maskTokens = [];\n this.unmaskTokens = [];\n this.rawTokens = [];\n this.validationTokens = [];\n }\n MaskingService.prototype.update = function (_a) {\n var _b = _a.mask, mask = _b === void 0 ? '' : _b, _c = _a.prompt, prompt = _c === void 0 ? '' : _c, _d = _a.promptPlaceholder, promptPlaceholder = _d === void 0 ? ' ' : _d, _e = _a.rules, rules = _e === void 0 ? {} : _e, _f = _a.includeLiterals, includeLiterals = _f === void 0 ? false : _f;\n this.mask = mask;\n this.prompt = prompt;\n this.promptPlaceholder = promptPlaceholder;\n this.rules = rules;\n this.includeLiterals = includeLiterals;\n this.tokenize();\n };\n MaskingService.prototype.validationValue = function (maskedValue) {\n if (maskedValue === void 0) { maskedValue = ''; }\n var value = maskedValue;\n sequence(this.validationTokens)\n .run(maskedValue)\n .fold(function (unmasked) {\n value = unmasked.join('');\n });\n return value;\n };\n MaskingService.prototype.rawValue = function (maskedValue) {\n if (maskedValue === void 0) { maskedValue = ''; }\n var value = maskedValue;\n if (!this.rawTokens.length) {\n return value;\n }\n sequence(this.rawTokens)\n .run(maskedValue)\n .fold(function (unmasked) {\n value = unmasked.join('');\n });\n return value;\n };\n /**\n * @hidden\n */\n MaskingService.prototype.maskRaw = function (rawValue) {\n if (rawValue === void 0) { rawValue = ''; }\n var value = rawValue;\n if (!this.maskTokens.length) {\n return value;\n }\n sequence(this.maskTokens)\n .run(rawValue)\n .fold(function (masked) {\n value = masked.join('');\n });\n return value;\n };\n MaskingService.prototype.maskInput = function (input, control, splitPoint) {\n if (input.length < control.length) {\n return this.maskRemoved(input, control, splitPoint);\n }\n return this.maskInserted(input, control, splitPoint);\n };\n MaskingService.prototype.maskInRange = function (pasted, oldValue, start, end) {\n var value = '';\n var selection = end;\n var beforeChange = oldValue.split('').slice(0, start);\n var afterChange = oldValue.split('').slice(end);\n sequence(this.maskTokens.slice(start, end))\n .run(pasted)\n .fold(function (masked) {\n value = beforeChange\n .concat(masked)\n .concat(afterChange)\n .join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n MaskingService.prototype.maskRemoved = function (input, control, splitPoint) {\n var _this = this;\n var value = '';\n var selection = splitPoint;\n var unchanged = input.split('').slice(splitPoint);\n var changed = input.split('').slice(0, splitPoint).join('');\n var take = this.maskTokens.length - (input.length - splitPoint);\n sequence(this.maskTokens.slice(0, take))\n .run(changed, control)\n .fold(function (masked) {\n selection = _this.adjustPosition(masked, selection);\n value = masked.concat(unchanged).join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n MaskingService.prototype.adjustPosition = function (input, selection) {\n var caretChar = input[selection];\n var isLiteral = this.maskTokens[selection].isLiteral(caretChar);\n if (!isLiteral && caretChar !== this.prompt) {\n return selection + 1;\n }\n return selection;\n };\n MaskingService.prototype.maskInserted = function (input, control, splitPoint) {\n var _this = this;\n var value = '';\n var selection = splitPoint;\n var changed = input.slice(0, splitPoint);\n sequence(this.unmaskTokens)\n .run(changed, control)\n .chain(function (unmasked) {\n selection = unmasked.join('').length;\n var unchanged = control.slice(selection);\n return sequence(_this.maskTokens)\n .run(unmasked.join('') + unchanged, control);\n })\n .fold(function (masked) {\n value = masked.join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n Object.defineProperty(MaskingService.prototype, \"maskTokenCreator\", {\n get: function () {\n var _a = this, prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder;\n return {\n literal: function (rule) { return literal(rule); },\n mask: function (rule) { return maskParser({ prompt: prompt, promptPlaceholder: promptPlaceholder })(rule); }\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"unmaskTokenCreator\", {\n get: function () {\n var _this = this;\n return {\n literal: function (rule) { return unliteral(rule); },\n mask: function (rule) { return unmask(_this.prompt)(rule); }\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"rawTokenCreator\", {\n get: function () {\n var _a = this, prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder, includeLiterals = _a.includeLiterals;\n return {\n literal: function (_) { return rawLiteral(includeLiterals); },\n mask: function (_) { return rawMask({ prompt: prompt, promptPlaceholder: promptPlaceholder }); }\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"validationTokenCreator\", {\n get: function () {\n var prompt = this.prompt;\n return {\n literal: function (_) { return rawLiteral(false); },\n mask: function (_) { return rawMask({ prompt: prompt, promptPlaceholder: '' }); }\n };\n },\n enumerable: false,\n configurable: true\n });\n MaskingService.prototype.tokenize = function () {\n var _this = this;\n greedy(token(this.rules, this.maskTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.maskTokens = tokens;\n });\n greedy(token(this.rules, this.unmaskTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.unmaskTokens = tokens;\n });\n greedy(token(this.rules, this.rawTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.rawTokens = tokens;\n });\n greedy(token(this.rules, this.validationTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.validationTokens = tokens;\n });\n };\n return MaskingService;\n}());\nexport { MaskingService };\n","import Class from './class';\n\nvar Observable = (function (Class) {\n function Observable() {\n Class.call(this);\n\n this._events = {};\n }\n\n if ( Class ) Observable.__proto__ = Class;\n Observable.prototype = Object.create( Class && Class.prototype );\n Observable.prototype.constructor = Observable;\n\n Observable.prototype.bind = function bind (eventName, handlers, one) {\n var arguments$1 = arguments;\n var this$1 = this;\n\n var eventNames = getArray(eventName);\n var handlersIsFunction = isFunction(handlers);\n var length = eventNames.length;\n\n if (handlers === undefined) {\n for (var field in eventName) {\n this$1.bind(field, eventName[field]);\n }\n return this;\n }\n\n var loop = function ( idx ) {\n var eventName$1 = eventNames[idx];\n\n var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n if (one) {\n var original = handler;\n handler = function () { // eslint-disable-line no-loop-func\n this$1.unbind(eventName$1, handler);\n original.apply(this$1, arguments$1);\n };\n handler.original = original;\n }\n var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n events.push(handler);\n }\n };\n\n for (var idx = 0; idx < length; idx++) loop( idx );\n\n return this;\n };\n\n Observable.prototype.one = function one (eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n };\n\n Observable.prototype.first = function first (eventName, handlers) {\n var this$1 = this;\n\n var eventNames = getArray(eventName);\n var handlersIsFunction = isFunction(handlers);\n\n for (var idx = 0, length = eventNames.length; idx < length; idx++) {\n var eventName$1 = eventNames[idx];\n\n var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n events.unshift(handler);\n }\n }\n\n return this;\n };\n\n Observable.prototype.trigger = function trigger (eventName, e) {\n var this$1 = this;\n if ( e === void 0 ) e = {};\n\n var events = this._events[eventName];\n\n if (events) {\n var length = events.length;\n\n e.sender = this;\n e._defaultPrevented = false;\n e.preventDefault = preventDefault;\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (var idx = 0; idx < length; idx++) {\n events[idx].call(this$1, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n };\n\n Observable.prototype.unbind = function unbind (eventName, handler) {\n var events = this._events[eventName];\n\n if (eventName === undefined) {\n this._events = {};\n } else if (events) {\n if (handler) {\n for (var idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n this._events[eventName] = [];\n }\n }\n\n return this;\n };\n\n return Observable;\n}(Class));\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction getArray(value) {\n return typeof value === \"string\" ? [ value ] : value;\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nfunction isDefaultPrevented() {\n return this._defaultPrevented === true;\n}\n\nexport default Observable;","export default function elementStyles(element, styles) {\n var result = {};\n var style = window.getComputedStyle(element) || {};\n var stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\n}","import elementStyles from './element-styles';\nimport defined from './defined';\n\nfunction getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n}\n\nexport default function elementSize(element, size) {\n if (size) {\n var width = size.width;\n var height = size.height;\n\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n\n } else {\n var size$1 = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size$1.width, 10),\n height: parseInt(size$1.height, 10)\n };\n }\n}","export default function eventElement(e) {\n if ( e === void 0 ) e = {};\n\n return e.touch ? e.touch.initialTouch : e.target;\n}","import { default as elementStyles } from './element-styles';\n\nexport default function elementPadding(element) {\n var ref = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n}\n","export default function elementOffset(element) {\n var box = element.getBoundingClientRect();\n\n var documentElement = document.documentElement;\n\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n}","import defined from './defined';\n\nexport default function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n}","import Matrix from '../geometry/matrix';\n\nvar matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n}\n\nfunction transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","import Group from '../shapes/group';\nimport Point from '../geometry/point';\nimport { Observable } from '../common';\nimport { eventElement, eventCoordinates, elementPadding, elementScale, elementSize, elementOffset } from '../util';\n\nvar events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n];\n\nvar Surface = (function (Observable) {\n function Surface(element, options) {\n Observable.call(this);\n\n this.options = Object.assign({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n this._click = this._handler(\"click\");\n this._mouseenter = this._handler(\"mouseenter\");\n this._mouseleave = this._handler(\"mouseleave\");\n this._mousemove = this._handler(\"mousemove\");\n\n this._visual = new Group();\n\n elementSize(element, this.options);\n\n this.bind(events, this.options);\n\n this._enableTracking();\n }\n\n if ( Observable ) Surface.__proto__ = Observable;\n Surface.prototype = Object.create( Observable && Observable.prototype );\n Surface.prototype.constructor = Surface;\n\n Surface.prototype.draw = function draw (element) {\n this._visual.children.push(element);\n };\n\n Surface.prototype.clear = function clear () {\n this._visual.children = [];\n };\n\n Surface.prototype.destroy = function destroy () {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n var this$1 = this;\n\n var domNode = eventElement(e);\n var node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this$1.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n return this._visual;\n };\n\n Surface.prototype.getSize = function getSize () {\n return elementSize(this.element);\n };\n\n Surface.prototype.currentSize = function currentSize (size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n };\n\n Surface.prototype.setSize = function setSize (size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n };\n\n Surface.prototype.resize = function resize (force) {\n var size = this.getSize();\n var currentSize = this.currentSize();\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n };\n\n Surface.prototype.size = function size (value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n this._suspendedTracking = true;\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n this._suspendedTracking = false;\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {};\n\n Surface.prototype._resize = function _resize () {};\n\n Surface.prototype._handler = function _handler (eventName) {\n var this$1 = this;\n\n return function (e) {\n var node = this$1.eventTarget(e);\n if (node && !this$1._suspendedTracking) {\n this$1.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n };\n\n Surface.prototype._elementOffset = function _elementOffset () {\n var element = this.element;\n var padding = elementPadding(element);\n var ref = elementOffset(element);\n var left = ref.left;\n var top = ref.top;\n\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n };\n\n Surface.prototype._surfacePoint = function _surfacePoint (e) {\n var offset = this._elementOffset();\n var coord = eventCoordinates(e);\n var x = coord.x - offset.left;\n var y = coord.y - offset.top;\n\n var inverseTransform = elementScale(this.element).invert();\n var point = new Point(\n x,\n y\n ).transform(inverseTransform);\n\n return point;\n };\n\n return Surface;\n}(Observable));\n\nexport default Surface;\n","export default function bindEvents(element, events) {\n for (var eventName in events) {\n var eventNames = eventName.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n}","export default function unbindEvents(element, events) {\n if ( events === void 0 ) events = {};\n\n for (var name in events) {\n var eventNames = name.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n}","export default function promiseAll(promises) {\n return Promise.all(promises);\n}","import { Class } from '../common';\n\nvar BaseNode = (function (Class) {\n function BaseNode(srcElement) {\n Class.call(this);\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n if ( Class ) BaseNode.__proto__ = Class;\n BaseNode.prototype = Object.create( Class && Class.prototype );\n BaseNode.prototype.constructor = BaseNode;\n\n BaseNode.prototype.destroy = function destroy () {\n var this$1 = this;\n\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n this$1.childNodes[i].destroy();\n }\n\n this.parent = null;\n };\n\n BaseNode.prototype.load = function load () {};\n\n BaseNode.prototype.observe = function observe () {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n };\n\n BaseNode.prototype.append = function append (node) {\n this.childNodes.push(node);\n node.parent = this;\n };\n\n BaseNode.prototype.insertAt = function insertAt (node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n };\n\n BaseNode.prototype.remove = function remove (index, count) {\n var this$1 = this;\n\n var end = index + count;\n for (var i = index; i < end; i++) {\n this$1.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n };\n\n BaseNode.prototype.removeSelf = function removeSelf () {\n this.clear();\n this.destroy();\n };\n\n BaseNode.prototype.clear = function clear () {\n this.remove(0, this.childNodes.length);\n };\n\n BaseNode.prototype.invalidate = function invalidate () {\n if (this.parent) {\n this.parent.invalidate();\n }\n };\n\n BaseNode.prototype.geometryChange = function geometryChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.optionsChange = function optionsChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.childrenChange = function childrenChange (e) {\n if (e.action === \"add\") {\n this.load(e.items, e.index);\n } else if (e.action === \"remove\") {\n this.remove(e.index, e.items.length);\n }\n\n this.invalidate();\n };\n\n return BaseNode;\n}(Class));\n\nexport default BaseNode;","var NODE_MAP = {};\n\nexport default NODE_MAP;","import BaseNode from '../core/base-node';\nimport NODE_MAP from './node-map';\nimport { defined } from '../util';\n\nvar Node = (function (BaseNode) {\n function Node(srcElement) {\n BaseNode.call(this, srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n if ( BaseNode ) Node.__proto__ = BaseNode;\n Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n Node.prototype.constructor = Node;\n\n Node.prototype.initClip = function initClip () {\n var clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n };\n\n Node.prototype.clear = function clear () {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n BaseNode.prototype.clear.call(this);\n };\n\n Node.prototype.clearClip = function clearClip () {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n };\n\n Node.prototype.setClip = function setClip (ctx) {\n if (this.clip) {\n ctx.beginPath();\n\n var clipNode = new NODE_MAP[this.clip.nodeType](this.clip);\n clipNode.renderPoints(ctx, this.clip);\n\n ctx.clip(\"evenodd\");\n }\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n BaseNode.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.setTransform = function setTransform (ctx) {\n if (this.srcElement) {\n var transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n };\n\n Node.prototype.loadElements = function loadElements (elements, pos, cors) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, cors);\n\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n }\n };\n\n Node.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n };\n\n Node.prototype.setOpacity = function setOpacity (ctx) {\n if (this.srcElement) {\n var opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n };\n\n Node.prototype.globalAlpha = function globalAlpha (ctx, value) {\n var opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n };\n\n Node.prototype.visible = function visible () {\n var src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n };\n\n return Node;\n}(BaseNode));\n\nexport default Node;","import Node from './node';\nimport traversable from '../mixins/traversable';\n\n\nvar GroupNode = (function (superclass) {\n function GroupNode () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) GroupNode.__proto__ = superclass;\n GroupNode.prototype = Object.create( superclass && superclass.prototype );\n GroupNode.prototype.constructor = GroupNode;\n\n GroupNode.prototype.renderTo = function renderTo (ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n var childNodes = this.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n };\n\n return GroupNode;\n}(traversable(Node, \"childNodes\")));\n\nexport default GroupNode;\n","var now = Date.now || function() {\n return new Date().getTime();\n};\n\nexport default now;\n","var animationFrameProxy = function (callback) {\n var wnd = typeof window !== \"undefined\" ? window : {};\n var animationFrame = wnd.requestAnimationFrame ||\n wnd.webkitRequestAnimationFrame ||\n wnd.mozRequestAnimationFrame ||\n wnd.oRequestAnimationFrame ||\n wnd.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n animationFrameProxy = function (callback) { return animationFrame.call(wnd, callback); };\n animationFrameProxy(callback);\n};\n\nexport default animationFrameProxy;\n","import GroupNode from './group-node';\nimport traversable from '../mixins/traversable';\nimport { animationFrame, throttle } from '../common';\n\n\nvar FRAME_DELAY = 1000 / 60;\n\nvar RootNode = (function (superclass) {\n function RootNode(canvas, size) {\n superclass.call(this);\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n var invalidateHandler = this._invalidate.bind(this);\n this.invalidate = throttle(function () {\n animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n if ( superclass ) RootNode.__proto__ = superclass;\n RootNode.prototype = Object.create( superclass && superclass.prototype );\n RootNode.prototype.constructor = RootNode;\n\n RootNode.prototype.destroy = function destroy () {\n superclass.prototype.destroy.call(this);\n this.canvas = null;\n this.ctx = null;\n };\n\n RootNode.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n };\n\n RootNode.prototype._rescale = function _rescale (scale) {\n var ref = this;\n var canvas = ref.canvas;\n var size = ref.size;\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n };\n\n RootNode.prototype._devicePixelRatio = function _devicePixelRatio () {\n if (typeof window.devicePixelRatio === 'number') {\n return window.devicePixelRatio;\n }\n\n return 1;\n };\n\n RootNode.prototype._invalidate = function _invalidate (options) {\n if (!this.ctx) {\n return;\n }\n\n var fixedScale = options && options.fixedScale;\n var scale = fixedScale ? 1 : this._devicePixelRatio();\n this._rescale(scale);\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n };\n\n return RootNode;\n}(traversable(GroupNode, \"childNodes\")));\n\nexport default RootNode;\n","import now from '../util/now';\n\nexport default function throttle(fn, delay) {\n var lastExecTime = 0;\n var timeout;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n var throttled = function() {\n var elapsed = now() - lastExecTime;\n var args = arguments;\n\n var exec = function() {\n fn.apply(null, args);\n lastExecTime = now();\n };\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n}\n","import { Class } from '../common';\n\nvar QuadRoot = (function (Class) {\n function QuadRoot() {\n Class.call(this);\n\n this.shapes = [];\n }\n\n if ( Class ) QuadRoot.__proto__ = Class;\n QuadRoot.prototype = Object.create( Class && Class.prototype );\n QuadRoot.prototype.constructor = QuadRoot;\n\n QuadRoot.prototype._add = function _add (shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n };\n\n QuadRoot.prototype.pointShapes = function pointShapes (point) {\n var shapes = this.shapes;\n var length = shapes.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n };\n\n QuadRoot.prototype.insert = function insert (shape, bbox) {\n this._add(shape, bbox);\n };\n\n QuadRoot.prototype.remove = function remove (shape) {\n var shapes = this.shapes;\n var length = shapes.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n };\n\n return QuadRoot;\n}(Class));\n\nexport default QuadRoot;","import QuadRoot from './quad-root';\nimport { Rect } from '../geometry';\nimport { append } from '../util';\n\nvar QuadNode = (function (QuadRoot) {\n function QuadNode(rect) {\n QuadRoot.call(this);\n this.children = [];\n this.rect = rect;\n }\n\n if ( QuadRoot ) QuadNode.__proto__ = QuadRoot;\n QuadNode.prototype = Object.create( QuadRoot && QuadRoot.prototype );\n QuadNode.prototype.constructor = QuadNode;\n\n QuadNode.prototype.inBounds = function inBounds (rect) {\n var nodeRect = this.rect;\n var nodeBottomRight = nodeRect.bottomRight();\n var bottomRight = rect.bottomRight();\n var inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n };\n\n QuadNode.prototype.pointShapes = function pointShapes (point) {\n var children = this.children;\n var length = children.length;\n var result = QuadRoot.prototype.pointShapes.call(this, point);\n for (var idx = 0; idx < length; idx++) {\n append(result, children[idx].pointShapes(point));\n }\n return result;\n };\n\n QuadNode.prototype.insert = function insert (shape, bbox) {\n var children = this.children;\n var inserted = false;\n\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n\n return inserted;\n };\n\n QuadNode.prototype._initChildren = function _initChildren () {\n var ref = this;\n var rect = ref.rect;\n var children = ref.children;\n var center = rect.center();\n var halfWidth = rect.width() / 2;\n var halfHeight = rect.height() / 2;\n\n children.push(\n new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n );\n };\n\n return QuadNode;\n}(QuadRoot));\n\nexport default QuadNode;","import QuadRoot from './quad-root';\nimport QuadNode from './quad-node';\nimport { Rect } from '../geometry';\nimport { Class } from '../common';\nimport { append } from '../util';\n\nvar ROOT_SIZE = 3000;\nvar LEVEL_STEP = 10000;\nvar MAX_LEVEL = 75;\n\nvar ShapesQuadTree = (function (Class) {\n function ShapesQuadTree() {\n Class.call(this);\n\n this.initRoots();\n }\n\n if ( Class ) ShapesQuadTree.__proto__ = Class;\n ShapesQuadTree.prototype = Object.create( Class && Class.prototype );\n ShapesQuadTree.prototype.constructor = ShapesQuadTree;\n\n ShapesQuadTree.prototype.initRoots = function initRoots () {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n };\n\n ShapesQuadTree.prototype.clear = function clear () {\n var this$1 = this;\n\n var rootElements = this.rootElements;\n for (var idx = 0; idx < rootElements.length; idx++) {\n this$1.remove(rootElements[idx]);\n }\n this.initRoots();\n };\n\n ShapesQuadTree.prototype.pointShape = function pointShape (point) {\n var sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n var result = this.root.pointShapes(point);\n\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n\n this.assignZindex(result);\n\n result.sort(zIndexComparer);\n for (var idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n };\n\n ShapesQuadTree.prototype.assignZindex = function assignZindex (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var zIndex = 0;\n var levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n var parents = [];\n\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this$1.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n };\n\n ShapesQuadTree.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n };\n\n ShapesQuadTree.prototype.geometryChange = function geometryChange (e) {\n this.bboxChange(e.element);\n };\n\n ShapesQuadTree.prototype.bboxChange = function bboxChange (element) {\n var this$1 = this;\n\n if (element.nodeType === \"Group\") {\n for (var idx = 0; idx < element.children.length; idx++) {\n this$1.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n };\n\n ShapesQuadTree.prototype.add = function add (elements) {\n var elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append(this.rootElements, elementsArray);\n this._insert(elementsArray);\n };\n\n ShapesQuadTree.prototype.childrenChange = function childrenChange (e) {\n var this$1 = this;\n\n if (e.action === \"remove\") {\n for (var idx = 0; idx < e.items.length; idx++) {\n this$1.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n };\n\n ShapesQuadTree.prototype._insert = function _insert (elements) {\n var this$1 = this;\n\n var element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this$1);\n if (element.nodeType === \"Group\") {\n append(elements, element.children);\n } else {\n this$1._insertShape(element);\n }\n }\n };\n\n ShapesQuadTree.prototype._insertShape = function _insertShape (shape) {\n var bbox = shape.bbox();\n if (bbox) {\n var sectors = this.getSectors(bbox);\n var x = sectors[0][0];\n var y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n var rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(\n new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n );\n }\n\n rootMap[x][y].insert(shape, bbox);\n }\n }\n };\n\n ShapesQuadTree.prototype.remove = function remove (element) {\n var this$1 = this;\n\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n var children = element.children;\n for (var idx = 0; idx < children.length; idx++) {\n this$1.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n };\n\n ShapesQuadTree.prototype.inRoot = function inRoot (sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n };\n\n ShapesQuadTree.prototype.getSectors = function getSectors (rect) {\n var bottomRight = rect.bottomRight();\n var bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n var bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n var sectors = [ [], [] ];\n for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n };\n\n return ShapesQuadTree;\n}(Class));\n\nfunction zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n\n return 0;\n}\n\nexport default ShapesQuadTree;","import { defined } from '../util';\n\nvar SurfaceCursor = function SurfaceCursor(surface) {\n surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n this.element = surface.element;\n};\n\nSurfaceCursor.prototype.clear = function clear () {\n this._resetCursor();\n};\n\nSurfaceCursor.prototype.destroy = function destroy () {\n this._resetCursor();\n delete this.element;\n};\n\nSurfaceCursor.prototype._mouseenter = function _mouseenter (e) {\n var cursor = this._shapeCursor(e);\n\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n\n this._setCursor(cursor);\n }\n};\n\nSurfaceCursor.prototype._mouseleave = function _mouseleave () {\n this._resetCursor();\n};\n\nSurfaceCursor.prototype._shapeCursor = function _shapeCursor (e) {\n var shape = e.element;\n\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n\n if (shape) {\n return shape.options.cursor;\n }\n};\n\nSurfaceCursor.prototype._getCursor = function _getCursor () {\n if (this.element) {\n return this.element.style.cursor;\n }\n};\n\nSurfaceCursor.prototype._setCursor = function _setCursor (cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n};\n\nSurfaceCursor.prototype._resetCursor = function _resetCursor () {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n};\n\nexport default SurfaceCursor;\n\n","var DASH_ARRAYS = {\n dot: [ 1.5, 3.5 ],\n dash: [ 4, 3.5 ],\n longdash: [ 8, 3.5 ],\n dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n};\n\nvar SOLID = \"solid\";\nvar BUTT = \"butt\";\n\nexport { DASH_ARRAYS, SOLID, BUTT };","\nexport default function renderPath(ctx, path) {\n var segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n var segment = segments[0];\n var anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (var i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n var prevSeg = segments[i - 1];\n var prevOut = prevSeg.controlOut();\n var controlIn = segment.controlIn();\n\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y,\n controlIn.x, controlIn.y,\n anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n\n if (path.options.closed) {\n ctx.closePath();\n }\n}\n","import Node from './node';\nimport { parseColor } from '../common';\nimport { isTransparent, valueOrDefault } from '../util';\nimport LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport renderPath from './utils/render-path';\n\nfunction addGradientStops(gradient, stops) {\n for (var idx = 0; idx < stops.length; idx++) {\n var stop = stops[idx];\n var color = parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n}\n\nvar PathNode = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) PathNode.__proto__ = Node;\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n\n PathNode.prototype.renderTo = function renderTo (ctx) {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n this.renderPoints(ctx, this.srcElement);\n\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n\n this.setFill(ctx);\n this.setStroke(ctx);\n\n ctx.restore();\n };\n\n PathNode.prototype.setFill = function setFill (ctx) {\n var fill = this.srcElement.options.fill;\n var hasFill = false;\n\n if (fill) {\n if (fill.nodeType === \"Gradient\") {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n\n hasFill = true;\n }\n }\n\n return hasFill;\n };\n\n PathNode.prototype.setGradientFill = function setGradientFill (ctx, fill) {\n var bbox = this.srcElement.rawBBox();\n var gradient;\n\n if (fill instanceof LinearGradient) {\n var start = fill.start();\n var end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n var center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n\n addGradientStops(gradient, fill.stops);\n\n ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n\n ctx.restore();\n };\n\n PathNode.prototype.setStroke = function setStroke (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n\n return true;\n }\n };\n\n PathNode.prototype.dashType = function dashType () {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n };\n\n PathNode.prototype.setLineDash = function setLineDash (ctx) {\n var dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n };\n\n PathNode.prototype.setLineCap = function setLineCap (ctx) {\n var dashType = this.dashType();\n var stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n };\n\n PathNode.prototype.setLineJoin = function setLineJoin (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n };\n\n PathNode.prototype.renderPoints = function renderPoints (ctx, path) {\n renderPath(ctx, path);\n };\n\n return PathNode;\n}(Node));\n\nexport default PathNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nvar ArcNode = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ArcNode.__proto__ = PathNode;\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n\n ArcNode.prototype.renderPoints = function renderPoints (ctx) {\n var path = this.srcElement.toPath();\n renderPath(ctx, path);\n };\n\n return ArcNode;\n}(PathNode));\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nvar CircleNode = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) CircleNode.__proto__ = PathNode;\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n\n CircleNode.prototype.renderPoints = function renderPoints (ctx) {\n var ref = this.srcElement.geometry();\n var center = ref.center;\n var radius = ref.radius;\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n };\n\n return CircleNode;\n}(PathNode));\n\nexport default CircleNode;\n","import PathNode from './path-node';\nimport { createPromise } from '../util';\n\nvar ImageNode = (function (PathNode) {\n function ImageNode(srcElement, cors) {\n PathNode.call(this, srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n var img = this.img = new Image();\n var src = srcElement.src();\n\n if (cors && !(/^data:/i.test(src))) {\n img.crossOrigin = cors;\n }\n\n if (src) {\n img.src = src;\n }\n\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n }\n\n if ( PathNode ) ImageNode.__proto__ = PathNode;\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n\n ImageNode.prototype.renderTo = function renderTo (ctx) {\n if (this.loading.state() === \"resolved\") {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n\n this.drawImage(ctx);\n\n ctx.restore();\n }\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n PathNode.prototype.optionsChange.call(this, e);\n }\n };\n\n ImageNode.prototype.onLoad = function onLoad () {\n this.loading.resolve();\n this.invalidate();\n };\n\n ImageNode.prototype.onError = function onError () {\n this.loading.reject(new Error(\n \"Unable to load image '\" + this.img.src +\n \"'. Check for connectivity and verify CORS headers.\"\n ));\n };\n\n ImageNode.prototype.drawImage = function drawImage (ctx) {\n var rect = this.srcElement.rect();\n var topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n };\n\n return ImageNode;\n}(PathNode));\n\nexport default ImageNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nvar MultiPathNode = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n\n MultiPathNode.prototype.renderPoints = function renderPoints (ctx) {\n var paths = this.srcElement.paths;\n for (var i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n };\n\n return MultiPathNode;\n}(PathNode));\n\nexport default MultiPathNode;\n","import { Path } from '../shapes/path';\nimport PathNode from './path-node';\n\nvar RectNode = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) RectNode.__proto__ = PathNode;\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n\n RectNode.prototype.renderPoints = function renderPoints (ctx) {\n var geometry = this.srcElement.geometry();\n var ref = geometry.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n var origin = geometry.origin;\n var size = geometry.size;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n } else {\n PathNode.prototype.renderPoints.call(this, ctx, Path.fromRect(geometry));\n }\n };\n\n return RectNode;\n}(PathNode));\n\nexport default RectNode;\n","import PathNode from './path-node';\n\nvar TextNode = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) TextNode.__proto__ = PathNode;\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n\n TextNode.prototype.renderTo = function renderTo (ctx) {\n var text = this.srcElement;\n var pos = text.position();\n var size = text.measure();\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n ctx.restore();\n };\n\n return TextNode;\n}(PathNode));\n\n\nexport default TextNode;\n","import BaseSurface from '../core/surface';\nimport { createPromise, promiseAll, bindEvents, elementSize, unbindEvents } from '../util';\nimport RootNode from './root-node';\nimport ShapesQuadTree from '../search/shapes-quad-tree';\nimport SurfaceCursor from './surface-cursor';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\n\nvar Surface = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this.element.innerHTML = this._template(this);\n\n var canvas = this.element.firstElementChild;\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n\n var size = elementSize(element);\n\n canvas.width = size.width;\n canvas.height = size.height;\n\n this._rootElement = canvas;\n\n this._root = new RootNode(canvas, size);\n\n this._mouseTrackHandler = this._trackMouse.bind(this);\n\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n var prototypeAccessors = { type: { configurable: true } };\n\n prototypeAccessors.type.get = function () {\n return \"canvas\";\n };\n\n Surface.prototype.destroy = function destroy () {\n BaseSurface.prototype.destroy.call(this);\n\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n\n if (this._searchTree) {\n this._searchTree.clear();\n }\n\n if (this._cursor) {\n this._cursor.clear();\n }\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n if (this._searchTree) {\n var point = this._surfacePoint(e);\n var shape = this._searchTree.pointShape(point);\n return shape;\n }\n };\n\n Surface.prototype.image = function image () {\n var ref = this;\n var root = ref._root;\n var rootElement = ref._rootElement;\n var loadingStates = [];\n\n root.traverse(function (childNode) {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n var promise = createPromise();\n var resolveDataURL = function () {\n root._invalidate({ fixedScale: true });\n\n try {\n var data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n return promise;\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n BaseSurface.prototype.suspendTracking.call(this);\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n BaseSurface.prototype.resumeTracking.call(this);\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n var childNodes = this._root.childNodes;\n var rootElements = [];\n for (var idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n };\n\n Surface.prototype._resize = function _resize () {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n\n this._root.size = this._size;\n this._root.invalidate();\n };\n\n Surface.prototype._template = function _template () {\n return \"\";\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n BaseSurface.prototype._enableTracking.call(this);\n };\n\n Surface.prototype._trackMouse = function _trackMouse (e) {\n if (this._suspendedTracking) {\n return;\n }\n\n var shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n var currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger(\"mouseleave\", {\n element: currentShape,\n originalEvent: e,\n type: \"mouseleave\"\n });\n }\n\n if (shape && currentShape !== shape) {\n this.trigger(\"mouseenter\", {\n element: shape,\n originalEvent: e,\n type: \"mouseenter\"\n });\n }\n\n this.trigger(\"mousemove\", {\n element: shape,\n originalEvent: e,\n type: \"mousemove\"\n });\n\n this._currentShape = shape;\n } else if (shape) {\n this.trigger(\"click\", {\n element: shape,\n originalEvent: e,\n type: \"click\"\n });\n }\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n}(BaseSurface));\n\nexport default Surface;\n","import { defined } from '../../util';\n\nexport default function renderAttr(name, value) {\n return (defined(value) && value !== null) ? (\" \" + name + \"=\\\"\" + value + \"\\\" \") : \"\";\n}","import renderAttr from './render-attribute';\n\nexport default function renderAllAttr(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n}","import { defined } from '../../util';\n\nexport default function renderStyle(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n}","var NODE_MAP = {};\n\nexport default NODE_MAP;","var SVG_NS = \"http://www.w3.org/2000/svg\";\nvar NONE = \"none\";\nvar POINT_DIGITS = 3;\n\nexport { SVG_NS, NONE, POINT_DIGITS };","import { SVG_NS } from '../constants';\n\nvar applyStyle = function (styleString, element) { return styleString.split(';').filter(function (s) { return s !== ''; }).forEach(function (s) {\n var parts = s.split(':');\n element.style[parts[0].trim()] = parts[1].trim();\n }); };\n\nvar styleAttr = 'data-style';\nvar replaceStyleAttr = function (html) { return html.replace(/\\sstyle=/g, ' ' + styleAttr + '='); };\nvar restoreStyleAttr = function (container) {\n Array.from(container.querySelectorAll('[' + styleAttr +']')).forEach(function (element) {\n var styleString = element.getAttribute(styleAttr);\n element.removeAttribute(styleAttr);\n applyStyle(styleString, element);\n });\n};\n\nvar renderSVG = function(container, svg) {\n container.innerHTML = replaceStyleAttr(svg);\n restoreStyleAttr(container);\n};\n\nif (typeof document !== \"undefined\") {\n var testFragment = \"\";\n var testContainer = document.createElement(\"div\");\n var hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n var parser = new DOMParser();\n var chartDoc = parser.parseFromString(replaceStyleAttr(svg), \"text/xml\");\n restoreStyleAttr(chartDoc);\n var importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n}\n\nexport default renderSVG;\n","import BaseNode from '../core/base-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport renderStyle from './utils/render-style';\nimport NODE_MAP from './node-map';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS, NONE } from './constants';\nimport { support } from '../common';\nimport { defined } from '../util';\n\nvar TRANSFORM = \"transform\";\nvar DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n};\n\nfunction isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\"));\n}\n\nfunction baseUrl() {\n var base = document.getElementsByTagName(\"base\")[0];\n var href = document.location.href;\n var url = \"\";\n\n if (base && !(support.browser || {}).msie) {\n var hashIndex = href.indexOf(\"#\");\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n\n url = href;\n }\n\n return url;\n}\n\nvar Node = (function (BaseNode) {\n function Node(srcElement, options) {\n BaseNode.call(this, srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n if ( BaseNode ) Node.__proto__ = BaseNode;\n Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n Node.prototype.constructor = Node;\n\n Node.prototype.destroy = function destroy () {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n BaseNode.prototype.destroy.call(this);\n };\n\n Node.prototype.load = function load (elements, pos) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1.options);\n\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n var element = this$1.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n };\n\n Node.prototype.root = function root () {\n var root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n };\n\n Node.prototype.attachTo = function attachTo (domElement, pos) {\n var container = document.createElement(\"div\");\n renderSVG(container,\n \"\" +\n this.render() +\n \"\"\n );\n\n var element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n };\n\n Node.prototype.setElement = function setElement (element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n var nodes = this.childNodes;\n for (var i = 0; i < nodes.length; i++) {\n var childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n };\n\n Node.prototype.clear = function clear () {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n };\n\n Node.prototype.removeSelf = function removeSelf () {\n if (this.element) {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n BaseNode.prototype.removeSelf.call(this);\n };\n\n Node.prototype.template = function template () {\n return this.renderChildren();\n };\n\n Node.prototype.render = function render () {\n return this.template();\n };\n\n Node.prototype.renderChildren = function renderChildren () {\n var nodes = this.childNodes;\n var output = \"\";\n\n for (var i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"visible\") {\n this.css(\"display\", value ? \"\" : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === \"opacity\") {\n this.attr(\"opacity\", value);\n } else if (field === \"cursor\") {\n this.css(\"cursor\", value);\n } else if (field === \"id\") {\n if (value) {\n this.attr(\"id\", value);\n } else {\n this.removeAttr(\"id\");\n }\n }\n\n BaseNode.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.accessibilityOptionsChange = function accessibilityOptionsChange (e) {\n var field = e.field;\n var value = e.value;\n \n \n if (field === \"role\") {\n if (value) {\n this.attr(\"role\", value);\n } else {\n this.removeAttr(\"role\");\n }\n } else if (field === \"ariaLabel\") {\n if (value) {\n this.attr(\"aria-label\", value);\n } else {\n this.removeAttr(\"aria-label\");\n }\n } else if (field === \"ariaRoleDescription\") {\n if (value) {\n this.attr(\"aria-roledescription\", value);\n } else {\n this.removeAttr(\"aria-roledescription\");\n }\n } else if (field === \"ariaChecked\") {\n if (defined(value)) {\n this.attr(\"aria-checked\", value);\n } else {\n this.removeAttr(\"aria-checked\");\n }\n } else if (field === \"className\") {\n this.className(value);\n }\n };\n\n Node.prototype.attr = function attr (name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n };\n\n Node.prototype.allAttr = function allAttr (attrs) {\n var this$1 = this;\n\n for (var i = 0; i < attrs.length; i++) {\n this$1.attr(attrs[i][0], attrs[i][1]);\n }\n };\n\n Node.prototype.toggleAttr = function toggleAttr (name, value) {\n if (value) {\n this.attr(name, value);\n } else {\n this.removeAttr(name);\n }\n };\n\n Node.prototype.css = function css (name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n };\n\n Node.prototype.allCss = function allCss (styles) {\n var this$1 = this;\n\n for (var i = 0; i < styles.length; i++) {\n this$1.css(styles[i][0], styles[i][1]);\n }\n };\n\n Node.prototype.className = function className (value) {\n var this$1 = this;\n\n if (this.element) {\n (ref = this.element.classList).remove.apply(ref, this.element.classList);\n value.split(\" \").forEach(function (item) {\n this$1.element.classList.add(item);\n }); \n }\n var ref;\n };\n\n Node.prototype.removeAttr = function removeAttr (name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n };\n\n Node.prototype.mapTransform = function mapTransform (transform) {\n var attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n };\n\n Node.prototype.renderTransform = function renderTransform () {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n };\n\n Node.prototype.transformChange = function transformChange (value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n };\n\n Node.prototype.mapStyle = function mapStyle () {\n var options = this.srcElement.options;\n var style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n };\n\n Node.prototype.renderStyle = function renderStyle$1 () {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n };\n\n Node.prototype.renderOpacity = function renderOpacity () {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n };\n\n Node.prototype.renderId = function renderId () {\n return renderAttr(\"id\", this.srcElement.options.id);\n };\n\n Node.prototype.renderClassName = function renderClassName () {\n return renderAttr(\"class\", this.srcElement.options.className);\n };\n\n Node.prototype.renderRole = function renderRole () {\n return renderAttr(\"role\", this.srcElement.options.role);\n };\n\n Node.prototype.renderAriaLabel = function renderAriaLabel () {\n return renderAttr(\"aria-label\", this.srcElement.options.ariaLabel);\n };\n\n Node.prototype.renderAriaRoleDescription = function renderAriaRoleDescription () {\n return renderAttr(\"aria-roledescription\", this.srcElement.options.ariaRoleDescription);\n };\n\n Node.prototype.renderAriaChecked = function renderAriaChecked () {\n return renderAttr(\"aria-checked\", this.srcElement.options.ariaChecked);\n };\n\n Node.prototype.createDefinitions = function createDefinitions () {\n var srcElement = this.srcElement;\n var definitions = this.definitions;\n if (srcElement) {\n var options = srcElement.options;\n var hasDefinitions;\n\n for (var field in DefinitionMap) {\n var definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: \"add\",\n definitions: definitions\n });\n }\n }\n };\n\n Node.prototype.definitionChange = function definitionChange (e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n };\n\n Node.prototype.updateDefinition = function updateDefinition (type, value) {\n var definitions = this.definitions;\n var current = definitions[type];\n var attr = DefinitionMap[type];\n var definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: \"remove\",\n definitions: definition\n });\n delete definitions[type];\n }\n\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: \"add\",\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n };\n\n Node.prototype.clearDefinitions = function clearDefinitions () {\n var definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n };\n\n Node.prototype.renderDefinitions = function renderDefinitions () {\n return renderAllAttr(this.mapDefinitions());\n };\n\n Node.prototype.mapDefinitions = function mapDefinitions () {\n var this$1 = this;\n\n var definitions = this.definitions;\n var attrs = [];\n\n for (var field in definitions) {\n attrs.push([ DefinitionMap[field], this$1.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n };\n\n Node.prototype.refUrl = function refUrl (id) {\n var skipBaseHref = (this.options || {}).skipBaseHref;\n var baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n var base = skipBaseHref ? '' : baseHref;\n return (\"url(\" + base + \"#\" + id + \")\");\n };\n\n Node.prototype.baseUrl = function baseUrl$1 () {\n return baseUrl();\n };\n\n return Node;\n}(BaseNode));\n\nexport default Node;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar GradientStopNode = (function (Node) {\n function GradientStopNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) GradientStopNode.__proto__ = Node;\n GradientStopNode.prototype = Object.create( Node && Node.prototype );\n GradientStopNode.prototype.constructor = GradientStopNode;\n\n GradientStopNode.prototype.template = function template () {\n return (\"\");\n };\n\n GradientStopNode.prototype.renderOffset = function renderOffset () {\n return renderAttr(\"offset\", this.srcElement.offset());\n };\n\n GradientStopNode.prototype.mapStyle = function mapStyle () {\n var srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n };\n\n GradientStopNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"offset\") {\n this.attr(e.field, e.value);\n } else if (e.field === \"color\" || e.field === \"opacity\") {\n this.css(\"stop-\" + e.field, e.value);\n }\n };\n\n return GradientStopNode;\n}(Node));\n\nexport default GradientStopNode;","import GradientStopNode from './gradient-stop-node';\nimport BaseNode from '../core/base-node';\nimport Node from './node';\nimport renderAllAttr from './utils/render-all-attributes';\n\nvar GradientNode = (function (Node) {\n function GradientNode(srcElement) {\n Node.call(this, srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n if ( Node ) GradientNode.__proto__ = Node;\n GradientNode.prototype = Object.create( Node && Node.prototype );\n GradientNode.prototype.constructor = GradientNode;\n\n GradientNode.prototype.loadStops = function loadStops () {\n var this$1 = this;\n\n var stops = this.srcElement.stops;\n var element = this.element;\n\n for (var idx = 0; idx < stops.length; idx++) {\n var stopNode = new GradientStopNode(stops[idx]);\n this$1.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n };\n\n GradientNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"gradient.stops\") {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === \"gradient\") {\n this.allAttr(this.mapCoordinates());\n }\n };\n\n GradientNode.prototype.renderCoordinates = function renderCoordinates () {\n return renderAllAttr(this.mapCoordinates());\n };\n\n GradientNode.prototype.mapSpace = function mapSpace () {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n };\n\n return GradientNode;\n}(Node));\n\nexport default GradientNode;","import GradientNode from './gradient-node';\n\nvar LinearGradientNode = (function (GradientNode) {\n function LinearGradientNode () {\n GradientNode.apply(this, arguments);\n }\n\n if ( GradientNode ) LinearGradientNode.__proto__ = GradientNode;\n LinearGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n LinearGradientNode.prototype.constructor = LinearGradientNode;\n\n LinearGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n LinearGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var start = srcElement.start();\n var end = srcElement.end();\n var attrs = [\n [ \"x1\", start.x ],\n [ \"y1\", start.y ],\n [ \"x2\", end.x ],\n [ \"y2\", end.y ],\n this.mapSpace()\n ];\n\n return attrs;\n };\n\n return LinearGradientNode;\n}(GradientNode));\n\nexport default LinearGradientNode;","import GradientNode from './gradient-node';\n\nvar RadialGradientNode = (function (GradientNode) {\n function RadialGradientNode () {\n GradientNode.apply(this, arguments);\n }\n\n if ( GradientNode ) RadialGradientNode.__proto__ = GradientNode;\n RadialGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n RadialGradientNode.prototype.constructor = RadialGradientNode;\n\n RadialGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n RadialGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var center = srcElement.center();\n var radius = srcElement.radius();\n var attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n };\n\n return RadialGradientNode;\n}(GradientNode));\n\nexport default RadialGradientNode;","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar ClipNode = (function (Node) {\n function ClipNode(srcElement) {\n Node.call(this);\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n if ( Node ) ClipNode.__proto__ = Node;\n ClipNode.prototype = Object.create( Node && Node.prototype );\n ClipNode.prototype.constructor = ClipNode;\n\n ClipNode.prototype.renderClipRule = function renderClipRule () {\n return renderAttr(\"clip-rule\", \"evenodd\");\n };\n ClipNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n return ClipNode;\n}(Node));\n\nexport default ClipNode;","import LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport LinearGradientNode from './linear-gradient-node';\nimport RadialGradientNode from './radial-gradient-node';\nimport Node from './node';\nimport ClipNode from './clip-node';\n\nvar DefinitionNode = (function (Node) {\n function DefinitionNode() {\n Node.call(this);\n this.definitionMap = {};\n }\n\n if ( Node ) DefinitionNode.__proto__ = Node;\n DefinitionNode.prototype = Object.create( Node && Node.prototype );\n DefinitionNode.prototype.constructor = DefinitionNode;\n\n DefinitionNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n };\n\n DefinitionNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n DefinitionNode.prototype.definitionChange = function definitionChange (e) {\n var definitions = e.definitions;\n var action = e.action;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n };\n\n DefinitionNode.prototype.createDefinition = function createDefinition (type, item) {\n var nodeType;\n if (type === \"clip\") {\n nodeType = ClipNode;\n } else if (type === \"fill\") {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n }\n }\n return new nodeType(item);\n };\n\n DefinitionNode.prototype.addDefinitions = function addDefinitions (definitions) {\n var this$1 = this;\n\n for (var field in definitions) {\n this$1.addDefinition(field, definitions[field]);\n }\n };\n\n DefinitionNode.prototype.addDefinition = function addDefinition (type, srcElement) {\n var ref = this;\n var element = ref.element;\n var definitionMap = ref.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n if (!mapItem) {\n var node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n };\n\n DefinitionNode.prototype.removeDefinitions = function removeDefinitions (definitions) {\n var this$1 = this;\n\n for (var field in definitions) {\n this$1.removeDefinition(definitions[field]);\n }\n };\n\n DefinitionNode.prototype.removeDefinition = function removeDefinition (srcElement) {\n var definitionMap = this.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n };\n\n return DefinitionNode;\n}(Node));\n\nexport default DefinitionNode;","import BaseNode from '../core/base-node';\nimport Node from './node';\nimport DefinitionNode from './definition-node';\n\nvar RootNode = (function (Node) {\n function RootNode(options) {\n Node.call(this);\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n if ( Node ) RootNode.__proto__ = Node;\n RootNode.prototype = Object.create( Node && Node.prototype );\n RootNode.prototype.constructor = RootNode;\n\n RootNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n };\n\n RootNode.prototype.clear = function clear () {\n BaseNode.prototype.clear.call(this);\n };\n\n RootNode.prototype.template = function template () {\n return this.defs.render() + this.renderChildren();\n };\n\n RootNode.prototype.definitionChange = function definitionChange (e) {\n this.defs.definitionChange(e);\n };\n\n return RootNode;\n}(Node));\n\nexport default RootNode;","import Node from './node';\nimport { defined, isTransparent } from '../util';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport { NONE, POINT_DIGITS } from './constants';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\n\nvar ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n};\n\nvar PathNode = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) PathNode.__proto__ = Node;\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n\n PathNode.prototype.geometryChange = function geometryChange () {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n };\n\n PathNode.prototype.optionsChange = function optionsChange (e) {\n switch (e.field) {\n case \"fill\":\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr(\"fill\");\n }\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n\n case \"stroke\":\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr(\"stroke\");\n }\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n var name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n\n this.accessibilityOptionsChange(e);\n\n Node.prototype.optionsChange.call(this, e);\n };\n\n PathNode.prototype.content = function content () {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n };\n\n PathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || undefined;\n };\n\n PathNode.prototype.mapStroke = function mapStroke (stroke) {\n var attrs = [];\n\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([ \"stroke\", stroke.color ]);\n attrs.push([ \"stroke-width\", stroke.width ]);\n attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n if (defined(stroke.opacity)) {\n attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n }\n\n if (defined(stroke.dashType)) {\n attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n }\n } else {\n attrs.push([ \"stroke\", NONE ]);\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderStroke = function renderStroke () {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n };\n\n PathNode.prototype.renderDashType = function renderDashType (stroke) {\n var dashType = stroke.dashType;\n var width = stroke.width; if ( width === void 0 ) width = 1;\n\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n var result = [];\n\n for (var i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n };\n\n PathNode.prototype.renderLinecap = function renderLinecap (stroke) {\n var dashType = stroke.dashType;\n var lineCap = stroke.lineCap;\n\n return (dashType && dashType !== \"solid\") ? BUTT : lineCap;\n };\n\n PathNode.prototype.mapFill = function mapFill (fill) {\n var attrs = [];\n if (!(fill && fill.nodeType === \"Gradient\")) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([ \"fill\", fill.color ]);\n\n if (defined(fill.opacity)) {\n attrs.push([ \"fill-opacity\", fill.opacity ]);\n }\n } else {\n attrs.push([ \"fill\", NONE ]);\n }\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderFill = function renderFill () {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n };\n\n PathNode.prototype.template = function template () {\n return \"\";\n };\n\n return PathNode;\n}(Node));\n\nexport default PathNode;\n","import { POINT_DIGITS } from './constants';\nimport PathNode from './path-node';\n\nvar ArcNode = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ArcNode.__proto__ = PathNode;\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n\n ArcNode.prototype.renderData = function renderData () {\n return this.srcElement.toPath().toString(POINT_DIGITS);\n };\n\n return ArcNode;\n}(PathNode));\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nvar CircleNode = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) CircleNode.__proto__ = PathNode;\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n\n CircleNode.prototype.geometryChange = function geometryChange () {\n var center = this.center();\n this.attr(\"cx\", center.x);\n this.attr(\"cy\", center.y);\n this.attr(\"r\", this.radius());\n this.invalidate();\n };\n\n CircleNode.prototype.center = function center () {\n return this.srcElement.geometry().center;\n };\n\n CircleNode.prototype.radius = function radius () {\n return this.srcElement.geometry().radius;\n };\n\n CircleNode.prototype.template = function template () {\n return \"\";\n };\n\n return CircleNode;\n}(PathNode));\n\nexport default CircleNode;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar GroupNode = (function (Node) {\n function GroupNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) GroupNode.__proto__ = Node;\n GroupNode.prototype = Object.create( Node && Node.prototype );\n GroupNode.prototype.constructor = GroupNode;\n\n GroupNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n GroupNode.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"transform\") {\n this.transformChange(value);\n }\n\n this.accessibilityOptionsChange(e);\n\n Node.prototype.optionsChange.call(this, e);\n };\n\n return GroupNode;\n}(Node));\n\nexport default GroupNode;\n","var ampRegExp = /&/g;\nvar ltRegExp = //g;\n\nexport default function htmlEncode(value) {\n return String(value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n}","import PathNode from './path-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport { htmlEncode } from '../common';\n\nvar ImageNode = (function (PathNode) {\n function ImageNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ImageNode.__proto__ = PathNode;\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n\n ImageNode.prototype.geometryChange = function geometryChange () {\n this.allAttr(this.mapPosition());\n this.invalidate();\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n PathNode.prototype.optionsChange.call(this, e);\n };\n\n ImageNode.prototype.mapPosition = function mapPosition () {\n var rect = this.srcElement.rect();\n var tl = rect.topLeft();\n\n return [\n [ \"x\", tl.x ],\n [ \"y\", tl.y ],\n [ \"width\", rect.width() + \"px\" ],\n [ \"height\", rect.height() + \"px\" ]\n ];\n };\n\n ImageNode.prototype.renderPosition = function renderPosition () {\n return renderAllAttr(this.mapPosition());\n };\n\n ImageNode.prototype.mapSource = function mapSource (encode) {\n var src = this.srcElement.src();\n\n if (encode) {\n src = htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n };\n\n ImageNode.prototype.renderSource = function renderSource () {\n return renderAllAttr(this.mapSource(true));\n };\n\n ImageNode.prototype.template = function template () {\n return \"\" +\n \"\";\n };\n\n return ImageNode;\n}(PathNode));\n\nexport default ImageNode;\n","import { POINT_DIGITS } from './constants';\nimport PathNode from './path-node';\n\nvar MultiPathNode = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n\n MultiPathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || 'undefined';\n };\n\n return MultiPathNode;\n}(PathNode));\n\nexport default MultiPathNode;\n","import PathNode from './path-node';\n\nvar RectNode = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) RectNode.__proto__ = PathNode;\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n\n RectNode.prototype.geometryChange = function geometryChange () {\n var geometry = this.srcElement.geometry();\n this.attr(\"x\", geometry.origin.x);\n this.attr(\"y\", geometry.origin.y);\n this.attr(\"width\", geometry.size.width);\n this.attr(\"height\", geometry.size.height);\n this.attr(\"rx\", geometry.cornerRadius[0]);\n this.attr(\"ry\", geometry.cornerRadius[1]);\n this.invalidate();\n };\n\n RectNode.prototype.size = function size () {\n return this.srcElement.geometry().size;\n };\n\n RectNode.prototype.origin = function origin () {\n return this.srcElement.geometry().origin;\n };\n\n RectNode.prototype.rx = function rx () {\n return this.srcElement.geometry().cornerRadius[0];\n };\n\n RectNode.prototype.ry = function ry () {\n return this.srcElement.geometry().cornerRadius[1];\n };\n\n RectNode.prototype.template = function template () {\n return \"\";\n };\n\n return RectNode;\n}(PathNode));\n\nexport default RectNode;\n","import PathNode from './path-node';\nimport renderStyle from './utils/render-style';\nimport renderAttr from './utils/render-attribute';\nimport { htmlEncode, support } from '../common';\nimport { normalizeText } from '../text-metrics';\n\nvar ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\nfunction decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n var element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, function (match) {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n}\n\nif (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n}\n\nvar TextNode = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) TextNode.__proto__ = PathNode;\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n\n TextNode.prototype.geometryChange = function geometryChange () {\n var pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n };\n\n TextNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n PathNode.prototype.content.call(this, this.srcElement.content());\n }\n\n PathNode.prototype.optionsChange.call(this, e);\n };\n\n TextNode.prototype.mapStyle = function mapStyle (encode) {\n var style = PathNode.prototype.mapStyle.call(this, encode);\n var font = this.srcElement.options.font;\n\n if (encode) {\n font = htmlEncode(font);\n }\n\n style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n return style;\n };\n\n TextNode.prototype.pos = function pos () {\n var pos = this.srcElement.position();\n var size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n };\n\n TextNode.prototype.renderContent = function renderContent () {\n var content = this.srcElement.content();\n content = decodeEntities(content);\n content = htmlEncode(content);\n\n return normalizeText(content);\n };\n\n TextNode.prototype.renderTextAnchor = function renderTextAnchor () {\n var anchor;\n\n if ((this.options || {}).rtl && !(support.browser.msie || support.browser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n };\n\n TextNode.prototype.template = function template () {\n return \"\" + (this.renderContent()) + \"\";\n };\n\n return TextNode;\n}(PathNode));\n\nexport default TextNode;\n","import BaseSurface from '../core/surface';\nimport RootNode from './root-node';\nimport Group from '../shapes/group';\nimport transform from '../geometry/transform';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS } from './constants';\nimport { bindEvents, unbindEvents, elementStyles } from '../util';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\nvar RTL = 'rtl';\n\nfunction alignToScreen(element) {\n var ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n var left = - ctm.e % 1;\n var top = - ctm.f % 1;\n var style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n}\n\nvar Surface = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this._root = new RootNode(Object.assign({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG(this.element, this._template(''));\n\n this._rootElement = this.element.firstElementChild;\n this._rootElement.style.width = '100%';\n this._rootElement.style.height = '100%';\n this._rootElement.style.overflow = 'hidden';\n\n alignToScreen(this._rootElement);\n\n this._root.attachTo(this._rootElement);\n\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n\n this.resize();\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n var prototypeAccessors = { type: { configurable: true } };\n\n prototypeAccessors.type.get = function () {\n return \"svg\";\n };\n\n Surface.prototype.destroy = function destroy () {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n\n BaseSurface.prototype.destroy.call(this);\n };\n\n Surface.prototype.translate = function translate (offset) {\n var viewBox = (Math.round(offset.x)) + \" \" + (Math.round(offset.y)) + \" \" + (this._size.width) + \" \" + (this._size.height);\n\n this._offset = offset;\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ]);\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n };\n\n Surface.prototype.svg = function svg () {\n return \"\" + this._template();\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n var ref = this;\n var visual = ref._visual;\n var offset = ref._offset;\n\n if (offset) {\n var wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n };\n\n Surface.prototype._resize = function _resize () {\n if (this._offset) {\n this.translate(this._offset);\n }\n };\n\n Surface.prototype._template = function _template (svgStyles) {\n var styles = typeof svgStyles === 'string' ? svgStyles :\n \"style='width: 100%; height: 100%; overflow: hidden;' \";\n return (\"\" + (this._root.render()) + \"\");\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n}(BaseSurface));\n\nexport default Surface;\n","import { Class, logToConsole } from './common';\nimport SVGSurface from './svg/surface';\nimport CanvasSurface from './canvas/surface';\n\nvar instance;\nvar support;\n\nvar hasDocument = function () { return typeof document !== \"undefined\"; };\n\nvar supportsCanvas = function () { return hasDocument() &&\n document.createElement(\"canvas\").getContext; };\n\nvar supportsSVG = function () { return hasDocument() &&\n document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"); };\n\nvar SurfaceFactory = (function (Class) {\n function SurfaceFactory() {\n Class.call(this);\n\n this._items = [ {\n name: \"svg\",\n type: SVGSurface\n }, {\n name: \"canvas\",\n type: CanvasSurface\n } ];\n }\n\n if ( Class ) SurfaceFactory.__proto__ = Class;\n SurfaceFactory.prototype = Object.create( Class && Class.prototype );\n SurfaceFactory.prototype.constructor = SurfaceFactory;\n\n var staticAccessors = { support: { configurable: true },current: { configurable: true } };\n\n staticAccessors.support.get = function () {\n if (!support) {\n support = {\n canvas: supportsCanvas(),\n svg: supportsSVG()\n };\n }\n\n return support;\n };\n\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new SurfaceFactory();\n }\n\n return instance;\n };\n\n SurfaceFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match = items[0];\n\n if (options && options.type) {\n var preferred = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n\n logToConsole(\n \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n \"- The browser does not support SVG and Canvas. User agent: \" + (navigator.userAgent));\n };\n\n Object.defineProperties( SurfaceFactory, staticAccessors );\n\n return SurfaceFactory;\n}(Class));\n\nexport default SurfaceFactory;\n\n","/* eslint-disable no-console */\n\nexport default function logToConsole(message) {\n var console = window.console;\n\n if (typeof(console) != \"undefined\" && console.log) {\n console.log(message);\n }\n}","import BaseSurface from './core/surface';\nimport SurfaceFactory from './surface-factory';\n\nvar Surface = (function (BaseSurface) {\n function Surface () {\n BaseSurface.apply(this, arguments);\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n var staticAccessors = { support: { configurable: true } };\n\n staticAccessors.support.get = function () {\n return SurfaceFactory.support;\n };\n\n Surface.create = function create (element, options) {\n return SurfaceFactory.current.create(element, options);\n };\n\n Object.defineProperties( Surface, staticAccessors );\n\n return Surface;\n}(BaseSurface));\n\nexport default Surface;\n\n","import { drawing } from '@progress/kendo-drawing';\nvar _a = drawing.util, elementOffset = _a.elementOffset, limitValue = _a.limitValue;\nexport { elementOffset, limitValue };\n","import { exportImage, geometry, Group, MultiPath, Path, Image, Surface, } from '@progress/kendo-drawing';\nimport { elementOffset, limitValue } from '../common';\nvar Point = geometry.Point, Rect = geometry.Rect, transform = geometry.transform;\nvar noop = function () { };\nvar DECIMAL_DIGITS = 3;\nvar DEFAULT_COLOR = '#000';\nvar DEFAULT_BACKGROUND_COLOR = '#fff';\nvar DEFAULT_PRECISION = 1;\nvar DEFAULT_SAMPLING_RATE = 200; // Updates per second\nvar DEFAULT_STROKE_WIDTH = 1;\nvar DEFAULT_WIDTH = 750;\nvar DEFAULT_HEIGHT = 250;\nvar DEFAULT_SCALE = 1;\n// Export images at maximized scale (3x) and 2x pixel density to cover HiDPI screens.\nvar DEFAULT_EXPORT_SCALE = 6;\nvar SignaturePad = /** @class */ (function () {\n function SignaturePad(element, options) {\n if (options === void 0) { options = {}; }\n this.element = element;\n this.lastMoveTime = 0;\n this.options = Object.assign({\n scale: DEFAULT_SCALE,\n precision: DEFAULT_PRECISION,\n samplingRate: DEFAULT_SAMPLING_RATE,\n smooth: options.smooth !== false,\n color: options.color || DEFAULT_COLOR,\n backgroundColor: options.backgroundColor || DEFAULT_BACKGROUND_COLOR,\n strokeWidth: DEFAULT_STROKE_WIDTH,\n onChange: noop,\n onDraw: noop,\n onDrawEnd: noop\n }, options);\n this.pathOptions = {\n stroke: {\n color: this.options.color,\n width: this.options.strokeWidth,\n lineCap: 'round',\n lineJoin: 'round'\n }\n };\n this.initSurface();\n this.attachEvents();\n }\n SignaturePad.prototype.destroy = function () {\n this.detachEvents();\n };\n SignaturePad.prototype.clear = function () {\n this.rootGroup.clear();\n this.path = null;\n };\n Object.defineProperty(SignaturePad.prototype, \"isDrawing\", {\n get: function () {\n return Boolean(this.points);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SignaturePad.prototype, \"pathData\", {\n get: function () {\n var _a;\n return (_a = this.path) === null || _a === void 0 ? void 0 : _a.toString(DECIMAL_DIGITS);\n },\n set: function (value) {\n this.clear();\n this.path = MultiPath.parse(value, this.pathOptions);\n this.rootGroup.append(this.path);\n },\n enumerable: false,\n configurable: true\n });\n SignaturePad.prototype.loadImage = function (data, size) {\n if (size === void 0) { size = []; }\n if (!data) {\n this.clear();\n return;\n }\n var _a = this.size, width = _a[0], height = _a[1];\n var contentWidth = width / this.options.scale;\n var contentHeight = height / this.options.scale;\n var importWidth = size[0] || contentWidth * DEFAULT_EXPORT_SCALE;\n var importHeight = size[1] || contentHeight * DEFAULT_EXPORT_SCALE;\n var scaleX = contentWidth / importWidth;\n var scaleY = contentHeight / importHeight;\n var scale = Math.min(scaleX, scaleY);\n var img = new Image(data, new geometry.Rect([0, 0], [importWidth, importHeight]));\n img.transform(transform().scale(scale, scale));\n this.clear();\n this.rootGroup.append(img);\n };\n SignaturePad.prototype.exportImage = function (options) {\n var _a;\n var _b = this.size, width = _b[0], height = _b[1];\n var contentWidth = width / this.options.scale;\n var contentHeight = height / this.options.scale;\n var exportWidth = (options === null || options === void 0 ? void 0 : options.width) || contentWidth * DEFAULT_EXPORT_SCALE;\n var exportHeight = (options === null || options === void 0 ? void 0 : options.height) || contentHeight * DEFAULT_EXPORT_SCALE;\n var scaleX = exportWidth / contentWidth;\n var scaleY = exportHeight / contentHeight;\n var scale = Math.min(scaleX, scaleY);\n var exportRect = new Rect([0, 0], [exportWidth, exportHeight]);\n var exportGroup = new Group({\n clip: Path.fromRect(exportRect)\n });\n var contentGroup = new Group({\n transform: transform().scale(scale, scale)\n });\n var frame = Path.fromRect(exportRect, {\n fill: {\n color: this.options.backgroundColor\n }\n });\n exportGroup.append(frame);\n exportGroup.append(contentGroup);\n (_a = contentGroup.children).push.apply(_a, this.rootGroup.children);\n return exportImage(exportGroup, Object.assign({\n width: exportWidth,\n height: exportHeight\n }, options));\n };\n SignaturePad.prototype.resize = function () {\n this.surface.resize(true);\n };\n SignaturePad.prototype.setOptions = function (options) {\n Object.assign(this.options, options);\n this.pathOptions.stroke.color = this.options.color;\n this.pathOptions.stroke.width = this.options.strokeWidth;\n if (this.path) {\n this.path.options.set('stroke.color', this.options.color);\n this.path.options.set('stroke.width', this.options.strokeWidth);\n }\n this.background.options.set('fill.color', this.options.backgroundColor);\n };\n SignaturePad.prototype.initSurface = function () {\n this.surface = Surface.create(this.element, { type: 'canvas' });\n this.element.style.touchAction = 'none';\n var scale = this.options.scale;\n this.rootGroup = new Group({\n transform: transform().scale(scale, scale)\n });\n // The signature is not resizable, store initial dimensions.\n var width = this.element.offsetWidth || DEFAULT_WIDTH;\n var height = this.element.offsetHeight || DEFAULT_HEIGHT;\n this.size = [width, height];\n this.background = Path.fromRect(new Rect([0, 0], this.size), {\n fill: {\n color: this.options.backgroundColor\n }\n });\n this.surface.draw(this.background);\n this.surface.draw(this.rootGroup);\n };\n SignaturePad.prototype.attachEvents = function () {\n this.onPointerDown = this.onPointerDown.bind(this);\n this.onPointerMove = this.onPointerMove.bind(this);\n this.onPointerUp = this.onPointerUp.bind(this);\n this.element.addEventListener('pointerdown', this.onPointerDown);\n this.element.addEventListener('pointermove', this.onPointerMove);\n this.element.addEventListener('pointerup', this.onPointerUp);\n };\n SignaturePad.prototype.detachEvents = function () {\n this.element.removeEventListener('pointerdown', this.onPointerDown);\n this.element.removeEventListener('pointermove', this.onPointerMove);\n this.element.removeEventListener('pointerup', this.onPointerUp);\n };\n SignaturePad.prototype.touchPoint = function (e) {\n var offset = elementOffset(this.element);\n var pageX = e.pageX;\n var pageY = e.pageY;\n var scale = 1 / this.options.scale;\n return new Point(pageX - offset.left, pageY - offset.top).scale(scale, scale);\n };\n SignaturePad.prototype.onPointerDown = function (e) {\n if (this.options.readonly || !e.isPrimary || !isMainButton(e)) {\n return;\n }\n if (!this.path) {\n this.path = new MultiPath(this.pathOptions);\n this.rootGroup.append(this.path);\n }\n this.options.onDraw();\n this.element.setPointerCapture(e.pointerId);\n var point = this.touchPoint(e);\n this.points = [point];\n this.path.moveTo(point);\n };\n SignaturePad.prototype.onPointerMove = function (e) {\n if (!this.points || !e.isPrimary) {\n return;\n }\n var now = (new Date()).getTime();\n var elapsed = now - this.lastMoveTime;\n var minTimeDelta = 1000 / limitValue(this.options.samplingRate, 1, 10000);\n if (elapsed < minTimeDelta) {\n return;\n }\n else {\n this.lastMoveTime = now;\n }\n var point = this.touchPoint(e);\n var lastPoint = this.points[this.points.length - 1];\n var minDelta = 1 / limitValue(this.options.precision, 0.01, 100);\n if (point.distanceTo(lastPoint) < minDelta) {\n return;\n }\n this.points.push(point);\n this.path.lineTo(point);\n };\n SignaturePad.prototype.onPointerUp = function (e) {\n if (!e.isPrimary || !this.path || !this.points || this.options.readonly) {\n return;\n }\n if (this.options.smooth) {\n var segments = Path.curveFromPoints(this.points);\n this.path.paths.splice(this.path.paths.length - 1, 1, segments);\n }\n this.points = null;\n this.options.onDrawEnd();\n this.options.onChange(this.pathData);\n };\n return SignaturePad;\n}());\nexport { SignaturePad };\nfunction isMainButton(e) {\n return typeof (e.button) !== 'number' || e.button === 0;\n}\n","import Surface from './surface';\nimport { transform } from '../geometry';\nimport Group from '../shapes/group';\n\nexport default function exportImage(group, options) {\n var defaults = {\n width: \"800px\", height: \"600px\",\n cors: \"Anonymous\"\n };\n\n var exportRoot = group;\n var bbox = group.clippedBBox();\n\n\n if (bbox) {\n var origin = bbox.getOrigin();\n exportRoot = new Group();\n exportRoot.transform(transform().translate(-origin.x, -origin.y));\n exportRoot.children.push(group);\n\n var size = bbox.getSize();\n defaults.width = size.width + \"px\";\n defaults.height = size.height + \"px\";\n }\n\n var surfaceOptions = Object.assign(defaults, options);\n\n var container = document.createElement(\"div\");\n var style = container.style;\n\n style.display = \"none\";\n style.width = surfaceOptions.width;\n style.height = surfaceOptions.height;\n document.body.appendChild(container);\n\n var surface = new Surface(container, surfaceOptions);\n surface.suspendTracking();\n surface.draw(exportRoot);\n\n var promise = surface.image();\n var destroy = function () {\n surface.destroy();\n document.body.removeChild(container);\n };\n promise.then(destroy, destroy);\n\n return promise;\n}","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { SignaturePad } from '@progress/kendo-inputs-common';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { classNames, createPropsContext, dispatchEvent, getTabIndex, kendoThemeMaps, Keys, noop, usePropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { Dialog } from '@progress/kendo-react-dialogs';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport * as PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { messages, signatureClear, signatureMaximize, signatureMinimize } from '../messages';\nimport { packageMetadata } from '../package-metadata';\nimport { hasParent } from './utils';\nimport { hyperlinkOpenIcon, xIcon } from '@progress/kendo-svg-icons';\nvar DEFAULT_WIDTH = 250;\nvar DEFAULT_HEIGHT = 84;\nvar DEFAULT_POPUP_SCALE = 3;\nvar DEFAULT_EXPORT_SCALE = 2;\nvar DEFAULT_COLOR = '#000000';\nvar DEFAULT_BACKGROUND_COLOR = '#ffffff';\n/**\n * @hidden\n */\nvar isControlled = function (prop) {\n return prop !== undefined;\n};\n/**\n * Represents the PropsContext of the `Signature` component.\n * Used for global configuration of all `Signature` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var SignaturePropsContext = createPropsContext();\n/**\n * Represents the [KendoReact Signature component]({% slug overview_signature %}).\n */\nexport var Signature = React.forwardRef(function (directProps, target) {\n var _a;\n validatePackage(packageMetadata);\n var props = usePropsContext(SignaturePropsContext, directProps);\n var localizationService = useLocalization();\n var elementRef = React.useRef(null);\n var canvasRef = React.useRef(null);\n var dialogRef = React.useRef(null);\n var minimizeButtonRef = React.useRef(null);\n var maximizeButtonRef = React.useRef(null);\n var _b = React.useState(), instance = _b[0], setInstance = _b[1];\n var _c = React.useState(false), focused = _c[0], setFocused = _c[1];\n var _d = React.useState(false), isDrawing = _d[0], setIsDrawing = _d[1];\n var _e = React.useState(), stateValue = _e[0], setStateValue = _e[1];\n var _f = React.useState(), popupValue = _f[0], setPopupValue = _f[1];\n var isValueControlled = isControlled(props.value);\n var value = isValueControlled ? props.value : stateValue;\n var _g = React.useState(false), stateOpen = _g[0], setStateOpen = _g[1];\n var isOpenControlled = isControlled(props.open);\n var open = isOpenControlled ? props.open : stateOpen;\n var showMaximize = !(props.maximized || isDrawing || !props.maximizable || props.disabled);\n var showMinimize = props.maximized && !isDrawing;\n var isEmpty = !(props.value || stateValue);\n var showClear = !(isEmpty || isDrawing || props.readOnly || props.disabled);\n var maximizeTitle = localizationService.toLanguageString(signatureMaximize, messages[signatureMaximize]);\n var minimizeTitle = localizationService.toLanguageString(signatureMinimize, messages[signatureMinimize]);\n var clearTitle = localizationService.toLanguageString(signatureClear, messages[signatureClear]);\n var popupScale = props.popupScale || DEFAULT_POPUP_SCALE;\n var exportScale = props.exportScale || DEFAULT_EXPORT_SCALE;\n var onValueChange = function (nextValue) {\n setStateValue(nextValue);\n if (props.onChange) {\n props.onChange({ value: nextValue });\n }\n };\n var onDialogChange = function (e) {\n instance === null || instance === void 0 ? void 0 : instance.loadImage(e.value);\n onValueChange(e.value);\n };\n React.useEffect(function () {\n if (props.value !== stateValue) {\n setStateValue(props.value);\n instance === null || instance === void 0 ? void 0 : instance.loadImage(props.value);\n }\n }, [props.value]);\n var reset = function () {\n instance === null || instance === void 0 ? void 0 : instance.clear();\n onValueChange();\n };\n var setOpen = React.useCallback(function (nextOpen) {\n if (!isOpenControlled) {\n setStateOpen(nextOpen);\n }\n }, [isOpenControlled]);\n var onDialogClose = function (event) {\n var _a, _b;\n onMinimizeClick(event);\n (_b = (((_a = maximizeButtonRef.current) === null || _a === void 0 ? void 0 : _a.element) || canvasRef.current)) === null || _b === void 0 ? void 0 : _b.focus();\n };\n var colorGetter = React.useCallback(function () {\n var defaultColor = DEFAULT_COLOR;\n if (!props.color && typeof document !== 'undefined' && elementRef.current) {\n defaultColor = getComputedStyle(elementRef.current).color;\n }\n return props.color || defaultColor;\n }, [props.color]);\n var backgroundColorGetter = React.useCallback(function () {\n var defaultBackgroundColor = DEFAULT_BACKGROUND_COLOR;\n if (!props.backgroundColor && typeof document !== 'undefined' && elementRef.current) {\n defaultBackgroundColor = getComputedStyle(elementRef.current).backgroundColor;\n }\n return props.backgroundColor || defaultBackgroundColor;\n }, [props.backgroundColor]);\n var getOptions = function () {\n return {\n scale: props.maximized ? props.popupScale : 1,\n color: colorGetter(),\n backgroundColor: backgroundColorGetter(),\n strokeWidth: props.strokeWidth,\n smooth: props.smooth,\n readonly: props.readOnly\n };\n };\n var exportImage = function (exportSize) { return __awaiter(void 0, void 0, void 0, function () {\n var width, height;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n width = exportSize.width, height = exportSize.height;\n return [4 /*yield*/, (instance === null || instance === void 0 ? void 0 : instance.exportImage({\n width: width * exportScale,\n height: height * exportScale\n }))];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n }); };\n React.useEffect(function () {\n var canvas = canvasRef.current;\n var pad = new SignaturePad(canvas, getOptions());\n if (value) {\n pad.loadImage(value);\n }\n setInstance(pad);\n return function () { return pad.destroy(); };\n }, []);\n React.useEffect(function () {\n instance === null || instance === void 0 ? void 0 : instance.setOptions({\n onChange: function () { return __awaiter(void 0, void 0, void 0, function () { var _a; return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = onValueChange;\n return [4 /*yield*/, exportImage(elementSize())];\n case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()])];\n }\n }); }); },\n onDraw: function () { return setIsDrawing(true); },\n onDrawEnd: function () { return setIsDrawing(false); }\n });\n }, [instance]);\n React.useLayoutEffect(function () { return instance === null || instance === void 0 ? void 0 : instance.setOptions(getOptions()); }, [props.readOnly, props.color, props.backgroundColor, props.strokeWidth, props.smooth]);\n React.useEffect(function () {\n var _a, _b;\n var overlay = (_b = (_a = dialogRef.current) === null || _a === void 0 ? void 0 : _a.element) === null || _b === void 0 ? void 0 : _b.querySelector('.k-overlay');\n if (!overlay) {\n return;\n }\n var onOverlayClick = function () { return setOpen(false); };\n overlay.addEventListener('click', onOverlayClick);\n return function () { return overlay.removeEventListener('click', onOverlayClick); };\n }, [open]);\n React.useEffect(function () {\n if (!open || typeof document === 'undefined') {\n return;\n }\n var onDocumentKeydown = function (e) {\n if (e.keyCode === Keys.esc) {\n setOpen(false);\n }\n };\n document.addEventListener('keydown', onDocumentKeydown);\n return function () { return document.removeEventListener('keydown', onDocumentKeydown); };\n }, [open]);\n React.useEffect(function () {\n var _a, _b;\n if (!props.maximized) {\n return;\n }\n (_b = (_a = minimizeButtonRef.current) === null || _a === void 0 ? void 0 : _a.element) === null || _b === void 0 ? void 0 : _b.focus();\n }, []);\n var focusElement = React.useCallback(function () { var _a; return (_a = canvasRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, []);\n var valueGetter = React.useCallback(function () { return props.value; }, [props.value]);\n var nameGetter = React.useCallback(function () { return props.name; }, [props.name]);\n var requiredGetter = React.useCallback(function () { return props.required; }, [props.required]);\n var validityGetter = React.useCallback(function () {\n var customError = props.validationMessage !== undefined;\n var currentValue = valueGetter();\n var valueMissing = !currentValue;\n var valid = props.valid !== undefined ?\n props.valid :\n (!requiredGetter() || !valueMissing);\n return {\n customError: customError,\n valid: valid,\n valueMissing: valueMissing\n };\n }, [props.validationMessage, props.valid, valueGetter, requiredGetter]);\n var validityStylesGetter = React.useCallback(function () {\n return props.validityStyles;\n }, [props.validityStyles]);\n var propsGetter = React.useCallback(function () {\n return props;\n }, [props]);\n var getImperativeHandle = React.useCallback(function () {\n var options = {\n element: elementRef.current,\n focus: focusElement\n };\n Object.defineProperty(options, 'name', { get: nameGetter });\n Object.defineProperty(options, 'value', { get: valueGetter });\n Object.defineProperty(options, 'validity', { get: validityGetter });\n Object.defineProperty(options, 'validityStyles', { get: validityStylesGetter });\n Object.defineProperty(options, 'required', { get: requiredGetter });\n Object.defineProperty(options, 'props', { get: propsGetter });\n Object.defineProperty(options, 'color', { get: colorGetter });\n Object.defineProperty(options, 'backgroundColor', { get: backgroundColorGetter });\n return options;\n }, [nameGetter, valueGetter, validityGetter, validityStylesGetter, requiredGetter, focusElement, propsGetter, colorGetter, backgroundColorGetter]);\n React.useImperativeHandle(target, getImperativeHandle);\n var onFocus = React.useCallback(function (event) {\n if (focused || props.maximized) {\n return;\n }\n setFocused(true);\n dispatchEvent(props.onFocus, event, getImperativeHandle(), {});\n }, [focused, props.onFocus, getImperativeHandle]);\n var onBlur = React.useCallback(function (event) {\n var insideWrapper = hasParent(event.relatedTarget, elementRef.current);\n if (insideWrapper) {\n return;\n }\n setFocused(false);\n dispatchEvent(props.onBlur, event, getImperativeHandle(), {});\n }, [focused, props.onBlur, getImperativeHandle]);\n var onMaximizeClick = React.useCallback(function (event) { return __awaiter(void 0, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = setPopupValue;\n return [4 /*yield*/, exportImage(popupSize())];\n case 1:\n _a.apply(void 0, [_b.sent()]);\n setOpen(true);\n dispatchEvent(props.onOpen, event, getImperativeHandle(), {});\n return [2 /*return*/];\n }\n });\n }); }, [open, isOpenControlled, props.onOpen, props.value, stateValue, getImperativeHandle]);\n var onMinimizeClick = React.useCallback(function (event) {\n setOpen(false);\n dispatchEvent(props.onClose, event, getImperativeHandle(), {});\n }, [open, isOpenControlled, props.onClose, getImperativeHandle]);\n var onClear = function () {\n reset();\n focusElement();\n };\n var elementSize = function () {\n var _a, _b;\n var width = props.width || ((_a = elementRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) || DEFAULT_WIDTH;\n var height = props.height || ((_b = elementRef.current) === null || _b === void 0 ? void 0 : _b.offsetHeight) || DEFAULT_HEIGHT;\n return {\n width: width,\n height: height\n };\n };\n var popupSize = function () {\n var _a = elementSize(), width = _a.width, height = _a.height;\n return {\n width: width * popupScale,\n height: height * popupScale\n };\n };\n var isValid = !validityStylesGetter() || validityGetter().valid;\n return (React.createElement(\"div\", { ref: elementRef, dir: props.dir, style: __assign({ width: props.width, height: props.height }, props.style), className: classNames('k-input', 'k-signature', (_a = {\n 'k-signature-maximized': props.maximized\n },\n _a[\"k-signature-\".concat(kendoThemeMaps.sizeMap[props.size] || props.size)] = props.size,\n _a[\"k-input-\".concat(props.fillMode)] = props.fillMode,\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[props.rounded] || props.rounded)] = props.rounded,\n _a['k-invalid'] = !isValid,\n _a['k-required'] = props.required,\n _a['k-disabled'] = props.disabled,\n _a['k-focus'] = focused,\n _a), props.className), onFocus: onFocus, onBlur: onBlur },\n React.createElement(\"div\", { className: 'k-signature-canvas', ref: canvasRef, tabIndex: getTabIndex(props.tabIndex, props.disabled), role: \"img\", id: props.id, \"aria-label\": props.ariaLabel, \"aria-labelledby\": props.ariaLabelledBy, \"aria-describedby\": props.ariaDescribedBy, \"aria-disabled\": props.disabled ? 'true' : undefined }),\n React.createElement(\"div\", { className: 'k-signature-actions k-signature-actions-top' },\n showMaximize && (React.createElement(Button, { className: 'k-signature-action k-signature-maximize', ref: maximizeButtonRef, icon: 'hyperlink-open', svgIcon: hyperlinkOpenIcon, fillMode: 'flat', size: props.size, onClick: onMaximizeClick, \"aria-label\": maximizeTitle, title: maximizeTitle })),\n showMinimize && (React.createElement(Button, { className: 'k-signature-action k-signature-minimize k-rotate-180', ref: minimizeButtonRef, icon: 'hyperlink-open', svgIcon: hyperlinkOpenIcon, fillMode: 'flat', size: props.size, onClick: onMinimizeClick, \"aria-label\": minimizeTitle, title: minimizeTitle }))),\n !props.hideLine && (React.createElement(\"div\", { className: 'k-signature-line', style: { zIndex: 2, pointerEvents: 'none' } })),\n React.createElement(\"div\", { className: 'k-signature-actions k-signature-actions-bottom' }, showClear && (React.createElement(Button, { className: 'k-signature-action k-signature-clear', icon: 'x', svgIcon: xIcon, fillMode: 'flat', size: props.size, onClick: onClear, \"aria-label\": clearTitle, title: clearTitle }))),\n open && (React.createElement(Dialog, { ref: dialogRef },\n React.createElement(Signature, __assign({}, props, popupSize(), { value: popupValue, maximized: true, exportScale: (1 / popupScale) * exportScale, open: false, onChange: onDialogChange, onClose: onDialogClose }))))));\n});\nSignature.propTypes = {\n value: PropTypes.string,\n width: PropTypes.number,\n height: PropTypes.number,\n tabIndex: PropTypes.number,\n dir: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaLabel: PropTypes.string,\n readOnly: PropTypes.bool,\n disabled: PropTypes.bool,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline'])\n};\nSignature.displayName = 'KendoSignature';\nSignature.defaultProps = {\n strokeWidth: 1,\n smooth: false,\n popupScale: DEFAULT_POPUP_SCALE,\n exportScale: DEFAULT_EXPORT_SCALE,\n maximizable: true,\n disabled: false,\n required: false,\n validityStyles: true,\n onChange: function (_) { return noop; },\n onFocus: function (_) { return noop; },\n onBlur: function (_) { return noop; },\n onOpen: function (_) { return noop; },\n onClose: function (_) { return noop; },\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid'\n};\n","/**\n * @hidden\n */\nexport function hasParent(element, parent) {\n var current = element;\n while (current && current !== parent) {\n current = current.parentNode;\n }\n return current ? true : false;\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact InputClearValue component.\n */\nexport var InputClearValue = React.forwardRef(function (props, ref) {\n var target = React.useRef(null);\n var element = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({ element: element.current }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n return (React.createElement(\"span\", __assign({}, props, { className: classNames('k-clear-value', props.className) })));\n});\nInputClearValue.displayName = 'KendoReactInputClearValue';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact InputSeparator component.\n */\nexport var InputSeparator = React.forwardRef(function (props, ref) {\n var target = React.useRef(null);\n var element = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({ element: element.current }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n return (React.createElement(\"span\", __assign({}, props, { className: classNames('k-input-separator', props.className) })));\n});\nInputSeparator.displayName = 'KendoReactInputSeparator';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the KendoReact InputSuffix component.\n */\nexport var InputSuffix = React.forwardRef(function (props, ref) {\n var target = React.useRef(null);\n var element = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({ element: element.current }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n return (React.createElement(\"span\", __assign({}, props, { className: classNames('k-input-suffix', props.className) })));\n});\nInputSuffix.displayName = 'KendoReactInputSuffix';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { classNames, IconWrap } from '@progress/kendo-react-common';\nimport * as React from 'react';\n/**\n * Represents the KendoReact InputValidationIcon component.\n */\nexport var InputValidationIcon = React.forwardRef(function (props, ref) {\n return React.createElement(IconWrap, __assign({ ref: ref }, props, { className: classNames('k-input-validation-icon', props.className) }));\n});\nInputValidationIcon.displayName = 'KendoReactInputValidationIcon';\n","/**\n * @hidden\n */\nexport var ResultType;\n(function (ResultType) {\n ResultType[ResultType[\"Literal\"] = 0] = \"Literal\";\n ResultType[ResultType[\"Mask\"] = 1] = \"Mask\";\n ResultType[ResultType[\"Undefined\"] = 2] = \"Undefined\";\n})(ResultType || (ResultType = {}));\n/**\n * @hidden\n */\nvar Result = /** @class */ (function () {\n function Result(value, rest, type) {\n if (type === void 0) { type = ResultType.Undefined; }\n this.value = value;\n this.rest = rest;\n this.type = type;\n }\n // map :: Functor f => f a ~> (a -> b) -> f b\n Result.prototype.map = function (fn) {\n return new Result(fn(this.value), this.rest);\n };\n // chain :: Chain m => m a ~> (a -> m b) -> m b\n Result.prototype.chain = function (fn) {\n return fn(this.value, this.rest);\n };\n Result.prototype.fold = function (s, _ /* we don't need it*/) {\n return s(this.value, this.rest);\n };\n Result.prototype.concat = function (r) {\n return this.map(function (vs, _) { return r.chain(function (v, __) { return vs.concat([v]); }); });\n };\n Result.prototype.toString = function () {\n return \"Result({ value: '\".concat(this.value, \"', rest: \").concat(this.rest, \" })\");\n };\n return Result;\n}());\nexport { Result };\n","/**\n * @hidden\n */\nvar Stream = /** @class */ (function () {\n function Stream(input, control) {\n if (input === void 0) { input = []; }\n if (control === void 0) { control = []; }\n this.input = input;\n this.control = control;\n this.inputCursor = 0;\n this.controlCursor = 0;\n }\n Stream.prototype.eof = function () {\n return this.inputCursor >= this.input.length;\n };\n // Get the first value from the input.\n Stream.prototype.next = function () {\n return {\n char: this.input[this.inputCursor++],\n control: this.control[this.controlCursor++]\n };\n };\n Stream.prototype.peek = function () {\n return {\n char: this.input[this.inputCursor],\n control: this.control[this.controlCursor]\n };\n };\n Stream.prototype.eat_input = function () {\n this.inputCursor++;\n };\n Stream.prototype.eat_control = function () {\n this.controlCursor++;\n };\n Stream.prototype.eat = function () {\n this.inputCursor++;\n this.controlCursor++;\n };\n return Stream;\n}());\nexport { Stream };\n","import { Result, ResultType } from './result';\nimport { Stream } from './stream';\nvar toArray = function (value) { return (value || '').split(''); };\nvar ESCAPE_CHARACTER = '\\\\';\n/**\n * @hidden\n */\nvar Parser = /** @class */ (function () {\n function Parser(parse) {\n this.parse = parse;\n }\n Parser.prototype.run = function (input, control) {\n if (control === void 0) { control = ''; }\n if (input instanceof Stream) {\n return this.parse(input);\n }\n else {\n return this.parse(new Stream(toArray(input), toArray(control)));\n }\n };\n // map :: Functor f => f a ~> (a -> b) -> f b\n Parser.prototype.map = function (f) {\n var _this = this;\n return new Parser(function (stream) { return _this.parse(stream).map(f); });\n };\n // chain :: Chain m => m a ~> (a -> m b) -> m b\n Parser.prototype.chain = function (f) {\n var _this = this;\n return new Parser(function (stream) { return _this.parse(stream).chain(function (v, s) { return f(v).run(s); }); });\n };\n Parser.prototype.isLiteral = function (c) {\n return this.run(c).type === ResultType.Literal;\n };\n return Parser;\n}());\nexport { Parser };\n/**\n * @hidden\n */\nexport var mask = function (args) { return function (rule) { return new Parser(function (stream) {\n var prompt = args.prompt, promptPlaceholder = args.promptPlaceholder;\n while (!stream.eof()) {\n var _a = stream.peek(), char = _a.char, control = _a.control;\n if (char === control && control === prompt) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream, ResultType.Mask);\n }\n if (char === promptPlaceholder) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n}); }; };\n/**\n * @hidden\n */\nexport var literal = function (_token) { return new Parser(function (stream) {\n // let {char, control} = stream.peek();\n var char = stream.peek().char;\n if (char === _token) {\n stream.eat();\n return new Result(_token, stream, ResultType.Literal);\n }\n // if (control === _token) {\n // while (!stream.eof() && char !== _token) {\n // stream.eat_input();\n // char = stream.peek().char;\n // }\n // }\n //\n // if (control !== undefined) {\n // stream.eat();\n // }\n return new Result(_token, stream, ResultType.Literal);\n}); };\n/**\n * @hidden\n */\nexport var unmask = function (prompt) { return function (rule) { return new Parser(function (stream) {\n while (!stream.eof()) {\n var _a = stream.peek(), char = _a.char, control = _a.control;\n if (char === prompt && control === prompt) {\n stream.eat();\n return new Result(char, stream);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result('', stream);\n}); }; };\n/**\n * @hidden\n */\nexport var unliteral = function (_token) { return new Parser(function (stream) {\n if (stream.eof()) {\n return new Result('', stream);\n }\n var char = stream.peek().char;\n if (char === _token) {\n stream.eat();\n }\n return new Result(_token, stream);\n}); };\n/**\n * @hidden\n */\nexport var token = function (rules, creator) { return new Parser(function (stream) {\n var char = stream.next().char;\n var rule = rules[char];\n if (char === ESCAPE_CHARACTER) {\n char = stream.next().char;\n return new Result(creator.literal(char), stream);\n }\n if (!rule) {\n return new Result(creator.literal(char), stream);\n }\n return new Result(creator.mask(rule), stream);\n}); };\n/**\n * @hidden\n */\nexport var rawMask = function (args) { return new Parser(function (stream) {\n var prompt = args.prompt, promptPlaceholder = args.promptPlaceholder;\n var char = stream.next().char;\n if (char === prompt) {\n return new Result(promptPlaceholder, stream);\n }\n return new Result(char, stream);\n}); };\n/**\n * @hidden\n */\nexport var rawLiteral = function (includeLiterals) { return new Parser(function (stream) {\n var char = stream.next().char;\n if (includeLiterals) {\n return new Result(char, stream);\n }\n return new Result('', stream);\n}); };\n","import { Parser } from './parsers';\nimport { Result } from './result';\n/**\n * @hidden\n */\nvar always = function (value) { return new Parser(function (stream) { return new Result(value, stream); }); };\n/**\n * @hidden\n */\nvar append = function (p1, p2) { return p1.chain(function (vs) { return p2.map(function (v) { return vs.concat([v]); }); }); };\n/**\n * @hidden\n */\nexport var sequence = function (list) { return list.reduce(function (acc, parser) { return append(acc, parser); }, always([])); };\n/**\n * @hidden\n */\nexport var greedy = function (parser) { return new Parser(function (stream) {\n var result = new Result([], stream);\n while (!stream.eof()) {\n result = result.concat(parser.run(stream));\n }\n return result;\n}); };\n","import { greedy, sequence } from './parsing/combinators';\nimport { literal, mask as maskParser, rawLiteral, rawMask, token, unliteral, unmask } from './parsing/parsers';\n/**\n * @hidden\n */\nvar MaskingService = /** @class */ (function () {\n function MaskingService() {\n this.rules = {};\n this.prompt = '_';\n this.mask = '';\n this.promptPlaceholder = ' ';\n this.includeLiterals = false;\n this.maskTokens = [];\n this.unmaskTokens = [];\n this.rawTokens = [];\n this.validationTokens = [];\n }\n MaskingService.prototype.update = function (_a) {\n var _b = _a.mask, mask = _b === void 0 ? '' : _b, _c = _a.prompt, prompt = _c === void 0 ? '' : _c, _d = _a.promptPlaceholder, promptPlaceholder = _d === void 0 ? ' ' : _d, _e = _a.rules, rules = _e === void 0 ? {} : _e, _f = _a.includeLiterals, includeLiterals = _f === void 0 ? false : _f;\n this.mask = mask;\n this.prompt = prompt;\n this.promptPlaceholder = promptPlaceholder;\n this.rules = rules;\n this.includeLiterals = includeLiterals;\n this.tokenize();\n };\n MaskingService.prototype.validationValue = function (maskedValue) {\n if (maskedValue === void 0) { maskedValue = ''; }\n var value = maskedValue;\n sequence(this.validationTokens)\n .run(maskedValue)\n .fold(function (unmasked) {\n value = unmasked.join('');\n });\n return value;\n };\n MaskingService.prototype.rawValue = function (maskedValue) {\n if (maskedValue === void 0) { maskedValue = ''; }\n var value = maskedValue;\n if (!this.rawTokens.length) {\n return value;\n }\n sequence(this.rawTokens)\n .run(maskedValue)\n .fold(function (unmasked) {\n value = unmasked.join('');\n });\n return value;\n };\n /**\n * @hidden\n */\n MaskingService.prototype.maskRaw = function (rawValue) {\n if (rawValue === void 0) { rawValue = ''; }\n var value = rawValue;\n if (!this.maskTokens.length) {\n return value;\n }\n sequence(this.maskTokens)\n .run(rawValue)\n .fold(function (masked) {\n value = masked.join('');\n });\n return value;\n };\n MaskingService.prototype.maskInput = function (input, control, splitPoint) {\n if (input.length < control.length) {\n return this.maskRemoved(input, control, splitPoint);\n }\n return this.maskInserted(input, control, splitPoint);\n };\n MaskingService.prototype.maskInRange = function (pasted, oldValue, start, end) {\n var value = '';\n var selection = end;\n var beforeChange = oldValue.split('').slice(0, start);\n var afterChange = oldValue.split('').slice(end);\n sequence(this.maskTokens.slice(start, end))\n .run(pasted)\n .fold(function (masked) {\n value = beforeChange\n .concat(masked)\n .concat(afterChange)\n .join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n MaskingService.prototype.maskRemoved = function (input, control, splitPoint) {\n var _this = this;\n var value = '';\n var selection = splitPoint;\n var unchanged = input.split('').slice(splitPoint);\n var changed = input.split('').slice(0, splitPoint).join('');\n var take = this.maskTokens.length - (input.length - splitPoint);\n sequence(this.maskTokens.slice(0, take))\n .run(changed, control)\n .fold(function (masked) {\n selection = _this.adjustPosition(masked, selection);\n value = masked.concat(unchanged).join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n MaskingService.prototype.adjustPosition = function (input, selection) {\n var caretChar = input[selection];\n var isLiteral = this.maskTokens[selection].isLiteral(caretChar);\n if (!isLiteral && caretChar !== this.prompt) {\n return selection + 1;\n }\n return selection;\n };\n MaskingService.prototype.maskInserted = function (input, control, splitPoint) {\n var _this = this;\n var value = '';\n var selection = splitPoint;\n var changed = input.slice(0, splitPoint);\n sequence(this.unmaskTokens)\n .run(changed, control)\n .chain(function (unmasked) {\n selection = unmasked.join('').length;\n var unchanged = control.slice(selection);\n return sequence(_this.maskTokens)\n .run(unmasked.join('') + unchanged, control);\n })\n .fold(function (masked) {\n value = masked.join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n Object.defineProperty(MaskingService.prototype, \"maskTokenCreator\", {\n get: function () {\n var _a = this, prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder;\n return {\n literal: function (rule) { return literal(rule); },\n mask: function (rule) { return maskParser({ prompt: prompt, promptPlaceholder: promptPlaceholder })(rule); }\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"unmaskTokenCreator\", {\n get: function () {\n var _this = this;\n return {\n literal: function (rule) { return unliteral(rule); },\n mask: function (rule) { return unmask(_this.prompt)(rule); }\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"rawTokenCreator\", {\n get: function () {\n var _a = this, prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder, includeLiterals = _a.includeLiterals;\n return {\n literal: function (_) { return rawLiteral(includeLiterals); },\n mask: function (_) { return rawMask({ prompt: prompt, promptPlaceholder: promptPlaceholder }); }\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"validationTokenCreator\", {\n get: function () {\n var prompt = this.prompt;\n return {\n literal: function (_) { return rawLiteral(false); },\n mask: function (_) { return rawMask({ prompt: prompt, promptPlaceholder: '' }); }\n };\n },\n enumerable: false,\n configurable: true\n });\n MaskingService.prototype.tokenize = function () {\n var _this = this;\n greedy(token(this.rules, this.maskTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.maskTokens = tokens;\n });\n greedy(token(this.rules, this.unmaskTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.unmaskTokens = tokens;\n });\n greedy(token(this.rules, this.rawTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.rawTokens = tokens;\n });\n greedy(token(this.rules, this.validationTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.validationTokens = tokens;\n });\n };\n return MaskingService;\n}());\nexport { MaskingService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { MaskingService } from './masking.service';\nimport { defaultRules, maskingChanged, returnFalse } from './utils';\nimport { guid, classNames, getTabIndex, withPropsContext, createPropsContext, kendoThemeMaps, useCustomComponent } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/** @hidden */\nvar MaskedTextBoxWithoutContext = /** @class */ (function (_super) {\n __extends(MaskedTextBoxWithoutContext, _super);\n function MaskedTextBoxWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {};\n _this._inputId = \"k-\".concat(guid());\n _this._service = new MaskingService();\n _this._isPasted = false;\n _this._selection = [null, null];\n _this._input = null;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._input) {\n _this._input.focus();\n }\n };\n _this.pasteHandler = function (event) {\n var _a = event.target, selectionStart = _a.selectionStart, selectionEnd = _a.selectionEnd;\n if (selectionEnd === selectionStart) {\n return;\n }\n _this._isPasted = true;\n _this._selection = [selectionStart || 0, selectionEnd || 0];\n };\n _this.onChangeHandler = function (event) {\n var input = event.currentTarget;\n var value = input.value;\n var start = _this._selection[0] || 0;\n var end = _this._selection[1] || 0;\n if (!_this.props.mask) {\n _this._isPasted = false;\n _this._selection = [null, null];\n _this.triggerOnChange(value, event);\n return;\n }\n var maskedValue = _this.value;\n var result;\n if (_this._isPasted) {\n _this._isPasted = false;\n var rightPart = maskedValue.length - end;\n var to = value.length - rightPart;\n result = _this._service.maskInRange(value.slice(start, to), maskedValue, start, end);\n }\n else {\n result = _this._service.maskInput(value, maskedValue, input.selectionStart || 0);\n }\n _this._selection = [result.selection, result.selection];\n _this.triggerOnChange(result.value, event);\n };\n _this.focusHandler = function (event) {\n if (!_this.state.focused) {\n _this.setState({ focused: true });\n if (_this.props.onFocus) {\n _this.props.onFocus.call(undefined, {\n target: _this,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n };\n _this.blurHandler = function (event) {\n if (_this.state.focused) {\n _this.setState({ focused: false });\n if (_this.props.onBlur) {\n _this.props.onBlur.call(undefined, {\n target: _this,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n };\n _this.setValidity = function () {\n if (_this.element) {\n _this.element.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || '');\n }\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"element\", {\n /**\n * Gets the element of the MaskedTextBox.\n *\n * @return - An `HTMLInputElement`.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * }\n * element = null;\n * render() {\n * return (\n *
    \n * \n * this.element = component ? component.element : null}\n * />\n * \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(\n * ,\n * document.getElementsByTagName('my-app')[0]\n * );\n * ```\n */\n get: function () {\n return this._input;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"value\", {\n /**\n * Gets the value with the mask of the MaskedTextBox.\n */\n get: function () {\n if (this._valueDuringOnChange !== undefined) {\n return this._valueDuringOnChange;\n }\n else if (this.props.value !== undefined) {\n return this.props.value;\n }\n else if (this.state.value !== undefined) {\n return this.state.value;\n }\n else if (this.props.defaultValue !== undefined) {\n return this.props.defaultValue;\n }\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"rawValue\", {\n /**\n * Gets the raw value without the mask of the MaskedTextBox.\n */\n get: function () {\n return this._service.rawValue(this.value);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the MaskedTextBox is set.\n */\n get: function () {\n var maskedValue = this.value;\n var value = this._service.validationValue(maskedValue);\n var customError = this.props.validationMessage !== undefined;\n var valid = (this.props.valid !== undefined ?\n this.props.valid : ((!this.required || !!value)) &&\n (!this.props.maskValidation || !this.props.prompt || maskedValue.indexOf(this.props.prompt) === -1));\n return {\n customError: customError,\n valid: valid,\n valueMissing: !value\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : MaskedTextBoxWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : MaskedTextBoxWithoutContext.defaultProps.required;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the MaskedTextBox.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n MaskedTextBoxWithoutContext.prototype.componentDidUpdate = function (prevProps, prevState) {\n if (this.element && this.state.focused && prevState.focused) {\n var _a = this._selection, start = _a[0], end = _a[1];\n var prevSelection = prevProps.selection;\n var nextSelection = this.props.selection;\n if ((!prevSelection && nextSelection) ||\n (prevSelection && nextSelection &&\n (prevSelection.start !== nextSelection.start || prevSelection.end !== nextSelection.end))) {\n start = nextSelection.start;\n end = nextSelection.end;\n }\n if (start !== null && end !== null) {\n this.element.setSelectionRange(start, end);\n }\n }\n if (maskingChanged(prevProps, this.props)) {\n this.updateService();\n }\n this.setValidity();\n };\n /**\n * @hidden\n */\n MaskedTextBoxWithoutContext.prototype.componentDidMount = function () {\n this.updateService();\n this.setValidity();\n };\n /**\n * @hidden\n */\n MaskedTextBoxWithoutContext.prototype.render = function () {\n var _a;\n var _this = this;\n var _b = this.props, _c = _b.size, size = _c === void 0 ? MaskedTextBoxWithoutContext.defaultProps.size : _c, _d = _b.fillMode, fillMode = _d === void 0 ? MaskedTextBoxWithoutContext.defaultProps.fillMode : _d, _e = _b.rounded, rounded = _e === void 0 ? MaskedTextBoxWithoutContext.defaultProps.rounded : _e;\n var inputId = this.props.id || this._inputId;\n var isValid = !this.validityStyles || this.validity.valid;\n var style = this.props.style || {};\n var _f = this.props, _g = _f.prefix, prefix = _g === void 0 ? MaskedTextBoxWithoutContext.defaultProps.prefix : _g, _h = _f.suffix, suffix = _h === void 0 ? MaskedTextBoxWithoutContext.defaultProps.suffix : _h;\n var Prefix = useCustomComponent(prefix)[0];\n var Suffix = useCustomComponent(suffix)[0];\n var component = (React.createElement(\"span\", { dir: this.props.dir, className: classNames('k-maskedtextbox k-input', (_a = {},\n _a[\"k-input-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a[\"k-input-\".concat(fillMode)] = fillMode,\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _a['k-invalid'] = !isValid,\n _a['k-required'] = this.required,\n _a['k-disabled'] = this.props.disabled,\n _a), this.props.className), style: !this.props.label\n ? __assign({ width: this.props.width }, style) : style },\n React.createElement(Prefix, null),\n React.createElement(\"input\", { type: \"text\", autoComplete: \"off\", autoCorrect: \"off\", autoCapitalize: \"off\", spellCheck: false, className: \"k-input-inner\", value: this.value, id: inputId, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, \"aria-placeholder\": this.props.mask, name: this.props.name, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled, true), accessKey: this.props.accessKey, title: this.props.title, disabled: this.props.disabled || undefined, readOnly: this.props.readonly || undefined, placeholder: this.props.placeholder, ref: function (input) { return _this._input = input; }, onChange: this.onChangeHandler, onPaste: this.pasteHandler, onFocus: this.focusHandler, onBlur: this.blurHandler, onDragStart: returnFalse, onDrop: returnFalse }),\n React.createElement(Suffix, null)));\n return this.props.label\n ? (React.createElement(FloatingLabel, { label: this.props.label, editorId: inputId, editorValue: this.value, editorValid: isValid, editorDisabled: this.props.disabled, editorPlaceholder: this.props.placeholder, children: component, style: { width: this.props.width }, dir: this.props.dir }))\n : component;\n };\n MaskedTextBoxWithoutContext.prototype.triggerOnChange = function (maskedValue, event) {\n this.setState({\n value: maskedValue\n });\n if (this.props.onChange) {\n this._valueDuringOnChange = maskedValue;\n var ev = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n selectionStart: this._selection[0],\n selectionEnd: this._selection[1],\n target: this,\n value: this.value\n };\n this.props.onChange.call(undefined, ev);\n this._valueDuringOnChange = undefined;\n }\n };\n MaskedTextBoxWithoutContext.prototype.updateService = function (extra) {\n var config = Object.assign({\n includeLiterals: this.props.includeLiterals,\n mask: this.props.mask,\n prompt: this.props.prompt,\n promptPlaceholder: this.props.promptPlaceholder,\n rules: this.rules\n }, extra); // tslint:disable-line:align\n this._service.update(config);\n };\n Object.defineProperty(MaskedTextBoxWithoutContext.prototype, \"rules\", {\n get: function () {\n return Object.assign({}, defaultRules, this.props.rules);\n },\n enumerable: false,\n configurable: true\n });\n MaskedTextBoxWithoutContext.displayName = 'MaskedTextBox';\n /**\n * @hidden\n */\n MaskedTextBoxWithoutContext.propTypes = {\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n placeholder: PropTypes.string,\n title: PropTypes.string,\n dir: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n prefix: PropTypes.any,\n suffix: PropTypes.any,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n disabled: PropTypes.bool,\n readonly: PropTypes.bool,\n prompt: PropTypes.string,\n promptPlaceholder: PropTypes.string,\n includeLiterals: PropTypes.bool,\n maskValidation: PropTypes.bool,\n mask: PropTypes.string,\n rules: function (props, propName, componentName) {\n var rules = props.rules;\n if (rules !== undefined) {\n var valid = Object.entries(rules)\n .some(function (e) { return typeof e !== 'string' || !(rules[e] instanceof RegExp); });\n if (!valid) {\n return new Error('Invalid prop `' + propName + '` supplied to' +\n ' `' + componentName + '`. Validation failed.');\n }\n }\n return null;\n },\n selection: PropTypes.shape({\n start: PropTypes.number.isRequired,\n end: PropTypes.number.isRequired\n }),\n name: PropTypes.string,\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n valid: PropTypes.bool,\n validityStyles: PropTypes.bool,\n onChange: PropTypes.func,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline'])\n };\n /**\n * @hidden\n */\n MaskedTextBoxWithoutContext.defaultProps = {\n prompt: '_',\n promptPlaceholder: ' ',\n includeLiterals: false,\n maskValidation: true,\n rules: defaultRules,\n required: false,\n validityStyles: true,\n prefix: function (_) { return null; },\n suffix: function (_) { return null; },\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid'\n };\n return MaskedTextBoxWithoutContext;\n}(React.Component));\nexport { MaskedTextBoxWithoutContext };\n/**\n * Represents the PropsContext of the `MaskedTextBox` component.\n * Used for global configuration of all `MaskedTextBox` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var MaskedTextBoxPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the props of the [KendoReact MaskedTextBox component]({% slug overview_maskedtextbox %}).\n *\n * Accepts properties of type [MaskedTextBoxProps]({% slug api_inputs_maskedtextboxprops %}).\n * Obtaining the `ref` returns an object of type [MaskedTextBoxHandle]({% slug api_inputs_maskedtextboxhandle %}).\n */\nexport var MaskedTextBox = withPropsContext(MaskedTextBoxPropsContext, MaskedTextBoxWithoutContext);\nMaskedTextBox.displayName = 'KendoReactMaskedTextBox';\n","/**\n * @hidden\n */\nvar defaultRules = {\n '#': /[\\d\\s\\+\\-]/,\n '&': /[\\S]/,\n '0': /[\\d]/,\n '9': /[\\d\\s]/,\n '?': /[a-zA-Z\\s]/,\n 'A': /[a-zA-Z0-9]/,\n 'C': /./,\n 'L': /[a-zA-Z]/,\n 'a': /[a-zA-Z0-9\\s]/\n};\n/**\n * @hidden\n */\nvar returnFalse = function () { return false; };\n/**\n * @hidden\n */\nvar maskingChanged = function (prev, next) {\n return prev.includeLiterals !== next.includeLiterals ||\n prev.mask !== next.mask ||\n prev.prompt !== next.prompt ||\n prev.promptPlaceholder !== next.promptPlaceholder ||\n !sameRules(prev.rules, next.rules);\n};\n/**\n * @hidden\n */\nvar sameRules = function (rules1, rules2) {\n if (!!rules1 !== !!rules2) {\n return false;\n }\n if (rules1 === rules2 || (!rules1 || !rules2)) {\n return true;\n }\n var same = true;\n for (var key in rules1) {\n if (rules1[key] !== rules2[key]) {\n same = false;\n break;\n }\n }\n if (same) {\n for (var key in rules2) {\n if (!rules1.hasOwnProperty(key)) {\n same = false;\n break;\n }\n }\n }\n return same;\n};\nexport { defaultRules, maskingChanged, returnFalse };\n","var _a;\n/**\n * @hidden\n */\nexport var numericIncreaseValue = 'numerictextbox.increment';\n/**\n * @hidden\n */\nexport var numericDecreaseValue = 'numerictextbox.decrement';\n/**\n * @hidden\n */\nexport var sliderIncreaseValue = 'slider.increment';\n/**\n * @hidden\n */\nexport var sliderDecreaseValue = 'slider.decrement';\n/**\n * @hidden\n */\nexport var sliderDragTitle = 'slider.dragTitle';\n/**\n * @hidden\n */\nexport var colorGradientR = 'colorGradient.r';\n/**\n * @hidden\n */\nexport var colorGradientG = 'colorGradient.g';\n/**\n * @hidden\n */\nexport var colorGradientB = 'colorGradient.b';\n/**\n * @hidden\n */\nexport var colorGradientA = 'colorGradient.a';\n/**\n * @hidden\n */\nexport var colorGradientHex = 'colorGradient.hex';\n/**\n * @hidden\n */\nexport var colorGradientContrastRatio = 'colorGradient.contrastRatio';\n/**\n * @hidden\n */\nexport var colorGradientAALevel = 'colorGradient.colorGradientAALevel';\n/**\n * @hidden\n */\nexport var colorGradientAAALevel = 'colorGradient.colorGradientAAALevel';\n/**\n * @hidden\n */\nexport var colorGradientPass = 'colorGradient.colorGradientPass';\n/**\n * @hidden\n */\nexport var colorGradientFail = 'colorGradient.colorGradientFail';\n/**\n * @hidden\n */\nexport var colorGradientHueSliderLabel = 'colorGradient.hueSliderLabel';\n/**\n * @hidden\n */\nexport var colorGradientAlphaSliderLabel = 'colorGradient.alphaSliderLabel';\n/**\n * @hidden\n */\nexport var colorGradientToggleInputsButton = 'colorGradient.toggleInputsButton';\n/**\n * @hidden\n */\nexport var flatColorPickerCancelBtn = 'flatColorPicker.cancelBtn';\n/**\n * @hidden\n */\nexport var flatColorPickerApplyBtn = 'flatColorPicker.applyBtn';\n/**\n * @hidden\n */\nexport var flatColorPickerColorGradientBtn = 'flatColorPicker.colorGradientBtn';\n/**\n * @hidden\n */\nexport var flatColorPickerColorPaletteBtn = 'flatColorPicker.colorPaletteBtn';\n/**\n * @hidden\n */\nexport var flatColorPickerClearBtn = 'flatColorPicker.clearBtn';\n/**\n * @hidden\n */\nexport var checkboxValidation = 'checkbox.validation';\n/**\n * @hidden\n */\nexport var checkboxOptionalText = 'checkbox.optionalText';\n/**\n * @hidden\n */\nexport var radioButtonValidation = 'radioButton.validation';\n/**\n * @hidden\n */\nexport var switchValidation = 'switch.validation';\n/**\n * @hidden\n */\nexport var colorPickerDropdownButtonAriaLabel = 'colorPicker.dropdownButtonAriaLabel';\n/**\n * @hidden\n */\nexport var ratingAriaLabel = 'rating.ariaLabel';\n/**\n * @hidden\n */\nexport var signatureClear = 'signature.clear';\n/**\n * @hidden\n */\nexport var signatureMaximize = 'signature.maximize';\n/**\n * @hidden\n */\nexport var signatureMinimize = 'signature.minimize';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[numericIncreaseValue] = 'Increase value',\n _a[numericDecreaseValue] = 'Decrease value',\n _a[sliderIncreaseValue] = 'Increase',\n _a[sliderDecreaseValue] = 'Decrease',\n _a[sliderDragTitle] = 'Drag',\n _a[colorGradientR] = 'r',\n _a[colorGradientG] = 'g',\n _a[colorGradientB] = 'b',\n _a[colorGradientA] = 'a',\n _a[colorGradientHex] = 'hex',\n _a[colorGradientContrastRatio] = 'Contrast ratio',\n _a[colorGradientAALevel] = 'AA',\n _a[colorGradientAAALevel] = 'AAA',\n _a[colorGradientPass] = 'Pass',\n _a[colorGradientFail] = 'Fail',\n _a[colorGradientHueSliderLabel] = 'Hue slider',\n _a[colorGradientAlphaSliderLabel] = 'Alpha slider',\n _a[colorGradientToggleInputsButton] = 'Toggle colorgradient inputs',\n _a[flatColorPickerCancelBtn] = 'Cancel',\n _a[flatColorPickerApplyBtn] = 'Apply',\n _a[flatColorPickerColorGradientBtn] = 'Color Gradient view',\n _a[flatColorPickerColorPaletteBtn] = 'Color Palette view',\n _a[flatColorPickerClearBtn] = 'Clear color value',\n _a[checkboxValidation] = 'Please check this box if you want to proceed!',\n _a[checkboxOptionalText] = '(Optional)',\n _a[radioButtonValidation] = 'Please select option if you want to proceed!',\n _a[switchValidation] = 'Please turn on if you want to proceed!',\n _a[colorPickerDropdownButtonAriaLabel] = 'Select',\n _a[ratingAriaLabel] = 'Rating',\n _a[signatureClear] = 'Clear',\n _a[signatureMaximize] = 'Maximize',\n _a[signatureMinimize] = 'Minimize',\n _a);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { useInternationalization, useLocalization } from '@progress/kendo-react-intl';\nimport { classNames, guid, getTabIndex, dispatchEvent, createPropsContext, usePropsContext, kendoThemeMaps, useCustomComponent, getActiveElement } from '@progress/kendo-react-common';\nimport { caretAltUpIcon, caretAltDownIcon } from '@progress/kendo-svg-icons';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { numericIncreaseValue, messages, numericDecreaseValue } from '../messages';\nimport { formatValue, sanitizeNumber, rangeValue, increaseValue, decreaseValue, getStateOrPropsValue, getInitialState } from './utils';\nimport { Button } from '@progress/kendo-react-buttons';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n/**\n * Represents the PropsContext of the `NumericTextBox` component.\n * Used for global configuration of all `NumericTextBox` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var NumericTextBoxPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact NumericTextBox component]({% slug overview_numerictextbox %}).\n */\nexport var NumericTextBox = React.forwardRef(function (directProps, target) {\n var _a;\n validatePackage(packageMetadata);\n var props = usePropsContext(NumericTextBoxPropsContext, directProps);\n var calculatedId = React.useMemo(function () { return guid(); }, []);\n var inputId = props.id || calculatedId;\n var intlService = useInternationalization();\n var localizationService = useLocalization();\n var elementRef = React.useRef(null);\n var valueDuringChangeRef = React.useRef();\n var _b = React.useState(false), forceUpdate = _b[0], setForceUpdate = _b[1];\n var stateRef = React.useRef(getInitialState());\n var isPasteRef = React.useRef(false);\n var prevLooseValueRef = React.useRef();\n var stateValueRef = React.useRef(props.defaultValue);\n var looseValue = formatValue(stateRef.current.focused && !props.disabled ?\n stateRef.current.currentLooseValue :\n getStateOrPropsValue(props.value, stateValueRef.current), props.format, intlService);\n prevLooseValueRef.current = looseValue;\n var Prefix = useCustomComponent(props.prefix)[0];\n var Suffix = useCustomComponent(props.suffix)[0];\n React.useEffect(function () {\n if (elementRef.current && elementRef.current.setCustomValidity) {\n elementRef.current.setCustomValidity(validityGetter().valid\n ? ''\n : props.validationMessage || VALIDATION_MESSAGE);\n }\n });\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n var valueGetter = React.useCallback(function () {\n if (valueDuringChangeRef.current !== undefined) {\n return valueDuringChangeRef.current;\n }\n else {\n return getStateOrPropsValue(props.value, stateValueRef.current);\n }\n }, [props.value]);\n var nameGetter = React.useCallback(function () {\n return props.name;\n }, [props.name]);\n var requiredGetter = React.useCallback(function () {\n return props.required;\n }, [props.required]);\n var validityGetter = React.useCallback(function () {\n var customError = props.validationMessage !== undefined;\n var currentValue = valueGetter();\n var valid = props.valid !== undefined ?\n props.valid :\n !stateRef.current.valueIsOutOfRange &&\n (!requiredGetter() || (currentValue !== null && currentValue !== undefined));\n return {\n customError: customError,\n valid: valid,\n valueMissing: currentValue === null || currentValue === undefined\n };\n }, [props.validationMessage, props.valid, valueGetter, requiredGetter]);\n var validityStylesGetter = React.useCallback(function () {\n return props.validityStyles;\n }, [props.validityStyles]);\n var propsGetter = React.useCallback(function () {\n return props;\n }, [props]);\n var getImperativeHandle = React.useCallback(function () {\n var options = {\n element: elementRef.current,\n focus: focusElement\n };\n Object.defineProperty(options, 'name', { get: nameGetter });\n Object.defineProperty(options, 'value', { get: valueGetter });\n Object.defineProperty(options, 'validity', { get: validityGetter });\n Object.defineProperty(options, 'validityStyles', { get: validityStylesGetter });\n Object.defineProperty(options, 'required', { get: requiredGetter });\n Object.defineProperty(options, 'props', { get: propsGetter });\n return options;\n }, [nameGetter, valueGetter, validityGetter, validityStylesGetter, requiredGetter, focusElement, propsGetter]);\n React.useImperativeHandle(target, getImperativeHandle);\n var getCurrentState = React.useCallback(function () {\n return {\n eventValue: getStateOrPropsValue(props.value, stateValueRef.current),\n prevLooseValue: prevLooseValueRef.current,\n currentLooseValue: elementRef.current.value,\n selectionStart: elementRef.current.selectionStart,\n selectionEnd: elementRef.current.selectionEnd,\n decimalSelect: false,\n valueIsCorrected: false,\n valueIsOutOfRange: false,\n isPaste: isPasteRef.current,\n focused: stateRef.current.focused\n };\n }, [props.value]);\n var triggerChange = React.useCallback(function (event, newState) {\n if (props.disabled) {\n return;\n }\n valueDuringChangeRef.current = newState.eventValue;\n stateValueRef.current = newState.eventValue;\n var formattedValue = formatValue(rangeValue(newState.eventValue, props.min, props.max), props.format, intlService);\n var rangedValue = rangeValue(intlService.parseNumber(formattedValue, props.format), props.min, props.max);\n if (rangedValue !== newState.eventValue) {\n newState.valueIsOutOfRange = true;\n newState.eventValue = rangedValue;\n stateValueRef.current = rangedValue;\n }\n var shouldFireEvent = props.value !== newState.eventValue;\n if (shouldFireEvent) {\n dispatchEvent(props.onChange, event, getImperativeHandle(), { value: newState.eventValue });\n }\n valueDuringChangeRef.current = undefined;\n stateRef.current = newState;\n setForceUpdate(function (_x) { return !_x; });\n }, [props.value, props.onChange, props.disabled, setForceUpdate, getImperativeHandle]);\n var onChangeHandler = React.useCallback(function (event) {\n var stateCandidate = getCurrentState();\n isPasteRef.current = false;\n triggerChange(event, sanitizeNumber(stateCandidate, props.format, intlService));\n }, [props.format, props.onChange, intlService, triggerChange, getCurrentState]);\n var onKeyDown = React.useCallback(function (event) {\n var newState = getCurrentState();\n var currentValue = intlService.parseNumber(String(newState.currentLooseValue), props.format);\n // Select All\n if (newState.selectionEnd > newState.selectionStart &&\n newState.selectionEnd - newState.selectionStart === String(newState.currentLooseValue).length) {\n var numericSymbols = intlService.numberSymbols();\n var isMinus = numericSymbols && event.key === numericSymbols.minusSign;\n var isDecimal = numericSymbols && event.key === numericSymbols.decimal;\n isPasteRef.current = !isMinus && !isDecimal;\n return;\n }\n switch (event.keyCode) {\n case 38:\n // Arrow up\n increaseValue(currentValue, newState, props.step, props.min, props.max, props.format, intlService);\n break;\n case 40:\n // Arrow down\n decreaseValue(currentValue, newState, props.step, props.min, props.max, props.format, intlService);\n break;\n case 13:\n // Enter - range values\n if (props.rangeOnEnter === false) {\n return;\n }\n var formattedValue = formatValue(rangeValue(currentValue, props.min, props.max), props.format, intlService);\n var rangedValue = rangeValue(intlService.parseNumber(formattedValue, props.format), props.min, props.max);\n newState.eventValue = rangedValue;\n newState.currentLooseValue = formatValue(rangedValue, props.format, intlService);\n newState.selectionStart = newState.selectionEnd = newState.currentLooseValue.length;\n break;\n case 110:\n // Numpad decimal key\n var element = elementRef.current;\n var symbols = intlService.numberSymbols();\n if (element) {\n newState.currentLooseValue = newState.currentLooseValue.slice(0, newState.selectionStart) +\n symbols.decimal +\n newState.currentLooseValue.slice(newState.selectionEnd);\n newState.selectionStart = newState.selectionEnd = newState.selectionStart + 1;\n newState = sanitizeNumber(newState, props.format, intlService);\n }\n break;\n default:\n return;\n }\n event.preventDefault();\n triggerChange(event, newState);\n }, [props.format, props.min, props.max, props.step, props.onChange, props.rangeOnEnter, triggerChange, getCurrentState]);\n var onPasteHandler = React.useCallback(function () {\n isPasteRef.current = true;\n }, []);\n var onIncrease = React.useCallback(function (event) {\n if (props.readOnly ||\n props.disabled) {\n return;\n }\n var newState = getCurrentState();\n increaseValue(intlService.parseNumber(String(newState.currentLooseValue), props.format), newState, props.step, props.min, props.max, props.format, intlService);\n triggerChange(event, newState);\n }, [props.format, props.min, props.max, props.step, props.onChange, props.readOnly, props.disabled, triggerChange, getCurrentState]);\n var onDecrease = React.useCallback(function (event) {\n if (props.readOnly ||\n props.disabled) {\n return;\n }\n var newState = getCurrentState();\n decreaseValue(intlService.parseNumber(String(newState.currentLooseValue), props.format), newState, props.step, props.min, props.max, props.format, intlService);\n triggerChange(event, newState);\n }, [props.format, props.min, props.max, props.step, props.onChange, props.readOnly, props.disabled, triggerChange, getCurrentState]);\n var onWheelHandler = React.useCallback(function (event) {\n var activeElement = getActiveElement(document);\n if (!document ||\n activeElement !== elementRef.current ||\n !elementRef.current ||\n props.readOnly ||\n props.disabled) {\n return;\n }\n if (event.nativeEvent.deltaY < 0) {\n onIncrease(event);\n }\n if (event.nativeEvent.deltaY > 0) {\n onDecrease(event);\n }\n }, [onIncrease, onDecrease, props.disabled, props.readOnly]);\n var onFocus = React.useCallback(function (event) {\n stateRef.current.currentLooseValue = prevLooseValueRef.current;\n stateRef.current.focused = true;\n dispatchEvent(props.onFocus, event, getImperativeHandle(), {});\n setForceUpdate(function (x) { return !x; });\n }, [props.onFocus, setForceUpdate, getImperativeHandle]);\n var onBlur = React.useCallback(function (event) {\n stateRef.current = getInitialState();\n dispatchEvent(props.onBlur, event, getImperativeHandle(), {});\n setForceUpdate(function (x) { return !x; });\n }, [props.onBlur, setForceUpdate, getImperativeHandle]);\n var onMouseDown = React.useCallback(function (e) {\n if (document && elementRef.current) {\n var activeElement = getActiveElement(document);\n e.preventDefault();\n if (activeElement !== elementRef.current) {\n elementRef.current.focus();\n }\n }\n }, []);\n React.useLayoutEffect(function () {\n // The input element's type ('number') does not support selection.\n if (elementRef.current && elementRef.current.type !== 'number' &&\n stateRef.current.selectionStart !== undefined && stateRef.current.selectionEnd !== undefined) {\n elementRef.current.selectionStart = stateRef.current.selectionStart;\n elementRef.current.selectionEnd = stateRef.current.selectionEnd;\n stateRef.current.selectionStart = undefined;\n stateRef.current.selectionEnd = undefined;\n }\n }, [forceUpdate]);\n var isValid = !validityStylesGetter() || validityGetter().valid;\n var numerictextbox = (React.createElement(\"span\", { dir: props.dir, style: !props.label\n ? __assign({ width: props.width }, props.style) : props.style, className: classNames('k-input', 'k-numerictextbox', (_a = {},\n _a[\"k-input-\".concat(kendoThemeMaps.sizeMap[props.size] || props.size)] = props.size,\n _a[\"k-input-\".concat(props.fillMode)] = props.fillMode,\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[props.rounded] || props.rounded)] = props.rounded,\n _a['k-invalid'] = !isValid,\n _a['k-required'] = props.required,\n _a['k-disabled'] = props.disabled,\n _a), props.className), \"aria-disabled\": props.disabled ? 'true' : undefined },\n React.createElement(Prefix, null),\n React.createElement(\"input\", { role: 'spinbutton', value: looseValue === null ? '' : looseValue, tabIndex: getTabIndex(props.tabIndex, props.disabled), accessKey: props.accessKey, disabled: props.disabled, title: props.title, \"aria-disabled\": props.disabled ? 'true' : undefined, \"aria-valuemin\": props.min, \"aria-valuemax\": props.max, \"aria-label\": props.ariaLabel, \"aria-labelledby\": props.ariaLabelledBy, \"aria-describedby\": props.ariaDescribedBy, placeholder: props.placeholder, spellCheck: false, autoComplete: 'off', autoCorrect: 'off', type: props.inputType || 'tel', className: 'k-input-inner', id: inputId, name: props.name, readOnly: props.readOnly, style: props.inputStyle, onChange: onChangeHandler, onFocus: onFocus, onBlur: onBlur, onKeyDown: onKeyDown, onPaste: onPasteHandler, onWheel: onWheelHandler, ref: elementRef }),\n React.createElement(Suffix, null),\n props.children,\n props.spinners &&\n (React.createElement(\"span\", { className: \"k-input-spinner k-spin-button\", onMouseDown: onMouseDown },\n React.createElement(Button, { tabIndex: -1, type: \"button\", icon: 'caret-alt-up', svgIcon: caretAltUpIcon, rounded: null, className: \"k-spinner-increase\", \"aria-label\": localizationService.toLanguageString(numericIncreaseValue, messages[numericIncreaseValue]), title: localizationService.toLanguageString(numericIncreaseValue, messages[numericIncreaseValue]), onClick: onIncrease }),\n React.createElement(Button, { tabIndex: -1, type: \"button\", icon: 'caret-alt-down', svgIcon: caretAltDownIcon, rounded: null, className: \"k-spinner-decrease\", \"aria-label\": localizationService.toLanguageString(numericDecreaseValue, messages[numericDecreaseValue]), title: localizationService.toLanguageString(numericDecreaseValue, messages[numericDecreaseValue]), onClick: onDecrease })))));\n return props.label\n ? (React.createElement(FloatingLabel, { label: props.label, editorId: inputId, editorValue: looseValue === null ? '' : looseValue, editorValid: isValid, editorDisabled: props.disabled, editorPlaceholder: props.placeholder, children: numerictextbox, style: { width: props.width }, dir: props.dir }))\n : numerictextbox;\n});\nNumericTextBox.propTypes = {\n value: PropTypes.number,\n defaultValue: PropTypes.number,\n step: PropTypes.number,\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n style: PropTypes.oneOf(['decimal', 'currency', 'percent', 'scientific', 'accounting']),\n currency: PropTypes.string,\n currencyDisplay: PropTypes.oneOf(['symbol', 'code', 'name']),\n useGrouping: PropTypes.bool,\n minimumIntegerDigits: PropTypes.number,\n minimumFractionDigits: PropTypes.number,\n maximumFractionDigits: PropTypes.number\n })\n ]),\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n title: PropTypes.string,\n placeholder: PropTypes.string,\n min: PropTypes.number,\n max: PropTypes.number,\n spinners: PropTypes.bool,\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n dir: PropTypes.string,\n name: PropTypes.string,\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n id: PropTypes.string,\n rangeOnEnter: PropTypes.bool,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n ariaLabel: PropTypes.string,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline'])\n};\nNumericTextBox.displayName = 'KendoNumericTextBox';\nNumericTextBox.defaultProps = {\n prefix: function (_) { return null; },\n suffix: function (_) { return null; },\n step: 1,\n spinners: true,\n disabled: false,\n required: false,\n validityStyles: true,\n rangeOnEnter: true,\n onChange: function (_) { return; },\n onFocus: function (_) { return; },\n onBlur: function (_) { return; },\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid'\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar DEFAULT_NUMBER = 1111111.1111111;\nvar MAX_DECIMAL = 0.31111111111111117;\nvar MIN_DECIMAL = 1;\nvar ONE_NUMBER = 1;\nvar ZERO_NUMBER = 0;\nvar DIGITS_REGEX = /\\d/;\nvar MAX_PRECISION = 15;\n/**\n * @hidden\n */\nexport var getInitialState = function () { return ({\n eventValue: null,\n prevLooseValue: '',\n currentLooseValue: '',\n focused: false,\n selectionStart: undefined,\n selectionEnd: undefined,\n decimalSelect: false,\n valueIsCorrected: false,\n valueIsOutOfRange: false\n}); };\n/**\n * @hidden\n */\nexport var getStateOrPropsValue = function (value, stateValue) {\n return value !== undefined ? value : stateValue;\n};\n/**\n * @hidden\n */\nexport var formatValue = function (value, format, intlService) {\n if (value === null && value === undefined) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n return intlService.formatNumber(value, format);\n};\n/**\n * @hidden\n */\nexport var fractionLength = function (value) {\n return (String(value).split('.')[1] || '').length;\n};\n/**\n * @hidden\n */\nvar maxFractionLength = function (value1, value2) {\n return Math.max(fractionLength(value1), fractionLength(value2));\n};\n/**\n * @hidden\n */\nexport var limitPrecision = function (precision) { return Math.min(precision, MAX_PRECISION); };\n/**\n * @hidden\n */\nexport var toFixedPrecision = function (value, precision) {\n var maxPrecision = limitPrecision(precision);\n return parseFloat(value.toFixed(maxPrecision));\n};\n/**\n * @hidden\n */\nexport var increaseValue = function (value, newState, step, min, max, format, intlService) {\n var maxPrecision = maxFractionLength(value || 0, step || 0);\n var increasedValue = rangeValue(toFixedPrecision((value || 0) + (step || 0), maxPrecision), min, max);\n newState.eventValue = increasedValue;\n newState.currentLooseValue = formatValue(increasedValue, format, intlService);\n newState.selectionStart = newState.selectionEnd = getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);\n};\n/**\n * @hidden\n */\nexport var decreaseValue = function (value, newState, step, min, max, format, intlService) {\n var maxPrecision = maxFractionLength(value || 0, step || 0);\n var decreasedValue = rangeValue(toFixedPrecision((value || 0) - (step || 0), maxPrecision), min, max);\n newState.eventValue = decreasedValue;\n newState.currentLooseValue = formatValue(decreasedValue, format, intlService);\n newState.selectionStart = newState.selectionEnd = getLastNumberIndex(newState.currentLooseValue, DIGITS_REGEX);\n};\n/**\n * @hidden\n */\nexport var rangeValue = function (value, min, max) {\n if (value == null) {\n return value;\n }\n if (!(value > 1 || value < 1 || value === 1)) {\n // null, undefined or NaN\n return null;\n }\n if (max !== undefined && min !== undefined && max < min) {\n return null;\n }\n if (max !== undefined && value > max) {\n value = max;\n }\n if (min !== undefined && value < min) {\n value = min;\n }\n return value;\n};\n/**\n * @hidden\n */\nexport var getMaxCursorPosition = function (nextValue, formatInfo) {\n var formatSuffixIndex = formatInfo.findIndex(function (_a) {\n var _ = _a[0], currSuffix = _a[1];\n return Boolean(currSuffix) && nextValue.indexOf(currSuffix) === nextValue.length - currSuffix.length;\n });\n if (formatSuffixIndex === -1) {\n return -1;\n }\n var suffix = formatInfo[formatSuffixIndex][1];\n return nextValue.length - suffix.length;\n};\n/**\n * @hidden\n */\nexport var getMinCursorPosition = function (nextValue, formatInfo) {\n var formatPrefixIndex = formatInfo.findIndex(function (_a) {\n var currPrefix = _a[0], _ = _a[1];\n return Boolean(currPrefix) && nextValue.indexOf(currPrefix) === 0;\n });\n if (formatPrefixIndex === -1) {\n return -1;\n }\n var prefix = formatInfo[formatPrefixIndex][0];\n return prefix.length;\n};\n/**\n * @hidden\n */\nexport var rangeSelection = function (nextLooseValue, formatInfo, newState) {\n var maxPosition = getMaxCursorPosition(nextLooseValue, formatInfo);\n if (maxPosition !== -1 && newState.selectionStart > maxPosition) {\n newState.selectionStart = newState.selectionEnd = maxPosition;\n return;\n }\n if (newState.selectionStart > nextLooseValue.length) {\n newState.selectionStart = newState.selectionEnd = nextLooseValue.length;\n }\n var minPosition = getMinCursorPosition(nextLooseValue, formatInfo);\n if (minPosition !== -1 && newState.selectionStart < minPosition) {\n newState.selectionStart = newState.selectionEnd = minPosition;\n }\n if (newState.selectionStart === -1) {\n newState.selectionStart = newState.selectionEnd = 0;\n }\n};\n/**\n * @hidden\n */\nexport var setSelection = function (newState, newIndex, nextLooseValue, formatInfo) {\n newState.selectionStart = newState.selectionEnd = newIndex;\n rangeSelection(nextLooseValue, formatInfo, newState);\n};\n/**\n * @hidden\n */\nexport var setInvalid = function (newState, format, formatInfo, intlService) {\n newState.eventValue = intlService.parseNumber(newState.prevLooseValue, format);\n newState.currentLooseValue = newState.prevLooseValue;\n newState.valueIsCorrected = true;\n setSelection(newState, newState.selectionStart, newState.currentLooseValue, formatInfo);\n};\n/**\n * @hidden\n */\nexport var isMinusSymbolAdded = function (newState, symbols) {\n var newText = String(newState.currentLooseValue);\n var oldText = String(newState.prevLooseValue);\n return (newText.split(symbols.minusSign).length !== oldText.split(symbols.minusSign).length &&\n newText.length === oldText.length + symbols.minusSign.length);\n};\n/**\n * @hidden\n */\nexport var isMinusSymbolRemoved = function (newState, symbols) {\n var newText = String(newState.currentLooseValue);\n var oldText = String(newState.prevLooseValue);\n return (newText.indexOf(symbols.minusSign) === -1 && oldText.indexOf(symbols.minusSign) !== -1);\n};\n/**\n * @hidden\n */\nexport var isDecimalDuplicated = function (newState, symbols) {\n var newText = String(newState.currentLooseValue);\n return newText.split(symbols.decimal).length > 2;\n};\n/**\n * @hidden\n */\nexport var getFormatPrefixSufix = function (format, intlService) {\n var positiveResult = intlService.formatNumber(DEFAULT_NUMBER, format);\n var negativeResult = intlService.formatNumber(-DEFAULT_NUMBER, format);\n var zeroResult = intlService.formatNumber(ZERO_NUMBER, format);\n var oneResult = intlService.formatNumber(ONE_NUMBER, format);\n var positivePrefix = getPrefix(positiveResult);\n var negativePrefix = getPrefix(negativeResult);\n var zeroPrefix = getPrefix(zeroResult);\n var onePrefix = getPrefix(oneResult);\n var positiveSuffix = getSuffix(positiveResult);\n var negativeSuffix = getSuffix(negativeResult);\n var zeroSuffix = getSuffix(zeroResult);\n var oneSuffix = getSuffix(oneResult);\n return {\n positiveInfo: [positivePrefix, positiveSuffix],\n negativeInfo: [negativePrefix, negativeSuffix],\n zeroInfo: [zeroPrefix, zeroSuffix],\n oneInfo: [onePrefix, oneSuffix]\n };\n};\n/**\n * @hidden\n */\nexport var getFormatSymbols = function (format, intlService) {\n var positiveResult = intlService.formatNumber(DEFAULT_NUMBER, format);\n var negativeResult = intlService.formatNumber(-DEFAULT_NUMBER, format);\n var zeroResult = intlService.formatNumber(ZERO_NUMBER, format);\n var oneResult = intlService.formatNumber(ONE_NUMBER, format);\n var symbols = intlService.numberSymbols();\n var sanitizeRegex = new RegExp(\"[\\\\d\\\\\".concat(symbols.decimal).concat(symbols.group, \"]\"), 'g');\n var resultWithDuplicates = [positiveResult, negativeResult, zeroResult, oneResult]\n .map(function (result) { return result.replace(sanitizeRegex, ''); })\n .join('');\n return resultWithDuplicates\n .split('')\n .filter(function (x, n, s) { return s.indexOf(x) === n; })\n .join('');\n};\n/**\n * @hidden\n */\nexport var getInitialPosition = function (nextLooseValue, symbols) {\n var decimalIdex = nextLooseValue.indexOf(symbols.decimal);\n if (decimalIdex > -1) {\n return decimalIdex;\n }\n return getLastNumberIndex(nextLooseValue, DIGITS_REGEX);\n};\n/**\n * @hidden\n */\nexport var reverseString = function (str) {\n return str.split('').reverse().join('');\n};\n/**\n * @hidden\n */\nexport var getLastNumberIndex = function (currentLooseValue, inputRegex) {\n return currentLooseValue.length - reverseString(currentLooseValue).search(inputRegex);\n};\n/**\n * @hidden\n */\nexport var getPrefix = function (str) {\n return str.split(str[str.search(DIGITS_REGEX)])[0];\n};\n/**\n * @hidden\n */\nexport var getSuffix = function (str) {\n var reversedString = reverseString(str);\n return reverseString(reversedString.split(reversedString[reversedString.search(DIGITS_REGEX)])[0]);\n};\n/**\n * @hidden\n */\nexport var getFirstNumberIndex = function (prevLooseValue, inputRegex) {\n return prevLooseValue.search(inputRegex);\n};\n/**\n * @hidden\n */\nexport var getDecimalCount = function (value, decimal) {\n var currentDecimalPlace = value.indexOf(decimal);\n return currentDecimalPlace > -1 ? value.length - currentDecimalPlace - 1 : 0;\n};\n/**\n * @hidden\n */\nexport var changeBasedSelection = function (currentValue, nextValue, selectionPosition, isDelete, sanitizeRegex) {\n var isCurrentLeadingZero = currentValue.replace(sanitizeRegex, '')[0] === '0';\n var isNextLeadingZero = nextValue.replace(sanitizeRegex, '')[0] === '0';\n if (isCurrentLeadingZero && !isNextLeadingZero) {\n return selectionPosition - 1;\n }\n if (isNextLeadingZero && isDelete) {\n return selectionPosition + 1;\n }\n var numberCounter = 0;\n for (var idx = 0; idx < selectionPosition; idx++) {\n if (DIGITS_REGEX.test(currentValue.charAt(idx))) {\n numberCounter++;\n }\n }\n var newSelection = 0;\n while (numberCounter > 0 && nextValue.length > newSelection) {\n if (DIGITS_REGEX.test(nextValue.charAt(newSelection))) {\n numberCounter--;\n }\n newSelection++;\n }\n return newSelection;\n};\n/**\n * @hidden\n */\nexport var sanitizeNumber = function (state, format, intlService) {\n var newState = __assign({}, state);\n var prevLooseValue = newState.prevLooseValue;\n var symbols = intlService.numberSymbols();\n var restrictedSymbols = getFormatSymbols(format, intlService);\n var currentLooseValueAsString = String(newState.currentLooseValue);\n var prevLooseValueAsString = String(prevLooseValue);\n var sanitizeRegex = new RegExp(\"[^\\\\d\\\\\".concat(symbols.decimal, \"]\"), 'g');\n var sanitizeGroupRegex = new RegExp(\"[^\\\\d\\\\\".concat(symbols.decimal, \"\\\\\").concat(symbols.group, \"]\"), 'g');\n var allSymbolsRegex = new RegExp(\"[\\\\d\\\\\".concat(symbols.decimal, \"\\\\\").concat(symbols.group, \"]\"));\n var sanitizedString = currentLooseValueAsString.replace(sanitizeRegex, '');\n var numberStart = getFirstNumberIndex(currentLooseValueAsString, DIGITS_REGEX);\n var numberEnd = numberStart === -1 ? -1 : getLastNumberIndex(currentLooseValueAsString, DIGITS_REGEX);\n var decimalIndex = currentLooseValueAsString.indexOf(symbols.decimal);\n var sanitizedFormattedString = (currentLooseValueAsString.substring(0, numberStart) +\n currentLooseValueAsString.substring(numberStart, numberEnd).replace(sanitizeGroupRegex, '') +\n currentLooseValueAsString.substring(numberEnd, currentLooseValueAsString.length))\n .split('')\n .filter(function (s) { return restrictedSymbols.indexOf(s) !== -1 || s.search(allSymbolsRegex) !== -1; })\n .join('');\n var formattedMax = intlService.formatNumber(MAX_DECIMAL, format).replace(sanitizeRegex, '');\n var maxDecimalIndex = formattedMax.indexOf(symbols.decimal);\n var maxDecimalCount = maxDecimalIndex > -1 ? formattedMax.length - maxDecimalIndex - 1 : 0;\n var formattedMin = intlService.formatNumber(MIN_DECIMAL, format).replace(sanitizeRegex, '');\n var minDecimalIndex = formattedMin.indexOf(symbols.decimal);\n var minDecimalCount = minDecimalIndex > -1 ? formattedMin.length - minDecimalIndex - 1 : 0;\n var _a = getFormatPrefixSufix(format, intlService), positiveInfo = _a.positiveInfo, negativeInfo = _a.negativeInfo, zeroInfo = _a.zeroInfo, oneInfo = _a.oneInfo;\n var formatInfo = [positiveInfo, negativeInfo, zeroInfo, oneInfo];\n var isFormatContainPrefixSuffix = formatInfo.findIndex(function (info) { return info.findIndex(function (nestedInfo) { return Boolean(nestedInfo); }) !== -1; }) !== 1;\n var isDelete = currentLooseValueAsString.length > 0 && currentLooseValueAsString.length < prevLooseValueAsString.length;\n var isPercentFormat = typeof format === 'string' &&\n format[0] === 'p' &&\n currentLooseValueAsString &&\n currentLooseValueAsString.indexOf(symbols.percentSign) === -1;\n if (!newState.isPaste) {\n // 1. Empty input\n if (currentLooseValueAsString === '') {\n newState.eventValue = null;\n newState.currentLooseValue = '';\n return newState;\n }\n // 2. Check is minus sign\n if (newState.currentLooseValue === symbols.minusSign && intlService.formatNumber(-0, format) !== prevLooseValueAsString) {\n newState.eventValue = -0;\n newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n setSelection(newState, getInitialPosition(newState.currentLooseValue, symbols), newState.currentLooseValue, formatInfo);\n return newState;\n }\n // 3. Check is decimal symbol\n if (newState.currentLooseValue === symbols.decimal) {\n newState.eventValue = 0;\n var valueCandidate = formatValue(newState.eventValue, format, intlService);\n if (minDecimalCount === 0 && maxDecimalCount > 0) {\n var currentLastNumberIndex = getLastNumberIndex(valueCandidate, DIGITS_REGEX);\n newState.currentLooseValue = valueCandidate.substring(0, currentLastNumberIndex) +\n symbols.decimal +\n valueCandidate.substring(currentLastNumberIndex);\n }\n else {\n newState.currentLooseValue = valueCandidate;\n }\n setSelection(newState, getInitialPosition(newState.currentLooseValue, symbols) + 1, newState.currentLooseValue, formatInfo);\n return newState;\n }\n // 4. Minus sign toggle\n if (isMinusSymbolAdded(newState, symbols)) {\n var nextValue = intlService.parseNumber(prevLooseValue, format);\n newState.eventValue = -(nextValue !== null ? nextValue : 0);\n newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n var currentNumberStart = getFirstNumberIndex(newState.currentLooseValue, DIGITS_REGEX);\n var oldNumberStart = getFirstNumberIndex(prevLooseValueAsString, DIGITS_REGEX);\n setSelection(newState, newState.selectionEnd - 1 + (currentNumberStart - oldNumberStart), newState.currentLooseValue, formatInfo);\n return newState;\n }\n if (isMinusSymbolRemoved(newState, symbols)) {\n newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n setSelection(newState, newState.selectionStart, newState.currentLooseValue, formatInfo);\n return newState;\n }\n // 5. Duplicate decimal - it's possible only as trailing\n if (isDecimalDuplicated(newState, symbols)) {\n setInvalid(newState, format, formatInfo, intlService);\n return newState;\n }\n // 6. Percent format\n if (isPercentFormat) {\n newState.eventValue = intlService.parseNumber(currentLooseValueAsString, format) / 100;\n newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n return newState;\n }\n // 7. More than 15 numeric symbols\n var numericSymbols = String(newState.currentLooseValue).replace(/[^\\d]/g, '');\n if (numericSymbols.length > MAX_PRECISION) {\n setInvalid(newState, format, formatInfo, intlService);\n return newState;\n }\n // 8. Check prefix / suffix for modifications\n if (sanitizedString !== currentLooseValueAsString &&\n currentLooseValueAsString &&\n isFormatContainPrefixSuffix) {\n var formatInfoIndex = formatInfo.findIndex(function (_a) {\n var prefix = _a[0], suffix = _a[1];\n var prefixIndex = currentLooseValueAsString.indexOf(prefix);\n var suffixIndex = currentLooseValueAsString.indexOf(suffix);\n var prefixFound = prefixIndex === 0;\n var suffixFound = suffixIndex === currentLooseValueAsString.length - suffix.length;\n var prefixGap = prefixIndex + prefix.length !== numberStart &&\n numberStart !== -1 &&\n currentLooseValueAsString[prefixIndex + prefix.length] !== symbols.decimal;\n var suffixGap = suffixIndex !== numberEnd &&\n numberEnd !== -1 &&\n currentLooseValueAsString[suffixIndex - 1] !== symbols.decimal;\n if (prefix && suffix) {\n if (prefixGap || suffixGap) {\n return false;\n }\n return prefixFound && suffixFound;\n }\n if (prefix) {\n if (prefixGap) {\n return false;\n }\n return prefixFound;\n }\n if (suffix) {\n if (suffixGap) {\n return false;\n }\n return suffixFound;\n }\n return false;\n });\n if (formatInfoIndex === -1) {\n setInvalid(newState, format, formatInfo, intlService);\n return newState;\n }\n }\n // 9. Value ending on decimal separator (here as decimal might be typed inside format)\n if (sanitizedString[sanitizedString.length - 1] === symbols.decimal && maxDecimalCount > 0) {\n newState.eventValue = intlService.parseNumber(currentLooseValueAsString, format);\n newState.currentLooseValue = sanitizedFormattedString;\n return newState;\n }\n // 10. prevent deleting decimal and group symbols\n if (newState.currentLooseValue && prevLooseValue) {\n var isSpecialSymbolDeleted = (restrictedSymbols + symbols.decimal + symbols.group)\n .split('')\n .findIndex(function (s) {\n if (currentLooseValueAsString.split('').filter(function (x) { return x === s; }).length <\n prevLooseValueAsString.split('').filter(function (x) { return x === s; }).length &&\n currentLooseValueAsString.length + 1 === prevLooseValueAsString.length) {\n if (s === symbols.decimal &&\n getDecimalCount(prevLooseValueAsString.replace(sanitizeRegex, ''), symbols.decimal) === 0) {\n return false;\n }\n return true;\n }\n return false;\n }) > -1;\n if (isSpecialSymbolDeleted) {\n newState.eventValue = intlService.parseNumber(state.prevLooseValue, format);\n newState.currentLooseValue = state.prevLooseValue;\n return newState;\n }\n }\n var currentDecimalCount = getDecimalCount(sanitizedString, symbols.decimal);\n var endsOnDecimal = sanitizedString[sanitizedString.length - 1] === '0';\n // 11. Deleting more decimals than allowed\n if (isDelete && endsOnDecimal && currentDecimalCount < minDecimalCount) {\n newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n return newState;\n }\n // 12. Ending on zero OR more decimals than allowed\n if (currentDecimalCount > 0) {\n var valueUntillDecimal = currentLooseValueAsString.substring(0, decimalIndex);\n if (endsOnDecimal && (!valueUntillDecimal || prevLooseValueAsString.indexOf(valueUntillDecimal) !== 0)) {\n // ending on zero but typing before decimal separator\n newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n var nextLooseValue = formatValue(newState.eventValue, format, intlService);\n setSelection(newState, changeBasedSelection(currentLooseValueAsString, nextLooseValue, newState.selectionEnd, isDelete, sanitizeRegex), nextLooseValue, formatInfo);\n newState.currentLooseValue = nextLooseValue;\n return newState;\n }\n if (currentDecimalCount > maxDecimalCount) {\n // typing more symbols than format allows\n var looseDecimalPlace = currentLooseValueAsString.indexOf(symbols.decimal);\n var result = currentLooseValueAsString.substring(0, looseDecimalPlace) +\n currentLooseValueAsString.substring(looseDecimalPlace, looseDecimalPlace + 1 + maxDecimalCount) +\n currentLooseValueAsString.substring(numberEnd, String(newState.currentLooseValue).length);\n newState.eventValue = intlService.parseNumber(result, format);\n newState.currentLooseValue = result;\n setSelection(newState, newState.selectionStart, result, formatInfo);\n return newState;\n }\n if (minDecimalCount !== maxDecimalCount && currentDecimalCount <= maxDecimalCount && endsOnDecimal) {\n // adding trailing zeroes\n newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n newState.currentLooseValue = sanitizedFormattedString;\n return newState;\n }\n if (currentDecimalCount < minDecimalCount) {\n // deleting more decimals than allowed\n newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n newState.currentLooseValue = formatValue(newState.eventValue, format, intlService);\n return newState;\n }\n }\n }\n // X. All other values should be parsed\n newState.eventValue = intlService.parseNumber(newState.currentLooseValue, format);\n if (isPercentFormat) {\n newState.eventValue = newState.eventValue / 100;\n }\n if (typeof newState.eventValue === 'number') {\n var nextLooseValue = formatValue(newState.eventValue, format, intlService);\n // First digit add\n if (currentLooseValueAsString.length === 1) {\n setSelection(newState, getInitialPosition(nextLooseValue, symbols), nextLooseValue, formatInfo);\n }\n else {\n setSelection(newState, changeBasedSelection(currentLooseValueAsString, nextLooseValue, newState.selectionEnd, isDelete, sanitizeRegex), nextLooseValue, formatInfo);\n }\n newState.currentLooseValue = nextLooseValue;\n }\n else {\n // Case when deleting last number\n newState.currentLooseValue = formatValue(intlService.parseNumber(sanitizedString), format, intlService);\n }\n return newState;\n};\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-inputs',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698929002,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { guid, classNames, dispatchEvent, getTabIndex, createPropsContext, usePropsContext, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the PropsContext of the `RadioButton` component.\n * Used for global configuration of all `RadioButton` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var RadioButtonPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact RadioButton component]({% slug overview_radiobutton %}).\n *\n * Accepts properties of type [RadioButtonProps]({% slug api_inputs_radiobuttonprops %}).\n * Obtaining the `ref` returns an object of type [RadioButtonHandle]({% slug api_inputs_radiobuttonhandle %}).\n */\nexport var RadioButton = React.forwardRef(function (directProps, target) {\n var _a;\n validatePackage(packageMetadata);\n var props = usePropsContext(RadioButtonPropsContext, directProps);\n var ariaDescribedBy = props.ariaDescribedBy, checked = props.checked, children = props.children, className = props.className, disabled = props.disabled, id = props.id, size = props.size, label = props.label, labelPlacement = props.labelPlacement, name = props.name, style = props.style, tabIndex = props.tabIndex, value = props.value, valid = props.valid, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur, others = __rest(props, [\"ariaDescribedBy\", \"checked\", \"children\", \"className\", \"disabled\", \"id\", \"size\", \"label\", \"labelPlacement\", \"name\", \"style\", \"tabIndex\", \"value\", \"valid\", \"onChange\", \"onFocus\", \"onBlur\"]);\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n var getImperativeHandle = React.useCallback(function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); }, [focusElement]);\n React.useImperativeHandle(target, getImperativeHandle);\n var calculatedId = React.useMemo(function () { return guid(); }, []);\n var handleChange = React.useCallback(function (event) {\n dispatchEvent(onChange, event, getImperativeHandle(), { value: value });\n }, [onChange, value, disabled]);\n var handleFocus = React.useCallback(function (event) {\n if (onFocus && !disabled) {\n dispatchEvent(onFocus, event, getImperativeHandle(), undefined);\n }\n }, [onFocus, disabled]);\n var handleBlur = React.useCallback(function (event) {\n if (onBlur && !disabled) {\n dispatchEvent(onBlur, event, getImperativeHandle(), undefined);\n }\n }, [onBlur, disabled]);\n var inputProps = __assign({ type: 'radio', id: id || calculatedId, name: name, className: classNames('k-radio', (_a = {},\n _a[\"k-radio-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a['k-invalid'] = valid === false,\n _a), className), ref: elementRef, disabled: disabled, tabIndex: getTabIndex(tabIndex, disabled), checked: checked, style: style, 'aria-describedby': ariaDescribedBy, value: value, onChange: handleChange, onFocus: handleFocus, onBlur: handleBlur }, others);\n var radioButtonLabel = (React.createElement(React.Fragment, null, label !== undefined ? (React.createElement(\"label\", { className: 'k-radio-label', htmlFor: id || calculatedId, style: { userSelect: 'none' }, \"aria-label\": label }, label)) : null));\n var radio = React.createElement(\"input\", __assign({}, inputProps));\n return (labelPlacement === 'before'\n ? (React.createElement(React.Fragment, null,\n radioButtonLabel,\n radio,\n children)) : (React.createElement(React.Fragment, null,\n radio,\n radioButtonLabel,\n children)));\n});\nRadioButton.propTypes = {\n ariaDescribedBy: PropTypes.string,\n checked: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n label: PropTypes.string,\n labelPlacement: PropTypes.string,\n name: PropTypes.string,\n style: PropTypes.object,\n tabIndex: PropTypes.number,\n value: PropTypes.any,\n valid: PropTypes.bool,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n};\nvar defaultProps = {\n size: 'medium'\n};\nRadioButton.displayName = 'KendoRadioButton';\nRadioButton.defaultProps = defaultProps;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { RadioButton } from './RadioButton';\nimport { useRtl, guid, classNames, focusFirstFocusableChild, dispatchEvent, createPropsContext, usePropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the PropsContext of the `RadioGroup` component.\n * Used for global configuration of all `RadioGroup` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var RadioGroupPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact RadioGroup component]({% slug overview_radiogroup %}).\n *\n * Accepts properties of type [RadioGroupProps]({% slug api_inputs_radiogroupprops %}).\n * Obtaining the `ref` returns an object of type [RadioGroupHandle]({% slug api_inputs_radiogrouphandle %}).\n */\nexport var RadioGroup = React.forwardRef(function (directProps, target) {\n validatePackage(packageMetadata);\n var props = usePropsContext(RadioGroupPropsContext, directProps);\n var ariaLabelledBy = props.ariaLabelledBy, ariaDescribedBy = props.ariaDescribedBy, className = props.className, data = props.data, defaultValue = props.defaultValue, disabled = props.disabled, name = props.name, labelPlacement = props.labelPlacement, layout = props.layout, style = props.style, value = props.value, valid = props.valid, _a = props.item, Item = _a === void 0 ? defaultProps.item : _a, onChange = props.onChange, onFocus = props.onFocus;\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n focusFirstFocusableChild(elementRef.current);\n }\n }, []);\n var getImperativeHandle = React.useCallback(function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); }, [focusElement]);\n React.useImperativeHandle(target, getImperativeHandle);\n var _b = React.useState(defaultValue), stateChecked = _b[0], setStateChecked = _b[1];\n var isControlled = value !== undefined;\n var checkedRadioValue = isControlled ? value : stateChecked;\n var handleChange = React.useCallback(function (event) {\n var currentValue = event.value;\n if (!isControlled && !disabled) {\n setStateChecked(currentValue);\n }\n if (onChange && !disabled) {\n dispatchEvent(onChange, event.syntheticEvent, getImperativeHandle(), { value: currentValue });\n }\n }, [setStateChecked, onChange, disabled]);\n var handleFocus = React.useCallback(function (event) {\n if (onFocus && !disabled) {\n dispatchEvent(onFocus, event.syntheticEvent, getImperativeHandle(), undefined);\n }\n }, [onFocus, disabled]);\n var radioGroupName = React.useMemo(function () { return guid(); }, []);\n var radioGroupClasses = classNames('k-radio-list', {\n 'k-list-horizontal': layout === 'horizontal',\n 'k-list-vertical': layout === 'vertical' || layout === undefined\n }, className);\n var dir = useRtl(elementRef, props.dir);\n var radioOptions = (data && data.map(function (option, index) {\n var isCurrentlyChecked = checkedRadioValue === option.value;\n var noOptionChecked = checkedRadioValue === null || checkedRadioValue === undefined;\n var radioButtonProps = __assign(__assign({}, option), { valid: valid, checked: isCurrentlyChecked, disabled: (option.disabled || disabled) ? true : false, labelPlacement: option.labelPlacement ? option.labelPlacement : labelPlacement, tabIndex: option.tabIndex\n ? option.tabIndex\n : (noOptionChecked && index === 0) || isCurrentlyChecked\n ? 0\n : -1, index: index, name: name || radioGroupName, onChange: handleChange, onFocus: handleFocus });\n return (React.createElement(Item, { className: classNames('k-radio-item', { 'k-disabled': radioButtonProps.disabled || disabled }), key: index, role: 'none' },\n React.createElement(RadioButton, __assign({}, radioButtonProps))));\n }));\n return (React.createElement(\"ul\", { role: \"radiogroup\", className: radioGroupClasses, ref: elementRef, dir: dir, style: style, \"aria-labelledby\": ariaLabelledBy, \"aria-describedby\": ariaDescribedBy }, radioOptions));\n});\nvar defaultProps = {\n item: function (props) { return React.createElement(\"li\", __assign({}, props)); }\n};\nRadioGroup.propTypes = {\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n className: PropTypes.string,\n data: PropTypes.arrayOf(PropTypes.object),\n defaultValue: PropTypes.any,\n dir: PropTypes.string,\n disabled: PropTypes.bool,\n labelPlacement: PropTypes.string,\n layout: PropTypes.string,\n name: PropTypes.string,\n style: PropTypes.object,\n value: PropTypes.any,\n onChange: PropTypes.func,\n onFocus: PropTypes.func\n};\nRadioGroup.defaultProps = defaultProps;\nRadioGroup.displayName = 'KendoRadioGroup';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, useDir, useDraggable, getTabIndex, createPropsContext, usePropsContext } from '@progress/kendo-react-common';\nimport { messages, sliderDragTitle } from './../messages';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { rangeReducer, RANGE_ACTION } from './range-raducer';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * @hidden\n */\nvar useRange = function (defaultValue, args, callback) {\n var _a = React.useState(defaultValue), state = _a[0], setState = _a[1];\n var handleDispatchAction = React.useCallback(function (action) {\n var newState = rangeReducer(args.state || state, __assign(__assign({}, action), args));\n if (callback) {\n callback(newState, action.event);\n }\n setState(newState);\n }, [args, callback]);\n return [state, handleDispatchAction];\n};\n/**\n * Represents the PropsContext of the `RangeSlider` component.\n * Used for global configuration of all `RangeSlider` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var RangeSliderPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact RangeSlider component]({% slug overview_rangeslider %}).\n *\n * Accepts properties of type [RangeSliderProps]({% slug api_inputs_rangesliderprops %}).\n * Obtaining the `ref` returns an object of type [RangeSliderHandle]({% slug api_inputs_rangesliderhandle %}).\n */\nexport var RangeSlider = React.forwardRef(function (directProps, ref) {\n var _a, _b;\n validatePackage(packageMetadata);\n var props = usePropsContext(RangeSliderPropsContext, directProps);\n var target = React.useRef(null);\n var sliderRef = React.useRef(null);\n var sliderSelectionRef = React.useRef(null);\n var startHandle = React.useRef(null);\n var endHandle = React.useRef(null);\n var focus = React.useCallback(function () {\n if (startHandle.current) {\n startHandle.current.focus();\n }\n }, [startHandle]);\n React.useImperativeHandle(target, function () { return ({\n element: sliderRef.current,\n focus: focus,\n props: props\n }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n var min = React.useMemo(function () { return props.min; }, [props.min]);\n var max = React.useMemo(function () { return props.max; }, [props.max]);\n var step = React.useMemo(function () { return props.step !== undefined ? props.step : defaultProps.step; }, [props.step, defaultProps.step]);\n var dir = useDir(sliderRef, props.dir);\n var handleChange = function (newValue, event) {\n if (props.onChange && target.current) {\n props.onChange.call(undefined, {\n value: newValue,\n target: target.current,\n syntheticEvent: event\n });\n }\n };\n var _c = React.useState(''), currentDrag = _c[0], setCurrentDrag = _c[1];\n var _d = useRange(props.defaultValue || defaultProps.defaultValue, {\n min: min,\n max: max,\n step: step,\n state: props.value\n }, handleChange), stateValue = _d[0], dispatchStateValue = _d[1];\n var value = React.useMemo(function () { return props.value || stateValue; }, [props.value, stateValue]);\n var sliderTrackRef = React.useRef(null);\n var sliderTrackWrapRef = React.useRef(null);\n var percentStart = React.useMemo(function () { return ((value.start - min) / (max - min)) * 100; }, [value.start, min, max]);\n var percentEnd = React.useMemo(function () { return ((value.end - min) / (max - min)) * 100; }, [value.end, min, max]);\n var sliderItemsStyle = React.useMemo(function () { return props.vertical ? { paddingTop: 0, height: '100%' } : {}; }, [props.vertical]);\n var trackStyles = React.useMemo(function () { return props.vertical\n ? { marginTop: '0.5rem', marginBottom: '0.5rem' }\n : { marginLeft: '0.5rem', marginRight: '0.5rem' }; }, [props.vertical]);\n var localization = useLocalization();\n var calcNewDistance = React.useCallback(function (event) {\n if (!sliderTrackWrapRef.current) {\n return;\n }\n var computed = sliderTrackWrapRef.current.getBoundingClientRect();\n var distance = props.vertical\n ? (computed.bottom - event.clientY)\n : dir === 'rtl'\n ? (computed.right - event.clientX)\n : (event.clientX - computed.left);\n var size = props.vertical ? computed.height : computed.width;\n var percentage = (distance / size);\n var payload = (min + percentage * (max - min));\n return payload;\n }, [\n sliderTrackWrapRef,\n props.vertical,\n dir,\n min,\n max,\n stateValue.start,\n stateValue.end,\n props.value && props.value.start,\n props.value && props.value.end\n ]);\n var calcKey = React.useCallback(function (payload) {\n if (payload <= value.start) {\n return 'start';\n }\n if (payload >= value.end) {\n return 'end';\n }\n return (2 * payload < value.end + value.start) ? 'start' : 'end';\n }, [\n stateValue.start, stateValue.end,\n props.value && props.value.start,\n props.value && props.value.end\n ]);\n var handleStartKeyDown = React.useCallback(function (event) {\n switch (event.keyCode) {\n case Keys.right:\n event.preventDefault();\n dispatchStateValue({ type: dir === 'rtl' ? RANGE_ACTION.decrease : RANGE_ACTION.increase, key: 'start', event: event });\n break;\n case Keys.up:\n event.preventDefault();\n dispatchStateValue({ type: RANGE_ACTION.increase, key: 'start', event: event });\n break;\n case Keys.left:\n event.preventDefault();\n dispatchStateValue({ type: dir === 'rtl' ? RANGE_ACTION.increase : RANGE_ACTION.decrease, key: 'start', event: event });\n break;\n case Keys.down:\n event.preventDefault();\n dispatchStateValue({ type: RANGE_ACTION.decrease, key: 'start', event: event });\n break;\n case Keys.home:\n event.preventDefault();\n dispatchStateValue({ type: RANGE_ACTION.min, key: 'start', event: event });\n break;\n case Keys.end:\n event.preventDefault();\n dispatchStateValue({ type: RANGE_ACTION.max, key: 'start', event: event });\n break;\n default:\n break;\n }\n }, [dispatchStateValue]);\n var handleEndKeyDown = React.useCallback(function (event) {\n switch (event.keyCode) {\n case Keys.right:\n event.preventDefault();\n dispatchStateValue({ type: dir === 'rtl' ? RANGE_ACTION.decrease : RANGE_ACTION.increase, key: 'end', event: event });\n break;\n case Keys.up:\n event.preventDefault();\n dispatchStateValue({ type: RANGE_ACTION.increase, key: 'end', event: event });\n break;\n case Keys.left:\n event.preventDefault();\n dispatchStateValue({ type: dir === 'rtl' ? RANGE_ACTION.increase : RANGE_ACTION.decrease, key: 'end', event: event });\n break;\n case Keys.down:\n event.preventDefault();\n dispatchStateValue({ type: RANGE_ACTION.decrease, key: 'end', event: event });\n break;\n case Keys.home:\n event.preventDefault();\n dispatchStateValue({ type: RANGE_ACTION.min, key: 'end', event: event });\n break;\n case Keys.end:\n event.preventDefault();\n dispatchStateValue({ type: RANGE_ACTION.max, key: 'end', event: event });\n break;\n default:\n break;\n }\n }, [dispatchStateValue, dir]);\n var handleTrackPress = React.useCallback(function (event) {\n var payload = calcNewDistance(event);\n var key = calcKey(payload);\n setCurrentDrag(key);\n key === 'end' ? endHandle.current.focus() : startHandle.current.focus();\n var action = (key === 'end' ? RANGE_ACTION.end : RANGE_ACTION.start);\n dispatchStateValue({ type: action, payload: payload, event: event });\n }, [props.vertical, min, max, dispatchStateValue]);\n var handleTrackDrag = function (event) {\n var payload = calcNewDistance(event);\n var action = currentDrag === 'end' ? RANGE_ACTION.end : RANGE_ACTION.start;\n dispatchStateValue({ type: action, payload: payload, event: event });\n };\n var handleTrackRelease = function (event) {\n var payload = calcNewDistance(event);\n var action = currentDrag === 'end' ? RANGE_ACTION.end : RANGE_ACTION.start;\n dispatchStateValue({ type: action, payload: payload, event: event });\n setCurrentDrag('');\n };\n useDraggable(sliderTrackWrapRef, { onPress: handleTrackPress, onDrag: handleTrackDrag, onRelease: handleTrackRelease });\n return (React.createElement(\"div\", { id: props.id, style: props.style, ref: sliderRef, dir: dir, className: classNames('k-slider', {\n 'k-rtl': dir === 'rtl',\n 'k-disabled': props.disabled,\n 'k-slider-vertical': props.vertical,\n 'k-slider-horizontal': !props.vertical\n }, props.className) },\n React.createElement(\"div\", { ref: sliderTrackWrapRef, className: \"k-slider-track-wrap\", style: __assign({ flexGrow: 1, position: 'relative', touchAction: 'none' }, trackStyles) },\n props.children && (React.createElement(\"ul\", { className: \"k-reset k-slider-items\", style: __assign({}, sliderItemsStyle) }, React.Children.map(props.children, function (child) {\n return child && React.cloneElement(child, {\n position: 100 * (child.props.position - props.min) /\n (props.max - props.min),\n vertical: props.vertical\n }, child.props.children);\n }))),\n React.createElement(\"div\", { ref: sliderTrackRef, className: \"k-slider-track\", style: props.vertical\n ? { bottom: 0, height: '100%' }\n : (_a = {}, _a[dir === 'rtl' ? 'right' : 'left'] = 0, _a.width = '100%', _a) },\n (percentStart !== null && percentEnd !== null) && React.createElement(\"div\", { \"data-selection\": true, ref: sliderSelectionRef, title: \"\".concat(value.start, \" - \").concat(value.end), className: \"k-slider-selection\", style: props.vertical\n ? { height: (percentEnd - percentStart) + '%', bottom: percentStart + '%' }\n : (_b = {},\n _b[dir === 'rtl' ? 'right' : 'left'] = percentStart + '%',\n _b.width = (percentEnd - percentStart) + '%',\n _b) }),\n React.createElement(\"span\", { ref: startHandle, role: \"slider\", tabIndex: getTabIndex(props.startTabIndex, props.disabled, undefined), \"aria-valuemin\": min, \"aria-valuemax\": Math.max(max, value.end), \"aria-valuenow\": value.start, \"aria-disabled\": props.disabled ? 'true' : undefined, \"aria-valuetext\": \"\".concat(value.start, \" - \").concat(value.end), className: \"k-draghandle\", title: localization.toLanguageString(sliderDragTitle, messages[sliderDragTitle]), style: props.vertical\n ? { bottom: 'calc(' + percentStart + '%)', zIndex: 1 }\n : dir === 'rtl' ? { right: 'calc(' + percentStart + '% - 13px)', zIndex: 1 }\n : { left: 'calc(' + percentStart + '%)', zIndex: 1 }, onKeyDown: handleStartKeyDown }),\n React.createElement(\"span\", { ref: endHandle, role: \"slider\", tabIndex: getTabIndex(props.endTabIndex, props.disabled, undefined), \"aria-valuemin\": Math.min(min, value.start), \"aria-valuemax\": max, \"aria-valuenow\": value.end, \"aria-disabled\": props.disabled ? 'true' : undefined, \"aria-valuetext\": \"\".concat(value.start, \" - \").concat(value.end), className: \"k-draghandle\", title: localization.toLanguageString(sliderDragTitle, messages[sliderDragTitle]), style: props.vertical\n ? { bottom: 'calc(' + percentEnd + '%)', zIndex: 1 }\n : dir === 'rtl' ? { right: 'calc(' + percentEnd + '% - 13px)', zIndex: 1 }\n : { left: 'calc(' + percentEnd + '%)', zIndex: 1 }, onKeyDown: handleEndKeyDown })))));\n});\nvar propTypes = {\n value: function (props, propName, componentName) {\n if (props.value) {\n var start = props.value.start;\n var end = props.value.end;\n var min = props.min;\n var max = props.max;\n if (start > end || start > max || start < min || end > max || end < min || end < start) {\n return new Error(\"Invalid prop + \".concat(propName, \" supplied to \").concat(componentName, \".\\n The { start, end } value must be between the min & max value and { start, end } must be start < end.\\n \"));\n }\n }\n return null;\n },\n defaultValue: function (props, propName, componentName) {\n if (props.defaultValue) {\n var start = props.defaultValue.start;\n var end = props.defaultValue.end;\n var min = props.min;\n var max = props.max;\n if (start > end || start > max || start < min || end > max || end < min || end < start) {\n return new Error(\"Invalid prop + \".concat(propName, \" supplied to \").concat(componentName, \".\\n The { start, end } value must be between the min & max value and { start, end } must be start < end.\\n \"));\n }\n }\n return null;\n },\n onChange: PropTypes.func,\n step: PropTypes.number,\n min: function (props, propName, componentName) {\n var prop = props[propName];\n var min = props.min;\n var max = props.max;\n if (min === undefined) {\n return new Error(\"Invalid prop + \".concat(propName, \" supplied to \").concat(componentName, \".\\n \").concat(propName, \" value can not be undefined.\\n \"));\n }\n if (prop && min >= max) {\n return new Error(\"Invalid prop + \".concat(propName, \" supplied to \").concat(componentName, \".\\n \").concat(propName, \" value can not be equal to or bigger than the max value.\\n \"));\n }\n return null;\n },\n max: function (props, propName, componentName) {\n var prop = props[propName];\n var min = props.min;\n var max = props.max;\n if (max === undefined) {\n return new Error(\"Invalid prop + \".concat(propName, \" supplied to \").concat(componentName, \".\\n \").concat(propName, \" value can not be undefined.\\n \"));\n }\n if (prop && max <= min) {\n return new Error(\"Invalid prop + \".concat(propName, \" supplied to \").concat(componentName, \".\\n \").concat(propName, \" value can not be equal to or smaller than the min value.\\n \"));\n }\n return null;\n },\n vertical: PropTypes.bool,\n disabled: PropTypes.bool,\n dir: PropTypes.oneOf(['ltr', 'rtl'])\n};\nvar defaultProps = {\n step: 1,\n defaultValue: {\n start: 0,\n end: 0\n },\n vertical: false,\n disabled: false\n};\nRangeSlider.displayName = 'KendoReactRangeSlider';\n// TODO: delete casting when @types/react is updated!\nRangeSlider.propTypes = propTypes;\nRangeSlider.defaultProps = defaultProps;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/**\n * @hidden\n */\nexport var RANGE_ACTION;\n(function (RANGE_ACTION) {\n RANGE_ACTION[\"start\"] = \"start\";\n RANGE_ACTION[\"end\"] = \"end\";\n RANGE_ACTION[\"min\"] = \"min\";\n RANGE_ACTION[\"max\"] = \"max\";\n RANGE_ACTION[\"increase\"] = \"increase\";\n RANGE_ACTION[\"decrease\"] = \"decrease\";\n})(RANGE_ACTION || (RANGE_ACTION = {}));\n/**\n * @hidden\n */\nexport var rangeReducer = function (state, action) {\n var newState;\n var newValue;\n switch (action.type) {\n case RANGE_ACTION.start:\n if (action.payload === undefined) {\n return state;\n }\n newState = {\n start: action.payload > state.end ? state.end : Math.max(action.payload, action.min),\n end: state.end\n };\n break;\n case RANGE_ACTION.end:\n if (action.payload === undefined) {\n return state;\n }\n newState = {\n start: state.start,\n end: action.payload < state.start ? state.start : Math.min(action.payload, action.max)\n };\n break;\n case RANGE_ACTION.min:\n if (action.key === 'start') {\n newState = __assign(__assign({}, state), { start: action.min });\n }\n else {\n newState = __assign(__assign({}, state), { end: Math.max(action.min, state.start) });\n }\n break;\n case RANGE_ACTION.max:\n if (action.key === 'start') {\n newState = __assign(__assign({}, state), { start: Math.min(action.max, state.end) });\n }\n else {\n newState = __assign(__assign({}, state), { end: action.max });\n }\n break;\n case RANGE_ACTION.increase:\n if (action.step === undefined || action.key === undefined) {\n return state;\n }\n newValue = state[action.key] + action.step;\n if (action.key === 'start') {\n if (newValue < action.min) {\n newState = __assign(__assign({}, state), { start: action.min });\n }\n else {\n newState = __assign(__assign({}, state), { start: Math.min(newValue, state.end) });\n }\n }\n else {\n if (newValue > action.max) {\n newState = __assign(__assign({}, state), { end: action.max });\n }\n else {\n newState = __assign(__assign({}, state), { end: Math.max(newValue, state.start) });\n }\n }\n break;\n case RANGE_ACTION.decrease:\n if (action.step === undefined || action.key === undefined) {\n return state;\n }\n newValue = state[action.key] - action.step;\n if (action.key === 'start') {\n if (newValue < action.min) {\n newState = __assign(__assign({}, state), { start: action.min });\n }\n else {\n newState = __assign(__assign({}, state), { start: Math.min(newValue, state.end) });\n }\n }\n else {\n if (newValue > action.max) {\n newState = __assign(__assign({}, state), { end: action.max });\n }\n else {\n newState = __assign(__assign({}, state), { end: Math.max(newValue, state.start) });\n }\n }\n break;\n default:\n newState = state;\n break;\n }\n return newState;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, useDir, Keys, getTabIndex, createPropsContext, usePropsContext, IconWrap, toIconName, svgIconPropType } from '@progress/kendo-react-common';\nimport { starIcon, starOutlineIcon } from '@progress/kendo-svg-icons';\nimport { RatingItem } from './RatingItem';\nimport { ratingReducer, RATING_ACTION } from './rating-reducer';\nimport { isSelected, isHalf, calcIsFirstHalf, isCorrectValue, toRound, getRemainder } from './utils';\nimport { messages, ratingAriaLabel } from '../messages';\nimport { useLocalization } from '@progress/kendo-react-intl';\n/**\n * @hidden\n */\nvar useRating = function (defaultValue, args, callback) {\n var _a = React.useState(defaultValue), state = _a[0], setState = _a[1];\n var handleDispatchAction = function (action) {\n var newState = ratingReducer(args.state || state, __assign(__assign({}, action), args));\n if (callback) {\n callback(newState, action.event);\n }\n setState(newState);\n };\n return [state, handleDispatchAction];\n};\n/**\n * Represents the PropsContext of the `Rating` component.\n * Used for global configuration of all `Rating` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var RatingPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact Rating component]({% slug overview_rating %}).\n *\n * Accepts properties of type [RatingProps]({% slug api_inputs_ratingprops %}).\n * Obtaining the `ref` returns an object of type [RatingHandle]({% slug api_inputs_ratinghandle %}).\n */\nexport var Rating = React.forwardRef(function (directProps, ref) {\n var props = usePropsContext(RatingPropsContext, directProps);\n var localization = useLocalization();\n var target = React.useRef(null);\n var ratingRef = React.useRef(null);\n var dir = useDir(ratingRef, props.dir);\n React.useImperativeHandle(target, function () { return ({\n element: ratingRef.current,\n props: props\n }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n var handleChange = React.useCallback(function (newValue, event) {\n if (props.onChange && target.current) {\n props.onChange.call(undefined, {\n value: newValue,\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onChange]);\n var min = React.useMemo(function () { return props.min !== undefined ? props.min : defaultProps.min; }, [props.min]);\n var max = React.useMemo(function () { return props.max !== undefined ? props.max : defaultProps.max; }, [props.max]);\n var precision = React.useMemo(function () { return props.precision || defaultProps.precision; }, [props.precision]);\n var step = React.useMemo(function () { return props.step !== undefined ? props.step : defaultProps.step; }, [props.step]);\n var readonly = React.useMemo(function () { return props.readonly || defaultProps.readonly; }, [props.readonly]);\n var disabled = React.useMemo(function () { return props.disabled || defaultProps.disabled; }, [props.disabled]);\n var Item = React.useMemo(function () { return props.item || defaultProps.item; }, [props.item]);\n var _a = useRating(props.defaultValue !== undefined ? props.defaultValue : defaultProps.defaultValue, {\n state: props.value,\n min: min,\n max: max,\n step: precision === 'half' ? step / 2 : step\n }, handleChange), stateValue = _a[0], dispatchStateValue = _a[1];\n var _b = useRating(null, {\n state: props.value,\n min: min,\n max: max,\n step: precision === 'half' ? step / 2 : step,\n precision: precision\n }), stateHover = _b[0], dispatchStateHover = _b[1];\n var value = React.useMemo(function () { return props.value !== undefined ? props.value : stateValue; }, [props.value, stateValue]);\n var hoveredValue = React.useMemo(function () { return stateHover; }, [stateHover]);\n var selection = React.useMemo(function () { return props.selection || defaultProps.selection; }, [props.selection]);\n var base = React.useMemo(function () { return step / (precision === 'half' ? 2 : 1); }, [step, precision]);\n var handleItemClick = React.useCallback(function (event) {\n if (!event.target || !event.target.element || readonly || disabled) {\n return;\n }\n if (precision === 'half') {\n var rect = event.target.element.getBoundingClientRect();\n var isFirstHalf = calcIsFirstHalf(dir ? dir : 'ltr', rect, event.syntheticEvent.clientX);\n var payload = isFirstHalf ? toRound(event.target.value - (step / 2), base) : event.target.value;\n dispatchStateValue({ type: RATING_ACTION.select, payload: payload, event: event.syntheticEvent });\n }\n else {\n dispatchStateValue({ type: RATING_ACTION.select, payload: event.target.value, event: event.syntheticEvent });\n }\n if (props.onClick) {\n var ev = {\n value: value,\n target: target.current,\n syntheticEvent: event.syntheticEvent\n };\n props.onClick.call(undefined, ev);\n }\n }, [props.onClick, dispatchStateValue, value]);\n var handleKeyDown = React.useCallback(function (syntheticEvent) {\n if (readonly || disabled) {\n return;\n }\n switch (syntheticEvent.keyCode) {\n case Keys.right:\n syntheticEvent.preventDefault();\n dispatchStateValue({\n type: dir === 'rtl' ? RATING_ACTION.decrease : RATING_ACTION.increase, event: syntheticEvent\n });\n break;\n case Keys.left:\n syntheticEvent.preventDefault();\n dispatchStateValue({\n type: dir === 'rtl' ? RATING_ACTION.increase : RATING_ACTION.decrease, event: syntheticEvent\n });\n break;\n case Keys.home:\n syntheticEvent.preventDefault();\n dispatchStateValue({\n type: dir === 'rtl' ? RATING_ACTION.min : RATING_ACTION.max, event: syntheticEvent\n });\n break;\n case Keys.end:\n syntheticEvent.preventDefault();\n dispatchStateValue({\n type: dir === 'rtl' ? RATING_ACTION.max : RATING_ACTION.min, event: syntheticEvent\n });\n break;\n case Keys.esc:\n syntheticEvent.preventDefault();\n dispatchStateValue({\n type: RATING_ACTION.deselect, event: syntheticEvent\n });\n break;\n default:\n break;\n }\n if (props.onKeyDown) {\n props.onKeyDown.call(undefined, {\n value: value,\n target: target.current,\n syntheticEvent: syntheticEvent\n });\n }\n }, [props.onKeyDown, dispatchStateValue, value]);\n var handleFocus = React.useCallback(function (syntheticEvent) {\n if (props.onFocus) {\n var ev = {\n target: target.current,\n syntheticEvent: syntheticEvent\n };\n props.onFocus.call(undefined, ev);\n }\n }, [props.onFocus]);\n var handleBlur = React.useCallback(function (syntheticEvent) {\n if (props.onBlur) {\n var ev = {\n target: target.current,\n syntheticEvent: syntheticEvent\n };\n props.onBlur.call(undefined, ev);\n }\n }, [props.onBlur]);\n var handleItemMouseMove = React.useCallback(function (event) {\n if (!event.target || !event.target.element) {\n return;\n }\n if (precision === 'half') {\n var rect = event.target.element.getBoundingClientRect();\n var isFirstHalf = calcIsFirstHalf(dir ? dir : 'ltr', rect, event.syntheticEvent.clientX);\n var payload = isFirstHalf ? event.target.value - (step / 2) : event.target.value;\n dispatchStateHover({ type: RATING_ACTION.select, payload: payload, event: event.syntheticEvent });\n }\n else {\n dispatchStateHover({ type: RATING_ACTION.select, payload: event.target.value, event: event.syntheticEvent });\n }\n }, [precision, step, dir]);\n var handleMouseLeave = React.useCallback(function (event) {\n dispatchStateHover({ type: RATING_ACTION.reset, event: event.syntheticEvent });\n }, []);\n var items = [];\n var remainder = getRemainder(toRound(max - min, base), step);\n for (var i = min; i <= max; i = toRound(i + step, base)) {\n var itemValue = toRound(i + remainder, base);\n var half = precision === 'half'\n ? isHalf(itemValue, hoveredValue !== null ? hoveredValue : (value !== null ? value : 0), step)\n : false;\n var selectedValue = isSelected(itemValue, value, step, selection);\n var selected = isSelected(itemValue, hoveredValue !== null ? hoveredValue : value, step, selection);\n var hovered = isSelected(itemValue, hoveredValue, step, selection);\n items.push(React.createElement(Item, { key: itemValue, value: itemValue, dir: dir, title: String(half ? toRound(itemValue - (step / 2), base) : itemValue), icon: props.icon, svgIcon: props.svgIcon, half: half, selected: selectedValue || selected, hovered: hovered, onClick: handleItemClick, onMouseMove: handleItemMouseMove, onMouseLeave: handleMouseLeave },\n half && (React.createElement(\"span\", { className: 'k-rating-precision-complement' },\n !(props.icon || props.svgIconOutline) &&\n React.createElement(IconWrap, { name: 'star-outline', icon: starOutlineIcon, style: { clipPath: \"\".concat(dir === 'rtl' ? 'inset(0 50% 0 0)' : 'inset(0 0 0 50%)') }, size: 'xlarge' }),\n (props.icon || props.svgIconOutline) &&\n React.createElement(IconWrap, { name: toIconName(\"\".concat(props.icon, \"-outline\")), icon: props.svgIconOutline, size: 'xlarge' }))),\n half && (React.createElement(\"span\", { className: 'k-rating-precision-part' },\n !(props.icon || props.svgIcon) &&\n React.createElement(IconWrap, { name: 'star', icon: starIcon, style: { clipPath: \"\".concat(dir === 'rtl' ? 'inset(0 0 0 50%)' : 'inset(0 50% 0 0)') }, size: 'xlarge' }),\n (props.icon || props.svgIcon) &&\n React.createElement(IconWrap, { name: props.icon ? toIconName(props.icon) : undefined, icon: props.svgIcon, size: 'xlarge' }))),\n half && (React.createElement(\"span\", { style: { width: '24px', height: '24px', display: 'block' } })),\n !half &&\n (!(props.icon || props.svgIcon) && (hovered || (selected && !hovered)) && React.createElement(IconWrap, { name: 'star', icon: starIcon, size: 'xlarge' })) ||\n (!(props.icon || props.svgIcon) && !hovered && !selected && React.createElement(IconWrap, { name: 'star-outline', icon: starOutlineIcon, size: 'xlarge' })) ||\n ((props.icon || props.svgIcon) && (hovered || (selected && !hovered)) && React.createElement(IconWrap, { name: props.icon, icon: props.svgIcon, size: 'xlarge' })) ||\n ((props.icon || props.svgIcon) && !hovered && React.createElement(IconWrap, { name: toIconName(\"\".concat(props.icon, \"-outline\")), icon: props.svgIconOutline, size: 'xlarge' }))));\n }\n return (React.createElement(\"span\", { id: props.id, style: props.style, ref: ratingRef, role: \"slider\", dir: dir, tabIndex: getTabIndex(props.tabIndex, props.disabled, undefined), className: classNames('k-rating', {\n 'k-rtl': dir === 'rtl',\n 'k-readonly': readonly,\n 'k-disabled': disabled\n }, props.className), onKeyDown: handleKeyDown, onFocus: handleFocus, onBlur: handleBlur, \"aria-valuemin\": min, \"aria-valuemax\": max, \"aria-valuenow\": value !== null ? value : undefined, \"aria-disabled\": disabled ? 'true' : undefined, \"aria-label\": localization.toLanguageString(ratingAriaLabel, messages[ratingAriaLabel]), \"aria-labelledby\": props.ariaLabelledBy, \"aria-describedby\": props.ariaDescribedBy },\n React.createElement(\"input\", { id: 'rating', className: 'k-hidden', readOnly: readonly, disabled: disabled }),\n React.createElement(\"span\", { className: 'k-rating-container' }, items),\n props.label &&\n React.createElement(\"span\", { className: 'k-rating-label' }, props.label)));\n});\nvar propTypes = {\n id: PropTypes.string,\n dir: PropTypes.oneOf(['ltr', 'rtl']),\n selection: PropTypes.oneOf(['continues', 'single']),\n precision: PropTypes.oneOf(['item', 'half']),\n value: function (props, propName, componentName) {\n if (props.value && props.min && props.max && props.step) {\n var correctValue = props.precision === 'half'\n ? isCorrectValue(props.min, props.max, props.step / 2, props.value)\n : isCorrectValue(props.min, props.max, props.step, props.value);\n if (!correctValue && props.precision === 'half') {\n return new Error(\"Invalid prop + \".concat(propName, \" supplied to \").concat(componentName, \".\\n The value of the { value } property is not correct, please check your values.\\n \"));\n }\n }\n return null;\n },\n defaultValue: PropTypes.number,\n min: PropTypes.number,\n max: PropTypes.number,\n step: function (props, propName, componentName) {\n if (props.step !== undefined && props.step <= 0) {\n return new Error(\"Invalid prop + \".concat(propName, \" supplied to \").concat(componentName, \".\\n The value of the { step } property is cannot be equal or less than \\\"0\\\", please check your values.\\n \"));\n }\n return null;\n },\n hovered: PropTypes.number,\n label: PropTypes.string,\n readonly: PropTypes.bool,\n disabled: PropTypes.bool,\n half: PropTypes.bool,\n icon: PropTypes.string,\n svgIcon: svgIconPropType,\n svgIconOutline: svgIconPropType,\n ariaDescribedBy: PropTypes.string\n};\nvar defaultProps = {\n dir: 'ltr',\n min: 1,\n max: 5,\n step: 1,\n item: RatingItem,\n defaultValue: null,\n readonly: false,\n disabled: false,\n selection: 'continues',\n precision: 'item'\n};\nRating.displayName = 'KendoReactRating';\n// TODO: delete casting when @types/react is updated!\nRating.propTypes = propTypes;\nRating.defaultProps = defaultProps;\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, useDir } from '@progress/kendo-react-common';\n/**\n * Represents the RatingItem component.\n */\nexport var RatingItem = React.forwardRef(function (props, ref) {\n var target = React.useRef(null);\n var element = React.useRef(null);\n var dir = useDir(element, props.dir);\n React.useImperativeHandle(target, function () { return ({\n element: element.current,\n props: props,\n value: props.value\n }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n var handleClick = React.useCallback(function (event) {\n if (props.onClick) {\n props.onClick.call(undefined, {\n value: props.value,\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onClick, props.value]);\n var handleKeyDown = React.useCallback(function (event) {\n if (props.onKeyDown) {\n props.onKeyDown.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onKeyDown]);\n var handleFocus = React.useCallback(function (event) {\n if (props.onFocus) {\n props.onFocus.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onFocus]);\n var handleBlur = React.useCallback(function (event) {\n if (props.onBlur) {\n props.onBlur.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onBlur]);\n var handleMouseMove = React.useCallback(function (event) {\n if (props.onMouseMove) {\n props.onMouseMove.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onMouseMove]);\n var handleMouseEnter = React.useCallback(function (event) {\n if (props.onMouseEnter) {\n props.onMouseEnter.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onMouseEnter]);\n var handleMouseLeave = React.useCallback(function (event) {\n if (props.onMouseLeave) {\n props.onMouseLeave.call(undefined, {\n target: target.current,\n syntheticEvent: event\n });\n }\n }, [props.onMouseLeave]);\n return (React.createElement(\"span\", { id: props.id, ref: element, dir: dir, \"data-half\": props.half, tabIndex: props.tabIndex, title: props.title, style: props.style, className: classNames('k-rating-item', {\n 'k-rtl': dir === 'rtl',\n 'k-selected': props.selected,\n 'k-hover': props.hovered\n }, props.className), onClick: handleClick, onKeyDown: handleKeyDown, onFocus: handleFocus, onBlur: handleBlur, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onMouseMove: handleMouseMove }, props.children));\n});\nvar propTypes = {\n id: PropTypes.string,\n icon: PropTypes.any,\n dir: PropTypes.oneOf(['ltr', 'rtl']),\n title: PropTypes.string,\n value: PropTypes.number,\n half: PropTypes.bool,\n selected: PropTypes.bool,\n hovered: PropTypes.bool\n};\nvar defaultProps = {\n dir: 'ltr'\n};\nRatingItem.displayName = 'KendoReactRatingItem';\n// TODO: delete casting when @types/react is updated!\nRatingItem.propTypes = propTypes;\nRatingItem.defaultProps = defaultProps;\n","import { toRound } from './utils';\n/**\n * @hidden\n */\nexport var RATING_ACTION;\n(function (RATING_ACTION) {\n RATING_ACTION[\"select\"] = \"select\";\n RATING_ACTION[\"deselect\"] = \"deselect\";\n RATING_ACTION[\"increase\"] = \"increase\";\n RATING_ACTION[\"decrease\"] = \"decrease\";\n RATING_ACTION[\"min\"] = \"min\";\n RATING_ACTION[\"max\"] = \"max\";\n RATING_ACTION[\"reset\"] = \"reset\";\n})(RATING_ACTION || (RATING_ACTION = {}));\n/**\n * @hidden\n */\nexport var ratingReducer = function (state, action) {\n switch (action.type) {\n case RATING_ACTION.select:\n if (action.payload === undefined || action.step === undefined) {\n return state;\n }\n if (action.payload === state) {\n return null;\n }\n return action.payload >= action.min\n ? action.payload < action.max\n ? toRound(action.payload, action.step)\n : action.max\n : action.min;\n case RATING_ACTION.deselect:\n return null;\n case RATING_ACTION.increase:\n if (action.step === undefined) {\n return state;\n }\n if (state < action.min) {\n return action.min;\n }\n return state + action.step < action.max\n ? toRound(state + action.step, action.step)\n : action.max;\n case RATING_ACTION.decrease:\n if (action.step === undefined) {\n return state;\n }\n return toRound(state - action.step, action.step) >= action.min\n ? toRound(state - action.step, action.step)\n : action.min;\n case RATING_ACTION.min:\n if (action.step === undefined) {\n return state;\n }\n return action.min;\n case RATING_ACTION.max:\n return action.max;\n case RATING_ACTION.reset:\n return null;\n default:\n return state;\n }\n};\n","/**\n * @hidden\n */\nexport var toRound = function (num, base) {\n if (num % 1) {\n var percent = Math.pow(10, (base.toString().split('.')[1] || base.toString().split('.')[0]).length);\n return Math.round(num * percent) / percent;\n }\n return num;\n};\n// Opting out of JS `modulo` calculation due to floating-point problems in JS\n// We're looking for the reminder - R.\n// x / y = a + R\n// R = (x / y) - a | *y\n// R = x - (y * a)\n// : a = Math.floor(x /y );\n/**\n * @hidden\n */\nexport var getRemainder = function (x, y) { return x - (y * Math.floor(x / y)); };\n/**\n * @hidden\n */\nexport var isHalf = function (index, value, step) {\n return (toRound(index - step, step) < value) && (value < index);\n};\n/**\n * @hidden\n */\nexport var isSelected = function (index, value, step, selection) {\n if (value === null) {\n return false;\n }\n if (selection === 'continues') {\n return isHalf(index, value, step)\n ? toRound(index - step / 2, step / 2) <= value\n : index <= value;\n }\n if (selection === 'single') {\n return isHalf(index, value, step)\n ? toRound(index - step / 2, step / 2) === value\n : index === value;\n }\n return false;\n};\n/**\n * @hidden\n */\nexport var calcIsFirstHalf = function (dir, rect, clientX) {\n return dir === 'ltr'\n ? clientX < (rect.x + (rect.width / 2))\n : clientX > (rect.x + (rect.width / 2));\n};\n/**\n * @hidden\n */\nexport var isCorrectValue = function (min, max, step, value) {\n for (var i = min; i <= max; i += step) {\n if (value === i) {\n return true;\n }\n }\n return false;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent, Keys, classNames, Draggable, getTabIndex, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, sliderIncreaseValue, sliderDecreaseValue, sliderDragTitle } from './../messages';\nimport { SLIDER_LABEL_ATTRIBUTE } from './SliderLabel';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { caretAltDownIcon, caretAltLeftIcon, caretAltUpIcon, caretAltRightIcon } from '@progress/kendo-svg-icons';\n/** @hidden */\nvar SliderWithoutContext = /** @class */ (function (_super) {\n __extends(SliderWithoutContext, _super);\n function SliderWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {\n value: _this.props.defaultValue === undefined ? _this.props.min : _this.props.defaultValue,\n focused: false,\n dir: _this.props.dir\n };\n _this._sliderTrack = null;\n _this._element = null;\n /**\n * @hidden\n */\n _this.buttons = function (props) {\n if (!props.enabled) {\n return props.children;\n }\n var increaseSvgArrow = _this.state.dir === 'rtl' ? (_this.props.vertical ? caretAltUpIcon : caretAltLeftIcon) : (_this.props.vertical ? caretAltUpIcon : caretAltRightIcon);\n var decreaseSvgArrow = _this.state.dir === 'rtl' ? (_this.props.vertical ? caretAltDownIcon : caretAltRightIcon) : (_this.props.vertical ? caretAltDownIcon : caretAltLeftIcon);\n var increaseFontArrow = _this.state.dir === 'rtl' ? (_this.props.vertical ? 'caret-alt-up' : 'caret-alt-left') : (_this.props.vertical ? 'caret-alt-up' : 'caret-alt-right');\n var decreaseFontArrow = _this.state.dir === 'rtl' ? (_this.props.vertical ? 'caret-alt-down' : 'caret-alt-right') : (_this.props.vertical ? 'caret-alt-down' : 'caret-alt-left');\n return (React.createElement(React.Fragment, null,\n React.createElement(Button, { className: \"k-button-decrease\", rounded: 'full', icon: decreaseFontArrow, svgIcon: decreaseSvgArrow, title: props.decrementTitle, onClick: props.decrement }),\n props.children,\n React.createElement(Button, { className: \"k-button-increase\", rounded: 'full', icon: increaseFontArrow, svgIcon: increaseSvgArrow, title: props.incrementTitle, onClick: props.increment })));\n };\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._element) {\n _this._element.focus();\n }\n };\n _this.isLabel = function (target) {\n var currentTarget = target;\n while (currentTarget) {\n if (Boolean(currentTarget.getAttribute(SLIDER_LABEL_ATTRIBUTE))) {\n return true;\n }\n currentTarget = currentTarget.parentElement;\n }\n return false;\n };\n _this.onFocus = function () {\n _this.setState({ focused: true });\n };\n _this.onBlur = function () {\n _this.setState({ focused: false });\n };\n _this.onKeyDown = function (e) {\n var newValue = undefined;\n if (e.keyCode === Keys.left || e.keyCode === Keys.down) {\n newValue = _this.state.value - (_this.props.step || 0);\n }\n else if (e.keyCode === Keys.right || e.keyCode === Keys.up) {\n newValue = _this.state.value + (_this.props.step || 0);\n }\n else if (e.keyCode === Keys.home) {\n newValue = _this.props.min;\n }\n else if (e.keyCode === Keys.end) {\n newValue = _this.props.max;\n }\n if (newValue !== undefined) {\n e.preventDefault();\n _this.change(e, newValue);\n }\n };\n _this.decrement = function (e) {\n e.preventDefault();\n _this.change(e, _this.state.value - (_this.props.step || 0));\n };\n _this.increment = function (e) {\n e.preventDefault();\n _this.change(e, _this.state.value + (_this.props.step || 0));\n };\n _this.dragStart = function (e) {\n if (!_this.isLabel(e.event.originalEvent.target)) {\n if (e.event.isTouch) {\n e.event.originalEvent.preventDefault();\n }\n _this.drag(e);\n }\n };\n _this.dragOver = function (e) {\n e.event.originalEvent.preventDefault();\n _this.drag(e);\n };\n _this.drag = function (e) {\n var computed = e.element.getBoundingClientRect();\n var distance = _this.props.vertical\n ? (computed.bottom - e.event.clientY)\n : (_this.state.dir === 'rtl'\n ? computed.right - e.event.clientX\n : e.event.clientX - computed.left);\n var size = _this.props.vertical ? computed.height : computed.width;\n var percentage = (distance / size);\n _this.change(e, _this.props.min + percentage * (_this.props.max - _this.props.min));\n };\n validatePackage(packageMetadata);\n return _this;\n }\n /**\n * @hidden\n */\n SliderWithoutContext.getDerivedStateFromProps = function (props, state) {\n var value = props.value !== undefined ? props.value : state.value;\n var min = props.min, max = props.max;\n return value === undefined ? null :\n { value: Math.min(Math.max(value, min), max) };\n };\n /**\n * @hidden\n */\n SliderWithoutContext.prototype.componentDidMount = function () {\n if (!this.state.dir && window && this._element) {\n // Note: getComputedStyle forces reflow\n var direction = window.getComputedStyle(this._element).direction;\n if (direction) {\n this.setState({ dir: direction });\n }\n }\n };\n /**\n * @hidden\n */\n SliderWithoutContext.prototype.render = function () {\n var _a;\n var _this = this;\n var lS = provideLocalizationService(this);\n var percentValue = ((this.state.value - this.props.min) / (this.props.max - this.props.min)) * 100;\n var trackStyles = this.props.vertical\n ? { marginTop: '0.5rem', marginBottom: '0.5rem' }\n : { marginLeft: '0.5rem', marginRight: '0.5rem' };\n var sliderItemsStyle = this.props.vertical\n ? { paddingTop: 0, height: '100%' }\n : {};\n return (React.createElement(\"div\", { ref: function (el) { return _this._element = el; }, dir: this.state.dir, id: this.props.id, style: __assign({ gap: 0 }, this.props.style), onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, className: classNames('k-slider', {\n 'k-focus': this.state.focused,\n 'k-disabled': this.props.disabled,\n 'k-slider-horizontal': !this.props.vertical,\n 'k-slider-vertical': this.props.vertical\n }, this.props.className) },\n React.createElement(this.buttons, { enabled: this.props.buttons, decrement: this.decrement, increment: this.increment, incrementTitle: lS.toLanguageString(sliderIncreaseValue, messages[sliderIncreaseValue]), decrementTitle: lS.toLanguageString(sliderDecreaseValue, messages[sliderDecreaseValue]) },\n React.createElement(Draggable, { onDrag: this.dragOver, onPress: this.dragStart },\n React.createElement(\"div\", { className: \"k-slider-track-wrap\", style: __assign({ flexGrow: 1, position: 'relative', touchAction: 'none' }, trackStyles) },\n this.props.children && (React.createElement(\"ul\", { className: \"k-reset k-slider-items\", style: __assign({ margin: 0 }, sliderItemsStyle) }, React.Children.map(this.props.children, function (child) {\n return child && React.cloneElement(child, {\n position: 100 * (child.props.position - _this.props.min) /\n (_this.props.max - _this.props.min),\n vertical: _this.props.vertical\n }, child.props.children);\n }))),\n React.createElement(\"div\", { className: \"k-slider-track\", style: this.props.vertical\n ? { bottom: 0, height: '100%' }\n : (_a = {}, _a[this.state.dir === 'rtl' ? 'right' : 'left'] = 0, _a.width = '100%', _a), ref: function (el) { return _this._sliderTrack = el; } },\n React.createElement(\"div\", { className: \"k-slider-selection\", style: this.props.vertical\n ? { height: percentValue + '%' }\n : { width: percentValue + '%' } }),\n React.createElement(\"span\", { role: \"slider\", \"aria-valuemin\": this.props.min, \"aria-valuemax\": this.props.max, \"aria-valuenow\": this.state.value, \"aria-valuetext\": String(this.state.value), \"aria-orientation\": this.props.vertical ? 'vertical' : undefined, \"aria-disabled\": this.props.disabled ? 'true' : undefined, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, \"aria-label\": this.props.ariaLabel, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled, undefined), className: \"k-draghandle\", title: lS.toLanguageString(sliderDragTitle, messages[sliderDragTitle]), style: this.props.vertical\n ? { bottom: 'calc(' + percentValue + '%)', zIndex: 1 }\n : this.state.dir === 'rtl' ? { right: 'calc(' + percentValue + '% - 13px)', zIndex: 1 }\n : { left: 'calc(' + percentValue + '%)', zIndex: 1 } })))))));\n };\n Object.defineProperty(SliderWithoutContext.prototype, \"sliderTrack\", {\n /**\n * @hidden\n */\n get: function () {\n return this._sliderTrack;\n },\n enumerable: false,\n configurable: true\n });\n SliderWithoutContext.prototype.change = function (e, value) {\n value = Math.min(Math.max(value, this.props.min), this.props.max);\n this.setState({ value: value });\n dispatchEvent(this.props.onChange, e, this, { value: value });\n };\n SliderWithoutContext.displayName = 'Slider';\n /**\n * @hidden\n */\n SliderWithoutContext.propTypes = {\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired,\n value: PropTypes.number,\n vertical: PropTypes.bool,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n ariaLabel: PropTypes.string\n // TODO: validation when buttons is set to true, but no step is provided\n };\n return SliderWithoutContext;\n}(React.Component));\nexport { SliderWithoutContext };\n/**\n * Represents the PropsContext of the `Slider` component.\n * Used for global configuration of all `Slider` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var SliderPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact Slider component]({% slug overview_slider %}).\n *\n * Accepts properties of type [SliderProps]({% slug api_inputs_sliderprops %}).\n * Obtaining the `ref` returns an object of type [SliderHandle]({% slug api_inputs_sliderhandle %}).\n */\nexport var Slider = withPropsContext(SliderPropsContext, SliderWithoutContext);\nSlider.displayName = 'KendoReactSlider';\nregisterForLocalization(SliderWithoutContext);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useDir } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var SLIDER_LABEL_ATTRIBUTE = 'data-slider-label';\n/**\n * Represents the KendoReact SliderLabel component.\n */\nexport var SliderLabel = function (props) {\n var _a, _b;\n var sliderLabelRef = React.useRef(null);\n var dir = useDir(sliderLabelRef);\n var style = props.vertical\n ? { bottom: \"\".concat(props.position, \"%\") }\n : (_a = {}, _a[dir === 'rtl' ? 'right' : 'left'] = \"\".concat(props.position, \"%\"), _a);\n var tickStyle = props.vertical ? 'k-tick-vertical' : 'k-tick-horizontal';\n return (React.createElement(\"li\", { ref: sliderLabelRef, className: \"k-tick k-tick-large \".concat(tickStyle), title: props.title, style: __assign({ zIndex: 1, position: 'absolute' }, style) }, props.children && React.createElement(\"span\", __assign({}, (_b = {}, _b[SLIDER_LABEL_ATTRIBUTE] = true, _b), { className: \"k-label\", onClick: props.onClick }), props.children)));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, guid, noop, Keys, dispatchEvent, getTabIndex, createPropsContext, withPropsContext, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, switchValidation } from './../messages';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/** @hidden */\nvar SwitchWithoutContext = /** @class */ (function (_super) {\n __extends(SwitchWithoutContext, _super);\n /**\n * @hidden\n */\n function SwitchWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this._input.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage ||\n _this.defaultValidationMessage.toLanguageString(switchValidation, messages[switchValidation]));\n }\n };\n _this.limit = function (offset, drag, wrapper) {\n var wrapperWidth = wrapper.offsetWidth;\n var margin = drag.offsetWidth;\n if (offset < 0) {\n return 0;\n }\n else if (offset > wrapperWidth - margin) {\n return wrapperWidth - margin;\n }\n return offset;\n };\n _this.toggle = function (value, event) {\n _this.setState({ checked: value });\n _this.valueDuringOnChange = value;\n dispatchEvent(_this.props.onChange, event, _this, { value: value });\n _this.valueDuringOnChange = undefined;\n };\n _this._element = null;\n _this._wrapper = null;\n _this._input = null;\n _this._id = guid();\n _this.defaultValidationMessage = provideLocalizationService(_this);\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this.actionElement) {\n _this.actionElement.focus();\n }\n };\n _this.dummyInput = function (value) {\n /* Dummy component to support forms */\n return (React.createElement(\"input\", { type: \"checkbox\", checked: _this.props.checked, ref: function (el) {\n _this._input = el;\n }, tabIndex: -1, \"aria-hidden\": true, value: value, style: { opacity: 0, width: 1, border: 0, zIndex: -1, position: 'absolute', left: '50%' }, onChange: noop, name: _this.name || undefined }));\n };\n _this.handleClick = function (event) {\n if (_this.eventTimeStamp === event.timeStamp) {\n // This is guard against the case when wrapped in label, click event is emmited twice\n return;\n }\n _this.eventTimeStamp = event.timeStamp;\n _this.toggle(!_this.value, event);\n };\n _this.handleKeyDown = function (event) {\n if (_this.props.disabled) {\n return;\n }\n var keyCode = event.keyCode;\n if (keyCode === Keys.space || keyCode === Keys.enter) {\n _this.toggle(!_this.value, event);\n event.preventDefault();\n }\n };\n _this.handleWrapperFocus = function (event) {\n if (_this.props.disabled) {\n return;\n }\n _this.setState({ focused: true });\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleWrapperBlur = function (event) {\n if (_this.props.disabled) {\n return;\n }\n _this.setState({ focused: false });\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n validatePackage(packageMetadata);\n _this.state = {\n checked: props.defaultChecked || SwitchWithoutContext.defaultProps.defaultChecked,\n focused: false\n };\n return _this;\n }\n Object.defineProperty(SwitchWithoutContext.prototype, \"value\", {\n /**\n * Gets the value of the Switch.\n */\n get: function () {\n return this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.checked !== undefined\n ? this.props.checked\n : this.state.checked;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SwitchWithoutContext.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SwitchWithoutContext.prototype, \"actionElement\", {\n get: function () {\n return this._wrapper;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SwitchWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the Switch.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SwitchWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the Switch is set.\n */\n get: function () {\n var customError = this.props.validationMessage !== undefined;\n var isValid = this.props.valid !== undefined ?\n this.props.valid :\n !this.props.required ?\n true :\n this.value ? true : false;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SwitchWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : SwitchWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SwitchWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : SwitchWithoutContext.defaultProps.required;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n SwitchWithoutContext.prototype.componentDidMount = function () {\n this.setValidity();\n // Due to dynamic dir calculation\n this.forceUpdate();\n };\n /**\n * @hidden\n */\n SwitchWithoutContext.prototype.componentDidUpdate = function () {\n this.setValidity();\n };\n /**\n * @hidden\n */\n SwitchWithoutContext.prototype.render = function () {\n var _a, _b, _c;\n var _this = this;\n var focused = this.state.focused;\n var _d = this.props, dir = _d.dir, disabled = _d.disabled, trackRounded = _d.trackRounded, thumbRounded = _d.thumbRounded, size = _d.size, offLabel = _d.offLabel, onLabel = _d.onLabel, tabIndex = _d.tabIndex;\n this.dir = dir || (this.element && getComputedStyle(this.element).direction) || undefined;\n var isValid = !this.validityStyles || this.validity.valid;\n var switchClassName = classNames('k-switch', (_a = {},\n _a[\"k-switch-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[trackRounded] || trackRounded)] = trackRounded,\n _a['k-switch-on'] = this.value,\n _a['k-switch-off'] = !this.value,\n _a['k-focus'] = focused,\n _a['k-disabled'] = disabled,\n _a['k-invalid'] = !isValid,\n _a), this.props.className);\n var ariaAttributes = {\n 'aria-checked': this.value,\n 'aria-disabled': disabled || undefined,\n 'aria-labelledby': this.props.ariaLabelledBy,\n 'aria-describedby': this.props.ariaDescribedBy,\n 'aria-label': this.props.ariaLabel\n };\n return (React.createElement(\"span\", __assign({ ref: function (span) {\n _this._wrapper = span;\n }, role: 'switch' }, ariaAttributes, { className: switchClassName, dir: this.dir, onKeyDown: this.handleKeyDown, onClick: this.handleClick, onBlur: this.handleWrapperBlur, onFocus: this.handleWrapperFocus, tabIndex: getTabIndex(tabIndex, disabled, undefined), accessKey: this.props.accessKey, id: this.props.id || this._id }),\n React.createElement(\"span\", { className: classNames('k-switch-track', (_b = {}, _b[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[trackRounded] || trackRounded)] = trackRounded, _b)), ref: function (span) {\n _this._element = span;\n } },\n this.dummyInput(this.value),\n React.createElement(\"span\", { className: 'k-switch-label-on' }, onLabel),\n React.createElement(\"span\", { className: 'k-switch-label-off' }, offLabel)),\n React.createElement(\"span\", { className: 'k-switch-thumb-wrap' },\n React.createElement(\"span\", { className: classNames('k-switch-thumb', (_c = {}, _c[\"k-rounded-\".concat(thumbRounded)] = thumbRounded, _c)) }))));\n };\n SwitchWithoutContext.displayName = 'Switch';\n /**\n * @hidden\n */\n SwitchWithoutContext.propTypes = {\n accessKey: PropTypes.string,\n checked: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n defaultChecked: PropTypes.bool,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n trackRounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n thumbRounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n dir: PropTypes.string,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n offLabel: PropTypes.string,\n required: PropTypes.bool,\n tabIndex: PropTypes.number,\n valid: PropTypes.bool,\n validate: PropTypes.bool,\n validationMessage: PropTypes.string,\n onBlur: PropTypes.any,\n onChange: PropTypes.any,\n onFocus: PropTypes.any,\n onLabel: PropTypes.string\n };\n /**\n * @hidden\n */\n SwitchWithoutContext.defaultProps = {\n disabled: false,\n defaultChecked: false,\n size: 'medium',\n trackRounded: 'full',\n thumbRounded: 'full',\n offLabel: 'OFF',\n onBlur: noop,\n onFocus: noop,\n onLabel: 'ON',\n required: false,\n validityStyles: true\n };\n return SwitchWithoutContext;\n}(React.Component));\nexport { SwitchWithoutContext };\n/**\n * Represents the PropsContext of the `Switch` component.\n * Used for global configuration of all `Switch` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var SwitchPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact Switch component]({% slug overview_switch %}).\n *\n * Accepts properties of type [SwitchProps]({% slug api_inputs_switchprops %}).\n * Obtaining the `ref` returns an object of type [SwitchHandle]({% slug api_inputs_switchhandle %}).\n */\nexport var Switch = withPropsContext(SwitchPropsContext, SwitchWithoutContext);\nSwitch.displayName = 'KendoReactSwitch';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { guid, classNames, getTabIndex, dispatchEvent, useDir, createPropsContext, usePropsContext, kendoThemeMaps } from '@progress/kendo-react-common';\n/**\n * Represents the PropsContext of the `TextArea` component.\n * Used for global configuration of all `TextArea` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var TextAreaPropsContext = createPropsContext();\n/**\n * Represents the [KendoReact TextArea component]({% slug overview_textarea %}).\n *\n *\n * Accepts properties of type [TextAreaProps]({% slug api_inputs_textareaprops %}).\n * Obtaining the `ref` returns an object of type [TextAreaHandle]({% slug api_inputs_textareahandle %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return
    ..
    ` element with a `` inside to apply the styles. The text inside is the [`formattedValue`]({% slug api_dateinputs_calendarcellprops %}#toc-formattedvalue) of the `cell`.\n */\n CalendarCell.prototype.render = function () {\n var _a = this.props, className = _a.className, formattedValue = _a.formattedValue, isWeekend = _a.isWeekend, isFocused = _a.isFocused, isInRange = _a.isInRange, isSelected = _a.isSelected, isRangeStart = _a.isRangeStart, isRangeMid = _a.isRangeMid, isRangeEnd = _a.isRangeEnd, isRangeSplitStart = _a.isRangeSplitStart, isRangeSplitEnd = _a.isRangeSplitEnd, isToday = _a.isToday, isDisabled = _a.isDisabled, view = _a.view, value = _a.value, other = __rest(_a, [\"className\", \"formattedValue\", \"isWeekend\", \"isFocused\", \"isInRange\", \"isSelected\", \"isRangeStart\", \"isRangeMid\", \"isRangeEnd\", \"isRangeSplitStart\", \"isRangeSplitEnd\", \"isToday\", \"isDisabled\", \"view\", \"value\"]);\n var isEndActive = this.props.activeRangeEnd === 'end' && isRangeEnd;\n var isStartActive = this.props.activeRangeEnd === 'start' && isRangeStart;\n var rootClassName = classNames('k-calendar-td', {\n 'k-range-end': isRangeEnd,\n 'k-range-mid': isRangeMid,\n 'k-range-split-end': isRangeSplitEnd,\n 'k-range-split-start': isRangeSplitStart,\n 'k-range-start': isRangeStart,\n 'k-active': isStartActive || isEndActive,\n 'k-state-pending-focus': isFocused,\n 'k-selected': isSelected || isRangeStart || isRangeEnd,\n 'k-today': isToday,\n 'k-weekend': isWeekend,\n 'k-disabled': isDisabled\n }, className);\n return (React.createElement(\"td\", __assign({}, other, { className: rootClassName, onClick: this.handleClick, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }),\n React.createElement(\"span\", { className: \"k-link\" }, this.props.children)));\n };\n return CalendarCell;\n}(React.Component));\nexport { CalendarCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * The `CalendarWeekCell` component is internally used for rendering the week cells inside the `month` view of the Calendar. Also used as a [custom week cell for the Calendar]({% slug api_dateinputs_calendarprops %}#toc-weekcell) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-weekcell) components.\n *\n * * [Customizing week-column cells in the Calendar]({% slug custom_rendering_calendar %}#toc-cells-inside-the-week-column)\n * * [Customizing week-column cells in the MultiViewCalendar]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-week-column)\n */\nvar CalendarWeekCell = /** @class */ (function (_super) {\n __extends(CalendarWeekCell, _super);\n function CalendarWeekCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return\n * Returns a `` element with the [`value`]({% slug api_dateinputs_calendarweekcellprops %}#toc-value) as a child.\n */\n CalendarWeekCell.prototype.render = function () {\n var _a = this.props, className = _a.className, firstDate = _a.firstDate, other = __rest(_a, [\"className\", \"firstDate\"]);\n return (React.createElement(\"td\", __assign({ className: classNames('k-calendar-td', className) }, other), this.props.children));\n };\n return CalendarWeekCell;\n}(React.Component));\nexport { CalendarWeekCell };\n","import { shiftWeekNames } from '../../utils';\n/**\n * @hidden\n */\nvar WeekNamesService = /** @class */ (function () {\n function WeekNamesService(intl) {\n this.intl = intl;\n }\n WeekNamesService.prototype.getWeekNames = function (includeWeekNumber) {\n if (includeWeekNumber === void 0) { includeWeekNumber = false; }\n var weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n return includeWeekNumber ? [''].concat(weekNames) : weekNames;\n };\n return WeekNamesService;\n}());\nexport { WeekNamesService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { weekInYear, cloneDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { CalendarCell } from './CalendarCell';\nimport { CalendarWeekCell } from './CalendarWeekCell';\nimport { CalendarViewEnum } from '../models';\nimport { setTime, getToday } from '../../utils';\nimport { WeekNamesService } from '../services';\n// In case we decide to render content for the next month in the empty cells,\n// add k-other-month class to all cells and k-weekend for weekend cells.\n// tslint:disable-next-line jsx-use-translation-function\nvar emptyCell = function (idx) { return (React.createElement(\"td\", { key: idx, className: 'k-calendar-td' }, \"\\u00A0\")); };\n/**\n * @hidden\n */\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n function View() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.intl = null;\n _this.weekService = null;\n _this.buildWeekNumber = function (row, idx) {\n var firstDayOfWeek = _this.firstDate(row);\n if (!firstDayOfWeek) {\n return emptyCell(\"week-cell-\".concat(idx));\n }\n var firstDate = _this.firstDate(row);\n var weekCellValue = _this.getWeekNumber(firstDate);\n var uniqueID = \"kendo-react-calendar-week-cell-\".concat(weekCellValue);\n var cellProps = {\n className: 'k-alt',\n value: weekCellValue,\n firstDate: firstDate\n };\n return _this.props.weekCell\n ? React.createElement(_this.props.weekCell, __assign({}, cellProps, { key: uniqueID }), weekCellValue)\n : React.createElement(CalendarWeekCell, __assign({}, cellProps, { key: uniqueID }), weekCellValue);\n };\n _this.buildRow = function (row) {\n return row.map(function (cell, idx) {\n if (!cell) {\n return emptyCell(idx);\n }\n var aria = { 'aria-selected': cell.isSelected };\n var uniqueID = \"kendo-react-calendar-cell-\".concat(cell.value.getTime());\n var cellProps = __assign(__assign(__assign({}, aria), cell), { isDisabled: !cell.isInRange, view: _this.props.activeView, onClick: _this.handleClick, onMouseEnter: _this.handleMouseEnter, onMouseLeave: _this.handleMouseLeave });\n return _this.props.cell\n ? (React.createElement(_this.props.cell, __assign({}, cellProps, { key: uniqueID }), cell.formattedValue))\n : (React.createElement(CalendarCell, __assign({}, cellProps, { key: uniqueID }), cell.formattedValue));\n });\n };\n _this.firstDate = function (row) {\n var cell = _this.firstWeekDateContext(row);\n return cell ? cell.value : null;\n };\n _this.firstWeekDateContext = function (rowCtx) {\n if (!_this.weekNumber) {\n return null;\n }\n var idx = 0;\n var ctx = rowCtx[idx];\n while (!ctx && idx < rowCtx.length) {\n ctx = rowCtx[++idx];\n }\n return ctx;\n };\n _this.handleClick = function (value, event) {\n var onChange = _this.props.onChange;\n if (onChange && event) {\n var args = {\n value: cloneDate(value),\n target: _this,\n nativeEvent: event && event.nativeEvent,\n syntheticEvent: event\n };\n onChange.call(undefined, args);\n }\n };\n _this.handleMouseEnter = function (value) {\n var onCellEnter = _this.props.onCellEnter;\n if (onCellEnter) {\n onCellEnter.call(undefined, cloneDate(value));\n }\n };\n _this.handleMouseLeave = function (value) {\n var onCellLeave = _this.props.onCellLeave;\n if (onCellLeave) {\n onCellLeave.call(undefined, cloneDate(value));\n }\n };\n return _this;\n }\n Object.defineProperty(View.prototype, \"min\", {\n get: function () {\n return this.props.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"max\", {\n get: function () {\n return this.props.max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"isHorizontal\", {\n get: function () {\n return this.props.direction === 'horizontal';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"isMonthView\", {\n get: function () {\n return this.props.activeView === CalendarViewEnum.month;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"weekNumber\", {\n get: function () {\n return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"selectedDate\", {\n get: function () {\n return this.props.selectedDate !== undefined ? this.props.selectedDate : View.defaultProps.selectedDate;\n },\n enumerable: false,\n configurable: true\n });\n View.prototype.render = function () {\n var _this = this;\n this.intl = provideIntlService(this);\n this.weekService = new WeekNamesService(this.intl);\n var weekNames = this.weekService.getWeekNames(this.weekNumber);\n var colSpan = this.props.service.rowLength(this.weekNumber);\n var title = this.props.service.title(this.props.viewDate);\n var time = getToday();\n var viewDate = setTime(this.props.viewDate, time);\n var data = this.props.service.data({\n cellUID: this.props.cellUID,\n min: this.min,\n max: this.max,\n focusedDate: this.props.focusedDate,\n isActiveView: !this.props.bus.canMoveDown(this.props.activeView),\n selectedDate: this.selectedDate,\n selectionRange: this.props.selectionRange,\n viewDate: viewDate\n });\n return (React.createElement(React.Fragment, null,\n (this.isMonthView && this.isHorizontal) && (React.createElement(\"thead\", { role: \"rowgroup\", className: \"k-calendar-thead\" },\n React.createElement(\"tr\", { role: \"row\", className: \"k-calendar-tr\" }, weekNames.map(function (name, idx) { return (React.createElement(\"th\", { key: idx, className: \"k-calendar-th\" }, name)); })))),\n React.createElement(\"tbody\", { role: \"rowgroup\", className: \"k-calendar-tbody\" },\n !this.isHorizontal && (React.createElement(\"tr\", { role: \"presentation\", className: \"k-calendar-tr\" },\n React.createElement(\"th\", { scope: \"col\", colSpan: colSpan, className: \"k-calendar-caption\" }, title))),\n data.map(function (row, idx) {\n return (React.createElement(\"tr\", { role: \"row\", className: \"k-calendar-tr\", key: idx },\n _this.weekNumber && _this.buildWeekNumber(row, idx),\n _this.buildRow(row)));\n }))));\n };\n View.prototype.getWeekNumber = function (date) {\n if (!this.weekNumber || !this.intl) {\n return null;\n }\n return weekInYear(date, this.intl.firstDay());\n };\n View.propTypes = {\n activeRangeEnd: PropTypes.oneOf(['start', 'end', null]),\n activeView: PropTypes.number.isRequired,\n cellUID: PropTypes.string.isRequired,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n focusedDate: PropTypes.instanceOf(Date).isRequired,\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n onChange: PropTypes.func,\n selectedDate: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.arrayOf(PropTypes.instanceOf(Date))]),\n showWeekNumbers: PropTypes.bool,\n viewDate: PropTypes.instanceOf(Date).isRequired\n };\n View.defaultProps = {\n direction: 'vertical',\n selectedDate: getToday(),\n showWeekNumbers: false\n };\n return View;\n}(React.Component));\nexport { View };\nregisterForIntl(View);\n","/**\n * The Enum which defines all possible Calendar view types.\n */\nexport var CalendarViewEnum;\n(function (CalendarViewEnum) {\n CalendarViewEnum[CalendarViewEnum[\"month\"] = 0] = \"month\";\n CalendarViewEnum[CalendarViewEnum[\"year\"] = 1] = \"year\";\n CalendarViewEnum[CalendarViewEnum[\"decade\"] = 2] = \"decade\";\n CalendarViewEnum[CalendarViewEnum[\"century\"] = 3] = \"century\";\n})(CalendarViewEnum || (CalendarViewEnum = {}));\n","/**\n * @hidden\n */\nexport var Action;\n(function (Action) {\n Action[Action[\"Left\"] = 0] = \"Left\";\n Action[Action[\"Right\"] = 1] = \"Right\";\n Action[Action[\"Up\"] = 2] = \"Up\";\n Action[Action[\"Down\"] = 3] = \"Down\";\n Action[Action[\"PrevView\"] = 4] = \"PrevView\";\n Action[Action[\"NextView\"] = 5] = \"NextView\";\n Action[Action[\"FirstInView\"] = 6] = \"FirstInView\";\n Action[Action[\"LastInView\"] = 7] = \"LastInView\";\n Action[Action[\"LowerView\"] = 8] = \"LowerView\";\n Action[Action[\"UpperView\"] = 9] = \"UpperView\";\n})(Action || (Action = {}));\n","/**\n * @hidden\n */\nexport var EMPTY_SELECTIONRANGE = { start: null, end: null };\n","var _a;\n/* tslint:disable:object-literal-sort-keys */\nimport { addDecades, addCenturies, cloneDate, durationInCenturies, firstYearOfDecade, firstDecadeOfCentury, lastDecadeOfCentury } from '@progress/kendo-date-math';\nimport { Action, EMPTY_SELECTIONRANGE } from '../models';\nimport { getToday, isInRange, isInSelectionRange, range, intersects } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 4;\nvar ROWS_LENGTH = 3;\nvar ACTIONS = (_a = {},\n _a[Action.Left] = function (date) { return addDecades(date, -1); },\n _a[Action.Up] = function (date) { return addDecades(date, -5); },\n _a[Action.Right] = function (date) { return addDecades(date, 1); },\n _a[Action.Down] = function (date) { return addDecades(date, 5); },\n _a[Action.PrevView] = function (date) { return addCenturies(date, -1); },\n _a[Action.NextView] = function (date) { return addCenturies(date, 1); },\n _a[Action.FirstInView] = function (date) { return firstDecadeOfCentury(date); },\n _a[Action.LastInView] = function (date) { return lastDecadeOfCentury(date); },\n _a);\n/**\n * @hidden\n */\nvar CenturyViewService = /** @class */ (function () {\n function CenturyViewService() {\n }\n CenturyViewService.prototype.addToDate = function (min, skip) {\n return addCenturies(min, skip);\n };\n CenturyViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) { return addCenturies(start, i); });\n };\n CenturyViewService.prototype.data = function (options) {\n var _this = this;\n var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n var cells = range(0, CELLS_LENGTH);\n var firstDate = firstDecadeOfCentury(viewDate);\n var lastDate = lastDecadeOfCentury(viewDate);\n var today = getToday();\n return range(0, ROWS_LENGTH).map(function (rowOffset) {\n var baseDate = addDecades(firstDate, rowOffset * CELLS_LENGTH);\n return cells.map(function (cellOffset) {\n var cellDate = _this.normalize(addDecades(baseDate, cellOffset), min, max);\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate)\n ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return intersects(cellDate, firstDate, lastDate) ? ({\n formattedValue: _this.value(cellDate),\n id: \"\".concat(cellUID).concat(cellDate.getTime()),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\n isWeekend: false,\n isInRange: isInRange(cellDate, min, max),\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n isToday: _this.isEqual(cellDate, today),\n title: _this.cellTitle(cellDate),\n value: cellDate\n }) : null;\n });\n });\n };\n CenturyViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n var result = false;\n dates.forEach(function (date) {\n if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n result = true;\n }\n });\n return result;\n };\n CenturyViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n // TODO: double-check this!\n return firstYearOfDecade(candidate).getFullYear() === firstYearOfDecade(expected).getFullYear();\n };\n CenturyViewService.prototype.isInArray = function (date, dates) {\n if (!dates.length) {\n return false;\n }\n var year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 99);\n };\n CenturyViewService.prototype.isInRange = function (candidate, min, max) {\n var year = firstYearOfDecade(candidate).getFullYear();\n var aboveMin = !min || firstYearOfDecade(min).getFullYear() <= year;\n var belowMax = !max || year <= firstYearOfDecade(max).getFullYear();\n return aboveMin && belowMax;\n };\n CenturyViewService.prototype.isInSameView = function (candidate, value) {\n return durationInCenturies(candidate, value) === 0;\n };\n CenturyViewService.prototype.isRangeStart = function (value) {\n return value.getFullYear() % 1000 === 0;\n };\n CenturyViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n };\n CenturyViewService.prototype.cellTitle = function (value) {\n return firstYearOfDecade(value).getFullYear().toString();\n };\n CenturyViewService.prototype.navigationTitle = function (value) {\n return value ? firstDecadeOfCentury(value).getFullYear().toString() : '';\n };\n CenturyViewService.prototype.title = function (value) {\n if (!value) {\n return '';\n }\n return \"\".concat(firstDecadeOfCentury(value).getFullYear(), \" - \").concat(lastDecadeOfCentury(value).getFullYear());\n };\n CenturyViewService.prototype.rowLength = function (_) {\n return CELLS_LENGTH;\n };\n CenturyViewService.prototype.skip = function (value, min) {\n return durationInCenturies(min, value);\n };\n CenturyViewService.prototype.total = function (min, max) {\n return durationInCenturies(min, max) + 1;\n };\n CenturyViewService.prototype.value = function (current) {\n return current ? firstYearOfDecade(current).getFullYear().toString() : '';\n };\n CenturyViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) { border = 1; }\n var renderTwoViews = durationInCenturies(date, max) < border;\n return renderTwoViews ? addCenturies(date, -1) : date;\n };\n CenturyViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n };\n return CenturyViewService;\n}());\nexport { CenturyViewService };\n","var _a;\nimport { addDecades, addYears, cloneDate, durationInDecades, firstYearOfDecade, lastYearOfDecade } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { getToday, isInRange, isInSelectionRange, range, intersects } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 4;\nvar ROWS_LENGTH = 3;\nvar ACTIONS = (_a = {},\n _a[Action.Left] = function (date) { return addYears(date, -1); },\n _a[Action.Up] = function (date) { return addYears(date, -5); },\n _a[Action.Right] = function (date) { return addYears(date, 1); },\n _a[Action.Down] = function (date) { return addYears(date, 5); },\n _a[Action.PrevView] = function (date) { return addDecades(date, -1); },\n _a[Action.NextView] = function (date) { return addDecades(date, 1); },\n _a[Action.FirstInView] = function (date) { return firstYearOfDecade(date); },\n _a[Action.LastInView] = function (date) { return lastYearOfDecade(date); },\n _a);\n/**\n * @hidden\n */\nvar DecadeViewService = /** @class */ (function () {\n function DecadeViewService() {\n }\n DecadeViewService.prototype.addToDate = function (min, skip) {\n return addDecades(min, skip);\n };\n DecadeViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) { return addDecades(start, i); });\n };\n DecadeViewService.prototype.data = function (options) {\n var _this = this;\n var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n var cells = range(0, CELLS_LENGTH);\n var firstDate = firstYearOfDecade(viewDate);\n var lastDate = lastYearOfDecade(viewDate);\n var today = getToday();\n return range(0, ROWS_LENGTH).map(function (rowOffset) {\n var baseDate = addYears(firstDate, rowOffset * CELLS_LENGTH);\n return cells.map(function (cellOffset) {\n var cellDate = _this.normalize(addYears(baseDate, cellOffset), min, max);\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate)\n ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return intersects(cellDate, firstDate, lastDate) ? ({\n formattedValue: _this.value(cellDate),\n id: \"\".concat(cellUID).concat(cellDate.getTime()),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\n isWeekend: false,\n isInRange: isInRange(cellDate, min, max),\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n isToday: _this.isEqual(cellDate, today),\n title: _this.cellTitle(cellDate),\n value: cellDate\n }) : null;\n });\n });\n };\n DecadeViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n var result = false;\n dates.forEach(function (date) {\n if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n result = true;\n }\n });\n return result;\n };\n DecadeViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return candidate.getFullYear() === expected.getFullYear();\n };\n DecadeViewService.prototype.isInArray = function (date, dates) {\n if (!dates.length) {\n return false;\n }\n var year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 9);\n };\n DecadeViewService.prototype.isInRange = function (candidate, min, max) {\n var year = candidate.getFullYear();\n var aboveMin = !min || min.getFullYear() <= year;\n var belowMax = !max || year <= max.getFullYear();\n return aboveMin && belowMax;\n };\n DecadeViewService.prototype.isRangeStart = function (value) {\n return value.getFullYear() % 100 === 0;\n };\n DecadeViewService.prototype.isInSameView = function (candidate, value) {\n return durationInDecades(candidate, value) === 0;\n };\n DecadeViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n };\n DecadeViewService.prototype.cellTitle = function (value) {\n return value.getFullYear().toString();\n };\n DecadeViewService.prototype.navigationTitle = function (value) {\n return value ? firstYearOfDecade(value).getFullYear().toString() : '';\n };\n DecadeViewService.prototype.title = function (value) {\n if (!value) {\n return '';\n }\n return \"\".concat(firstYearOfDecade(value).getFullYear(), \" - \").concat(lastYearOfDecade(value).getFullYear());\n };\n DecadeViewService.prototype.rowLength = function (_) {\n return CELLS_LENGTH;\n };\n DecadeViewService.prototype.skip = function (value, min) {\n return durationInDecades(min, value);\n };\n DecadeViewService.prototype.total = function (min, max) {\n return durationInDecades(min, max) + 1;\n };\n DecadeViewService.prototype.value = function (current) {\n return current ? current.getFullYear().toString() : '';\n };\n DecadeViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) { border = 1; }\n var renderTwoViews = durationInDecades(date, max) < border;\n return renderTwoViews ? addDecades(date, -1) : date;\n };\n DecadeViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n };\n return DecadeViewService;\n}());\nexport { DecadeViewService };\n","var _a;\nimport { addDays, addWeeks, addMonths, dayOfWeek, durationInMonths, getDate, firstDayOfMonth, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 7;\nvar ROWS_LENGTH = 6;\nvar SATURDAY = 6;\nvar SUNDAY = 0;\nvar ACTIONS = (_a = {},\n _a[Action.Left] = function (date) { return addDays(date, -1); },\n _a[Action.Up] = function (date) { return addWeeks(date, -1); },\n _a[Action.Right] = function (date) { return addDays(date, 1); },\n _a[Action.Down] = function (date) { return addWeeks(date, 1); },\n _a[Action.PrevView] = function (date) { return addMonths(date, -1); },\n _a[Action.NextView] = function (date) { return addMonths(date, 1); },\n _a[Action.FirstInView] = function (date) { return firstDayOfMonth(date); },\n _a[Action.LastInView] = function (date) { return lastDayOfMonth(date); },\n _a);\n/**\n * @hidden\n */\nvar MonthViewService = /** @class */ (function () {\n function MonthViewService(intl) {\n this.intl = intl;\n }\n MonthViewService.prototype.addToDate = function (min, skip) {\n return addMonths(min, skip);\n };\n MonthViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) { return addMonths(start, i); });\n };\n MonthViewService.prototype.data = function (options) {\n var _this = this;\n var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n var firstMonthDate = firstDayOfMonth(viewDate);\n var lastMonthDate = lastDayOfMonth(viewDate);\n var backward = -1;\n var date = dayOfWeek(firstMonthDate, this.intl.firstDay(), backward);\n var cells = range(0, CELLS_LENGTH);\n var today = getToday();\n return range(0, ROWS_LENGTH).map(function (rowOffset) {\n var baseDate = addDays(date, rowOffset * CELLS_LENGTH);\n return cells.map(function (cellOffset) {\n var cellDate = _this.normalize(addDays(baseDate, cellOffset), min, max);\n var otherMonth = cellDate < firstMonthDate || cellDate > lastMonthDate;\n if (otherMonth) {\n return null;\n }\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate)\n ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n var cell = {\n formattedValue: _this.value(cellDate),\n id: \"\".concat(cellUID).concat(cellDate.getTime()),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\n isInRange: isInRange(cellDate, min, max),\n isWeekend: _this.isWeekend(cellDate),\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstMonthDate),\n isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastMonthDate),\n isToday: _this.isEqual(cellDate, today),\n title: _this.cellTitle(cellDate),\n value: cellDate\n };\n return cell;\n });\n });\n };\n MonthViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return getDate(candidate).getTime() === getDate(expected).getTime();\n };\n MonthViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n var result = false;\n dates.forEach(function (date) {\n if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n result = true;\n }\n });\n return result;\n };\n MonthViewService.prototype.isInArray = function (date, dates) {\n return !!dates.length && firstDayOfMonth(dates[0]) <= date && date <= lastDayOfMonth(dates[dates.length - 1]);\n };\n MonthViewService.prototype.isInRange = function (candidate, min, max) {\n var value = getDate(candidate);\n var aboveMin = !min || getDate(min) <= value;\n var belowMax = !max || value <= getDate(max);\n return aboveMin && belowMax;\n };\n MonthViewService.prototype.isInSameView = function (candidate, value) {\n return durationInMonths(candidate, value) === 0;\n };\n MonthViewService.prototype.isRangeStart = function (value) {\n return !value.getMonth();\n };\n MonthViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n };\n MonthViewService.prototype.cellTitle = function (value) {\n return this.intl.formatDate(value, 'D');\n };\n MonthViewService.prototype.navigationTitle = function (value) {\n if (!value) {\n return '';\n }\n return this.isRangeStart(value) ? value.getFullYear().toString() : this.abbrMonthNames()[value.getMonth()];\n };\n MonthViewService.prototype.title = function (current) {\n return \"\".concat(this.wideMonthNames()[current.getMonth()], \" \").concat(current.getFullYear());\n };\n MonthViewService.prototype.rowLength = function (prependCell) {\n return CELLS_LENGTH + (prependCell ? 1 : 0);\n };\n MonthViewService.prototype.skip = function (value, min) {\n return durationInMonths(min, value);\n };\n MonthViewService.prototype.total = function (min, max) {\n return durationInMonths(min, max) + 1;\n };\n MonthViewService.prototype.value = function (current) {\n return current ? current.getDate().toString() : '';\n };\n MonthViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) { border = 1; }\n var renderTwoViews = durationInMonths(date, max) < border;\n return renderTwoViews ? addMonths(date, -1) : date;\n };\n MonthViewService.prototype.isWeekend = function (date) {\n var day = date.getDay();\n return day === SATURDAY || day === SUNDAY;\n };\n MonthViewService.prototype.abbrMonthNames = function () {\n return this.intl.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n };\n MonthViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return getDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return getDate(max);\n }\n return cellDate;\n };\n MonthViewService.prototype.wideMonthNames = function () {\n return this.intl.dateFormatNames({ nameType: 'wide', type: 'months', standAlone: true });\n };\n return MonthViewService;\n}());\nexport { MonthViewService };\n","var _a;\nimport { addMonths, addYears, createDate, durationInYears, firstMonthOfYear, lastMonthOfYear } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { cloneDate } from '@progress/kendo-date-math';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 4;\nvar ROWS_LENGTH = 3;\nvar upStep = function (month) {\n if (month > 4) {\n return -5;\n }\n if (month < 2) {\n return -2;\n }\n return -7;\n};\nvar downStep = function (month) {\n if (month < 7) {\n return 5;\n }\n if (month < 10) {\n return 7;\n }\n return 2;\n};\nvar ACTIONS = (_a = {},\n _a[Action.Left] = function (date) { return addMonths(date, -1); },\n _a[Action.Up] = function (date) { return addMonths(date, upStep(date.getMonth())); },\n _a[Action.Right] = function (date) { return addMonths(date, 1); },\n _a[Action.Down] = function (date) { return addMonths(date, downStep(date.getMonth())); },\n _a[Action.PrevView] = function (date) { return addYears(date, -1); },\n _a[Action.NextView] = function (date) { return addYears(date, 1); },\n _a[Action.FirstInView] = function (date) { return firstMonthOfYear(date); },\n _a[Action.LastInView] = function (date) { return lastMonthOfYear(date); },\n _a);\n/**\n * @hidden\n */\nvar YearViewService = /** @class */ (function () {\n function YearViewService(intl) {\n this._intl = intl;\n }\n YearViewService.prototype.addToDate = function (min, skip) {\n return addYears(min, skip);\n };\n YearViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) { return addYears(start, i); });\n };\n YearViewService.prototype.data = function (options) {\n var _this = this;\n var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n var months = this.abbrMonthNames();\n var firstDate = firstMonthOfYear(viewDate);\n var lastDate = lastMonthOfYear(viewDate);\n var currentYear = firstDate.getFullYear();\n var cells = range(0, CELLS_LENGTH);\n var today = getToday();\n return range(0, ROWS_LENGTH).map(function (rowOffset) {\n var baseDate = addMonths(firstDate, rowOffset * CELLS_LENGTH);\n return cells.map(function (cellOffset) {\n var cellDate = _this.normalize(addMonths(baseDate, cellOffset), min, max);\n var changedYear = currentYear < cellDate.getFullYear();\n if (changedYear) {\n return null;\n }\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate)\n ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return {\n formattedValue: months[cellDate.getMonth()],\n id: \"\".concat(cellUID).concat(cellDate.getTime()),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\n isInRange: isInRange(cellDate, min, max),\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n isToday: _this.isEqual(cellDate, today),\n title: _this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n };\n YearViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n var result = false;\n dates.forEach(function (date) {\n if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n result = true;\n }\n });\n return result;\n };\n YearViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return candidate.getFullYear() === expected.getFullYear() &&\n candidate.getMonth() === expected.getMonth();\n };\n YearViewService.prototype.isInArray = function (date, dates) {\n if (!dates.length) {\n return false;\n }\n var year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= dates[dates.length - 1].getFullYear();\n };\n YearViewService.prototype.isInRange = function (candidate, min, max) {\n var candidateValue = createDate(candidate.getFullYear(), candidate.getMonth(), 1);\n var aboveMin = !min || createDate(min.getFullYear(), min.getMonth(), 1) <= candidateValue;\n var belowMax = !max || candidateValue <= createDate(max.getFullYear(), max.getMonth(), 1);\n return aboveMin && belowMax;\n };\n YearViewService.prototype.isInSameView = function (candidate, value) {\n return durationInYears(candidate, value) === 0;\n };\n YearViewService.prototype.isRangeStart = function (value) {\n return value.getFullYear() % 10 === 0;\n };\n YearViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n };\n YearViewService.prototype.cellTitle = function (value) {\n return \"\".concat(value.getFullYear(), \" \").concat(this.value(value));\n };\n YearViewService.prototype.navigationTitle = function (value) {\n return this.title(value);\n };\n YearViewService.prototype.title = function (current) {\n return current ? current.getFullYear().toString() : '';\n };\n YearViewService.prototype.rowLength = function (_) {\n return CELLS_LENGTH;\n };\n YearViewService.prototype.skip = function (value, min) {\n return durationInYears(min, value);\n };\n YearViewService.prototype.total = function (min, max) {\n return durationInYears(min, max) + 1;\n };\n YearViewService.prototype.value = function (current) {\n return current ? this.abbrMonthNames()[current.getMonth()] : '';\n };\n YearViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) { border = 1; }\n var renderTwoViews = durationInYears(date, max) < border;\n return renderTwoViews ? addYears(date, -1) : date;\n };\n YearViewService.prototype.abbrMonthNames = function () {\n return this._intl.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n };\n YearViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n };\n return YearViewService;\n}());\nexport { YearViewService };\n","var _a;\nimport { CenturyViewService } from './CenturyViewService';\nimport { DecadeViewService } from './DecadeViewService';\nimport { MonthViewService } from './MonthViewService';\nimport { YearViewService } from './YearViewService';\nimport { CalendarViewEnum } from '../models/CalendarViewEnum';\nvar services = (_a = {},\n _a[CalendarViewEnum.month] = MonthViewService,\n _a[CalendarViewEnum.year] = YearViewService,\n _a[CalendarViewEnum.decade] = DecadeViewService,\n _a[CalendarViewEnum.century] = CenturyViewService,\n _a);\nvar viewOffset = function (view, offset) {\n var candidate = CalendarViewEnum[CalendarViewEnum[view + offset]];\n return candidate !== undefined ? candidate : view;\n};\n/**\n * @hidden\n */\nvar BusViewService = /** @class */ (function () {\n function BusViewService(onViewChanged) {\n this.bottom = CalendarViewEnum.month;\n this.top = CalendarViewEnum.century;\n this.onViewChanged = onViewChanged;\n }\n BusViewService.prototype.configure = function (bottom, top) {\n this.bottom = bottom;\n this.top = top;\n };\n BusViewService.prototype.service = function (view, intl) {\n return new services[\"\".concat(view)](intl);\n };\n BusViewService.prototype.moveDown = function (view, event) {\n this.move(view, -1, event);\n };\n BusViewService.prototype.moveUp = function (view, event) {\n this.move(view, 1, event);\n };\n BusViewService.prototype.moveToBottom = function (activeView) {\n if (activeView === this.bottom) {\n return;\n }\n this.onViewChanged({ view: this.bottom });\n };\n BusViewService.prototype.canMoveDown = function (view) {\n return this.bottom < view;\n };\n BusViewService.prototype.canMoveUp = function (view) {\n return view < this.top;\n };\n BusViewService.prototype.clamp = function (view) {\n if (view < this.bottom) {\n return this.bottom;\n }\n if (view > this.top) {\n return this.top;\n }\n return view;\n };\n BusViewService.prototype.move = function (view, offset, event) {\n var candidate = this.clamp(viewOffset(view, offset));\n if (candidate === view) {\n return;\n }\n this.onViewChanged({ view: candidate }, event);\n };\n return BusViewService;\n}());\nexport { BusViewService };\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport var setYear = function (value, year) {\n var month = value.getMonth();\n var candidate = createDate(year, month, value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n return candidate.getMonth() === month ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { adjustDST } from './adjust-dst';\nimport { setYear } from './set-year';\n/**\n * A function that adds and subtracts years from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of years to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addYears(new Date(2016, 5, 1), 5); // 2011-6-1\n * addYears(new Date(2016, 5, 1), -5); // 2021-6-1\n * ```\n */\nexport var addYears = function (value, offset) {\n return adjustDST(setYear(value, value.getFullYear() + offset), value.getHours());\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts decades from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of decades to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDecades(new Date(2016, 5, 1), 5); // 2066-6-1\n * addDecades(new Date(2016, 5, 1), -5); // 1966-6-1\n * ```\n */\nexport var addDecades = function (value, offset) {\n return addYears(value, 10 * offset);\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts centuries from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of centuries to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addCenturies(new Date(2016, 5, 1), 5); // 2516-6-1\n * addCenturies(new Date(2016, 5, 1), -5); // 1516-6-1\n * ```\n */\nexport var addCenturies = function (value, offset) {\n return addYears(value, 100 * offset);\n};\n","import { setYear } from './set-year';\n/**\n * @hidden\n */\nexport var normalizeYear = function (value, year) { return (setYear(value, year(value.getFullYear()))); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first decade in a century.\n *\n * @param date - The start date value.\n * @returns - The first year in a century.\n *\n * @example\n * ```ts-no-run\n * firstDecadeOfCentury(new Date(2017, 0, 1)); // 2000-1-1\n * firstDecadeOfCentury(new Date(2007, 10, 22)); // 2000-11-22\n * firstDecadeOfCentury(new Date(2126, 0, 1)); // 2100-1-1\n * ```\n */\nexport var firstDecadeOfCentury = function (value) { return (normalizeYear(value, function (y) { return y - (y % 100); })); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last decade in a century.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastDecadeOfCentury(new Date(2017, 0, 1)); // 2090-1-1\n * lastDecadeOfCentury(new Date(2007, 10, 22)); // 2090-11-22\n * lastDecadeOfCentury(new Date(2126, 0, 1)); // 2190-1-1\n * ```\n */\nexport var lastDecadeOfCentury = function (value) { return (normalizeYear(value, function (y) { return y - (y % 100) + 90; })); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first year in a decade.\n *\n * @param date - The start date value.\n * @returns - The first year in a decade.\n *\n * @example\n * ```ts-no-run\n * firstYearOfDecade(new Date(2017, 0, 1)); // 2010-1-1\n * firstYearOfDecade(new Date(2007, 10, 22)); // 2000-11-22\n * firstYearOfDecade(new Date(2026, 0, 1)); // 2020-1-1\n * ```\n */\nexport var firstYearOfDecade = function (value) { return (normalizeYear(value, function (y) { return y - (y % 10); })); };\n","import { firstDecadeOfCentury } from './first-decade-of-century';\n/**\n * A function that calculates duration in centuries between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInCenturies(new Date(2016, 0, 1), new Date(3216, 0, 1)); // 12\n * durationInCenturies(new Date(2016, 6, 1), new Date(2617, 0, 1)); // 6\n * durationInCenturies(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInCenturies = function (start, end) { return ((firstDecadeOfCentury(end).getFullYear() - firstDecadeOfCentury(start).getFullYear()) / 100); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last year in a decade.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastYearOfDecade(new Date(2017, 0, 1)); // 2019-1-1\n * lastYearOfDecade(new Date(2007, 10, 22)); // 2009-11-22\n * lastYearOfDecade(new Date(2026, 0, 1)); // 2029-1-1\n * ```\n */\nexport var lastYearOfDecade = function (value) { return (normalizeYear(value, function (y) { return y - (y % 10) + 9; })); };\n","import { firstYearOfDecade } from './first-year-of-decade';\n/**\n * A function that calculates duration in decades between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInDecades(new Date(2016, 0, 1), new Date(2136, 0, 1)); // 12\n * durationInDecades(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInDecades = function (start, end) { return ((firstYearOfDecade(end).getFullYear() - firstYearOfDecade(start).getFullYear()) / 10); };\n","import { addDays } from './add-days';\n/**\n * A function that adds and subtracts weeks from a Date object.\n *\n * @param date - The initial date value.\n * @param offset - The number of weeks to add/subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addWeeks(new Date(2016, 5, 1), 3); // 2016-6-22\n * addWeeks(new Date(2016, 5, 1), -3); // 2015-5-11\n * ```\n */\nexport var addWeeks = function (date, offset) {\n return addDays(date, offset * 7);\n};\n","/**\n * A function that calculates duration in months between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInMonths(new Date(2016, 0, 1), new Date(2017, 0, 1)); // 12\n * durationInMonths(new Date(2016, 6, 1), new Date(2017, 0, 1)); // 6\n * durationInMonths(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInMonths = function (start, end) { return (((end.getFullYear() - start.getFullYear())) * 12 + (end.getMonth() - start.getMonth())); };\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport var setMonth = function (value, month) {\n var day = value.getDate();\n var candidate = createDate(value.getFullYear(), month, day, value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n return candidate.getDate() === day ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the first month in a year.\n *\n * @param date - The start date value.\n * @returns - The first month in a year.\n *\n * @example\n * ```ts-no-run\n * firstMonthOfYear(new Date(2017, 11, 1)); // 2017-1-1\n * firstMonthOfYear(new Date(2017, 0, 1)); // 2017-1-1\n * ```\n */\nexport var firstMonthOfYear = function (value) { return setMonth(value, 0); };\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the last month in a year.\n *\n * @param date - The start date value.\n * @returns - The last month in a year.\n *\n * @example\n * ```ts-no-run\n * lastMonthOfYear(new Date(2017, 5, 3)); // 2017-12-3\n * lastMonthOfYear(new Date(2017, 11, 3)); // 2017-12-3\n * ```\n */\nexport var lastMonthOfYear = function (value) { return setMonth(value, 11); };\n","/**\n * A function that calculates duration in years between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in years.\n *\n * @example\n * ```ts-no-run\n * durationInYears(new Date(2016, 0, 1), new Date(2028, 0, 1)); // 12\n * durationInYears(new Date(2016, 0, 1), new Date(2022, 0, 1)); // 6\n * durationInYears(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInYears = function (start, end) { return (end.getFullYear() - start.getFullYear()); };\n","import { Action } from '../models/NavigationAction';\nvar KEY_TO_ACTION = {\n '33': Action.PrevView,\n '34': Action.NextView,\n '35': Action.LastInView,\n '36': Action.FirstInView,\n '37': Action.Left,\n '38': Action.Up,\n '39': Action.Right,\n '40': Action.Down,\n 'meta+38': Action.UpperView,\n 'meta+40': Action.LowerView\n};\n/**\n * @hidden\n */\nvar NavigationService = /** @class */ (function () {\n function NavigationService(bus) {\n this.bus = bus;\n }\n NavigationService.prototype.action = function (event) {\n var action = \"\".concat(event.ctrlKey || event.metaKey ? 'meta+' : '').concat(event.keyCode);\n return KEY_TO_ACTION[action];\n };\n NavigationService.prototype.move = function (value, action, activeView, service, event) {\n if (!service) {\n return value;\n }\n if (action === Action.UpperView && this.bus.canMoveUp(activeView)) {\n this.bus.moveUp(activeView, event);\n return value;\n }\n if (action === Action.LowerView && this.bus.canMoveDown(activeView)) {\n this.bus.moveDown(activeView, event);\n return value;\n }\n return service.move(value, action);\n };\n return NavigationService;\n}());\nexport { NavigationService };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { ActionSheet, ActionSheetFooter, ActionSheetHeader } from '@progress/kendo-react-layout';\nimport { xIcon } from '@progress/kendo-svg-icons';\nimport { Button } from '@progress/kendo-react-buttons';\n/** @hidden */\nvar MOBILE_SMALL_DEVISE = 500;\n/** @hidden */\nexport var AdaptiveMode = function (props) {\n var footer = props.footer, children = props.children, _a = props.windowWidth, windowWidth = _a === void 0 ? 0 : _a, navigatable = props.navigatable, navigatableElements = props.navigatableElements, expand = props.expand, animation = props.animation, onClose = props.onClose, adaptiveTitle = props.adaptiveTitle, mobileFilter = props.mobileFilter;\n var defaultProps = {\n navigatable: navigatable || false,\n navigatableElements: navigatableElements || [],\n expand: expand,\n animation: animation === false ? false : true,\n onClose: onClose,\n animationStyles: windowWidth <= MOBILE_SMALL_DEVISE ? { top: 0, width: '100%', height: '100%' } : undefined,\n className: windowWidth <= MOBILE_SMALL_DEVISE\n ? 'k-adaptive-actionsheet k-actionsheet-fullscreen'\n : 'k-adaptive-actionsheet k-actionsheet-bottom'\n };\n return (React.createElement(ActionSheet, __assign({}, defaultProps),\n React.createElement(ActionSheetHeader, { className: 'k-text-center' },\n React.createElement(\"div\", { className: \"k-actionsheet-titlebar-group k-hbox\" },\n React.createElement(\"div\", { className: \"k-actionsheet-title\" },\n React.createElement(\"div\", null, adaptiveTitle)),\n React.createElement(\"div\", { className: \"k-actionsheet-actions\" },\n React.createElement(Button, { tabIndex: 0, \"aria-label\": \"Cancel\", \"aria-disabled\": \"false\", type: \"button\", fillMode: \"flat\", icon: 'x', svgIcon: xIcon, onClick: onClose }))),\n mobileFilter &&\n React.createElement(\"div\", { className: \"k-actionsheet-titlebar-group k-actionsheet-filter\" }, mobileFilter)),\n children,\n footer && React.createElement(ActionSheetFooter, { className: 'k-actions k-actions-stretched' },\n React.createElement(Button, { size: \"large\", tabIndex: 0, \"aria-label\": footer.cancelText, \"aria-disabled\": \"false\", type: \"button\", onClick: footer.onCancel }, footer.cancelText),\n React.createElement(Button, { tabIndex: 0, themeColor: \"primary\", size: \"large\", \"aria-label\": footer.applyText, \"aria-disabled\": \"false\", type: \"button\", onClick: footer.onApply }, footer.applyText))));\n};\n","/** @hidden */\nexport var MOBILE_SMALL_DEVISE = 500;\n/** @hidden */\nexport var MOBILE_MEDIUM_DEVISE = 768;\n","/**\n * @hidden\n */\nvar Mask = /** @class */ (function () {\n function Mask() {\n this.symbols = '';\n this.partMap = [];\n }\n return Mask;\n}());\nexport { Mask };\n","/**\n * @hidden\n */\nexport var defaultFormat = 'd';\n/**\n * @hidden\n */\nexport var defaultFormatPlaceholder = 'wide';\n/**\n * @hidden\n */\nexport var padZero = function (length) { return new Array(Math.max(length, 0)).fill('0').join(''); };\n/**\n * @hidden\n */\nexport var approximateStringMatching = function (oldTextOrigin, oldFormat, newTextOrigin, selectionStart) {\n /*\n Remove the right part of the cursor.\n oldFormat = oldFormat.substring(0, caret + oldText.length - newText.length);\n */\n var oldTextSeparator = oldTextOrigin[selectionStart + oldTextOrigin.length - newTextOrigin.length];\n var oldText = oldTextOrigin.substring(0, selectionStart + oldTextOrigin.length - newTextOrigin.length);\n var newText = newTextOrigin.substring(0, selectionStart);\n var diff = [];\n /* Handle the typing of a single character over the same selection. */\n if (oldText === newText && selectionStart > 0) {\n diff.push([oldFormat[selectionStart - 1], newText[selectionStart - 1]]);\n return diff;\n }\n if (oldText.indexOf(newText) === 0 &&\n (newText.length === 0 || oldFormat[newText.length - 1] !== oldFormat[newText.length])) {\n /* Handle Delete/Backspace. */\n var deletedSymbol = '';\n /*\n The whole text is replaced by the same character.\n A nasty patch is required to keep the selection in the first segment.\n */\n if (newText.length === 1) {\n diff.push([oldFormat[0], newText[0]]);\n }\n for (var i = newText.length; i < oldText.length; i++) {\n if (oldFormat[i] !== deletedSymbol && oldFormat[i] !== '_') {\n deletedSymbol = oldFormat[i];\n diff.push([deletedSymbol, '']);\n }\n }\n return diff;\n }\n /*\n Handle the insertion of the text (the new text is longer than the previous one).\n Handle the typing over a literal as well.\n */\n if (newText.indexOf(oldText) === 0 || oldFormat[selectionStart - 1] === '_') {\n var symbol = oldFormat[0];\n for (var i = Math.max(0, oldText.length - 1); i < oldFormat.length; i++) {\n if (oldFormat[i] !== '_') {\n symbol = oldFormat[i];\n break;\n }\n }\n return [[symbol, newText[selectionStart - 1]]];\n }\n /* Handle the entering of a space or a separator for navigating to the next item. */\n if (newText[newText.length - 1] === ' ' || newText[newText.length - 1] === oldTextSeparator) {\n return [[oldFormat[selectionStart - 1], '_']];\n }\n /* Handle typing over a correctly selected part. */\n return [[oldFormat[selectionStart - 1], newText[selectionStart - 1]]];\n};\n/**\n * @hidden\n */\nexport var dateSymbolMap = function (map, part) { map[part.pattern[0]] = part.type; return map; };\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) { return (candidate === null || !((min && min > candidate) || (max && max < candidate))); };\n/**\n * @hidden\n */\nexport var invalidClasses = ['k-invalid'];\n/** @hidden */\nexport var wrapperClasses = ['k-widget', 'k-dateinput'];\n","import { addMonths, cloneDate, createDate, isEqual, getDate, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Mask } from './mask';\nimport { dateSymbolMap } from './../utils';\n/**\n * @hidden\n */\nvar KendoDate = /** @class */ (function () {\n function KendoDate(intlProvider, formatPlaceholder, format) {\n this.year = true;\n this.month = true;\n this.date = true;\n this.hours = true;\n this.minutes = true;\n this.seconds = true;\n this.milliseconds = true;\n this.leadingZero = null;\n this.typedMonthPart = '';\n this.knownParts = 'adHhmMsEy';\n this.symbols = {\n 'E': 'E',\n 'H': 'H',\n 'M': 'M',\n 'a': 'a',\n 'd': 'd',\n 'h': 'h',\n 'm': 'm',\n 's': 's',\n 'y': 'y'\n };\n this._value = getDate(new Date());\n this.intlProvider = intlProvider;\n this.formatPlaceholder = formatPlaceholder;\n this.format = format;\n this.monthNames = this.allFormatedMonths();\n }\n Object.defineProperty(KendoDate.prototype, \"intl\", {\n get: function () {\n return this.intlProvider();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(KendoDate.prototype, \"value\", {\n get: function () {\n return this._value;\n },\n enumerable: false,\n configurable: true\n });\n KendoDate.prototype.setValue = function (value) {\n if (!value) {\n this._value = getDate(new Date());\n this.modifyExisting(false);\n }\n else if (!isEqual(value, this._value)) {\n this._value = cloneDate(value);\n this.modifyExisting(true);\n }\n };\n KendoDate.prototype.hasValue = function () {\n var _this = this;\n var pred = function (a, p) { return a || p.type !== 'literal' && p.type !== 'dayperiod' && _this.getExisting(p.pattern[0]); };\n return this.intl.splitDateFormat(this.format).reduce(pred, false);\n };\n KendoDate.prototype.getDateObject = function () {\n for (var i = 0; i < this.knownParts.length; i++) {\n if (!this.getExisting(this.knownParts[i])) {\n return null;\n }\n }\n return cloneDate(this.value);\n };\n KendoDate.prototype.getTextAndFormat = function () {\n return this.merge(this.intl.formatDate(this.value, this.format), this.dateFormatString(this.value, this.format));\n };\n KendoDate.prototype.modifyExisting = function (value) {\n var sampleFormat = this.dateFormatString(this.value, this.format).symbols;\n for (var i = 0; i < sampleFormat.length; i++) {\n this.setExisting(sampleFormat[i], value);\n }\n };\n KendoDate.prototype.getExisting = function (symbol) {\n switch (symbol) {\n case 'y': return this.year;\n case 'M':\n case 'L': return this.month;\n case 'd': return this.date;\n case 'E': return this.date && this.month && this.year;\n case 'h':\n case 'H': return this.hours;\n case 'm': return this.minutes;\n case 's': return this.seconds;\n default: return true;\n }\n };\n KendoDate.prototype.setExisting = function (symbol, value) {\n switch (symbol) {\n case 'y':\n // allow 2/29 dates\n this.year = value;\n if (value === false) {\n this._value.setFullYear(2000);\n }\n break;\n case 'M':\n // make sure you can type 31 in the day part\n this.month = value;\n if (value === false) {\n this._value.setMonth(0);\n }\n break;\n case 'd':\n this.date = value;\n break;\n case 'h':\n case 'H':\n this.hours = value;\n break;\n case 'm':\n this.minutes = value;\n break;\n case 's':\n this.seconds = value;\n break;\n default: return;\n }\n };\n KendoDate.prototype.modifyPart = function (symbol, offset) {\n var newValue = cloneDate(this.value);\n switch (symbol) {\n case 'y':\n newValue.setFullYear(newValue.getFullYear() + offset);\n break;\n case 'M':\n newValue = addMonths(this.value, offset);\n break;\n case 'd':\n case 'E':\n newValue.setDate(newValue.getDate() + offset);\n break;\n case 'h':\n case 'H':\n newValue.setHours(newValue.getHours() + offset);\n break;\n case 'm':\n newValue.setMinutes(newValue.getMinutes() + offset);\n break;\n case 's':\n newValue.setSeconds(newValue.getSeconds() + offset);\n break;\n case 'a':\n newValue.setHours(newValue.getHours() + (12 * offset));\n break;\n default: break;\n }\n this.setExisting(symbol, true);\n this._value = newValue;\n };\n KendoDate.prototype.parsePart = function (symbol, currentChar) {\n var _a;\n this.resetLeadingZero();\n if (!currentChar) {\n this.setExisting(symbol, false);\n return { value: null };\n }\n var baseDate = this.intl.formatDate(this.value, this.format);\n var dateParts = this.dateFormatString(this.value, this.format);\n var baseFormat = dateParts.symbols;\n var replaced = false;\n var prefix = '';\n var current = '';\n var suffix = '';\n for (var i = 0; i < baseDate.length; i++) {\n if (baseFormat[i] === symbol) {\n current += this.getExisting(symbol) ? baseDate[i] : '0';\n replaced = true;\n }\n else if (!replaced) {\n prefix += baseDate[i];\n }\n else {\n suffix += baseDate[i];\n }\n }\n var parsedDate = null;\n var month = this.matchMonth(currentChar);\n while (current.length > 0 && current.charAt(0) === '0') {\n current = current.slice(1);\n }\n if (current.length >= 4) {\n current = '';\n }\n for (var i = 0; i < 2; i++) {\n var middle = current + currentChar;\n var middleNumber = parseInt(middle, 10);\n parsedDate = this.intl.parseDate(prefix + middle + suffix, this.format);\n if (!parsedDate && !isNaN(middleNumber) && !isNaN(parseInt(currentChar, 10))) {\n if (symbol === 'M' && !month) {\n var monthNumber = middleNumber - 1;\n if (monthNumber > -1 && monthNumber < 12) {\n parsedDate = cloneDate(this.value);\n parsedDate.setMonth(monthNumber);\n if (parsedDate.getMonth() !== monthNumber) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (symbol === 'y') {\n parsedDate = createDate(parseInt(middle, 10), this.month ? this.value.getMonth() : 0, this.date ? this.value.getDate() : 1, this.hours ? this.value.getHours() : 0, this.minutes ? this.value.getMinutes() : 0, this.seconds ? this.value.getSeconds() : 0, this.milliseconds ? this.value.getMilliseconds() : 0);\n if (this.date && parsedDate.getDate() !== this.value.getDate()) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (parsedDate) {\n this._value = parsedDate;\n this.setExisting(symbol, true);\n return { value: this.value };\n }\n current = '';\n }\n if (month) {\n parsedDate = this.intl.parseDate(prefix + month + suffix, this.format);\n if (parsedDate) {\n this._value = parsedDate;\n this.setExisting(symbol, true);\n return { value: this.value };\n }\n }\n if (currentChar === '0') {\n this.leadingZero = !this.isAbbrMonth(dateParts.partMap, symbol) ? (_a = {}, _a[symbol] = true, _a) : null;\n this.setExisting(symbol, false);\n }\n return { value: null };\n };\n KendoDate.prototype.symbolMap = function (symbol) {\n return this.intl.splitDateFormat(this.format).reduce(dateSymbolMap, {})[symbol];\n };\n KendoDate.prototype.resetLeadingZero = function () {\n var hasLeadingZero = this.leadingZero !== null;\n this.leadingZero = null;\n return hasLeadingZero;\n };\n KendoDate.prototype.isAbbrMonth = function (parts, symbol) {\n var pattern = this.partPattern(parts, symbol);\n return pattern.type === 'month' && pattern.names;\n };\n KendoDate.prototype.partPattern = function (parts, symbol) {\n return parts.filter(function (part) { return part.pattern.indexOf(symbol) !== -1; })[0];\n };\n KendoDate.prototype.matchMonth = function (typedChar) {\n this.typedMonthPart += typedChar.toLowerCase();\n if (this.monthNames.length === 0) {\n return '';\n }\n while (this.typedMonthPart.length > 0) {\n for (var i = 0; i < this.monthNames.length; i++) {\n if (this.monthNames[i].toLowerCase().indexOf(this.typedMonthPart) === 0) {\n return this.monthNames[i];\n }\n }\n var monthAsNum = parseInt(this.typedMonthPart, 10);\n /* ensure they exact match */\n if (monthAsNum >= 1 && monthAsNum <= 12 && monthAsNum.toString() === this.typedMonthPart) {\n return this.monthNames[monthAsNum - 1];\n }\n this.typedMonthPart = this.typedMonthPart.substring(1, this.typedMonthPart.length);\n }\n return '';\n };\n KendoDate.prototype.allFormatedMonths = function () {\n var dateFormatParts = this.intl.splitDateFormat(this.format);\n for (var i = 0; i < dateFormatParts.length; i++) {\n if (dateFormatParts[i].type === 'month' && dateFormatParts[i].names) {\n return this.intl.dateFormatNames(dateFormatParts[i].names);\n }\n }\n return [];\n };\n KendoDate.prototype.dateFormatString = function (date, format) {\n var dateFormatParts = this.intl.splitDateFormat(format);\n var parts = [];\n var partMap = [];\n for (var i = 0; i < dateFormatParts.length; i++) {\n var partLength = this.intl.formatDate(date, { pattern: dateFormatParts[i].pattern }).length;\n while (partLength > 0) {\n parts.push(this.symbols[dateFormatParts[i].pattern[0]] || '_');\n partMap.push(dateFormatParts[i]);\n partLength--;\n }\n }\n var returnValue = new Mask();\n returnValue.symbols = parts.join('');\n returnValue.partMap = partMap;\n return returnValue;\n };\n KendoDate.prototype.merge = function (text, mask) {\n // Important: right to left.\n var resultText = '';\n var resultFormat = '';\n var format = mask.symbols;\n for (var r = format.length - 1; r >= 0; r--) {\n if (this.knownParts.indexOf(format[r]) === -1 || this.getExisting(format[r])) {\n resultText = text[r] + resultText;\n resultFormat = format[r] + resultFormat;\n }\n else {\n var currentSymbol = format[r];\n while (r >= 0 && currentSymbol === format[r]) {\n r--;\n }\n r++;\n if (this.leadingZero && this.leadingZero[currentSymbol]) {\n resultText = '0' + resultText;\n }\n else {\n resultText = this.dateFieldName(mask.partMap[r]) + resultText;\n }\n while (resultFormat.length < resultText.length) {\n resultFormat = format[r] + resultFormat;\n }\n }\n }\n return { text: resultText, format: resultFormat };\n };\n KendoDate.prototype.dateFieldName = function (part) {\n var formatPlaceholder = (this.formatPlaceholder || 'wide');\n if (formatPlaceholder[part.type]) {\n return formatPlaceholder[part.type];\n }\n if (formatPlaceholder === 'formatPattern') {\n return part.pattern;\n }\n return this.intl.dateFieldName(Object.assign(part, { nameType: formatPlaceholder }));\n };\n return KendoDate;\n}());\nexport { KendoDate };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { isEqual, cloneDate } from '@progress/kendo-date-math';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { caretAltUpIcon, caretAltDownIcon } from '@progress/kendo-svg-icons';\nimport { registerForIntl, provideIntlService, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { KendoDate } from './models';\nimport { guid, AsyncFocusBlur, noop, classNames, createPropsContext, withPropsContext, kendoThemeMaps, getActiveElement } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { approximateStringMatching, defaultFormat, defaultFormatPlaceholder, isInRange, wrapperClasses } from './utils';\nimport { MAX_DATE, MIN_DATE } from './../utils';\nimport { messages, increaseValue, decreaseValue } from './../messages';\nimport { isInTimeRange } from '../timepicker/utils';\nimport { MIN_TIME, MAX_TIME } from '../utils';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n// tslint:enable:max-line-length\n/** @hidden */\nvar DateInputWithoutContext = /** @class */ (function (_super) {\n __extends(DateInputWithoutContext, _super);\n function DateInputWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this.kendoDate = null;\n _this.currentFormat = '';\n _this.paste = false;\n _this._element = null;\n _this._wrapper = null;\n _this._inputId = guid();\n _this._lastSelectedSymbol = '';\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._element) {\n _this._element.focus();\n }\n };\n /**\n * @hidden\n */\n _this.setValidity = function () {\n if (_this.element && _this.element.setCustomValidity) {\n _this.element.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || DateInputWithoutContext.defaultProps.validationMessage);\n }\n };\n _this.updateOnPaste = function (event) {\n if (!_this.element || !_this.kendoDate) {\n return;\n }\n var value = provideIntlService(_this).parseDate(_this.element.value, _this.props.format) || _this.value;\n var oldValue = _this.value;\n _this.kendoDate.setValue(value);\n _this.triggerChange(event, oldValue);\n };\n /* Handlers */\n _this.spinnersMouseDown = function (event) {\n /* do not steal focus from input when changing value with spinners */\n event.preventDefault();\n var activeElement = getActiveElement(document);\n /* manually focus the input in case the user clicks the spinners first */\n if (_this.element && activeElement !== _this.element) {\n _this.element.focus({ preventScroll: true });\n }\n };\n _this.handlePaste = function () {\n _this.paste = true;\n };\n _this.elementChange = function (event) {\n if (!_this.element || !_this.kendoDate) {\n return;\n }\n if (_this.paste) {\n _this.updateOnPaste(event);\n _this.paste = false;\n return;\n }\n var _a = _this.kendoDate.getTextAndFormat(), text = _a.text, currentFormat = _a.format;\n _this.currentFormat = currentFormat;\n var dateBeforeChange = _this.value;\n var diff = approximateStringMatching(text, _this.currentFormat, _this.element.value, _this.selection.start);\n var navigationOnly = (diff.length === 1 && diff[0][1] === '_');\n if (!navigationOnly) {\n for (var i = 0; i < diff.length; i++) {\n _this.kendoDate.parsePart(diff[i][0], diff[i][1]);\n }\n }\n if (diff.length && diff[0][0] !== '_') {\n _this.setSelection(_this.selectionBySymbol(diff[0][0]));\n }\n if (navigationOnly) {\n _this.switchDateSegment(1);\n }\n _this.triggerChange(event, dateBeforeChange);\n };\n _this.elementClick = function (_) {\n _this.setSelection(_this.selectionByIndex(_this.selection.start));\n };\n _this.nativeWheel = function (event) {\n var activeElement = getActiveElement(document);\n if (activeElement === _this.element) {\n event.preventDefault();\n }\n };\n _this.wheel = function (event) {\n var activeElement = getActiveElement(document);\n if (activeElement !== _this.element) {\n return;\n }\n if (event.nativeEvent.deltaY < 0) {\n _this.increasePart(event);\n }\n if (event.nativeEvent.deltaY > 0) {\n _this.decreasePart(event);\n }\n };\n _this.increasePart = function (event) {\n _this.modifyDateSegmentValue(1, event);\n };\n _this.decreasePart = function (event) {\n _this.modifyDateSegmentValue(-1, event);\n };\n _this.elementKeyDown = function (event) {\n if (event.altKey) {\n return;\n }\n switch (event.keyCode) {\n case 37:\n /*\n * Key: `Left Arrow`\n * Action: Switches to previous logical* segment.\n * (*) https://www.w3.org/International/articles/inline-bidi-markup/uba-basics\n */\n _this.switchDateSegment(-1);\n break;\n case (38):\n /*\n * Key: `Up Arrow`\n * Action: Increases the currently selected segment value.\n */\n _this.modifyDateSegmentValue(1, event);\n break;\n case 39:\n /*\n * Key: `Right Arrow`\n * Action: Switches to the next logical segment.\n */\n _this.switchDateSegment(1);\n break;\n case 40:\n /*\n * Key: `Down Arrow`\n * Action: Decreases the currently selected segment value.\n */\n _this.modifyDateSegmentValue(-1, event);\n break;\n default:\n /*\n * Key: any\n * Action: Does not prevent the default behavior.\n */\n return;\n }\n event.preventDefault();\n };\n _this.elementOnFocus = function (_) {\n if (_this.wrapper) {\n _this.wrapper.classList.add('k-focus');\n }\n _this.setState({ focused: true });\n };\n _this.elementOnBlur = function (_) {\n if (_this.wrapper) {\n _this.wrapper.classList.remove('k-focus');\n }\n _this.setState({ focused: false });\n };\n validatePackage(packageMetadata);\n _this.state = {\n focused: false\n };\n return _this;\n }\n /**\n * @hidden\n */\n DateInputWithoutContext.prototype.componentDidMount = function () {\n this.setValidity();\n if (this.wrapper) {\n this.wrapper.addEventListener('wheel', this.nativeWheel, { passive: false });\n }\n };\n /**\n * @hidden\n */\n DateInputWithoutContext.prototype.componentDidUpdate = function (_, prevState) {\n if (this._lastSelectedSymbol && prevState.focused === this.state.focused) {\n this.setSelection(this.selectionBySymbol(this._lastSelectedSymbol));\n }\n else if (this.props.placeholder !== undefined && this.selection.start === this.selection.end) {\n this.setSelection({ start: 0, end: this.currentFormat.length });\n }\n this.setValidity();\n };\n /**\n * @hidden\n */\n DateInputWithoutContext.prototype.componentWillUnmount = function () {\n if (this.wrapper) {\n this.wrapper.removeEventListener('wheel', this.nativeWheel);\n }\n };\n /**\n * @hidden\n */\n DateInputWithoutContext.prototype.render = function () {\n var _this = this;\n var _a = this.props, _b = _a.size, size = _b === void 0 ? DateInputWithoutContext.defaultProps.size : _b, _c = _a.fillMode, fillMode = _c === void 0 ? DateInputWithoutContext.defaultProps.fillMode : _c, _d = _a.rounded, rounded = _d === void 0 ? DateInputWithoutContext.defaultProps.rounded : _d;\n if (this.props._ref) {\n this.props._ref.current = this;\n }\n var localizationService = provideLocalizationService(this);\n var props = __assign(__assign({}, DateInputWithoutContext.defaultProps), this.props);\n var name = props.name, label = props.label, id = props.id;\n var currentText = this.text;\n var text = currentText === this.props.placeholder ? '' : currentText;\n var placeholder = currentText === this.props.placeholder ? currentText : undefined;\n var inputId = id || this._inputId;\n var isValid = !this.validityStyles || this.validity.valid;\n var wrapperClassesInstance = __spreadArray([], wrapperClasses, true);\n if (this.props.className) {\n wrapperClassesInstance.push(this.props.className);\n }\n var dateinput = (React.createElement(AsyncFocusBlur, { onFocus: this.elementOnFocus, onBlur: this.elementOnBlur }, function (_a) {\n var _b;\n var onFocus = _a.onFocus, onBlur = _a.onBlur;\n return (React.createElement(\"span\", { ref: function (span) { _this._wrapper = span; }, style: !label\n ? { width: _this.props.width }\n : undefined, dir: _this.props.dir, className: classNames('k-dateinput', 'k-input', (_b = {},\n _b[\"k-input-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _b[\"k-input-\".concat(fillMode)] = fillMode,\n _b[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _b['k-invalid'] = !isValid,\n _b['k-required'] = _this.required,\n _b['k-disabled'] = _this.props.disabled,\n _b), _this.props.className), onFocus: onFocus, onBlur: onBlur },\n React.createElement(\"input\", { role: _this.props.ariaRole || 'textbox', readOnly: _this.props.readonly, tabIndex: _this.props.tabIndex, disabled: _this.props.disabled, title: _this.props.title !== undefined ? _this.props.title : currentText, type: \"text\", spellCheck: false, autoComplete: \"off\", autoCorrect: \"off\", className: \"k-input-inner\", id: inputId, \"aria-label\": _this.props.ariaLabel, \"aria-labelledby\": _this.props.ariaLabelledBy, \"aria-describedby\": _this.props.ariaDescribedBy, \"aria-haspopup\": _this.props.ariaHasPopup, \"aria-disabled\": _this.props.disabled, \"aria-expanded\": _this.props.ariaExpanded, \"aria-controls\": _this.props.ariaControls, onWheel: _this.wheel, onClick: _this.elementClick, onInput: _this.elementChange, onPaste: _this.handlePaste, onKeyDown: _this.elementKeyDown, onChange: noop, value: text, placeholder: placeholder, name: name, ref: function (input) { return _this._element = input; } }),\n _this.props.children,\n _this.props.spinners && (React.createElement(\"span\", { className: \"k-input-spinner k-spin-button\", onMouseDown: _this.spinnersMouseDown },\n React.createElement(Button, { tabIndex: -1, type: \"button\", rounded: null, className: \"k-spinner-increase\", icon: 'caret-alt-up', svgIcon: caretAltUpIcon, \"aria-label\": localizationService.toLanguageString(increaseValue, messages[increaseValue]), title: localizationService.toLanguageString(increaseValue, messages[increaseValue]), onClick: _this.increasePart }),\n React.createElement(Button, { tabIndex: -1, type: \"button\", rounded: null, className: \"k-spinner-decrease\", icon: 'caret-alt-down', svgIcon: caretAltDownIcon, \"aria-label\": localizationService.toLanguageString(decreaseValue, messages[decreaseValue]), title: localizationService.toLanguageString(decreaseValue, messages[decreaseValue]), onClick: _this.decreasePart })))));\n }));\n return label\n ? (React.createElement(FloatingLabel, { label: label, editorId: inputId, editorValue: currentText, editorValid: isValid, editorDisabled: this.props.disabled, children: dateinput, style: { width: this.props.width } }))\n : dateinput;\n };\n Object.defineProperty(DateInputWithoutContext.prototype, \"value\", {\n /* Public Getters */\n /**\n * Gets the value of the DateInput.\n */\n get: function () {\n if (this.valueDuringOnChange !== undefined) {\n return this.valueDuringOnChange;\n }\n return this.kendoDate && this.kendoDate.getDateObject();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the DateInput.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : DateInputWithoutContext.defaultProps.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : DateInputWithoutContext.defaultProps.max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"text\", {\n /**\n * @hidden\n */\n get: function () {\n var props = __assign(__assign({}, DateInput.defaultProps), this.props);\n var _a = props.formatPlaceholder, formatPlaceholder = _a === void 0 ? DateInputWithoutContext.defaultProps.formatPlaceholder : _a, _b = props.format, format = _b === void 0 ? DateInputWithoutContext.defaultProps.format : _b, value = props.value, defaultValue = props.defaultValue;\n if (this.kendoDate === null) {\n this.kendoDate = new KendoDate(this.intl.bind(this), formatPlaceholder, format);\n this.kendoDate.setValue(value || defaultValue || null);\n }\n else {\n this.kendoDate.format = format;\n this.kendoDate.formatPlaceholder = formatPlaceholder;\n }\n if (value !== undefined && this.value !== value) {\n this.kendoDate.setValue(value);\n }\n var _c = this.kendoDate.getTextAndFormat(), currentText = _c.text, currentFormat = _c.format;\n this.currentFormat = currentFormat;\n return props.placeholder !== null && props.placeholder !== undefined\n && !this.state.focused\n && !this.kendoDate.hasValue()\n ? props.placeholder\n : currentText;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DateInput is set.\n */\n get: function () {\n var inRange = isInRange(this.value, this.min, this.max)\n && isInTimeRange(this.value, this.props.minTime, this.props.maxTime);\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== null) && inRange;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"element\", {\n /**\n * Gets the element of the DateInput.\n *\n * @return - An `HTMLInputElement`.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * }\n * element = null;\n * render() {\n * return (\n *
    \n * \n * this.element = dateInput ? dateInput.element : null}\n * />\n * \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(\n * ,\n * document.getElementsByTagName('my-app')[0]\n * );\n * ```\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : DateInputWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : DateInputWithoutContext.defaultProps.required;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DateInputWithoutContext.prototype, \"wrapper\", {\n /**\n * @hidden\n */\n get: function () {\n return this._wrapper;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n DateInputWithoutContext.prototype.intl = function () {\n return provideIntlService(this);\n };\n Object.defineProperty(DateInputWithoutContext.prototype, \"selection\", {\n /* end handlers */\n get: function () {\n var returnValue = { start: 0, end: 0 };\n if (this.element !== null && this.element.selectionStart !== undefined) {\n returnValue = { start: this.element.selectionStart, end: this.element.selectionEnd };\n }\n return returnValue;\n },\n enumerable: false,\n configurable: true\n });\n DateInputWithoutContext.prototype.setSelection = function (selection) {\n var _this = this;\n this._lastSelectedSymbol = this.currentFormat[selection.start];\n window.requestAnimationFrame(function () {\n var activeElement = getActiveElement(document);\n if (_this.element && activeElement === _this.element && !_this.props.disableSelection) {\n _this.element.setSelectionRange(selection.start, selection.end);\n }\n });\n };\n DateInputWithoutContext.prototype.triggerChange = function (event, oldValue) {\n this.valueDuringOnChange = this.value;\n this.forceUpdate();\n if (this.props.onChange\n && !isEqual(oldValue, this.value)) {\n // isEqual works with null\n this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: this.value,\n target: this\n // inRange: this.props.min && this.props.max ? isInRange(value, this.props.min, this.props.max) : true\n });\n }\n this.valueDuringOnChange = undefined;\n };\n DateInputWithoutContext.prototype.selectionBySymbol = function (symbol) {\n var start = -1;\n var end = 0;\n for (var i = 0; i < this.currentFormat.length; i++) {\n if (this.currentFormat[i] === symbol) {\n end = i + 1;\n if (start === -1) {\n start = i;\n }\n }\n }\n if (start < 0) {\n start = 0;\n }\n return { start: start, end: end };\n };\n DateInputWithoutContext.prototype.selectionByIndex = function (index) {\n // console.log(42, index);\n var selection = { start: index, end: index };\n for (var i = index, j = index - 1; i < this.currentFormat.length || j >= 0; i++, j--) {\n if (i < this.currentFormat.length && this.currentFormat[i] !== '_') {\n selection = this.selectionBySymbol(this.currentFormat[i]);\n break;\n }\n if (j >= 0 && this.currentFormat[j] !== '_') {\n selection = this.selectionBySymbol(this.currentFormat[j]);\n break;\n }\n }\n return selection;\n };\n DateInputWithoutContext.prototype.switchDateSegment = function (offset) {\n var _a = this.selection, selectionStart = _a.start, selectionEnd = _a.end;\n if (selectionStart < selectionEnd &&\n this.currentFormat[selectionStart] !== this.currentFormat[selectionEnd - 1]) {\n this.setSelection(this.selectionByIndex(offset > 0 ? selectionStart : selectionEnd - 1));\n return;\n }\n var previousFormatSymbol = this.currentFormat[selectionStart];\n var a = selectionStart + offset;\n while (a > 0 && a < this.currentFormat.length) {\n if (this.currentFormat[a] !== previousFormatSymbol &&\n this.currentFormat[a] !== '_') {\n break;\n }\n a += offset;\n }\n if (this.currentFormat[a] === '_') {\n // no known symbol is found\n return;\n }\n var b = a;\n while (b >= 0 && b < this.currentFormat.length) {\n if (this.currentFormat[b] !== this.currentFormat[a]) {\n break;\n }\n b += offset;\n }\n if (a > b && (b + 1 !== selectionStart || a + 1 !== selectionEnd)) {\n this.setSelection({ start: b + 1, end: a + 1 });\n }\n else if (a < b && (a !== selectionStart || b !== selectionEnd)) {\n this.setSelection({ start: a, end: b });\n }\n };\n DateInputWithoutContext.prototype.modifyDateSegmentValue = function (offset, event) {\n if (!this.kendoDate) {\n return;\n }\n var oldValue = this.value;\n var symbol = this.currentFormat[this.selection.start];\n var currentStepSymbol = this.kendoDate.symbolMap(symbol);\n var step = ((this.props.steps || {})[currentStepSymbol] || 1) * offset;\n this.kendoDate.modifyPart(symbol, step);\n this.triggerChange(event, oldValue);\n };\n /**\n * @hidden\n */\n DateInputWithoutContext.displayName = 'DateInput';\n /**\n * @hidden\n */\n DateInputWithoutContext.propTypes = {\n value: PropTypes.instanceOf(Date),\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n skeleton: PropTypes.string,\n pattern: PropTypes.string,\n date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n era: PropTypes.oneOf(['narrow', 'short', 'long']),\n year: PropTypes.oneOf(['numeric', '2-digit']),\n month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: PropTypes.oneOf(['numeric', '2-digit']),\n weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n hour: PropTypes.oneOf(['numeric', '2-digit']),\n hour12: PropTypes.bool,\n minute: PropTypes.oneOf(['numeric', '2-digit']),\n second: PropTypes.oneOf(['numeric', '2-digit']),\n timeZoneName: PropTypes.oneOf(['short', 'long'])\n })\n ]),\n formatPlaceholder: PropTypes.oneOfType([\n PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n PropTypes.shape({\n year: PropTypes.string,\n month: PropTypes.string,\n day: PropTypes.string,\n hour: PropTypes.string,\n minute: PropTypes.string,\n second: PropTypes.string\n })\n ]),\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n tabIndex: PropTypes.number,\n title: PropTypes.string,\n steps: PropTypes.shape({\n year: PropTypes.number,\n month: PropTypes.number,\n day: PropTypes.number,\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n min: PropTypes.instanceOf(Date),\n max: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n spinners: PropTypes.bool,\n name: PropTypes.string,\n dir: PropTypes.string,\n label: PropTypes.string,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n ariaLabel: PropTypes.string,\n ariaRole: PropTypes.string,\n ariaHasPopup: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.string\n ]),\n ariaExpanded: PropTypes.oneOfType([\n PropTypes.bool\n ]),\n onChange: PropTypes.func,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline'])\n };\n /**\n * @hidden\n */\n DateInputWithoutContext.defaultProps = {\n format: defaultFormat,\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid',\n formatPlaceholder: defaultFormatPlaceholder,\n // defaultValue: null as Date | null,\n spinners: false,\n disabled: false,\n max: cloneDate(MAX_DATE),\n min: cloneDate(MIN_DATE),\n minTime: cloneDate(MIN_TIME),\n maxTime: cloneDate(MAX_TIME),\n required: false,\n validityStyles: true,\n validationMessage: VALIDATION_MESSAGE,\n placeholder: null,\n // the rest of the properties are undefined by default\n ariaHasPopup: 'grid'\n };\n return DateInputWithoutContext;\n}(React.Component));\nexport { DateInputWithoutContext };\n/**\n * Represents the PropsContext of the `DateInput` component.\n * Used for global configuration of all `DateInput` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var DateInputPropsContext = createPropsContext();\n;\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the KendoReact DateInput Component.\n *\n * Accepts properties of type [DateInputProps]({% slug api_dateinputs_dateinputprops %}).\n * Obtaining the `ref` returns an object of type [DateInputHandle]({% slug api_dateinputs_dateinputhandle %}).\n */\nexport var DateInput = withPropsContext(DateInputPropsContext, DateInputWithoutContext);\nDateInput.displayName = 'KendoReactDateInput';\nregisterForIntl(DateInputWithoutContext);\nregisterForLocalization(DateInputWithoutContext);\n","import { Button } from '@progress/kendo-react-buttons';\n/**\n * Represents the default `toggleButton` component rendered by the [KendoReact Scheduler DatePicker]({% slug overview_datepicker %}).\n */\nexport var ToggleButton = Button;\n","import * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n * @deprecated\n */\nexport var PickerWrap = React.forwardRef(function (props, ref) {\n var _ref = props._ref;\n var element = React.useRef(null);\n React.useImperativeHandle(ref, function () { return element.current; });\n React.useImperativeHandle(_ref, function () { return element.current; });\n var className = React.useMemo(function () { return classNames(props.className, 'k-picker-wrap'); }, [props.className]);\n return (React.createElement(\"span\", { ref: element, id: props.id, style: props.style, className: className, tabIndex: props.tabIndex }, props.children));\n});\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getDate, cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys, AsyncFocusBlur, createPropsContext, withPropsContext, validatePackage, kendoThemeMaps, canUseDOM } from '@progress/kendo-react-common';\nimport { calendarIcon } from '@progress/kendo-svg-icons';\nimport { packageMetadata } from '../package-metadata';\nimport { DateInput } from '../dateinput/DateInput';\nimport { Calendar } from '../calendar/components/Calendar';\nimport { MIN_DATE, MAX_DATE, setTime } from '../utils';\nimport { isInDateRange } from '../utils';\nimport { messages, toggleCalendar } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { ToggleButton } from './ToggleButton';\nimport { PickerWrap } from '../common/PickerWrap';\nimport { PickerFloatingLabel } from '../hooks/usePickerFloatingLabel';\nimport { ActionSheetContent } from '@progress/kendo-react-layout';\nimport { AdaptiveMode } from '../common/AdaptiveMode';\nimport { MOBILE_MEDIUM_DEVISE } from '../common/constants';\n/** @hidden */\nvar DatePickerWithoutContext = /** @class */ (function (_super) {\n __extends(DatePickerWithoutContext, _super);\n function DatePickerWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this._popupId = guid();\n _this._element = null;\n _this._dateInput = React.createRef();\n _this._calendar = null;\n _this.shouldFocusDateInput = false;\n _this.prevShow = false;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this.dateInput) {\n _this.dateInput.focus();\n }\n };\n _this.setCalendarRef = function (calendar) {\n _this._calendar = calendar;\n };\n _this.nextValue = function (nextProps, nextState) {\n return nextProps.value !== undefined\n ? nextProps.value\n : nextState.value;\n };\n _this.nextShow = function (nextProps, nextState) {\n return nextProps.show !== undefined\n ? nextProps.show\n : nextState.show;\n };\n _this.renderPopup = function () {\n var _a = _this.props, disabled = _a.disabled, min = _a.min, max = _a.max, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate;\n var _b = _this.props.popupSettings, popupClass = _b.popupClass, otherPopupSettings = __rest(_b, [\"popupClass\"]);\n var show = _this.show;\n var value = _this.value;\n var sanitizedValue = value && getDate(value);\n var popupClassNames = classNames('k-calendar-container k-group k-reset', popupClass);\n var popupProps = __assign({ popupClass: 'k-datepicker-popup', show: show, anchor: _this._element, className: popupClassNames, id: _this._popupId, anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n }, popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n } }, otherPopupSettings);\n var calendarProps = {\n disabled: disabled,\n value: sanitizedValue,\n min: min,\n max: max,\n weekNumber: weekNumber,\n focusedDate: focusedDate,\n className: _this.mobileMode ? 'k-calendar-lg' : '',\n navigation: _this.mobileMode ? false : true,\n onChange: _this.handleCalendarValueChange\n };\n if (_this.mobileMode) {\n return React.createElement(_this.calendarComp, __assign({ _ref: _this.setCalendarRef }, calendarProps));\n }\n return (React.createElement(_this.popupComp, __assign({}, popupProps),\n React.createElement(_this.calendarComp, __assign({ _ref: _this.setCalendarRef }, calendarProps))));\n };\n _this.renderAdaptivePopup = function () {\n var _a = _this.state.windowWidth, windowWidth = _a === void 0 ? 0 : _a;\n var actionSheetProps = {\n expand: _this.show,\n onClose: _this.handleBlur,\n adaptiveTitle: _this.props.adaptiveTitle,\n windowWidth: windowWidth\n };\n return (React.createElement(AdaptiveMode, __assign({}, actionSheetProps),\n React.createElement(ActionSheetContent, { className: '!k-overflow-hidden' }, _this.renderPopup())));\n };\n _this.handleInputValueChange = function (event) {\n _this.handleValueChange(event.value, event);\n };\n _this.handleCalendarValueChange = function (event) {\n var value = _this.mergeTime(event.value);\n _this.handleValueChange(value, event);\n };\n _this.handleValueChange = function (value, event) {\n _this.setState({\n value: cloneDate(value || undefined)\n });\n _this.valueDuringOnChange = value;\n _this.showDuringOnChange = false;\n if (!_this.mobileMode) {\n _this.shouldFocusDateInput = true;\n }\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n show: _this.show,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n _this.showDuringOnChange = undefined;\n _this.setShow(false);\n };\n _this.handleFocus = function () {\n _this.setState({ focused: true });\n };\n _this.handleBlur = function () {\n _this.setState({ focused: false });\n _this.setShow(false);\n };\n _this.handleIconClick = function () {\n if (_this.props.disabled) {\n return;\n }\n _this.shouldFocusDateInput = true;\n _this.setShow(!_this.show);\n };\n _this.handleIconMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleKeyDown = function (event) {\n var altKey = event.altKey, keyCode = event.keyCode;\n if (keyCode === Keys.esc) {\n _this.shouldFocusDateInput = true;\n _this.setShow(false);\n return;\n }\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n _this.shouldFocusDateInput = keyCode === Keys.up;\n _this.setShow(keyCode === Keys.down);\n }\n };\n validatePackage(packageMetadata);\n _this.state = {\n value: _this.props.defaultValue || DatePickerWithoutContext.defaultProps.defaultValue,\n show: _this.props.defaultShow || DatePickerWithoutContext.defaultProps.defaultShow,\n focused: false\n };\n return _this;\n }\n Object.defineProperty(DatePickerWithoutContext.prototype, \"document\", {\n get: function () {\n if (!canUseDOM) {\n return;\n }\n // useful only for user actions\n return (this.element && this.element.ownerDocument) || document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"element\", {\n /**\n * Gets the wrapping element of the DatePickerWithoutContext.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"mobileMode\", {\n /**\n * The mobile mode of the DatePicker.\n */\n get: function () {\n var isAdaptive = this.state.windowWidth && this.state.windowWidth <= MOBILE_MEDIUM_DEVISE && this.props.adaptive;\n return !!isAdaptive;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"dateInput\", {\n /**\n * Gets the DateInput component inside the DatePicker component.\n */\n get: function () {\n return this._dateInput.current;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"calendar\", {\n /**\n * Gets the Calendar component inside the DatePicker component.\n */\n get: function () {\n return this._calendar;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"value\", {\n /**\n * Gets the value of the DatePickerWithoutContext.\n */\n get: function () {\n var value = this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n return (value !== null) ? cloneDate(value) : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"show\", {\n /**\n * Gets the popup state of the DatePickerWithoutContext.\n */\n get: function () {\n return this.showDuringOnChange !== undefined\n ? this.showDuringOnChange\n : this.props.show !== undefined\n ? this.props.show\n : this.state.show;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the DatePickerWithoutContext.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : DatePickerWithoutContext.defaultProps.min;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : DatePickerWithoutContext.defaultProps.max;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"dateInputComp\", {\n get: function () {\n return this.props.dateInput || DatePickerWithoutContext.defaultProps.dateInput;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"toggleButtonComp\", {\n get: function () {\n return this.props.toggleButton || DatePickerWithoutContext.defaultProps.toggleButton;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"calendarComp\", {\n get: function () {\n return this.props.calendar || DatePickerWithoutContext.defaultProps.calendar;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"popupComp\", {\n get: function () {\n return this.props.popup || DatePickerWithoutContext.defaultProps.popup;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"pickerWrapComp\", {\n get: function () {\n return this.props.pickerWrap || DatePickerWithoutContext.defaultProps.pickerWrap;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DatePicker is set.\n */\n get: function () {\n var inRange = isInDateRange(this.value, this.min, this.max);\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== null) && inRange;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : DatePickerWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatePickerWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : DatePickerWithoutContext.defaultProps.required;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n DatePickerWithoutContext.prototype.componentDidMount = function () {\n var _a;\n this.observerResize = canUseDOM && window.ResizeObserver && new window.ResizeObserver(this.calculateMedia.bind(this));\n if (this.show) {\n // If defaultShow is true during the initial render, the popup is not aligned.\n this.forceUpdate();\n }\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.observe(this.document.body);\n }\n };\n /**\n * @hidden\n */\n DatePickerWithoutContext.prototype.componentDidUpdate = function () {\n if (this._calendar && this._calendar.element && this.show && !this.prevShow) {\n this._calendar.element.focus({ preventScroll: true });\n }\n if (this.dateInput\n && this.dateInput.element\n && !this.show\n && this.shouldFocusDateInput) {\n this.dateInput.element.focus({ preventScroll: true });\n }\n this.prevShow = this.show;\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n DatePickerWithoutContext.prototype.componentWillUnmount = function () {\n var _a;\n clearTimeout(this.nextTickId);\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.disconnect();\n }\n };\n /**\n * @hidden\n */\n DatePickerWithoutContext.prototype.render = function () {\n var _this = this;\n var _a = this.props, _b = _a.size, size = _b === void 0 ? DatePickerWithoutContext.defaultProps.size : _b, _c = _a.rounded, rounded = _c === void 0 ? DatePickerWithoutContext.defaultProps.rounded : _c, _d = _a.fillMode, fillMode = _d === void 0 ? DatePickerWithoutContext.defaultProps.fillMode : _d, disabled = _a.disabled, tabIndex = _a.tabIndex, title = _a.title, id = _a.id, format = _a.format, formatPlaceholder = _a.formatPlaceholder, min = _a.min, max = _a.max, className = _a.className, width = _a.width, name = _a.name, validationMessage = _a.validationMessage, required = _a.required, validityStyles = _a.validityStyles, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy, ariaLabel = _a.ariaLabel;\n var show = this.show;\n var value = this.value;\n var isValid = !this.validityStyles || this.validity.valid;\n var dateInputProps = {\n disabled: disabled,\n format: format,\n formatPlaceholder: formatPlaceholder,\n id: id,\n ariaLabelledBy: ariaLabelledBy,\n ariaDescribedBy: ariaDescribedBy,\n ariaLabel: ariaLabel,\n max: max,\n min: min,\n name: name,\n onChange: this.handleInputValueChange,\n required: required,\n tabIndex: !show ? tabIndex : -1,\n title: title,\n valid: this.validity.valid,\n validationMessage: validationMessage,\n validityStyles: validityStyles,\n value: value,\n label: undefined,\n placeholder: !this.state.focused ? this.props.placeholder : null,\n ariaExpanded: this.show,\n size: null,\n fillMode: null,\n rounded: null\n };\n var toggleButtonTitle = provideLocalizationService(this)\n .toLanguageString(toggleCalendar, messages[toggleCalendar]);\n var datepicker = (React.createElement(AsyncFocusBlur, { onFocus: this.handleFocus, onBlur: this.mobileMode ? undefined : this.handleBlur, onSyncBlur: this.props.onBlur, onSyncFocus: this.props.onFocus }, function (_a) {\n var _b;\n var onFocus = _a.onFocus, onBlur = _a.onBlur;\n return (React.createElement(React.Fragment, null,\n React.createElement(\"span\", { ref: function (span) { _this._element = span; }, className: classNames('k-input', 'k-datepicker', (_b = {},\n _b[\"k-input-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _b[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _b[\"k-input-\".concat(fillMode)] = fillMode,\n _b['k-invalid'] = !isValid,\n _b['k-required'] = _this.required,\n _b['k-disabled'] = _this.props.disabled,\n _b), className), onKeyDown: _this.handleKeyDown, style: { width: width }, onFocus: onFocus, onBlur: onBlur, onClick: _this.mobileMode ? _this.handleIconClick : undefined },\n React.createElement(_this.dateInputComp, __assign({ _ref: _this._dateInput, ariaRole: 'combobox', readonly: _this.mobileMode, ariaExpanded: _this.show, ariaControls: _this._popupId }, dateInputProps)),\n React.createElement(_this.toggleButtonComp, { type: \"button\", icon: \"calendar\", svgIcon: calendarIcon, title: toggleButtonTitle, className: \"k-input-button\", rounded: null, onClick: _this.mobileMode ? undefined : _this.handleIconClick, \"aria-label\": toggleButtonTitle, onMouseDown: _this.handleIconMouseDown }),\n !_this.mobileMode && _this.renderPopup()),\n _this.mobileMode && _this.renderAdaptivePopup()));\n }));\n return this.props.label\n ? (React.createElement(PickerFloatingLabel, { dateInput: this._dateInput, label: this.props.label, editorId: id, editorValid: isValid, editorDisabled: this.props.disabled, children: datepicker, style: { width: this.props.width } }))\n : datepicker;\n };\n DatePickerWithoutContext.prototype.setShow = function (show) {\n var _a = this.props, onOpen = _a.onOpen, onClose = _a.onClose;\n if (this.show === show) {\n return;\n }\n this.setState({ show: show });\n if (show && onOpen) {\n onOpen.call(undefined, {\n target: this\n });\n }\n if (!show && onClose) {\n onClose.call(undefined, {\n target: this\n });\n }\n };\n DatePickerWithoutContext.prototype.mergeTime = function (value) {\n return this.value && value ? setTime(value, this.value) : value;\n };\n DatePickerWithoutContext.prototype.nextTick = function (f) {\n // XXX: use window.setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n // Handles multiple focus events happening at the same time.\n clearTimeout(this.nextTickId);\n this.nextTickId = window.setTimeout(function () { return f(); });\n };\n DatePickerWithoutContext.prototype.calculateMedia = function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n this.setState({ windowWidth: entry.target.clientWidth });\n }\n ;\n };\n ;\n /**\n * @hidden\n */\n DatePickerWithoutContext.displayName = 'DatePicker';\n /**\n * @hidden\n */\n DatePickerWithoutContext.propTypes = {\n className: PropTypes.string,\n defaultShow: PropTypes.bool,\n defaultValue: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n focusedDate: PropTypes.instanceOf(Date),\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n skeleton: PropTypes.string,\n pattern: PropTypes.string,\n date: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n time: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n datetime: PropTypes.oneOf(['short', 'medium', 'long', 'full']),\n era: PropTypes.oneOf(['narrow', 'short', 'long']),\n year: PropTypes.oneOf(['numeric', '2-digit']),\n month: PropTypes.oneOf(['numeric', '2-digit', 'narrow', 'short', 'long']),\n day: PropTypes.oneOf(['numeric', '2-digit']),\n weekday: PropTypes.oneOf(['narrow', 'short', 'long']),\n hour: PropTypes.oneOf(['numeric', '2-digit']),\n hour12: PropTypes.bool,\n minute: PropTypes.oneOf(['numeric', '2-digit']),\n second: PropTypes.oneOf(['numeric', '2-digit']),\n timeZoneName: PropTypes.oneOf(['short', 'long'])\n })\n ]),\n formatPlaceholder: PropTypes.oneOfType([\n PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n PropTypes.shape({\n year: PropTypes.string,\n month: PropTypes.string,\n day: PropTypes.string,\n hour: PropTypes.string,\n minute: PropTypes.string,\n second: PropTypes.string\n })\n ]),\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n ariaLabel: PropTypes.string,\n min: PropTypes.instanceOf(Date),\n max: PropTypes.instanceOf(Date),\n name: PropTypes.string,\n popupSettings: PropTypes.shape({\n animate: PropTypes.bool,\n appendTo: PropTypes.any,\n popupClass: PropTypes.string\n }),\n show: PropTypes.bool,\n tabIndex: PropTypes.number,\n title: PropTypes.string,\n value: PropTypes.instanceOf(Date),\n weekNumber: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline']),\n adaptive: PropTypes.bool,\n adaptiveTitle: PropTypes.string\n };\n /**\n * @hidden\n */\n DatePickerWithoutContext.defaultProps = {\n defaultShow: false,\n defaultValue: null,\n dateInput: DateInput,\n calendar: Calendar,\n toggleButton: ToggleButton,\n popup: Popup,\n pickerWrap: PickerWrap,\n disabled: false,\n format: 'd',\n max: MAX_DATE,\n min: MIN_DATE,\n popupSettings: {},\n tabIndex: 0,\n weekNumber: false,\n required: false,\n validityStyles: true,\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid'\n };\n return DatePickerWithoutContext;\n}(React.Component));\nexport { DatePickerWithoutContext };\n/**\n * Represents the PropsContext of the `DatePicker` component.\n * Used for global configuration of all `DatePicker` instances.\n *\n * For more information, refer to the [DateInputs Props Context]({% slug props-context_dateinputs %}) article.\n */\nexport var DatePickerPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare */\n/**\n * Represents the KendoReact DatePicker Component.\n *\n * Accepts properties of type [DatePickerProps]({% slug api_dateinputs_datepickerprops %}).\n * Obtaining the `ref` returns an object of type [DatePickerHandle]({% slug api_dateinputs_datepickerhandle %}).\n */\nexport var DatePicker = withPropsContext(DatePickerPropsContext, DatePickerWithoutContext);\nDatePicker.displayName = 'KendoReactDatePicker';\nregisterForLocalization(DatePickerWithoutContext);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\n/**\n * @hidden\n */\nexport var usePickerFloatingLabel = function (dateInput) {\n var _a = React.useState(false), show = _a[0], setShow = _a[1];\n var syncText = function () {\n if (dateInput.current) {\n setShow(Boolean(dateInput.current.text));\n }\n };\n React.useEffect(syncText);\n return {\n editorValue: show\n };\n};\n/**\n * @hidden\n */\nexport var PickerFloatingLabel = function (props) {\n var floatingLabelProps = usePickerFloatingLabel(props.dateInput);\n return (React.createElement(FloatingLabel, __assign({}, props, floatingLabelProps)));\n};\n","var _a;\n/**\n * @hidden\n */\nexport var prevView = 'multiviewcalendar.prevView';\n/**\n * @hidden\n */\nexport var nextView = 'multiviewcalendar.nextView';\n/**\n * @hidden\n */\nexport var increaseValue = 'dateinput.increment';\n/**\n * @hidden\n */\nexport var decreaseValue = 'dateinput.decrement';\n/**\n * @hidden\n */\nexport var today = 'calendar.today';\n/**\n * @hidden\n */\nexport var toggleCalendar = 'datepicker.toggleCalendar';\n/**\n * @hidden\n */\nexport var swapStartEnd = 'daterangepicker.swapStartEnd';\n/**\n * @hidden\n */\nexport var start = 'daterangepicker.start';\n/**\n * @hidden\n */\nexport var end = 'daterangepicker.end';\n/**\n * @hidden\n */\nexport var separator = 'daterangepicker.separator';\n/**\n * @hidden\n */\nexport var toggleDateTimeSelector = 'datetimepicker.toggleDateTimeSelector';\n/**\n * @hidden\n */\nexport var now = 'timepicker.now';\n/**\n * @hidden\n */\nexport var selectNow = 'timepicker.selectNow';\n/**\n * @hidden\n */\nexport var timePickerCancel = 'timepicker.cancel';\n/**\n * @hidden\n */\nexport var timePickerSet = 'timepicker.set';\n/**\n * @hidden\n */\nexport var toggleTimeSelector = 'timepicker.toggleTimeSelector';\n/**\n * @hidden\n */\nexport var toggleClock = 'timepicker.toggleClock';\n/**\n * @hidden\n */\nexport var date = 'datetimepicker.date';\n/**\n * @hidden\n */\nexport var time = 'datetimepicker.time';\n/**\n * @hidden\n */\nexport var dateTimePickerCancel = 'datetimepicker.cancel';\n/**\n * @hidden\n */\nexport var dateTimePickerSet = 'datetimepicker.set';\n/**\n * @hidden\n */\nexport var dateRangePickerCancel = 'daterangepicker.cancel';\n/**\n * @hidden\n */\nexport var dateRangePickerSet = 'daterangepicker.set';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[today] = 'TODAY',\n _a[now] = 'NOW',\n _a[timePickerSet] = 'Set',\n _a[timePickerCancel] = 'Cancel',\n _a[date] = 'Date',\n _a[time] = 'Time',\n _a[dateTimePickerCancel] = 'Cancel',\n _a[dateTimePickerSet] = 'Set',\n _a[dateRangePickerCancel] = 'Cancel',\n _a[dateRangePickerSet] = 'Set',\n _a[start] = 'Start',\n _a[end] = 'End',\n _a[separator] = ' ',\n _a[selectNow] = 'Select Now',\n _a[toggleTimeSelector] = 'Toggle TimeSelector',\n _a[toggleClock] = 'Toggle Clock',\n _a[increaseValue] = 'Increase value',\n _a[decreaseValue] = 'Decrease value',\n _a[toggleCalendar] = 'Toggle calendar',\n _a[prevView] = 'Navigate to previous view',\n _a[nextView] = 'Navigate to next view',\n _a[swapStartEnd] = 'Swap start and end values',\n _a[toggleDateTimeSelector] = 'Toggle date-time selector',\n _a);\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-dateinputs',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698928826,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","/**\n * @hidden\n */\nexport var TIME_PART = {\n dayperiod: 'dayperiod',\n hour: 'hour',\n millisecond: 'millisecond',\n minute: 'minute',\n second: 'second'\n};\n","import { cloneDate, addDays } from '@progress/kendo-date-math';\nimport { TIME_PART } from './models/TimePart';\nimport { MIDNIGHT_DATE, setTime } from '../utils';\nvar setter = function (method) { return function (date, value) {\n var clone = cloneDate(date);\n clone[method](value);\n return clone;\n}; };\nvar defaultGetters = [\n { type: TIME_PART.hour, getter: function (value) { return value.getHours(); } },\n { type: TIME_PART.minute, getter: function (value) { return value.getMinutes(); } },\n { type: TIME_PART.second, getter: function (value) { return value.getSeconds(); } },\n { type: TIME_PART.millisecond, getter: function (value) { return value.getMilliseconds(); } }\n];\nvar left = function (getter) { return function (origin, _) { return getter(origin); }; };\nvar right = function (getter) { return function (_, candidate) { return getter(candidate); }; };\nvar convertToObject = function (parts) { return parts.reduce(function (obj, p) { obj[p.type] = p.type; return obj; }, {}); };\nvar getterByPart = function (parts) { return function (g) { return parts[g.type] ? right(g.getter) : left(g.getter); }; };\nvar gettersFactory = function (getters) { return function (parts) { return (getters.map(getterByPart(convertToObject(parts)))); }; };\nvar snapValue = function (getter, step, min, type) { return function (date) {\n var value = getter(date);\n var minValue = getter(min);\n if (type === 'hour') {\n return value - ((value - minValue) % step);\n }\n if (date.getTime() <= min.getTime()\n && value !== 0\n && value <= minValue) {\n return (Math.ceil(value / step)) * step;\n }\n return value - (value % step);\n}; };\nvar snappersFactory = function (getters) { return function (steps, min) { return (getters.map(function (g) {\n var step = Math.floor(steps[g.type]);\n return step ? snapValue(g.getter, step, min, g.type) : g.getter;\n})); }; };\n/**\n * @hidden\n */\nexport var generateGetters = gettersFactory(defaultGetters);\n/**\n * @hidden\n */\nexport var generateSnappers = snappersFactory(defaultGetters);\n/**\n * @hidden\n */\nexport var valueMerger = function (getters) { return function (origin, candidate) {\n origin.setHours.apply(origin, getters.map(function (g) { return g(origin, candidate); }));\n return origin;\n}; };\n/**\n * @hidden\n */\nexport var snapTime = function (snappers) { return function (candidate) {\n var date = cloneDate(candidate);\n date.setHours.apply(date, snappers.map(function (s) { return s(date); }));\n return date;\n}; };\n/**\n * @hidden\n */\nexport var setHours = setter('setHours');\n/**\n * @hidden\n */\nexport var setMinutes = setter('setMinutes');\n/**\n * @hidden\n */\nexport var setSeconds = setter('setSeconds');\n/**\n * @hidden\n */\nexport var getNow = function () { return new Date(); };\n/**\n * @hidden\n */\nexport var range = function (start, end, step) {\n if (step === void 0) { step = 1; }\n var result = [];\n for (var i = start; i < end; i = i + step) {\n result.push(i);\n }\n return result;\n};\nvar normalizeTimes = function (candidate, min, max) { return ({\n candidateValue: setTime(MIDNIGHT_DATE, candidate),\n maxValue: addDays(setTime(MIDNIGHT_DATE, max), min.getHours() < max.getHours() ? 0 : 1),\n minValue: setTime(MIDNIGHT_DATE, min)\n}); };\n/**\n * @hidden\n */\nexport var timeInRange = function (candidate, min, max) {\n if (!candidate || !min || !max) {\n return candidate;\n }\n var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n if (candidateValue < minValue) {\n return setTime(candidate, min);\n }\n if (candidateValue > maxValue) {\n return setTime(candidate, max);\n }\n return candidate;\n};\n/**\n * @hidden\n */\nexport var isInTimeRange = function (candidate, min, max) {\n if (!candidate || !min || !max) {\n return true;\n }\n var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) {\n if (candidate === null) {\n return true;\n }\n var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nexport var isSmallerThanMin = function (val, min) {\n if (val === null || min === null) {\n return false;\n }\n var normalizedValue = setTime(MIDNIGHT_DATE, val);\n var normalizedMin = setTime(MIDNIGHT_DATE, min);\n return normalizedValue.getTime() < normalizedMin.getHours();\n};\n/**\n * @hidden\n */\nexport var isBiggerThanMax = function (val, max) {\n if (val === null || max === null) {\n return false;\n }\n var normalizedValue = setTime(MIDNIGHT_DATE, val);\n var normalizedMax = setTime(MIDNIGHT_DATE, max);\n return normalizedMax.getTime() < normalizedValue.getHours();\n};\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { cloneDate, isEqual } from '@progress/kendo-date-math';\nimport { getDate } from '@progress/kendo-date-math';\nimport { EMPTY_SELECTIONRANGE } from './calendar/models/SelectionRange';\n/**\n * @hidden\n */\nexport var isEqualRange = function (initial, updated) {\n var _a = initial || EMPTY_SELECTIONRANGE, initialStart = _a.start, initialEnd = _a.end;\n var _b = updated || EMPTY_SELECTIONRANGE, updatedStart = _b.start, updatedEnd = _b.end;\n if (initialStart === null || initialEnd === null || updatedStart === null || updatedEnd === null) {\n return false;\n }\n return isEqual(initialStart, updatedStart) && isEqual(initialEnd, updatedEnd);\n};\n// Polyfill for PropTypes.null\n/**\n * @hidden\n */\nexport function nullable(subRequirement) {\n var check = function (required, props, key) {\n var rest = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n rest[_i - 3] = arguments[_i];\n }\n if (props[key] === null) {\n return null;\n }\n var sub = required ? subRequirement.isRequired : subRequirement;\n return sub.apply(void 0, __spreadArray([props, key], rest, false));\n };\n var fn = check.bind(null, false);\n fn.isRequired = check.bind(null, true);\n return fn;\n}\n/**\n * @hidden\n */\nexport var viewInRange = function (candidate, min, max) {\n if (min === undefined || max === undefined) {\n return candidate;\n }\n return min <= candidate && candidate <= max\n ? candidate\n : candidate < min\n ? min\n : max;\n};\n/**\n * @hidden\n */\nexport var MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\nexport var MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\nvar isSet = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isValidRange = function (min, max) { return (!isSet(min) || !isSet(max) || min <= max); };\n/**\n * @hidden\n */\nexport var setTime = function (origin, candidate) {\n var date = cloneDate(origin);\n date.setHours(candidate.getHours(), candidate.getMinutes(), candidate.getSeconds(), candidate.getMilliseconds());\n return date;\n};\n/**\n * @hidden\n */\nexport var getToday = function () { return getDate(new Date()); };\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) { return (!candidate || !((min && min > candidate) || (max && max < candidate))); };\n/**\n * @hidden\n */\nexport var isInDateRange = function (candidate, min, max) { return (candidate === null\n || !((min && getDate(min) > getDate(candidate))\n || (max && getDate(max) < getDate(candidate)))); };\n/**\n * @hidden\n */\nexport var isInSelectionRange = function (value, selectionRange) {\n var _a = selectionRange || EMPTY_SELECTIONRANGE, start = _a.start, end = _a.end;\n if (!start || !end) {\n return false;\n }\n return start < value && value < end;\n};\n/**\n * @hidden\n */\nexport var range = function (start, end, step) {\n if (step === void 0) { step = 1; }\n var result = [];\n for (var i = start; i < end; i = i + step) {\n result.push(i);\n }\n return result;\n};\n/**\n * @hidden\n */\nexport var intersects = function (date, min, max) {\n return min.getTime() <= date.getTime() && date.getTime() <= max.getTime();\n};\n/**\n * @hidden\n */\nexport var shiftWeekNames = function (names, offset) { return (names.slice(offset).concat(names.slice(0, offset))); };\n/**\n * @hidden\n */\nexport var dateInRange = function (candidate, min, max) {\n if (!candidate) {\n return candidate;\n }\n if (min && candidate < min) {\n return cloneDate(min);\n }\n if (max && candidate > max) {\n return cloneDate(max);\n }\n return candidate;\n};\n/**\n * @hidden\n */\nexport var domContainerFactory = function (type) { return function (children, classes, styles) {\n if (classes === void 0) { classes = ''; }\n if (styles === void 0) { styles = {}; }\n var container = document.createElement(type);\n container.className = classes;\n Object.keys(styles).map(function (key) { return container.style[key] = styles[key]; });\n if (typeof children === 'string') {\n container.innerHTML = children || '';\n }\n else {\n (children || []).forEach(function (child) { return child && container.appendChild(child); });\n }\n return container;\n}; };\n/**\n * @hidden\n */\nexport function debounce(func, wait, options) {\n if (options === void 0) { options = {}; }\n var lastArgs;\n var lastThis;\n var maxWait = options.maxWait;\n var result;\n var timerId;\n var lastCallTime;\n var root = window;\n var lastInvokeTime = 0;\n var leading = false;\n var maxing = false;\n var trailing = true;\n // Bypass `requestAnimationFrame` by explicitly setting `wait=0`.\n var useRAF = (!wait && wait !== 0 && typeof root.requestAnimationFrame === 'function');\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function');\n }\n wait = +wait || 0;\n function invokeFunc(time) {\n var args = lastArgs;\n var thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function startTimer(pendingFunc, tmr) {\n if (useRAF) {\n root.cancelAnimationFrame(timerId);\n return root.requestAnimationFrame(pendingFunc);\n }\n return setTimeout(pendingFunc, tmr);\n }\n function cancelTimer(id) {\n if (useRAF) {\n return root.cancelAnimationFrame(id);\n }\n clearTimeout(id);\n }\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = startTimer(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime;\n var timeSinceLastInvoke = time - lastInvokeTime;\n var timeWaiting = wait - timeSinceLastCall;\n return maxing\n ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime;\n var timeSinceLastInvoke = time - lastInvokeTime;\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n function timerExpired() {\n var time = Date.now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = startTimer(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = undefined;\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n function cancel() {\n if (timerId !== undefined) {\n cancelTimer(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n function flush() {\n return timerId === undefined ? result : trailingEdge(Date.now());\n }\n function pending() {\n return timerId !== undefined;\n }\n function debounced() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var time = Date.now();\n var isInvoking = shouldInvoke(time);\n lastArgs = args;\n /* @ts-ignore */\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = startTimer(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = startTimer(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n debounced.pending = pending;\n return debounced;\n}\n/**\n * @hidden\n */\nexport function throttle(func, wait) {\n return debounce(func, wait, {\n leading: true,\n trailing: true,\n 'maxWait': wait\n });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _a, _b, _c;\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { RowHeightService, ScrollerService } from './services';\n/**\n * @hidden\n */\nexport var ScrollDirection;\n(function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Backward\"] = 0] = \"Backward\";\n ScrollDirection[ScrollDirection[\"Forward\"] = 1] = \"Forward\";\n})(ScrollDirection || (ScrollDirection = {}));\nvar differenceToScroll = function (scrollTop, staticOffset, maxScrollDifference) {\n return Math.min(Math.abs(staticOffset - scrollTop), maxScrollDifference);\n};\nvar FRAME_DURATION = 17;\nvar scrollModifiers = (_a = {},\n _a[ScrollDirection.Forward] = function (step) { return function (value) { return value + step; }; },\n _a[ScrollDirection.Backward] = function (step) { return function (value) { return value - step; }; },\n _a);\nvar scrollNormalizers = (_b = {},\n _b[ScrollDirection.Forward] = function (end) { return function (value) { return Math.min(value, end); }; },\n _b[ScrollDirection.Backward] = function (end) { return function (value) { return Math.max(value, end); }; },\n _b);\nvar scrollValidators = (_c = {},\n _c[ScrollDirection.Forward] = function (end) { return function (start) { return start < end; }; },\n _c[ScrollDirection.Backward] = function (end) { return function (start) { return start > end; }; },\n _c);\n/**\n * @hidden\n */\nvar Virtualization = /** @class */ (function (_super) {\n __extends(Virtualization, _super);\n function Virtualization(props) {\n var _this = _super.call(this, props) || this;\n _this.rowHeightService = null;\n _this.scrollContainer = null;\n _this.lastDirection = null;\n _this.lastTotal = 0;\n _this.lastTake = 0;\n _this.animationInProgress = false;\n _this.scrollTo = function (value) {\n var scrollProperty = _this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';\n if (!_this.scrollContainer) {\n return;\n }\n _this.scrollContainer[scrollProperty] = value;\n };\n _this.scrollToIndex = function (index) {\n _this.animationInProgress = false;\n if (_this.rowHeightService) {\n _this.scrollTo(_this.rowHeightService.offset(index));\n }\n };\n _this.animateToIndex = function (index) {\n if (!_this.rowHeightService || !window) {\n return;\n }\n window.cancelAnimationFrame(_this.cancelAnimation);\n var indexOffset = _this.rowHeightService.offset(index);\n var direction = _this.getContainerScrollDirection(indexOffset);\n var _a = _this.scrollRange(indexOffset, direction), start = _a.start, end = _a.end;\n if (start === end) {\n return;\n }\n var step = _this.scrollStep(start, end);\n var modifyScroll = scrollModifiers[direction](step);\n var normalizeScroll = scrollNormalizers[direction](end);\n var isScrollValid = scrollValidators[direction](modifyScroll(end));\n var animate = function (progress) {\n _this.animationInProgress = true;\n var next = modifyScroll(progress);\n _this.scrollTo(normalizeScroll(next));\n isScrollValid(next)\n ? _this.cancelAnimation = window.requestAnimationFrame(function () { animate(next); })\n : _this.animationInProgress = false;\n };\n _this.cancelAnimation = window.requestAnimationFrame(function () { animate(start); });\n };\n _this.scrollToBottom = function () {\n if (!_this.rowHeightService) {\n return;\n }\n _this.scrollTo(_this.rowHeightService.totalHeight() + _this.props.bottomOffset);\n };\n _this.scrollStep = function (start, end) {\n var duration = _this.props.scrollDuration || Virtualization.defaultProps.scrollDuration;\n return Math.abs(end - start) / (duration / FRAME_DURATION);\n };\n _this.scrollRange = function (indexOffset, direction) {\n var containerScroll = _this.containerScrollPosition;\n if (parseInt(\"\".concat(indexOffset), 10) === parseInt(\"\".concat(containerScroll), 10)) {\n return { start: indexOffset, end: indexOffset };\n }\n var maxScroll = _this.containerMaxScroll();\n var sign = direction === ScrollDirection.Backward ? 1 : -1;\n var difference = differenceToScroll(containerScroll, indexOffset, _this.props.maxScrollDifference || 0);\n var end = Math.min(indexOffset, maxScroll);\n var start = Math.min(Math.max(end + (sign * difference), 0), maxScroll);\n return { start: start, end: end };\n };\n _this.containerMaxScroll = function () {\n return _this.containerScrollSize - _this.containerOffsetSize;\n };\n _this.getContainerScrollDirection = function (indexOffset) {\n return indexOffset < _this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;\n };\n _this.initServices = function (props) {\n if (props === void 0) { props = _this.props; }\n var dimension = _this.direction === 'vertical' ? props.itemHeight : props.itemWidth;\n if (dimension === undefined) {\n return;\n }\n _this.rowHeightService = new RowHeightService(props.total, dimension, 0);\n _this.scrollerService.create(_this.rowHeightService, props.skip, props.take, props.total, props.topOffset, _this.scrollOffsetSize, _this.direction);\n };\n _this.getContainerProperty = function (propertyName) {\n if (!_this.scrollContainer) {\n return 0;\n }\n return _this.scrollContainer[propertyName];\n };\n _this.handleScroll = function (event) {\n if (!_this.scrollContainer || !_this.rowHeightService) {\n return;\n }\n var target = event.target;\n _this.scrollerService.onScroll({\n scrollLeft: target.scrollLeft,\n scrollTop: target.scrollTop,\n offsetHeight: target.offsetHeight,\n offsetWidth: target.offsetWidth\n });\n var index = _this.rowHeightService.index(_this.containerScrollPosition - _this.props.topOffset);\n var onScrollAction = _this.props.onScrollAction;\n var args = {\n index: index,\n target: target,\n scrollAction: _this.scrollAction,\n pageAction: _this.pageAction,\n animationInProgress: _this.animationInProgress\n };\n if (_this.props.onScroll) {\n _this.props.onScroll.call(undefined, event);\n }\n if (onScrollAction) {\n onScrollAction.call(undefined, args);\n }\n _this.scrollAction = undefined;\n _this.pageAction = undefined;\n };\n _this.handleScrollAction = function (action) {\n _this.scrollAction = action;\n };\n _this.handlePageAction = function (action) {\n _this.pageAction = action;\n };\n _this.scrollerService = new ScrollerService(_this.handleScrollAction, _this.handlePageAction);\n return _this;\n }\n Object.defineProperty(Virtualization.prototype, \"element\", {\n get: function () {\n return this.scrollContainer;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"containerOffsetSize\", {\n get: function () {\n return this.getContainerProperty(this.direction === 'vertical' ? 'offsetHeight' : 'offsetWidth');\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"containerScrollSize\", {\n get: function () {\n return this.getContainerProperty(this.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth');\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"containerScrollPosition\", {\n get: function () {\n return this.getContainerProperty(this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft');\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"direction\", {\n get: function () {\n return this.props.direction !== undefined ? this.props.direction : Virtualization.defaultProps.direction;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"scrollOffsetSize\", {\n get: function () {\n return this.props.scrollOffsetSize !== undefined\n ? this.props.scrollOffsetSize : Virtualization.defaultProps.scrollOffsetSize;\n },\n enumerable: false,\n configurable: true\n });\n Virtualization.prototype.activeIndex = function () {\n return this.itemIndex(Math.ceil(this.containerScrollPosition));\n };\n Virtualization.prototype.itemIndex = function (offset) {\n if (!this.rowHeightService) {\n return 0;\n }\n return this.rowHeightService.index(offset);\n };\n Virtualization.prototype.itemOffset = function (index) {\n if (!this.rowHeightService) {\n return 0;\n }\n return this.rowHeightService.offset(index);\n };\n Virtualization.prototype.isIndexVisible = function (index) {\n if (!this.rowHeightService) {\n return false;\n }\n var containerTop = this.containerScrollPosition;\n var containerBottom = containerTop + this.containerOffsetSize;\n var top = this.rowHeightService.offset(index);\n var bottom = top + this.rowHeightService.height(index);\n return top >= containerTop && bottom <= containerBottom;\n };\n Virtualization.prototype.isListScrolled = function (index) {\n if (!this.rowHeightService) {\n return false;\n }\n return this.containerScrollPosition !== this.rowHeightService.offset(index);\n };\n Virtualization.prototype.componentDidMount = function () {\n var onMount = this.props.onMount;\n if (onMount) {\n onMount.call(undefined, this);\n }\n };\n Virtualization.prototype.render = function () {\n var _this = this;\n if (this.lastTotal !== this.props.total\n || this.lastDirection !== this.direction\n || this.lastTake !== this.props.take) {\n this.initServices();\n this.lastTotal = this.props.total;\n this.lastDirection = this.direction;\n this.lastTake = this.props.take;\n }\n var vertexLength = \"\".concat((this.rowHeightService ? this.rowHeightService.totalHeight() : 0) + this.props.bottomOffset);\n var placeholderStyle = this.direction === 'vertical'\n ? { height: \"\".concat(vertexLength, \"px\") }\n : { width: \"\".concat(vertexLength, \"px\") };\n var rootClassNames = classNames('k-content k-scrollable', {\n 'k-scrollable-horizontal': this.direction === 'horizontal'\n }, this.props.className);\n var scrollableClassNames = classNames('k-scrollable-placeholder', {\n 'k-scrollable-horizontal-placeholder': this.direction === 'horizontal'\n });\n return (React.createElement(\"div\", { ref: function (el) { _this.scrollContainer = el; }, onScroll: this.handleScroll, className: rootClassNames, tabIndex: this.props.tabIndex, role: this.props.role },\n this.props.children,\n React.createElement(\"div\", { style: placeholderStyle, className: scrollableClassNames })));\n };\n Virtualization.propTypes = {\n bottomOffset: PropTypes.number.isRequired,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n forceScroll: PropTypes.bool,\n itemHeight: PropTypes.number,\n itemWidth: PropTypes.number,\n maxScrollDifference: PropTypes.number,\n onScroll: PropTypes.func,\n onScrollAction: PropTypes.func,\n scrollDuration: PropTypes.number,\n scrollOffsetSize: PropTypes.number,\n skip: PropTypes.number.isRequired,\n tabIndex: PropTypes.number,\n take: PropTypes.number.isRequired,\n topOffset: PropTypes.number.isRequired,\n total: PropTypes.number.isRequired,\n role: PropTypes.string\n };\n Virtualization.defaultProps = {\n direction: 'vertical',\n forceScroll: false,\n scrollOffsetSize: 0,\n maxScrollDifference: 100,\n scrollDuration: 100\n };\n return Virtualization;\n}(React.Component));\nexport { Virtualization };\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * @hidden\n */\nvar update = function (arr, idx, value) { return (__spreadArray(__spreadArray([], arr.slice(0, idx + 1), true), (arr.slice(idx + 1).map(function (x) { return x + value; })), true)); };\n/**\n * @hidden\n */\nvar RowHeightService = /** @class */ (function () {\n function RowHeightService(total, rowHeight, detailRowHeight) {\n if (total === void 0) { total = 0; }\n this.total = total;\n this.rowHeight = rowHeight;\n this.detailRowHeight = detailRowHeight;\n this.offsets = [];\n this.heights = [];\n var agg = 0;\n for (var idx = 0; idx < total; idx++) {\n this.offsets.push(agg);\n agg += rowHeight;\n this.heights.push(rowHeight);\n }\n }\n RowHeightService.prototype.height = function (rowIndex) {\n return this.heights[rowIndex];\n };\n RowHeightService.prototype.expandDetail = function (rowIndex) {\n if (this.height(rowIndex) === this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight);\n }\n };\n RowHeightService.prototype.collapseDetail = function (rowIndex) {\n if (this.height(rowIndex) > this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight * -1);\n }\n };\n RowHeightService.prototype.index = function (position) {\n for (var i = 0; i < this.offsets.length; i++) {\n if (position === this.offsets[i]) {\n return i;\n }\n if (position < this.offsets[i]) {\n return i - 1;\n }\n }\n return this.total - 1;\n };\n RowHeightService.prototype.offset = function (rowIndex) {\n return this.offsets[rowIndex];\n };\n RowHeightService.prototype.totalHeight = function () {\n return this.heights.reduce(function (prev, curr) { return prev + curr; }, 0);\n };\n RowHeightService.prototype.updateRowHeight = function (rowIndex, value) {\n this.heights[rowIndex] += value;\n this.offsets = update(this.offsets, rowIndex, value);\n };\n return RowHeightService;\n}());\nexport { RowHeightService };\n","var normalize = function (x) { return Math.max(x, 0); };\n/**\n * @hidden\n */\nvar ScrollAction = /** @class */ (function () {\n function ScrollAction(offset) {\n this.offset = offset;\n }\n return ScrollAction;\n}());\nexport { ScrollAction };\n/**\n * @hidden\n */\nvar PageAction = /** @class */ (function () {\n function PageAction(skip) {\n this.skip = skip;\n }\n return PageAction;\n}());\nexport { PageAction };\n/**\n * @hidden\n */\nvar ScrollerService = /** @class */ (function () {\n function ScrollerService(onScrollAction, onPageAction) {\n this.onScrollAction = onScrollAction;\n this.onPageAction = onPageAction;\n this.direction = 'vertical';\n this.firstLoaded = 0;\n this.lastLoaded = 0;\n this.lastScrollTop = 0;\n this.take = 0;\n this.total = 0;\n this.rowHeightService = null;\n this.bottomOffset = 0;\n this.topOffset = 0;\n }\n ScrollerService.prototype.create = function (rowHeightService, skip, take, total, topOffset, bottomOffset, direction) {\n if (topOffset === void 0) { topOffset = 0; }\n if (bottomOffset === void 0) { bottomOffset = 0; }\n if (direction === void 0) { direction = 'vertical'; }\n this.rowHeightService = rowHeightService;\n this.firstLoaded = skip;\n this.lastLoaded = skip + take;\n this.take = take;\n this.total = total;\n this.lastScrollTop = 0;\n this.topOffset = topOffset;\n this.bottomOffset = bottomOffset;\n this.direction = direction;\n var offsetBufferRows = this.rowsForHeight(topOffset);\n var skipWithOffset = normalize(skip - offsetBufferRows);\n this.onScrollAction(new ScrollAction(this.rowOffset(skipWithOffset)));\n this.onPageAction(new PageAction(skipWithOffset));\n };\n ScrollerService.prototype.onScroll = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollTop = _a.scrollTop, offsetHeight = _a.offsetHeight, offsetWidth = _a.offsetWidth;\n var scrollPosition = this.direction === 'vertical' ? scrollTop : scrollLeft;\n var offsetSize = this.direction === 'vertical' ? offsetHeight : offsetWidth;\n if (this.lastScrollTop === scrollPosition || !this.rowHeightService) {\n return;\n }\n var up = this.lastScrollTop >= scrollPosition;\n this.lastScrollTop = scrollPosition;\n var firstItemIndex = this.rowHeightService.index(normalize(scrollPosition - this.topOffset));\n var lastItemIndex = this.rowHeightService.index(normalize(scrollPosition + offsetSize - this.bottomOffset));\n if (!up && lastItemIndex >= this.lastLoaded && this.lastLoaded < this.total) {\n this.firstLoaded = firstItemIndex;\n this.onScrollAction(new ScrollAction(this.rowOffset(firstItemIndex)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n this.onPageAction(new PageAction(this.firstLoaded));\n }\n if (up && firstItemIndex <= this.firstLoaded) {\n var nonVisibleBuffer = Math.floor(this.take * 0.3);\n this.firstLoaded = normalize(firstItemIndex - nonVisibleBuffer);\n this.onScrollAction(new ScrollAction(this.rowOffset(this.firstLoaded)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n this.onPageAction(new PageAction(this.firstLoaded));\n }\n };\n ScrollerService.prototype.rowOffset = function (index) {\n return this.rowHeightService ? this.rowHeightService.offset(index) + this.topOffset : 0;\n };\n ScrollerService.prototype.rowsForHeight = function (height) {\n return this.rowHeightService ? Math.ceil(height / this.rowHeightService.height(0)) : 0;\n };\n return ScrollerService;\n}());\nexport { ScrollerService };\n","import * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { xIcon } from '@progress/kendo-svg-icons';\n/**\n * @hidden\n */\nexport var DialogTitleBar = function (_a) {\n var children = _a.children, onCloseButtonClick = _a.onCloseButtonClick, id = _a.id, closeIcon = _a.closeIcon;\n return (React.createElement(\"div\", { className: \"k-window-titlebar k-dialog-titlebar\", id: id },\n React.createElement(\"span\", { className: \"k-window-title k-dialog-title\" }, children),\n React.createElement(\"div\", { className: \"k-window-titlebar-actions k-dialog-titlebar-actions\" }, closeIcon &&\n React.createElement(Button, { role: \"button\", \"aria-label\": \"Close\", onClick: onCloseButtonClick, icon: \"x\", svgIcon: xIcon, fillMode: \"flat\", className: \"k-window-titlebar-action k-dialog-titlebar-action\" }))));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { DialogTitleBar } from './DialogTitleBar';\nimport { DialogActionsBar } from './DialogActionsBar';\nimport { guid, dispatchEvent, Keys, canUseDOM, ZIndexContext, createPropsContext, withPropsContext, classNames, getActiveElement } from '@progress/kendo-react-common';\nimport { validatePackage, shouldShowValidationUI, WatermarkOverlay } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport { getMaxZIndex } from './utils';\nimport { DATA_DIALOGS_ID, DEFAULT_DIALOGS_ZINDEX, ZINDEX_DIALOGS_STEP } from './constants';\n// tslint:enable:max-line-length\n/** @hidden */\nvar DialogWithoutContext = /** @class */ (function (_super) {\n __extends(DialogWithoutContext, _super);\n function DialogWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.context = 0;\n _this._id = guid();\n _this.titleId = _this.generateTitleId();\n _this.contentId = _this.generateContentId();\n _this.showLicenseWatermark = false;\n /**\n * @hidden\n */\n _this.onCloseDialog = function (event) {\n event.preventDefault();\n dispatchEvent(_this.props.onClose, event, _this, undefined);\n };\n /**\n * @hidden\n */\n _this.onKeyDown = function (event) {\n if (event.keyCode === Keys.esc && _this.props.onClose) {\n event.preventDefault();\n _this.onCloseDialog(event);\n }\n var kDialog = _this.element;\n if (kDialog && (event.keyCode === Keys.tab)) {\n var focusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var focusableContent = kDialog.querySelectorAll(focusableElements);\n var firstFocusableElement = focusableContent[0];\n var lastFocusableElement = focusableContent[focusableContent.length - 1];\n var currentDocument = _this.getDocument();\n var activeElement = getActiveElement(currentDocument);\n if (event.shiftKey) {\n if ((currentDocument && activeElement === firstFocusableElement) ||\n currentDocument && activeElement === _this.element) {\n lastFocusableElement.focus();\n event.preventDefault();\n }\n }\n else {\n if (currentDocument && activeElement === lastFocusableElement) {\n firstFocusableElement.focus();\n event.preventDefault();\n }\n }\n }\n };\n _this.getCurrentZIndex = function () {\n if (!_this.state || _this.context === undefined) {\n return _this.context ? _this.context : DEFAULT_DIALOGS_ZINDEX;\n }\n return _this.state.zIndex > (_this.context ? _this.context + ZINDEX_DIALOGS_STEP : 0) ? _this.state.zIndex : _this.context + ZINDEX_DIALOGS_STEP;\n };\n _this.getDocument = function () {\n return _this.props.appendTo ? _this.props.appendTo.ownerDocument : document;\n };\n validatePackage(packageMetadata);\n _this.showLicenseWatermark = shouldShowValidationUI(packageMetadata);\n _this.state = {\n zIndex: getMaxZIndex(_this.getCurrentZIndex(), _this.getDocument(), _this._id)\n };\n return _this;\n }\n /**\n * @hidden\n */\n DialogWithoutContext.prototype.componentDidMount = function () {\n if (this.element) {\n if (this.props.autoFocus) {\n this.element.focus();\n }\n }\n };\n /**\n * @hidden\n */\n DialogWithoutContext.prototype.render = function () {\n var _a, _b;\n var _this = this;\n var id = this.props.id !== undefined ? this.props.id : this.titleId;\n var _c = this.props, title = _c.title, width = _c.width, height = _c.height, children = _c.children, minWidth = _c.minWidth, dir = _c.dir, style = _c.style, contentStyle = _c.contentStyle;\n var elementsArray = React.Children.toArray(children);\n var content = this.getContent(elementsArray);\n var actions = this.getActionBar(elementsArray);\n var aria = title ? {\n 'aria-labelledby': id\n } : null;\n var closeIcon = this.props.closeIcon !== undefined ? this.props.closeIcon : true;\n var currentZIndex = this.getCurrentZIndex();\n var dialogElement = (React.createElement(ZIndexContext.Provider, { value: currentZIndex },\n React.createElement(\"div\", __assign({}, (_a = {}, _a[DATA_DIALOGS_ID] = this._id, _a), { className: 'k-dialog-wrapper' + (this.props.className ? ' ' + this.props.className : ''), onKeyDown: this.onKeyDown, tabIndex: 0, dir: dir, style: __assign({ zIndex: currentZIndex }, style), ref: (function (el) { return _this.element = el; }) }),\n React.createElement(\"div\", { className: \"k-overlay\" }),\n React.createElement(\"div\", __assign({}, aria, { className: classNames('k-window k-dialog', (_b = {},\n _b[\"k-window-\".concat(this.props.themeColor)] = this.props.themeColor,\n _b)), role: \"dialog\", \"aria-labelledby\": id, \"aria-modal\": true, \"aria-describedby\": this.contentId, style: { width: width, height: height, minWidth: minWidth } }),\n this.props.title &&\n React.createElement(DialogTitleBar, { closeIcon: closeIcon, onCloseButtonClick: this.onCloseDialog, id: id }, title),\n React.createElement(\"div\", { className: \"k-window-content k-dialog-content\", style: contentStyle, id: this.contentId }, content),\n actions,\n this.showLicenseWatermark && React.createElement(WatermarkOverlay, null)))));\n if (canUseDOM) {\n return this.props.appendTo !== null ?\n ReactDOM.createPortal(dialogElement, this.props.appendTo || document.body) :\n dialogElement;\n }\n return null;\n };\n DialogWithoutContext.prototype.getActionBar = function (children) {\n return children.filter(function (child) { return child && child.type === DialogActionsBar; });\n };\n DialogWithoutContext.prototype.getContent = function (children) {\n return children.filter(function (child) {\n return child && child.type !== DialogActionsBar;\n });\n };\n DialogWithoutContext.prototype.generateTitleId = function () {\n return 'dialog-title' + this._id;\n };\n DialogWithoutContext.prototype.generateContentId = function () {\n return 'dialog-content' + this._id;\n };\n DialogWithoutContext.displayName = 'Dialog';\n /**\n * @hidden\n */\n DialogWithoutContext.propTypes = {\n title: PropTypes.any,\n id: PropTypes.string,\n dir: PropTypes.string,\n style: PropTypes.object,\n closeIcon: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n minWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n autoFocus: PropTypes.bool\n };\n /**\n * @hidden\n */\n DialogWithoutContext.defaultProps = {\n autoFocus: false\n };\n /**\n * @hidden\n */\n DialogWithoutContext.contextType = ZIndexContext;\n return DialogWithoutContext;\n}(React.Component));\n/**\n * Represents the PropsContext of the `Dialog` component.\n * Used for global configuration of all `Dialog` instances.\n */\nexport var DialogPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact Dialog component]({% slug overview_dialog %}).\n *\n * Accepts properties of type [DialogProps]({% slug api_dialogs_dialogprops %}).\n * Obtaining the `ref` returns an object of type [DialogHandle]({% slug api_dialogs_dialoghandle %}).\n */\nexport var Dialog = withPropsContext(DialogPropsContext, DialogWithoutContext);\nDialog.displayName = 'KendoReactDialog';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Returns the action bar of the Dialog.\n *\n * @returns React.ReactElement\n */\nexport var DialogActionsBar = function (props) {\n var _a;\n var combinedProps = __assign({ layout: 'stretched' }, props);\n var layout = combinedProps.layout, children = combinedProps.children;\n var wrapperClasses = classNames('k-actions', 'k-actions-horizontal', 'k-window-actions k-dialog-actions', (_a = {},\n _a[\"k-actions-\".concat(layout)] = layout,\n _a));\n return (React.createElement(\"div\", { className: wrapperClasses }, children));\n};\nDialogActionsBar.propTypes = {\n children: PropTypes.any,\n layout: PropTypes.oneOf(['start', 'center', 'end', 'stretched'])\n};\n","export var windowStage;\n(function (windowStage) {\n windowStage[\"DEFAULT\"] = \"DEFAULT\";\n windowStage[\"FULLSCREEN\"] = \"FULLSCREEN\";\n windowStage[\"MINIMIZED\"] = \"MINIMIZED\";\n})(windowStage || (windowStage = {}));\n","var _a;\n/**\n * @hidden\n */\nexport var dialogsWindowMaximizeButton = 'dialogs.windowMaximizeButton';\n/**\n * @hidden\n */\nexport var dialogsWindowMinimizeButton = 'dialogs.windowMinimizeButton';\n/**\n * @hidden\n */\nexport var dialogsWindowRestoreButton = 'dialogs.windowRestoreButton';\n/**\n * @hidden\n */\nexport var dialogsWindowCloseButton = 'dialogs.windowCloseButton';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[dialogsWindowMaximizeButton] = 'maximize',\n _a[dialogsWindowMinimizeButton] = 'minimize',\n _a[dialogsWindowRestoreButton] = 'restore',\n _a[dialogsWindowCloseButton] = 'close',\n _a);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { windowStage } from './StageEnum';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { xIcon, windowMinimizeIcon, windowRestoreIcon, windowIcon } from '@progress/kendo-svg-icons';\nimport { messages, dialogsWindowMaximizeButton, dialogsWindowMinimizeButton, dialogsWindowRestoreButton, dialogsWindowCloseButton } from './messages';\n/**\n * @hidden\n */\nvar WindowTitleBarComponent = function (props) {\n var children = props.children, onCloseButtonClick = props.onCloseButtonClick, onMinimizeButtonClick = props.onMinimizeButtonClick, onFullScreenButtonClick = props.onFullScreenButtonClick, onRestoreButtonClick = props.onRestoreButtonClick, onDoubleClick = props.onDoubleClick, stage = props.stage, forwardedRef = props.forwardedRef, id = props.id;\n var localization = useLocalization();\n var minimizeButtonRender = props.minimizeButton ?\n React.createElement(props.minimizeButton, { onClick: onMinimizeButtonClick, stage: stage }) :\n (React.createElement(Button, { fillMode: \"flat\", icon: \"window-minimize\", svgIcon: windowMinimizeIcon, className: \"k-window-titlebar-action\", onClick: onMinimizeButtonClick, \"aria-label\": localization.toLanguageString(dialogsWindowMinimizeButton, messages[dialogsWindowMinimizeButton]) }));\n var maximizeButtonRender = props.maximizeButton ?\n React.createElement(props.maximizeButton, { onClick: onFullScreenButtonClick, stage: stage }) :\n (React.createElement(Button, { fillMode: \"flat\", icon: \"window-maximize\", svgIcon: windowIcon, className: \"k-window-titlebar-action\", onClick: onFullScreenButtonClick, \"aria-label\": localization.toLanguageString(dialogsWindowMaximizeButton, messages[dialogsWindowMaximizeButton]) }));\n var restoreButtonRender = props.restoreButton ?\n React.createElement(props.restoreButton, { onClick: onRestoreButtonClick, stage: stage }) :\n (React.createElement(Button, { fillMode: \"flat\", icon: \"window-restore\", svgIcon: windowRestoreIcon, className: \"k-window-titlebar-action\", onClick: onRestoreButtonClick, \"aria-label\": localization.toLanguageString(dialogsWindowRestoreButton, messages[dialogsWindowRestoreButton]) }));\n var closeButtonRender = props.closeButton ?\n React.createElement(props.closeButton, { onClick: onCloseButtonClick, stage: stage }) :\n (React.createElement(Button, { fillMode: \"flat\", icon: \"x\", svgIcon: xIcon, className: \"k-window-titlebar-action\", onClick: onCloseButtonClick, \"aria-label\": localization.toLanguageString(dialogsWindowCloseButton, messages[dialogsWindowCloseButton]) }));\n return (React.createElement(\"div\", { className: \"k-window-titlebar\", style: { touchAction: 'none' }, ref: forwardedRef, onDoubleClick: onDoubleClick },\n React.createElement(\"span\", { className: \"k-window-title\", id: id }, children ? children : ''),\n React.createElement(\"div\", { className: \"k-window-titlebar-actions\" },\n (stage === windowStage.DEFAULT) && minimizeButtonRender,\n (stage === windowStage.DEFAULT) && maximizeButtonRender,\n (stage !== windowStage.DEFAULT) && restoreButtonRender,\n closeButtonRender)));\n};\n/**\n * @hidden\n */\nexport var WindowTitleBar = React.forwardRef(function (props, ref) { return (React.createElement(WindowTitleBarComponent, __assign({}, props, { forwardedRef: ref }))); });\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar keys = ['n', 'e', 's', 'w', 'se', 'sw', 'ne', 'nw'];\n/**\n * @hidden\n */\nvar ResizeHandlers = /** @class */ (function (_super) {\n __extends(ResizeHandlers, _super);\n function ResizeHandlers() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ResizeHandlers.prototype.render = function () {\n var _this = this;\n return (React.createElement(\"div\", { className: 'k-resize-handles-wrapper' },\n \" \",\n keys.map(function (key, index) {\n return (React.createElement(Draggable, { key: index, onDrag: function (data) {\n var event = data.event;\n event.originalEvent.preventDefault();\n _this.props.onResize(event, { end: false, direction: key });\n }, onRelease: function (data) {\n var event = data.event;\n event.originalEvent.preventDefault();\n _this.props.onResize(event, { end: true, direction: key });\n } },\n React.createElement(\"div\", { className: 'k-resize-handle k-resize-' + key, style: { display: 'block', touchAction: 'none' } })));\n })));\n };\n return ResizeHandlers;\n}(React.Component));\nexport { ResizeHandlers };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar MiddleLayerOptimization = /** @class */ (function (_super) {\n __extends(MiddleLayerOptimization, _super);\n function MiddleLayerOptimization() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MiddleLayerOptimization.prototype.shouldComponentUpdate = function (nextProps) {\n return nextProps.shouldUpdateOnDrag || !nextProps.isDragging;\n };\n MiddleLayerOptimization.prototype.render = function () {\n return this.props.children;\n };\n return MiddleLayerOptimization;\n}(React.Component));\nexport { MiddleLayerOptimization };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { WindowTitleBar } from './WindowTitlebar';\nimport { dispatchEvent, Keys, classNames, guid, ZIndexContext, canUseDOM } from '@progress/kendo-react-common';\nimport { Draggable, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { ResizeHandlers } from './WindowResizeHandlers';\nimport { MiddleLayerOptimization } from './MiddleLayerOptimization';\nimport { windowStage } from './StageEnum';\nimport { validatePackage, shouldShowValidationUI, WatermarkOverlay } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport { WindowActionsBar } from './WindowActionsBar';\nimport { DATA_DIALOGS_ID, DEFAULT_DIALOGS_ZINDEX, ZINDEX_DIALOGS_STEP } from './constants';\nimport { getMaxZIndex } from './utils';\nvar DEFAULT_WIDTH = 300;\nvar DEFAULT_HEIGHT = 300;\nvar DEFAULT_MIN_WIDTH = 120;\nvar DEFAULT_MIN_HEIGHT = 100;\nvar DEFAULT_STEP = 5;\n/** @hidden */\nvar WindowWithoutContext = /** @class */ (function (_super) {\n __extends(WindowWithoutContext, _super);\n function WindowWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.context = 0;\n _this.draggable = null;\n _this.offSetCoordinates = { x: 0, y: 0 };\n _this._id = guid();\n _this.titleId = _this.generateTitleId();\n _this.mounted = false;\n _this.showLicenseWatermark = false;\n /**\n * @hidden\n */\n _this.onKeyDown = function (event) {\n if (event.target !== event.currentTarget) {\n return;\n }\n var minWidth = _this.props.minWidth || DEFAULT_MIN_WIDTH;\n var minHeight = _this.props.minHeight || DEFAULT_MIN_HEIGHT;\n if (event.ctrlKey && _this.props.resizable) {\n switch (event.keyCode) {\n case Keys.up:\n event.preventDefault();\n if (minHeight <= (_this.height - DEFAULT_STEP)) {\n _this.setState({ height: _this.height - DEFAULT_STEP });\n }\n break;\n case Keys.down:\n event.preventDefault();\n _this.setState({ height: _this.height + DEFAULT_STEP });\n break;\n case Keys.left:\n if (minWidth <= (_this.width - DEFAULT_STEP)) {\n _this.setState({ width: _this.width - DEFAULT_STEP });\n }\n break;\n case Keys.right:\n _this.setState({ width: _this.width + DEFAULT_STEP });\n break;\n default: return;\n }\n _this.dispatchMoveEvent(_this.props.onResize, event, false, undefined);\n return;\n }\n if (event.altKey) {\n switch (event.keyCode) {\n case Keys.up:\n if (_this.windowStage === windowStage.MINIMIZED) {\n _this.handleRestore(event);\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.DEFAULT });\n }\n else if (_this.windowStage === windowStage.DEFAULT) {\n _this.handleFullscreen(event);\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.FULLSCREEN });\n }\n break;\n case Keys.down:\n if (_this.windowStage === windowStage.FULLSCREEN) {\n _this.handleRestore(event);\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.DEFAULT });\n }\n else if (_this.windowStage === windowStage.DEFAULT) {\n _this.handleMinimize(event);\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.MINIMIZED });\n }\n break;\n default:\n }\n return;\n }\n if (!event.ctrlKey) {\n switch (event.keyCode) {\n case Keys.esc:\n if (_this.props.onClose) {\n _this.handleCloseWindow(event);\n }\n return;\n case Keys.up:\n _this.setState({ top: _this.state.top - DEFAULT_STEP });\n break;\n case Keys.down:\n _this.setState({ top: _this.state.top + DEFAULT_STEP });\n break;\n case Keys.left:\n _this.setState({ left: _this.state.left - DEFAULT_STEP });\n break;\n case Keys.right:\n _this.setState({ left: _this.state.left + DEFAULT_STEP });\n break;\n default: return;\n }\n }\n _this.dispatchMoveEvent(_this.props.onMove, event, false, undefined);\n };\n /**\n * @hidden\n */\n _this.onPress = function (data) {\n var e = data.event;\n _this.windowCoordinatesState.differenceLeft = e.pageX - _this.left;\n _this.windowCoordinatesState.differenceTop = e.pageY - _this.top;\n };\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n var e = data.event;\n e.originalEvent.preventDefault();\n if (_this.windowStage !== windowStage.FULLSCREEN && _this.props.draggable) {\n _this.setState({\n top: Math.max(e.pageY - _this.windowCoordinatesState.differenceTop, 0),\n left: e.pageX - _this.windowCoordinatesState.differenceLeft,\n isDragging: true\n });\n if (_this.props.onMove) {\n // eslint-disable-next-line max-len\n _this.dispatchMoveEvent(_this.props.onMove, e, true, false);\n }\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n var e = data.event;\n if (_this.windowStage !== windowStage.FULLSCREEN && _this.props.draggable) {\n if (_this.props.onMove) {\n _this.dispatchMoveEvent(_this.props.onMove, e, true, true);\n }\n }\n _this.setState({\n isDragging: false\n });\n };\n /**\n * @hidden\n */\n _this.onFocus = function () {\n if (_this._blurTimeout) {\n clearTimeout(_this._blurTimeout);\n _this._blurTimeout = undefined;\n }\n else {\n _this.setState({\n focused: true,\n zIndex: getMaxZIndex(_this.getCurrentZIndex(), _this.getDocument(), _this._id)\n });\n }\n };\n /**\n * @hidden\n */\n _this.onBlur = function () {\n clearTimeout(_this._blurTimeout);\n var currentWindow = _this.getWindow();\n if (currentWindow) {\n _this._blurTimeout = currentWindow.setTimeout(function () {\n if (_this.mounted) {\n _this.setState({ focused: false });\n }\n _this._blurTimeout = undefined;\n });\n }\n };\n // Get initial coordinates of the Window\n _this.getInitialTop = function () {\n if (_this.props.top !== undefined) {\n return _this.props.top;\n }\n if (_this.props.initialTop !== undefined) {\n return _this.props.initialTop;\n }\n var height = DEFAULT_HEIGHT;\n if (_this.props.height !== undefined) {\n height = _this.props.height;\n }\n else if (_this.props.initialHeight !== undefined) {\n height = _this.props.initialHeight;\n }\n if (_this.props.appendTo) {\n return (_this.props.appendTo.offsetHeight / 2) - (height / 2);\n }\n var currentWindow = _this.getWindow();\n return currentWindow ? (currentWindow.innerHeight / 2) - (height / 2) : 0;\n };\n _this.getInitialLeft = function () {\n if (_this.props.left !== undefined) {\n return _this.props.left;\n }\n if (_this.props.initialLeft !== undefined) {\n return _this.props.initialLeft;\n }\n var width = DEFAULT_WIDTH;\n if (_this.props.width !== undefined) {\n width = _this.props.width;\n }\n else if (_this.props.initialWidth !== undefined) {\n width = _this.props.initialWidth;\n }\n if (_this.props.appendTo) {\n return (_this.props.appendTo.offsetWidth / 2) - (width / 2);\n }\n var currentWindow = _this.getWindow();\n return currentWindow ? (currentWindow.innerWidth / 2) - (width / 2) : 0;\n };\n _this.getInitialWidth = function () {\n var width = DEFAULT_WIDTH;\n if (_this.props.width !== undefined) {\n width = _this.props.width;\n }\n else if (_this.props.initialWidth !== undefined) {\n width = _this.props.initialWidth;\n }\n return width;\n };\n _this.getInitialHeight = function () {\n var height = DEFAULT_HEIGHT;\n if (_this.props.height !== undefined) {\n height = _this.props.height;\n }\n else if (_this.props.initialHeight !== undefined) {\n height = _this.props.initialHeight;\n }\n return height;\n };\n // Handle actions\n _this.handleMinimize = function (event) {\n event.preventDefault();\n _this.windowCoordinatesState.leftBeforeAction = _this.left;\n _this.windowCoordinatesState.topBeforeAction = _this.top;\n _this.windowCoordinatesState.widthBeforeAction = _this.width;\n _this.windowCoordinatesState.heightBeforeAction = _this.height;\n _this.setState({\n stage: windowStage.MINIMIZED,\n height: 0\n });\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.MINIMIZED });\n };\n _this.handleFullscreen = function (event) {\n event.preventDefault();\n _this.windowCoordinatesState.leftBeforeAction = _this.left;\n _this.windowCoordinatesState.topBeforeAction = _this.top;\n _this.windowCoordinatesState.widthBeforeAction = _this.width;\n _this.windowCoordinatesState.heightBeforeAction = _this.height;\n var currentWindow = _this.getWindow();\n var innerWidth = currentWindow ? currentWindow.innerWidth : 0;\n var innerHeight = currentWindow ? currentWindow.innerHeight : 0;\n _this.setState({\n left: 0,\n top: 0,\n width: _this.props.appendTo ? _this.props.appendTo.offsetWidth : innerWidth,\n height: _this.props.appendTo ? _this.props.appendTo.offsetHeight : innerHeight,\n stage: windowStage.FULLSCREEN\n });\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.FULLSCREEN });\n };\n _this.handleRestore = function (event) {\n event.preventDefault();\n if (_this.windowStage === windowStage.FULLSCREEN) {\n _this.setState({\n stage: windowStage.DEFAULT,\n left: _this.windowCoordinatesState.leftBeforeAction,\n top: _this.windowCoordinatesState.topBeforeAction,\n width: _this.windowCoordinatesState.widthBeforeAction,\n height: _this.windowCoordinatesState.heightBeforeAction\n });\n }\n else if (_this.windowStage === windowStage.MINIMIZED) {\n _this.setState({\n stage: windowStage.DEFAULT,\n height: _this.windowCoordinatesState.heightBeforeAction\n });\n }\n dispatchEvent(_this.props.onStageChange, event, _this, { state: windowStage.DEFAULT });\n };\n _this.handleCloseWindow = function (event) {\n event.preventDefault();\n dispatchEvent(_this.props.onClose, event, _this, { state: undefined });\n };\n _this.handleDoubleClick = function (e) {\n if (_this.windowStage === windowStage.FULLSCREEN || _this.windowStage === windowStage.MINIMIZED) {\n _this.handleRestore(e);\n }\n else {\n _this.handleFullscreen(e);\n }\n };\n // Handle resizing\n _this.handleResize = function (event, props) {\n var x = _this.props.appendTo ? event.pageX - _this.offSetCoordinates.x : event.pageX;\n var y = _this.props.appendTo ? event.pageY - _this.offSetCoordinates.y : event.pageY;\n var currentWidth = _this.width;\n var currentHeight = _this.height;\n var minWidth = _this.props.minWidth || DEFAULT_MIN_WIDTH;\n var minHeight = _this.props.minHeight || DEFAULT_MIN_HEIGHT;\n var heightDifference = _this.top - y;\n var widthDifference = _this.left - x;\n var newWidth = x - _this.left;\n var newHeight = y - _this.top;\n var newState = Object.assign({}, _this.state, { isDragging: !props.end });\n if (props.direction.indexOf('n') >= 0 && minHeight - (currentHeight + heightDifference) < 0) {\n if (_this.top > 0) {\n newState.height = currentHeight + heightDifference;\n }\n newState.top = y;\n }\n if (props.direction.indexOf('s') >= 0 && (minHeight - newHeight < 0)) {\n newState.height = newHeight;\n }\n if (props.direction.indexOf('w') >= 0 && minWidth - (currentWidth + widthDifference) < 0) {\n if (_this.left > 0) {\n newState.width = currentWidth + widthDifference;\n }\n newState.left = x;\n }\n if (props.direction.indexOf('e') >= 0 && (minWidth - newWidth < 0)) {\n newState.width = newWidth;\n }\n _this.setState(newState);\n _this.dispatchMoveEvent(_this.props.onResize, event, true, props.end);\n };\n // Dispatcher for the resize and move events\n _this.dispatchMoveEvent = function (callback, event, drag, end) {\n if (!callback) {\n return;\n }\n callback.call(undefined, {\n nativeEvent: event.nativeEvent ? event.nativeEvent : event.originalEvent,\n drag: drag,\n end: end,\n target: _this,\n left: _this.state.left,\n top: _this.state.top,\n width: _this.state.width,\n hight: _this.state.height,\n height: _this.state.height\n });\n };\n _this.handleBrowserWindowResize = function () {\n if (_this.windowStage === windowStage.FULLSCREEN) {\n var currentWindow = _this.getWindow();\n var innerWidth_1 = currentWindow ? currentWindow.innerWidth : 0;\n var innerHeight_1 = currentWindow ? currentWindow.innerHeight : 0;\n _this.setState({\n width: _this.props.appendTo ? _this.props.appendTo.offsetWidth : innerWidth_1,\n height: _this.props.appendTo ? _this.props.appendTo.offsetHeight : innerHeight_1\n });\n }\n };\n _this.getCurrentZIndex = function () {\n if (!_this.state || _this.context === undefined) {\n return _this.context ? _this.context : DEFAULT_DIALOGS_ZINDEX;\n }\n return _this.state.zIndex > (_this.context ? _this.context + ZINDEX_DIALOGS_STEP : 0) ? _this.state.zIndex : _this.context + ZINDEX_DIALOGS_STEP;\n };\n _this.getDocument = function () {\n return _this.props.appendTo ? _this.props.appendTo.ownerDocument : document;\n };\n _this.getWindow = function () {\n var currentDocument = _this.getDocument();\n return currentDocument && currentDocument.defaultView;\n };\n validatePackage(packageMetadata);\n _this.showLicenseWatermark = shouldShowValidationUI(packageMetadata);\n _this.state = {\n stage: _this.props.stage || windowStage.DEFAULT,\n isDragging: false,\n top: _this.getInitialTop(),\n left: _this.getInitialLeft(),\n width: _this.getInitialWidth(),\n height: _this.getInitialHeight(),\n focused: true,\n zIndex: getMaxZIndex(_this.getCurrentZIndex(), _this.getDocument(), _this._id)\n };\n _this.windowCoordinatesState = {\n leftBeforeAction: _this.getInitialLeft(),\n topBeforeAction: _this.getInitialTop(),\n widthBeforeAction: _this.getInitialWidth(),\n heightBeforeAction: _this.getInitialHeight()\n };\n return _this;\n }\n /**\n * @hidden\n */\n WindowWithoutContext.prototype.componentDidMount = function () {\n var currentWindow = this.getWindow();\n if (currentWindow) {\n currentWindow.addEventListener('resize', this.handleBrowserWindowResize);\n }\n var currentDocument = this.getDocument();\n if (this.props.appendTo && currentDocument) {\n var containerCoordinates = this.props.appendTo.getBoundingClientRect();\n var bodyRect = currentDocument.body.getBoundingClientRect();\n this.offSetCoordinates.x = containerCoordinates.left - bodyRect.left;\n this.offSetCoordinates.y = containerCoordinates.top - bodyRect.top;\n }\n this.mounted = true;\n };\n /**\n * @hidden\n */\n WindowWithoutContext.prototype.componentWillUnmount = function () {\n var currentWindow = this.getWindow();\n if (currentWindow) {\n currentWindow.removeEventListener('resize', this.handleBrowserWindowResize);\n }\n this.mounted = false;\n };\n /**\n * @hidden\n */\n WindowWithoutContext.prototype.componentDidUpdate = function () {\n var currentDocument = this.getDocument();\n if (this.props.appendTo && currentDocument) {\n var containerCoordinates = this.props.appendTo.getBoundingClientRect();\n var bodyRect = currentDocument.body.getBoundingClientRect();\n this.offSetCoordinates.x = containerCoordinates.left - bodyRect.left;\n this.offSetCoordinates.y = containerCoordinates.top - bodyRect.top;\n }\n this.mounted = true;\n };\n /**\n * @hidden\n */\n WindowWithoutContext.prototype.render = function () {\n var _a, _b;\n var _this = this;\n var elementsArray = React.Children.toArray(this.props.children);\n var content = this.getContent(elementsArray);\n var actions = this.getActionBar(elementsArray);\n var currentZIndex = this.getCurrentZIndex();\n var classNamesWindow = classNames('k-window', this.props.className, (_a = {},\n _a[\"k-window-\".concat(this.props.themeColor)] = this.props.themeColor,\n _a['k-window-minimized'] = this.state.stage === 'MINIMIZED',\n _a['k-window-focused'] = this.state.focused,\n _a));\n var windowElement = (React.createElement(ZIndexContext.Provider, { value: currentZIndex },\n React.createElement(React.Fragment, null,\n this.props.modal && (React.createElement(\"div\", { className: \"k-overlay\", style: __assign({ zIndex: currentZIndex }, this.props.overlayStyle) })),\n React.createElement(\"div\", __assign({}, (_b = {}, _b[DATA_DIALOGS_ID] = this._id, _b), { tabIndex: 0, role: 'dialog', \"aria-labelledby\": this.titleId, onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, ref: function (el) {\n _this.windowElement = el;\n _this.element = el;\n }, className: classNamesWindow, style: __assign({ top: this.top, left: this.left, width: this.width, height: this.height || '', zIndex: currentZIndex }, this.props.style) }),\n React.createElement(MiddleLayerOptimization, { shouldUpdateOnDrag: this.props.shouldUpdateOnDrag || false, isDragging: this.state.isDragging },\n React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { return _this.draggable = component; } },\n React.createElement(WindowTitleBar, { stage: this.windowStage, onDoubleClick: this.props.doubleClickStageChange ? this.handleDoubleClick : undefined, onMinimizeButtonClick: this.handleMinimize, onFullScreenButtonClick: this.handleFullscreen, onRestoreButtonClick: this.handleRestore, onCloseButtonClick: this.handleCloseWindow, closeButton: this.props.closeButton, minimizeButton: this.props.minimizeButton, maximizeButton: this.props.maximizeButton, restoreButton: this.props.restoreButton, id: this.titleId }, this.props.title)),\n this.windowStage !== windowStage.MINIMIZED\n ? (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"k-window-content\" }, content),\n actions))\n : null,\n this.windowStage === windowStage.DEFAULT &&\n this.props.resizable\n ? React.createElement(ResizeHandlers, { onResize: this.handleResize })\n : null),\n this.showLicenseWatermark && React.createElement(WatermarkOverlay, null)))));\n if (canUseDOM) {\n return this.props.appendTo !== null ?\n ReactDOM.createPortal(windowElement, this.props.appendTo || document.body) :\n windowElement;\n }\n return null;\n };\n Object.defineProperty(WindowWithoutContext.prototype, \"top\", {\n // Getters\n get: function () {\n if (this.windowStage !== windowStage.FULLSCREEN) {\n return Math.max(this.props.top || this.state.top, 0);\n }\n return 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WindowWithoutContext.prototype, \"left\", {\n get: function () {\n if (this.windowStage !== windowStage.FULLSCREEN) {\n return Math.max(this.props.left || this.state.left, 0);\n }\n return 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WindowWithoutContext.prototype, \"width\", {\n get: function () {\n var width = this.props.width || this.state.width;\n if (this.windowStage === windowStage.FULLSCREEN) {\n if (this.props.appendTo) {\n width = this.props.appendTo.offsetWidth;\n return width;\n }\n var currentWindow = this.getWindow();\n width = currentWindow ? currentWindow.innerWidth : 0;\n }\n return width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WindowWithoutContext.prototype, \"height\", {\n get: function () {\n var height = this.props.height || this.state.height;\n if (this.windowStage === windowStage.FULLSCREEN) {\n if (this.props.appendTo) {\n height = this.props.appendTo.offsetHeight;\n return height;\n }\n var currentWindow = this.getWindow();\n height = currentWindow ? currentWindow.innerHeight : 0;\n }\n else if (this.windowStage === windowStage.MINIMIZED) {\n height = 0;\n }\n return height;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WindowWithoutContext.prototype, \"windowStage\", {\n get: function () {\n return this.props.stage || this.state.stage;\n },\n enumerable: false,\n configurable: true\n });\n WindowWithoutContext.prototype.getActionBar = function (children) {\n return children.filter(function (child) { return child && child.type === WindowActionsBar; });\n };\n WindowWithoutContext.prototype.getContent = function (children) {\n return children.filter(function (child) {\n return child && child.type !== WindowActionsBar;\n });\n };\n WindowWithoutContext.prototype.generateTitleId = function () {\n return 'window-title-' + this._id;\n };\n WindowWithoutContext.displayName = 'Window';\n /**\n * @hidden\n */\n WindowWithoutContext.propTypes = {\n width: PropTypes.number,\n height: PropTypes.number,\n left: PropTypes.number,\n top: PropTypes.number,\n initialWidth: PropTypes.number,\n initialHeight: PropTypes.number,\n initialLeft: PropTypes.number,\n initialTop: PropTypes.number,\n minWidth: PropTypes.number,\n minHeight: PropTypes.number,\n resizable: PropTypes.bool,\n draggable: PropTypes.bool,\n title: PropTypes.any,\n shouldUpdateOnDrag: PropTypes.bool,\n stage: PropTypes.oneOf(['DEFAULT', 'MINIMIZED', 'FULLSCREEN']),\n className: PropTypes.string,\n style: PropTypes.object,\n overlayStyle: PropTypes.object\n };\n /**\n * @hidden\n */\n WindowWithoutContext.defaultProps = {\n minWidth: DEFAULT_MIN_WIDTH,\n minHeight: DEFAULT_MIN_HEIGHT,\n resizable: true,\n draggable: true,\n modal: false,\n doubleClickStageChange: true\n };\n /**\n * @hidden\n */\n WindowWithoutContext.contextType = ZIndexContext;\n return WindowWithoutContext;\n}(React.Component));\n/**\n * Represents the PropsContext of the `Window` component.\n * Used for global configuration of all `Window` instances.\n */\nexport var WindowPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact Window component]({% slug overview_window %}).\n *\n * Accepts properties of type [WindowProps]({% slug api_dialogs_windowprops %}).\n * Obtaining the `ref` returns an object of type [WindowHandle]({% slug api_dialogs_windowhandle %}).\n */\nexport var Window = withPropsContext(WindowPropsContext, WindowWithoutContext);\nWindow.displayName = 'KendoReactWindow';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Returns the action bar of the Window.\n *\n * @returns React.ReactElement\n */\nexport var WindowActionsBar = function (props) {\n var combinedProps = __assign({ layout: 'end' }, props);\n var layout = combinedProps.layout, children = combinedProps.children;\n var wrapperClasses = classNames('k-actions', 'k-window-actions', 'k-actions-horizontal', 'k-hstack', {\n 'k-justify-content-start': layout === 'start',\n 'k-justify-content-center': layout === 'center',\n 'k-justify-content-end': layout === 'end',\n 'k-justify-content-stretch': layout === 'stretched'\n });\n return (React.createElement(\"div\", { className: wrapperClasses }, children));\n};\nWindowActionsBar.propTypes = {\n children: PropTypes.any,\n layout: PropTypes.oneOf(['start', 'center', 'end', 'stretched'])\n};\n","/** @hidden */\nexport var DATA_DIALOGS_ID = 'data-windowid';\n/** @hidden */\nexport var DEFAULT_DIALOGS_ZINDEX = 10002;\n/** @hidden */\nexport var ZINDEX_DIALOGS_STEP = 2;\n/** @hidden */\nexport var DIALOGS_SELECTOR = '.k-window:not(.k-dialog), .k-dialog-wrapper';\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-dialogs',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698928908,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","import { DATA_DIALOGS_ID, DIALOGS_SELECTOR, ZINDEX_DIALOGS_STEP } from './constants';\n/** @hidden */\nexport var getMaxZIndex = function (currentZIndex, currentDocument, currentWindowId) {\n var maxZindex = currentZIndex;\n if (currentDocument && currentDocument.defaultView) {\n var allWindows = currentDocument.querySelectorAll(DIALOGS_SELECTOR);\n var zIndexChanged_1 = false;\n allWindows.forEach(function (KRwindow) {\n var computedStyle = currentDocument.defaultView.getComputedStyle(KRwindow, null);\n var dataId = KRwindow.getAttribute(DATA_DIALOGS_ID);\n if (dataId !== currentWindowId && computedStyle.zIndex !== null) {\n var zIndexValue = parseInt(computedStyle.zIndex, 10);\n if (zIndexValue >= maxZindex) {\n maxZindex = zIndexValue;\n zIndexChanged_1 = true;\n }\n }\n });\n return zIndexChanged_1 ? (maxZindex + ZINDEX_DIALOGS_STEP) : maxZindex;\n }\n return maxZindex;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SearchBar from './../common/SearchBar';\nimport ListContainer from './../common/ListContainer';\nimport List from './../common/List';\nimport DropDownBase from '../common/DropDownBase';\nimport GroupStickyHeader from '../common/GroupStickyHeader';\nimport { itemIndexStartsWith, getItemValue, areSame, getFocusedItem } from '../common/utils';\nimport { guid, Keys, classNames, createPropsContext, withPropsContext, kendoThemeMaps, IconWrap } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport ClearButton from '../common/ClearButton';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\nvar sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;\n/** @hidden */\nvar AutoCompleteWithoutContext = /** @class */ (function (_super) {\n __extends(AutoCompleteWithoutContext, _super);\n function AutoCompleteWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {};\n _this.base = new DropDownBase(_this);\n _this._element = null;\n _this._inputId = guid();\n _this._suggested = '';\n _this._input = null;\n _this._isScrolling = false;\n _this.itemHeight = 0;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._input) {\n _this._input.focus();\n }\n };\n /**\n * @hidden\n */\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props.data, data = _a === void 0 ? [] : _a;\n var newText = getItemValue(data[index], _this.props.textField);\n _this.triggerOnChange(newText, state);\n };\n /**\n * @hidden\n */\n _this.itemFocus = function (index, state) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;\n var focusedItem = data[index];\n if (!areSame(_this.state.focusedItem, focusedItem, textField)) {\n state.data.focusedItem = focusedItem;\n }\n };\n /**\n * @hidden\n */\n _this.togglePopup = function (state) {\n _this.base.togglePopup(state);\n };\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this._input.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n _this.onScroll = function (event) {\n _this._isScrolling = true;\n var list = _this.base.list;\n var groupField = _this.props.groupField;\n var _a = _this.props.data, data = _a === void 0 ? [] : _a;\n if (!groupField || !data.length) {\n return;\n }\n var itemHeight = _this.itemHeight || (list ? list.children[0].offsetHeight : 0);\n var target = event.target;\n var scrollTop = target.scrollTop;\n if (groupField) {\n data = _this.base.getGroupedDataModernMode(data, groupField);\n }\n ;\n var group = data[0][groupField];\n for (var i = 1; i < data.length; i++) {\n if (itemHeight * i > scrollTop) {\n break;\n }\n if (data[i] && data[i][groupField]) {\n group = data[i][groupField];\n }\n }\n if (group !== _this.state.group) {\n _this.setState({\n group: group\n });\n }\n };\n _this.handleItemClick = function (index, event) {\n _this.base.handleItemClick(index, event);\n _this._valueDuringOnChange = undefined;\n };\n _this.onChangeHandler = function (event) {\n var base = _this.base;\n var state = base.initState();\n var input = event.currentTarget;\n var value = input.value;\n var selectionAtEnd = input.selectionEnd === value.length;\n state.syntheticEvent = event;\n var prevSuggestion = _this._suggested;\n var prevValue = _this.value;\n var prevUserInput = prevValue &&\n prevValue.substring(0, prevValue.length - prevSuggestion.length);\n var deletedSuggestion = prevUserInput && prevUserInput === value;\n var deleting = prevUserInput && prevUserInput.length > value.length;\n var suggest = _this.props.suggest;\n var opened = _this.props.opened !== undefined ?\n _this.props.opened : _this.state.opened;\n if (suggest !== undefined && suggest !== false) {\n if (deletedSuggestion || deleting || !selectionAtEnd) {\n _this._suggested = '';\n }\n else {\n _this.suggestValue(value);\n }\n var newValue = value + _this._suggested;\n var suggestion = { userInput: value, value: _this._suggested };\n _this.triggerOnChange(newValue, state, { suggestion: suggestion });\n }\n else {\n _this._suggested = '';\n _this.triggerOnChange(value, state);\n }\n if ((!opened && value) || (opened && !value)) {\n _this.togglePopup(state);\n }\n state.data.focusedItem = undefined;\n _this.applyState(state);\n _this.setState({ group: undefined });\n };\n _this.clearButtonClick = function (event) {\n var base = _this.base;\n var state = base.initState();\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n state.syntheticEvent = event;\n var newValue = '';\n _this._suggested = '';\n _this.triggerOnChange(newValue, state);\n if (_this.state.focusedItem !== undefined) {\n state.data.focusedItem = undefined;\n }\n if (opened) {\n _this.togglePopup(state);\n }\n _this.applyState(state);\n };\n _this.onInputKeyDown = function (event) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, skipDisabledItems = _a.skipDisabledItems, groupField = _a.groupField, textField = _a.textField;\n if (_this._isScrolling) {\n _this._isScrolling = false;\n }\n var focusedIndex = _this.focusedIndex();\n var focusedItem = data[focusedIndex];\n var keyCode = event.keyCode;\n var altOrOptionsKeyPressed = event.altKey;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n var preventDefault = function () {\n if (opened) {\n event.preventDefault();\n }\n };\n if (altOrOptionsKeyPressed && keyCode === Keys.down) {\n _this.setState({\n opened: true\n });\n }\n else if (altOrOptionsKeyPressed && keyCode === Keys.up) {\n _this.setState({\n opened: false\n });\n }\n else if (opened && keyCode === Keys.pageUp) {\n _this.base.scrollPopupByPageSize(-1);\n }\n else if (opened && keyCode === Keys.pageDown) {\n _this.base.scrollPopupByPageSize(1);\n }\n else if (opened && (keyCode === Keys.enter || keyCode === Keys.esc)) {\n preventDefault();\n if (skipDisabledItems === false && focusedItem && focusedItem.disabled) {\n if (opened) {\n _this.togglePopup(state);\n }\n _this.applyState(state);\n }\n else {\n _this.applyInputValue(event.currentTarget.value, state, event.keyCode);\n }\n }\n else if (!opened && keyCode === Keys.esc) {\n var newValue = '';\n _this._suggested = '';\n _this.triggerOnChange(newValue, state);\n if (_this.state.focusedItem !== undefined) {\n state.data.focusedItem = undefined;\n }\n _this.applyState(state);\n }\n else if (keyCode === Keys.up || keyCode === Keys.down) {\n if (groupField !== '' && textField) {\n if (!_this.props.skipDisabledItems && opened) {\n _this.onNavigate(state, keyCode);\n }\n else {\n var newIndex = 0;\n if (keyCode === Keys.down || keyCode === Keys.right) {\n var tempnewIndex_1 = data.slice(focusedIndex + 1).find(function (i) { return !i.disabled && i[textField]; });\n newIndex = tempnewIndex_1 && data.findIndex(function (el) { return el[textField] === tempnewIndex_1[textField]; });\n }\n else if (keyCode === Keys.up || keyCode === Keys.left) {\n var dataToSearch = void 0;\n if (focusedIndex === -1) {\n dataToSearch = data;\n newIndex = data.findIndex(function (i) { return !i.disabled && i[textField]; });\n }\n else {\n dataToSearch = data.slice(0, focusedIndex);\n var tempnewIndex_2 = dataToSearch.pop();\n while (tempnewIndex_2 && tempnewIndex_2.disabled) {\n tempnewIndex_2 = dataToSearch.pop();\n }\n newIndex = tempnewIndex_2 && data.findIndex(function (el) { return el[textField] === tempnewIndex_2[textField]; });\n }\n }\n if (newIndex !== undefined) {\n var skipItems = newIndex - focusedIndex;\n _this.onNavigate(state, keyCode, skipItems);\n }\n else if (newIndex === undefined && data.findIndex(function (el) { return el[textField]; }) === data.length - 1) {\n _this.onNavigate(state, keyCode);\n }\n }\n }\n else if (!_this.props.skipDisabledItems && opened) {\n _this.onNavigate(state, keyCode);\n }\n else {\n var newIndex = null;\n if (keyCode === Keys.down || keyCode === Keys.right) {\n newIndex = data.slice(focusedIndex + 1).find(function (i) { return !i.disabled; });\n }\n else if (keyCode === Keys.up || keyCode === Keys.left) {\n var dataTest = data.slice(0, focusedIndex);\n newIndex = dataTest.pop();\n while (newIndex && newIndex.disabled) {\n newIndex = dataTest.pop();\n }\n }\n if (newIndex) {\n var skipItems = newIndex.id - focusedIndex - 1;\n _this.onNavigate(state, keyCode, skipItems);\n }\n else {\n _this.onNavigate(state, keyCode);\n }\n }\n _this.applyState(state);\n preventDefault();\n }\n };\n _this.handleBlur = function (event) {\n if (_this.state.focused) {\n var state = _this.base.initState();\n state.data.focused = false;\n state.events.push({ type: 'onBlur' });\n state.syntheticEvent = event;\n _this.applyInputValue(event.currentTarget.value, state);\n }\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(AutoCompleteWithoutContext.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AutoCompleteWithoutContext.prototype, \"value\", {\n /**\n * The value of the AutoComplete.\n */\n get: function () {\n if (this._valueDuringOnChange !== undefined) {\n return this._valueDuringOnChange;\n }\n else if (this.props.value !== undefined) {\n return this.props.value;\n }\n else if (this.state.value !== undefined) {\n return this.state.value;\n }\n else if (this.props.defaultValue !== undefined) {\n return this.props.defaultValue;\n }\n return '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AutoCompleteWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the AutoComplete.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AutoCompleteWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the AutoComplete is set.\n */\n get: function () {\n // The AutoComplete component is in a invalid state\n // only if it's required and the value is null!\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== '');\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AutoCompleteWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : AutoCompleteWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AutoCompleteWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : AutoCompleteWithoutContext.defaultProps.required;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n AutoCompleteWithoutContext.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a;\n var _b = this.props, _c = _b.groupField, groupField = _c === void 0 ? '' : _c, _d = _b.data, data = _d === void 0 ? [] : _d;\n var _e = prevProps.data, prevData = _e === void 0 ? [] : _e;\n var focusedIndex = this.focusedIndex();\n var focusedItem = data[focusedIndex];\n var dataChanged = prevData !== data;\n var focusedItemChanged = focusedItem !== undefined && prevState.focusedItem !== focusedItem;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n var opening = !prevOpened && opened;\n if (groupField === '') {\n if ((opened && (focusedItemChanged || dataChanged)) || opening) {\n this.base.scrollToItem(focusedIndex);\n }\n }\n else if (!this._isScrolling) {\n var focusedItemIndex = (_a = this.base.getGroupedDataModernMode(data, groupField)) === null || _a === void 0 ? void 0 : _a.indexOf(focusedItem);\n if (opening) {\n // Resets the sticky header group value for scenarios with open/close of component's popup\n if (data && data.length !== 0) {\n this.base.resetGroupStickyHeader(data[0][groupField], this);\n }\n this.base.scrollToItem(focusedItemIndex);\n }\n ;\n if (opened && prevOpened && focusedItemChanged) {\n this.base.scrollToItem(focusedItemIndex);\n }\n }\n this.setValidity();\n };\n /**\n * @hidden\n */\n AutoCompleteWithoutContext.prototype.componentDidMount = function () {\n this.base.didMount();\n this.setValidity();\n };\n /**\n * @hidden\n */\n AutoCompleteWithoutContext.prototype.render = function () {\n var _a;\n var _this = this;\n var _b = this.props, dir = _b.dir, disabled = _b.disabled, label = _b.label, className = _b.className, style = _b.style, loading = _b.loading, suggest = _b.suggest, size = _b.size, rounded = _b.rounded, fillMode = _b.fillMode;\n var isValid = !this.validityStyles || this.validity.valid;\n var base = this.base;\n var value = this.value;\n var renderClearButton = this.props.clearButton !== false && !loading && !!value;\n var id = this.props.id || this._inputId;\n if (typeof suggest === 'string') {\n this._suggested = suggest;\n }\n var autoComplete = (React.createElement(\"span\", { className: classNames('k-autocomplete k-input', className, (_a = {},\n _a[\"k-input-\".concat(sizeMap[size] || size)] = size,\n _a[\"k-rounded-\".concat(roundedMap[rounded] || rounded)] = rounded,\n _a[\"k-input-\".concat(fillMode)] = fillMode,\n _a['k-invalid'] = !isValid,\n _a['k-loading'] = loading,\n _a['k-required'] = this.required,\n _a['k-disabled'] = disabled,\n _a)), ref: function (element) {\n _this._element = element;\n base.wrapper = element;\n }, style: !label\n ? style\n : __assign(__assign({}, style), { width: undefined }), dir: dir },\n this.renderSearchBar(value || '', id),\n loading && React.createElement(IconWrap, { className: \"k-input-loading-icon\", name: 'loading' }),\n renderClearButton && !loading && React.createElement(ClearButton, { onClick: this.clearButtonClick, key: \"clearbutton\" }),\n this.renderListContainer()));\n return label\n ? (React.createElement(FloatingLabel, { label: label, editorId: id, editorValue: value, editorValid: isValid, editorDisabled: disabled, style: { width: style ? style.width : undefined }, children: autoComplete }))\n : autoComplete;\n };\n /**\n * @hidden\n */\n AutoCompleteWithoutContext.prototype.onNavigate = function (state, keyCode, skipItems) {\n var _this = this;\n var typedText = this.value;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, focusedItemIndex = _a.focusedItemIndex;\n var focusedIndex = this.state.focusedItem !== undefined ?\n data.findIndex(function (i) { return areSame(i, _this.state.focusedItem, textField); }) :\n (focusedItemIndex ? focusedItemIndex(data, typedText, textField) :\n data.indexOf(getFocusedItem(data, typedText, textField)));\n var newFocused = this.base.navigation.navigate({\n keyCode: keyCode,\n current: focusedIndex,\n max: data.length - 1,\n min: 0,\n skipItems: skipItems ? skipItems : undefined\n });\n if (newFocused !== undefined) {\n this.itemFocus(newFocused, state);\n }\n this.applyState(state);\n };\n /**\n * @hidden\n */\n AutoCompleteWithoutContext.prototype.applyInputValue = function (value, state, eventKey) {\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;\n var focusedIndex = this.focusedIndex();\n var focusedItem = data[focusedIndex];\n this._suggested = '';\n if (opened && eventKey === Keys.enter) {\n if (focusedItem && !focusedItem.disabled) {\n var newValue = getItemValue(data[this.focusedIndex(value)], textField);\n this.triggerOnChange(newValue, state);\n }\n }\n if (opened) {\n this.togglePopup(state);\n }\n this.applyState(state);\n };\n AutoCompleteWithoutContext.prototype.renderSearchBar = function (value, id) {\n var _this = this;\n var base = this.base;\n var _a = this.props, placeholder = _a.placeholder, tabIndex = _a.tabIndex, disabled = _a.disabled, readonly = _a.readonly;\n var focused = this.state.focused;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n return (React.createElement(SearchBar, { id: id, placeholder: placeholder, tabIndex: tabIndex, accessKey: this.props.accessKey, value: value, suggestedText: this._suggested, focused: focused, name: this.props.name, ref: function (searchbar) { return _this._input = searchbar && searchbar.input; }, onKeyDown: this.onInputKeyDown, onChange: this.onChangeHandler, onFocus: base.handleFocus, onBlur: this.handleBlur, disabled: disabled, readOnly: readonly, expanded: opened, owns: base.listBoxId, activedescendant: 'option-' + base.guid + '-' + this.focusedIndex(), role: \"combobox\", ariaLabelledBy: this.props.ariaLabelledBy, ariaDescribedBy: this.props.ariaDescribedBy, ariaRequired: this.required, render: this.props.valueRender }));\n };\n AutoCompleteWithoutContext.prototype.renderListContainer = function () {\n var _a;\n var base = this.base;\n var _b = this.props, dir = _b.dir, header = _b.header, footer = _b.footer, _c = _b.data, data = _c === void 0 ? [] : _c, size = _b.size, groupField = _b.groupField, list = _b.list, groupStickyHeaderItemRender = _b.groupStickyHeaderItemRender;\n var popupSettings = base.getPopupSettings();\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n var group = this.state.group;\n if (group === undefined && groupField !== undefined) {\n group = getItemValue(data[0], groupField);\n }\n return (React.createElement(ListContainer, { width: popupWidth, popupSettings: {\n animate: popupSettings.animate,\n anchor: this.element,\n show: opened,\n popupClass: classNames(popupSettings.popupClass, 'k-list-container', 'k-autocomplete-popup'),\n className: popupSettings.className,\n appendTo: popupSettings.appendTo\n }, dir: dir !== undefined ? dir : this.base.dirCalculated, itemsCount: [data.length] },\n header && React.createElement(\"div\", { className: \"k-list-header\" }, header),\n React.createElement(\"div\", { className: classNames('k-list', (_a = {},\n _a[\"k-list-\".concat(sizeMap[size] || size)] = size,\n _a)) },\n !list && group && data.length !== 0 && React.createElement(GroupStickyHeader, { group: group, groupMode: 'modern', render: groupStickyHeaderItemRender }),\n this.renderList()),\n footer && React.createElement(\"div\", { className: \"k-list-footer\" }, footer)));\n };\n AutoCompleteWithoutContext.prototype.renderList = function () {\n var base = this.base;\n var popupSettings = base.getPopupSettings();\n var _a = this.props, textField = _a.textField, _b = _a.data, data = _b === void 0 ? [] : _b, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender, groupHeaderItemRender = _a.groupHeaderItemRender;\n var value = this.value;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n return (React.createElement(List, { id: base.listBoxId, show: opened, data: data.slice(), focusedIndex: this.focusedIndex(), value: value, textField: textField, valueField: textField, highlightSelected: false, optionsGuid: base.guid, groupField: this.props.groupField, groupMode: 'modern', listRef: function (list) { return base.list = list; }, wrapperStyle: { maxHeight: popupSettings.height }, wrapperCssClass: \"k-list-content\", onClick: this.handleItemClick, itemRender: itemRender, groupHeaderItemRender: groupHeaderItemRender, noDataRender: listNoDataRender, onMouseDown: function (e) { return e.preventDefault(); }, onScroll: this.onScroll }));\n };\n AutoCompleteWithoutContext.prototype.triggerOnChange = function (newValue, state, eventArgs) {\n if (this.value === newValue && !eventArgs) {\n return;\n }\n state.data.value = newValue;\n this._valueDuringOnChange = newValue;\n state.events.push(__assign({ type: 'onChange' }, (eventArgs || {})));\n };\n AutoCompleteWithoutContext.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueDuringOnChange = undefined;\n };\n AutoCompleteWithoutContext.prototype.suggestValue = function (value) {\n this._suggested = '';\n if (value) {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;\n var suggestedItem = data[itemIndexStartsWith(data, value, textField)];\n if (suggestedItem) {\n var suggestedText = getItemValue(suggestedItem, textField);\n if (value.toLowerCase() !== suggestedText.toLowerCase()) {\n this._suggested = suggestedText.substring(value.length);\n }\n }\n }\n };\n AutoCompleteWithoutContext.prototype.focusedIndex = function (value) {\n var _this = this;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, focusedItemIndex = _a.focusedItemIndex, skipDisabledItems = _a.skipDisabledItems;\n var inputValue = value !== undefined ? value : this.value;\n if (this.state.focusedItem !== undefined) {\n return data.findIndex(function (i) { return areSame(i, _this.state.focusedItem, textField); });\n }\n else if (focusedItemIndex) {\n return focusedItemIndex(data, inputValue, textField);\n }\n else {\n var indexOfFocusedItem = data.indexOf(getFocusedItem(data, inputValue, textField));\n if (skipDisabledItems && textField && indexOfFocusedItem === -1) {\n return data.findIndex(function (i) { return !i.disabled && i[textField]; });\n }\n return Math.max(0, indexOfFocusedItem);\n }\n };\n AutoCompleteWithoutContext.displayName = 'AutoComplete';\n /**\n * @hidden\n */\n AutoCompleteWithoutContext.propTypes = __assign(__assign({}, DropDownBase.basicPropTypes), { size: PropTypes.oneOf([null, 'small', 'medium', 'large']), rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']), fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline']), groupField: PropTypes.string, suggest: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]), placeholder: PropTypes.string, value: PropTypes.string, defaultValue: PropTypes.string, validationMessage: PropTypes.string, required: PropTypes.bool, readonly: PropTypes.bool, clearButton: PropTypes.bool, valueRender: PropTypes.func, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string, list: PropTypes.any, skipDisabledItems: PropTypes.bool });\n /**\n * @hidden\n */\n AutoCompleteWithoutContext.defaultProps = __assign(__assign({}, DropDownBase.defaultProps), { size: 'medium', rounded: 'medium', fillMode: 'solid', skipDisabledItems: true });\n return AutoCompleteWithoutContext;\n}(React.Component));\nexport { AutoCompleteWithoutContext };\n/**\n * Represents the PropsContext of the `AutoComplete` component.\n * Used for global configuration of all `AutoComplete` instances.\n *\n * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.\n */\nexport var AutoCompletePropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact AutoComplete component]({% slug overview_autocomplete %}).\n *\n * Accepts properties of type [AutoCompleteProps]({% slug api_dropdowns_autocompleteprops %}).\n * Obtaining the `ref` returns an object of type [AutoCompleteHandle]({% slug api_dropdowns_autocompletehandle %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * autocomplete = null;\n * render() {\n * return (\n *
    \n * this.autocomplete = component}\n * />\n * \n *
    \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var AutoComplete = withPropsContext(AutoCompletePropsContext, AutoCompleteWithoutContext);\nAutoComplete.displayName = 'KendoReactAutoComplete';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport DropDownBase from '../common/DropDownBase';\nimport { guid, classNames, Keys, createPropsContext, withPropsContext, kendoThemeMaps, svgIconPropType } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { areSame, itemIndexStartsWith, getItemIndexByText, getItemValue, isPresent, suggestValue } from '../common/utils';\nimport SearchBar from '../common/SearchBar';\nimport ListContainer from '../common/ListContainer';\nimport List from '../common/List';\nimport ListFilter from '../common/ListFilter';\nimport GroupStickyHeader from '../common/GroupStickyHeader';\nimport { validatePackage, canUseDOM, IconWrap } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport ClearButton from '../common/ClearButton';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { caretAltDownIcon, xIcon } from '@progress/kendo-svg-icons';\nimport { messages, comboArrowBtnAriaLabelExpand, comboArrowBtnAriaLabelCollapse } from './../messages';\nimport { provideLocalizationService } from '@progress/kendo-react-intl';\nimport { ActionSheet, ActionSheetContent, ActionSheetHeader } from '@progress/kendo-react-layout';\nimport { MOBILE_SMALL_DEVISE, MOBILE_MEDIUM_DEVISE } from '../common/constants';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\nvar sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;\n/** @hidden */\nvar ComboBoxWithoutContext = /** @class */ (function (_super) {\n __extends(ComboBoxWithoutContext, _super);\n function ComboBoxWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /** @hidden */\n _this.state = {};\n _this.base = new DropDownBase(_this);\n _this._element = null;\n _this._inputId = guid();\n _this._suggested = '';\n _this._skipBlur = false;\n _this._input = null;\n _this._adaptiveFilterInput = null;\n _this.itemHeight = 0;\n /** @hidden */\n _this.focus = function () {\n if (_this._input) {\n _this._input.focus();\n }\n };\n /** @hidden */\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual, dataItemKey = _a.dataItemKey;\n var skip = virtual ? virtual.skip : 0;\n var item = data[index - skip];\n var newSelected = !areSame(item, _this.value, dataItemKey);\n _this.triggerOnChange(item, state);\n if (_this.state.text !== undefined) {\n state.data.text = undefined;\n }\n if (newSelected) {\n _this.base.triggerPageChangeCornerItems(item, state);\n }\n };\n _this.onPopupOpened = function () {\n setTimeout(function () {\n if (_this.mobileMode && _this._adaptiveFilterInput) {\n _this._skipBlur = true;\n _this._adaptiveFilterInput.focus();\n _this._skipBlur = false;\n }\n }, 300);\n };\n _this.componentRef = function (element) {\n _this._element = element;\n _this.base.wrapper = element;\n };\n _this.toggleBtnClick = function (event) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, skipDisabledItems = _a.skipDisabledItems, textField = _a.textField;\n var focusedIndex = _this.getFocusedIndex();\n var isCurrentValueDisabled = _this.getCurrentValueDisabledStatus(textField, data, focusedIndex);\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (!skipDisabledItems && textField && isCurrentValueDisabled) {\n _this.clearValueOnToggleBtnClick(event);\n }\n _this.base.togglePopup(state);\n if (!opened && _this.mobileMode) {\n var mobileText = _this.props.adaptiveFilter !== undefined ? _this.props.adaptiveFilter : _this.state.text || null;\n _this.base.filterChanged(mobileText, state);\n }\n _this.applyState(state);\n };\n _this.renderMobileListFilter = function () {\n var mobileText = _this.props.adaptiveFilter !== undefined ? _this.props.adaptiveFilter : _this.state.text;\n var selectedItemText = getItemValue(_this.value, _this.props.textField);\n var mobileInputText = isPresent(mobileText) ? mobileText : selectedItemText;\n return (React.createElement(ListFilter, { value: mobileInputText, ref: function (filter) { return _this._adaptiveFilterInput = filter && filter.element; }, onChange: _this.handleMobileFilterChange, onKeyDown: _this.onInputKeyDown, size: _this.props.size, rounded: _this.props.rounded, fillMode: _this.props.fillMode }));\n };\n _this.handleMobileFilterChange = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event.syntheticEvent;\n state.data.text = event.target.value;\n _this.base.filterChanged(event.target.value, state);\n _this.applyState(state);\n };\n _this.onScroll = function (event) {\n var _a = _this.base, vs = _a.vs, list = _a.list;\n vs.scrollHandler(event);\n var groupField = _this.props.groupField;\n var _b = _this.props.data, data = _b === void 0 ? [] : _b;\n if (!groupField || !data.length) {\n return;\n }\n var itemHeight = _this.itemHeight =\n _this.itemHeight || (vs.enabled ? vs.itemHeight : (list ? list.children[0].offsetHeight : 0));\n var target = event.target;\n var scrollTop = target.scrollTop - (vs.skip * itemHeight);\n if (_this.props.groupMode === 'modern') {\n data = _this.base.getGroupedDataModernMode(data, groupField);\n }\n var group = data[0][groupField];\n for (var i = 1; i < data.length; i++) {\n if (itemHeight * i > scrollTop) {\n break;\n }\n if (data[i] && data[i][groupField]) {\n group = data[i][groupField];\n }\n }\n if (group !== _this.state.group) {\n _this.setState({\n group: group\n });\n if (_this.props.onGroupScroll) {\n _this.props.onGroupScroll.call(undefined, { group: group });\n }\n }\n };\n _this.handleItemClick = function (index, event) {\n _this.base.handleItemClick(index, event);\n _this._valueDuringOnChange = undefined;\n };\n _this.handleBlur = function (event) {\n if (_this.state.focused && !_this._skipBlur) {\n var state = _this.base.initState();\n var _a = _this.props, textField = _a.textField, _b = _a.data, data = _b === void 0 ? [] : _b;\n var focusedIndex = _this.getFocusedIndex();\n var isCustomValue = focusedIndex === -1;\n var isCurrentValueDisabled = !isCustomValue && _this.getCurrentValueDisabledStatus(textField, data, focusedIndex);\n state.data.focused = false;\n state.events.push({ type: 'onBlur' });\n state.syntheticEvent = event;\n if (textField && isCurrentValueDisabled) {\n _this.clearValueOnBlur(event);\n }\n _this.applyValueOnRejectSuggestions(event.currentTarget.value, state);\n }\n };\n _this.onInputClick = function (event) {\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var mobileText = _this.props.adaptiveFilter !== undefined ? _this.props.adaptiveFilter : _this.state.text || null;\n if (!opened && _this.mobileMode) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n _this.base.togglePopup(state);\n _this.base.filterChanged(mobileText, state);\n _this.applyState(state);\n }\n };\n _this.onInputKeyDown = function (event) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, skipDisabledItems = _a.skipDisabledItems, textField = _a.textField, dataItemKey = _a.dataItemKey, groupField = _a.groupField;\n var value = _this.value;\n var selectedIndex = Math.max(0, data.findIndex(function (i) { return areSame(i, value, dataItemKey); }));\n var keyCode = event.keyCode;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (!event.altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n if (groupField !== '' && textField) {\n if (!_this.props.skipDisabledItems && opened) {\n _this.onNavigate(state, keyCode);\n }\n else {\n var newIndex = 0;\n if (keyCode === Keys.down || keyCode === Keys.right) {\n var tempnewIndex_1 = data.slice(selectedIndex + 1).find(function (i) { return !i.disabled && i[textField]; });\n newIndex = tempnewIndex_1 && data.findIndex(function (el) { return el[textField] === tempnewIndex_1[textField]; });\n }\n else if (keyCode === Keys.up || keyCode === Keys.left) {\n var dataToSearch = void 0;\n if (selectedIndex === 0) {\n dataToSearch = data;\n newIndex = data.findIndex(function (i) { return !i.disabled && i[textField]; });\n }\n else {\n dataToSearch = data.slice(0, selectedIndex);\n var tempnewIndex_2 = dataToSearch.pop();\n while (tempnewIndex_2 && tempnewIndex_2.disabled) {\n tempnewIndex_2 = dataToSearch.pop();\n }\n newIndex = tempnewIndex_2 && data.findIndex(function (el) { return el[textField] === tempnewIndex_2[textField]; });\n }\n }\n if (newIndex !== undefined) {\n var skipItems = newIndex - selectedIndex;\n _this.onNavigate(state, keyCode, skipItems);\n }\n else if (newIndex === undefined && data.findIndex(function (el) { return el[textField] === value[textField]; }) === data.length - 1) {\n _this.onNavigate(state, keyCode);\n }\n }\n }\n else if (!_this.props.skipDisabledItems && opened) {\n _this.onNavigate(state, keyCode);\n }\n else {\n var newIndex = null;\n if (keyCode === Keys.down || keyCode === Keys.right) {\n newIndex = data.slice(selectedIndex + 1).find(function (i) { return !i.disabled; });\n }\n else if (keyCode === Keys.up || keyCode === Keys.left) {\n var dataTest = data.slice(0, selectedIndex);\n newIndex = dataTest.pop();\n while (newIndex && newIndex.disabled) {\n newIndex = dataTest.pop();\n }\n }\n if (newIndex) {\n var skipItems = newIndex.id - selectedIndex - 1;\n _this.onNavigate(state, keyCode, skipItems);\n }\n else {\n _this.onNavigate(state, keyCode);\n }\n }\n _this.applyState(state);\n }\n var togglePopup = function () {\n event.preventDefault();\n _this.base.togglePopup(state);\n _this.applyState(state);\n };\n var focusedIndex = _this.getFocusedIndex();\n var isCustomValue = focusedIndex === -1;\n var isCurrentValueDisabled = !isCustomValue && _this.getCurrentValueDisabledStatus(textField, data, focusedIndex);\n if (opened) {\n if (keyCode === Keys.pageUp) {\n _this.base.scrollPopupByPageSize(-1);\n }\n else if (keyCode === Keys.pageDown) {\n _this.base.scrollPopupByPageSize(1);\n }\n else if (event.altKey && keyCode === Keys.up) {\n togglePopup();\n }\n else if (keyCode === Keys.enter) {\n event.preventDefault();\n var currentValueText = textField && !isCustomValue && event.currentTarget.value ? data[focusedIndex][textField] : undefined;\n if (currentValueText) {\n if (!skipDisabledItems && textField && isCurrentValueDisabled) {\n _this.clearValueOnEnterOrEsc(event);\n }\n else if (!isCurrentValueDisabled) {\n _this.applyValueOnEnter(event.currentTarget.value, state);\n }\n }\n else {\n _this.applyValueOnEnter(event.currentTarget.value, state);\n }\n }\n else if (keyCode === Keys.esc) {\n if (!skipDisabledItems && textField && isCurrentValueDisabled) {\n _this.clearValueOnEnterOrEsc(event);\n }\n _this.applyValueOnRejectSuggestions(event.currentTarget.value, state);\n }\n }\n else if (!opened && keyCode === Keys.esc) {\n _this.clearValueOnEnterOrEsc(event);\n }\n else if (event.altKey && keyCode === Keys.down) {\n togglePopup();\n }\n };\n _this.inputOnChange = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var input = event.currentTarget;\n var value = input.value;\n if (_this.props.suggest) {\n var selectionAtEnd = input.selectionEnd === value.length;\n var prevText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n if (!isPresent(prevText)) {\n prevText = getItemValue(_this.value, _this.props.textField) || '';\n }\n var deletedSuggestion = prevText && prevText === value;\n var deleting = prevText && prevText.length > value.length;\n if (deletedSuggestion || deleting || !selectionAtEnd) {\n _this._suggested = '';\n }\n else {\n _this.suggestValue(value);\n }\n }\n if (_this.props.filter === undefined) {\n state.data.text = value;\n }\n if (_this.state.focusedItem !== undefined) {\n state.data.focusedItem = undefined;\n }\n if (!opened) {\n _this.base.togglePopup(state);\n }\n _this.base.filterChanged(value, state);\n _this.applyState(state);\n _this.setState({ group: undefined });\n };\n _this.clearButtonClick = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n event.stopPropagation();\n _this.clearValue();\n };\n _this.clearValueOnEnterOrEsc = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n event.stopPropagation();\n _this.clearValue();\n };\n _this.clearValueOnBlur = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n event.stopPropagation();\n _this.clearValue();\n };\n _this.clearValueOnToggleBtnClick = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n event.stopPropagation();\n _this.clearValue();\n };\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this._input.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(ComboBoxWithoutContext.prototype, \"document\", {\n get: function () {\n if (!canUseDOM) {\n return;\n }\n // useful only for user actions\n return (this.element && this.element.ownerDocument) || document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ComboBoxWithoutContext.prototype, \"element\", {\n /** @hidden */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ComboBoxWithoutContext.prototype, \"mobileMode\", {\n /**\n * The mobile mode of the ComboBox.\n */\n get: function () {\n var isAdaptive = this.state.windowWidth && this.state.windowWidth <= MOBILE_MEDIUM_DEVISE && this.props.adaptive;\n return !!isAdaptive;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ComboBoxWithoutContext.prototype, \"value\", {\n /**\n * The value of the ComboBox.\n */\n get: function () {\n if (this._valueDuringOnChange !== undefined) {\n return this._valueDuringOnChange;\n }\n else if (this.props.value !== undefined) {\n return this.props.value;\n }\n else if (this.state.value !== undefined) {\n return this.state.value;\n }\n else if (this.props.defaultValue !== undefined) {\n return this.props.defaultValue;\n }\n return undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ComboBoxWithoutContext.prototype, \"index\", {\n /**\n * The index of the selected item.\n */\n get: function () {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n var value = this.value;\n // TO DO: deprecate it!\n return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ComboBoxWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the ComboBox.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ComboBoxWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the component is set.\n */\n get: function () {\n // remove the undefined check when this is fixed:\n // https://github.com/telerik/kendo-react-private/issues/252\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required\n || (this.value !== null && this.value !== '' && this.value !== undefined));\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ComboBoxWithoutContext.prototype, \"validityStyles\", {\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : ComboBoxWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ComboBoxWithoutContext.prototype, \"required\", {\n /** @hidden */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : ComboBoxWithoutContext.defaultProps.required;\n },\n enumerable: false,\n configurable: true\n });\n /** @hidden */\n ComboBoxWithoutContext.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a;\n var _b = this.props, dataItemKey = _b.dataItemKey, virtual = _b.virtual, _c = _b.groupField, groupField = _c === void 0 ? '' : _c, _d = _b.data, data = _d === void 0 ? [] : _d, textField = _b.textField;\n var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n var opening = !prevOpened && opened;\n var selectedItem = this.value;\n this._valueOnDidUpdate = selectedItem;\n if (virtual && virtual.total !== prevTotal) {\n this.base.vs.calcScrollElementHeight();\n this.base.vs.reset();\n }\n else {\n var prevSelectedItem = prevProps.value !== undefined ? prevProps.value : prevState.value;\n var selectedItemIndex = data.findIndex(function (i) { return areSame(i, selectedItem, dataItemKey); });\n // Needed to calculate the proper item index when in 'modern' grouping mode\n if (this.props.groupMode === 'modern' && textField && selectedItem) {\n selectedItemIndex = (_a = this.base.getGroupedDataModernMode(data, groupField)) === null || _a === void 0 ? void 0 : _a.map(function (el) { return el[textField]; }).indexOf(selectedItem[textField]);\n }\n var selectedItemChanged = !areSame(prevSelectedItem, selectedItem, dataItemKey);\n if (opening && virtual) {\n this.base.scrollToVirtualItem(virtual, selectedItemIndex);\n }\n else if (opening && !virtual) {\n this.onPopupOpened();\n // Resets the sticky header group value for scenarios with open/close of component's popup\n if (data && data.length !== 0) {\n this.base.resetGroupStickyHeader(data[0][groupField], this);\n }\n this.base.scrollToItem(selectedItemIndex);\n }\n else if (opened && prevOpened && selectedItem && selectedItemChanged) {\n this.base.scrollToItem(selectedItemIndex);\n }\n }\n if (opening && this._input) {\n this._input.focus();\n }\n this.setValidity();\n };\n /** @hidden */\n ComboBoxWithoutContext.prototype.componentDidMount = function () {\n var _a;\n this.observerResize = canUseDOM && window.ResizeObserver && new window.ResizeObserver(this.calculateMedia.bind(this));\n this.base.didMount();\n this.setValidity();\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.observe(this.document.body);\n }\n };\n /** @hidden */\n ComboBoxWithoutContext.prototype.componentWillUnmount = function () {\n var _a;\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.disconnect();\n }\n };\n /** @hidden */\n ComboBoxWithoutContext.prototype.render = function () {\n var _a;\n var btnAriaLabelExpand = provideLocalizationService(this).toLanguageString(comboArrowBtnAriaLabelExpand, messages[comboArrowBtnAriaLabelExpand]);\n var btnAriaLabelCollapse = provideLocalizationService(this).toLanguageString(comboArrowBtnAriaLabelCollapse, messages[comboArrowBtnAriaLabelCollapse]);\n var _b = this.props, dir = _b.dir, disabled = _b.disabled, _c = _b.clearButton, clearButton = _c === void 0 ? ComboBoxWithoutContext.defaultProps.clearButton : _c, label = _b.label, textField = _b.textField, adaptive = _b.adaptive, className = _b.className, style = _b.style, loading = _b.loading, iconClassName = _b.iconClassName, virtual = _b.virtual, size = _b.size, rounded = _b.rounded, fillMode = _b.fillMode, _d = _b.opened, opened = _d === void 0 ? this.state.opened : _d, placeholder = _b.placeholder;\n var _e = this.state.windowWidth, windowWidth = _e === void 0 ? 0 : _e;\n var isValid = !this.validityStyles || this.validity.valid;\n var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n var selectedItemText = getItemValue(this.value, textField);\n var inputText = isPresent(text) ? text : selectedItemText;\n var renderClearButton = clearButton && (!!(inputText) || isPresent(this.value));\n var base = this.base;\n var vs = base.vs;\n var id = this.props.id || this._inputId;\n var renderAdaptive = windowWidth <= MOBILE_MEDIUM_DEVISE && adaptive;\n vs.enabled = virtual !== undefined;\n if (virtual !== undefined) {\n vs.skip = virtual.skip;\n vs.total = virtual.total;\n vs.pageSize = virtual.pageSize;\n }\n var combobox = (React.createElement(React.Fragment, null,\n React.createElement(\"span\", { className: classNames('k-combobox k-input', (_a = {},\n _a[\"k-input-\".concat(sizeMap[size] || size)] = size,\n _a[\"k-rounded-\".concat(roundedMap[rounded] || rounded)] = rounded,\n _a[\"k-input-\".concat(fillMode)] = fillMode,\n _a['k-invalid'] = !isValid,\n _a['k-loading'] = loading,\n _a['k-required'] = this.required,\n _a['k-disabled'] = disabled,\n _a), className), ref: this.componentRef, style: !label ? style : __assign(__assign({}, style), { width: undefined }), dir: dir },\n this.renderSearchBar(inputText || '', id, placeholder),\n renderClearButton && !loading && React.createElement(ClearButton, { onClick: this.clearButtonClick, key: \"clearbutton\" }),\n loading && React.createElement(IconWrap, { className: \"k-input-loading-icon\", name: 'loading', key: \"loading\" }),\n React.createElement(Button, { tabIndex: -1, type: \"button\", \"aria-label\": opened ? btnAriaLabelCollapse : btnAriaLabelExpand, icon: !iconClassName ? 'caret-alt-down' : undefined, svgIcon: !iconClassName ? caretAltDownIcon : this.props.svgIcon, iconClass: iconClassName, size: size, fillMode: fillMode, rounded: null, themeColor: 'base', className: \"k-input-button\", onClick: this.toggleBtnClick, onMouseDown: function (e) { return e.preventDefault(); } }),\n !renderAdaptive && this.renderListContainer()),\n renderAdaptive && this.renderAdaptiveListContainer()));\n return label\n ? (React.createElement(FloatingLabel, { label: label, editorId: id, editorValue: inputText, editorValid: isValid, editorDisabled: disabled, style: { width: style ? style.width : undefined }, children: combobox }))\n : combobox;\n };\n /** @hidden */\n ComboBoxWithoutContext.prototype.onNavigate = function (state, keyCode, skipItems) {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c;\n var text = this.props.filter ? this.props.filter : this.state.text;\n var focusedIndex = this.getFocusedIndex();\n var vs = this.base.vs;\n var value = this.value;\n this._suggested = '';\n if (focusedIndex !== -1 && !isPresent(value)) {\n this.handleItemSelect(focusedIndex, state);\n }\n else if (text === '') {\n this.handleItemSelect(0, state);\n }\n else {\n var currentIndex = virtual.skip + focusedIndex;\n var newIndex = this.base.navigation.navigate({\n keyCode: keyCode,\n current: currentIndex,\n max: (vs.enabled ? vs.total : data.length) - 1,\n min: 0,\n skipItems: skipItems ? skipItems : undefined\n });\n if (newIndex !== undefined) {\n this.handleItemSelect(newIndex, state);\n }\n }\n };\n ;\n ComboBoxWithoutContext.prototype.getCurrentValueDisabledStatus = function (textField, data, focusedIndex) {\n return textField && data && data[focusedIndex] && data[focusedIndex].disabled;\n };\n ComboBoxWithoutContext.prototype.applyValueOnEnter = function (value, state) {\n var _a;\n var _b = this.props, _c = _b.data, data = _c === void 0 ? [] : _c, textField = _b.textField, allowCustom = _b.allowCustom;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var currentValueText = getItemValue(this.value, textField);\n var valueIndex = currentValueText === value ?\n this.index : getItemIndexByText(data, value, textField);\n var itemSelected = valueIndex !== -1;\n var newSelected = undefined;\n this._suggested = '';\n if (itemSelected) { // typed text match item from list\n newSelected = data[valueIndex];\n }\n else {\n if (allowCustom) { // any custom text not in list\n newSelected = textField !== undefined ? (_a = {}, _a[textField] = value, _a) : value;\n }\n else {\n return this.selectFocusedItem(value, state);\n }\n }\n this.triggerOnChange(newSelected, state);\n if (opened) {\n this.base.togglePopup(state);\n }\n if (this.props.filter === undefined && this.state.text !== undefined) {\n state.data.text = undefined;\n }\n this.applyState(state);\n };\n ComboBoxWithoutContext.prototype.applyValueOnRejectSuggestions = function (text, state) {\n var _a;\n var _b = this.props, _c = _b.data, data = _c === void 0 ? [] : _c, textField = _b.textField, allowCustom = _b.allowCustom;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var valueItemText = getItemValue(this.value, textField);\n var isMobileDevice = this.state.windowWidth && this.state.windowWidth <= MOBILE_MEDIUM_DEVISE;\n this._suggested = '';\n if (text === valueItemText || (text === '' && !isPresent(valueItemText))) {\n if (opened && !isMobileDevice) {\n this.base.togglePopup(state);\n }\n return this.applyState(state);\n }\n var valueIndex = getItemIndexByText(data, text, textField, true);\n var itemSelected = valueIndex !== -1;\n var newSelected = null;\n if (itemSelected) {\n newSelected = data[valueIndex];\n }\n else if (allowCustom) {\n newSelected = text ? (textField ? (_a = {}, _a[textField] = text, _a) : text) : null;\n }\n this.triggerOnChange(newSelected, state);\n if (this.state.text !== undefined) {\n state.data.text = undefined;\n this.base.filterChanged('', state);\n }\n if (opened && !isMobileDevice) {\n this.base.togglePopup(state);\n }\n this.applyState(state);\n };\n ComboBoxWithoutContext.prototype.selectFocusedItem = function (text, state) {\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, _d = _a.focusedItemIndex, focusedItemIndex = _d === void 0 ? itemIndexStartsWith : _d;\n var skip = virtual.skip;\n var focusedIndex = (text === '' && skip === 0) ? 0 :\n focusedItemIndex(data, text, textField);\n if (focusedIndex !== -1) {\n this.handleItemSelect(focusedIndex + skip, state);\n }\n else {\n this.triggerOnChange(null, state);\n if (this.state.text !== undefined) {\n state.data.text = undefined;\n }\n }\n if (opened) {\n this.base.togglePopup(state);\n }\n return this.applyState(state);\n };\n ComboBoxWithoutContext.prototype.renderAdaptiveListContainer = function () {\n var _a;\n var _this = this;\n var _b = this.state.windowWidth, windowWidth = _b === void 0 ? 0 : _b;\n var _c = this.props, header = _c.header, footer = _c.footer, size = _c.size, _d = _c.data, data = _d === void 0 ? [] : _d, groupField = _c.groupField, groupMode = _c.groupMode, list = _c.list, virtual = _c.virtual, adaptiveTitle = _c.adaptiveTitle, groupStickyHeaderItemRender = _c.groupStickyHeaderItemRender;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var group = this.state.group;\n if (group === undefined && groupField !== undefined) {\n group = getItemValue(data[0], groupField);\n }\n var actionSheetProps = {\n navigatable: false,\n navigatableElements: [],\n expand: opened,\n animation: true,\n onClose: function (event) { return _this.toggleBtnClick(event); },\n animationStyles: windowWidth <= MOBILE_SMALL_DEVISE ? { top: 0, width: '100%', height: '100%' } : undefined,\n className: windowWidth <= MOBILE_SMALL_DEVISE\n ? 'k-adaptive-actionsheet k-actionsheet-fullscreen'\n : 'k-adaptive-actionsheet k-actionsheet-bottom'\n };\n return (React.createElement(React.Fragment, null,\n React.createElement(ActionSheet, __assign({}, actionSheetProps),\n React.createElement(ActionSheetHeader, { className: 'k-text-center' },\n React.createElement(\"div\", { className: \"k-actionsheet-titlebar-group k-hbox\" },\n React.createElement(\"div\", { className: \"k-actionsheet-title\" },\n React.createElement(\"div\", null, adaptiveTitle)),\n React.createElement(\"div\", { className: \"k-actionsheet-actions\" },\n React.createElement(Button, { tabIndex: 0, \"aria-label\": \"Cancel\", \"aria-disabled\": \"false\", type: \"button\", fillMode: \"flat\", onClick: this.toggleBtnClick, icon: 'x', svgIcon: xIcon }))),\n React.createElement(\"div\", { className: \"k-actionsheet-titlebar-group k-actionsheet-filter\" }, this.renderMobileListFilter())),\n React.createElement(ActionSheetContent, { className: '!k-overflow-hidden' },\n React.createElement(\"div\", { className: 'k-list-container' },\n React.createElement(\"div\", { className: classNames((_a = {},\n _a['k-list'] = !list,\n _a['k-list-lg'] = true,\n _a['k-virtual-list'] = virtual,\n _a['k-data-table'] = list,\n _a[\"k-table-\".concat(sizeMap[size] || size)] = list && size,\n _a)) },\n header && React.createElement(\"div\", { className: \"k-table-header\" }, header),\n !list && group && data.length !== 0 && React.createElement(GroupStickyHeader, { group: group, groupMode: groupMode, render: groupStickyHeaderItemRender }),\n this.renderList(),\n footer && React.createElement(\"div\", { className: \"k-list-footer\" }, footer)))))));\n };\n ComboBoxWithoutContext.prototype.renderListContainer = function () {\n var _a, _b;\n var base = this.base;\n var _c = this.props, dir = _c.dir, header = _c.header, footer = _c.footer, _d = _c.data, data = _d === void 0 ? [] : _d, groupField = _c.groupField, groupMode = _c.groupMode, size = _c.size, list = _c.list, virtual = _c.virtual, groupStickyHeaderItemRender = _c.groupStickyHeaderItemRender;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var popupSettings = base.getPopupSettings();\n var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n var group = this.state.group;\n if (group === undefined && groupField !== undefined) {\n group = getItemValue(data[0], groupField);\n }\n return (React.createElement(ListContainer, { width: popupWidth, popupSettings: {\n animate: popupSettings.animate,\n anchor: this.element,\n show: opened,\n popupClass: classNames(popupSettings.popupClass, 'k-list-container', 'k-combobox-popup'),\n className: popupSettings.className,\n appendTo: popupSettings.appendTo\n }, dir: dir !== undefined ? dir : this.base.dirCalculated, itemsCount: [data.length] },\n React.createElement(\"div\", { className: classNames((_a = {},\n _a['k-list'] = !list,\n _a[\"k-list-\".concat(sizeMap[size] || size)] = !list && size,\n _a['k-virtual-list'] = virtual,\n _a['k-data-table'] = list,\n _a[\"k-table-\".concat(sizeMap[size] || size)] = list && size,\n _a)) },\n header && React.createElement(\"div\", { className: \"k-table-header\" }, header),\n !list && group && data.length !== 0 && React.createElement(GroupStickyHeader, { group: group, groupMode: groupMode, render: groupStickyHeaderItemRender }),\n this.renderList(),\n footer &&\n React.createElement(\"div\", { className: classNames((_b = {},\n _b['k-list-footer'] = !this.props.footerClassName,\n _b), this.props.footerClassName) }, footer))));\n };\n ComboBoxWithoutContext.prototype.renderList = function () {\n var _a;\n var _this = this;\n var base = this.base;\n var _b = this.props, textField = _b.textField, dataItemKey = _b.dataItemKey, listNoDataRender = _b.listNoDataRender, itemRender = _b.itemRender, groupHeaderItemRender = _b.groupHeaderItemRender, _c = _b.data, data = _c === void 0 ? [] : _c, _d = _b.virtual, virtual = _d === void 0 ? { skip: 0 } : _d;\n var popupSettings = base.getPopupSettings();\n var vs = base.vs;\n var skip = virtual.skip;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var translate = \"translateY(\".concat(vs.translate, \"px)\");\n var focusedIndex = opened ? this.getFocusedIndex() : undefined;\n var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n var selectedItemText = getItemValue(this.value, textField);\n var value = isPresent(text) && text !== selectedItemText ? null : this.value;\n var ListComponent = this.props.list || List;\n return (React.createElement(ListComponent, { id: base.listBoxId, virtual: Boolean(virtual), show: opened, data: data, focusedIndex: focusedIndex, value: value, textField: textField, valueField: dataItemKey, groupField: this.props.groupField, groupMode: this.props.groupMode, isMultiColumn: this.props.isMultiColumn, optionsGuid: base.guid, listRef: function (list) { vs.list = _this.base.list = list; _this.itemHeight = 0; }, wrapperStyle: (this.state.windowWidth && this.state.windowWidth > MOBILE_MEDIUM_DEVISE)\n ? { maxHeight: popupSettings.height }\n : {}, wrapperCssClass: classNames('k-list-content', (_a = {},\n _a['k-list-scroller'] = !virtual,\n _a)), listStyle: vs.enabled ? { transform: translate } : undefined, key: \"listkey\", skip: skip, onClick: this.handleItemClick, itemRender: itemRender, groupHeaderItemRender: groupHeaderItemRender, noDataRender: listNoDataRender, onMouseDown: function (e) { return e.preventDefault(); }, onScroll: this.onScroll, wrapperRef: vs.scrollerRef, scroller: this.base.renderScrollElement() }));\n };\n ComboBoxWithoutContext.prototype.renderSearchBar = function (text, id, placeholder) {\n var _this = this;\n var _a = this.props, tabIndex = _a.tabIndex, disabled = _a.disabled, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var value = this.value;\n var selectedIndex = Math.max(0, data.findIndex(function (i) { return areSame(i, value, dataItemKey); }));\n if (this._suggested && !areSame(this._valueOnDidUpdate, value, dataItemKey)) {\n this._suggested = '';\n }\n return (React.createElement(SearchBar, { id: id, readOnly: (opened && this.mobileMode), placeholder: placeholder, tabIndex: tabIndex, title: this.props.title, accessKey: this.props.accessKey, value: text + this._suggested, suggestedText: this._suggested, ref: function (el) { return _this._input = el && el.input; }, onClick: this.onInputClick, onKeyDown: this.onInputKeyDown, onChange: this.inputOnChange, onFocus: this.base.handleFocus, onBlur: this.handleBlur, disabled: disabled, expanded: opened, owns: this.base.listBoxId, activedescendant: \"option-\".concat(this.base.guid, \"-\").concat(selectedIndex + virtual.skip), role: \"combobox\", ariaLabelledBy: this.props.ariaLabelledBy, ariaDescribedBy: this.props.ariaDescribedBy, ariaRequired: this.required, render: this.props.valueRender }));\n };\n ComboBoxWithoutContext.prototype.clearValue = function () {\n var state = this.base.initState();\n this._suggested = '';\n this.base.filterChanged('', state);\n if (this.props.filter === undefined && this.state.text !== undefined) {\n state.data.text = undefined;\n }\n this.triggerOnChange(null, state);\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var isAdaptive = this.mobileMode;\n if (opened && !isAdaptive) {\n this.base.togglePopup(state);\n }\n this.applyState(state);\n };\n ComboBoxWithoutContext.prototype.triggerOnChange = function (item, state) {\n var value = this.value;\n if ((!isPresent(value) && !isPresent(item)) || areSame(value, item, this.props.dataItemKey)) {\n return;\n }\n if (this.props.value === undefined) {\n state.data.value = item;\n }\n this._valueDuringOnChange = item;\n state.events.push({ type: 'onChange' });\n };\n ComboBoxWithoutContext.prototype.getFocusedIndex = function () {\n var value = this.value;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, _d = _a.focusedItemIndex, focusedItemIndex = _d === void 0 ? itemIndexStartsWith : _d, skipDisabledItems = _a.skipDisabledItems;\n var text = this.props.filter ? this.props.filter : this.state.text;\n if (isPresent(value) && text === undefined) {\n return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n }\n else if (text) {\n return focusedItemIndex(data, text, textField);\n }\n else if (skipDisabledItems && textField && !text && virtual.skip === 0) {\n return data.findIndex(function (i) { return !i.disabled && i[textField]; });\n }\n else {\n return virtual.skip === 0 ? 0 : -1;\n }\n };\n ComboBoxWithoutContext.prototype.suggestValue = function (value) {\n var _a = this.props, data = _a.data, textField = _a.textField;\n this._suggested = suggestValue(value, data, textField);\n };\n ComboBoxWithoutContext.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueDuringOnChange = undefined;\n };\n ComboBoxWithoutContext.prototype.calculateMedia = function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n this.setState({ windowWidth: entry.target.clientWidth });\n }\n ;\n };\n ;\n ComboBoxWithoutContext.displayName = 'ComboBox';\n /** @hidden */\n ComboBoxWithoutContext.propTypes = __assign(__assign({}, DropDownBase.propTypes), { size: PropTypes.oneOf([null, 'small', 'medium', 'large']), rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']), fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline']), dataItemKey: PropTypes.string, groupField: PropTypes.string, groupMode: PropTypes.oneOf([undefined, 'classic', 'modern']), isMultiColumn: PropTypes.bool, suggest: PropTypes.bool, placeholder: PropTypes.string, title: PropTypes.string, allowCustom: PropTypes.bool, clearButton: PropTypes.bool, iconClassName: PropTypes.string, svgIcon: svgIconPropType, validationMessage: PropTypes.string, required: PropTypes.bool, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string, list: PropTypes.any, valueRender: PropTypes.func, skipDisabledItems: PropTypes.bool });\n /** @hidden */\n ComboBoxWithoutContext.defaultProps = __assign(__assign({}, DropDownBase.defaultProps), { size: 'medium', rounded: 'medium', fillMode: 'solid', allowCustom: false, clearButton: true, required: false, groupMode: 'modern', isMultiColumn: false, skipDisabledItems: true });\n return ComboBoxWithoutContext;\n}(React.Component));\nexport { ComboBoxWithoutContext };\n/**\n * Represents the PropsContext of the `ComboBox` component.\n * Used for global configuration of all `ComboBox` instances.\n *\n * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.\n */\nexport var ComboBoxPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact ComboBox component]({% slug overview_combobox %}).\n *\n * Accepts properties of type [ComboBoxProps]({% slug api_dropdowns_comboboxprops %}).\n * Obtaining the `ref` returns an object of type [ComboBoxHandle]({% slug api_dropdowns_comboboxhandle %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * combobox = null;\n * render() {\n * return (\n *
    \n * this.combobox = component}\n * />\n * \n *
    \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var ComboBox = withPropsContext(ComboBoxPropsContext, ComboBoxWithoutContext);\nComboBox.displayName = 'KendoReactComboBox';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getItemValue } from './utils';\nvar preventDefault = function (e) { return e.preventDefault(); };\n/**\n * @hidden\n */\nvar ListDefaultItem = /** @class */ (function (_super) {\n __extends(ListDefaultItem, _super);\n function ListDefaultItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListDefaultItem.prototype.render = function () {\n var _a = this.props, selected = _a.selected, defaultItem = _a.defaultItem, textField = _a.textField;\n return (React.createElement(\"div\", { onClick: this.props.onClick, onMouseDown: preventDefault, style: { position: 'unset' }, className: classNames('k-list-optionlabel', {\n 'k-selected': selected\n }) }, getItemValue(defaultItem, textField) || ''));\n };\n return ListDefaultItem;\n}(React.Component));\nexport default ListDefaultItem;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, getTabIndex, createPropsContext, withPropsContext, kendoThemeMaps, IconWrap, svgIconPropType, guid } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { caretAltDownIcon, xIcon } from '@progress/kendo-svg-icons';\nimport ListContainer from '../common/ListContainer';\nimport ListFilter from '../common/ListFilter';\nimport GroupStickyHeader from '../common/GroupStickyHeader';\nimport ListDefaultItem from '../common/ListDefaultItem';\nimport List from '../common/List';\nimport DropDownBase from '../common/DropDownBase';\nimport { isPresent, getItemValue, sameCharsOnly, shuffleData, matchText, areSame, itemIndexStartsWith } from '../common/utils';\nimport { validatePackage, canUseDOM } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { provideLocalizationService } from '@progress/kendo-react-intl';\nimport { dropDownListArrowBtnAriaLabel, messages } from '../messages';\nimport { MOBILE_SMALL_DEVISE, MOBILE_MEDIUM_DEVISE } from '../common/constants';\nimport { ActionSheet, ActionSheetContent, ActionSheetHeader } from '@progress/kendo-react-layout';\nvar VALIDATION_MESSAGE = 'Please select a value from the list!';\nvar sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;\n/**\n * @hidden\n */\nvar DropDownListWithoutContext = /** @class */ (function (_super) {\n __extends(DropDownListWithoutContext, _super);\n function DropDownListWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {};\n _this._element = null;\n _this.base = new DropDownBase(_this);\n _this.searchState = { word: '', last: '' };\n _this._select = null;\n _this._skipFocusEvent = false;\n _this._filterInput = null;\n _this._navigated = false;\n _this._lastKeypressIsFilter = false;\n _this._inputId = guid();\n _this.itemHeight = 0;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this.base.wrapper) {\n _this.base.wrapper.focus();\n }\n };\n /**\n * @hidden\n */\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual, dataItemKey = _a.dataItemKey, defaultItem = _a.defaultItem;\n var skip = virtual ? virtual.skip : 0;\n var item = (index === -1 && defaultItem !== undefined) ?\n defaultItem : data[index - skip];\n var newSelected = !areSame(item, _this.value, dataItemKey);\n _this.triggerOnChange(item, state);\n if (newSelected) {\n _this.base.triggerPageChangeCornerItems(item, state);\n }\n };\n _this.componentRef = function (element) {\n _this._element = element;\n _this.base.wrapper = element;\n };\n _this.dummySelect = function (value) {\n /* Dummy component to support forms */\n return (React.createElement(\"select\", { name: _this.props.name, ref: function (el) { _this._select = el; }, tabIndex: -1, \"aria-hidden\": true, title: _this.props.label, style: { opacity: 0, width: 1, border: 0, zIndex: -1, position: 'absolute', left: '50%' } },\n React.createElement(\"option\", { value: _this.props.valueMap ? _this.props.valueMap.call(undefined, value) : value })));\n };\n _this.renderListContainer = function () {\n var _a;\n var _b = _this.props, header = _b.header, footer = _b.footer, dir = _b.dir, _c = _b.data, data = _c === void 0 ? [] : _c, size = _b.size, groupField = _b.groupField, groupStickyHeaderItemRender = _b.groupStickyHeaderItemRender, list = _b.list;\n var base = _this.base;\n var popupSettings = base.getPopupSettings();\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n var listContainerProps = {\n dir: dir !== undefined ? dir : base.dirCalculated,\n width: popupWidth,\n popupSettings: {\n popupClass: classNames(popupSettings.popupClass, 'k-list-container', 'k-dropdownlist-popup'),\n className: popupSettings.className,\n animate: popupSettings.animate,\n anchor: _this.element,\n show: opened,\n onOpen: _this.onPopupOpened,\n onClose: _this.onPopupClosed,\n appendTo: popupSettings.appendTo\n },\n itemsCount: [data.length]\n };\n var group = _this.state.group;\n if (group === undefined && groupField !== undefined) {\n group = getItemValue(data[0], groupField);\n }\n return (React.createElement(ListContainer, __assign({}, listContainerProps),\n _this.renderListFilter(),\n header && React.createElement(\"div\", { className: \"k-list-header\" }, header),\n React.createElement(\"div\", { className: classNames('k-list', (_a = {}, _a[\"k-list-\".concat(sizeMap[size] || size)] = size, _a['k-virtual-list'] = _this.base.vs.enabled, _a)) },\n _this.renderDefaultItem(),\n !list && group && data.length !== 0 && React.createElement(GroupStickyHeader, { group: group, groupMode: 'modern', render: groupStickyHeaderItemRender }),\n _this.renderList()),\n footer && React.createElement(\"div\", { className: \"k-list-footer\" }, footer)));\n };\n _this.renderList = function () {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, groupHeaderItemRender = _a.groupHeaderItemRender, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender;\n var vs = _this.base.vs;\n var skip = virtual.skip;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var popupSettings = _this.base.getPopupSettings();\n var translate = \"translateY(\".concat(vs.translate, \"px)\");\n return (React.createElement(List, { id: _this.base.listBoxId, show: opened, data: data.slice(), focusedIndex: _this.getFocusedIndex(), value: _this.value, textField: textField, valueField: dataItemKey, optionsGuid: _this.base.guid, groupField: _this.props.groupField, groupMode: 'modern', listRef: function (list) { return vs.list = _this.base.list = list; }, wrapperStyle: { maxHeight: popupSettings.height }, wrapperCssClass: \"k-list-content\", listStyle: vs.enabled ? { transform: translate } : undefined, key: \"listkey\", skip: skip, onClick: _this.handleItemClick, itemRender: itemRender, groupHeaderItemRender: groupHeaderItemRender, noDataRender: listNoDataRender, onScroll: _this.onScroll, wrapperRef: vs.scrollerRef, scroller: _this.base.renderScrollElement() }));\n };\n _this.onScroll = function (event) {\n var _a = _this.base, vs = _a.vs, list = _a.list;\n vs.scrollHandler(event);\n var groupField = _this.props.groupField;\n var _b = _this.props.data, data = _b === void 0 ? [] : _b;\n if (!groupField || !data.length) {\n return;\n }\n if (groupField) {\n var itemHeight = _this.itemHeight =\n _this.itemHeight || (vs.enabled ? vs.itemHeight : (list ? list.children[0].offsetHeight : 0));\n var target = event.target;\n var scrollTop = target.scrollTop - (vs.skip * itemHeight);\n data = _this.base.getGroupedDataModernMode(data, groupField);\n var group = data[0][groupField];\n for (var i = 1; i < data.length; i++) {\n if (itemHeight * i > scrollTop) {\n break;\n }\n if (data[i] && data[i][groupField]) {\n group = data[i][groupField];\n }\n }\n if (group !== _this.state.group) {\n _this.setState({\n group: group\n });\n }\n }\n };\n _this.renderListFilter = function () {\n var filterText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n return _this.props.filterable && (React.createElement(ListFilter, { value: filterText, ref: function (filter) { return _this._filterInput = filter && filter.element; }, onChange: _this.handleListFilterChange, onKeyDown: _this.handleKeyDown, size: _this.props.size, rounded: _this.props.rounded, fillMode: _this.props.fillMode }));\n };\n _this.renderDefaultItem = function () {\n var _a = _this.props, textField = _a.textField, defaultItem = _a.defaultItem, dataItemKey = _a.dataItemKey;\n return defaultItem !== undefined && (React.createElement(ListDefaultItem, { defaultItem: defaultItem, textField: textField, selected: areSame(_this.value, defaultItem, dataItemKey), key: \"defaultitemkey\", onClick: _this.handleDefaultItemClick }));\n };\n _this.search = function (event) {\n clearTimeout(_this._typingTimeout);\n if (!_this.props.filterable) {\n _this._typingTimeout = window.setTimeout(function () { return _this.searchState.word = ''; }, _this.props.delay);\n _this.selectNext(event);\n }\n };\n _this.selectNext = function (event) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n var mappedData = data.map(function (item, idx) {\n return { item: item, itemIndex: idx };\n });\n var word = _this.searchState.word;\n var last = _this.searchState.last;\n var isInLoop = sameCharsOnly(word, last);\n var dataLength = mappedData.length;\n var startIndex = Math.max(0, data.findIndex(function (i) { return areSame(i, _this.value, dataItemKey); }));\n var defaultItem;\n if (_this.props.defaultItem) {\n defaultItem = { item: _this.props.defaultItem, itemIndex: -1 };\n dataLength += 1;\n startIndex += 1;\n }\n startIndex += isInLoop ? 1 : 0;\n mappedData = shuffleData(mappedData, startIndex, defaultItem);\n var text, loopMatch, nextMatch, index = 0;\n var _c = _this.props, textField = _c.textField, ignoreCase = _c.ignoreCase;\n for (; index < dataLength; index++) {\n text = getItemValue(mappedData[index].item, textField);\n loopMatch = isInLoop && matchText(text, last, ignoreCase);\n nextMatch = matchText(text, word, ignoreCase);\n if (loopMatch || nextMatch) {\n index = mappedData[index].itemIndex;\n break;\n }\n }\n if (index !== dataLength) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n _this.handleItemSelect(index, state);\n _this.applyState(state);\n _this._valueDuringOnChange = undefined;\n }\n };\n _this.handleKeyDown = function (event) {\n // The following added here to prevent the propagation of the keyDown event when the filter prop is set to true\n event && event.stopPropagation && event.stopPropagation();\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, filterable = _a.filterable, disabled = _a.disabled, defaultItem = _a.defaultItem, _c = _a.leftRightKeysNavigation, leftRightKeysNavigation = _c === void 0 ? true : _c, _d = _a.virtual, virtual = _d === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _d, dataItemKey = _a.dataItemKey, _e = _a.groupField, groupField = _e === void 0 ? '' : _e, textField = _a.textField, _f = _a.skipDisabledItems, skipDisabledItems = _f === void 0 ? true : _f;\n var value = _this.value;\n var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var keyCode = event.keyCode;\n var homeOrEndKeys = keyCode === Keys.home || keyCode === Keys.end;\n var upOrDownKeys = keyCode === Keys.up || keyCode === Keys.down;\n var shouldOpen = !opened &&\n ((event.altKey && keyCode === Keys.down) || keyCode === Keys.enter || keyCode === Keys.space);\n var shouldClose = opened && ((event.altKey && keyCode === Keys.up) || keyCode === Keys.esc);\n var leftOrRightKeys = leftRightKeysNavigation && (keyCode === Keys.left || keyCode === Keys.right);\n var shouldNavigate = upOrDownKeys || (leftOrRightKeys && !filterable) || homeOrEndKeys;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (disabled) {\n return;\n }\n else if (homeOrEndKeys && _this.base.vs.enabled) {\n if (keyCode === Keys.home) {\n if (virtual.skip !== 0) {\n _this.base.triggerOnPageChange(state, 0, virtual.pageSize);\n _this._navigated = true;\n }\n else {\n _this.triggerOnChange(data[0], state);\n }\n }\n else {\n if (virtual.skip < virtual.total - virtual.pageSize) {\n _this.base.triggerOnPageChange(state, virtual.total - virtual.pageSize, virtual.pageSize);\n _this._navigated = true;\n }\n else {\n _this.triggerOnChange(data[data.length - 1], state);\n }\n }\n }\n else if (opened && keyCode === Keys.pageUp) {\n _this.base.scrollPopupByPageSize(-1);\n }\n else if (opened && keyCode === Keys.pageDown) {\n _this.base.scrollPopupByPageSize(1);\n }\n else if (opened && keyCode === Keys.enter) {\n var focusedIndex = _this.getFocusedIndex();\n if (_this.haveFocusedItemAndDataNotEmpty(data, focusedIndex)) {\n _this.triggerOnChange(null, state);\n _this.applyState(state);\n }\n else {\n _this.handleItemSelect(focusedIndex, state);\n }\n _this.base.togglePopup(state);\n event.preventDefault();\n }\n else if (shouldOpen || shouldClose) {\n if (shouldClose) {\n _this.resetValueIfDisabledItem();\n }\n _this.base.togglePopup(state);\n event.preventDefault();\n }\n else if (shouldNavigate) {\n _this._lastKeypressIsFilter = false;\n if (groupField !== '' && textField) {\n if (!skipDisabledItems && opened) {\n _this.onNavigate(state, keyCode);\n }\n else {\n var newIndex = undefined;\n if (keyCode === Keys.down || keyCode === Keys.right) {\n var tempnewIndex_1 = data.slice(selectedIndex + 1).find(function (i) { return !i.disabled && i[textField]; });\n newIndex = tempnewIndex_1 && data.findIndex(function (el) { return el[textField] === tempnewIndex_1[textField]; });\n }\n else if (keyCode === Keys.up || keyCode === Keys.left) {\n var dataToSearch = void 0;\n if (selectedIndex === 0 && defaultItem) {\n newIndex = -1;\n }\n else if (selectedIndex === -1) {\n dataToSearch = data;\n newIndex = data.findIndex(function (i) { return !i.disabled && i[textField]; });\n }\n else {\n dataToSearch = data.slice(0, selectedIndex);\n var tempnewIndex_2 = dataToSearch.pop();\n while (tempnewIndex_2 && tempnewIndex_2.disabled) {\n tempnewIndex_2 = dataToSearch.pop();\n }\n newIndex = tempnewIndex_2 && data.findIndex(function (el) { return el[textField] === tempnewIndex_2[textField]; });\n }\n }\n if (newIndex !== undefined) {\n var skipItems = newIndex - selectedIndex;\n _this.onNavigate(state, keyCode, skipItems);\n }\n else if (newIndex === undefined && data.findIndex(function (el) { return el[textField] === value[textField]; }) === data.length - 1) {\n _this.onNavigate(state, keyCode);\n }\n }\n }\n else if (!skipDisabledItems && opened || homeOrEndKeys) {\n _this.onNavigate(state, keyCode);\n }\n else if (textField) {\n var newIndex = undefined;\n if (keyCode === Keys.down || keyCode === Keys.right) {\n var tempnewIndex_3 = data.slice(selectedIndex + 1).find(function (i) { return !i.disabled && i[textField]; });\n newIndex = tempnewIndex_3 && data.findIndex(function (el) { return el[textField] === tempnewIndex_3[textField]; });\n }\n else if (keyCode === Keys.up || keyCode === Keys.left) {\n var dataTest = void 0;\n if (selectedIndex === 0 && defaultItem) {\n newIndex = -1;\n }\n else if (selectedIndex === -1) {\n dataTest = data;\n newIndex = data.find(function (i) { return !i.disabled && i[textField]; });\n }\n else {\n dataTest = data.slice(0, selectedIndex);\n var tempnewIndex_4 = dataTest.pop();\n while (tempnewIndex_4 && tempnewIndex_4.disabled) {\n tempnewIndex_4 = dataTest.pop();\n }\n newIndex = tempnewIndex_4 && data.findIndex(function (el) { return el[textField] === tempnewIndex_4[textField]; });\n }\n }\n if (newIndex !== undefined) {\n var skipItems = newIndex - selectedIndex;\n _this.onNavigate(state, keyCode, skipItems);\n }\n else if (newIndex === undefined && data.findIndex(function (el) { return el[textField] === value[textField]; }) === data.length - 1) {\n _this.onNavigate(state, keyCode);\n }\n }\n else {\n _this.onNavigate(state, keyCode);\n }\n event.preventDefault();\n }\n _this.applyState(state);\n };\n _this.handleItemClick = function (index, event) {\n _this.base.handleItemClick(index, event);\n _this._valueDuringOnChange = undefined;\n };\n _this.handleFocus = function (event) {\n if (_this._skipFocusEvent) {\n return;\n }\n _this.base.handleFocus(event);\n };\n _this.handleBlur = function (event) {\n if (_this._skipFocusEvent || !_this.state.focused) {\n return;\n }\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var adaptive = _this.props.adaptive;\n var _a = _this.state.windowWidth, windowWidth = _a === void 0 ? 0 : _a;\n var renderAdaptive = windowWidth <= MOBILE_MEDIUM_DEVISE && adaptive;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n state.data.focused = false;\n state.events.push({ type: 'onBlur' });\n if (opened) {\n _this.resetValueIfDisabledItem();\n }\n if (opened && !renderAdaptive) {\n _this.base.togglePopup(state);\n }\n _this.applyState(state);\n };\n _this.handleDefaultItemClick = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n _this.base.togglePopup(state);\n _this.triggerOnChange(_this.props.defaultItem, state);\n _this.applyState(state);\n };\n _this.handleWrapperClick = function (event) {\n if (event.isPropagationStopped()) {\n return;\n }\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (!_this.state.focused) {\n state.data.focused = true;\n }\n _this.resetValueIfDisabledItem();\n _this.base.togglePopup(state);\n _this.applyState(state);\n };\n _this.handleKeyPress = function (event) {\n if (_this.props.filterable || event.which === 0 || event.keyCode === Keys.enter) {\n return;\n }\n var character = String.fromCharCode(event.charCode || event.keyCode);\n if (_this.props.ignoreCase) {\n character = character.toLowerCase();\n }\n if (character === ' ') {\n event.preventDefault();\n }\n _this.searchState = {\n word: _this.searchState.word + character,\n last: _this.searchState.last + character\n };\n _this.search(event);\n };\n _this.handleListFilterChange = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event.syntheticEvent;\n if (_this.props.filter === undefined) {\n state.data.text = event.target.value;\n }\n _this.base.filterChanged(event.target.value, state);\n _this._lastKeypressIsFilter = true;\n _this.applyState(state);\n _this.setState({ group: undefined });\n };\n _this.onPopupOpened = function () {\n if (_this._filterInput) {\n _this.focusElement(_this._filterInput);\n }\n if (_this.props.adaptive) {\n setTimeout(function () {\n if (_this._filterInput) {\n _this.focusElement(_this._filterInput);\n }\n }, 300);\n }\n };\n _this.onPopupClosed = function () {\n if (_this.state.focused) {\n window.setTimeout(function () {\n if (_this.state.focused && _this.base.wrapper) {\n _this.focusElement(_this.base.wrapper);\n }\n });\n }\n };\n _this.setValidity = function () {\n if (_this._select && _this._select.setCustomValidity) {\n _this._select.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(DropDownListWithoutContext.prototype, \"document\", {\n get: function () {\n if (!canUseDOM) {\n return;\n }\n // useful only for user actions\n return (this.element && this.element.ownerDocument) || document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"value\", {\n /**\n * The value of the DropDownList.\n */\n get: function () {\n var value;\n if (this._valueDuringOnChange !== undefined) {\n value = this._valueDuringOnChange;\n }\n else if (this.props.value !== undefined) {\n value = this.props.value;\n }\n else if (this.state.value !== undefined) {\n value = this.state.value;\n }\n else if (this.props.defaultValue !== undefined) {\n value = this.props.defaultValue;\n }\n if (!isPresent(value) && this.props.defaultItem !== undefined) {\n value = this.props.defaultItem;\n }\n return value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"index\", {\n /**\n * The index of the selected item.\n */\n get: function () {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n var value = this.value;\n // TO DO: deprecate it!\n return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the DropDownList.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DropDownList is set.\n */\n get: function () {\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required\n || (this.value !== null && this.value !== '' && this.value !== undefined));\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"validityStyles\", {\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : DropDownListWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DropDownListWithoutContext.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : DropDownListWithoutContext.defaultProps.required;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n DropDownListWithoutContext.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a;\n var _b = this.props, dataItemKey = _b.dataItemKey, virtual = _b.virtual, _c = _b.groupField, groupField = _c === void 0 ? '' : _c, textField = _b.textField;\n var _d = this.props.data, data = _d === void 0 ? [] : _d;\n var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n var opening = !prevOpened && opened;\n var closing = prevOpened && !opened;\n if (!this.base.getPopupSettings().animate) {\n if (opening) {\n this.onPopupOpened();\n }\n else if (closing) {\n // this.onPopupClosed();\n }\n }\n if (virtual && virtual.total !== prevTotal) {\n this.base.vs.calcScrollElementHeight();\n this.base.vs.reset();\n }\n else {\n var selectedItem_1 = this.value;\n var prevSelectedItem = prevProps.value !== undefined ? prevProps.value : prevState.value;\n var selectedItemIndex = data.findIndex(function (i) { return areSame(i, selectedItem_1, dataItemKey); });\n if (groupField !== '' && selectedItem_1 && textField) {\n selectedItemIndex = (_a = this.base.getGroupedDataModernMode(data, groupField)) === null || _a === void 0 ? void 0 : _a.map(function (el) { return el[textField]; }).indexOf(selectedItem_1[textField]);\n }\n var selectedItemChanged = !areSame(prevSelectedItem, selectedItem_1, dataItemKey);\n if (opening && virtual) {\n this.base.scrollToVirtualItem(virtual, selectedItemIndex);\n }\n else if (opening && !virtual) {\n this.onPopupOpened();\n // Resets the sticky header group value for scenarios with open/close of component's popup\n if (data && data.length !== 0) {\n this.base.resetGroupStickyHeader(data[0][groupField], this);\n }\n this.base.scrollToItem(selectedItemIndex);\n }\n else if (opened && prevOpened && selectedItem_1 && selectedItemChanged && !this._navigated) {\n this.base.scrollToItem(selectedItemIndex);\n }\n else if (opened && prevOpened && this._navigated) {\n if (this._navigated && virtual && virtual.skip === 0) {\n this.base.vs.reset();\n }\n else if (this._navigated && virtual && virtual.skip === virtual.total - virtual.pageSize) {\n this.base.vs.scrollToEnd();\n }\n }\n }\n this._navigated = false;\n this.setValidity();\n };\n /**\n * @hidden\n */\n DropDownListWithoutContext.prototype.componentDidMount = function () {\n var _a;\n this.observerResize = canUseDOM && window.ResizeObserver && new window.ResizeObserver(this.calculateMedia.bind(this));\n this.base.didMount();\n this.setValidity();\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.observe(this.document.body);\n }\n };\n /** @hidden */\n DropDownListWithoutContext.prototype.componentWillUnmount = function () {\n var _a;\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.disconnect();\n }\n };\n /**\n * @hidden\n */\n DropDownListWithoutContext.prototype.render = function () {\n var _a;\n var _this = this;\n var btnAriaLabel = provideLocalizationService(this).toLanguageString(dropDownListArrowBtnAriaLabel, messages[dropDownListArrowBtnAriaLabel]);\n var _b = this.props, style = _b.style, className = _b.className, label = _b.label, dir = _b.dir, virtual = _b.virtual, size = _b.size, rounded = _b.rounded, fillMode = _b.fillMode, adaptive = _b.adaptive;\n var _c = this.state.windowWidth, windowWidth = _c === void 0 ? 0 : _c;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var value = this.value;\n var text = getItemValue(value, this.props.textField);\n var isValid = !this.validityStyles || this.validity.valid;\n var base = this.base;\n var vs = base.vs;\n var renderAdaptive = windowWidth <= MOBILE_MEDIUM_DEVISE && adaptive;\n vs.enabled = virtual !== undefined;\n if (virtual !== undefined) {\n base.vs.skip = virtual.skip;\n base.vs.total = virtual.total;\n base.vs.pageSize = virtual.pageSize;\n }\n var _d = this.props, dataItemKey = _d.dataItemKey, _e = _d.data, data = _e === void 0 ? [] : _e, disabled = _d.disabled, tabIndex = _d.tabIndex, loading = _d.loading, iconClassName = _d.iconClassName, valueRender = _d.valueRender;\n var focused = this.state.focused;\n var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n var valueDefaultRendering = (React.createElement(\"span\", { id: this._inputId, className: \"k-input-inner\" },\n React.createElement(\"span\", { className: \"k-input-value-text\" }, text)));\n var valueElement = valueRender !== undefined ?\n valueRender.call(undefined, valueDefaultRendering, value) : valueDefaultRendering;\n var dropdownlist = (React.createElement(React.Fragment, null,\n React.createElement(\"span\", { ref: this.componentRef, className: classNames('k-dropdownlist k-picker', className, (_a = {},\n _a[\"k-picker-\".concat(sizeMap[size] || size)] = size,\n _a[\"k-rounded-\".concat(roundedMap[rounded] || rounded)] = rounded,\n _a[\"k-picker-\".concat(fillMode)] = fillMode,\n _a['k-focus'] = focused,\n _a['k-disabled'] = disabled,\n _a['k-invalid'] = !isValid,\n _a['k-loading'] = loading,\n _a['k-required'] = this.required,\n _a)), style: !label\n ? style\n : __assign(__assign({}, style), { width: undefined }), dir: dir, onMouseDown: opened ? function (event) {\n if (event.target.nodeName !== 'INPUT') {\n _this.focusElement(_this.base.wrapper);\n event.preventDefault();\n }\n } : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, tabIndex: getTabIndex(tabIndex, disabled), accessKey: this.props.accessKey, onKeyDown: this.handleKeyDown, onKeyPress: this.handleKeyPress, onClick: disabled ? undefined : this.handleWrapperClick, role: 'combobox', \"aria-required\": this.required, \"aria-disabled\": disabled || undefined, \"aria-haspopup\": 'listbox', \"aria-expanded\": opened || false, \"aria-owns\": this.base.listBoxId, \"aria-activedescendant\": opened ? ('option-' + this.base.guid + '-' + (selectedIndex + (virtual ? virtual.skip : 0))) : undefined, \"aria-label\": this.props.ariaLabel || this.props.label, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy || this._inputId, id: this.props.id, title: this.props.title },\n valueElement,\n loading && React.createElement(IconWrap, { className: \"k-input-loading-icon\", name: 'loading' }),\n React.createElement(Button, { tabIndex: -1, type: \"button\", \"aria-label\": btnAriaLabel, \"aria-hidden\": true, size: size, fillMode: fillMode, iconClass: iconClassName, className: \"k-input-button\", rounded: null, themeColor: 'base', icon: !iconClassName ? 'caret-alt-down' : undefined, svgIcon: !iconClassName ? caretAltDownIcon : this.props.svgIcon, onMouseDown: function (e) { return _this.state.focused && e.preventDefault(); } }),\n this.dummySelect(value),\n !renderAdaptive && this.renderListContainer()),\n renderAdaptive && this.renderAdaptiveListContainer()));\n return label ? (React.createElement(FloatingLabel, { label: label, editorValue: text, editorValid: isValid, editorDisabled: this.props.disabled, style: { width: style ? style.width : undefined }, children: dropdownlist })) : dropdownlist;\n };\n /**\n * @hidden\n */\n DropDownListWithoutContext.prototype.onNavigate = function (state, keyCode, skipItems) {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, defaultItem = _a.defaultItem, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _c;\n var vs = this.base.vs;\n var value = this.value;\n var index = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n var newIndex = this.base.navigation.navigate({\n current: virtual.skip + index,\n max: (vs.enabled ? virtual.total : data.length) - 1,\n min: defaultItem !== undefined ? -1 : 0,\n keyCode: keyCode,\n skipItems: skipItems ? skipItems : undefined\n });\n if (newIndex !== undefined) {\n this.handleItemSelect(newIndex, state);\n }\n this.applyState(state);\n };\n DropDownListWithoutContext.prototype.renderAdaptiveListContainer = function () {\n var _a;\n var _this = this;\n var _b = this.state.windowWidth, windowWidth = _b === void 0 ? 0 : _b;\n var _c = this.props, header = _c.header, footer = _c.footer, size = _c.size, adaptiveTitle = _c.adaptiveTitle, groupField = _c.groupField, groupStickyHeaderItemRender = _c.groupStickyHeaderItemRender, list = _c.list, _d = _c.data, data = _d === void 0 ? [] : _d;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var actionSheetProps = {\n navigatable: false,\n navigatableElements: [],\n expand: opened,\n animation: true,\n onClose: function (event) { return _this.handleWrapperClick(event); },\n animationStyles: windowWidth <= MOBILE_SMALL_DEVISE ? { top: 0, width: '100%', height: '100%' } : undefined,\n className: windowWidth <= MOBILE_SMALL_DEVISE\n ? 'k-adaptive-actionsheet k-actionsheet-fullscreen'\n : 'k-adaptive-actionsheet k-actionsheet-bottom'\n };\n var group = this.state.group;\n if (group === undefined && groupField !== undefined) {\n group = getItemValue(data[0], groupField);\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(ActionSheet, __assign({}, actionSheetProps),\n React.createElement(ActionSheetHeader, { className: 'k-text-center' },\n React.createElement(\"div\", { className: \"k-actionsheet-titlebar-group k-hbox\" },\n React.createElement(\"div\", { className: \"k-actionsheet-title\" },\n React.createElement(\"div\", null, adaptiveTitle)),\n React.createElement(\"div\", { className: \"k-actionsheet-actions\" },\n React.createElement(Button, { tabIndex: 0, \"aria-label\": \"Cancel\", \"aria-disabled\": \"false\", type: \"button\", fillMode: \"flat\", onClick: this.handleWrapperClick, icon: 'x', svgIcon: xIcon }))),\n React.createElement(\"div\", { className: \"k-actionsheet-titlebar-group k-actionsheet-filter\" }, this.renderListFilter())),\n React.createElement(ActionSheetContent, { className: '!k-overflow-hidden' },\n header && React.createElement(\"div\", { className: \"k-list-header\" }, header),\n React.createElement(\"div\", { className: classNames('k-list', (_a = {}, _a[\"k-list-\".concat(sizeMap[size] || size)] = size, _a['k-virtual-list'] = this.base.vs.enabled, _a)) },\n this.renderDefaultItem(),\n !list && group && data.length !== 0 && React.createElement(GroupStickyHeader, { group: group, groupMode: 'modern', render: groupStickyHeaderItemRender }),\n this.renderList()),\n footer && React.createElement(\"div\", { className: \"k-list-footer\" }, footer)))));\n };\n DropDownListWithoutContext.prototype.getFocusedIndex = function () {\n var value = this.value;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, _d = _a.focusedItemIndex, focusedItemIndex = _d === void 0 ? itemIndexStartsWith : _d, filterable = _a.filterable, _e = _a.skipDisabledItems, skipDisabledItems = _e === void 0 ? true : _e;\n var text = this.props.filter ? this.props.filter : this.state.text;\n if (skipDisabledItems && textField && !text && !value) {\n return data.findIndex(function (i) { return !i.disabled && i[textField]; });\n }\n else if (isPresent(value) && text === undefined || filterable && text === '') {\n return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n }\n else if (text) {\n if (this._lastKeypressIsFilter) {\n return focusedItemIndex(data, text, textField);\n }\n return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n }\n else {\n return virtual.skip === 0 ? 0 : -1;\n }\n };\n DropDownListWithoutContext.prototype.focusElement = function (element) {\n var _this = this;\n this._skipFocusEvent = true;\n element.focus();\n window.setTimeout(function () { return _this._skipFocusEvent = false; }, 30);\n };\n DropDownListWithoutContext.prototype.triggerOnChange = function (item, state) {\n if (areSame(this.value, item, this.props.dataItemKey)) {\n return;\n }\n if (this.props.value === undefined) {\n state.data.value = item;\n }\n this._valueDuringOnChange = item;\n state.events.push({ type: 'onChange' });\n };\n DropDownListWithoutContext.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueDuringOnChange = undefined;\n };\n DropDownListWithoutContext.prototype.calculateMedia = function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n this.setState({ windowWidth: entry.target.clientWidth });\n }\n ;\n };\n ;\n DropDownListWithoutContext.prototype.resetValueIfDisabledItem = function () {\n var _a = this.props.data, data = _a === void 0 ? [] : _a;\n var state = this.base.initState();\n var focusedIndex = this.getFocusedIndex();\n if (this.haveFocusedItemAndDataNotEmpty(data, focusedIndex)) {\n this.triggerOnChange(null, state);\n this.applyState(state);\n }\n };\n DropDownListWithoutContext.prototype.haveFocusedItemAndDataNotEmpty = function (data, focusedIndex) {\n return focusedIndex !== undefined && focusedIndex !== -1 && data && data.length > 0 && data[focusedIndex].disabled;\n };\n DropDownListWithoutContext.displayName = 'DropDownList';\n /**\n * @hidden\n */\n DropDownListWithoutContext.propTypes = __assign({ delay: PropTypes.number, ignoreCase: PropTypes.bool, iconClassName: PropTypes.string, svgIcon: svgIconPropType, defaultItem: PropTypes.any, valueRender: PropTypes.func, valueMap: PropTypes.func, validationMessage: PropTypes.string, required: PropTypes.bool, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string, ariaLabel: PropTypes.string, leftRightKeysNavigation: PropTypes.bool, title: PropTypes.string, groupField: PropTypes.string, list: PropTypes.any, skipDisabledItems: PropTypes.bool }, DropDownBase.propTypes);\n /**\n * @hidden\n */\n DropDownListWithoutContext.defaultProps = __assign(__assign({ delay: 500, tabIndex: 0, ignoreCase: true }, DropDownBase.defaultProps), { required: false, size: 'medium', rounded: 'medium', fillMode: 'solid', groupMode: 'modern' });\n return DropDownListWithoutContext;\n}(React.Component));\nexport { DropDownListWithoutContext };\n/**\n * Represents the PropsContext of the `DropDownList` component.\n * Used for global configuration of all `DropDownList` instances.\n *\n * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.\n */\nexport var DropDownListPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact DropDownList component]({% slug overview_dropdownlist %}).\n *\n * Accepts properties of type [DropDownListProps]({% slug api_dropdowns_dropdownlistprops %}).\n * Obtaining the `ref` returns an object of type [DropDownListHandle]({% slug api_dropdowns_dropdownlisthandle %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * dropdownlist = null;\n * render() {\n * return (\n *
    \n * this.dropdownlist = component}\n * />\n * \n *
    \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var DropDownList = withPropsContext(DropDownListPropsContext, DropDownListWithoutContext);\nDropDownList.displayName = 'KendoReactDropDownList';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport List from './List';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var MultiColumnList = function (props) {\n return (React.createElement(List, __assign({}, props, { wrapperCssClass: \"k-table-body k-table-scroller\", listClassName: classNames('k-table k-table-list', {\n 'k-virtual-table': props.virtual !== undefined\n }), listStyle: __assign({}, props.listStyle) })));\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { PopupPropsContext } from '@progress/kendo-react-popup';\nimport { MultiColumnList } from './../common/MultiColumnList';\nimport { classNames, getScrollbarWidth, setScrollbarWidth, getter, usePropsContext, createPropsContext } from '@progress/kendo-react-common';\nimport { ComboBox, ComboBoxWithoutContext } from '../ComboBox/ComboBox';\nimport { getItemValue } from '../common/utils';\nvar columnWidth = function (width, defaultWidth) {\n if (width) {\n return typeof width === 'number' ? width + 'px' : width;\n }\n return defaultWidth;\n};\n/**\n * Represents the PropsContext of the `MultiColumnComboBox` component.\n * Used for global configuration of all `MultiColumnComboBox` instances.\n *\n * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.\n */\nexport var MultiColumnComboBoxPropsContext = createPropsContext();\n/**\n * Represents the MultiColumnComboBox component.\n *\n * Accepts properties of type [MultiColumnComboBoxProps]({% slug api_dropdowns_multicolumncomboboxprops %}).\n * Obtaining the `ref` returns an object of type [MultiColumnComboBoxHandle]({% slug api_dropdowns_multicolumncomboboxhandle %}).\n *\n * @example\n * ```jsx\n * const columns = [\n * {\n * field: \"id\",\n * header: \"ID\",\n * width: \"100px\",\n * },\n * {\n * field: \"name\",\n * header: \"Name\",\n * width: \"300px\",\n * },\n * {\n * field: \"position\",\n * header: \"Position\",\n * width: \"300px\",\n * },\n * ];\n * const App = () => {\n * return (\n *
    \n *
    Employees:
    \n * \n *
    \n * );\n * };\n * ReactDOM.render(, document.querySelector(\"my-app\"));\n * ```\n */\nexport var MultiColumnComboBox = React.forwardRef(function (directProps, ref) {\n var props = usePropsContext(MultiColumnComboBoxPropsContext, directProps);\n var target = React.useRef(null);\n var comboBoxRef = React.useRef(null);\n var scrollbarWidth = getScrollbarWidth();\n var _a = props.columns, columns = _a === void 0 ? defaultProps.columns : _a, _b = props.popupSettings, popupSettings = _b === void 0 ? defaultProps.popupSettings : _b, className = props.className, size = props.size, onOpen = props.onOpen, onClose = props.onClose, onFocus = props.onFocus, onBlur = props.onBlur, onChange = props.onChange, onFilterChange = props.onFilterChange, onPageChange = props.onPageChange, other = __rest(props, [\"columns\", \"popupSettings\", \"className\", \"size\", \"onOpen\", \"onClose\", \"onFocus\", \"onBlur\", \"onChange\", \"onFilterChange\", \"onPageChange\"]);\n React.useImperativeHandle(target, function () {\n return ({\n element: comboBoxRef.current && comboBoxRef.current.element,\n focus: function () {\n if (comboBoxRef.current) {\n comboBoxRef.current.focus();\n }\n },\n get value() { return comboBoxRef.current && comboBoxRef.current.value; },\n get name() { return comboBoxRef.current && comboBoxRef.current.name; },\n props: props\n });\n });\n React.useImperativeHandle(ref, function () { return target.current; });\n var initialGroupHeader = React.useMemo(function () {\n if (props.groupField !== undefined && props.data) {\n return getItemValue(props.data[0], props.groupField);\n }\n }, [props.data, props.groupField]);\n var _c = React.useState(initialGroupHeader), groupHeader = _c[0], setGroupHeader = _c[1];\n var _d = React.useState(true), showStickyHeader = _d[0], setShowStickyHeader = _d[1];\n var header = React.useMemo(function () {\n var renderer = (React.createElement(\"th\", { className: 'k-table-th', colSpan: columns.length }, groupHeader));\n return (React.createElement(React.Fragment, null,\n props.header,\n React.createElement(\"div\", { className: \"k-table-header-wrap\" },\n React.createElement(\"table\", { className: \"k-table\", role: \"presentation\" },\n React.createElement(\"colgroup\", null, columns.map(function (column, i) {\n return (React.createElement(\"col\", { key: column.uniqueKey ? column.uniqueKey : i, style: { width: column.width ? column.width : defaultProps.width } }));\n })),\n React.createElement(\"thead\", { className: 'k-table-thead' },\n React.createElement(\"tr\", { className: 'k-table-row' }, columns.map(function (column, i) {\n return (React.createElement(\"th\", { className: \"k-table-th\", key: column.uniqueKey ? column.uniqueKey : i }, column.header || '\\u00A0'));\n })),\n groupHeader && showStickyHeader && React.createElement(\"tr\", { className: 'k-table-group-row' }, props.groupStickyHeaderItemRender ? props.groupStickyHeaderItemRender.call(undefined, renderer, {}) : renderer))))));\n }, [props.header, columns, groupHeader, showStickyHeader]);\n var popupWidth = React.useMemo(function () {\n // These additional 4px are coming from the child elements side borders (fixes horizontal scrollbar)\n return \"calc(\".concat(columns.map(function (column) { return columnWidth(column.width, defaultProps.width); }).filter(Boolean).join(' + '), \" + \").concat(scrollbarWidth, \"px + 4px)\");\n }, [columns, scrollbarWidth]);\n var skip = props.virtual ? props.virtual.skip : 0;\n var itemRender = React.useCallback(function (li, liProps) {\n var children = columns.map(function (column, i) { return (React.createElement(\"span\", { className: !props.itemRender ? 'k-table-td' : undefined, style: !props.itemRender ? { width: column.width ? column.width : defaultProps.width } : undefined, key: column.uniqueKey ? column.uniqueKey : i }, column.field ? String(getter(column.field)(liProps.dataItem)) : '')); });\n var group = undefined;\n var curGroup, prevGroup, groupGetter, data = props.data || [];\n var index = liProps.index - skip;\n if (props.groupField !== undefined) {\n groupGetter = getter(props.groupField);\n curGroup = groupGetter(data[index]);\n prevGroup = groupGetter(data[index - 1]);\n if (curGroup && prevGroup && curGroup !== prevGroup) {\n group = curGroup;\n }\n }\n if (group && props.groupMode === 'classic') {\n children.push(React.createElement(\"div\", { key: \"group\", className: \"k-table-td k-table-group-td\" },\n React.createElement(\"span\", null, group)));\n }\n var rendering = React.cloneElement(li, __assign(__assign({}, li.props), { className: classNames('k-table-row', {\n 'k-table-alt-row': liProps.index % 2 !== 0,\n 'k-focus': liProps.focused,\n 'k-selected': liProps.selected,\n 'k-first': Boolean(group),\n 'k-disabled': liProps.dataItem.disabled\n }) }), children);\n return props.itemRender ? props.itemRender.call(undefined, rendering, liProps) : rendering;\n }, [columns, props.groupField, props.itemRender, props.data, skip]);\n var handleEvent = React.useCallback(function (handler, event) {\n if (handler) {\n handler.call(undefined, __assign(__assign({}, event), { target: target.current }));\n }\n }, []);\n var onOpenHandler = React.useCallback(function (event) {\n // Resets the sticky header group value for scenarios with open/close of component's popup\n if (!props.virtual) {\n setGroupHeader(initialGroupHeader);\n }\n ;\n return handleEvent(onOpen, event);\n }, [handleEvent, onOpen, props.virtual, initialGroupHeader]);\n var onCloseHandler = React.useCallback(function (event) { return handleEvent(onClose, event); }, [onClose]);\n var onFocusHandler = React.useCallback(function (event) { return handleEvent(onFocus, event); }, [onFocus]);\n var onBlurHandler = React.useCallback(function (event) { return handleEvent(onBlur, event); }, [onBlur]);\n var onChangeHandler = React.useCallback(function (event) { return handleEvent(onChange, event); }, [onChange]);\n var onPageChangeHandler = React.useCallback(function (event) { return handleEvent(onPageChange, event); }, [onPageChange]);\n var onFilterChangeHandler = React.useCallback(function (event) {\n setGroupHeader(initialGroupHeader);\n return handleEvent(onFilterChange, __assign(__assign({}, event), { mobileMode: event.target.mobileMode }));\n }, [onFilterChange]);\n var onGroupScroll = React.useCallback(function (event) {\n setGroupHeader(event.group);\n }, []);\n React.useEffect(function () { setScrollbarWidth(); });\n React.useEffect(function () {\n var data = props.data;\n setGroupHeader(initialGroupHeader);\n if (data && data.length !== 0) {\n setShowStickyHeader(true);\n }\n else {\n setShowStickyHeader(false);\n }\n ;\n }, [props.data]);\n var List = React.useCallback(function (listProps) { return React.createElement(MultiColumnList, __assign({}, listProps)); }, []);\n return (React.createElement(PopupPropsContext.Provider, { value: function (PopupProps) { return (__assign(__assign({}, PopupProps), { popupClass: \"k-dropdowngrid-popup \".concat(popupSettings.popupClass) })); } },\n React.createElement(ComboBox, __assign({}, other, { list: List, popupSettings: __assign(__assign({ width: popupWidth }, popupSettings), { className: popupSettings.className }), ref: comboBoxRef, header: header, itemRender: itemRender, groupHeaderItemRender: props.groupHeaderItemRender, size: props.size, rounded: props.rounded, fillMode: props.fillMode, groupMode: props.groupMode, groupField: props.groupField, isMultiColumn: true, onOpen: onOpenHandler, onClose: onCloseHandler, onFocus: onFocusHandler, onBlur: onBlurHandler, onChange: onChangeHandler, onFilterChange: onFilterChangeHandler, onPageChange: onPageChangeHandler, onGroupScroll: onGroupScroll, className: classNames('k-dropdowngrid', className), required: props.required, adaptive: props.adaptive, adaptiveFilter: props.adaptiveFilter, adaptiveTitle: props.adaptiveTitle, footer: props.footer, footerClassName: 'k-table-footer' }))));\n});\nvar propTypes = __assign(__assign({}, ComboBoxWithoutContext.propTypes), { columns: PropTypes.any.isRequired });\nvar defaultProps = {\n columns: [],\n popupSettings: {},\n width: '200px',\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid'\n};\nMultiColumnComboBox.displayName = 'KendoMultiColumnComboBox';\n// TODO: delete casting when @types/react is updated!\nMultiColumnComboBox.propTypes = propTypes;\nMultiColumnComboBox.defaultProps = defaultProps;\n","/**\n * @hidden\n */\nexport var ActiveDescendant;\n(function (ActiveDescendant) {\n ActiveDescendant[ActiveDescendant[\"PopupList\"] = 0] = \"PopupList\";\n ActiveDescendant[ActiveDescendant[\"TagsList\"] = 1] = \"TagsList\";\n})(ActiveDescendant || (ActiveDescendant = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, guid, createPropsContext, kendoThemeMaps, withPropsContext, IconWrap, canUseDOM } from '@progress/kendo-react-common';\nimport { plusIcon } from '@progress/kendo-svg-icons';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport ListContainer from '../common/ListContainer';\nimport List from '../common/List';\nimport GroupStickyHeader from '../common/GroupStickyHeader';\nimport TagList from './TagList';\nimport SearchBar from '../common/SearchBar';\nimport DropDownBase from '../common/DropDownBase';\nimport { ActiveDescendant } from './../common/settings';\nimport { itemIndexStartsWith, getItemValue, areSame, removeDataItems, isPresent, preventDefaultNonInputs, matchTags } from '../common/utils';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nimport ClearButton from '../common/ClearButton';\nimport { AdaptiveMode } from '../common/AdaptiveMode';\nimport { ActionSheetContent } from '@progress/kendo-react-layout';\nimport { MOBILE_MEDIUM_DEVISE } from '../common/constants';\nimport { provideLocalizationService } from '@progress/kendo-react-intl';\nimport { adaptiveModeFooterApply, adaptiveModeFooterCancel, messages } from '../messages';\nimport ListFilter from '../common/ListFilter';\nvar sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\nvar preventDefault = function (event) { return event.preventDefault(); };\nvar isCustom = function (type) { return type === FocusedItemType.CustomItem; };\nvar FocusedItemType;\n(function (FocusedItemType) {\n FocusedItemType[FocusedItemType[\"None\"] = 0] = \"None\";\n FocusedItemType[FocusedItemType[\"ListItem\"] = 1] = \"ListItem\";\n FocusedItemType[FocusedItemType[\"CustomItem\"] = 2] = \"CustomItem\";\n})(FocusedItemType || (FocusedItemType = {}));\n/** @hidden */\nvar MultiSelectWithoutContext = /** @class */ (function (_super) {\n __extends(MultiSelectWithoutContext, _super);\n function MultiSelectWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /** @hidden */\n _this.state = {\n activedescendant: ActiveDescendant.PopupList,\n currentValue: []\n };\n _this._element = null;\n _this._valueItemsDuringOnChange = null;\n _this._inputId = guid();\n _this.base = new DropDownBase(_this);\n _this._tags = [];\n _this._input = null;\n _this._adaptiveInput = null;\n _this._skipFocusEvent = false;\n _this._lastSelectedOrDeslectedItemIndex = null; // Needed for handling the Shift + Up/Down Keyboard Navigation requirement\n _this.itemHeight = 0;\n _this.scrollToFocused = false;\n _this.localization = null;\n /** @hidden */\n _this.focus = function () {\n if (_this._input) {\n _this._input.focus();\n }\n };\n /** @hidden */\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n var skip = virtual ? virtual.skip : 0;\n var dataItem = data[index - skip];\n var indexInValue = _this.value.findIndex(function (i) { return areSame(i, dataItem, dataItemKey); });\n _this._lastSelectedOrDeslectedItemIndex = data.findIndex(function (i) { return areSame(i, dataItem, dataItemKey); });\n var newItems = [];\n if (indexInValue !== -1) { // item is already selected\n newItems = _this.value;\n newItems.splice(indexInValue, 1);\n }\n else {\n newItems = __spreadArray(__spreadArray([], _this.value, true), [dataItem], false);\n }\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n if (text && !_this.mobileMode) {\n if (_this.state.text) {\n state.data.text = '';\n }\n _this.base.filterChanged('', state);\n }\n if (_this._adaptiveInput) {\n _this._adaptiveInput.blur();\n }\n ;\n if (_this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n _this.triggerOnChange(newItems, state);\n _this.base.triggerPageChangeCornerItems(dataItem, state);\n };\n /** @hidden */\n _this.onTagDelete = function (itemsToRemove, event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (_this.opened) {\n _this.base.togglePopup(state);\n }\n if (!_this.state.focused && !_this.mobileMode) {\n state.data.focused = true;\n _this.focus();\n }\n var selected = _this.value;\n removeDataItems(selected, itemsToRemove, _this.props.dataItemKey);\n _this.triggerOnChange(selected, state);\n _this.applyState(state);\n };\n /** @hidden */\n _this.itemFocus = function (index, state) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, allowCustom = _a.allowCustom, virtual = _a.virtual;\n var skip = virtual ? virtual.skip : 0;\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n var focusedIndex = _this.getFocusedState().focusedIndex;\n var customItem = allowCustom && text;\n var nextFocusedItem = data[index - skip];\n if (nextFocusedItem && focusedIndex !== index) {\n if (_this.state.focusedIndex !== index) {\n state.data.focusedIndex = index;\n state.data.activedescendant = ActiveDescendant.PopupList;\n }\n }\n else if (customItem && index === -1) {\n if (_this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n }\n _this.base.triggerPageChangeCornerItems(nextFocusedItem, state);\n };\n _this.componentRef = function (element) {\n _this._element = element;\n _this.base.wrapper = element;\n };\n _this.searchbarRef = function (searchbar) {\n var input = _this._input = searchbar && searchbar.input;\n if (input && _this.state.focused) {\n window.setTimeout(function () { return input.focus(); }, 0);\n }\n };\n _this.onChangeHandler = function (event) {\n var state = _this.base.initState();\n var value = event.target.value;\n state.syntheticEvent = event;\n if (_this.props.filter === undefined) {\n state.data.text = value;\n }\n state.data.focusedIndex = undefined;\n if (!_this.opened) {\n _this.base.togglePopup(state);\n _this.setState({ currentValue: _this.value });\n }\n _this.base.filterChanged(value, state);\n _this.applyState(state);\n _this.setState({ group: undefined });\n };\n _this.clearButtonClick = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n event.stopPropagation();\n if (_this.value.length > 0) {\n _this.triggerOnChange([], state);\n }\n if (_this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n if (_this.opened) {\n _this.base.togglePopup(state);\n }\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n if (isPresent(text) && text !== '') {\n _this.base.filterChanged('', state);\n }\n if (_this.state.text) {\n state.data.text = '';\n }\n _this._lastSelectedOrDeslectedItemIndex = null; // Resets the last selected/deselected item according to the Keyboard navigation requirements\n _this.applyState(state);\n };\n _this.onInputKeyDown = function (event) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, groupField = _a.groupField;\n var keyCode = event.keyCode;\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var _c = _this.getFocusedState(), focusedItem = _c.focusedItem, focusedIndex = _c.focusedIndex;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (!text && _this.value.length > 0 &&\n (keyCode === Keys.left || keyCode === Keys.right ||\n keyCode === Keys.home || keyCode === Keys.end ||\n keyCode === Keys.delete || keyCode === Keys.backspace) && !event.shiftKey) {\n return _this.onTagsNavigate(event, state);\n }\n var togglePopup = function () {\n event.preventDefault();\n _this.base.togglePopup(state);\n _this.applyState(state);\n };\n if (_this.opened) {\n if (keyCode === Keys.pageUp) {\n _this.base.scrollPopupByPageSize(-1);\n }\n else if (keyCode === Keys.pageDown) {\n _this.base.scrollPopupByPageSize(1);\n }\n else if ((event.ctrlKey || event.metaKey) && event.code === 'KeyA') {\n // Ctrl or Command + \"A\" Key selects/deselects all items\n var currentValuesLength = _this.state.value && _this.state.value.length;\n var dataToSet = currentValuesLength === data.length ? [] : data;\n _this.updateStateOnKeyboardNavigation(dataToSet, state);\n }\n else if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.keyCode === Keys.end) {\n // Ctrl or Command + Shift + End from the Keyboard specifications\n var dataToSet = data.slice(_this.getFocusedState().focusedIndex);\n _this.itemFocus(data.length - 1, state);\n _this.updateStateOnKeyboardNavigation(dataToSet, state);\n }\n else if ((event.ctrlKey || event.metaKey) && event.shiftKey && event.keyCode === Keys.home) {\n // Ctrl or Command + Shift + Home from the Keyboard specifications\n var dataToSet = data.slice(0, _this.getFocusedState().focusedIndex + 1);\n _this.itemFocus(0, state);\n _this.updateStateOnKeyboardNavigation(dataToSet, state);\n }\n else if (event.shiftKey && event.keyCode === Keys.up) {\n // Shift + Up from the Keyboard specifications\n var dataToSet = void 0;\n var lastSelectedOrDeselectedIndex = _this.getLastSelectedOrDeselectedIndex(1, focusedIndex);\n if (lastSelectedOrDeselectedIndex === null) {\n dataToSet = focusedIndex !== 0 ? data.slice(focusedIndex - 1, focusedIndex) : [data[focusedIndex]];\n }\n else if (lastSelectedOrDeselectedIndex === focusedIndex) {\n dataToSet = [data[lastSelectedOrDeselectedIndex - 1]];\n }\n else if (focusedIndex >= 0) {\n dataToSet = lastSelectedOrDeselectedIndex > focusedIndex\n ? data.slice(focusedIndex - 1, lastSelectedOrDeselectedIndex)\n : data.slice(lastSelectedOrDeselectedIndex - 1, focusedIndex);\n }\n if (dataToSet && dataToSet.length > 0) {\n if (focusedIndex >= 1) {\n _this.itemFocus(focusedIndex - 1, state);\n }\n _this.updateStateOnKeyboardNavigation(dataToSet, state);\n }\n }\n else if (event.shiftKey && event.keyCode === Keys.down) {\n // Shift + Down from the Keyboard specifications\n var dataToSet = void 0;\n var lastSelectedOrDeselectedIndex = _this.getLastSelectedOrDeselectedIndex(0, focusedIndex);\n if (lastSelectedOrDeselectedIndex === null) {\n dataToSet = focusedIndex !== data.length - 1 ? data.slice(focusedIndex, focusedIndex + 1) : [data[focusedIndex]];\n }\n else if (lastSelectedOrDeselectedIndex === focusedIndex) {\n dataToSet = data.slice(focusedIndex, focusedIndex + 2);\n }\n else if (focusedIndex >= 0) {\n // dataToSet = data.slice(focusedIndex, lastSelectedOrDeselectedIndex);\n dataToSet = lastSelectedOrDeselectedIndex > focusedIndex\n ? data.slice(focusedIndex + 1, lastSelectedOrDeselectedIndex + 1)\n : data.slice(lastSelectedOrDeselectedIndex, focusedIndex + 2);\n }\n if (dataToSet && dataToSet.length >= 1) {\n _this.itemFocus(focusedIndex + 1, state);\n _this.updateStateOnKeyboardNavigation(dataToSet, state);\n }\n }\n else if (event.altKey && keyCode === Keys.up) {\n togglePopup();\n }\n else if (keyCode === Keys.up || keyCode === Keys.down) {\n if (groupField !== '' && textField) {\n if (!_this.props.skipDisabledItems && opened) {\n _this.onNavigate(state, keyCode);\n }\n else {\n var newIndex = 0;\n if (keyCode === Keys.down || keyCode === Keys.right) {\n var tempnewIndex_1 = data.slice(focusedIndex + 1).find(function (i) { return !i.disabled && i[textField]; });\n newIndex = tempnewIndex_1 && data.findIndex(function (el) { return el[textField] === tempnewIndex_1[textField]; });\n }\n else if (keyCode === Keys.up || keyCode === Keys.left) {\n var dataToSearch = void 0;\n if (focusedIndex === -1) {\n dataToSearch = data;\n newIndex = data.findIndex(function (i) { return !i.disabled && i[textField]; });\n }\n else {\n dataToSearch = data.slice(0, focusedIndex);\n var tempnewIndex_2 = dataToSearch.pop();\n while (tempnewIndex_2 && tempnewIndex_2.disabled) {\n tempnewIndex_2 = dataToSearch.pop();\n }\n newIndex = tempnewIndex_2 && data.findIndex(function (el) { return el[textField] === tempnewIndex_2[textField]; });\n }\n }\n if (newIndex) {\n var skipItems = newIndex - focusedIndex;\n _this.onNavigate(state, keyCode, skipItems);\n }\n else if (newIndex !== undefined) {\n _this.onNavigate(state, keyCode);\n }\n }\n }\n else if (!_this.props.skipDisabledItems && opened) {\n _this.onNavigate(state, keyCode);\n }\n else {\n var newIndex = null;\n if (keyCode === Keys.down || keyCode === Keys.right) {\n newIndex = data.slice(focusedIndex + 1).find(function (i) { return !i.disabled; });\n }\n else if (keyCode === Keys.up || keyCode === Keys.left) {\n var dataTest = data.slice(0, focusedIndex);\n newIndex = dataTest.pop();\n while (newIndex && newIndex.disabled) {\n newIndex = dataTest.pop();\n }\n }\n if (newIndex) {\n var skipItems = newIndex.id - focusedIndex - 1;\n _this.onNavigate(state, keyCode, skipItems);\n }\n else {\n _this.onNavigate(state, keyCode);\n }\n }\n _this.applyState(state);\n event.preventDefault();\n }\n else if (keyCode === Keys.enter) {\n event.preventDefault();\n if (_this.props.allowCustom && text && focusedItem === null) {\n _this.customItemSelect(event);\n }\n else if (focusedItem && focusedItem.disabled) {\n togglePopup();\n }\n else {\n _this.selectFocusedItem(event);\n }\n }\n else if (keyCode === Keys.esc) {\n togglePopup();\n }\n }\n else if (event.altKey && keyCode === Keys.down) {\n togglePopup();\n }\n };\n _this.listContainerContent = function () {\n var _a, _b;\n var _c = _this.props, header = _c.header, footer = _c.footer, allowCustom = _c.allowCustom, size = _c.size, _d = _c.data, data = _d === void 0 ? [] : _d, groupStickyHeaderItemRender = _c.groupStickyHeaderItemRender, groupField = _c.groupField, list = _c.list;\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n var focusedType = _this.getFocusedState().focusedType;\n var customItem = allowCustom && text && (React.createElement(\"div\", { className: classNames('k-list', (_a = {},\n _a[\"k-list-\".concat(sizeMap[size] || size)] = size,\n _a)), key: \"customitem\", onClick: _this.customItemSelect, onMouseDown: preventDefault },\n React.createElement(\"div\", { className: classNames('k-list-item k-custom-item', { 'k-focus': isCustom(focusedType) }), style: { fontStyle: 'italic' } },\n text,\n React.createElement(IconWrap, { name: 'plus', icon: plusIcon, style: { position: 'absolute', right: '0.5em' } }))));\n var group = _this.state.group;\n if (group === undefined && groupField !== undefined) {\n group = getItemValue(data[0], groupField);\n }\n return (React.createElement(React.Fragment, null,\n header && React.createElement(\"div\", { className: \"k-list-header\" }, header),\n customItem,\n React.createElement(\"div\", { className: classNames('k-list', (_b = {},\n _b[\"k-list-\".concat(_this.mobileMode ? 'lg' : sizeMap[size] || size)] = size,\n _b['k-virtual-list'] = _this.base.vs.enabled,\n _b)) },\n !list && group && data.length !== 0 && React.createElement(GroupStickyHeader, { group: group, groupMode: 'modern', render: groupStickyHeaderItemRender }),\n _this.renderList()),\n footer && React.createElement(\"div\", { className: \"k-list-footer\" }, footer)));\n };\n _this.renderListContainer = function () {\n var base = _this.base;\n var _a = _this.props, dir = _a.dir, _b = _a.data, data = _b === void 0 ? [] : _b;\n var popupSettings = _this.base.getPopupSettings();\n var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n var listContainerProps = {\n dir: dir !== undefined ? dir : base.dirCalculated,\n width: popupWidth,\n popupSettings: {\n popupClass: classNames(popupSettings.popupClass, 'k-list-container', 'k-multiselect-popup'),\n className: popupSettings.className,\n animate: popupSettings.animate,\n anchor: _this.element,\n show: _this.opened,\n onOpen: _this.onPopupOpened,\n onClose: _this.onPopupClosed,\n appendTo: popupSettings.appendTo\n },\n itemsCount: [data.length, _this.value.length]\n };\n return (React.createElement(ListContainer, __assign({}, listContainerProps), _this.listContainerContent()));\n };\n _this.renderAdaptiveListContainer = function () {\n var _a = _this.props, adaptiveTitle = _a.adaptiveTitle, filterable = _a.filterable, filter = _a.filter;\n var _b = _this.state.windowWidth, windowWidth = _b === void 0 ? 0 : _b;\n var mobileText = filter !== undefined ? filter : _this.state.text;\n _this.localization = provideLocalizationService(_this);\n var mobileFilter = filterable ? (React.createElement(ListFilter, { value: mobileText, ref: function (adaptiveFilter) { return _this._adaptiveInput = adaptiveFilter && adaptiveFilter.element; }, onChange: _this.onChangeHandler, onKeyDown: _this.onInputKeyDown, size: _this.props.size, rounded: _this.props.rounded, fillMode: _this.props.fillMode })) : null;\n var actionSheetProps = {\n adaptiveTitle: adaptiveTitle,\n expand: _this.opened,\n onClose: function (event) { return _this.onCancel(event); },\n windowWidth: windowWidth,\n mobileFilter: mobileFilter,\n footer: {\n cancelText: _this.localization.toLanguageString(adaptiveModeFooterCancel, messages[adaptiveModeFooterCancel]),\n onCancel: _this.onCancel,\n applyText: _this.localization.toLanguageString(adaptiveModeFooterApply, messages[adaptiveModeFooterApply]),\n onApply: _this.closePopup\n }\n };\n return (React.createElement(AdaptiveMode, __assign({}, actionSheetProps),\n React.createElement(ActionSheetContent, { className: '!k-overflow-hidden' },\n React.createElement(\"div\", { className: 'k-list-container' }, _this.listContainerContent()))));\n };\n _this.closePopup = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n event.stopPropagation();\n if (_this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n if (_this.opened) {\n _this.base.togglePopup(state);\n }\n state.events.push({ type: 'onClose' });\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n if (isPresent(text) && text !== '') {\n _this.base.filterChanged('', state);\n }\n if (_this.state.text) {\n state.data.text = '';\n }\n _this.applyState(state);\n };\n _this.onCancel = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n event.stopPropagation();\n if (_this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n if (_this.opened) {\n _this.base.togglePopup(state);\n }\n state.events.push({ type: 'onCancel' });\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n if (isPresent(text) && text !== '') {\n _this.base.filterChanged('', state);\n }\n if (_this.state.text) {\n state.data.text = '';\n }\n _this.applyState(state);\n };\n _this.renderList = function () {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender, groupHeaderItemRender = _a.groupHeaderItemRender, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n var vs = _this.base.vs;\n var skip = virtual ? virtual.skip : 0;\n var focusedIndex = _this.getFocusedState().focusedIndex;\n var popupSettings = _this.base.getPopupSettings();\n var translate = \"translateY(\".concat(vs.translate, \"px)\");\n return (React.createElement(List, { id: _this.base.listBoxId, show: _this.opened, data: data.slice(), focusedIndex: focusedIndex - skip, value: _this.value, textField: textField, valueField: dataItemKey, optionsGuid: _this.base.guid, groupField: _this.props.groupField, groupMode: 'modern', listRef: function (list) { vs.list = _this.base.list = list; }, wrapperStyle: _this.mobileMode ? {} : { maxHeight: popupSettings.height }, wrapperCssClass: \"k-list-content\", listStyle: vs.enabled ? { transform: translate } : undefined, key: \"listKey\", skip: skip, onClick: _this.handleItemClick, itemRender: itemRender, groupHeaderItemRender: groupHeaderItemRender, noDataRender: listNoDataRender, onMouseDown: preventDefault, onBlur: _this.handleBlur, onScroll: _this.onScroll, wrapperRef: vs.scrollerRef, scroller: _this.base.renderScrollElement() }));\n };\n _this.onScroll = function (event) {\n var _a = _this.base, vs = _a.vs, list = _a.list;\n vs.scrollHandler(event);\n var groupField = _this.props.groupField;\n var _b = _this.props.data, data = _b === void 0 ? [] : _b;\n if (!groupField || !data.length) {\n return;\n }\n if (groupField) {\n var itemHeight = _this.itemHeight =\n _this.itemHeight || (vs.enabled ? vs.itemHeight : (list ? list.children[0].offsetHeight : 0));\n var target = event.target;\n var scrollTop = target.scrollTop - (vs.skip * itemHeight);\n data = _this.base.getGroupedDataModernMode(data, groupField);\n var group = data[0][groupField];\n for (var i = 1; i < data.length; i++) {\n if (itemHeight * i > scrollTop) {\n break;\n }\n if (data[i] && data[i][groupField]) {\n group = data[i][groupField];\n }\n }\n if (group !== _this.state.group) {\n _this.setState({\n group: group\n });\n }\n }\n };\n _this.customItemSelect = function (event) {\n var _a;\n var itemText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n var textField = _this.props.textField;\n if (!itemText) {\n return;\n }\n var state = _this.base.initState();\n state.syntheticEvent = event;\n var item = textField ? (_a = {}, _a[textField] = itemText, _a) : itemText;\n if (_this.state.text !== undefined) {\n state.data.text = '';\n }\n state.data.focusedIndex = undefined;\n _this.base.filterChanged('', state);\n var newItems = __spreadArray(__spreadArray([], _this.value, true), [item], false);\n _this.triggerOnChange(newItems, state);\n _this.base.togglePopup(state);\n _this.applyState(state);\n };\n _this.handleWrapperClick = function (event) {\n var input = _this._input;\n if (!_this.opened && input) {\n _this.focusElement(input);\n }\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (!_this.state.focused && !_this.mobileMode) {\n state.events.push({ type: 'onFocus' });\n state.data.focused = true;\n }\n if (_this.mobileMode) {\n _this.setState({ currentValue: _this.tagsToRender });\n if (_this.mobileMode) {\n window.setTimeout(function () { return _this._adaptiveInput && _this._adaptiveInput.focus(); }, 300);\n }\n }\n _this.base.togglePopup(state);\n _this.applyState(state);\n };\n _this.handleItemClick = function (index, event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n _this.handleItemSelect(index, state);\n if (_this.props.autoClose && !_this.mobileMode) {\n _this.base.togglePopup(state);\n }\n event.stopPropagation();\n _this.applyState(state);\n };\n _this.handleBlur = function (event) {\n if (!_this.state.focused || _this._skipFocusEvent) {\n return;\n }\n var state = _this.base.initState();\n var _a = _this.props, allowCustom = _a.allowCustom, filterable = _a.filterable;\n state.syntheticEvent = event;\n state.data.focused = false;\n state.events.push({ type: 'onBlur' });\n if (_this.opened && !_this.mobileMode) {\n if (_this.state.opened) {\n state.data.opened = false;\n }\n state.events.push({ type: 'onClose' });\n }\n if (!allowCustom && !filterable && _this.state.text) {\n state.data.text = '';\n }\n _this.applyState(state);\n };\n _this.handleFocus = function (event) {\n if (_this._skipFocusEvent) {\n return;\n }\n _this.base.handleFocus(event);\n };\n _this.onPopupOpened = function () {\n if (_this._input && _this.state.focused && !_this.mobileMode) {\n _this.focusElement(_this._input);\n }\n };\n _this.onPopupClosed = function () {\n if (_this.state.focused) {\n window.setTimeout(function () { if (_this.state.focused) {\n _this.focusElement(_this._input);\n } }, 0);\n }\n };\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this._input.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(MultiSelectWithoutContext.prototype, \"document\", {\n get: function () {\n if (!canUseDOM) {\n return;\n }\n // useful only for user actions\n return (this.element && this.element.ownerDocument) || document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiSelectWithoutContext.prototype, \"element\", {\n /** @hidden */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiSelectWithoutContext.prototype, \"opened\", {\n /** @hidden */\n get: function () {\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n return !!opened;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiSelectWithoutContext.prototype, \"tagsToRender\", {\n /** @hidden */\n get: function () {\n var _a = this.props, tags = _a.tags, textField = _a.textField;\n var tagsToRender = [];\n if (tags === undefined) {\n this.value.forEach(function (item) {\n tagsToRender.push({ text: getItemValue(item, textField), data: [item] });\n });\n }\n else {\n tagsToRender.push.apply(tagsToRender, tags);\n }\n return tagsToRender;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiSelectWithoutContext.prototype, \"mobileMode\", {\n /**\n * The mobile mode of the ComboBox.\n */\n get: function () {\n var isAdaptive = this.state.windowWidth && this.state.windowWidth <= MOBILE_MEDIUM_DEVISE && this.props.adaptive;\n return !!isAdaptive;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiSelectWithoutContext.prototype, \"value\", {\n /**\n * Represents the value of the MultiSelect.\n */\n get: function () {\n var result = [];\n if (this._valueItemsDuringOnChange) {\n result.push.apply(result, this._valueItemsDuringOnChange);\n }\n else if (this.props.value) {\n result.push.apply(result, this.props.value);\n }\n else if (this.state.value) {\n result.push.apply(result, this.state.value);\n }\n else if (this.props.defaultValue) {\n result.push.apply(result, this.props.defaultValue);\n }\n return result;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiSelectWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the MultiSelect.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiSelectWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the MultiSelect is set.\n */\n get: function () {\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required\n || (this.value !== null && this.value.length > 0 && this.value !== undefined));\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiSelectWithoutContext.prototype, \"required\", {\n /** @hidden */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : MultiSelectWithoutContext.defaultProps.required;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultiSelectWithoutContext.prototype, \"validityStyles\", {\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : MultiSelectWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n /** @hidden */\n MultiSelectWithoutContext.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a;\n var _b = this.props, virtual = _b.virtual, _c = _b.groupField, groupField = _c === void 0 ? '' : _c, _d = _b.data, data = _d === void 0 ? [] : _d;\n var skip = virtual ? virtual.skip : 0;\n var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;\n var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n var opening = !prevOpened && this.opened;\n var closing = prevOpened && !this.opened;\n var popupSettings = this.base.getPopupSettings();\n if (!popupSettings.animate && closing) {\n this.onPopupClosed();\n }\n if (virtual && virtual.total !== prevTotal) {\n this.base.vs.calcScrollElementHeight();\n this.base.vs.reset();\n }\n else {\n var _e = this.getFocusedState(), focusedItem = _e.focusedItem, focusedIndex = _e.focusedIndex;\n if (groupField !== '') {\n focusedIndex = (_a = this.base.getGroupedDataModernMode(data, groupField)) === null || _a === void 0 ? void 0 : _a.indexOf(focusedItem);\n }\n if (opening && virtual) {\n this.base.scrollToVirtualItem(virtual, focusedIndex - skip);\n }\n else if (opening && !virtual) {\n // Resets the sticky header group value for scenarios with open/close of component's popup\n if (data && data.length !== 0) {\n this.base.resetGroupStickyHeader(data[0][groupField], this);\n }\n this.base.scrollToItem(focusedIndex);\n }\n else if (this.opened && prevOpened && focusedItem && this.scrollToFocused) {\n this.base.scrollToItem(focusedIndex - skip);\n }\n }\n this.scrollToFocused = false;\n this.setValidity();\n };\n /** @hidden */\n MultiSelectWithoutContext.prototype.componentDidMount = function () {\n var _a;\n this.observerResize = canUseDOM && window.ResizeObserver && new window.ResizeObserver(this.calculateMedia.bind(this));\n this.base.didMount();\n this.setValidity();\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.observe(this.document.body);\n }\n };\n /** @hidden */\n MultiSelectWithoutContext.prototype.componentWillUnmount = function () {\n var _a;\n if (((_a = this.document) === null || _a === void 0 ? void 0 : _a.body) && this.observerResize) {\n this.observerResize.disconnect();\n }\n };\n /** @hidden */\n MultiSelectWithoutContext.prototype.onNavigate = function (state, keyCode, skipItems) {\n var _a = this.props, allowCustom = _a.allowCustom, _b = _a.data, data = _b === void 0 ? [] : _b;\n var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n var _c = this.getFocusedState(), focusedType = _c.focusedType, focusedIndex = _c.focusedIndex;\n var customItem = allowCustom && text;\n var customItemFocused = isCustom(focusedType);\n var base = this.base;\n var vs = base.vs;\n if (this.opened && keyCode === Keys.up && customItemFocused) {\n if (this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n }\n else {\n var newFocused = base.navigation.navigate({\n keyCode: keyCode,\n current: focusedIndex,\n max: (vs.enabled ? vs.total : data.length) - 1,\n min: customItem ? -1 : 0,\n skipItems: skipItems ? skipItems : undefined\n });\n if (newFocused !== undefined) {\n this.itemFocus(newFocused, state);\n this.scrollToFocused = true;\n }\n }\n this.applyState(state);\n };\n /** @hidden */\n MultiSelectWithoutContext.prototype.render = function () {\n var _a, _b;\n var _c = this.props, style = _c.style, className = _c.className, label = _c.label, dir = _c.dir, disabled = _c.disabled, textField = _c.textField, dataItemKey = _c.dataItemKey, virtual = _c.virtual, size = _c.size, rounded = _c.rounded, fillMode = _c.fillMode, loading = _c.loading, filter = _c.filter;\n var _d = this.state, text = _d.text, focused = _d.focused, focusedTag = _d.focusedTag, currentValue = _d.currentValue;\n var vs = this.base.vs;\n var id = this.props.id || this._inputId;\n vs.enabled = virtual !== undefined;\n if (virtual !== undefined) {\n vs.skip = virtual.skip;\n vs.total = virtual.total;\n vs.pageSize = virtual.pageSize;\n }\n var currentTagsToRender = (this.mobileMode && this.opened) ? currentValue : this.tagsToRender;\n this.setItems(this.tagsToRender, this._tags);\n var isValid = !this.validityStyles || this.validity.valid;\n var clearButton = Boolean(filter !== undefined ? filter : text)\n || (currentTagsToRender && currentTagsToRender.length > 0);\n var component = (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { ref: this.componentRef, className: classNames('k-multiselect k-input', className, (_a = {},\n _a[\"k-input-\".concat(sizeMap[size] || size)] = size,\n _a[\"k-rounded-\".concat(roundedMap[rounded] || rounded)] = rounded,\n _a[\"k-input-\".concat(fillMode)] = fillMode,\n _a['k-focus'] = focused && !disabled,\n _a['k-invalid'] = !isValid,\n _a['k-disabled'] = disabled,\n _a['k-loading'] = loading,\n _a['k-required'] = this.required,\n _a)), style: !label\n ? style\n : __assign(__assign({}, style), { width: undefined }), dir: dir, onFocus: this.handleFocus, onBlur: this.handleBlur, onClick: this.handleWrapperClick, onMouseDown: preventDefaultNonInputs },\n React.createElement(\"div\", { className: classNames('k-input-values') },\n React.createElement(\"div\", { className: classNames('k-chip-list', (_b = {}, _b[\"k-chip-list-\".concat(sizeMap[size] || size)] = size, _b)), role: \"listbox\", id: 'tagslist-' + this.base.guid }, currentTagsToRender && currentTagsToRender.length > 0 && React.createElement(TagList, { tagRender: this.props.tagRender, onTagDelete: this.onTagDelete, data: currentTagsToRender, guid: this.base.guid, focused: focusedTag ? currentTagsToRender.find(function (t) { return matchTags(t, focusedTag, dataItemKey); }) : undefined, size: size })),\n this.renderSearchBar(id)),\n loading && React.createElement(IconWrap, { className: \"k-input-loading-icon\", name: 'loading' }),\n clearButton && React.createElement(ClearButton, { onClick: this.clearButtonClick }),\n !this.mobileMode && this.renderListContainer()),\n this.mobileMode && this.renderAdaptiveListContainer()));\n return label ? (React.createElement(FloatingLabel, { label: label, editorId: id, editorValue: text || getItemValue(this.value[0], textField), editorValid: isValid, editorDisabled: disabled, style: { width: style ? style.width : undefined }, children: component })) : component;\n };\n MultiSelectWithoutContext.prototype.renderSearchBar = function (id) {\n var _a = this.state, activedescendant = _a.activedescendant, focusedTag = _a.focusedTag, currentValue = _a.currentValue;\n var _b = this.props, disabled = _b.disabled, placeholder = _b.placeholder, ariaDescribedBy = _b.ariaDescribedBy;\n var text = !this.mobileMode && (this.props.filter !== undefined ? this.props.filter : this.state.text) || '';\n var focusedIndex = this.getFocusedState().focusedIndex;\n var placeholderToShow = this.value.length === 0 && !text ? placeholder : undefined;\n var adaptivePlaceholder = (currentValue && currentValue.length > 0) ? undefined : placeholder;\n var ariaActivedescendant = activedescendant === ActiveDescendant.TagsList && focusedTag !== undefined ?\n \"tag-\".concat(this.base.guid, \"-\").concat(focusedTag.text.replace(/\\s+/g, '-')) :\n \"option-\".concat(this.base.guid, \"-\").concat(focusedIndex);\n return (React.createElement(SearchBar, { id: id, size: Math.max((placeholderToShow || '').length, text.length, 1), tabIndex: this.props.tabIndex, accessKey: this.props.accessKey, placeholder: this.mobileMode && this.opened ? adaptivePlaceholder : placeholderToShow, value: text, onChange: this.onChangeHandler, onKeyDown: this.onInputKeyDown, ref: this.searchbarRef, disabled: disabled, expanded: this.opened, owns: this.base.listBoxId, role: 'combobox', activedescendant: ariaActivedescendant, ariaDescribedBy: \"tagslist-\".concat(this.base.guid).concat(ariaDescribedBy ? (' ' + ariaDescribedBy) : ''), ariaLabelledBy: this.props.ariaLabelledBy, ariaRequired: this.required }));\n };\n MultiSelectWithoutContext.prototype.onTagsNavigate = function (event, state) {\n var keyCode = event.keyCode;\n var focusedTag = this.state.focusedTag;\n var tags = this._tags;\n var itemsKey = this.props.dataItemKey;\n var focusedIndex = focusedTag ?\n tags.findIndex(function (t) { return matchTags(t, focusedTag, itemsKey); }) : -1;\n var newFocusedTag = undefined;\n var hasFocused = focusedIndex !== -1;\n if (keyCode === Keys.left) {\n if (hasFocused) {\n focusedIndex = Math.max(0, focusedIndex - 1);\n }\n else {\n focusedIndex = tags.length - 1;\n }\n newFocusedTag = tags[focusedIndex];\n }\n else if (keyCode === Keys.right) {\n if (focusedIndex === tags.length - 1) {\n newFocusedTag = undefined;\n }\n else if (hasFocused) {\n focusedIndex = Math.min(tags.length - 1, focusedIndex + 1);\n newFocusedTag = tags[focusedIndex];\n }\n }\n else if (keyCode === Keys.home && !event.shiftKey) {\n newFocusedTag = tags[0];\n }\n else if (keyCode === Keys.end && !event.shiftKey) {\n newFocusedTag = tags[tags.length - 1];\n }\n else if (keyCode === Keys.delete) {\n if (hasFocused) {\n var items = this.value;\n removeDataItems(items, tags[focusedIndex].data, itemsKey);\n this.triggerOnChange(items, state);\n }\n }\n else if (keyCode === Keys.backspace) {\n var items = this.value;\n if (hasFocused) {\n removeDataItems(items, tags[focusedIndex].data, itemsKey);\n this.triggerOnChange(items, state);\n }\n else if (!hasFocused && tags.length) {\n var removed = tags.pop();\n removeDataItems(items, removed.data, itemsKey);\n this.triggerOnChange(items, state);\n }\n }\n if (newFocusedTag !== focusedTag) {\n state.data.focusedTag = newFocusedTag;\n state.data.activedescendant = ActiveDescendant.TagsList;\n }\n this.applyState(state);\n };\n MultiSelectWithoutContext.prototype.triggerOnChange = function (items, state) {\n if (this.props.value === undefined) {\n state.data.value = __spreadArray([], items, true);\n }\n this._valueItemsDuringOnChange = [];\n this.setItems(items, this._valueItemsDuringOnChange);\n state.events.push({ type: 'onChange' });\n };\n MultiSelectWithoutContext.prototype.selectFocusedItem = function (event, itemtoSelect) {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual;\n var focusedIndex = (itemtoSelect || this.getFocusedState()).focusedIndex;\n var skip = virtual ? virtual.skip : 0;\n if (data[focusedIndex - skip] !== undefined) {\n this.handleItemClick(focusedIndex, event);\n }\n };\n MultiSelectWithoutContext.prototype.setItems = function (srcItems, destItems) {\n destItems.length = 0;\n destItems.push.apply(destItems, srcItems);\n };\n MultiSelectWithoutContext.prototype.getFocusedState = function () {\n var focusedIndex = this.state.focusedIndex;\n var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n var _a = this.props, allowCustom = _a.allowCustom, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual, textField = _a.textField, _c = _a.focusedItemIndex, focusedItemIndex = _c === void 0 ? itemIndexStartsWith : _c, skipDisabledItems = _a.skipDisabledItems;\n var skip = (virtual && virtual.skip) || 0;\n var focusedInd;\n if (focusedIndex !== undefined) {\n return {\n focusedIndex: focusedIndex,\n focusedItem: data[focusedIndex - skip],\n focusedType: FocusedItemType.ListItem\n };\n }\n var selected = this.value;\n if (allowCustom && text) {\n return { focusedItem: null, focusedIndex: -1, focusedType: FocusedItemType.CustomItem };\n }\n else if (text) {\n focusedInd = focusedItemIndex(data, text, textField);\n return {\n focusedItem: data[focusedInd],\n focusedIndex: focusedInd + skip,\n focusedType: FocusedItemType.ListItem\n };\n }\n else if (selected.length) {\n var last_1 = selected[selected.length - 1];\n focusedInd = data.findIndex(function (i) { return areSame(i, last_1, dataItemKey); });\n if (data[focusedInd] !== undefined) {\n return {\n focusedIndex: focusedInd + skip,\n focusedItem: data[focusedInd],\n focusedType: FocusedItemType.ListItem\n };\n }\n return { focusedType: FocusedItemType.None, focusedIndex: -1 };\n }\n else if (skipDisabledItems && textField && !text && skip === 0) {\n var newIndex = data.findIndex(function (i) { return !i.disabled && i[textField]; });\n return {\n focusedIndex: newIndex,\n focusedItem: data[newIndex - skip],\n focusedType: FocusedItemType.ListItem\n };\n }\n return skip === 0 ?\n { focusedItem: data[0], focusedIndex: 0, focusedType: FocusedItemType.ListItem } :\n { focusedType: FocusedItemType.None, focusedIndex: -1 };\n };\n MultiSelectWithoutContext.prototype.focusElement = function (element) {\n var _this = this;\n this._skipFocusEvent = true;\n element.focus();\n window.setTimeout(function () { return _this._skipFocusEvent = false; }, 0);\n };\n MultiSelectWithoutContext.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueItemsDuringOnChange = null;\n };\n MultiSelectWithoutContext.prototype.calculateMedia = function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n this.setState({ windowWidth: entry.target.clientWidth });\n }\n ;\n };\n ;\n /**\n * Updates the state of the MultiSelect when the complex keyboard navigation that\n * includes key combinations with the Ctrl/Command, Shift, Home and End keys\n *\n * @param {Array} dataToSet Defines the array of new values that will be applied to the MultiSelect\n * @param {MultiSelectInternalState} state The current state of the MultiSelect\n */\n MultiSelectWithoutContext.prototype.updateStateOnKeyboardNavigation = function (dataToSet, state) {\n this.setState({ value: dataToSet });\n this.triggerOnChange(dataToSet, state);\n this.applyState(state);\n };\n /**\n * Returns the last element that was selected or deselected. Needed for the keyboard navigation specifications\n *\n * @param {number} correction A correction is needed depending on if UP or DOWN key is pressed\n */\n MultiSelectWithoutContext.prototype.getLastSelectedOrDeselectedIndex = function (correction, focusedIndex) {\n if (this._lastSelectedOrDeslectedItemIndex === null) {\n this._lastSelectedOrDeslectedItemIndex = focusedIndex;\n }\n return this._lastSelectedOrDeslectedItemIndex !== null ? this._lastSelectedOrDeslectedItemIndex + correction : null;\n };\n MultiSelectWithoutContext.displayName = 'MultiSelect';\n /** @hidden */\n MultiSelectWithoutContext.propTypes = __assign(__assign({}, DropDownBase.propTypes), { autoClose: PropTypes.bool, value: PropTypes.arrayOf(PropTypes.any), defaultValue: PropTypes.arrayOf(PropTypes.any), dataItemKey: PropTypes.string, placeholder: PropTypes.string, tags: PropTypes.arrayOf(PropTypes.shape({\n text: PropTypes.string,\n data: PropTypes.arrayOf(PropTypes.any)\n })), tagRender: PropTypes.func, id: PropTypes.string, ariaLabelledBy: PropTypes.string, ariaDescribedBy: PropTypes.string, groupField: PropTypes.string, list: PropTypes.any, adaptive: PropTypes.bool, adaptiveTitle: PropTypes.string, onCancel: PropTypes.func, skipDisabledItems: PropTypes.bool });\n /** @hidden */\n MultiSelectWithoutContext.defaultProps = __assign(__assign({}, DropDownBase.defaultProps), { autoClose: true, required: false, size: 'medium', rounded: 'medium', fillMode: 'solid', groupMode: 'modern', skipDisabledItems: true });\n return MultiSelectWithoutContext;\n}(React.Component));\nexport { MultiSelectWithoutContext };\n/**\n * Represents the PropsContext of the `MultiSelect` component.\n * Used for global configuration of all `MultiSelect` instances.\n *\n * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.\n */\nexport var MultiSelectPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact MultiSelect component]({% slug overview_multiselect %}).\n *\n * Accepts properties of type [MultiSelectProps]({% slug api_dropdowns_multiselectprops %}).\n * Obtaining the `ref` returns an object of type [MultiSelectHandle]({% slug api_dropdowns_multiselecthandle %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * multiselect = null;\n * render() {\n * return (\n *
    \n * this.multiselect = component}\n * />\n * \n *
    \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var MultiSelect = withPropsContext(MultiSelectPropsContext, MultiSelectWithoutContext);\nMultiSelect.displayName = 'KendoReactMultiSelect';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Chip } from '@progress/kendo-react-buttons';\nvar preventDefault = function (event) { return event.syntheticEvent.preventDefault(); };\nvar stopPropagation = function (event) { return event.syntheticEvent.stopPropagation(); };\n/**\n * @hidden\n */\nvar TagList = /** @class */ (function (_super) {\n __extends(TagList, _super);\n function TagList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TagList.prototype.render = function () {\n var _a = this.props, data = _a.data, guid = _a.guid, focused = _a.focused, tagRender = _a.tagRender, TagComponent = _a.tag, onTagDelete = _a.onTagDelete, size = _a.size;\n return (React.createElement(React.Fragment, null,\n data.map(function (tagData, index) {\n var tag = TagComponent ? (React.createElement(TagComponent, { key: tagData.text + index, tagData: tagData, guid: guid, focusedTag: focused, onTagDelete: onTagDelete })) : (React.createElement(Chip, { id: \"tag-\".concat(guid, \"-\").concat(tagData.text.replace(/\\s+/g, '-')), \"aria-selected\": true, role: \"option\", \"aria-setsize\": data.length, key: tagData.text + index, text: tagData.text, removable: true, onRemove: function (e) { return onTagDelete.call(undefined, tagData.data, e.syntheticEvent); }, onMouseDown: preventDefault, onClick: stopPropagation, className: tagData === focused ? 'k-focus' : undefined, size: size }));\n return tagRender ? tagRender(tagData, tag) : tag;\n }),\n this.props.children));\n };\n return TagList;\n}(React.Component));\nexport default TagList;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { ActionSheet, ActionSheetFooter, ActionSheetHeader } from '@progress/kendo-react-layout';\nimport { xIcon } from '@progress/kendo-svg-icons';\nimport { Button } from '@progress/kendo-react-buttons';\n/** @hidden */\nvar MOBILE_SMALL_DEVISE = 500;\n/** @hidden */\nexport var AdaptiveMode = function (props) {\n var footer = props.footer, children = props.children, _a = props.windowWidth, windowWidth = _a === void 0 ? 0 : _a, navigatable = props.navigatable, navigatableElements = props.navigatableElements, expand = props.expand, animation = props.animation, onClose = props.onClose, adaptiveTitle = props.adaptiveTitle, mobileFilter = props.mobileFilter;\n var defaultProps = {\n navigatable: navigatable || false,\n navigatableElements: navigatableElements || [],\n expand: expand,\n animation: animation === false ? false : true,\n onClose: onClose,\n animationStyles: windowWidth <= MOBILE_SMALL_DEVISE ? { top: 0, width: '100%', height: '100%' } : undefined,\n className: windowWidth <= MOBILE_SMALL_DEVISE\n ? 'k-adaptive-actionsheet k-actionsheet-fullscreen'\n : 'k-adaptive-actionsheet k-actionsheet-bottom'\n };\n return (React.createElement(ActionSheet, __assign({}, defaultProps),\n React.createElement(ActionSheetHeader, { className: 'k-text-center' },\n React.createElement(\"div\", { className: \"k-actionsheet-titlebar-group k-hbox\" },\n React.createElement(\"div\", { className: \"k-actionsheet-title\" },\n React.createElement(\"div\", null, adaptiveTitle)),\n React.createElement(\"div\", { className: \"k-actionsheet-actions\" },\n React.createElement(Button, { tabIndex: 0, \"aria-label\": \"Cancel\", \"aria-disabled\": \"false\", type: \"button\", fillMode: \"flat\", icon: 'x', svgIcon: xIcon, onClick: onClose }))),\n mobileFilter &&\n React.createElement(\"div\", { className: \"k-actionsheet-titlebar-group k-actionsheet-filter\" }, mobileFilter)),\n children,\n footer && React.createElement(ActionSheetFooter, { className: 'k-actions k-actions-stretched' },\n React.createElement(Button, { size: \"large\", tabIndex: 0, \"aria-label\": footer.cancelText, \"aria-disabled\": \"false\", type: \"button\", onClick: footer.onCancel }, footer.cancelText),\n React.createElement(Button, { tabIndex: 0, themeColor: \"primary\", size: \"large\", \"aria-label\": footer.applyText, \"aria-disabled\": \"false\", type: \"button\", onClick: footer.onApply }, footer.applyText))));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, clear } from '../messages';\nimport { IconWrap } from '@progress/kendo-react-common';\nimport { xIcon } from '@progress/kendo-svg-icons';\n/**\n * @hidden\n */\nvar ClearButton = /** @class */ (function (_super) {\n __extends(ClearButton, _super);\n function ClearButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onMouseDown = function (e) { return e.preventDefault(); };\n return _this;\n }\n ClearButton.prototype.render = function () {\n var title = provideLocalizationService(this).toLanguageString(clear, messages[clear]);\n return (React.createElement(\"span\", { className: \"k-clear-value\", role: \"button\", onClick: this.props.onClick, onMouseDown: this.onMouseDown, tabIndex: -1, title: title, key: \"clearbutton\" },\n React.createElement(IconWrap, { name: 'x', icon: xIcon })));\n };\n return ClearButton;\n}(React.Component));\nexport default ClearButton;\nregisterForLocalization(ClearButton);\n","var maxHeightIE = 1533915;\n/**\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll() {\n var _this = this;\n this.container = null;\n this.scrollElement = null;\n this.list = null;\n this.containerHeight = 0;\n this.skip = 0;\n this.total = 0;\n this.enabled = false;\n this.pageSize = 0;\n this.itemHeight = 0;\n this.PageChange = null;\n this.prevScrollPos = 0;\n this.listTranslate = 0;\n this.scrollSyncing = false;\n this.scrollerRef = function (element) {\n var vs = _this;\n vs.container = element;\n if (element) {\n element.setAttribute('unselectable', 'on');\n window.setTimeout(vs.calcScrollElementHeight.bind(vs), 0);\n }\n };\n this.calcScrollElementHeight = function () {\n _this.scrollSyncing = true;\n var heightChanged = false;\n _this.itemHeight = _this.list ? _this.list.children[0].offsetHeight : _this.itemHeight;\n _this.containerHeight = Math.min(maxHeightIE, _this.itemHeight * _this.total);\n var newHeight = _this.containerHeight;\n if (_this.scrollElement) {\n heightChanged = _this.scrollElement.style.height !== newHeight + 'px';\n if (heightChanged) {\n _this.scrollElement.style.height = newHeight + 'px';\n }\n }\n _this.scrollSyncing = false;\n return heightChanged;\n };\n this.scrollHandler = this.scrollHandler.bind(this);\n }\n Object.defineProperty(VirtualScroll.prototype, \"translate\", {\n get: function () {\n return this.listTranslate;\n },\n enumerable: false,\n configurable: true\n });\n VirtualScroll.prototype.changePage = function (skip, e) {\n var newSkip = Math.min(Math.max(0, skip), this.total - this.pageSize);\n if (newSkip !== this.skip && this.PageChange) {\n this.PageChange({ skip: newSkip, take: this.pageSize }, e);\n }\n };\n VirtualScroll.prototype.translateTo = function (dY) {\n this.listTranslate = dY;\n if (this.list) {\n this.list.style.transform = 'translateY(' + dY + 'px)';\n }\n };\n VirtualScroll.prototype.reset = function () {\n if (this.container) {\n this.calcScrollElementHeight();\n this.container.scrollTop = 0;\n this.translateTo(0);\n }\n };\n VirtualScroll.prototype.scrollToEnd = function () {\n if (this.container && this.list) {\n this.calcScrollElementHeight();\n this.container.scrollTop = this.container.scrollHeight - this.container.offsetHeight;\n this.translateTo(this.container.scrollHeight); // - this.list.offsetHeight\n }\n };\n VirtualScroll.prototype.localScrollUp = function (e) {\n var height = this.itemHeight;\n var scrollTop = this.container.scrollTop;\n var targetTranslate = this.listTranslate;\n var items;\n var additionalOnTop = scrollTop - targetTranslate;\n if (additionalOnTop > height) {\n return;\n }\n for (items = 0; items < this.skip; items++) {\n if (targetTranslate + height + additionalOnTop <= scrollTop) {\n break;\n }\n targetTranslate -= height;\n }\n targetTranslate = this.validateTranslate(targetTranslate);\n if (this.skip - items <= 0 && targetTranslate >= scrollTop) {\n this.translateTo(0);\n this.changePage(0, e);\n this.container.scrollTop = 0;\n return;\n }\n if (targetTranslate !== this.listTranslate) {\n this.translateTo(targetTranslate);\n this.changePage(this.skip - items, e);\n }\n };\n VirtualScroll.prototype.localScrollDown = function (e) {\n var height = this.itemHeight;\n var scrollTop = this.container.scrollTop;\n var targetTranslate = this.listTranslate;\n var itemsLenght = this.list.children.length;\n var items;\n for (items = 0; items < itemsLenght; items++) {\n if (targetTranslate + height >= scrollTop) {\n break;\n }\n targetTranslate += height;\n }\n targetTranslate = this.validateTranslate(targetTranslate);\n if (items >= itemsLenght && this.skip + items >= this.total) {\n this.translateTo(targetTranslate);\n this.changePage(this.total - 1, e);\n }\n else if (targetTranslate !== this.listTranslate) {\n this.translateTo(targetTranslate);\n this.changePage(this.skip + items, e);\n }\n };\n VirtualScroll.prototype.scrollNonStrict = function (e) {\n var floatItemIndex = this.total * this.prevScrollPos / (this.containerHeight);\n var itemIndex = Math.min(Math.floor(floatItemIndex), this.total - 1);\n var targetTranslate = this.containerHeight * floatItemIndex / this.total;\n targetTranslate = this.validateTranslate(targetTranslate);\n this.translateTo(targetTranslate);\n this.changePage(itemIndex, e);\n };\n VirtualScroll.prototype.scrollHandler = function (e) {\n var scrollTop = this.container ? this.container.scrollTop : 0;\n var prev = this.prevScrollPos;\n this.prevScrollPos = scrollTop;\n if (!this.enabled || !this.list || !this.container || this.scrollSyncing) {\n return;\n }\n if (scrollTop - prev <= 0 && scrollTop > this.listTranslate - this.list.scrollHeight / 10) {\n this.localScrollUp(e);\n }\n else if (scrollTop - prev > 0 && scrollTop < this.listTranslate + this.list.scrollHeight * 2 / 3) {\n this.localScrollDown(e);\n }\n else {\n this.scrollNonStrict(e);\n }\n };\n VirtualScroll.prototype.validateTranslate = function (translate) {\n translate = Math.max(0, translate);\n // translate = Math.min(this.containerHeight - this.list!.offsetHeight, translate);\n translate = Math.min(this.containerHeight, translate);\n return translate;\n };\n return VirtualScroll;\n}());\nexport default VirtualScroll;\n","import { isPresent } from './utils';\nimport { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar Navigation = /** @class */ (function () {\n function Navigation() {\n }\n Navigation.prototype.navigate = function (args) {\n var keyCode = args.keyCode;\n if (keyCode === Keys.up || keyCode === Keys.left) {\n return this.next({ current: args.current, min: args.min, max: args.max, step: args.skipItems ? args.skipItems : -1 });\n }\n else if (keyCode === Keys.down || keyCode === Keys.right) {\n return this.next({ current: args.current, min: args.min, max: args.max, step: args.skipItems ? args.skipItems : 1 });\n }\n else if (keyCode === Keys.home) {\n return 0;\n }\n else if (keyCode === Keys.end) {\n return args.max;\n }\n };\n Navigation.prototype.next = function (args) {\n if (!isPresent(args.current)) {\n return args.min;\n }\n else {\n return Math.min(args.max, Math.max(args.current + args.step, args.min));\n }\n };\n return Navigation;\n}());\nexport { Navigation };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport VirtualScroll from './VirtualScroll';\nimport { Navigation } from './Navigation';\nimport { scrollToItem, areSame } from './utils';\nimport { guid } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DropDownBase = /** @class */ (function () {\n function DropDownBase(component) {\n var _this = this;\n this.wrapper = null;\n this.list = null;\n this.vs = new VirtualScroll();\n this.navigation = new Navigation();\n this.handleItemClick = function (index, event) {\n var state = _this.initState();\n state.syntheticEvent = event;\n event.stopPropagation();\n _this.component.handleItemSelect(index, state);\n _this.togglePopup(state);\n _this.applyState(state);\n };\n this.handleFocus = function (event) {\n if (!_this.component.state.focused) {\n var state = _this.initState();\n state.data.focused = true;\n state.events.push({ type: 'onFocus' });\n state.syntheticEvent = event;\n _this.applyState(state);\n }\n };\n this.filterChanged = function (text, state) {\n var _a = _this.component.props, textField = _a.textField, filterable = _a.filterable;\n if (filterable) {\n state.events.push({\n type: 'onFilterChange',\n filter: {\n field: textField,\n operator: 'contains',\n ignoreCase: true,\n value: text\n }\n });\n }\n };\n this.togglePopup = function (state) {\n var props = _this.component.props;\n var opened = props.opened !== undefined ? props.opened : _this.component.state.opened;\n if (props.opened === undefined) {\n state.data.opened = !opened;\n }\n if (opened) {\n state.events.push({ type: 'onClose' });\n }\n else {\n state.events.push({ type: 'onOpen' });\n _this.calculatePopupWidth();\n }\n };\n this.pageChange = function (page, syntheticEvent) {\n var state = _this.initState();\n state.syntheticEvent = syntheticEvent;\n _this.triggerOnPageChange(state, page.skip, page.take);\n _this.applyState(state);\n };\n this.scrollToVirtualItem = function (virtual, selectedItemIndex) {\n var vs = _this.vs;\n vs.enabled = false;\n if (virtual.skip === 0) {\n vs.reset();\n }\n else if (virtual.skip + virtual.pageSize === virtual.total) {\n vs.scrollToEnd();\n }\n else {\n var scrollTop = vs.translate;\n if (scrollTop === 0) {\n vs.calcScrollElementHeight();\n scrollTop = (vs.itemHeight * virtual.skip);\n vs.translateTo(scrollTop - vs.itemHeight);\n }\n if (vs.container) {\n vs.container.scrollTop = scrollTop;\n }\n _this.scrollToItem(selectedItemIndex, true);\n }\n window.setTimeout(function () { return vs.enabled = true; }, 10);\n };\n /**\n * @hidden\n * Scrolls the data inside the popup of a selected DropDown by `one page`. The page size\n * depends on the height of the popup.\n *\n * @param {number} direction Defines the direction(Up/Down) in which the page will be moved\n * @param {number} filterHeight Defines the heigh of the filter element that appears in the DropDownList and DropDownTree.\n * This property is added for handling the filtering scenarios of the mentioned components.\n */\n this.scrollPopupByPageSize = function (direction) {\n var _a, _b, _c, _d, _e, _f;\n var vs = _this.vs;\n var offsetTop = (_b = (_a = _this.list) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollTop;\n var itemHeight = (vs.enabled && vs.itemHeight ? vs.itemHeight : (_this.list ? _this.list.children[0].offsetHeight : 0));\n var height = (_d = (_c = _this.list) === null || _c === void 0 ? void 0 : _c.parentElement) === null || _d === void 0 ? void 0 : _d.offsetHeight;\n if (offsetTop !== undefined && height !== undefined) {\n (_f = (_e = _this.list) === null || _e === void 0 ? void 0 : _e.parentElement) === null || _f === void 0 ? void 0 : _f.scroll({ top: offsetTop + direction * Math.floor(height / itemHeight) * itemHeight });\n }\n };\n this.renderScrollElement = function () {\n var vs = _this.vs;\n return vs.enabled && (React.createElement(\"div\", { ref: function (element) { return vs.scrollElement = element; }, key: 'scrollElementKey' }));\n };\n this.resetGroupStickyHeader = function (groupName, that) {\n if (groupName !== that.state.group) {\n that.setState(__assign(__assign({}, that.state), { group: groupName }));\n }\n };\n this.listBoxId = guid();\n this.guid = guid();\n this.component = component;\n this.vs.PageChange = this.pageChange;\n }\n DropDownBase.prototype.didMount = function () {\n var props = this.component.props;\n var popupSettings = props.popupSettings || {};\n var style = props.style || {};\n var popupWidth = popupSettings.width;\n var shouldUpdate = props.opened === true;\n if (popupWidth === undefined) {\n this.calculatePopupWidth();\n }\n if (props.dir === undefined && style.direction === undefined) {\n this.calculateDir();\n shouldUpdate = true;\n }\n if (shouldUpdate) {\n this.component.forceUpdate();\n }\n };\n DropDownBase.prototype.calculateDir = function () {\n var element = this.component.element;\n if (element && element.ownerDocument && element.ownerDocument.defaultView) {\n this.dirCalculated = element.ownerDocument.defaultView.getComputedStyle(element).direction || undefined;\n }\n };\n DropDownBase.prototype.calculatePopupWidth = function () {\n if (this.wrapper) {\n this.popupWidth = this.wrapper.offsetWidth + 'px';\n }\n };\n DropDownBase.prototype.scrollToItem = function (itemIndex, vsEnabled, once) {\n var _this = this;\n var list = this.list || this.vs.list;\n if (!list && !once) {\n setTimeout(function () {\n _this.scrollToItem(itemIndex, vsEnabled, true);\n }, 10);\n }\n if (list && itemIndex >= 0) {\n var vs = this.vs;\n var scrollElement = (vs.container || list.parentNode);\n var virtualScroll = vsEnabled !== undefined ? vsEnabled : vs.enabled;\n scrollToItem(scrollElement, list, itemIndex, vs.translate, virtualScroll);\n }\n };\n DropDownBase.prototype.initState = function () {\n var state = {\n data: {},\n events: [],\n syntheticEvent: undefined\n };\n return state;\n };\n DropDownBase.prototype.applyState = function (state) {\n var _this = this;\n if (Object.keys(state.data).length > 0) {\n this.component.setState(state.data);\n }\n var eventArgs = {\n syntheticEvent: state.syntheticEvent,\n nativeEvent: state.syntheticEvent ? state.syntheticEvent.nativeEvent : undefined,\n target: this.component,\n value: this.component.value\n };\n state.events.forEach(function (eventData) {\n var type = eventData.type;\n delete eventData.type;\n var handler = type && _this.component.props[type];\n if (handler) {\n handler.call(undefined, __assign(__assign({}, eventArgs), eventData));\n }\n });\n };\n DropDownBase.prototype.triggerOnPageChange = function (state, skip, take) {\n var virtual = this.component.props.virtual;\n if (virtual) {\n var newSkip = Math.min(Math.max(0, skip), Math.max(0, virtual.total - take));\n if (newSkip !== virtual.skip) {\n state.events.push({\n type: 'onPageChange',\n page: { skip: newSkip, take: take }\n });\n }\n }\n };\n DropDownBase.prototype.triggerPageChangeCornerItems = function (item, state) {\n var props = this.component.props;\n var _a = props.data, data = _a === void 0 ? [] : _a, dataItemKey = props.dataItemKey, virtual = props.virtual;\n var opened = props.opened !== undefined ? props.opened : this.component.state.opened;\n if (item && virtual && this.vs.enabled) {\n if (virtual.skip > 0 && areSame(item, data[0], dataItemKey)) {\n this.triggerOnPageChange(state, virtual.skip - 1, virtual.pageSize);\n }\n else if (!opened && virtual.skip + virtual.pageSize < virtual.total &&\n areSame(item, data[data.length - 1], dataItemKey)) {\n this.triggerOnPageChange(state, virtual.skip + 1, virtual.pageSize);\n }\n }\n };\n DropDownBase.prototype.getPopupSettings = function () {\n return Object\n .assign({}, DropDownBase.defaultProps.popupSettings, this.component.props.popupSettings);\n };\n DropDownBase.prototype.getGroupedDataModernMode = function (data, groupField) {\n var newData = [];\n data.forEach(function (el, index) {\n var _a;\n if (data[index - 1] && el[groupField] !== data[index - 1][groupField]) {\n newData.push((_a = {}, _a[groupField] = el[groupField], _a));\n newData.push(data[index]);\n }\n else {\n newData.push(data[index]);\n }\n });\n return newData;\n };\n DropDownBase.basicPropTypes = {\n opened: PropTypes.bool,\n disabled: PropTypes.bool,\n dir: PropTypes.string,\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n data: PropTypes.array,\n textField: PropTypes.string,\n className: PropTypes.string,\n label: PropTypes.string,\n loading: PropTypes.bool,\n popupSettings: PropTypes.shape({\n animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({\n openDuration: PropTypes.number,\n closeDuration: PropTypes.number\n })]),\n popupClass: PropTypes.string,\n className: PropTypes.string,\n appendTo: PropTypes.any,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n }),\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n itemRender: PropTypes.func,\n listNoDataRender: PropTypes.func,\n focusedItemIndex: PropTypes.func,\n header: PropTypes.node,\n footer: PropTypes.node\n };\n DropDownBase.propTypes = __assign(__assign({}, DropDownBase.basicPropTypes), { value: PropTypes.any, defaultValue: PropTypes.any, filterable: PropTypes.bool, filter: PropTypes.string, virtual: PropTypes.shape({\n pageSize: PropTypes.number.isRequired,\n skip: PropTypes.number.isRequired,\n total: PropTypes.number.isRequired\n }), onFilterChange: PropTypes.func, onPageChange: PropTypes.func });\n DropDownBase.defaultProps = {\n popupSettings: {\n height: '200px'\n },\n required: false,\n validityStyles: true\n };\n return DropDownBase;\n}());\nexport default DropDownBase;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar GroupStickyHeader = /** @class */ (function (_super) {\n __extends(GroupStickyHeader, _super);\n function GroupStickyHeader() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupStickyHeader.prototype.render = function () {\n var _a = this.props, group = _a.group, groupMode = _a.groupMode, renderer = _a.render;\n var item = (React.createElement(\"div\", { className: \"k-list-group-sticky-header\" }, groupMode === 'classic'\n ? group\n : React.createElement(\"div\", { className: \"k-list-header-text\" }, group)));\n return renderer !== undefined ? renderer.call(undefined, item, this.props) : item;\n };\n return GroupStickyHeader;\n}(React.Component));\nexport default GroupStickyHeader;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar ListGroupItem = /** @class */ (function (_super) {\n __extends(ListGroupItem, _super);\n function ListGroupItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListGroupItem.prototype.render = function () {\n var _a = this.props, group = _a.group, virtual = _a.virtual, renderer = _a.render, _b = _a.isMultiColumn, isMultiColumn = _b === void 0 ? false : _b;\n var item = (React.createElement(\"li\", { id: this.props.id, role: \"group\", className: isMultiColumn ? 'k-table-group-row' : 'k-list-group-item', style: isMultiColumn ? { 'boxSizing': 'inherit' } : { position: virtual ? 'relative' : 'unset' } },\n React.createElement(\"span\", { className: !renderer ? isMultiColumn ? 'k-table-th' : 'k-list-item-text' : undefined }, group)));\n return renderer !== undefined ? renderer.call(undefined, item, this.props) : item;\n };\n return ListGroupItem;\n}(React.Component));\nexport default ListGroupItem;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport ListItem from './ListItem';\nimport ListGroupItem from './ListGroupItem';\nimport { areSame, getItemValue } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, nodata } from '../messages';\n/**\n * @hidden\n */\nvar List = /** @class */ (function (_super) {\n __extends(List, _super);\n function List() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n List.prototype.renderItems = function () {\n var _this = this;\n var _a = this.props, textField = _a.textField, valueField = _a.valueField, groupField = _a.groupField, groupMode = _a.groupMode, isMultiColumn = _a.isMultiColumn, optionsGuid = _a.optionsGuid, _b = _a.skip, skip = _b === void 0 ? 0 : _b, virtual = _a.virtual, focusedIndex = _a.focusedIndex, _c = _a.highlightSelected, highlightSelected = _c === void 0 ? true : _c, value = _a.value, data = _a.data, itemRender = _a.itemRender, groupHeaderItemRender = _a.groupHeaderItemRender;\n var isArray = Array.isArray(value);\n var groupCounter = 0;\n return data.map(function (item, index) {\n var realIndex = skip + index;\n var idIndex = skip + index + groupCounter;\n var selected = item.disabled ? false : highlightSelected &&\n ((!isArray && areSame(item, value, valueField)) ||\n (isArray && value.findIndex(function (i) { return areSame(i, item, valueField); }) !== -1));\n var group = undefined;\n var current, previous;\n if (index > 0 && groupField !== undefined) {\n current = getItemValue(item, groupField);\n previous = getItemValue(data[index - 1], groupField);\n if (current && previous && current !== previous) {\n group = current;\n }\n }\n group !== undefined && groupMode === 'modern' ? groupCounter += 1 : '';\n return [\n group !== undefined && groupMode === 'modern' && React.createElement(ListGroupItem, { id: \"option-\".concat(optionsGuid, \"-\").concat(idIndex), virtual: virtual, key: realIndex + '-group-item', group: group, isMultiColumn: isMultiColumn, render: groupHeaderItemRender }),\n React.createElement(ListItem, { id: \"option-\".concat(optionsGuid, \"-\").concat(group !== undefined && groupMode === 'modern' ? idIndex + 1 : idIndex), virtual: virtual, dataItem: item, groupMode: groupMode, selected: selected, focused: focusedIndex === index, index: realIndex, key: realIndex, onClick: _this.props.onClick, textField: textField, group: group, render: itemRender, disabled: item.disabled })\n ];\n });\n };\n List.prototype.renderNoValueElement = function (localizationService) {\n var noDataRender = this.props.noDataRender;\n var noDataElement = (React.createElement(\"div\", { className: 'k-nodata' },\n React.createElement(\"div\", null, localizationService.toLanguageString(nodata, messages[nodata]))));\n return noDataRender ?\n noDataRender.call(undefined, noDataElement) : noDataElement;\n };\n List.prototype.render = function () {\n var localizationService = provideLocalizationService(this);\n var _a = this.props, id = _a.id, show = _a.show, wrapperCssClass = _a.wrapperCssClass, wrapperStyle = _a.wrapperStyle, listStyle = _a.listStyle, listRef = _a.listRef, wrapperRef = _a.wrapperRef, _b = _a.listClassName, listClassName = _b === void 0 ? 'k-list-ul' : _b;\n var items = this.renderItems();\n return (items.length ? (React.createElement(\"div\", { className: wrapperCssClass, style: wrapperStyle, ref: wrapperRef, onMouseDown: this.props.onMouseDown, onBlur: this.props.onBlur, onScroll: this.props.onScroll, unselectable: \"on\" },\n React.createElement(\"ul\", { id: id, role: \"listbox\", \"aria-hidden\": !show ? true : undefined, className: listClassName, ref: listRef, style: listStyle }, items),\n this.props.scroller && React.createElement(\"div\", { className: \"k-height-container\" }, this.props.scroller))) : this.renderNoValueElement(localizationService));\n };\n return List;\n}(React.Component));\nexport default List;\nregisterForLocalization(List);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\n/**\n * @hidden\n */\nvar ListContainer = /** @class */ (function (_super) {\n __extends(ListContainer, _super);\n function ListContainer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListContainer.prototype.render = function () {\n var _a = this.props, children = _a.children, width = _a.width, dir = _a.dir, itemsCount = _a.itemsCount, popupSettings = _a.popupSettings;\n return (React.createElement(Popup, __assign({ style: { width: width, direction: dir }, contentKey: itemsCount && itemsCount.join() }, popupSettings), children));\n };\n return ListContainer;\n}(React.Component));\nexport default ListContainer;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { TextBox, InputPrefix } from '@progress/kendo-react-inputs';\nimport { searchIcon } from '@progress/kendo-svg-icons';\nimport { IconWrap } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ListFilter = React.forwardRef(function (props, ref) {\n var input = React.useRef(null);\n React.useImperativeHandle(ref, function () { return input.current; });\n return (React.createElement(\"div\", { className: \"k-list-filter\" },\n React.createElement(TextBox, __assign({}, props, { ref: input, value: props.value || '', onChange: props.onChange, onKeyDown: props.onKeyDown, tabIndex: props.tabIndex, onClick: function (e) { return e.stopPropagation(); }, size: props.size, fillMode: props.fillMode, rounded: props.rounded, prefix: function () { return (React.createElement(InputPrefix, null,\n React.createElement(IconWrap, { name: 'search', icon: searchIcon }))); } }))));\n});\nListFilter.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.array]),\n tabIndex: PropTypes.number,\n onChange: PropTypes.func,\n onKeyDown: PropTypes.func,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'solid', 'flat', 'outline'])\n};\nListFilter.displayName = 'KendoReactListFilter';\nexport default ListFilter;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getItemValue } from './utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n */\nvar ListItem = /** @class */ (function (_super) {\n __extends(ListItem, _super);\n function ListItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleClick = function (e) { return _this.props.onClick(_this.props.index, e); };\n return _this;\n }\n ListItem.prototype.render = function () {\n var _a = this.props, selected = _a.selected, group = _a.group, dataItem = _a.dataItem, virtual = _a.virtual, groupMode = _a.groupMode, disabled = _a.disabled, renderer = _a.render;\n var item = (React.createElement(\"li\", { id: this.props.id, role: \"option\", \"aria-selected\": selected, \"aria-disabled\": disabled ? true : undefined, className: classNames('k-list-item', {\n 'k-selected': selected,\n 'k-focus': this.props.focused,\n 'k-first': Boolean(group) && groupMode === 'classic',\n 'k-disabled': disabled\n }), onClick: this.handleClick, style: { position: virtual ? 'relative' : 'unset' } },\n React.createElement(\"span\", { className: 'k-list-item-text' }, getItemValue(dataItem, this.props.textField).toString()),\n group !== undefined && groupMode === 'classic' ? React.createElement(\"div\", { className: \"k-list-item-group-label\" }, group) : null));\n return renderer !== undefined ? renderer.call(undefined, item, this.props) : item;\n };\n return ListItem;\n}(React.Component));\nexport default ListItem;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { getActiveElement } from '@progress/kendo-react-common';\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar SearchBar = /** @class */ (function (_super) {\n __extends(SearchBar, _super);\n function SearchBar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._input = null;\n return _this;\n }\n Object.defineProperty(SearchBar.prototype, \"input\", {\n /**\n * @hidden\n */\n get: function () {\n return this._input;\n },\n enumerable: false,\n configurable: true\n });\n SearchBar.prototype.componentDidUpdate = function (prevProps) {\n var prevValue = prevProps.value;\n var prevSuggestedText = prevProps.suggestedText;\n var _a = this.props, value = _a.value, suggestedText = _a.suggestedText, focused = _a.focused;\n var input = this.input;\n var valueChanged = prevValue !== value || suggestedText !== prevSuggestedText;\n var deleting = valueChanged && prevValue.startsWith(value) &&\n !(prevSuggestedText && suggestedText && prevSuggestedText.endsWith(suggestedText));\n var activeElement = getActiveElement(document);\n if (focused && input && activeElement !== input) {\n input.focus();\n }\n if (suggestedText && valueChanged && !deleting && input) {\n input.setSelectionRange(value.length - suggestedText.length, value.length);\n }\n };\n SearchBar.prototype.render = function () {\n var _this = this;\n var _a = this.props, _b = _a.expanded, expanded = _b === void 0 ? false : _b, disabled = _a.disabled, _c = _a.role, role = _c === void 0 ? 'listbox' : _c, render = _a.render;\n var searchbar = (React.createElement(\"input\", { autoComplete: \"off\", id: this.props.id, type: \"text\", key: \"searchbar\", size: this.props.size, placeholder: this.props.placeholder, className: \"k-input-inner\", tabIndex: this.props.tabIndex, accessKey: this.props.accessKey, role: role, name: this.props.name, value: this.props.value, onChange: this.props.onChange, ref: function (input) { return _this._input = input; }, onKeyDown: this.props.onKeyDown, onFocus: this.props.onFocus, onBlur: this.props.onBlur, onClick: this.props.onClick, \"aria-disabled\": disabled || undefined, disabled: disabled || undefined, readOnly: this.props.readOnly || undefined, title: this.props.title, \"aria-haspopup\": \"listbox\", \"aria-expanded\": expanded, \"aria-owns\": this.props.owns, \"aria-activedescendant\": expanded ? this.props.activedescendant : undefined, \"aria-describedby\": this.props.ariaDescribedBy, \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-required\": this.props.ariaRequired }));\n return render ? render.call(undefined, searchbar) : searchbar;\n };\n return SearchBar;\n}(React.Component));\nexport default SearchBar;\n","/** @hidden */\nexport var MOBILE_SMALL_DEVISE = 500;\n/** @hidden */\nexport var MOBILE_MEDIUM_DEVISE = 768;\n","/**\n * @hidden\n */\nvar isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nvar sameCharsOnly = function (word, character) {\n for (var idx = 0; idx < word.length; idx++) {\n if (word.charAt(idx) !== character) {\n return false;\n }\n }\n return true;\n};\n/**\n * @hidden\n */\nvar shuffleData = function (data, splitIndex, defaultItem) {\n var result = data;\n if (defaultItem) {\n result = [defaultItem].concat(result);\n }\n return result.slice(splitIndex).concat(result.slice(0, splitIndex));\n};\n/**\n * @hidden\n */\nvar matchText = function (text, word, ignoreCase) {\n if (!isPresent(text)) {\n return false;\n }\n var temp = String(text);\n if (ignoreCase) {\n temp = temp.toLowerCase();\n }\n return temp.indexOf(word) === 0;\n};\n/**\n * @hidden\n */\nvar scrollToItem = function (scrollElem, list, itemIndex, translate, virtualScroll) {\n var viewportHeight = scrollElem.offsetHeight;\n var li = list.children.item(itemIndex);\n var itemOffsetTop = li.offsetTop + (virtualScroll ? translate - scrollElem.scrollTop : 0);\n var itemHeight = li.offsetHeight;\n if (virtualScroll) {\n var diff = 0;\n if (itemOffsetTop + itemHeight > viewportHeight) {\n diff = itemOffsetTop + itemHeight - viewportHeight;\n }\n else if (itemOffsetTop < 0) {\n diff = itemOffsetTop;\n }\n if (diff !== 0) {\n scrollElem.scrollTop += diff;\n }\n else if (scrollElem.scrollTop === 0 && translate !== 0) {\n scrollElem.scrollTop = translate;\n }\n }\n else {\n if (itemOffsetTop + itemHeight > viewportHeight + scrollElem.scrollTop) {\n scrollElem.scrollTop = (itemOffsetTop + itemHeight - viewportHeight);\n }\n else if (itemOffsetTop < scrollElem.scrollTop) {\n scrollElem.scrollTop -= scrollElem.scrollTop - itemOffsetTop;\n }\n }\n};\n/**\n * @hidden\n */\nvar itemIndexStartsWith = function (items, text, field) {\n var result = -1;\n if (text) {\n text = text.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n var itemText = (getItemValue(items[i], field) || '') + '';\n if (itemText && itemText.toLowerCase().startsWith(text)) {\n result = i;\n break;\n }\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nvar getItemIndexByText = function (data, text, textField, matchCase) {\n if (matchCase === void 0) { matchCase = false; }\n var casing = function (value) { return matchCase ? value : value.toLowerCase(); };\n return data.findIndex(function (item) {\n return textField ? casing(getItemValue(item, textField)) === casing(text) :\n casing(text) === casing(item.toString());\n });\n};\n/**\n * @hidden\n */\nvar getItemValue = function (item, field) {\n if (field && isPresent(item)) {\n var path = field.split('.');\n var data_1 = item;\n path.forEach(function (p) {\n data_1 = data_1 ? data_1[p] : undefined;\n });\n return data_1;\n }\n return item;\n};\n/**\n * @hidden\n */\nvar matchDataCollections = function (data1, data2, key) {\n if (data1 === void 0) { data1 = []; }\n if (data2 === void 0) { data2 = []; }\n if (data1 === data2) {\n return true;\n }\n if (data1.length !== data2.length) {\n return false;\n }\n for (var i = 0; i < data1.length; i++) {\n if (!areSame(data1[i], data2[i], key)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @hidden\n */\nvar removeDataItems = function (items, toRemove, key) {\n toRemove.forEach(function (item) {\n var itemIndex = items.findIndex(function (i) { return areSame(i, item, key); });\n if (itemIndex !== -1) {\n items.splice(itemIndex, 1);\n }\n });\n};\n/**\n * @hidden\n */\nvar areSame = function (item1, item2, key) {\n return item1 === item2 ||\n (isPresent(item1) === isPresent(item2) && getItemValue(item1, key) === getItemValue(item2, key));\n};\n/**\n * @hidden\n */\nvar getFocusedItem = function (data, value, textField) {\n if (value) {\n var selectedIndex = getItemIndexByText(data, value, textField, true);\n return selectedIndex !== -1 ? data[selectedIndex] : data[itemIndexStartsWith(data, value, textField)];\n }\n return data[0];\n};\n/**\n * @hidden\n */\nvar suggestValue = function (value, data, textField) {\n if (data === void 0) { data = []; }\n var suggested = '';\n if (value) {\n var suggestedItem = data[itemIndexStartsWith(data, value, textField)];\n if (suggestedItem) {\n var suggestedText = getItemValue(suggestedItem, textField);\n if (value.toLowerCase() !== suggestedText.toLowerCase()) {\n suggested = suggestedText.substring(value.length);\n }\n }\n }\n return suggested;\n};\n/**\n * @hidden\n */\nvar preventDefaultNonInputs = function (event) {\n if (event.target.nodeName !== 'INPUT') {\n event.preventDefault();\n }\n};\n/**\n * @hidden\n */\nvar matchTags = function (tag1, tag2, key) {\n if (!!tag1 !== !!tag2 || tag1.text !== tag2.text) {\n return false;\n }\n return tag1 === tag2 || matchDataCollections(tag1.data, tag2.data, key);\n};\nexport { isPresent, sameCharsOnly, shuffleData, matchText, scrollToItem, itemIndexStartsWith, getItemIndexByText, getItemValue, matchDataCollections, removeDataItems, areSame, getFocusedItem, preventDefaultNonInputs, suggestValue, matchTags };\n","import { Keys } from '@progress/kendo-react-common';\nimport { isItemExpandedAndWithChildren, isEnabledAndAllParentsEnabled, treeIdUtils } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport default function getItemIdUponKeyboardNavigation(item, itemId, items, keyCode, fieldsSvc) {\n switch (keyCode) {\n case Keys.left:\n return getIdUponLeftKey();\n case Keys.right:\n return getIdUponRightKey();\n case Keys.up:\n return getIdUponUpKey();\n case Keys.down:\n return getIdUponDownKey();\n case Keys.home:\n return treeIdUtils.ZERO_LEVEL_ZERO_NODE_ID;\n case Keys.end:\n return getIdUponEndKey();\n default:\n return itemId;\n }\n function getIdUponLeftKey() {\n return treeIdUtils.isIdZeroLevel(itemId)\n // For expanded disabled items, navigate directly to the parent.\n // Collapse cannot happen because an event is not fired to the client.\n || (fieldsSvc.expanded(item) && isEnabledAndAllParentsEnabled(itemId, items, fieldsSvc)) ?\n itemId : treeIdUtils.getDirectParentId(itemId);\n }\n function getIdUponRightKey() {\n return isItemExpandedAndWithChildren(item, fieldsSvc) ? treeIdUtils.getFirstChildId(itemId) : itemId;\n }\n function getIdUponUpKey() {\n var index = Number(treeIdUtils.getShortId(itemId));\n var parentId = treeIdUtils.getDirectParentId(itemId);\n return index ? getLastNotOpenedChildId(treeIdUtils.createId(index - 1, parentId), items, fieldsSvc) :\n treeIdUtils.isIdZeroLevel(itemId) ? itemId : parentId;\n }\n function getIdUponDownKey() {\n if (isItemExpandedAndWithChildren(item, fieldsSvc)) {\n return treeIdUtils.getFirstChildId(itemId);\n }\n else {\n return getNextItemId(itemId, items, fieldsSvc) || itemId;\n }\n }\n function getIdUponEndKey() {\n var result = (items.length - 1).toString();\n var currentItem = items[items.length - 1];\n var children;\n while (isItemExpandedAndWithChildren(currentItem, fieldsSvc)) {\n children = currentItem[fieldsSvc.getChildrenField()];\n result = treeIdUtils.createId(children.length - 1, result);\n currentItem = children[children.length - 1];\n }\n return result;\n }\n}\nfunction getNextItemId(itemId, items, fieldsSvc) {\n var parentId = treeIdUtils.getDirectParentId(itemId);\n var parent = parentId ? treeIdUtils.getItemById(parentId, items, fieldsSvc.getChildrenField()) : undefined;\n var siblings = parent ? parent[fieldsSvc.getChildrenField()] : items;\n var index = Number(treeIdUtils.getShortId(itemId));\n return index < siblings.length - 1 ?\n treeIdUtils.createId(index + 1, parentId) :\n parent ? getNextItemId(parentId, items, fieldsSvc) : undefined;\n}\nfunction getLastNotOpenedChildId(itemId, items, fieldsSvc) {\n var item = treeIdUtils.getItemById(itemId, items, fieldsSvc.getChildrenField());\n if (isItemExpandedAndWithChildren(item, fieldsSvc)) {\n return getLastNotOpenedChildId(treeIdUtils.createId(item[fieldsSvc.getChildrenField()].length - 1, itemId), items, fieldsSvc);\n }\n else {\n return itemId;\n }\n}\n","/**\n * @hidden\n */\nexport var EXPAND_FIELD = 'expanded';\n/**\n * @hidden\n */\nexport var TEXT_FIELD = 'text';\n/**\n * @hidden\n */\nexport var DISABLED_FIELD = 'disabled';\n/**\n * @hidden\n */\nexport var CHILDREN_FIELD = 'items';\n/**\n * @hidden\n */\nexport var HAS_CHILDREN_FIELD = 'hasChildren';\n/**\n * @hidden\n */\nexport var SELECT_FIELD = 'selected';\n/**\n * @hidden\n */\nexport var CHECK_FIELD = 'checked';\n/**\n * @hidden\n */\nexport var CHECK_INDETERMINATE_FIELD = 'checkIndeterminate';\n/**\n * @hidden\n */\nexport var DOM_KENDO_ITEM_ID_FIELD = '_kendoItemId';\n/**\n * @hidden\n */\nexport var DOM_KENDO_TREEVIEW_GUID_FIELD = '_kendoTreeViewGuid';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { classNames, guid, Draggable, kendoThemeMaps, IconWrap } from '@progress/kendo-react-common';\nimport { caretAltDownIcon, caretAltLeftIcon, caretAltRightIcon } from '@progress/kendo-svg-icons';\nimport { isItemExpandedAndWithChildren, hasChildren, treeIdUtils } from '@progress/kendo-react-common';\nimport { Reveal } from '@progress/kendo-react-animation';\nimport { DOM_KENDO_ITEM_ID_FIELD, DOM_KENDO_TREEVIEW_GUID_FIELD } from './utils/consts';\nvar sizeMap = kendoThemeMaps.sizeMap;\n/**\n * @hidden\n */\nexport var TreeViewItemPropsContext = React.createContext(function (props) { return props; });\n/**\n * @hidden\n */\nvar TreeViewItemWithoutContext = /** @class */ (function (_super) {\n __extends(TreeViewItemWithoutContext, _super);\n function TreeViewItemWithoutContext() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.itemGuid = guid();\n _this.onCheckChange = function (e) {\n _this.props.onCheckChange(e, _this.item, _this.itemId);\n };\n _this.onExpandChange = function (e) {\n _this.props.onExpandChange(e, _this.item, _this.itemId);\n };\n _this.onItemClick = function (e) {\n _this.props.onItemClick(e, _this.item, _this.itemId);\n };\n _this.onPress = function (e) {\n _this.props.onPress(e.event, _this.item, _this.itemId);\n };\n _this.onDrag = function (e) {\n _this.props.onDrag(e.event, _this.item, _this.itemId);\n };\n _this.onRelease = function (e) {\n _this.props.onRelease(e.event, _this.item, _this.itemId);\n };\n _this.onContextMenu = function (e) {\n _this.props.onContextMenu(e, _this.item, _this.itemId);\n };\n _this.assignDraggableMeta = function (element) {\n if (element) {\n element[DOM_KENDO_ITEM_ID_FIELD] = _this.props.itemId;\n element[DOM_KENDO_TREEVIEW_GUID_FIELD] = _this.props.treeGuid;\n }\n };\n return _this;\n }\n TreeViewItemWithoutContext.prototype.render = function () {\n var _this = this;\n var subitems = this.renderSubitemsIfApplicable();\n var itemInPart = this.renderItemInPart();\n return (React.createElement(\"li\", { className: classNames('k-treeview-item'), tabIndex: this.tabIndex, role: \"treeitem\", \"aria-expanded\": this.ariaExpanded, \"aria-selected\": this.ariaSelected, \"aria-checked\": this.ariaChecked, \"aria-disabled\": this.disabled ? true : undefined, ref: function (el) { return _this.itemElement = el; } },\n React.createElement(\"div\", { className: \"k-treeview-\".concat(this.props.position), ref: this.assignDraggableMeta },\n this.renderExpandIcon(),\n this.renderCheckbox(),\n this.props.draggable ?\n React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease }, itemInPart) : itemInPart),\n this.props.animate ?\n React.createElement(Reveal, { transitionEnterDuration: 200, transitionExitDuration: 200, style: { display: 'block' }, children: subitems }) : subitems));\n };\n TreeViewItemWithoutContext.prototype.componentDidMount = function () {\n var focusedItemId = this.props.focusedItemId;\n var currentItemId = this.itemId;\n if (focusedItemId && focusedItemId === currentItemId) {\n this.props.onFocusDomElNeeded(this.itemElement);\n }\n if (this.checkboxElement) {\n this.checkboxElement.indeterminate = this.fieldsSvc.checkIndeterminate(this.item);\n }\n };\n TreeViewItemWithoutContext.prototype.componentDidUpdate = function (prevProps) {\n var focusedItemId = this.props.focusedItemId;\n if (focusedItemId &&\n focusedItemId !== prevProps.focusedItemId &&\n focusedItemId === this.itemId) {\n this.props.onFocusDomElNeeded(this.itemElement);\n }\n if (this.checkboxElement) {\n var indeterminate = this.fieldsSvc.checkIndeterminate(this.item);\n if (indeterminate !== prevProps.fieldsService.checkIndeterminate(prevProps.item)) {\n this.checkboxElement.indeterminate = indeterminate;\n }\n }\n };\n TreeViewItemWithoutContext.prototype.renderCheckbox = function () {\n var _a;\n var _this = this;\n if (this.props.checkboxes) {\n var size = this.props.size;\n return (React.createElement(\"div\", { className: classNames('k-checkbox-wrap') },\n React.createElement(\"input\", { type: \"checkbox\", className: classNames('k-checkbox k-rounded-md', (_a = {},\n _a[\"k-checkbox-\".concat(sizeMap[size] || size)] = size,\n _a['k-disabled'] = this.disabled,\n _a)), \"aria-label\": this.item.text, checked: Boolean(this.fieldsSvc.checked(this.item)), id: this.itemGuid, tabIndex: -1, onChange: this.onCheckChange, ref: function (el) { return _this.checkboxElement = el; } }),\n React.createElement(\"label\", { className: \"k-checkbox-label\", htmlFor: this.itemGuid })));\n }\n else {\n return undefined;\n }\n };\n TreeViewItemWithoutContext.prototype.renderExpandIcon = function () {\n var renderExpand = this.props.expandIcons &&\n // If it is explicitly said that the item has children (even not loaded yet)\n // or if the item actually has children, then render the icon.\n (this.fieldsSvc.hasChildren(this.item) || hasChildren(this.item, this.fieldsSvc.getChildrenField()));\n return renderExpand && (\n // Allowing the toggle-button even with `disabled=true` might be a valid case!\n // Re-evaluate the classes bellow if such scenario occurs\n React.createElement(\"span\", { className: classNames('k-treeview-toggle', { 'k-disabled': this.disabled }), onClick: this.onExpandChange },\n React.createElement(IconWrap, __assign({}, this.getIconProps()))));\n };\n TreeViewItemWithoutContext.prototype.renderSubitemsIfApplicable = function () {\n var _this = this;\n var data = this.fieldsSvc.children(this.item);\n return isItemExpandedAndWithChildren(this.item, this.fieldsSvc) ?\n (React.createElement(\"ul\", { className: \"k-treeview-group\", role: \"group\" }, data.map(function (item, index) {\n return (React.createElement(TreeViewItem, { item: item, position: index === 0 ? 'top' : index === data.length - 1 ? 'bot' : 'mid', itemId: treeIdUtils.createId(index, _this.itemId), treeGuid: _this.props.treeGuid, animate: _this.props.animate, focusedItemId: _this.props.focusedItemId, tabbableItemId: _this.props.tabbableItemId, fieldsService: _this.props.fieldsService, itemUI: _this.props.itemUI, checkboxes: _this.props.checkboxes, ariaMultiSelectable: _this.props.ariaMultiSelectable, onItemClick: _this.props.onItemClick, onFocusDomElNeeded: _this.props.onFocusDomElNeeded, draggable: _this.props.draggable, onPress: _this.props.onPress, onDrag: _this.props.onDrag, onRelease: _this.props.onRelease, expandIcons: _this.props.expandIcons, onExpandChange: _this.props.onExpandChange, onCheckChange: _this.props.onCheckChange, onContextMenu: _this.props.onContextMenu, key: index, size: _this.props.size, disabled: _this.disabled, isRtl: _this.props.isRtl }));\n }))) : undefined;\n };\n TreeViewItemWithoutContext.prototype.renderItemInPart = function () {\n return (React.createElement(\"span\", { className: classNames('k-treeview-leaf', {\n 'k-focus': this.props.focusedItemId === this.itemId,\n 'k-selected': this.fieldsSvc.selected(this.item),\n 'k-disabled': this.disabled\n }), style: { touchAction: 'none' }, onClick: this.onItemClick, onContextMenu: this.onContextMenu },\n React.createElement(\"span\", { className: \"k-treeview-leaf-text\" }, this.props.itemUI ?\n React.createElement(this.props.itemUI, { item: this.item, itemHierarchicalIndex: this.itemId }) :\n this.fieldsSvc.text(this.item))));\n };\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"fieldsSvc\", {\n get: function () {\n return this.props.fieldsService;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"itemId\", {\n get: function () {\n return this.props.itemId;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"item\", {\n get: function () {\n return this.props.item;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"tabIndex\", {\n get: function () {\n return (this.props.focusedItemId || this.props.tabbableItemId) === this.itemId ? 0 : -1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"ariaExpanded\", {\n get: function () {\n return this.fieldsSvc.hasChildren(this.item) || hasChildren(this.item, this.fieldsSvc.getChildrenField()) ?\n Boolean(this.fieldsSvc.expanded(this.item)) : undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"disabled\", {\n get: function () {\n return this.props.disabled || this.fieldsSvc.disabled(this.item);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"ariaChecked\", {\n get: function () {\n if (this.props.checkboxes) {\n if (this.fieldsSvc.checked(this.item)) {\n return 'true';\n }\n else {\n return this.fieldsSvc.checkIndeterminate(this.item) ? 'mixed' : 'false';\n }\n }\n else {\n return undefined;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeViewItemWithoutContext.prototype, \"ariaSelected\", {\n get: function () {\n if (this.fieldsSvc.selected(this.item)) {\n return true;\n }\n else if (this.props.ariaMultiSelectable) {\n return this.disabled ? undefined : false;\n }\n else {\n return undefined;\n }\n },\n enumerable: false,\n configurable: true\n });\n TreeViewItemWithoutContext.prototype.getIconProps = function () {\n var expanded = this.fieldsSvc.expanded(this.item);\n var loading = expanded && !hasChildren(this.item, this.fieldsSvc.getChildrenField());\n if (loading) {\n return { name: 'loading' };\n }\n return expanded\n ? { name: 'caret-alt-down', icon: caretAltDownIcon }\n : { name: this.props.isRtl ? 'caret-alt-left' : 'caret-alt-right', icon: this.props.isRtl ? caretAltLeftIcon : caretAltRightIcon };\n };\n TreeViewItemWithoutContext.defaultProps = {\n position: 'top'\n };\n return TreeViewItemWithoutContext;\n}(React.Component));\n/**\n * @hidden\n */\nexport var TreeViewItem = React.forwardRef(function (props, ref) {\n var contextPropsCallback = React.useContext(TreeViewItemPropsContext);\n var treeViewItemProps = contextPropsCallback.call(undefined, props);\n return (React.createElement(TreeViewItemWithoutContext, __assign({ ref: ref }, treeViewItemProps)));\n});\nTreeViewItem.displayName = 'TreeViewItem';\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-treeview',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698929080,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Keys, dispatchEvent, guid, kendoThemeMaps, classNames, resolveItemId, isEnabledAndAllParentsEnabled, hasChildren, TreeFieldsService as FieldsService, treeIdUtils } from '@progress/kendo-react-common';\nimport nav from './utils/getItemIdUponKeyboardNavigation';\nimport { TreeViewItem } from './TreeViewItem';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport { CHECK_FIELD, CHECK_INDETERMINATE_FIELD, CHILDREN_FIELD, DISABLED_FIELD, EXPAND_FIELD, HAS_CHILDREN_FIELD, SELECT_FIELD, TEXT_FIELD } from './utils/consts';\nvar sizeMap = kendoThemeMaps.sizeMap;\n/**\n * Represents the [KendoReact TreeView component]({% slug overview_treeview %}).\n *\n * @example\n * ```jsx\n * const data = [{\n * text: 'Furniture', expanded: true, items: [\n * { text: 'Tables & Chairs' }, { text: 'Sofas' }, { text: 'Occasional Furniture' }]\n * }, {\n * text: 'Decor', expanded: true, items: [\n * { text: 'Bed Linen' }, { text: 'Curtains & Blinds' }, { text: 'Carpets' }]\n * }];\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = { focusedItemId: undefined, focusedItemPublicId: undefined, tabbableItemId: treeIdUtils.ZERO_LEVEL_ZERO_NODE_ID };\n _this.fieldsSvc = null;\n // When there is a change in state.focusedItemId, calling focus() on the dom element of the focused item\n // is most often not needed, because the browser focuses the element on its own.\n // https://github.com/telerik/kendo-react/issues/190\n _this.allowExplicitFocus = false;\n _this.treeGuid = guid();\n _this._element = null;\n _this.onFocusDomElNeeded = function (domItem) {\n if (_this.allowExplicitFocus) {\n _this.focusDomItem(domItem);\n }\n };\n _this.onCheckChange = function (event, item, itemId) {\n _this.setFocus(itemId);\n _this.dispatchCheckChange(event, item, itemId);\n };\n _this.onExpandChange = function (event, item, itemId) {\n _this.setFocus(itemId);\n _this.dispatchExpandChange(event, item, itemId);\n };\n _this.onPress = function (_event, item, itemId) {\n if (_this.props.onItemDragStart) {\n _this.props.onItemDragStart.call(undefined, { target: _this, item: item, itemHierarchicalIndex: itemId });\n }\n };\n _this.onDrag = function (event, item, itemId) {\n var pageX = event.pageX, pageY = event.pageY, clientX = event.clientX, clientY = event.clientY;\n if (_this.props.onItemDragOver) {\n _this.props.onItemDragOver.call(undefined, {\n target: _this,\n item: item,\n itemHierarchicalIndex: itemId,\n pageX: pageX,\n pageY: pageY,\n clientX: clientX,\n clientY: clientY\n });\n }\n };\n _this.onRelease = function (event, item, itemId) {\n var pageX = event.pageX, pageY = event.pageY, clientX = event.clientX, clientY = event.clientY;\n if (_this.props.onItemDragEnd) {\n _this.props.onItemDragEnd.call(undefined, {\n target: _this,\n item: item,\n itemHierarchicalIndex: itemId,\n pageX: pageX,\n pageY: pageY,\n clientX: clientX,\n clientY: clientY\n });\n }\n };\n _this.onItemClick = function (event, item, itemId) {\n _this.setFocus(itemId);\n _this.dispatchItemClick(event, item, itemId);\n };\n _this.onFocus = function () {\n clearTimeout(_this.blurRequest);\n if (_this.state.focusedItemId === undefined && _this.data.length) {\n _this.setFocus(_this.state.tabbableItemId);\n }\n };\n _this.onBlur = function () {\n clearTimeout(_this.blurRequest);\n _this.blurRequest = window.setTimeout(function () { return _this.setFocus(undefined); }, 0);\n };\n _this.onKeyDown = function (event) {\n var focusedItem = _this.getFocusedItem();\n if (focusedItem && _this.fieldsSvc) {\n var newItemId = nav(focusedItem, _this.state.focusedItemId, _this.data, event.keyCode, _this.fieldsSvc);\n if (newItemId !== _this.state.focusedItemId) {\n // This disables the auto-scroll. The scroll is achieved via item focusing.\n event.preventDefault();\n _this.allowExplicitFocus = true;\n _this.setFocus(newItemId);\n }\n _this.dispatchEventsOnKeyDown(event, focusedItem);\n }\n };\n _this.onContextMenu = function (event, item, itemId) {\n if (_this.props.onContextMenu) {\n var ev = {\n target: _this,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n item: item,\n itemID: itemId\n };\n _this.props.onContextMenu.call(undefined, ev);\n }\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(TreeView.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n TreeView.prototype.render = function () {\n var _a;\n var _this = this;\n this.fieldsSvc = new FieldsService(this.props);\n var _b = this.props, size = _b.size, className = _b.className;\n return (React.createElement(\"div\", { className: classNames('k-treeview', (_a = {},\n _a[\"k-treeview-\".concat(sizeMap[size] || size)] = size,\n _a['k-user-select-none'] = this.props.draggable,\n _a['k-rtl'] = this.props.dir === 'rtl',\n _a), className), onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, role: \"tree\", \"aria-multiselectable\": this.ariaMultiSelectable ? true : undefined, \"aria-label\": this.props['aria-label'], \"aria-labelledby\": this.props['aria-labelledby'], ref: function (element) { return _this._element = element; }, tabIndex: this.props.tabIndex },\n React.createElement(\"ul\", { className: \"k-treeview-lines k-treeview-group\", role: \"group\" }, this.data.map(function (item, index) {\n return (React.createElement(TreeViewItem, { item: item, position: index === 0 ? 'top' : index === _this.data.length - 1 ? 'bot' : 'mid', itemId: index.toString(), treeGuid: _this.treeGuid, animate: _this.props.animate, focusedItemId: _this.state.focusedItemId, tabbableItemId: _this.state.tabbableItemId, fieldsService: _this.fieldsSvc, itemUI: _this.props.item, checkboxes: _this.props.checkboxes, ariaMultiSelectable: _this.ariaMultiSelectable, onItemClick: _this.onItemClick, onFocusDomElNeeded: _this.onFocusDomElNeeded, draggable: _this.props.draggable, onPress: _this.onPress, onDrag: _this.onDrag, onRelease: _this.onRelease, expandIcons: _this.props.expandIcons, onExpandChange: _this.onExpandChange, onCheckChange: _this.onCheckChange, onContextMenu: _this.onContextMenu, key: index, size: size, isRtl: _this.props.dir === 'rtl' }));\n }))));\n };\n /**\n * @hidden\n */\n TreeView.prototype.componentDidUpdate = function () {\n this.allowExplicitFocus = false;\n this.refocusDueToFocusIdField();\n };\n TreeView.prototype.dispatchEventsOnKeyDown = function (event, focusedItem) {\n var _this = this;\n if (this.fieldsSvc === null) {\n return;\n }\n // isEnabled is the most expensive op and that is why is left last.\n var isEnabled = function () {\n return _this.fieldsSvc && isEnabledAndAllParentsEnabled(_this.state.focusedItemId, _this.data, _this.fieldsSvc);\n };\n if (event.keyCode === Keys.left && this.fieldsSvc.expanded(focusedItem) && isEnabled()) {\n this.dispatchExpandChange(event, focusedItem, this.state.focusedItemId);\n }\n else if (event.keyCode === Keys.right && !this.fieldsSvc.expanded(focusedItem) &&\n (this.fieldsSvc.hasChildren(focusedItem) || hasChildren(focusedItem, this.props.childrenField)) && isEnabled()) {\n this.dispatchExpandChange(event, focusedItem, this.state.focusedItemId);\n }\n else if (event.keyCode === Keys.enter && isEnabled()) {\n this.dispatchItemClick(event, focusedItem, this.state.focusedItemId);\n }\n else if (event.keyCode === Keys.space && isEnabled()) {\n // W/o preventDefault() long TreeViews gets incorrectly scrolled.\n event.preventDefault();\n this.dispatchCheckChange(event, focusedItem, this.state.focusedItemId);\n }\n };\n TreeView.prototype.setFocus = function (focusedItemId) {\n if (focusedItemId && this.fieldsSvc) {\n if (this.fieldsSvc.focusIdField) {\n var item = this.getItemById(focusedItemId);\n this.setState({ focusedItemId: focusedItemId, focusedItemPublicId: this.fieldsSvc.focusId(item) });\n }\n else {\n this.setState({ focusedItemId: focusedItemId });\n }\n }\n else {\n this.setState(function (state) {\n return {\n focusedItemId: undefined,\n focusedItemPublicId: undefined,\n tabbableItemId: state.focusedItemId\n };\n });\n }\n };\n TreeView.prototype.getFocusedItem = function () {\n return this.state.focusedItemId ? this.getItemById(this.state.focusedItemId) : undefined;\n };\n TreeView.prototype.getItemById = function (itemId) {\n return treeIdUtils.getItemById(itemId, this.data, this.props.childrenField || CHILDREN_FIELD);\n };\n TreeView.prototype.dispatchCheckChange = function (dispatchedEvent, item, itemId) {\n dispatchEvent(this.props.onCheckChange, dispatchedEvent, this, { item: item, itemHierarchicalIndex: itemId });\n };\n TreeView.prototype.dispatchExpandChange = function (dispatchedEvent, item, itemId) {\n dispatchEvent(this.props.onExpandChange, dispatchedEvent, this, { item: item, itemHierarchicalIndex: itemId });\n };\n TreeView.prototype.dispatchItemClick = function (dispatchedEvent, item, itemId) {\n dispatchEvent(this.props.onItemClick, dispatchedEvent, this, { item: item, itemHierarchicalIndex: itemId });\n };\n TreeView.prototype.refocusDueToFocusIdField = function () {\n if (this.fieldsSvc && this.fieldsSvc.focusIdField) {\n var focusedItemPublicId = this.state.focusedItemPublicId;\n if (focusedItemPublicId) {\n var focusedItemId = this.props.getFocusHierarchicalIndex ?\n this.props.getFocusHierarchicalIndex(focusedItemPublicId) :\n resolveItemId(focusedItemPublicId, this.fieldsSvc.focusIdField, this.data, this.props.childrenField);\n if (focusedItemId !== this.state.focusedItemId) {\n this.allowExplicitFocus = true;\n this.setState({ focusedItemId: focusedItemId });\n }\n }\n }\n };\n Object.defineProperty(TreeView.prototype, \"ariaMultiSelectable\", {\n get: function () {\n return this.props['aria-multiselectable'] === true || this.props['aria-multiselectable'] === 'true';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TreeView.prototype, \"data\", {\n get: function () {\n return this.props.data || [];\n },\n enumerable: false,\n configurable: true\n });\n TreeView.prototype.focusDomItem = function (domItem) {\n domItem.focus();\n };\n Object.defineProperty(TreeView.prototype, \"guid\", {\n /**\n * Returns the `guid` which is associated with the TreeView.\n */\n get: function () {\n return this.treeGuid;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n TreeView.propTypes = {\n data: PropTypes.arrayOf(PropTypes.any),\n animate: PropTypes.bool,\n tabIndex: PropTypes.number,\n focusIdField: PropTypes.string,\n getHierarchicalIndexById: PropTypes.func,\n onExpandChange: PropTypes.func,\n onItemClick: PropTypes.func,\n expandField: PropTypes.string,\n selectField: PropTypes.string,\n childrenField: PropTypes.string,\n hasChildrenField: PropTypes.string,\n textField: PropTypes.string,\n disableField: PropTypes.string,\n item: PropTypes.any,\n 'aria-multiselectable': function (props, propName, componentName) {\n if (props[propName] !== undefined\n && props[propName] !== true\n && props[propName] !== false\n && props[propName] !== 'true'\n && props[propName] !== 'false') {\n return new Error('Invalid prop `' + propName + '` supplied to' +\n ' `' + componentName + '`. Validation failed.');\n }\n return null;\n },\n 'aria-label': PropTypes.string,\n 'aria-labelledby': PropTypes.string,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n dir: PropTypes.string\n };\n /**\n * @hidden\n */\n TreeView.defaultProps = {\n animate: true,\n expandField: EXPAND_FIELD,\n selectField: SELECT_FIELD,\n hasChildrenField: HAS_CHILDREN_FIELD,\n childrenField: CHILDREN_FIELD,\n textField: TEXT_FIELD,\n disableField: DISABLED_FIELD,\n checkField: CHECK_FIELD,\n checkIndeterminateField: CHECK_INDETERMINATE_FIELD,\n size: 'medium'\n };\n return TreeView;\n}(React.Component));\nexport { TreeView };\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport function useDropdownWidth(elementRef, initialStyleWidth, args) {\n var _a = React.useState(initialStyleWidth), width = _a[0], setWidth = _a[1];\n React.useEffect(function () {\n if (width !== undefined && elementRef.current) {\n setWidth(elementRef.current.offsetWidth);\n }\n }, args);\n return width;\n}\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var ListNoData = function (props) {\n return React.createElement(\"div\", { className: \"k-nodata\" },\n React.createElement(\"div\", null, props.children));\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar _this = this;\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, noop, useRtl, getTabIndex, Keys, mapTree, extendDataItem, guid, createPropsContext, kendoThemeMaps, usePropsContext, IconWrap, canUseDOM } from '@progress/kendo-react-common';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { TreeView } from '@progress/kendo-react-treeview';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './../package-metadata';\nimport { getItemValue, areSame, isPresent } from '../common/utils';\nimport { useDropdownWidth } from './useDropdownWidth';\nimport { ListNoData } from './ListNoData';\nimport { messages, clear, nodata } from './../messages';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport ListFilter from '../common/ListFilter';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { xIcon, caretAltDownIcon } from '@progress/kendo-svg-icons';\nimport { AdaptiveMode } from '../common/AdaptiveMode';\nimport { ActionSheetContent } from '@progress/kendo-react-layout';\nimport { MOBILE_MEDIUM_DEVISE } from '../common/constants';\nvar sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;\nvar VALIDATION_MESSAGE = 'Please select a value from the list!';\nvar ValueHolder = function (props) {\n return React.createElement(\"span\", { className: \"k-input-value-text\" }, props.children);\n};\nvar toLevel = function (hierarchicalIndex) {\n return hierarchicalIndex.split('_').map(function (i) { return parseInt(i, 10); });\n};\nvar getValidity = function (parameters, hasValue) {\n var validationMessage = parameters.validationMessage, valid = parameters.valid, required = parameters.required;\n return ({\n customError: validationMessage !== undefined,\n valid: Boolean(valid !== undefined ? valid : (!required || hasValue)),\n valueMissing: !hasValue\n });\n};\nvar defaultProps = {\n selectField: 'selected',\n subItemsField: 'items',\n popupSettings: {\n animate: true,\n width: '200px',\n height: '200px'\n },\n data: [],\n required: false,\n style: {},\n validityStyles: true,\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid'\n};\n/**\n * Represents the PropsContext of the `DropDownTree` component.\n * Used for global configuration of all `DropDownTree` instances.\n *\n * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.\n */\nexport var DropDownTreePropsContext = createPropsContext();\n/**\n * Represents the DropDownTree component.\n *\n * Accepts properties of type [DropDownTreeProps]({% slug api_dropdowns_dropdowntreeprops %}).\n * Obtaining the `ref` returns an object of type [DropDownTreeHandle]({% slug api_dropdowns_dropdowntreehandle %}).\n *\n * @example\n * ```jsx\n * const selectField = \"selected\";\n * const expandField = \"expanded\";\n * const dataItemKey = \"id\";\n * const textField = \"text\";\n * const subItemsField = \"items\";\n * const fields = {\n * selectField,\n * expandField,\n * dataItemKey,\n * subItemsField,\n * };\n * const App = () => {\n * const [value, setValue] = React.useState(null);\n * const [expanded, setExpanded] = React.useState([data[0][dataItemKey]]);\n * const onChange = (event) => setValue(event.value);\n * const onExpandChange = React.useCallback(\n * (event) => setExpanded(expandedState(event.item, dataItemKey, expanded)),\n * [expanded]\n * );\n * const treeData = React.useMemo(\n * () =>\n * processTreeData(\n * data,\n * {\n * expanded,\n * value,\n * },\n * fields\n * ),\n * [expanded, value]\n * );\n *\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var DropDownTree = React.forwardRef(function (directProps, ref) {\n var _a;\n validatePackage(packageMetadata);\n var props = usePropsContext(DropDownTreePropsContext, directProps);\n var combinedProps = __assign(__assign({}, defaultProps), props);\n var calculatedId = React.useMemo(function () { return guid(); }, []);\n var id = combinedProps.id || calculatedId;\n var data = combinedProps.data, dataItemKey = combinedProps.dataItemKey, popupSettings = combinedProps.popupSettings, style = combinedProps.style, opened = combinedProps.opened, disabled = combinedProps.disabled, _b = combinedProps.onOpen, onOpen = _b === void 0 ? noop : _b, _c = combinedProps.onClose, onClose = _c === void 0 ? noop : _c, placeholder = combinedProps.placeholder, label = combinedProps.label, name = combinedProps.name, selectField = combinedProps.selectField, subItemsField = combinedProps.subItemsField, validationMessage = combinedProps.validationMessage, valid = combinedProps.valid, required = combinedProps.required, validityStyles = combinedProps.validityStyles;\n var tabIndex = getTabIndex(combinedProps.tabIndex, disabled);\n var target = React.useRef(null);\n var elementRef = React.useRef(null);\n var inputRef = React.useRef(null);\n var adaptiveInputRef = React.useRef(null);\n var selectRef = React.useRef(null);\n var treeViewRef = React.useRef(null);\n var skipFocusRef = React.useRef(false);\n var _d = React.useState(undefined), stateValue = _d[0], setStateValue = _d[1];\n var controlled = combinedProps.value !== undefined;\n var value = controlled ? combinedProps.value : (stateValue !== undefined ? stateValue : combinedProps.defaultValue);\n var hasValue = isPresent(value);\n var currentValueText = hasValue ? getItemValue(value, combinedProps.textField) : '';\n var validity = getValidity({ validationMessage: validationMessage, valid: valid, required: required }, hasValue);\n var focus = React.useCallback(function () { return elementRef.current && elementRef.current.focus(); }, []);\n React.useImperativeHandle(target, function () { return ({\n props: combinedProps,\n element: elementRef.current,\n focus: focus\n }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n var dir = useRtl(elementRef, combinedProps.dir);\n var initialStyleWidth = popupSettings.width !== undefined ?\n popupSettings.width : (style.width !== undefined ? style.width : defaultProps.popupSettings.width);\n var popupWidth = useDropdownWidth(elementRef, initialStyleWidth);\n var popupStyles = __assign({ width: popupWidth }, (dir !== undefined ? { direction: dir } : {}));\n var _e = React.useState(false), open = _e[0], setOpen = _e[1];\n var isOpen = opened !== undefined ? opened : open;\n var _f = React.useState(false), focused = _f[0], setFocused = _f[1];\n var _g = React.useState(), windowWidth = _g[0], setWindowWidth = _g[1];\n var isAdaptive = !!(windowWidth && windowWidth <= MOBILE_MEDIUM_DEVISE && combinedProps.adaptive);\n var _h = React.useState(''), filter = _h[0], setFilter = _h[1];\n var setValidity = React.useCallback(function () {\n if (selectRef.current && selectRef.current.setCustomValidity) {\n selectRef.current.setCustomValidity(validity.valid\n ? ''\n : validationMessage === undefined ? VALIDATION_MESSAGE : validationMessage);\n }\n }, [validationMessage, validity]);\n React.useEffect(setValidity);\n React.useEffect(function () {\n var observerResize = canUseDOM && window.ResizeObserver && new window.ResizeObserver(calculateMedia.bind(_this));\n if ((document === null || document === void 0 ? void 0 : document.body) && observerResize) {\n observerResize.observe(document.body);\n }\n return function () {\n if ((document === null || document === void 0 ? void 0 : document.body) && observerResize) {\n observerResize.disconnect();\n }\n };\n }, []);\n var openPopup = React.useCallback(function (event) {\n if (!isOpen) {\n if (onOpen) {\n var openEvent = __assign({}, event);\n onOpen.call(undefined, openEvent);\n }\n if (opened === undefined) {\n setOpen(true);\n }\n }\n }, [isOpen, opened, onOpen]);\n var closePopup = React.useCallback(function (event) {\n if (isOpen) {\n if (onClose) {\n var closeEvent = __assign({}, event);\n onClose.call(undefined, closeEvent);\n }\n if (opened === undefined) {\n setOpen(false);\n if (isAdaptive) {\n setTimeout(function () {\n var _a;\n focusElement((_a = adaptiveInputRef.current) === null || _a === void 0 ? void 0 : _a.element);\n }, 300);\n }\n }\n }\n }, [isOpen, opened, onClose, isAdaptive]);\n var onWrapperClick = React.useCallback(function (event) {\n if (!event.isDefaultPrevented() && target.current) {\n setFocused(true);\n var ev = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n target: target.current\n };\n (isOpen ? closePopup : openPopup)(ev);\n }\n }, [isOpen, opened, onOpen, onClose]);\n var switchFocus = React.useCallback(function (focusFn) {\n skipFocusRef.current = true;\n focusFn();\n window.setTimeout(function () { return skipFocusRef.current = false; }, 0);\n }, []);\n var onWrapperKeyDown = React.useCallback(function (event) {\n var _a, _b;\n var keyCode = event.keyCode, altKey = event.altKey;\n var treeview = treeViewRef.current && treeViewRef.current.element;\n if (!target.current || (event.isDefaultPrevented() && ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element) === event.target)) {\n return;\n }\n var ev = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n target: target.current\n };\n if (isOpen) {\n if (keyCode === Keys.esc || (altKey && keyCode === Keys.up)) {\n event.preventDefault();\n closePopup(ev);\n }\n else if (treeview && treeview.querySelector('.k-focus') &&\n (keyCode === Keys.up || keyCode === Keys.down ||\n keyCode === Keys.left || keyCode === Keys.right ||\n keyCode === Keys.home || keyCode === Keys.end)) {\n if (keyCode === Keys.up && ((_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.element)) {\n var items = Array.from(treeview.querySelectorAll('.k-treeview-item'));\n var focusedItem = __spreadArray([], items, true).reverse().find(function (i) { return Boolean(i && i.querySelector('.k-focus')); });\n if (focusedItem && items.indexOf(focusedItem) === 0) {\n return switchFocus(function () { var _a; focusElement((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element); });\n }\n }\n switchFocus(noop);\n }\n else if (keyCode === Keys.down) {\n switchFocus(function () { var _a; focusElement(((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element) || treeview); });\n }\n }\n else if (altKey && keyCode === Keys.down) {\n event.preventDefault();\n openPopup(ev);\n }\n else if (!isOpen) {\n if (keyCode === Keys.esc) {\n onClear(event);\n }\n }\n }, [isOpen, opened, onOpen, onClose]);\n var onInputKeyDown = React.useCallback(function (event) {\n var keyCode = event.keyCode, altKey = event.altKey;\n if (altKey || (keyCode !== Keys.up && keyCode !== Keys.down)) {\n return;\n }\n event.preventDefault();\n switchFocus(keyCode === Keys.up ?\n function () { focusElement(elementRef.current); } :\n function () { focusElement(treeViewRef.current && treeViewRef.current.element); });\n }, []);\n var focusElement = React.useCallback(function (element) {\n if (element) {\n switchFocus(function () { return element.focus(); });\n }\n }, []);\n var onPopupOpened = React.useCallback(function () {\n var _a;\n if (!focused && isOpen && !opened) {\n closePopup({ target: target.current });\n }\n else {\n if (props.filterable) {\n focusElement((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element);\n }\n else {\n focusElement(treeViewRef.current && treeViewRef.current.element);\n }\n }\n }, [onClose, props.filterable, focused, opened, isOpen]);\n var onPopupClosed = React.useCallback(function () {\n if (focused) {\n // Move the focus from treeview to dropdown without triggering Focus or Blur events.\n focusElement(elementRef.current);\n }\n }, [focused]);\n var onFocus = React.useCallback(function (event) {\n if (!focused && !skipFocusRef.current) {\n setFocused(true);\n if (props.onFocus && target.current) {\n var focusEvent = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n target: target.current\n };\n props.onFocus.call(undefined, focusEvent);\n }\n }\n }, [focused, props.onFocus]);\n var onBlur = React.useCallback(function (event) {\n if (focused && !skipFocusRef.current && target.current) {\n setFocused(false);\n var ev = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n target: target.current\n };\n if (props.onBlur) {\n var focusEvent = __assign({}, ev);\n props.onBlur.call(undefined, focusEvent);\n }\n if (!isAdaptive) {\n closePopup(ev);\n }\n }\n }, [focused, props.onBlur, isOpen, opened, onClose]);\n var onWrapperMouseDown = React.useCallback(function () {\n if (focused) {\n // moving focus from treeview to dropdown triggers Focus and Blur events.\n switchFocus(noop);\n }\n if (isAdaptive) {\n setTimeout(function () {\n var _a;\n focusElement((_a = adaptiveInputRef.current) === null || _a === void 0 ? void 0 : _a.element);\n }, 300);\n }\n }, [focused, isAdaptive]);\n var changeValue = React.useCallback(function (event, newValue, hierarchicalIndex) {\n if (props.onChange) {\n var changeEvent = __assign({ value: newValue, level: hierarchicalIndex ? toLevel(hierarchicalIndex) : [] }, event);\n props.onChange.call(undefined, changeEvent);\n }\n if (!controlled) {\n setStateValue(newValue);\n }\n }, [props.onChange, controlled]);\n var onChange = React.useCallback(function (event) {\n if (areSame(event.item, value, dataItemKey) || !target.current) {\n return;\n }\n var item = event.item, itemHierarchicalIndex = event.itemHierarchicalIndex, nativeEvent = event.nativeEvent, syntheticEvent = event.syntheticEvent;\n var ev = {\n syntheticEvent: syntheticEvent,\n nativeEvent: nativeEvent,\n target: target.current\n };\n changeValue(ev, item, itemHierarchicalIndex);\n closePopup(ev);\n }, [controlled, value, props.onChange, dataItemKey, isOpen, opened, onClose]);\n var onClear = React.useCallback(function (event) {\n if (!target.current) {\n return;\n }\n var ev = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n target: target.current\n };\n changeValue(ev, null);\n closePopup(ev);\n event.preventDefault();\n }, [controlled, props.onChange, isOpen, opened, onClose]);\n var onExpand = React.useCallback(function (event) {\n event.syntheticEvent.stopPropagation();\n if (props.onExpandChange && target.current) {\n var item = event.item, itemHierarchicalIndex = event.itemHierarchicalIndex, nativeEvent = event.nativeEvent, syntheticEvent = event.syntheticEvent;\n var expandEvent = {\n level: toLevel(itemHierarchicalIndex),\n item: item,\n nativeEvent: nativeEvent,\n syntheticEvent: syntheticEvent,\n target: target.current\n };\n props.onExpandChange.call(undefined, expandEvent);\n }\n }, [props.onExpandChange]);\n var onFilterChange = React.useCallback(function (event) {\n if (props.onFilterChange && target.current) {\n var filterDesc = { field: props.textField, operator: 'contains', value: event.target.value };\n var ev = {\n filter: filterDesc,\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n target: target.current\n };\n props.onFilterChange.call(undefined, ev);\n if (props.filter === undefined) {\n setFilter(event.target.value);\n }\n }\n }, [props.onFilterChange, props.filter, props.textField]);\n var renderAdaptiveListContainer = function () {\n var mobileFilter = combinedProps.filterable ? (React.createElement(ListFilter, { value: combinedProps.filter === undefined ? filter : combinedProps.filter, ref: adaptiveInputRef, onChange: onFilterChange, onKeyDown: onInputKeyDown, size: size, rounded: rounded, fillMode: fillMode })) : null;\n var actionSheetProps = {\n adaptiveTitle: combinedProps.adaptiveTitle,\n expand: isOpen,\n onClose: function (event) { return closePopup(event); },\n windowWidth: windowWidth,\n mobileFilter: mobileFilter\n };\n return (React.createElement(AdaptiveMode, __assign({}, actionSheetProps),\n React.createElement(ActionSheetContent, { className: '!k-overflow-hidden' },\n React.createElement(\"div\", { className: 'k-list-container' },\n React.createElement(\"div\", { className: 'k-list k-list-lg' }, data.length > 0 ? (React.createElement(TreeView, { ref: treeViewRef, tabIndex: tabIndex, data: treeViewData, focusIdField: dataItemKey, textField: combinedProps.textField, selectField: selectField, expandField: combinedProps.expandField, childrenField: subItemsField, expandIcons: true, onItemClick: onChange, onExpandChange: onExpand, size: size, item: combinedProps.item, dir: dir })) : (React.createElement(NoData, null, localization.toLanguageString(nodata, messages[nodata]))))))));\n };\n var calculateMedia = React.useCallback(function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n setWindowWidth(entry.target.clientWidth);\n }\n ;\n }, []);\n var treeViewData = React.useMemo(function () {\n return (controlled || !hasValue) ? data :\n mapTree(data, subItemsField, function (item) {\n var _a;\n return extendDataItem(item, subItemsField, (_a = {}, _a[selectField] = areSame(item, value, dataItemKey), _a));\n });\n }, [data, value, controlled, hasValue, selectField, subItemsField]);\n var NoData = combinedProps.listNoData || ListNoData;\n var ValueComponent = combinedProps.valueHolder || ValueHolder;\n var localization = useLocalization();\n var isValid = !validityStyles || validity.valid;\n var size = combinedProps.size, rounded = combinedProps.rounded, fillMode = combinedProps.fillMode;\n var dropdowntree = (React.createElement(React.Fragment, null,\n React.createElement(\"span\", { className: classNames('k-dropdowntree k-picker', combinedProps.className, (_a = {},\n _a[\"k-picker-\".concat(sizeMap[size] || size)] = size,\n _a[\"k-rounded-\".concat(roundedMap[rounded] || rounded)] = rounded,\n _a[\"k-picker-\".concat(fillMode)] = fillMode,\n _a['k-focus'] = focused,\n _a['k-invalid'] = !isValid,\n _a['k-loading'] = combinedProps.loading,\n _a['k-required'] = required,\n _a['k-disabled'] = combinedProps.disabled,\n _a)), tabIndex: tabIndex, accessKey: combinedProps.accessKey, id: id, style: label ? __assign(__assign({}, style), { width: undefined }) : style, dir: dir, ref: elementRef, onKeyDown: disabled ? undefined : onWrapperKeyDown, onMouseDown: onWrapperMouseDown, onClick: disabled ? undefined : onWrapperClick, onFocus: onFocus, onBlur: onBlur, role: \"combobox\", \"aria-haspopup\": \"tree\", \"aria-expanded\": isOpen, \"aria-disabled\": disabled, \"aria-label\": label, \"aria-labelledby\": combinedProps.ariaLabelledBy, \"aria-describedby\": combinedProps.ariaDescribedBy, \"aria-required\": required },\n React.createElement(\"span\", { className: \"k-input-inner\" },\n React.createElement(ValueComponent, { item: value }, currentValueText || placeholder)),\n combinedProps.loading && React.createElement(IconWrap, { className: \"k-input-loading-icon\", name: 'loading' }),\n hasValue && !disabled && (React.createElement(\"span\", { onClick: onClear, className: \"k-clear-value\", title: localization.toLanguageString(clear, messages[clear]), role: \"button\", tabIndex: -1, onMouseDown: function (e) { return e.preventDefault(); } },\n React.createElement(IconWrap, { name: 'x', icon: xIcon }))),\n React.createElement(Button, { tabIndex: -1, type: \"button\", \"aria-label\": \"select\", className: \"k-input-button\", size: size, fillMode: fillMode, themeColor: \"base\", rounded: null, icon: \"caret-alt-down\", svgIcon: caretAltDownIcon }),\n React.createElement(\"select\", { name: name, ref: selectRef, tabIndex: -1, \"aria-hidden\": true, title: label, style: { opacity: 0, width: 1, border: 0, zIndex: -1, position: 'absolute', left: '50%' } },\n React.createElement(\"option\", { value: combinedProps.valueMap ? combinedProps.valueMap.call(undefined, value) : value })),\n !isAdaptive && React.createElement(Popup, { className: classNames(popupSettings.className, { 'k-rtl': dir === 'rtl' }), popupClass: classNames(popupSettings.popupClass, 'k-dropdowntree-popup'), style: popupStyles, animate: popupSettings.animate, anchor: elementRef.current, show: isOpen, onOpen: onPopupOpened, onClose: onPopupClosed, appendTo: popupSettings.appendTo },\n combinedProps.filterable && (React.createElement(ListFilter, { value: combinedProps.filter === undefined ? filter : combinedProps.filter, ref: inputRef, onChange: onFilterChange, onKeyDown: onInputKeyDown, size: size, rounded: rounded, fillMode: fillMode })),\n data.length > 0 ? (React.createElement(TreeView, { ref: treeViewRef, tabIndex: tabIndex, data: treeViewData, focusIdField: dataItemKey, textField: combinedProps.textField, selectField: selectField, expandField: combinedProps.expandField, childrenField: subItemsField, expandIcons: true, onItemClick: onChange, onExpandChange: onExpand, size: size, item: combinedProps.item, dir: dir })) : (React.createElement(NoData, null, localization.toLanguageString(nodata, messages[nodata]))))),\n isAdaptive && renderAdaptiveListContainer()));\n return label ? (React.createElement(FloatingLabel, { label: label, editorValue: currentValueText, editorPlaceholder: placeholder, editorValid: isValid, editorDisabled: disabled, editorId: id, style: { width: style ? style.width : undefined }, children: dropdowntree, dir: dir })) : dropdowntree;\n});\nvar propTypes = {\n opened: PropTypes.bool,\n disabled: PropTypes.bool,\n dir: PropTypes.string,\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n data: PropTypes.array,\n value: PropTypes.any,\n valueMap: PropTypes.func,\n placeholder: PropTypes.string,\n dataItemKey: PropTypes.string.isRequired,\n textField: PropTypes.string.isRequired,\n selectField: PropTypes.string,\n expandField: PropTypes.string,\n subItemsField: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n validityStyles: PropTypes.bool,\n valid: PropTypes.bool,\n required: PropTypes.bool,\n name: PropTypes.string,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n filterable: PropTypes.bool,\n filter: PropTypes.string,\n loading: PropTypes.bool,\n popupSettings: PropTypes.shape({\n animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({\n openDuration: PropTypes.number,\n closeDuration: PropTypes.number\n })]),\n popupClass: PropTypes.string,\n className: PropTypes.string,\n appendTo: PropTypes.any,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n }),\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFilterChange: PropTypes.func,\n onExpandChange: PropTypes.func,\n item: PropTypes.func,\n valueHolder: PropTypes.func,\n listNoData: PropTypes.func,\n adaptiveTitle: PropTypes.string,\n adaptive: PropTypes.bool\n};\nDropDownTree.displayName = 'KendoReactDropDownTree';\nDropDownTree.propTypes = propTypes;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar _this = this;\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, noop, useRtl, getTabIndex, Keys, guid, kendoThemeMaps, createPropsContext, usePropsContext, IconWrap, canUseDOM } from '@progress/kendo-react-common';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { TreeView } from '@progress/kendo-react-treeview';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './../package-metadata';\nimport { getItemValue, areSame, matchTags } from '../common/utils';\nimport { useDropdownWidth } from './../DropDownTree/useDropdownWidth';\nimport { ListNoData } from './../DropDownTree/ListNoData';\nimport { messages, nodata, adaptiveModeFooterCancel, adaptiveModeFooterApply } from './../messages';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport TagList from '../MultiSelect/TagList';\nimport ClearButton from '../common/ClearButton';\nimport ListFilter from '../common/ListFilter';\nimport { AdaptiveMode } from '../common/AdaptiveMode';\nimport { ActionSheetContent } from '@progress/kendo-react-layout';\nimport { MOBILE_MEDIUM_DEVISE } from '../common/constants';\nvar VALIDATION_MESSAGE = 'Please select a value from the list!';\nvar sizeMap = kendoThemeMaps.sizeMap, roundedMap = kendoThemeMaps.roundedMap;\nvar toLevel = function (hierarchicalIndex) {\n return hierarchicalIndex.split('_').map(function (i) { return parseInt(i, 10); });\n};\nvar getValidity = function (parameters, hasValue) {\n var validationMessage = parameters.validationMessage, valid = parameters.valid, required = parameters.required;\n return ({\n customError: validationMessage !== undefined,\n valid: Boolean(valid !== undefined ? valid : (!required || hasValue)),\n valueMissing: !hasValue\n });\n};\nvar defaultProps = {\n checkField: 'checkField',\n checkIndeterminateField: 'checkIndeterminateField',\n subItemsField: 'items',\n popupSettings: {\n animate: true,\n width: '200px',\n height: '200px'\n },\n size: 'medium',\n rounded: 'medium',\n fillMode: 'solid',\n required: false,\n validityStyles: true\n};\n/**\n * Represents the PropsContext of the `MultiSelectTree` component.\n * Used for global configuration of all `MultiSelectTree` instances.\n *\n * For more information, refer to the [Dropdowns Props Context]({% slug props-context_dropdowns %}) article.\n */\nexport var MultiSelectTreePropsContext = createPropsContext();\n/**\n * Represents the MultiSelectTree component.\n *\n * Accepts properties of type [MultiSelectTreeProps]({% slug api_dropdowns_multiselecttreeprops %}).\n * Obtaining the `ref` returns an object of type [MultiSelectTreeHandle]({% slug api_dropdowns_multiselecttreehandle %}).\n *\n * @example\n * ```jsx\n * const dataItemKey = 'id';\n * const checkField = 'checkField';\n * const checkIndeterminateField = 'checkIndeterminateField';\n * const subItemsField = 'items';\n * const expandField = 'expanded';\n * const textField = 'text';\n * const fields = {\n * dataItemKey,\n * checkField,\n * checkIndeterminateField,\n * expandField,\n * subItemsField,\n * };\n * const App = () => {\n * const [value, setValue] = React.useState([]);\n * const [expanded, setExpanded] = React.useState([data[0][dataItemKey]]);\n * const onChange = (event) =>\n * setValue(\n * getMultiSelectTreeValue(data, {\n * ...fields,\n * ...event,\n * value,\n * })\n * );\n * const onExpandChange = React.useCallback(\n * (event) => setExpanded(expandedState(event.item, dataItemKey, expanded)),\n * [expanded]\n * );\n * const treeData = React.useMemo(\n * () =>\n * processMultiSelectTreeData(data, {\n * expanded,\n * value,\n * ...fields,\n * }),\n * [expanded, value]\n * );\n *\n * return (\n *
    \n *
    Categories:
    \n * \n *
    \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var MultiSelectTree = React.forwardRef(function (directProps, ref) {\n var _a, _b;\n var props = usePropsContext(MultiSelectTreePropsContext, directProps);\n validatePackage(packageMetadata);\n var componentGuid = React.useMemo(function () { return guid(); }, []);\n var id = props.id || componentGuid;\n var _c = props.data, data = _c === void 0 ? [] : _c, dataItemKey = props.dataItemKey, _d = props.popupSettings, popupSettings = _d === void 0 ? {} : _d, _e = props.style, style = _e === void 0 ? {} : _e, opened = props.opened, disabled = props.disabled, _f = props.onOpen, onOpen = _f === void 0 ? noop : _f, _g = props.onClose, onClose = _g === void 0 ? noop : _g, placeholder = props.placeholder, label = props.label, name = props.name, _h = props.checkField, checkField = _h === void 0 ? defaultProps.checkField : _h, _j = props.checkIndeterminateField, checkIndeterminateField = _j === void 0 ? defaultProps.checkIndeterminateField : _j, _k = props.subItemsField, subItemsField = _k === void 0 ? defaultProps.subItemsField : _k, validationMessage = props.validationMessage, valid = props.valid, tags = props.tags, value = props.value, _l = props.required, required = _l === void 0 ? defaultProps.required : _l, _m = props.validityStyles, validityStyles = _m === void 0 ? defaultProps.validityStyles : _m;\n var tabIndex = getTabIndex(props.tabIndex, disabled);\n var targetRef = React.useRef(null);\n var elementRef = React.useRef(null);\n var inputRef = React.useRef(null);\n var adaptiveInputRef = React.useRef(null);\n var selectRef = React.useRef(null);\n var treeViewRef = React.useRef(null);\n var skipFocusRef = React.useRef(false);\n var tagsToRenderRef = React.useRef([]);\n var popupRef = React.useRef(null);\n var _o = React.useState(), focusedTagState = _o[0], setFocusedTagState = _o[1];\n var _p = React.useState(false), openState = _p[0], setOpenState = _p[1];\n var _q = React.useState(false), focusedState = _q[0], setFocusedState = _q[1];\n var _r = React.useState(), windowWidth = _r[0], setWindowWidth = _r[1];\n var _s = React.useState([]), currentTreeValue = _s[0], setCurrentTreeValue = _s[1];\n var _t = React.useState(''), filterState = _t[0], setFilterState = _t[1];\n var isAdaptive = !!(windowWidth && windowWidth <= MOBILE_MEDIUM_DEVISE && props.adaptive);\n var isOpen = opened !== undefined ? opened : openState;\n var hasValue = Boolean(Array.isArray(value) && value.length);\n var validity = getValidity({ validationMessage: validationMessage, valid: valid, required: required }, hasValue);\n var dir = useRtl(elementRef, props.dir);\n var initialStyleWidth = popupSettings.width !== undefined ?\n popupSettings.width : (style.width !== undefined ? style.width : defaultProps.popupSettings.width);\n var popupWidth = useDropdownWidth(elementRef, initialStyleWidth);\n var popupStyles = __assign({ width: popupWidth }, (dir !== undefined ? { direction: dir } : {}));\n var focus = React.useCallback(function () { return elementRef.current && elementRef.current.focus(); }, []);\n tagsToRenderRef.current = tags === undefined ?\n (value || []).map(function (item) { return ({ text: getItemValue(item, props.textField), data: [item] }); }) : __spreadArray([], tags, true);\n React.useImperativeHandle(targetRef, function () { return ({\n props: props,\n element: elementRef.current,\n focus: focus\n }); });\n React.useImperativeHandle(ref, function () { return targetRef.current; });\n var setValidity = React.useCallback(function () {\n if (selectRef.current && selectRef.current.setCustomValidity) {\n selectRef.current.setCustomValidity(validity.valid\n ? ''\n : validationMessage === undefined ? VALIDATION_MESSAGE : validationMessage);\n }\n }, [validationMessage, validity]);\n React.useEffect(setValidity);\n React.useEffect(function () {\n var observerResize = canUseDOM && window.ResizeObserver && new window.ResizeObserver(calculateMedia.bind(_this));\n if ((document === null || document === void 0 ? void 0 : document.body) && observerResize) {\n observerResize.observe(document.body);\n }\n return function () {\n if (observerResize) {\n observerResize.disconnect();\n }\n };\n }, []);\n React.useEffect(function () {\n if (popupRef.current && isOpen) {\n popupRef.current.setPosition(popupRef.current._popup);\n }\n }, [value, isOpen]);\n var changeValue = React.useCallback(function (event, relatedItems, operation) {\n if (props.onChange) {\n var changeEvent = __assign({ items: relatedItems, operation: operation }, event);\n props.onChange.call(undefined, changeEvent);\n }\n }, [props.onChange]);\n var onChange = React.useCallback(function (event) {\n if (areSame(event.item, value, dataItemKey) || !targetRef.current) {\n return;\n }\n var item = event.item, nativeEvent = event.nativeEvent, syntheticEvent = event.syntheticEvent;\n var ev = {\n syntheticEvent: syntheticEvent,\n nativeEvent: nativeEvent,\n target: targetRef.current\n };\n changeValue(ev, [item], 'toggle');\n }, [value, dataItemKey, changeValue]);\n var openPopup = React.useCallback(function (event) {\n if (!isOpen) {\n if (onOpen) {\n var openEvent = __assign({}, event);\n onOpen.call(undefined, openEvent);\n }\n if (opened === undefined) {\n setOpenState(true);\n setCurrentTreeValue(value || []);\n if (isAdaptive) {\n setTimeout(function () {\n var _a;\n focusElement((_a = adaptiveInputRef.current) === null || _a === void 0 ? void 0 : _a.element);\n }, 300);\n }\n }\n }\n }, [isOpen, opened, onOpen, isAdaptive, adaptiveInputRef]);\n var closePopup = React.useCallback(function (event) {\n if (isOpen) {\n if (onClose) {\n var closeEvent = __assign({}, event);\n onClose.call(undefined, closeEvent);\n }\n if (opened === undefined) {\n setOpenState(false);\n }\n }\n }, [isOpen, opened, onClose]);\n var switchFocus = React.useCallback(function (focusFn) {\n skipFocusRef.current = true;\n focusFn();\n window.setTimeout(function () { return skipFocusRef.current = false; }, 0);\n }, []);\n var focusElement = React.useCallback(function (element) {\n if (element) {\n switchFocus(function () { return element.focus(); });\n }\n }, [switchFocus]);\n var onPopupOpened = React.useCallback(function () {\n var _a;\n if (!focusedState && isOpen) {\n closePopup({ target: targetRef.current });\n }\n else {\n if (props.filterable) {\n focusElement((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element);\n }\n else {\n focusElement(treeViewRef.current && treeViewRef.current.element);\n }\n }\n }, [focusedState, isOpen, focusElement, closePopup, props.filterable]);\n var onPopupClosed = React.useCallback(function () {\n if (focusedState) {\n // Move the focus from treeview to dropdown without triggering Focus or Blur events.\n focusElement(elementRef.current);\n }\n }, [focusedState, focusElement]);\n var onFocus = React.useCallback(function (event) {\n if (!focusedState && !skipFocusRef.current) {\n setFocusedState(true);\n if (props.onFocus && targetRef.current) {\n var focusEvent = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n target: targetRef.current\n };\n props.onFocus.call(undefined, focusEvent);\n }\n }\n }, [focusedState, props.onFocus]);\n var onBlur = React.useCallback(function (event) {\n if (focusedState && !skipFocusRef.current && targetRef.current) {\n setFocusedState(false);\n var ev = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n target: targetRef.current\n };\n if (props.onBlur) {\n var focusEvent = __assign({}, ev);\n props.onBlur.call(undefined, focusEvent);\n }\n if (!isAdaptive) {\n closePopup(ev);\n }\n }\n }, [focusedState, props.onBlur, isOpen, opened, onClose]);\n var onWrapperMouseDown = React.useCallback(function () {\n if (focusedState) {\n // moving focus from treeview to dropdown triggers Focus and Blur events.\n switchFocus(noop);\n }\n }, [focusedState, switchFocus]);\n var onWrapperClick = React.useCallback(function (event) {\n if (!event.isDefaultPrevented() && targetRef.current) {\n setFocusedState(true);\n var ev = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n target: targetRef.current\n };\n if (!isOpen) {\n openPopup(ev);\n }\n }\n }, [isOpen, openPopup]);\n var onWrapperKeyDown = React.useCallback(function (event) {\n var _a, _b;\n var keyCode = event.keyCode, altKey = event.altKey;\n var treeviewElement = treeViewRef.current && treeViewRef.current.element;\n if (!targetRef.current || (event.isDefaultPrevented() && ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element) === event.target)) {\n return;\n }\n var ev = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n target: targetRef.current\n };\n if (value && value.length > 0 &&\n (keyCode === Keys.left || keyCode === Keys.right ||\n keyCode === Keys.home || keyCode === Keys.end ||\n keyCode === Keys.delete)) {\n var tagsToRender = tagsToRenderRef.current;\n var focusedIndex = focusedTagState ?\n tagsToRender.findIndex(function (t) { return matchTags(t, focusedTagState, dataItemKey); }) : -1;\n var newFocusedTag = undefined;\n var hasFocused = focusedIndex !== -1;\n if (keyCode === Keys.left) {\n if (hasFocused) {\n focusedIndex = Math.max(0, focusedIndex - 1);\n }\n else {\n focusedIndex = tagsToRender.length - 1;\n }\n newFocusedTag = tagsToRender[focusedIndex];\n }\n else if (keyCode === Keys.right) {\n if (focusedIndex === tagsToRender.length - 1) {\n newFocusedTag = undefined;\n }\n else if (hasFocused) {\n focusedIndex = Math.min(tagsToRender.length - 1, focusedIndex + 1);\n newFocusedTag = tagsToRender[focusedIndex];\n }\n }\n else if (keyCode === Keys.home) {\n newFocusedTag = tagsToRender[0];\n }\n else if (keyCode === Keys.end) {\n newFocusedTag = tagsToRender[tagsToRender.length - 1];\n }\n else if (keyCode === Keys.delete) {\n if (hasFocused) {\n changeValue(ev, tagsToRender[focusedIndex].data, 'delete');\n }\n }\n if (newFocusedTag !== focusedTagState) {\n setFocusedTagState(newFocusedTag);\n }\n }\n if (isOpen) {\n if (keyCode === Keys.esc || (altKey && keyCode === Keys.up)) {\n event.preventDefault();\n closePopup(ev);\n }\n else if (treeviewElement && treeviewElement.querySelector('.k-focus') &&\n (keyCode === Keys.up || keyCode === Keys.down ||\n keyCode === Keys.left || keyCode === Keys.right ||\n keyCode === Keys.home || keyCode === Keys.end)) {\n if (keyCode === Keys.up && ((_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.element)) {\n var items = Array.from(treeviewElement.querySelectorAll('.k-treeview-item'));\n var focusedItem = __spreadArray([], items, true).reverse().find(function (i) { return Boolean(i && i.querySelector('.k-focus')); });\n if (focusedItem && items.indexOf(focusedItem) === 0) {\n return switchFocus(function () { var _a; focusElement((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element); });\n }\n }\n switchFocus(noop);\n }\n else if (keyCode === Keys.down) {\n switchFocus(function () { var _a; focusElement(((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element) || treeviewElement); });\n }\n }\n else {\n if (altKey && keyCode === Keys.down) {\n event.preventDefault();\n openPopup(ev);\n }\n }\n }, [isOpen, closePopup, focusElement, switchFocus, openPopup, focusedTagState, dataItemKey, value, changeValue]);\n var onInputKeyDown = React.useCallback(function (event) {\n var keyCode = event.keyCode, altKey = event.altKey;\n if (altKey || (keyCode !== Keys.up && keyCode !== Keys.down)) {\n return;\n }\n event.preventDefault();\n switchFocus(keyCode === Keys.up ?\n function () { focusElement(elementRef.current); } :\n function () { focusElement(treeViewRef.current && treeViewRef.current.element); });\n }, [focusElement, switchFocus]);\n var onClear = React.useCallback(function (event) {\n if (!targetRef.current) {\n return;\n }\n var ev = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n target: targetRef.current\n };\n changeValue(ev, [], 'clear');\n closePopup(ev);\n event.preventDefault();\n }, [changeValue, closePopup]);\n var onTagDelete = React.useCallback(function (itemsToRemove, event) {\n var _a;\n closePopup({ target: targetRef.current });\n if (!focusedState) {\n focusElement((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.element);\n }\n changeValue({\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n target: targetRef.current\n }, itemsToRemove, 'delete');\n }, [changeValue, closePopup, focusElement, focusedState]);\n var onExpand = React.useCallback(function (event) {\n if (props.onExpandChange && targetRef.current) {\n var item = event.item, itemHierarchicalIndex = event.itemHierarchicalIndex, nativeEvent = event.nativeEvent, syntheticEvent = event.syntheticEvent;\n var expandEvent = {\n level: toLevel(itemHierarchicalIndex),\n item: item,\n nativeEvent: nativeEvent,\n syntheticEvent: syntheticEvent,\n target: targetRef.current\n };\n props.onExpandChange.call(undefined, expandEvent);\n }\n }, [props.onExpandChange]);\n var onFilterChange = React.useCallback(function (event) {\n if (props.onFilterChange && targetRef.current) {\n var filterDesc = { field: props.textField, operator: 'contains', value: event.target.value };\n var ev = {\n filter: filterDesc,\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n target: targetRef.current\n };\n props.onFilterChange.call(undefined, ev);\n if (props.filter === undefined) {\n setFilterState(event.target.value);\n }\n }\n }, [props.onFilterChange, props.filter, props.textField]);\n var onCancel = React.useCallback(function (event) {\n if (!targetRef.current) {\n return;\n }\n var ev = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n target: targetRef.current\n };\n if (props.onCancel) {\n props.onCancel.call(undefined, ev);\n }\n ;\n closePopup(ev);\n event.preventDefault();\n }, [props.onCancel, closePopup]);\n var renderAdaptiveListContainer = function () {\n var mobileFilter = props.filterable ? (React.createElement(ListFilter, { value: props.filter === undefined ? filterState : props.filter, ref: adaptiveInputRef, onChange: onFilterChange, onKeyDown: onInputKeyDown, size: size, rounded: rounded, fillMode: fillMode })) : null;\n var actionSheetProps = {\n adaptiveTitle: props.adaptiveTitle,\n expand: isOpen,\n onClose: function (event) { return props.onCancel ? onCancel(event) : onClear(event); },\n windowWidth: windowWidth,\n mobileFilter: mobileFilter,\n footer: {\n cancelText: localization.toLanguageString(adaptiveModeFooterCancel, messages[adaptiveModeFooterCancel]),\n onCancel: function (event) { return props.onCancel ? onCancel(event) : onClear(event); },\n applyText: localization.toLanguageString(adaptiveModeFooterApply, messages[adaptiveModeFooterApply]),\n onApply: function (event) { return closePopup(event); }\n }\n };\n return (React.createElement(AdaptiveMode, __assign({}, actionSheetProps),\n React.createElement(ActionSheetContent, { className: '!k-overflow-hidden' },\n React.createElement(\"div\", { className: 'k-list-container' },\n React.createElement(\"div\", { className: 'k-list k-list-lg' }, data.length > 0 ? (React.createElement(TreeView, { ref: treeViewRef, tabIndex: tabIndex, data: data, focusIdField: dataItemKey, textField: props.textField, checkField: checkField, checkIndeterminateField: checkIndeterminateField, expandField: props.expandField, childrenField: subItemsField, expandIcons: true, onItemClick: onChange, onCheckChange: onChange, onExpandChange: onExpand, checkboxes: true, size: size, item: props.item, dir: dir })) : (React.createElement(NoData, null, localization.toLanguageString(nodata, messages[nodata]))))))));\n };\n var calculateMedia = React.useCallback(function (entries) {\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n setWindowWidth(entry.target.clientWidth);\n }\n ;\n }, []);\n var NoData = props.listNoData || ListNoData;\n var localization = useLocalization();\n var isValid = !validityStyles || validity.valid;\n var size = props.size, rounded = props.rounded, fillMode = props.fillMode;\n var currentTagsToRender = isAdaptive && isOpen ? currentTreeValue : tagsToRenderRef.current;\n var multiselecttree = (React.createElement(React.Fragment, null,\n React.createElement(\"span\", { className: classNames('k-multiselecttree k-input', props.className, (_a = {},\n _a[\"k-input-\".concat(sizeMap[size] || size)] = size,\n _a[\"k-rounded-\".concat(roundedMap[rounded] || rounded)] = rounded,\n _a[\"k-input-\".concat(fillMode)] = fillMode,\n _a['k-focus'] = focusedState && !disabled,\n _a['k-invalid'] = !isValid,\n _a['k-disabled'] = disabled,\n _a['k-loading'] = props.loading,\n _a['k-required'] = required,\n _a)), tabIndex: tabIndex, accessKey: props.accessKey, id: id, style: label ? __assign(__assign({}, style), { width: undefined }) : style, dir: dir, ref: elementRef, onKeyDown: disabled ? undefined : onWrapperKeyDown, onMouseDown: onWrapperMouseDown, onFocus: onFocus, onBlur: onBlur, role: \"combobox\", \"aria-haspopup\": \"tree\", \"aria-expanded\": isOpen, \"aria-disabled\": disabled, \"aria-label\": label, \"aria-labelledby\": props.ariaLabelledBy, \"aria-describedby\": props.ariaDescribedBy ? props.ariaDescribedBy : 'tagslist-' + id, \"aria-required\": props.required, onClick: disabled ? undefined : onWrapperClick },\n React.createElement(\"div\", { id: 'tagslist-' + id, className: classNames('k-input-values k-chip-list k-selection-multiple', (_b = {},\n _b[\"k-chip-list-\".concat(sizeMap[size] || size)] = size,\n _b)) }, currentTagsToRender.length > 0 ? (React.createElement(TagList, { tag: props.tag, onTagDelete: onTagDelete, data: currentTagsToRender, guid: id, focused: focusedTagState ? tagsToRenderRef.current.find(function (t) { return matchTags(t, focusedTagState, dataItemKey); }) : undefined, size: size })) : placeholder),\n React.createElement(\"span\", { className: \"k-input-inner\" },\n React.createElement(\"span\", { className: \"k-input-value-text\" }, \"\\u00A0\")),\n props.loading && React.createElement(IconWrap, { className: \"k-input-loading-icon\", name: 'loading' }),\n hasValue && !disabled && currentTagsToRender.length > 0 &&\n React.createElement(ClearButton, { onClick: onClear }),\n React.createElement(\"select\", { name: name, ref: selectRef, tabIndex: -1, \"aria-hidden\": true, title: label, style: { opacity: 0, width: 1, border: 0, zIndex: -1, position: 'absolute', left: '50%' } },\n React.createElement(\"option\", { value: props.valueMap ? props.valueMap.call(undefined, value) : value })),\n !isAdaptive && React.createElement(Popup, { popupClass: classNames(popupSettings.popupClass, 'k-multiselecttree-popup'), className: classNames(popupSettings.className, { 'k-rtl': dir === 'rtl' }), style: popupStyles, animate: popupSettings.animate, anchor: elementRef.current, show: isOpen, onOpen: onPopupOpened, onClose: onPopupClosed, appendTo: popupSettings.appendTo, ref: popupRef },\n props.filterable && (React.createElement(ListFilter, { value: props.filter === undefined ? filterState : props.filter, ref: inputRef, onChange: onFilterChange, onKeyDown: onInputKeyDown, tabIndex: tabIndex, size: size, rounded: rounded, fillMode: fillMode })),\n data.length > 0 ? (React.createElement(TreeView, { ref: treeViewRef, tabIndex: tabIndex, data: data, focusIdField: dataItemKey, textField: props.textField, checkField: checkField, checkIndeterminateField: checkIndeterminateField, expandField: props.expandField, childrenField: subItemsField, expandIcons: true, onItemClick: onChange, onCheckChange: onChange, onExpandChange: onExpand, checkboxes: true, size: size, item: props.item, dir: dir })) : (React.createElement(NoData, null, localization.toLanguageString(nodata, messages[nodata]))))),\n isAdaptive && renderAdaptiveListContainer()));\n return label ? (React.createElement(FloatingLabel, { label: label, editorValue: hasValue, editorPlaceholder: placeholder, editorValid: isValid, editorDisabled: disabled, editorId: id, style: { width: style ? style.width : undefined }, children: multiselecttree, dir: dir })) : multiselecttree;\n});\nvar propTypes = {\n opened: PropTypes.bool,\n disabled: PropTypes.bool,\n dir: PropTypes.string,\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n data: PropTypes.array,\n value: PropTypes.any,\n valueMap: PropTypes.func,\n placeholder: PropTypes.string,\n dataItemKey: PropTypes.string.isRequired,\n textField: PropTypes.string.isRequired,\n checkField: PropTypes.string,\n checkIndeterminateField: PropTypes.string,\n expandField: PropTypes.string,\n subItemsField: PropTypes.string,\n className: PropTypes.string,\n style: PropTypes.object,\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n validityStyles: PropTypes.bool,\n valid: PropTypes.bool,\n required: PropTypes.bool,\n name: PropTypes.string,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n filterable: PropTypes.bool,\n filter: PropTypes.string,\n loading: PropTypes.bool,\n tags: PropTypes.arrayOf(PropTypes.shape({\n text: PropTypes.string,\n data: PropTypes.arrayOf(PropTypes.any)\n })),\n popupSettings: PropTypes.shape({\n animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({\n openDuration: PropTypes.number,\n closeDuration: PropTypes.number\n })]),\n popupClass: PropTypes.string,\n className: PropTypes.string,\n appendTo: PropTypes.any,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n }),\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFilterChange: PropTypes.func,\n onExpandChange: PropTypes.func,\n onCancel: PropTypes.func,\n item: PropTypes.func,\n listNoData: PropTypes.func,\n adaptiveTitle: PropTypes.string,\n adaptive: PropTypes.bool\n};\nMultiSelectTree.displayName = 'KendoReactMultiSelectTree';\nMultiSelectTree.defaultProps = defaultProps;\nMultiSelectTree.propTypes = propTypes;\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { getter } from '@progress/kendo-react-common';\n/** @hidden */\nexport var getValueMap = function (value, idGetter) {\n var map = {};\n if (value && value.length) {\n value.forEach(function (item) {\n map[idGetter(item)] = true;\n });\n }\n return map;\n};\n/**\n * Get MultiSelectTree new value from the component `onChange` event.\n *\n * @param {any[]} data\n * @param {object} options\n * @returns {any[]}\n */\nexport var getMultiSelectTreeValue = function (data, options) {\n var items = options.items, dataItemKey = options.dataItemKey, value = options.value, _a = options.subItemsField, subItemsField = _a === void 0 ? 'items' : _a, operation = options.operation;\n var idGetter = getter(dataItemKey);\n var valueMap = getValueMap(value, idGetter);\n if (operation === 'clear') {\n return [];\n }\n else if (operation === 'delete') {\n var deletedItemsMap_1 = getValueMap(items, idGetter);\n return value.filter(function (item) { return !deletedItemsMap_1[idGetter(item)]; });\n }\n // operation === 'toggle'\n var selectedItem = items[0];\n var selectedId = idGetter(selectedItem);\n var subItemGetter = getter(subItemsField);\n var stack = __spreadArray([], data, true);\n var context = [];\n var parents = [];\n var foundItem;\n while (stack.length) {\n var currentItem = stack.pop();\n if (selectedId === idGetter(currentItem)) {\n parents = context.map(function (contextItem) { return contextItem.item; });\n foundItem = currentItem;\n break;\n }\n else {\n if (context &&\n context.length &&\n context[context.length - 1].parentPosition === stack.length) {\n context.pop();\n }\n var subItems = subItemGetter(currentItem);\n if (subItems && subItems.length) {\n context.push({ item: currentItem, parentPosition: stack.length });\n stack.push.apply(stack, subItems);\n }\n }\n }\n var childrenStack = __spreadArray([], (subItemGetter(foundItem) || []), true);\n var children = [];\n while (childrenStack.length) {\n var currentItem = childrenStack.pop();\n children.push(currentItem);\n var subItems = subItemGetter(currentItem);\n if (subItems && subItems.length) {\n childrenStack.push.apply(childrenStack, subItems);\n }\n }\n var isChecked = !valueMap[selectedId];\n var newValue = [];\n if (isChecked) {\n newValue.push.apply(newValue, value);\n newValue.push(foundItem);\n newValue.push.apply(newValue, children.filter(function (item) { return !valueMap[idGetter(item)]; }));\n var parentCandidates = parents.filter(function (item) { return !valueMap[idGetter(item)]; });\n var newValueMap_1 = getValueMap(newValue, idGetter);\n for (var i = parentCandidates.length - 1; i > -1; i--) {\n var candidate = parentCandidates[i];\n var subItems = subItemGetter(candidate);\n var checkedChildrenLength = subItems.filter(function (item) { return newValueMap_1[idGetter(item)]; }).length;\n if (checkedChildrenLength < subItems.length) {\n break;\n }\n else {\n newValue.push(candidate);\n newValueMap_1[idGetter(candidate)] = true;\n }\n }\n }\n else {\n var foundId_1 = idGetter(foundItem);\n var childrenMap_1 = getValueMap(children, idGetter);\n var parentsMap_1 = getValueMap(parents, idGetter);\n newValue.push.apply(newValue, (value\n .filter(function (item) {\n var itemId = idGetter(item);\n return !childrenMap_1[itemId] && foundId_1 !== itemId && !parentsMap_1[itemId];\n })));\n }\n return newValue;\n};\n// /** @hidden */\n// const mapCheckAndIntermidiate = (\n// data,\n// options: {\n// valueMap: {[dataItemKey: string]: boolean};\n// callback?: (item: any) => any;\n// idGetter: (item: any) => any;\n// subItemGetter: (item: any) => any;\n// subItemSetter: (item: any, value: any) => void;\n// checkSetter: (item: any, value: any) => void;\n// checkIndeterminateSetter: (item: any, value: any) => void;\n// }\n// ) => {\n// const {\n// idGetter,\n// subItemGetter,\n// subItemSetter,\n// checkSetter,\n// checkIndeterminateSetter\n// } = options;\n// if (!data || !data.length) { return [data, false];}\n// let hasChecked = false;\n// const newData = [...data].map(dataItem => {\n// const [children, hasCheckedChildren] = mapCheckAndIntermidiate(subItemGetter(dataItem), options);\n// const isChecked = options.valueMap[idGetter(dataItem)];\n// if (isChecked || hasCheckedChildren) {\n// hasChecked = true;\n// }\n// const newItem = { ...dataItem };\n// subItemSetter(newItem, children);\n// checkSetter(newItem, isChecked);\n// checkIndeterminateSetter(newItem, !isChecked && hasCheckedChildren);\n// return options.callback ? options.callback(newItem) : newItem;\n// });\n// return [newData, hasChecked];\n// };\n// /**\n// *\n// * @param data\n// * @param options\n// * @returns\n// */\n// /**\n// * Creates a new array with the results of calling the provided callback function\n// * on every element in the provided data tree. The new tree items have their `check` and `checkIndeterminate` fields set based on provided value.\n// *\n// * @param {any[]} tree - The data tree.\n// * @param {object} options - The options used to map the tree items like check and checkIndeterminateField fields\n// * @returns {any[]} - The new data tree.\n// */\n// export const mapMultiSelectTreeData = (\n// tree,\n// options: {\n// checkField?: string;\n// checkIndeterminateField?: string;\n// subItemsField?: string;\n// dataItemKey: string;\n// value: Array;\n// callback?: (item) => any;\n// }\n// ) => {\n// const {\n// subItemsField = 'items',\n// checkField = 'checkField',\n// checkIndeterminateField = 'checkIndeterminateField',\n// callback\n// } = options;\n// const idGetter = getter(options.dataItemKey);\n// const [result] = mapCheckAndIntermidiate(\n// tree,\n// {\n// callback,\n// valueMap: getValueMap(options.value, idGetter),\n// idGetter,\n// subItemGetter: getter(subItemsField),\n// subItemSetter: setter(subItemsField),\n// checkSetter: setter(checkField),\n// checkIndeterminateSetter: setter(checkIndeterminateField)\n// }\n// );\n// return result;\n// };\n","var _a;\n/**\n * @hidden\n */\nexport var nodata = 'dropdowns.nodata';\n/**\n * @hidden\n */\nexport var clear = 'dropdowns.clear';\n/**\n * @hidden\n */\nexport var comboArrowBtnAriaLabelExpand = 'dropdowns.comboArrowBtnAriaLabelExpand';\n/**\n * @hidden\n */\nexport var comboArrowBtnAriaLabelCollapse = 'dropdowns.comboArrowBtnAriaLabelCollapse';\n/**\n * @hidden\n */\nexport var dropDownListArrowBtnAriaLabel = 'dropdowns.dropDownListArrowBtnAriaLabel';\n/**\n * @hidden\n */\nexport var adaptiveModeFooterApply = 'dropdowns.apply';\n/**\n * @hidden\n */\nexport var adaptiveModeFooterCancel = 'dropdowns.cancel';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[clear] = 'clear',\n _a[nodata] = 'NO DATA FOUND.',\n _a[comboArrowBtnAriaLabelExpand] = 'expand combobox',\n _a[comboArrowBtnAriaLabelCollapse] = 'collapse combobox',\n _a[dropDownListArrowBtnAriaLabel] = 'select',\n _a[adaptiveModeFooterApply] = 'Apply',\n _a[adaptiveModeFooterCancel] = 'Cancel',\n _a);\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-dropdowns',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698929127,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","/**\n * @hidden\n */\nexport var defaultStyle = \"\\nhtml, body {\\n margin: 0;\\n height: 100%;\\n padding: 0;\\n}\\n\\nhtml {\\n min-height: 100%;\\n}\\n\\nbody {\\n box-sizing: border-box;\\n position: relative;\\n word-wrap: break-word;\\n padding: 8px;\\n}\\n\\nbody > .k-content {\\n outline: 0;\\n height: 100%;\\n white-space: pre-wrap;\\n}\\n\\n.k-content > p {\\n margin: 0 0 1em;\\n}\\n\\n.k-content table {\\n white-space: pre-wrap;\\n}\\n\\n.k-content .k-text-selected, .k-content::selection {\\n color: HighlightText;\\n background-color: Highlight;\\n}\\n\\n.k-content .k-text-highlighted {\\n background-color: #bbdefb;\\n}\\n\\n.k-content .ProseMirror-selectednode {\\n outline: 2px solid #8cf;\\n}\\n\\n.ProseMirror-hideselection *::selection { background: transparent; }\\n.ProseMirror-hideselection *::-moz-selection { background: transparent; }\\n.ProseMirror-hideselection { caret-color: transparent; }\\n\\n.ProseMirror-gapcursor {\\n display: none;\\n pointer-events: none;\\n position: absolute;\\n}\\n\\n.ProseMirror-gapcursor:after {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n top: -2px;\\n width: 20px;\\n border-top: 1px solid black;\\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\\n}\\n\\n@keyframes ProseMirror-cursor-blink {\\n to {\\n visibility: hidden;\\n }\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n display: block;\\n}\\n\\n.k-editor-resize-handles-wrapper {\\n position: absolute;\\n visibility: hidden;\\n}\\n\\n.k-editor-resize-handle {\\n position: absolute;\\n visibility: visible;\\n background-color: #fff;\\n border: 1px solid #000;\\n z-index: 100;\\n width: 5px;\\n height: 5px;\\n}\\n\\n.k-editor-resize-handle.northwest {\\n top: 0;\\n left: 0;\\n transform: translate(-50%, -50%);\\n cursor: nw-resize;\\n}\\n\\n.k-editor-resize-handle.north {\\n top: 0;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n cursor: n-resize;\\n}\\n\\n.k-editor-resize-handle.northeast {\\n top: 0;\\n right: 0;\\n transform: translate(50%, -50%);\\n cursor: ne-resize;\\n}\\n\\n.k-editor-resize-handle.southwest {\\n left: 0;\\n bottom: 0;\\n transform: translate(-50%, 50%);\\n cursor: sw-resize;\\n}\\n\\n.k-editor-resize-handle.south {\\n bottom: 0;\\n left: 50%;\\n transform: translate(-50%, 50%);\\n cursor: s-resize;\\n}\\n\\n.k-editor-resize-handle.southeast {\\n right: 0;\\n bottom: 0;\\n transform: translate(50%, 50%);\\n cursor: se-resize;\\n}\\n\\n.k-editor-resize-handle.west {\\n top: 50%;\\n left: 0;\\n transform: translate(-50%, -50%);\\n cursor: w-resize;\\n}\\n\\n.k-editor-resize-handle.east {\\n top: 50%;\\n right: 0;\\n transform: translate(50%, -50%);\\n cursor: e-resize;\\n}\\n\\n.k-editor-resize-wrap-element {\\n display: inline-block;\\n position: relative;\\n}\\n\\n.ProseMirror .row-resize-handle {\\n position: absolute;\\n right: 0; left: 0; bottom: 0;\\n transform: translate(0, 50%);\\n height: 4px;\\n z-index: 20;\\n background-color: #adf;\\n pointer-events: none;\\n}\\n\\n.ProseMirror .column-resize-handle {\\n position: absolute;\\n right: -2px; top: 0; bottom: 0;\\n width: 4px;\\n z-index: 20;\\n background-color: #adf;\\n pointer-events: none;\\n}\\n\\n.ProseMirror.resize-cursor {\\n cursor: ew-resize;\\n cursor: col-resize;\\n}\\n\\n.ProseMirror.resize-cursor-vertical {\\n cursor: sn-resize;\\n cursor: row-resize;\\n}\\n\\n.k-editor-resize-wrap-element table td p,\\n.k-editor-resize-wrap-element table th p {\\n margin: 0 auto;\\n}\\n\";\n/**\n * @hidden\n */\nexport var tablesStyles = \"\\n .ProseMirror .tableWrapper {\\n overflow-x: auto;\\n margin: 1em 0;\\n }\\n\\n .ProseMirror table {\\n margin: 0;\\n border-collapse: collapse;\\n table-layout: fixed;\\n width: 100%;\\n overflow: hidden;\\n }\\n\\n .ProseMirror td, .ProseMirror th {\\n min-width: 1em;\\n border: 1px solid #ddd;\\n padding: 3px 5px;\\n vertical-align: top;\\n box-sizing: border-box;\\n position: relative;\\n }\\n\\n .ProseMirror th {\\n font-weight: bold;\\n text-align: left;\\n }\\n\\n /* Give selected cells a blue overlay */\\n .ProseMirror .selectedCell:after {\\n z-index: 2;\\n position: absolute;\\n content: \\\"\\\";\\n left: 0; right: 0; top: 0; bottom: 0;\\n background: rgba(200, 200, 255, 0.4);\\n pointer-events: none;\\n }\\n\";\n/**\n * @hidden\n */\nexport var rtlStyles = 'body { direction: rtl }';\n","import { AllSelection } from '@progress/kendo-editor-common';\nimport { EditorUtils } from './index';\nvar setValue = function (view, value) {\n var transaction = value.tr ||\n (view.state.tr\n .setSelection(new AllSelection(view.state.doc))\n .replaceSelectionWith(value.doc || EditorUtils.createDocument(view.state.schema, value.html || ''))\n .setMeta('commandName', 'setHTML'));\n view.updateState(view.state.apply(transaction));\n};\n/**\n * @hidden\n */\nexport var updateEditorValue = function (view, value, prevValue, trOnChange, htmlOnChange) {\n if (typeof value === 'string') {\n if (trOnChange && value === htmlOnChange) {\n setValue(view, { tr: trOnChange });\n }\n else if (value !== prevValue) {\n setValue(view, { html: value });\n }\n }\n else {\n if (trOnChange && value.eq(trOnChange.doc)) {\n setValue(view, { tr: trOnChange });\n }\n else if (!view.state.doc.eq(value)) {\n setValue(view, { doc: value });\n }\n }\n};\n","/**\n * @hidden\n */\nexport var firefox = typeof window !== 'undefined' &&\n /Firefox/.test(window.navigator.userAgent);\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-editor',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1698929331,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { ButtonGroup, Toolbar, ToolbarSeparator, toolbarButtons } from '@progress/kendo-react-buttons';\nimport { classNames } from '@progress/kendo-react-common';\nimport { EditorState, Plugin, PluginKey, EditorView, Schema, baseKeymap, keymap, history, dropCursor, gapCursor, getMark, spacesFix, cspFix, tableEditing, caretColor } from '@progress/kendo-editor-common';\nimport { marks, nodes } from './config/schema';\nimport { defaultStyle, tablesStyles, rtlStyles } from './config/defaultStyles';\nimport { EditorToolsSettings } from './config/toolsSettings';\nimport { EditorDialogs } from './dialogs/main';\nimport { EditorUtils } from './utils';\nimport { editorPropsKey } from './utils/props-key';\nimport { updateEditorValue } from './utils/controlled-value';\nimport { firefox } from './utils/browser-detection';\nimport { packageMetadata } from './package-metadata';\nimport { shouldShowValidationUI, validatePackage, WatermarkOverlay } from '@progress/kendo-react-common';\nvar link = EditorToolsSettings.link, bold = EditorToolsSettings.bold, italic = EditorToolsSettings.italic, underline = EditorToolsSettings.underline;\nimport { messages, keys } from './messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\n/**\n * Represents the [KendoReact Editor component]({% slug overview_editor %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * Hello World

    \"\n * tools={[\n * [ EditorTools.Bold, EditorTools.Italic ]\n * ]}\n * />\n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar Editor = /** @class */ (function (_super) {\n __extends(Editor, _super);\n function Editor(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {\n view: undefined,\n linkDialog: false\n };\n _this._element = null;\n _this._contentElement = null;\n _this.iframe = null;\n _this.trOnChange = null;\n _this.htmlOnChange = null;\n _this.showLicenseWatermark = false;\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this.view) {\n _this.view.focus();\n }\n };\n _this.renderDialog = function (Component, settings, stateFlag) {\n return _this.state[stateFlag] && (React.createElement(Component, { view: _this.view, settings: settings, dir: _this.props.dir, onClose: function () {\n var _a;\n return _this.setState((_a = {}, _a[stateFlag] = false, _a));\n } }));\n };\n _this.renderTool = function (Tool, index) {\n var tool = (React.createElement(Tool, { view: _this.view, dir: _this.props.dir, key: index }));\n return tool.type === ToolbarSeparator ? React.createElement(Tool, { key: index }) : tool;\n };\n _this.updateTools = function (view, _prevViewState) {\n _this.setState({ view: view });\n };\n _this.filterTransaction = function (transaction, state) {\n var event = { target: _this, transaction: transaction, state: state };\n return (_this.props.onExecute &&\n _this.props.onExecute.call(undefined, event)) !== false;\n };\n _this.onPasteHtml = function (html) {\n if (_this.props.onPasteHtml && _this.pasteEvent) {\n var event_1 = {\n target: _this,\n pastedHtml: html,\n nativeEvent: _this.pasteEvent\n };\n var newHtml = _this.props.onPasteHtml.call(undefined, event_1);\n _this.pasteEvent = undefined;\n if (typeof newHtml === 'string') {\n return newHtml;\n }\n }\n return html;\n };\n _this.dispatchTransaction = function (transaction) {\n var docChanged = transaction.docChanged;\n if (_this.props.onChange && docChanged) {\n _this.trOnChange = transaction;\n var doc_1 = transaction.doc, schema_1 = transaction.doc.type.schema;\n var target_1 = _this;\n var event_2 = {\n target: target_1,\n value: doc_1,\n get html() {\n target_1.htmlOnChange = EditorUtils.getHtml({ doc: doc_1, schema: schema_1 });\n return target_1.htmlOnChange;\n },\n transaction: transaction,\n schema: schema_1\n };\n _this.props.onChange.call(undefined, event_2);\n }\n if (_this.view && (_this.props.value === undefined || !docChanged)) {\n _this.view.updateState(_this.view.state.apply(transaction));\n }\n };\n _this.onFocus = function (_view, nativeEvent) {\n if (_this.props.onFocus) {\n var event_3 = {\n target: _this,\n nativeEvent: nativeEvent\n };\n _this.props.onFocus.call(undefined, event_3);\n }\n return false;\n };\n _this.onBlur = function (_view, nativeEvent) {\n if (_this.props.onBlur) {\n var event_4 = {\n target: _this,\n nativeEvent: nativeEvent\n };\n _this.props.onBlur.call(undefined, event_4);\n }\n return false;\n };\n _this.onPaste = function (_view, nativeEvent) {\n if (_this.props.onPasteHtml) {\n _this.pasteEvent = nativeEvent;\n }\n return false;\n };\n validatePackage(packageMetadata);\n _this.showLicenseWatermark = shouldShowValidationUI(packageMetadata);\n return _this;\n }\n Object.defineProperty(Editor.prototype, \"value\", {\n /**\n * The value of the Editor.\n */\n get: function () {\n if (this.trOnChange !== null) {\n return this.trOnChange.doc;\n }\n else if (this.props.value !== undefined) {\n return this.props.value;\n }\n else if (this.view) {\n return this.view.state.doc;\n }\n return this.props.defaultContent || '';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Editor.prototype, \"element\", {\n /**\n * Returns the DOM element of the Editor.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Editor.prototype, \"contentElement\", {\n /**\n * Returns the content-editable DOM element of the Editor.\n */\n get: function () {\n return this._contentElement;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Editor.prototype, \"view\", {\n /**\n * Returns the `view` object of the Editor.\n */\n get: function () {\n return this._view;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Editor.prototype.componentDidMount = function () {\n if (!this.iframe || !firefox) {\n this.initialize();\n }\n };\n /**\n * @hidden\n */\n Editor.prototype.componentDidUpdate = function (prevProps) {\n var value = this.props.value;\n var view = this.view;\n if (value === undefined || !view) {\n return;\n }\n updateEditorValue(view, value, prevProps.value, this.trOnChange, this.htmlOnChange);\n this.trOnChange = null;\n this.htmlOnChange = null;\n };\n /**\n * @hidden\n */\n Editor.prototype.componentWillUnmount = function () {\n if (this.view) {\n this.view.destroy();\n }\n this._view = undefined;\n var iframeWindow = this.iframe && this.iframe.contentWindow;\n if (iframeWindow) {\n if (this._contentElement && this._contentElement.parentNode) {\n this._contentElement.parentNode.removeChild(this._contentElement);\n }\n var head = iframeWindow.document.head;\n while (head && head.firstChild) {\n head.removeChild(head.firstChild);\n }\n }\n };\n /**\n * @hidden\n */\n Editor.prototype.render = function () {\n var _this = this;\n var _a = this.props, _b = _a.tools, tools = _b === void 0 ? [] : _b, _c = _a.defaultEditMode, defaultEditMode = _c === void 0 ? 'iframe' : _c, _d = _a.preserveWhitespace, preserveWhitespace = _d === void 0 ? 'full' : _d, style = _a.style, className = _a.className;\n var localization = provideLocalizationService(this);\n if (this.view) {\n var editorProps = editorPropsKey.getState(this.view.state);\n editorProps.preserveWhitespace = preserveWhitespace;\n }\n var contentStyle = this.props.contentStyle;\n if (contentStyle === undefined && (style || {}).height === undefined) {\n contentStyle = { height: '300px' };\n }\n var buttons = tools.map(function (item, index) {\n return Array.isArray(item) ?\n React.createElement(ButtonGroup, { key: index }, item.map(_this.renderTool, index)) :\n _this.renderTool(item, index);\n });\n return (React.createElement(\"div\", { ref: function (e) { return _this._element = e; }, className: classNames('k-editor', className, { 'k-editor-resizable': this.props.resizable }), dir: this.props.dir, style: style },\n buttons.length > 0 && (React.createElement(Toolbar, { className: 'k-editor-toolbar', keyboardNavigation: this.props.keyboardNavigation }, buttons)),\n defaultEditMode === 'iframe' ?\n (React.createElement(\"div\", { className: \"k-editor-content\" },\n React.createElement(\"iframe\", { onLoad: firefox ? function () {\n _this.initialize();\n } : undefined, ref: function (e) { return _this.iframe = e; }, frameBorder: \"0\", title: localization.toLanguageString(keys.iframeTitle, messages[keys.iframeTitle]), style: contentStyle, className: \"k-iframe\" }))) :\n (React.createElement(\"div\", { style: contentStyle, className: \"k-editor-content\" },\n React.createElement(\"div\", { ref: function (e) { return _this._contentElement = e; }, suppressContentEditableWarning: true, role: \"textbox\", \"aria-labelledby\": this.props.ariaLabelledBy, \"aria-describedby\": this.props.ariaDescribedBy, \"aria-label\": this.props.ariaLabel }))),\n this.renderDialog(EditorDialogs.InsertLinkDialog, link, 'linkDialog'),\n this.showLicenseWatermark && React.createElement(WatermarkOverlay, null)));\n };\n Editor.prototype.initialize = function () {\n var _this = this;\n var iframeWindow = this.iframe && this.iframe.contentWindow;\n if (iframeWindow) {\n var iframeDocument_1 = iframeWindow.document;\n [defaultStyle, tablesStyles, this.props.dir === 'rtl' ? rtlStyles : undefined].forEach(function (styles) {\n if (styles) {\n var style = iframeDocument_1.createElement('style');\n style.appendChild(iframeDocument_1.createTextNode(styles));\n iframeDocument_1.head.appendChild(style);\n }\n });\n var meta = iframeDocument_1.createElement('meta');\n meta.setAttribute('charset', 'utf-8');\n iframeDocument_1.head.appendChild(meta);\n // The content has to be wrapped because the `dropCursor` plugin raises a `body.offsetParent is null` error.\n this._contentElement = iframeDocument_1.createElement('div');\n iframeDocument_1.body.appendChild(this._contentElement);\n this._contentElement.classList.add('k-content');\n }\n var dom = this._contentElement;\n if (!dom) {\n return;\n }\n var _a = this.props.preserveWhitespace, preserveWhitespace = _a === void 0 ? 'full' : _a;\n var target = this;\n var plugins = [\n // https://prosemirror.net/docs/ref/#state.PluginSpec\n new Plugin({\n view: function () { return ({ update: _this.updateTools }); },\n key: new PluginKey('toolbar-tools-update-plugin')\n }),\n new Plugin({\n filterTransaction: this.filterTransaction,\n key: new PluginKey('onExecute-event-plugin')\n }),\n new Plugin({\n key: editorPropsKey,\n state: {\n init: function () { return ({ preserveWhitespace: preserveWhitespace }); },\n apply: function (_, val) { return val; }\n }\n }),\n spacesFix(),\n caretColor(),\n history(),\n dropCursor(),\n gapCursor(),\n tableEditing(),\n cspFix()\n ];\n var shortcuts = __assign(__assign({}, EditorUtils.getShortcuts({\n types: { listItem: 'list_item', hardBreak: 'hard_break' },\n toolsSettings: { bold: bold, italic: italic, underline: underline }\n })), { 'Mod-k': function () {\n var linkDialog = _this.state.linkDialog;\n var editorView = _this.view;\n if (editorView) {\n var editorState = editorView.state;\n var collapsed = editorState.selection.empty;\n var linkMark = getMark(editorState, editorState.schema.marks[link.mark]);\n var disabled = collapsed && !linkMark;\n if (!linkDialog && !disabled) {\n _this.setState({ linkDialog: true });\n }\n }\n return !linkDialog;\n }, 'Alt-F10': function () {\n var _a;\n var toolbar = (_a = _this.element) === null || _a === void 0 ? void 0 : _a.querySelector('.k-toolbar');\n if (toolbar) {\n var button = toolbar.querySelector(toolbarButtons.join(','));\n if (button) {\n button.focus();\n return true;\n }\n }\n return false;\n } });\n var _b = this.props, _c = _b.defaultContent, defaultContent = _c === void 0 ? '' : _c, value = _b.value, onMount = _b.onMount;\n var doc = (value && typeof value !== 'string') ? value :\n EditorUtils.createDocument(new Schema({ nodes: nodes, marks: marks }), value || defaultContent, { preserveWhitespace: preserveWhitespace });\n var viewProps = {\n state: EditorState.create({\n plugins: __spreadArray(__spreadArray([], plugins, true), [keymap(shortcuts), keymap(baseKeymap)], false),\n doc: doc\n }),\n transformPastedHTML: this.onPasteHtml,\n dispatchTransaction: this.dispatchTransaction,\n handleDOMEvents: {\n focus: this.onFocus,\n blur: this.onBlur,\n paste: this.onPaste\n },\n handleDrop: function (_view, _event, slice, _moved) {\n var hasCaption = false;\n slice.content.nodesBetween(0, slice.content.size, function (node) {\n hasCaption = hasCaption || node.type.name === 'table_caption_external';\n });\n return hasCaption;\n }\n };\n var mountEvent = { plugins: plugins, shortcuts: shortcuts, target: target, viewProps: viewProps, dom: dom };\n var view = this._view = (onMount && onMount.call(undefined, mountEvent)) || new EditorView({ mount: dom }, viewProps);\n this.setState({\n view: view\n });\n };\n /**\n * @hidden\n */\n Editor.propTypes = {\n defaultContent: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n defaultEditMode: PropTypes.oneOf(['iframe', 'div']),\n contentStyle: PropTypes.object,\n dir: PropTypes.string,\n className: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaLabel: PropTypes.string,\n style: PropTypes.object,\n tools: PropTypes.arrayOf(PropTypes.any),\n keyboardNavigation: PropTypes.bool,\n resizable: PropTypes.bool,\n preserveWhitespace: PropTypes.oneOf([true, false, 'full']),\n onMount: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onPasteHtml: PropTypes.func,\n onExecute: PropTypes.func\n };\n return Editor;\n}(React.Component));\nexport { Editor };\nregisterForLocalization(Editor);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { keys, messages } from './../messages';\nimport { alignCenterIcon, alignJustifyIcon, alignLeftIcon, alignRemoveIcon, alignRightIcon, binocularsIcon, boldIcon, cellsMergeIcon, cellSplitHorizontallyIcon, clearCssIcon, codeIcon, dropletIcon, fileAddIcon, filePdfIcon, foregroundColorIcon, imageIcon, indentIcon, italicIcon, linkIcon, listOrderedIcon, listUnorderedIcon, outdentIcon, printIcon, redoIcon, selectAllIcon, strikethroughIcon, subscriptIcon, supscriptIcon, tableAddIcon, tableColumnDeleteIcon, tableColumnInsertLeftIcon, tableColumnInsertRightIcon, tableDeleteIcon, tableRowDeleteIcon, tableRowInsertAboveIcon, tableRowInsertBelowIcon, underlineIcon, undoIcon, unlinkIcon } from '@progress/kendo-svg-icons';\nimport { bold as boldSettings, italic as italicSettings, underline as underlineSettings, strikethrough as strikethroughSettings, subscript as subscriptSettings, superscript as superscriptSettings, link as linkSettings, alignLeftRules, alignRightRules, alignCenterRules, alignJustifyRules, alignRemoveRules, indentRules, outdentRules } from '@progress/kendo-editor-common';\n/**\n * @hidden\n */\nexport var listsTypes = __assign({}, indentRules.listsTypes);\n/**\n * Represents a wrapping namespace for the tool settings of the Editor.\n */\nexport var EditorToolsSettings;\n(function (EditorToolsSettings) {\n /**\n * @hidden\n */\n var buttonCommonProps = {\n type: 'button'\n };\n /**\n * The object of the Bold tool settings.\n */\n EditorToolsSettings.bold = __assign(__assign({}, boldSettings), { props: __assign({ icon: 'bold', svgIcon: boldIcon }, buttonCommonProps), messages: {\n title: keys.bold\n }, commandName: 'Bold' });\n /**\n * The object of the Italic tool settings.\n */\n EditorToolsSettings.italic = __assign(__assign({}, italicSettings), { props: __assign({ icon: 'italic', svgIcon: italicIcon }, buttonCommonProps), messages: {\n title: keys.italic\n }, commandName: 'Italic' });\n /**\n * The object of the Underline tool settings.\n */\n EditorToolsSettings.underline = __assign(__assign({}, underlineSettings), { props: __assign({ icon: 'underline', svgIcon: underlineIcon }, buttonCommonProps), messages: {\n title: keys.underline\n }, commandName: 'Underline' });\n /**\n * The object of the Strikethrough tool settings.\n */\n EditorToolsSettings.strikethrough = __assign(__assign({}, strikethroughSettings), { props: __assign({ icon: 'strikethrough', svgIcon: strikethroughIcon }, buttonCommonProps), messages: {\n title: keys.strikethrough\n }, commandName: 'Strikethrough' });\n /**\n * The object of the Subscript tool settings.\n */\n EditorToolsSettings.subscript = __assign(__assign({}, subscriptSettings), { props: __assign({ icon: 'subscript', svgIcon: subscriptIcon }, buttonCommonProps), messages: {\n title: keys.subscript\n }, commandName: 'Subscript' });\n /**\n * The object of the Superscript tool settings.\n */\n EditorToolsSettings.superscript = __assign(__assign({}, superscriptSettings), { props: __assign({ icon: 'supscript', svgIcon: supscriptIcon }, buttonCommonProps), messages: {\n title: keys.superscript\n }, commandName: 'Superscript' });\n /**\n * The object of the Link tool settings.\n */\n EditorToolsSettings.link = __assign(__assign({}, linkSettings), { props: __assign({ icon: 'link', svgIcon: linkIcon }, buttonCommonProps), messages: {\n insertHyperlink: keys.insertHyperlink,\n insertHyperlinkDialogTitle: keys.insertHyperlinkDialogTitle,\n insertHyperlinkAddress: keys.insertHyperlinkAddress,\n insertHyperlinkTitle: keys.insertHyperlinkTitle,\n insertHyperlinkNewWindow: keys.insertHyperlinkNewWindow,\n insertHyperlinkCancel: keys.insertHyperlinkCancel,\n insertHyperlinkInsert: keys.insertHyperlinkInsert\n }, commandName: 'Link' });\n /**\n * The object of the Link tool settings.\n */\n EditorToolsSettings.insertFile = __assign(__assign({}, linkSettings), { props: __assign({ icon: 'file-add', svgIcon: fileAddIcon }, buttonCommonProps), messages: {\n insertHyperlink: keys.insertFile,\n insertHyperlinkDialogTitle: keys.insertFileDialogTitle,\n insertHyperlinkAddress: keys.insertFileAddress,\n insertHyperlinkTitle: keys.insertFileTitle,\n insertHyperlinkNewWindow: '',\n insertHyperlinkCancel: keys.insertFileCancel,\n insertHyperlinkInsert: keys.insertFileInsert\n }, commandName: 'InsertFile', linkTarget: false });\n /**\n * The object of the InsertTable tool settings.\n */\n EditorToolsSettings.insertTable = {\n props: __assign({ icon: 'table-add', svgIcon: tableAddIcon }, buttonCommonProps),\n messages: {\n createTable: keys.createTable,\n createTableHint: keys.createTableHint\n },\n commandName: 'InsertTable'\n };\n /**\n * The object of the AddRowBefore tool settings.\n */\n EditorToolsSettings.addRowBefore = {\n props: __assign({ icon: 'table-row-insert-above', svgIcon: tableRowInsertAboveIcon }, buttonCommonProps),\n messages: {\n title: keys.addRowBefore\n },\n commandName: 'AddRowBefore'\n };\n /**\n * The object of the AddRowAfter tool settings.\n */\n EditorToolsSettings.addRowAfter = {\n props: __assign({ icon: 'table-row-insert-below', svgIcon: tableRowInsertBelowIcon }, buttonCommonProps),\n messages: {\n title: keys.addRowAfter\n },\n commandName: 'AddRowAfter'\n };\n /**\n * The object of the AddColumnBefore tool settings.\n */\n EditorToolsSettings.addColumnBefore = {\n props: __assign({ icon: 'table-column-insert-left', svgIcon: tableColumnInsertLeftIcon }, buttonCommonProps),\n messages: {\n title: keys.addColumnBefore\n },\n commandName: 'AddColumnBefore'\n };\n /**\n * The object of the AddColumnAfter tool settings.\n */\n EditorToolsSettings.addColumnAfter = {\n props: __assign({ icon: 'table-column-insert-right', svgIcon: tableColumnInsertRightIcon }, buttonCommonProps),\n messages: {\n title: keys.addColumnAfter\n },\n commandName: 'AddColumnAfter'\n };\n /**\n * The object of the DeleteRow tool settings.\n */\n EditorToolsSettings.deleteRow = {\n props: __assign({ icon: 'table-row-delete', svgIcon: tableRowDeleteIcon }, buttonCommonProps),\n messages: {\n title: keys.deleteRow\n },\n commandName: 'DeleteRow'\n };\n /**\n * The object of the DeleteColumn tool settings.\n */\n EditorToolsSettings.deleteColumn = {\n props: __assign({ icon: 'table-column-delete', svgIcon: tableColumnDeleteIcon }, buttonCommonProps),\n messages: {\n title: keys.deleteColumn\n },\n commandName: 'DeleteColumn'\n };\n /**\n * The object of the DeleteTable tool settings.\n */\n EditorToolsSettings.deleteTable = {\n props: __assign({ icon: 'table-delete', svgIcon: tableDeleteIcon }, buttonCommonProps),\n messages: {\n title: keys.deleteTable\n },\n commandName: 'DeleteTable'\n };\n /**\n * The object of the MergeCells tool settings.\n */\n EditorToolsSettings.mergeCells = {\n props: __assign({ icon: 'cells-merge', svgIcon: cellsMergeIcon }, buttonCommonProps),\n messages: {\n title: keys.mergeCells\n },\n commandName: 'MergeCells'\n };\n /**\n * The object of the SplitCell tool settings.\n */\n EditorToolsSettings.splitCell = {\n props: __assign({ icon: 'cell-split-horizontally', svgIcon: cellSplitHorizontallyIcon }, buttonCommonProps),\n messages: {\n title: keys.splitCell\n },\n commandName: 'SplitCell'\n };\n /**\n * The object of the Print tool settings.\n */\n EditorToolsSettings.print = {\n props: __assign({ icon: 'print', svgIcon: printIcon }, buttonCommonProps),\n messages: {\n title: keys.print\n }\n };\n /**\n * The object of the Print tool settings.\n */\n EditorToolsSettings.selectAll = {\n props: __assign({ icon: 'select-all', svgIcon: selectAllIcon }, buttonCommonProps),\n messages: {\n title: keys.selectAll\n }\n };\n /**\n * The object of the Print tool settings.\n */\n EditorToolsSettings.pdf = {\n props: __assign({ icon: 'file-pdf', svgIcon: filePdfIcon }, buttonCommonProps),\n messages: {\n title: keys.pdf\n }\n };\n /**\n * The PDF export options.\n *\n * const savePdfOptions = {\n * fileName: 'editor.pdf',\n * paperSize: 'A4',\n * margin: '1cm'\n * };\n */\n EditorToolsSettings.savePdfOptions = {\n fileName: 'editor.pdf',\n paperSize: 'A4',\n margin: '1cm'\n };\n /**\n * The object of the CleanFormatting tool settings.\n */\n EditorToolsSettings.cleanFormatting = {\n props: __assign({ icon: 'clear-css', svgIcon: clearCssIcon }, buttonCommonProps),\n messages: {\n title: keys.cleanFormatting\n },\n commandName: 'CleanFormatting'\n };\n /**\n * The object of the InsertImage tool settings.\n */\n EditorToolsSettings.image = {\n node: 'image',\n props: __assign({ icon: 'image', svgIcon: imageIcon }, buttonCommonProps),\n messages: {\n insertImage: keys.insertImage,\n insertImageDialogTitle: keys.insertImageDialogTitle,\n insertImageAddress: keys.insertImageAddress,\n insertImageTitle: keys.insertImageTitle,\n insertImageAltText: keys.insertImageAltText,\n insertImageWidth: keys.insertImageWidth,\n insertImageHeight: keys.insertImageHeight,\n insertImageCancel: keys.insertImageCancel,\n insertImageInsert: keys.insertImageInsert\n },\n commandName: 'InsertImage'\n };\n /**\n * The object of the ViewHtml tool settings.\n */\n EditorToolsSettings.viewHtml = {\n props: __assign({ icon: 'code', svgIcon: codeIcon }, buttonCommonProps),\n messages: {\n viewHtml: keys.viewHtml,\n viewHtmlDialogTitle: keys.viewHtmlDialogTitle,\n viewHtmlCancel: keys.viewHtmlCancel,\n viewHtmlUpdate: keys.viewHtmlUpdate\n },\n commandName: 'SetContent'\n };\n /**\n * The object of the Find and Replace tool settings.\n */\n EditorToolsSettings.findAndReplace = {\n props: __assign({ icon: 'find', svgIcon: binocularsIcon }, buttonCommonProps),\n messages: {\n findReplaceToolTitle: keys.findReplaceToolTitle,\n findReplaceDialogTitle: keys.findReplaceDialogTitle,\n findReplaceTabFind: keys.findReplaceTabFind,\n findReplaceTabReplace: keys.findReplaceTabReplace,\n findReplaceFindWhat: keys.findReplaceFindWhat,\n findReplaceReplaceWith: keys.findReplaceReplaceWith,\n findReplaceReplace: keys.findReplaceReplace,\n findReplaceReplaceAll: keys.findReplaceReplaceAll,\n findReplaceMatchCase: keys.findReplaceMatchCase,\n findReplaceMatchWord: keys.findReplaceMatchWord,\n findReplaceMatchCyclic: keys.findReplaceMatchCyclic,\n findReplaceUseRegExp: keys.findReplaceUseRegExp,\n findReplacePrevMatch: keys.findReplacePrevMatch,\n findReplaceNextMatch: keys.findReplaceNextMatch,\n findReplaceMatches: keys.findReplaceMatches\n }\n };\n /**\n * The object of the Unlink tool settings.\n */\n EditorToolsSettings.unlink = __assign(__assign({}, linkSettings), { props: __assign({ icon: 'unlink', svgIcon: unlinkIcon }, buttonCommonProps), messages: {\n title: keys.unlink\n }, commandName: 'Unlink' });\n /**\n * The object of the Undo tool settings.\n */\n EditorToolsSettings.undo = {\n props: __assign({ icon: 'undo', svgIcon: undoIcon }, buttonCommonProps),\n messages: {\n title: keys.undo\n },\n commandName: 'Undo'\n };\n /**\n * The object of the Redo tool settings.\n */\n EditorToolsSettings.redo = {\n props: __assign({ icon: 'redo', svgIcon: redoIcon }, buttonCommonProps),\n messages: {\n title: keys.redo\n },\n commandName: 'Redo'\n };\n /**\n * The object of the FontSize tool settings.\n */\n EditorToolsSettings.fontSize = {\n style: 'font-size',\n defaultItem: { text: messages[keys.fontSize], value: '', localizationKey: keys.fontSize },\n items: [\n { text: '1 (8pt)', value: 'xx-small' },\n { text: '2 (10pt)', value: 'x-small' },\n { text: '3 (12pt)', value: 'small' },\n { text: '4 (14pt)', value: 'medium' },\n { text: '5 (18pt)', value: 'large' },\n { text: '6 (24pt)', value: 'x-large' },\n { text: '7 (36pt)', value: 'xx-large' }\n ],\n commandName: 'FontSize'\n };\n /**\n * The object of the FontName tool settings.\n */\n EditorToolsSettings.fontName = {\n style: 'font-family',\n defaultItem: { text: messages[keys.fontName], value: '', localizationKey: keys.fontName },\n items: [\n { text: 'Arial', value: 'Arial, Helvetica, sans-serif',\n style: { fontFamily: 'Arial, Helvetica, sans-serif' } },\n { text: 'Courier New', value: '\\'Courier New\\', Courier, monospace',\n style: { fontFamily: '\\'Courier New\\', Courier, monospace' } },\n { text: 'Georgia', value: 'Georgia, serif',\n style: { fontFamily: 'Georgia, serif' } },\n { text: 'Impact', value: 'Impact, Charcoal, sans-serif',\n style: { fontFamily: 'Impact, Charcoal, sans-serif' } },\n { text: 'Lucida Console', value: '\\'Lucida Console\\', Monaco, monospace',\n style: { fontFamily: '\\'Lucida Console\\', Monaco, monospace' } },\n { text: 'Tahoma', value: 'Tahoma, Geneva, sans-serif',\n style: { fontFamily: 'Tahoma, Geneva, sans-serif' } },\n { text: 'Times New Roman', value: '\\'Times New Roman\\', Times,serif',\n style: { fontFamily: '\\'Times New Roman\\', Times,serif' } },\n { text: 'Trebuchet MS', value: '\\'Trebuchet MS\\', Helvetica, sans-serif',\n style: { fontFamily: '\\'Trebuchet MS\\', Helvetica, sans-serif' } },\n { text: 'Verdana', value: 'Verdana, Geneva, sans-serif',\n style: { fontFamily: 'Verdana, Geneva, sans-serif' } }\n ],\n commandName: 'FontName'\n };\n /**\n * The object of the FormatBlock tool settings.\n */\n EditorToolsSettings.formatBlock = {\n defaultItem: { text: messages[keys.format], value: '', localizationKey: keys.format },\n items: [\n { text: 'Paragraph', value: 'p', style: { display: 'block', marginLeft: 0 } },\n { text: 'Heading 1', value: 'h1', style: { display: 'block', fontSize: '2em', marginLeft: 0, fontWeight: 'bold' } },\n { text: 'Heading 2', value: 'h2', style: { display: 'block', fontSize: '1.5em', marginLeft: 0, fontWeight: 'bold' } },\n { text: 'Heading 3', value: 'h3', style: { display: 'block', fontSize: '1.17em', marginLeft: 0, fontWeight: 'bold' } },\n { text: 'Heading 4', value: 'h4', style: { display: 'block', fontSize: '1em', marginLeft: 0, fontWeight: 'bold' } },\n { text: 'Heading 5', value: 'h5', style: { display: 'block', fontSize: '0.83em', marginLeft: 0, fontWeight: 'bold' } },\n { text: 'Heading 6', value: 'h6', style: { display: 'block', fontSize: '0.67em', marginLeft: 0, fontWeight: 'bold' } }\n ],\n commandName: 'FormatBlock'\n };\n /**\n * The object of the ForeColor tool settings.\n */\n EditorToolsSettings.foreColor = {\n style: 'color',\n colorPickerProps: {\n icon: 'foreground-color',\n svgIcon: foregroundColorIcon,\n view: 'palette',\n title: keys.foregroundColor,\n ariaLabel: keys.foreColorLabel\n },\n commandName: 'ForeColor'\n };\n /**\n * The object of the BackColor tool settings.\n */\n EditorToolsSettings.backColor = {\n style: 'background-color',\n colorPickerProps: {\n icon: 'droplet',\n svgIcon: dropletIcon,\n view: 'palette',\n title: keys.backgroundColor,\n ariaLabel: keys.backColorLabel\n },\n commandName: 'BackColor'\n };\n /**\n * The object of the AlignLeft tool settings.\n */\n EditorToolsSettings.alignLeft = {\n actions: __spreadArray([], alignLeftRules, true),\n props: __assign({ icon: 'align-left', svgIcon: alignLeftIcon }, buttonCommonProps),\n messages: {\n title: keys.alignLeft\n },\n commandName: 'AlignLeft'\n };\n /**\n * The object of the AlignRight tool settings.\n */\n EditorToolsSettings.alignRight = {\n actions: __spreadArray([], alignRightRules, true),\n props: __assign({ icon: 'align-right', svgIcon: alignRightIcon }, buttonCommonProps),\n messages: {\n title: keys.alignRight\n },\n commandName: 'AlignRight'\n };\n /**\n * The object of the AlignCenter tool settings.\n */\n EditorToolsSettings.alignCenter = {\n actions: __spreadArray([], alignCenterRules, true),\n props: __assign({ icon: 'align-center', svgIcon: alignCenterIcon }, buttonCommonProps),\n messages: {\n title: keys.alignCenter\n },\n commandName: 'AlignCenter'\n };\n /**\n * The object of the AlignJustify tool settings.\n */\n EditorToolsSettings.alignJustify = {\n actions: __spreadArray([], alignJustifyRules, true),\n props: __assign({ icon: 'align-justify', svgIcon: alignJustifyIcon }, buttonCommonProps),\n messages: {\n title: keys.alignJustify\n },\n commandName: 'AlignJustify'\n };\n /**\n * The object of the AlignRemove tool settings.\n */\n EditorToolsSettings.alignRemove = {\n actions: __spreadArray([], alignRemoveRules, true),\n props: __assign({ icon: 'align-remove', svgIcon: alignRemoveIcon }, buttonCommonProps),\n messages: {},\n commandName: 'AlignRemove'\n };\n /**\n * The object of the Indent tool settings.\n */\n EditorToolsSettings.indent = {\n actions: indentRules.nodes,\n listsTypes: listsTypes,\n props: __assign({ icon: 'indent', svgIcon: indentIcon }, buttonCommonProps),\n messages: {\n title: keys.indent\n },\n commandName: 'Indent'\n };\n /**\n * The object of the Outdent tool settings.\n */\n EditorToolsSettings.outdent = {\n actions: outdentRules.nodes,\n listsTypes: listsTypes,\n props: __assign({ icon: 'outdent', svgIcon: outdentIcon }, buttonCommonProps),\n messages: {\n title: keys.outdent\n },\n commandName: 'Outdent'\n };\n /**\n * The object of the OrderedList tool settings.\n */\n EditorToolsSettings.orderedList = {\n listType: listsTypes.orderedList,\n props: __assign({ icon: 'list-ordered', svgIcon: listOrderedIcon }, buttonCommonProps),\n messages: {\n title: keys.orderedList\n },\n commandName: 'OrderedList',\n types: __assign({}, listsTypes)\n };\n /**\n * The object of the UnorderedList tool settings.\n */\n EditorToolsSettings.bulletList = {\n listType: listsTypes.bulletList,\n props: __assign({ icon: 'list-unordered', svgIcon: listUnorderedIcon }, buttonCommonProps),\n messages: {\n title: keys.bulletList\n },\n commandName: 'UnorderedList',\n types: __assign({}, listsTypes)\n };\n})(EditorToolsSettings || (EditorToolsSettings = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { Window } from '@progress/kendo-react-dialogs';\nimport { TabStrip, TabStripTab } from '@progress/kendo-react-layout';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nimport { EditorToolsSettings } from './../config/toolsSettings';\nimport { formatString } from './../tools/utils';\nimport { find, replace, replaceAll, findAll, TextSelection, textHighlightKey, selectedLineTextOnly } from '@progress/kendo-editor-common';\nimport { IconWrap } from '@progress/kendo-react-common';\nimport { Input, Checkbox } from '@progress/kendo-react-inputs';\nimport { Form, FormElement, FieldWrapper } from '@progress/kendo-react-form';\nimport { chevronLeftIcon, chevronRightIcon } from '@progress/kendo-svg-icons';\nvar enter = 13, esc = 27;\nvar settings = EditorToolsSettings.findAndReplace;\n/**\n * @hidden\n */\nvar FindAndReplaceDialog = /** @class */ (function (_super) {\n __extends(FindAndReplaceDialog, _super);\n function FindAndReplaceDialog(props) {\n var _this = _super.call(this, props) || this;\n _this.onTabSelect = function (event) {\n _this.setState({ selectedTab: event.selected });\n };\n _this.onClose = function () {\n var view = _this.props.view;\n var state = view.state;\n var transaction = state.tr.setSelection(TextSelection.create(state.doc, state.selection.from, state.selection.to));\n view.updateState(state.apply(transaction));\n view.focus();\n _this.props.onClose.call(undefined);\n };\n _this.matchesMessage = function (locMessage) {\n var matches = _this.state.matches;\n var nextMatch = _this.state.nextMatch;\n var cur = 0, all = 0;\n if (matches && nextMatch) {\n var current = matches.findIndex(function (s) { return s.eq(nextMatch); });\n cur = current === -1 ? matches.length : current + 1;\n all = matches.length;\n }\n return formatString(locMessage, cur, all);\n };\n _this.onFindNext = function () {\n _this.onFind();\n };\n _this.onFindPrev = function () {\n _this.onFind(true);\n };\n _this.onFind = function (backward) {\n if (backward === void 0) { backward = false; }\n var view = _this.props.view;\n var _a = _this.state, text = _a.searchText, matchCase = _a.matchCase, matchCyclic = _a.matchCyclic, matchWord = _a.matchWord, useRegExp = _a.useRegExp;\n var searchOptions = { text: text, matchWord: matchWord, matchCase: matchCase, useRegExp: useRegExp, backward: backward, matchCyclic: matchCyclic };\n var selectionResult = find(view.state, searchOptions);\n if (selectionResult) {\n var transaction = view.state.tr.setSelection(selectionResult);\n transaction.scrollIntoView();\n view.updateState(view.state.apply(transaction));\n _this.setState({ nextMatch: selectionResult });\n }\n };\n _this.onReplace = function () {\n var view = _this.props.view;\n var selection = view.state.selection;\n var replaceText = _this.state.replaceText;\n if (!selection.empty) {\n var start = selection.from;\n var end = start + replaceText.length;\n var transaction = replace(selection, replaceText, view.state.tr);\n transaction.setSelection(TextSelection.create(transaction.doc, start, end));\n transaction.scrollIntoView();\n view.dispatch(transaction);\n _this.setNextState({});\n }\n };\n _this.onReplaceAll = function () {\n var view = _this.props.view;\n var _a = _this.state, searchText = _a.searchText, replaceText = _a.replaceText, matchCase = _a.matchCase, matchWord = _a.matchWord, useRegExp = _a.useRegExp;\n var searchOptions = { text: searchText, matchWord: matchWord, matchCase: matchCase, useRegExp: useRegExp };\n var tr = replaceAll(view.state, replaceText, searchOptions);\n if (tr) {\n view.dispatch(tr);\n }\n _this.setNextState({});\n };\n _this.onKeyDown = function (event) {\n if (event.keyCode === enter) {\n _this.onFindNext();\n }\n else if (event.keyCode === esc) {\n _this.onClose();\n }\n };\n _this.onMatchCaseChecked = function (e) { return _this.setNextState({ matchCase: e.value }); };\n _this.onMatchWordChecked = function (e) { return _this.setNextState({ matchWord: e.value }); };\n _this.onMatchCyclicChecked = function (e) { return _this.setNextState({ matchCyclic: e.value }); };\n _this.onUseRegExpChecked = function (e) { return _this.setNextState({ useRegExp: e.value }); };\n _this.onSearchChange = function (e) { return _this.setNextState({ searchText: e.target.value }); };\n _this.onReplaceChange = function (e) { return _this.setNextState({ replaceText: e.target.value }); };\n _this.setNextState = function (next) {\n var nextState = __assign(__assign(__assign({}, _this.state), next), { matches: undefined, nextMatch: undefined });\n var view = _this.props.view;\n if (nextState.searchText) {\n var text = nextState.searchText, matchWord = nextState.matchWord, matchCase = nextState.matchCase, useRegExp = nextState.useRegExp, matchCyclic = nextState.matchCyclic;\n var searchOptions = { text: text, matchWord: matchWord, matchCase: matchCase, useRegExp: useRegExp };\n var selection_1 = view.state.selection;\n var matches = findAll(view.state.doc, searchOptions);\n var nextMatch = (!_this.state.searchText && matches[0]) ||\n matches.find(function (match) { return match.from >= selection_1.from; }) ||\n (matchCyclic && matches[0]) ||\n undefined;\n _this.setState(__assign(__assign({}, nextState), { matches: matches, nextMatch: nextMatch }));\n }\n else {\n _this.setState(nextState);\n }\n };\n _this.state = {\n selectedTab: 0,\n searchText: selectedLineTextOnly(props.view.state),\n replaceText: '',\n matchCase: false,\n matchWord: false,\n matchCyclic: false,\n useRegExp: false\n };\n return _this;\n }\n Object.defineProperty(FindAndReplaceDialog.prototype, \"settings\", {\n get: function () {\n return this.props.settings || settings;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n FindAndReplaceDialog.prototype.componentDidUpdate = function (_, prevState) {\n var view = this.props.view;\n var _a = this.state, _b = _a.matches, matches = _b === void 0 ? [] : _b, nextMatch = _a.nextMatch;\n if (prevState.nextMatch !== nextMatch) {\n var state = view.state;\n // highlight selection\n var tr = state.tr;\n var highlights_1 = [];\n matches.forEach(function (m) {\n highlights_1.push({\n from: m.from,\n to: m.to,\n attrs: {\n class: (nextMatch && m.eq(nextMatch)) ?\n 'k-text-selected' :\n 'k-text-highlighted'\n }\n });\n });\n tr.setMeta(textHighlightKey, highlights_1);\n tr.setSelection(nextMatch || TextSelection.create(state.doc, state.selection.from));\n view.dispatch(tr);\n }\n };\n /**\n * @hidden\n */\n FindAndReplaceDialog.prototype.render = function () {\n var _this = this;\n var localization = provideLocalizationService(this);\n var _a = this.settings.messages, findReplaceDialogTitle = _a.findReplaceDialogTitle, findReplaceTabFind = _a.findReplaceTabFind, findReplaceTabReplace = _a.findReplaceTabReplace, findReplaceFindWhat = _a.findReplaceFindWhat, findReplaceReplaceWith = _a.findReplaceReplaceWith, findReplaceReplace = _a.findReplaceReplace, findReplaceReplaceAll = _a.findReplaceReplaceAll, findReplaceMatchCase = _a.findReplaceMatchCase, findReplaceMatchWord = _a.findReplaceMatchWord, findReplaceMatchCyclic = _a.findReplaceMatchCyclic, findReplaceUseRegExp = _a.findReplaceUseRegExp, findReplacePrevMatch = _a.findReplacePrevMatch, findReplaceNextMatch = _a.findReplaceNextMatch, findReplaceMatches = _a.findReplaceMatches;\n var _b = this.state, matchCase = _b.matchCase, matchWord = _b.matchWord, matchCyclic = _b.matchCyclic, useRegExp = _b.useRegExp, searchText = _b.searchText, replaceText = _b.replaceText, nextMatch = _b.nextMatch;\n var checkboxes = (React.createElement(\"div\", { className: \"k-search-options\" },\n React.createElement(\"span\", null,\n React.createElement(Checkbox, { id: \"match-case\", checked: matchCase, onChange: this.onMatchCaseChecked }),\n React.createElement(\"label\", { htmlFor: \"match-case\", className: \"k-checkbox-label\" }, localization.toLanguageString(findReplaceMatchCase, messages[findReplaceMatchCase]))),\n React.createElement(\"span\", null,\n React.createElement(Checkbox, { id: \"match-whole\", checked: matchWord, onChange: this.onMatchWordChecked }),\n React.createElement(\"label\", { htmlFor: \"match-whole\", className: \"k-checkbox-label\" }, localization.toLanguageString(findReplaceMatchWord, messages[findReplaceMatchWord]))),\n React.createElement(\"span\", null,\n React.createElement(Checkbox, { id: \"match-cyclic\", checked: matchCyclic, onChange: this.onMatchCyclicChecked }),\n React.createElement(\"label\", { htmlFor: \"match-cyclic\", className: \"k-checkbox-label\" }, localization.toLanguageString(findReplaceMatchCyclic, messages[findReplaceMatchCyclic]))),\n React.createElement(\"span\", null,\n React.createElement(Checkbox, { id: \"regular-expression\", checked: useRegExp, onChange: this.onUseRegExpChecked }),\n React.createElement(\"label\", { htmlFor: \"regular-expression\", className: \"k-checkbox-label\" }, localization.toLanguageString(findReplaceUseRegExp, messages[findReplaceUseRegExp])))));\n var navigation = (React.createElement(\"div\", { className: \"k-matches-container\" },\n React.createElement(Button, { fillMode: 'flat', themeColor: 'primary', onClick: this.onFindPrev },\n React.createElement(IconWrap, { name: \"chevron-left\", icon: chevronLeftIcon }),\n localization.toLanguageString(findReplacePrevMatch, messages[findReplacePrevMatch])),\n React.createElement(\"span\", null, this.matchesMessage(localization.toLanguageString(findReplaceMatches, messages[findReplaceMatches]))),\n React.createElement(Button, { fillMode: 'flat', themeColor: 'primary', onClick: this.onFindNext },\n localization.toLanguageString(findReplaceNextMatch, messages[findReplaceNextMatch]),\n React.createElement(IconWrap, { name: \"chevron-right\", icon: chevronRightIcon }))));\n var findWhat = (React.createElement(Form, { render: function () { return (React.createElement(FormElement, { horizontal: true },\n React.createElement(FieldWrapper, null,\n React.createElement(\"label\", { htmlFor: \"findWhat\", className: 'k-form-label' }, localization.toLanguageString(findReplaceFindWhat, messages[findReplaceFindWhat])),\n React.createElement(\"div\", { className: 'k-form-field-wrap' },\n React.createElement(Input, { id: 'findWhat', type: \"text\", value: searchText, onChange: _this.onSearchChange, onFocus: _this.onSearchChange, onKeyDown: _this.onKeyDown, autoFocus: true }))))); } }));\n var replaceWith = (React.createElement(Form, { render: function () { return (React.createElement(FormElement, { horizontal: true },\n React.createElement(FieldWrapper, null,\n React.createElement(\"label\", { htmlFor: 'replaceWith', className: 'k-form-label' }, localization.toLanguageString(findReplaceReplaceWith, messages[findReplaceReplaceWith])),\n React.createElement(\"div\", { className: 'k-form-field-wrap' },\n React.createElement(Input, { id: 'replaceWith', type: \"text\", value: replaceText, onChange: _this.onReplaceChange }))))); } }));\n return (React.createElement(Window, { title: localization.toLanguageString(findReplaceDialogTitle, messages[findReplaceDialogTitle]), onClose: this.onClose, style: { width: 'auto', height: 'auto', userSelect: 'none' }, resizable: false, minimizeButton: function () { return null; }, maximizeButton: function () { return null; } },\n React.createElement(TabStrip, { selected: this.state.selectedTab, className: \"k-editor-find-replace\", onSelect: this.onTabSelect, animation: false },\n React.createElement(TabStripTab, { title: localization.toLanguageString(findReplaceTabFind, messages[findReplaceTabFind]) },\n findWhat,\n checkboxes,\n navigation),\n React.createElement(TabStripTab, { title: localization.toLanguageString(findReplaceTabReplace, messages[findReplaceTabReplace]) },\n findWhat,\n replaceWith,\n React.createElement(\"div\", { className: \"k-actions k-hstack k-justify-content-end\" },\n React.createElement(Button, { disabled: !Boolean(nextMatch), onClick: this.onReplace }, localization.toLanguageString(findReplaceReplace, messages[findReplaceReplace])),\n React.createElement(Button, { disabled: !Boolean(nextMatch), onClick: this.onReplaceAll }, localization.toLanguageString(findReplaceReplaceAll, messages[findReplaceReplaceAll]))),\n checkboxes,\n navigation))));\n };\n return FindAndReplaceDialog;\n}(React.Component));\nexport { FindAndReplaceDialog };\nregisterForLocalization(FindAndReplaceDialog);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { Window, WindowActionsBar } from '@progress/kendo-react-dialogs';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { Input, Checkbox } from '@progress/kendo-react-inputs';\nimport { Form, FormElement, FieldWrapper } from '@progress/kendo-react-form';\nimport { getMark, applyLink } from '@progress/kendo-editor-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nvar InsertLinkDialog = /** @class */ (function (_super) {\n __extends(InsertLinkDialog, _super);\n function InsertLinkDialog() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.href = null;\n _this.title = null;\n _this.target = null;\n _this.onClose = function () {\n _this.props.view.focus();\n _this.props.onClose();\n };\n _this.onInsert = function () {\n var view = _this.props.view;\n var mark = _this.props.settings.mark;\n var attrs = {\n href: _this.href ? _this.href.value : undefined,\n title: _this.title ? _this.title.value : undefined,\n target: _this.target && _this.target.element && _this.target.element.checked ? '_blank' : undefined\n };\n applyLink({ mark: mark, attrs: attrs }, _this.props.settings.commandName)(view.state, view.dispatch);\n _this.onClose();\n };\n return _this;\n }\n /**\n * @hidden\n */\n InsertLinkDialog.prototype.render = function () {\n var _this = this;\n var _a = this.props, view = _a.view, settings = _a.settings, dir = _a.dir, render = _a.render;\n var localization = provideLocalizationService(this);\n var _b = settings.messages, insertHyperlinkDialogTitle = _b.insertHyperlinkDialogTitle, insertHyperlinkAddress = _b.insertHyperlinkAddress, insertHyperlinkTitle = _b.insertHyperlinkTitle, insertHyperlinkNewWindow = _b.insertHyperlinkNewWindow, insertHyperlinkCancel = _b.insertHyperlinkCancel, insertHyperlinkInsert = _b.insertHyperlinkInsert;\n var linkMark = view ?\n getMark(view.state, view.state.schema.marks[settings.mark])\n : false;\n var content = (React.createElement(Form, { render: function () { return (React.createElement(FormElement, { horizontal: true },\n React.createElement(FieldWrapper, null,\n React.createElement(\"label\", { htmlFor: 'k-editor-link-url', className: 'k-form-label' }, localization.toLanguageString(insertHyperlinkAddress, messages[insertHyperlinkAddress])),\n React.createElement(\"div\", { className: 'k-form-field-wrap' },\n React.createElement(Input, { type: \"text\", id: 'k-editor-link-url', ref: function (e) { return _this.href = e; }, defaultValue: (linkMark && linkMark.attrs.href) || undefined, autoFocus: true }))),\n React.createElement(FieldWrapper, null,\n React.createElement(\"label\", { htmlFor: 'k-editor-link-text', className: 'k-form-label' }, localization.toLanguageString(insertHyperlinkTitle, messages[insertHyperlinkTitle])),\n React.createElement(\"div\", { className: 'k-form-field-wrap' },\n React.createElement(Input, { type: \"text\", id: 'k-editor-link-text', ref: function (e) { return _this.title = e; }, defaultValue: (linkMark && linkMark.attrs.title) || undefined }))),\n settings.linkTarget !== false && React.createElement(FieldWrapper, null,\n React.createElement(\"label\", { htmlFor: 'k-editor-link-target', className: 'k-checkbox-label' },\n React.createElement(Checkbox, { id: 'k-editor-link-target', ref: function (e) { return _this.target = e; }, defaultChecked: (linkMark && !!linkMark.attrs.target) || undefined }),\n localization.toLanguageString(insertHyperlinkNewWindow, messages[insertHyperlinkNewWindow]))))); } }));\n var actionButtons = [(React.createElement(Button, { onClick: this.onClose, dir: dir, key: \"cancel\" }, localization.toLanguageString(insertHyperlinkCancel, messages[insertHyperlinkCancel]))), (React.createElement(Button, { onClick: this.onInsert, themeColor: 'primary', dir: dir, key: \"insert\" }, localization.toLanguageString(insertHyperlinkInsert, messages[insertHyperlinkInsert])))\n ];\n var dialog = (React.createElement(Window, { initialWidth: 450, initialHeight: 250, className: 'k-editor-window', title: localization.toLanguageString(insertHyperlinkDialogTitle, messages[insertHyperlinkDialogTitle]), onClose: this.onClose, style: dir === 'rtl' ? { textAlign: 'right' } : undefined, modal: true, minimizeButton: function () { return null; }, maximizeButton: function () { return null; }, resizable: false },\n content,\n React.createElement.apply(React, __spreadArray([WindowActionsBar, null], actionButtons, false))));\n return render ? render(dialog, { content: content, actionButtons: actionButtons }) : dialog;\n };\n return InsertLinkDialog;\n}(React.Component));\nexport { InsertLinkDialog };\nregisterForLocalization(InsertLinkDialog);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { Window, WindowActionsBar } from '@progress/kendo-react-dialogs';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { NodeSelection, insertNode } from '@progress/kendo-editor-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nimport { Input } from '@progress/kendo-react-inputs';\nimport { Form, FormElement, FieldWrapper } from '@progress/kendo-react-form';\n/**\n * @hidden\n */\nvar InsertImageDialog = /** @class */ (function (_super) {\n __extends(InsertImageDialog, _super);\n function InsertImageDialog() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.src = null;\n _this.altText = null;\n _this.title = null;\n _this.width = null;\n _this.height = null;\n _this.onClose = function () {\n _this.props.view.focus();\n _this.props.onClose();\n };\n _this.onInsert = function () {\n var _a = _this.props, view = _a.view, settings = _a.settings;\n var nodes = view.state.schema.nodes;\n var nodeType = nodes[settings.node];\n var data = {\n src: _this.src ? _this.src.value : null,\n title: _this.title ? _this.title.value : null,\n alt: _this.altText ? _this.altText.value : null,\n width: _this.width ? _this.width.value : null,\n height: _this.height ? _this.height.value : null\n };\n var attrs = Object.keys(data)\n .filter(function (key) { return data[key] !== null && data[key] !== ''; })\n .reduce(function (acc, curr) {\n var _a;\n return Object.assign(acc, (_a = {}, _a[curr] = data[curr], _a));\n }, {});\n var newImage = nodeType.createAndFill(attrs);\n if (newImage) {\n var insertImageCmd = insertNode(newImage, true);\n insertImageCmd(view.state, function (tr) { return view.dispatch(tr.setMeta('commandName', settings.commandName).setMeta('args', attrs)); });\n }\n _this.onClose();\n };\n return _this;\n }\n /**\n * @hidden\n */\n InsertImageDialog.prototype.render = function () {\n var _this = this;\n var _a = this.props, view = _a.view, settings = _a.settings, dir = _a.dir, render = _a.render;\n var _b = settings.messages, insertImageDialogTitle = _b.insertImageDialogTitle, insertImageAddress = _b.insertImageAddress, insertImageTitle = _b.insertImageTitle, insertImageAltText = _b.insertImageAltText, insertImageWidth = _b.insertImageWidth, insertImageHeight = _b.insertImageHeight, insertImageCancel = _b.insertImageCancel, insertImageInsert = _b.insertImageInsert;\n var localization = provideLocalizationService(this);\n var state = view && view.state;\n var attrs = {};\n if (state && state.selection instanceof NodeSelection &&\n state.selection.node.type === state.schema.nodes[settings.node]) {\n attrs = state.selection.node.attrs;\n }\n var content = (React.createElement(Form, { render: function () { return (React.createElement(FormElement, { horizontal: true },\n React.createElement(FieldWrapper, null,\n React.createElement(\"label\", { htmlFor: 'k-editor-image-url', className: 'k-form-label' }, localization.toLanguageString(insertImageAddress, messages[insertImageAddress])),\n React.createElement(\"div\", { className: 'k-form-field-wrap' },\n React.createElement(Input, { type: \"text\", id: 'k-editor-image-url', defaultValue: attrs.src, ref: function (e) { return _this.src = e; }, autoFocus: true }))),\n React.createElement(FieldWrapper, null,\n React.createElement(\"label\", { htmlFor: 'k-editor-image-url', className: 'k-form-label' }, localization.toLanguageString(insertImageAltText, messages[insertImageAltText])),\n React.createElement(\"div\", { className: 'k-form-field-wrap' },\n React.createElement(Input, { type: 'text', id: \"k-editor-image-alt\", defaultValue: attrs.alt, ref: function (e) { return _this.altText = e; } }))),\n React.createElement(FieldWrapper, null,\n React.createElement(\"label\", { htmlFor: 'k-editor-image-title', className: 'k-form-label' }, localization.toLanguageString(insertImageTitle, messages[insertImageTitle])),\n React.createElement(\"div\", { className: 'k-form-field-wrap' },\n React.createElement(Input, { type: 'text', id: \"k-editor-image-title\", defaultValue: attrs.title, ref: function (e) { return _this.title = e; } }))),\n React.createElement(FieldWrapper, null,\n React.createElement(\"label\", { htmlFor: 'k-editor-image-width', className: 'k-form-label' }, localization.toLanguageString(insertImageWidth, messages[insertImageWidth])),\n React.createElement(\"div\", { className: 'k-form-field-wrap' },\n React.createElement(Input, { type: 'text', id: \"k-editor-image-width\", defaultValue: attrs.width, ref: function (e) { return _this.width = e; } }))),\n React.createElement(FieldWrapper, null,\n React.createElement(\"label\", { htmlFor: 'k-editor-image-height', className: 'k-form-label' }, localization.toLanguageString(insertImageHeight, messages[insertImageHeight])),\n React.createElement(\"div\", { className: 'k-form-field-wrap' },\n React.createElement(Input, { id: \"k-editor-image-height\", defaultValue: attrs.height, ref: function (e) { return _this.height = e; } }))))); } }));\n var actionButtons = [(React.createElement(Button, { onClick: this.onClose, dir: dir, key: \"cancel\" }, localization.toLanguageString(insertImageCancel, messages[insertImageCancel]))), (React.createElement(Button, { onClick: this.onInsert, themeColor: 'primary', dir: dir, key: \"insert\" }, localization.toLanguageString(insertImageInsert, messages[insertImageInsert])))];\n var dialog = (React.createElement(Window, { initialWidth: 500, initialHeight: 350, className: 'k-editor-window', title: localization.toLanguageString(insertImageDialogTitle, messages[insertImageDialogTitle]), onClose: this.onClose, key: \"dialog\", style: dir === 'rtl' ? { textAlign: 'right' } : undefined, modal: true, minimizeButton: function () { return null; }, maximizeButton: function () { return null; }, resizable: false },\n content,\n React.createElement.apply(React, __spreadArray([WindowActionsBar, null], actionButtons, false))));\n return render ? render(dialog, { content: content, actionButtons: actionButtons }) : dialog;\n };\n return InsertImageDialog;\n}(React.Component));\nexport { InsertImageDialog };\nregisterForLocalization(InsertImageDialog);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { Window, WindowActionsBar } from '@progress/kendo-react-dialogs';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { getHtml, setHtml, indentHtml, trimWhitespace } from '@progress/kendo-editor-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nimport { editorPropsKey } from './../utils/props-key';\nimport { TextArea } from '@progress/kendo-react-inputs';\n/**\n * @hidden\n */\nvar ViewHtmlDialog = /** @class */ (function (_super) {\n __extends(ViewHtmlDialog, _super);\n function ViewHtmlDialog() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.htmlArea = null;\n _this.textAreaRef = function (area) {\n _this.htmlArea = area;\n var htmlArea = area && area.element.current;\n if (htmlArea) {\n htmlArea.style.resize = 'none';\n }\n };\n _this.onUpdate = function () {\n var _a = _this.props, view = _a.view, settings = _a.settings;\n var html = trimWhitespace((_this.htmlArea && _this.htmlArea.value) || '');\n var preserveWhitespace = editorPropsKey.getState(view.state).preserveWhitespace;\n setHtml(html, settings.commandName, { preserveWhitespace: preserveWhitespace })(view.state, view.dispatch);\n _this.onClose();\n };\n _this.onClose = function () {\n _this.props.view.focus();\n _this.props.onClose();\n };\n return _this;\n }\n /**\n * @hidden\n */\n ViewHtmlDialog.prototype.render = function () {\n var _a = this.props, view = _a.view, settings = _a.settings, dir = _a.dir, render = _a.render;\n var localization = provideLocalizationService(this);\n var _b = settings.messages, viewHtmlDialogTitle = _b.viewHtmlDialogTitle, viewHtmlCancel = _b.viewHtmlCancel, viewHtmlUpdate = _b.viewHtmlUpdate;\n var content = (React.createElement(TextArea, { className: \"k-editor-textarea\", defaultValue: indentHtml(getHtml(view.state)), autoFocus: true, autoSize: false, ref: this.textAreaRef }));\n var actionButtons = [(React.createElement(Button, { onClick: this.onClose, dir: dir, key: \"cancel\" }, localization.toLanguageString(viewHtmlCancel, messages[viewHtmlCancel]))), (React.createElement(Button, { onClick: this.onUpdate, themeColor: 'primary', dir: dir, key: \"update\" }, localization.toLanguageString(viewHtmlUpdate, messages[viewHtmlUpdate])))\n ];\n var dialog = (React.createElement(Window, { className: 'k-editor-window', title: localization.toLanguageString(viewHtmlDialogTitle, messages[viewHtmlDialogTitle]), onClose: this.onClose, key: \"dialog\", style: dir === 'rtl' ? { textAlign: 'right' } : undefined, modal: true, minimizeButton: function () { return null; }, maximizeButton: function () { return null; }, resizable: true, initialHeight: 400, initialWidth: 500 },\n content,\n React.createElement.apply(React, __spreadArray([WindowActionsBar, null], actionButtons, false))));\n return render ? render(dialog, { content: content, actionButtons: actionButtons }) : dialog;\n };\n return ViewHtmlDialog;\n}(React.Component));\nexport { ViewHtmlDialog };\nregisterForLocalization(ViewHtmlDialog);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { InsertLinkDialog as LinkDialog } from './insertLink';\nimport { InsertImageDialog as ImageDialog } from './insertImage';\nimport { ViewHtmlDialog as ViewHtmlDialogX } from './viewHtml';\nimport { FindAndReplaceDialog as FindAndReplaceDialogX } from './FindReplace';\n/**\n * Represents a wrapping namespace for the dialog components and props of the Editor.\n */\nexport var EditorDialogs;\n(function (EditorDialogs) {\n /**\n * The InsertLinkDialog component.\n */\n var InsertLinkDialog = /** @class */ (function (_super) {\n __extends(InsertLinkDialog, _super);\n function InsertLinkDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InsertLinkDialog;\n }(LinkDialog));\n EditorDialogs.InsertLinkDialog = InsertLinkDialog;\n /**\n * The InsertImageDialog component.\n */\n var InsertImageDialog = /** @class */ (function (_super) {\n __extends(InsertImageDialog, _super);\n function InsertImageDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InsertImageDialog;\n }(ImageDialog));\n EditorDialogs.InsertImageDialog = InsertImageDialog;\n /**\n * The ViewHtmlDialog component.\n */\n var ViewHtmlDialog = /** @class */ (function (_super) {\n __extends(ViewHtmlDialog, _super);\n function ViewHtmlDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return ViewHtmlDialog;\n }(ViewHtmlDialogX));\n EditorDialogs.ViewHtmlDialog = ViewHtmlDialog;\n /**\n * The FindAndReplaceDialog component.\n */\n var FindAndReplaceDialog = /** @class */ (function (_super) {\n __extends(FindAndReplaceDialog, _super);\n function FindAndReplaceDialog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return FindAndReplaceDialog;\n }(FindAndReplaceDialogX));\n EditorDialogs.FindAndReplaceDialog = FindAndReplaceDialog;\n})(EditorDialogs || (EditorDialogs = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { formatString } from '../utils';\nvar cellClass = 'k-ct-cell k-disabled';\nvar selectedClass = 'k-selected';\n/**\n * @hidden\n */\nvar PopupGrid = /** @class */ (function (_super) {\n __extends(PopupGrid, _super);\n function PopupGrid() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = { row: -1, col: -1 };\n return _this;\n }\n PopupGrid.prototype.renderCell = function (index, selRow, selCol) {\n var _this = this;\n var row = Math.floor(index / this.props.columns);\n var col = index % this.props.columns;\n var selected = col <= selCol && row <= selRow;\n return (React.createElement(\"span\", { className: cellClass + (selected ? \" \".concat(selectedClass) : ''), onMouseEnter: function () { return _this.setState({ row: row, col: col }); }, onClick: function () { return _this.props.onCellClick.call(undefined, row, col); }, key: index }));\n };\n PopupGrid.prototype.render = function () {\n var _this = this;\n var cells = [];\n var total = this.props.columns * this.props.rows;\n var _a = this.state, row = _a.row, col = _a.col;\n var onDown = this.props.onDown;\n var message = this.props.createTableMessage;\n if (col > -1) {\n message = formatString(this.props.createTableHintMessage, row + 1, col + 1);\n }\n for (var i = 0; i < total; i++) {\n cells.push(this.renderCell(i, row, col));\n }\n return [(React.createElement(\"div\", { onMouseLeave: function () { return _this.setState({ row: -1, col: -1 }); }, key: \"cells\", style: { borderColor: 'inherit' }, onPointerDown: onDown, onMouseDown: onDown }, cells)), (React.createElement(\"div\", { className: \"k-status\", key: \"status\", onPointerDown: onDown, onMouseDown: onDown }, message))];\n };\n return PopupGrid;\n}(React.Component));\nexport default PopupGrid;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport PopupGrid from './popupGrid';\n/**\n * @hidden\n */\nexport var InsertTablePopupNS;\n(function (InsertTablePopupNS) {\n /**\n * @hidden\n */\n var InsertTablePopup = /** @class */ (function (_super) {\n __extends(InsertTablePopup, _super);\n function InsertTablePopup() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.pointerdown = false;\n _this.onWindowDown = function (event) {\n var anchor = _this.props.anchor;\n if (anchor && (anchor === event.target || anchor.firstElementChild === event.target)) {\n return;\n }\n if (_this.props.show && !_this.pointerdown) {\n _this.props.onClose();\n }\n _this.pointerdown = false;\n };\n _this.onPointerDown = function () { return _this.pointerdown = true; };\n return _this;\n }\n /**\n * @hidden\n */\n InsertTablePopup.prototype.componentDidUpdate = function (prevProps) {\n // The case when the popup is shown and the view is updated (selection or document is changed).\n if (prevProps.show && this.props.show) {\n this.props.onClose();\n }\n };\n /**\n * @hidden\n */\n InsertTablePopup.prototype.componentDidMount = function () {\n window.addEventListener('mousedown', this.onWindowDown);\n window.addEventListener('pointerdown', this.onWindowDown);\n };\n /**\n * @hidden\n */\n InsertTablePopup.prototype.componentWillUnmount = function () {\n window.removeEventListener('mousedown', this.onWindowDown);\n window.removeEventListener('pointerdown', this.onWindowDown);\n };\n /**\n * @hidden\n */\n InsertTablePopup.prototype.render = function () {\n var _a = this.props, show = _a.show, anchor = _a.anchor, dir = _a.dir, _b = _a.rows, rows = _b === void 0 ? InsertTablePopup.defaultProps.rows : _b, _c = _a.columns, columns = _c === void 0 ? InsertTablePopup.defaultProps.columns : _c;\n var horizontal = dir === 'rtl' ? 'right' : 'left';\n return (React.createElement(Popup, { anchor: anchor, anchorAlign: { horizontal: horizontal, vertical: 'bottom' }, popupAlign: { horizontal: horizontal, vertical: 'top' }, popupClass: \"k-ct-popup k-group k-reset k-state-border-up\", show: show, style: dir === 'rtl' ? { direction: 'rtl' } : undefined },\n React.createElement(PopupGrid, { rows: rows, columns: columns, createTableMessage: this.props.createTableMessage, createTableHintMessage: this.props.createTableHintMessage, onCellClick: this.props.onTableInsert, onDown: this.onPointerDown })));\n };\n /**\n * @hidden\n */\n InsertTablePopup.propTypes = {\n show: PropTypes.bool.isRequired,\n createTableMessage: PropTypes.string.isRequired,\n createTableHintMessage: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n onTableInsert: PropTypes.func.isRequired,\n anchor: PropTypes.any,\n rows: PropTypes.number,\n columns: PropTypes.number,\n dir: PropTypes.string\n };\n /**\n * @hidden\n */\n InsertTablePopup.defaultProps = {\n rows: 6,\n columns: 8\n };\n return InsertTablePopup;\n }(React.Component));\n InsertTablePopupNS.InsertTablePopup = InsertTablePopup;\n})(InsertTablePopupNS || (InsertTablePopupNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { onDownPreventDefault, parentNode } from './../utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../../messages';\nimport { InsertTablePopupNS } from './popup';\nimport { canInsert, createTable, insertNode } from '@progress/kendo-editor-common';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var InsertTableToolNS;\n(function (InsertTableToolNS) {\n /**\n * @hidden\n */\n InsertTableToolNS.createInsertTableTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(InsertTableTool, _super);\n function InsertTableTool() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n openedPopup: false\n };\n _this.button = null;\n _this.togglePopup = function () {\n _this.setState({\n openedPopup: !_this.state.openedPopup\n });\n };\n _this.closePopup = function () {\n if (_this.state.openedPopup) {\n _this.togglePopup();\n }\n };\n _this.onTableInsert = function (row, col) {\n var view = _this.props.view;\n if (!view) {\n return;\n }\n var _a = view.state.schema.nodes, table = _a.table, table_row = _a.table_row, table_cell = _a.table_cell;\n var newTable = createTable({ table: table, table_row: table_row, table_cell: table_cell }, row, col);\n if (newTable) {\n insertNode(newTable, true)(view.state, view.dispatch);\n }\n view.focus();\n _this.closePopup();\n };\n return _this;\n }\n InsertTableTool.prototype.render = function () {\n var _this = this;\n var _a = this.props, view = _a.view, render = _a.render, props = __rest(_a, [\"view\", \"render\"]);\n var state = view && view.state;\n var localization = provideLocalizationService(this);\n var _b = settings.messages, createTableMsgKey = _b.createTable, createTableHint = _b.createTableHint;\n var createTableMsg = localization.toLanguageString(createTableMsgKey, messages[createTableMsgKey]);\n var createTableHintMsg = localization.toLanguageString(createTableHint, messages[createTableHint]);\n var disabled = Boolean(!state || !canInsert(state, state.schema.nodes.table) ||\n parentNode(state.selection.$from, function (node) { return node.type.name === 'table_caption_external'; }));\n var rendering = [(React.createElement(Button, __assign({ onClick: disabled ? undefined : this.togglePopup, \"aria-disabled\": disabled ? true : undefined, ref: function (e) { return _this.button = e && e.element; }, key: \"InsertTable\" }, onDownPreventDefault, { title: createTableMsg }, settings.props, props, { className: classNames(props.className, settings.props.className, { 'k-disabled': disabled }) }))), (view && !disabled && (React.createElement(InsertTablePopupNS.InsertTablePopup, { key: \"insertTablePopup\", createTableMessage: createTableMsg, createTableHintMessage: createTableHintMsg, dir: props.dir, anchor: this.button, show: this.state.openedPopup, onClose: this.closePopup, onTableInsert: this.onTableInsert })) || null)];\n return render ? render.call(undefined, rendering, { view: view }) : rendering;\n };\n return InsertTableTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(InsertTableToolNS || (InsertTableToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { EditorToolsSettings } from '../config/toolsSettings';\nimport { alignBlocks, isAligned } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nvar alignRemove = EditorToolsSettings.alignRemove;\n/**\n * @hidden\n */\nexport var createAlignTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(AlignTool, _super);\n function AlignTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AlignTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, props = __rest(_a, [\"view\", \"render\"]);\n var state = view && view.state;\n var aligned = !!state && isAligned(state, settings.actions);\n var actions = aligned ? alignRemove.actions : settings.actions;\n var commandName = aligned ? alignRemove.commandName : settings.commandName;\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var button = (React.createElement(Button, __assign({ onClick: function () { return view && alignBlocks(actions, commandName)(view.state, view.dispatch); }, selected: aligned, togglable: true }, onDownPreventDefault, { title: localization.toLanguageString(titleKey, messages[titleKey]) }, settings.props, props)));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return AlignTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { getInlineStyles, applyInlineStyle } from '@progress/kendo-editor-common';\nimport { userSelectNone, itemRender } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var FontStyleToolNS;\n(function (FontStyleToolNS) {\n /**\n * @hidden\n */\n FontStyleToolNS.createStyleDropDownList = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(DropDownListTool, _super);\n function DropDownListTool() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onChange = function (event) {\n var item = event.target.value;\n var view = _this.props.view;\n var style = settings.style;\n if (view) {\n applyInlineStyle({ style: style, value: item.value }, settings.commandName)(view.state, view.dispatch);\n var syntheticEvent = event.syntheticEvent;\n if (syntheticEvent && syntheticEvent.type === 'click') {\n view.focus();\n }\n }\n };\n return _this;\n }\n DropDownListTool.prototype.render = function () {\n var style = settings.style;\n var _a = this.props, view = _a.view, render = _a.render, data = _a.data, defaultItemProps = _a.defaultItem, ddlProps = __rest(_a, [\"view\", \"render\", \"data\", \"defaultItem\"]);\n var items = data || settings.items;\n var defaultItem = defaultItemProps || settings.defaultItem;\n var styles = view ? getInlineStyles(view.state, { name: style, value: /^.+$/ }) : [];\n var localization = provideLocalizationService(this);\n if (defaultItem && defaultItem.localizationKey) {\n defaultItem = __assign({}, defaultItem);\n defaultItem.text = defaultItem.localizationKey ? localization.toLanguageString(defaultItem.localizationKey, messages[defaultItem.localizationKey]) : defaultItem.text;\n }\n var value = new Set(styles).size === 1 ? styles[0] : null;\n var dropdown = (React.createElement(DropDownList, __assign({ value: value ? items.find(function (i) { return i.value === value; }) : value, data: items, defaultItem: defaultItem, itemRender: itemRender, textField: \"text\", dataItemKey: \"value\", onChange: this.onChange, style: userSelectNone, leftRightKeysNavigation: false, title: defaultItem.text }, ddlProps)));\n return render ? render.call(undefined, dropdown, { view: view }) : dropdown;\n };\n return DropDownListTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(FontStyleToolNS || (FontStyleToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { getBlockFormats, formatBlockElements } from '@progress/kendo-editor-common';\nimport { userSelectNone, itemRender } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var FormatBlockToolNS;\n(function (FormatBlockToolNS) {\n /**\n * @hidden\n */\n FormatBlockToolNS.createFormatBlockDropDownList = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(FormatBlockDropDownList, _super);\n function FormatBlockDropDownList() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onChange = function (event) {\n var item = event.target.value;\n var view = _this.props.view;\n if (view && formatBlockElements(item.value, settings.commandName)(view.state, view.dispatch)) {\n var syntheticEvent = event.syntheticEvent;\n if (syntheticEvent && syntheticEvent.type === 'click') {\n view.focus();\n }\n }\n };\n return _this;\n }\n FormatBlockDropDownList.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, data = _a.data, defaultItemProps = _a.defaultItem, ddlProps = __rest(_a, [\"view\", \"render\", \"data\", \"defaultItem\"]);\n var items = data || settings.items;\n var defaultItem = defaultItemProps || settings.defaultItem;\n var state = view && view.state;\n var formats = state ? getBlockFormats(state) : [];\n var localization = provideLocalizationService(this);\n if (defaultItem && defaultItem.localizationKey) {\n defaultItem = __assign({}, defaultItem);\n defaultItem.text = defaultItem.localizationKey ? localization.toLanguageString(defaultItem.localizationKey, messages[defaultItem.localizationKey]) : defaultItem.text;\n }\n var value = new Set(formats).size === 1 ? formats[0] : null;\n var dropdown = (React.createElement(DropDownList, __assign({ value: value ? items.find(function (i) { return i.value === value; }) : value, onChange: this.onChange, itemRender: itemRender, data: items, defaultItem: defaultItem, textField: \"text\", dataItemKey: \"value\", style: userSelectNone, leftRightKeysNavigation: false, title: defaultItem.text }, ddlProps)));\n return render ? render.call(undefined, dropdown, { view: view }) : dropdown;\n };\n return FormatBlockDropDownList;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(FormatBlockToolNS || (FormatBlockToolNS = {}));\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { ColorPicker } from '@progress/kendo-react-inputs';\nimport { applyInlineStyle } from '@progress/kendo-editor-common';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { messages } from '../messages';\n/**\n * @hidden\n */\nexport var ApplyColorTool = function (props) {\n var view = props.view, style = props.style, colorPickerProps = props.colorPickerProps, commandName = props.commandName;\n var titleKey = colorPickerProps.title;\n var ariaLabelKey = colorPickerProps.ariaLabel;\n var _a = colorPickerProps.view, paletteView = _a === void 0 ? 'palette' : _a;\n var onChange = React.useCallback(function (event) {\n if (view) {\n applyInlineStyle({ style: style, value: event.value }, commandName)(view.state, view.dispatch);\n if (paletteView === 'palette') {\n view.focus();\n }\n }\n }, [view, style, paletteView, commandName]);\n return (React.createElement(ColorPicker, __assign({ onChange: onChange, onActiveColorClick: onChange }, colorPickerProps, { title: titleKey ? useLocalization().toLanguageString(titleKey, messages[titleKey]) : titleKey, ariaLabel: ariaLabelKey ? useLocalization().toLanguageString(ariaLabelKey, messages[ariaLabelKey]) : ariaLabelKey })));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var createProseMirrorTool = function (settings, command) {\n var Tool = /** @class */ (function (_super) {\n __extends(ProseMirrorTool, _super);\n function ProseMirrorTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ProseMirrorTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var state = view && view.state;\n var disabled = state ? !command(state) : false;\n var button = (React.createElement(Button, __assign({ onClick: disabled ? undefined : function () { return view &&\n command(view.state, function (tr) { return view.dispatch(tr.setMeta('commandName', settings.commandName)); }); }, \"aria-disabled\": disabled ? true : undefined }, onDownPreventDefault, { title: localization.toLanguageString(titleKey, messages[titleKey]) }, settings.props, buttonProps, { className: classNames(buttonProps.className, settings.props.className, { 'k-disabled': disabled }) })));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return ProseMirrorTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n};\n","import { undo, redo } from '@progress/kendo-editor-common';\nimport { createProseMirrorTool } from './proseMirrorTool';\n/**\n * @hidden\n */\nexport var HistoryToolNS;\n(function (HistoryToolNS) {\n /**\n * @hidden\n */\n HistoryToolNS.createUndoTool = function (settings) { return createProseMirrorTool(settings, undo); };\n /**\n * @hidden\n */\n HistoryToolNS.createRedoTool = function (settings) { return createProseMirrorTool(settings, redo); };\n})(HistoryToolNS || (HistoryToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { indentBlocks, isIndented, canIndentAsListItem, hasNode, sinkListItem } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var IndentToolNS;\n(function (IndentToolNS) {\n /**\n * @hidden\n */\n IndentToolNS.createIndentTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(IndentTool, _super);\n function IndentTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n IndentTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var dir = buttonProps.dir;\n var state = view && view.state;\n var nodes = state && state.schema.nodes;\n var listItem = nodes && nodes[settings.listsTypes.listItem];\n var actions = settings.actions;\n var canIndented = !!state && !!listItem &&\n (isIndented(state, actions, dir) ||\n actions.some(function (a) { return nodes && nodes[a.node] && hasNode(state, nodes[a.node]); })) &&\n !hasNode(state, listItem);\n var canListIndent = !!state && canIndentAsListItem(state, listItem);\n var canIndent = canIndented || canListIndent;\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var disabled = !canIndent;\n var button = (React.createElement(Button, __assign({ onClick: disabled ? undefined : function () {\n if (view && canListIndent && listItem) {\n sinkListItem(listItem)(view.state, view.dispatch);\n }\n else if (view && canIndented) {\n indentBlocks(actions, settings.commandName, dir)(view.state, view.dispatch);\n }\n }, \"aria-disabled\": disabled ? true : undefined, title: localization.toLanguageString(titleKey, messages[titleKey]) }, onDownPreventDefault, settings.props, buttonProps, { className: classNames(buttonProps.className, settings.props.className, { 'k-disabled': disabled }) })));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return IndentTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(IndentToolNS || (IndentToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { toggleInlineFormat, hasMark } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from '../messages';\n/**\n * @hidden\n */\nexport var InlineFormatToolNS;\n(function (InlineFormatToolNS) {\n /**\n * @hidden\n */\n InlineFormatToolNS.createInlineFormatTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(InlineTool, _super);\n function InlineTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var state = view && view.state;\n var mark = settings.mark, altMarks = settings.altMarks, altStyle = settings.altStyle;\n var options = { mark: mark, altMarks: altMarks, altStyle: altStyle };\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var button = (React.createElement(Button, __assign({ onClick: function () {\n return view && toggleInlineFormat(options, state && state.tr.setMeta('commandName', settings.commandName))(view.state, view.dispatch);\n }, selected: !!state && hasMark(state, options), togglable: true }, onDownPreventDefault, { title: localization.toLanguageString(titleKey, messages[titleKey]) }, settings.props, buttonProps)));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return InlineTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(InlineFormatToolNS || (InlineFormatToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { getMark } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { EditorDialogs } from '../dialogs/main';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var LinkToolNS;\n(function (LinkToolNS) {\n /**\n * @hidden\n */\n LinkToolNS.createLinkTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(LinkTool, _super);\n function LinkTool() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n openedDialog: false\n };\n _this.toggleDialog = function () {\n _this.setState({\n openedDialog: !_this.state.openedDialog\n });\n };\n return _this;\n }\n LinkTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, props = __rest(_a, [\"view\", \"render\"]);\n var state = view && view.state;\n var collapsed = state ? state.selection.empty : true;\n var linkMark = state && getMark(state, state.schema.marks[settings.mark]);\n var localization = provideLocalizationService(this);\n var insertHyperlink = settings.messages.insertHyperlink;\n var disabled = collapsed && !linkMark;\n var rendering = [(React.createElement(Button, __assign({ onClick: disabled ? undefined : this.toggleDialog, \"aria-disabled\": disabled ? true : undefined, key: \"link\" }, onDownPreventDefault, { title: localization.toLanguageString(insertHyperlink, messages[insertHyperlink]) }, settings.props, props, { className: classNames(props.className, settings.props.className, { 'k-disabled': disabled }) }))), (this.state.openedDialog && view && (React.createElement(EditorDialogs.InsertLinkDialog, { key: \"insertLinkDialog\", settings: settings, dir: props.dir, view: view, onClose: this.toggleDialog })) || null)];\n return render ? render.call(undefined, rendering, { view: view }) : rendering;\n };\n return LinkTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(LinkToolNS || (LinkToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { canInsert } from '@progress/kendo-editor-common';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { onDownPreventDefault } from './utils';\nimport { EditorDialogs } from '../dialogs/main';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var createInsertImageTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(InsertImageTool, _super);\n function InsertImageTool() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n openedDialog: false\n };\n _this.toggleDialog = function () {\n _this.setState({\n openedDialog: !_this.state.openedDialog\n });\n };\n return _this;\n }\n InsertImageTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var state = view && view.state;\n var nodeType = state ? state.schema.nodes[settings.node] : undefined;\n var localization = provideLocalizationService(this);\n var insertImage = settings.messages.insertImage;\n var disabled = !nodeType || !state || !canInsert(state, nodeType);\n var rendering = [(React.createElement(Button, __assign({ onClick: disabled ? undefined : this.toggleDialog, \"aria-disabled\": disabled ? true : undefined, key: \"insertImage\" }, onDownPreventDefault, { title: localization.toLanguageString(insertImage, messages[insertImage]) }, settings.props, buttonProps, { className: classNames(buttonProps.className, settings.props.className, { 'k-disabled': disabled }) }))), (this.state.openedDialog && view && (React.createElement(EditorDialogs.InsertImageDialog, { key: \"insertImageDialog\", view: view, settings: settings, dir: buttonProps.dir, onClose: this.toggleDialog })) || null)];\n return render ? render.call(undefined, rendering, { view: view }) : rendering;\n };\n return InsertImageTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { hasNode, toggleList } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var ListToolNS;\n(function (ListToolNS) {\n /**\n * @hidden\n */\n ListToolNS.createListTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(ListTool, _super);\n function ListTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var isActive = false;\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var types = settings.types;\n var listType = settings.listType;\n if (view) {\n var state = view.state;\n var nodes = state.schema.nodes;\n var hasOl = hasNode(state, nodes[types.orderedList]), hasUl = hasNode(state, nodes[types.bulletList]);\n if (listType === types.orderedList) {\n isActive = hasOl && !hasUl;\n }\n else {\n isActive = !hasOl && hasUl;\n }\n }\n var button = (React.createElement(Button, __assign({ onClick: function () { return view && toggleList(view.state, view.dispatch, view, __assign({ listType: listType }, types), settings.commandName); }, togglable: true, selected: isActive, title: localization.toLanguageString(titleKey, messages[titleKey]) }, onDownPreventDefault, settings.props, buttonProps)));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return ListTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(ListToolNS || (ListToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { indentBlocks, isIndented, canOutdentAsListItem, liftListItem } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var OutdentToolNS;\n(function (OutdentToolNS) {\n /**\n * @hidden\n */\n OutdentToolNS.createOutdentTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(OutdentTool, _super);\n function OutdentTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n OutdentTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var state = view && view.state;\n var dir = buttonProps.dir;\n var indented = !!state && isIndented(state, settings.actions, dir);\n var listItem = state && state.schema.nodes[settings.listsTypes.listItem];\n var canListOutdent = !!state && canOutdentAsListItem(state, { nodes: settings.actions, listsTypes: settings.listsTypes });\n var canOutdent = indented || canListOutdent;\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var disabled = !canOutdent;\n var button = (React.createElement(Button, __assign({ onClick: disabled ? undefined : function () {\n if (view && canListOutdent && listItem) {\n liftListItem(listItem)(view.state, view.dispatch);\n }\n else if (view && indented) {\n indentBlocks(settings.actions, settings.commandName, dir)(view.state, view.dispatch);\n }\n }, \"aria-disabled\": disabled ? true : undefined, title: localization.toLanguageString(titleKey, messages[titleKey]) }, onDownPreventDefault, settings.props, buttonProps, { className: classNames(buttonProps.className, settings.props.className, { 'k-disabled': disabled }) })));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return OutdentTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(OutdentToolNS || (OutdentToolNS = {}));\n","import { addRowBefore, addRowAfter, addColumnBefore, addColumnAfter, deleteRow, deleteColumn, deleteTable, mergeCells, splitCell, selectionCell } from '@progress/kendo-editor-common';\nimport { createProseMirrorTool } from './proseMirrorTool';\n/**\n * @hidden\n */\nexport var deleteColumnCmd = function (state, dispatch) {\n var result = deleteColumn(state, dispatch);\n if (result && !dispatch) {\n var pos = selectionCell(state);\n var row = pos && pos.node(pos.depth);\n if (row && row.content.childCount === 1) {\n return false;\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nexport var deleteRowCmd = function (state, dispatch) {\n var result = deleteRow(state, dispatch);\n if (result && !dispatch) {\n var pos = selectionCell(state);\n var rowParent = pos && pos.node(pos.depth - 1);\n if (rowParent && rowParent.content.childCount === 1) {\n return false;\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nexport var TableEditNS;\n(function (TableEditNS) {\n /**\n * @hidden\n */\n TableEditNS.createAddRowBeforeTool = function (settings) {\n return createProseMirrorTool(settings, addRowBefore);\n };\n /**\n * @hidden\n */\n TableEditNS.createAddRowAfterTool = function (settings) {\n return createProseMirrorTool(settings, addRowAfter);\n };\n /**\n * @hidden\n */\n TableEditNS.createAddColumnBeforeTool = function (settings) {\n return createProseMirrorTool(settings, addColumnBefore);\n };\n /**\n * @hidden\n */\n TableEditNS.createAddColumnAfterTool = function (settings) {\n return createProseMirrorTool(settings, addColumnAfter);\n };\n /**\n * @hidden\n */\n TableEditNS.createDeleteRowTool = function (settings) {\n return createProseMirrorTool(settings, deleteRowCmd);\n };\n /**\n * @hidden\n */\n TableEditNS.createDeleteColumnTool = function (settings) {\n return createProseMirrorTool(settings, deleteColumnCmd);\n };\n /**\n * @hidden\n */\n TableEditNS.createDeleteTableTool = function (settings) {\n return createProseMirrorTool(settings, deleteTable);\n };\n /**\n * @hidden\n */\n TableEditNS.createMergeCellsTool = function (settings) {\n return createProseMirrorTool(settings, mergeCells);\n };\n /**\n * @hidden\n */\n TableEditNS.createSplitCellTool = function (settings) {\n return createProseMirrorTool(settings, splitCell);\n };\n})(TableEditNS || (TableEditNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { removeLink, hasMark } from '@progress/kendo-editor-common';\nimport { onDownPreventDefault } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var UnlinkToolNS;\n(function (UnlinkToolNS) {\n /**\n * @hidden\n */\n UnlinkToolNS.createUnlinkTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(UnlinkTool, _super);\n function UnlinkTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n UnlinkTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var options = { mark: settings.mark };\n var hasLink = view ?\n hasMark(view.state, options)\n : false;\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.title;\n var disabled = !hasLink;\n var button = (React.createElement(Button, __assign({ onClick: disabled ? undefined : function () { return view &&\n removeLink(options, view.state.tr.setMeta('commandName', settings.commandName))(view.state, view.dispatch); }, \"aria-disabled\": disabled ? true : undefined }, onDownPreventDefault, { title: localization.toLanguageString(titleKey, messages[titleKey]) }, settings.props, buttonProps, { className: classNames(buttonProps.className, settings.props.className, { 'k-disabled': disabled }) })));\n return render ? render.call(undefined, button, { view: view }) : button;\n };\n return UnlinkTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(UnlinkToolNS || (UnlinkToolNS = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { onDownPreventDefault } from './utils';\nimport { EditorDialogs } from '../dialogs/main';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages } from './../messages';\n/**\n * @hidden\n */\nexport var ViewHtmlToolNS;\n(function (ViewHtmlToolNS) {\n /**\n * @hidden\n */\n ViewHtmlToolNS.createViewHtmlTool = function (settings) {\n var Tool = /** @class */ (function (_super) {\n __extends(ViewHtmlTool, _super);\n function ViewHtmlTool() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n openedDialog: false\n };\n _this.toggleDialog = function () {\n _this.setState({\n openedDialog: !_this.state.openedDialog\n });\n };\n return _this;\n }\n ViewHtmlTool.prototype.render = function () {\n var _a = this.props, view = _a.view, render = _a.render, buttonProps = __rest(_a, [\"view\", \"render\"]);\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.viewHtml;\n var rendering = [(React.createElement(Button, __assign({ onClick: this.toggleDialog, key: \"viewHtml\" }, onDownPreventDefault, { title: localization.toLanguageString(titleKey, messages[titleKey]) }, settings.props, buttonProps))), ((this.state.openedDialog && view && (React.createElement(EditorDialogs.ViewHtmlDialog, { key: \"viewHtmlDialog\", view: view, settings: settings, dir: buttonProps.dir, onClose: this.toggleDialog })) || null))];\n return render ? render.call(undefined, rendering, { view: view }) : rendering;\n };\n return ViewHtmlTool;\n }(React.Component));\n registerForLocalization(Tool);\n return Tool;\n };\n})(ViewHtmlToolNS || (ViewHtmlToolNS = {}));\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { onDownPreventDefault } from './utils';\nimport { messages } from './../messages';\nimport { EditorToolsSettings } from './../config/toolsSettings';\nimport { classNames } from '@progress/kendo-react-common';\nvar print = EditorToolsSettings.print;\n/**\n * @hidden\n */\nexport var Print = function (props) {\n var view = props.view, render = props.render, _a = props.settings, settings = _a === void 0 ? print : _a, buttonProps = __rest(props, [\"view\", \"render\", \"settings\"]);\n var dom = view && view.dom;\n var doc = dom && dom.ownerDocument;\n var editorWindow = doc && doc.defaultView;\n var titleKey = settings.messages.title;\n var disabled = !editorWindow || editorWindow === window;\n var onClick = React.useCallback(function () {\n if (editorWindow) {\n editorWindow.print();\n }\n }, [editorWindow]);\n var button = (React.createElement(Button, __assign({ onClick: disabled ? undefined : onClick, \"aria-disabled\": disabled ? true : undefined, title: useLocalization().toLanguageString(titleKey, messages[titleKey]) }, onDownPreventDefault, settings.props, buttonProps, { className: classNames(buttonProps.className, settings.props.className, { 'k-disabled': disabled }) })));\n return (render ? render.call(undefined, button, { view: view }) : button);\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { savePDF } from '@progress/kendo-react-pdf';\nimport { onDownPreventDefault } from './utils';\nimport { messages } from './../messages';\nimport { EditorToolsSettings } from './../config/toolsSettings';\nvar pdf = EditorToolsSettings.pdf, defaultSavePdfOptions = EditorToolsSettings.savePdfOptions;\n/**\n * @hidden\n */\nexport var Pdf = function (props) {\n var view = props.view, render = props.render, _a = props.settings, settings = _a === void 0 ? pdf : _a, savePdfOptions = props.savePdfOptions, savePdfCallback = props.savePdfCallback, buttonProps = __rest(props, [\"view\", \"render\", \"settings\", \"savePdfOptions\", \"savePdfCallback\"]);\n var titleKey = settings.messages.title;\n var onClick = React.useCallback(function () {\n if (view) {\n savePDF(view.dom, __assign(__assign({}, defaultSavePdfOptions), (savePdfOptions || {})), savePdfCallback);\n }\n }, [view, savePdfOptions, savePdfCallback]);\n var button = (React.createElement(Button, __assign({ onClick: onClick, title: useLocalization().toLanguageString(titleKey, messages[titleKey]) }, onDownPreventDefault, settings.props, buttonProps)));\n return (render ? render.call(undefined, button, { view: view }) : button);\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { onDownPreventDefault } from './utils';\nimport { messages } from './../messages';\nimport { selectAll as selectAllCommand } from '@progress/kendo-editor-common';\nimport { EditorToolsSettings } from './../config/toolsSettings';\nvar selectAll = EditorToolsSettings.selectAll;\n/**\n * @hidden\n */\nexport var SelectAll = function (props) {\n var view = props.view, render = props.render, _a = props.settings, settings = _a === void 0 ? selectAll : _a, buttonProps = __rest(props, [\"view\", \"render\", \"settings\"]);\n var titleKey = settings.messages.title;\n var onClick = React.useCallback(function () {\n if (view) {\n selectAllCommand(view.state, view.dispatch);\n view.focus();\n }\n }, [view]);\n var button = (React.createElement(Button, __assign({ onClick: onClick, title: useLocalization().toLanguageString(titleKey, messages[titleKey]) }, onDownPreventDefault, settings.props, buttonProps)));\n return (render ? render.call(undefined, button, { view: view }) : button);\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { onDownPreventDefault } from './utils';\nimport { messages } from '../messages';\nimport { cleanFormatting as cleanFormattingCmd } from '@progress/kendo-editor-common';\nimport { EditorToolsSettings } from './../config/toolsSettings';\nimport { classNames } from '@progress/kendo-react-common';\nvar cleanFormatting = EditorToolsSettings.cleanFormatting;\nvar command = cleanFormattingCmd();\n/**\n * @hidden\n */\nexport var CleanFormatting = function (props) {\n var view = props.view, render = props.render, _a = props.settings, settings = _a === void 0 ? cleanFormatting : _a, buttonProps = __rest(props, [\"view\", \"render\", \"settings\"]);\n var titleKey = settings.messages.title;\n var disabled = !view || !command(view.state);\n var onClick = React.useCallback(function () {\n if (view) {\n command(view.state, function (tr) {\n tr.setMeta('commandName', settings.commandName);\n view.dispatch(tr);\n });\n }\n }, [view]);\n var button = (React.createElement(Button, __assign({ onClick: disabled ? undefined : onClick, \"aria-disabled\": disabled ? true : undefined, title: useLocalization().toLanguageString(titleKey, messages[titleKey]) }, onDownPreventDefault, settings.props, buttonProps, { className: classNames(props.className, settings.props.className, { 'k-disabled': disabled }) })));\n return (render ? render.call(undefined, button, { view: view }) : button);\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\nimport { FindAndReplaceDialog } from '../dialogs/FindReplace';\nimport { onDownPreventDefault } from './utils';\nimport { messages } from './../messages';\nimport { EditorToolsSettings } from './../config/toolsSettings';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { classNames } from '@progress/kendo-react-common';\nvar settings = EditorToolsSettings.findAndReplace;\n/**\n * @hidden\n */\nvar FindAndReplace = /** @class */ (function (_super) {\n __extends(FindAndReplace, _super);\n function FindAndReplace() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = { showDialog: false };\n _this.onClose = function () { return _this.setState({ showDialog: false }); };\n _this.onOpen = function () { return _this.setState({ showDialog: true }); };\n return _this;\n }\n /**\n * @hidden\n */\n FindAndReplace.prototype.render = function () {\n var _a = this.props, view = _a.view, buttonProps = __rest(_a, [\"view\"]);\n var props = settings.props;\n var localization = provideLocalizationService(this);\n var titleKey = settings.messages.findReplaceToolTitle;\n var disabled = !view;\n return [(React.createElement(Button, __assign({ onClick: disabled ? undefined : this.onOpen, \"aria-disabled\": disabled ? true : undefined }, onDownPreventDefault, { title: localization.toLanguageString(titleKey, messages[titleKey]), key: \"tool\" }, props, buttonProps, { className: classNames(buttonProps.className, props.className, { 'k-disabled': disabled }) }))), this.state.showDialog && view && (React.createElement(FindAndReplaceDialog, { view: view, onClose: this.onClose, dir: buttonProps.dir, key: \"dialog\" }))];\n };\n return FindAndReplace;\n}(React.Component));\nexport { FindAndReplace };\nregisterForLocalization(FindAndReplace);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport * as React from 'react';\nimport { toggleList, listStyle } from '@progress/kendo-editor-common';\nimport { SplitButton } from '@progress/kendo-react-buttons';\nimport { listsTypes } from './../config/toolsSettings';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { messages } from '../messages';\nvar parentNode = function (state, nodeType) {\n var _a = state.selection, from = _a.from, to = _a.to;\n var result = null;\n state.doc.nodesBetween(from, to, function (node) {\n result = result || (node.type === nodeType ? node : null);\n return !result;\n });\n return result;\n};\n/**\n * @hidden\n */\nexport var ListTool = function (props) {\n var isActive = false;\n var view = props.view;\n var types = listsTypes;\n var listType = props.listType;\n var localization = useLocalization();\n var items = __spreadArray([], (props.items || []), true);\n var ol, ul;\n if (view) {\n var state = view.state;\n var nodes = state && state.schema.nodes;\n ol = nodes && parentNode(state, nodes[types.orderedList]);\n ul = nodes && parentNode(state, nodes[types.bulletList]);\n isActive = Boolean(listType === types.orderedList ? (ol && !ul) : (!ol && ul));\n }\n var onButtonClick = function (_event) {\n if (view) {\n toggleList(view.state, view.dispatch, view, __assign(__assign({ listType: listType }, types), { listAttrs: {} }), 'InsertList');\n view.focus();\n }\n };\n var onItemClick = function (event) {\n if (view) {\n var listAttrs = event.item.style ? { style: 'list-style-type: ' + event.item.style + ';' } : {};\n var currentList = ol || ul;\n if (currentList && listStyle(currentList.attrs) !== event.item.style) {\n var pos = view.state.selection.$head.posAtIndex(0, -2) - 1;\n view.dispatch(view.state.tr.setNodeMarkup(pos, view.state.schema.nodes[listType], listAttrs));\n }\n else {\n toggleList(view.state, view.dispatch, view, __assign(__assign({ listType: listType }, types), { listAttrs: listAttrs }), 'InsertList');\n }\n view.focus();\n }\n };\n if (isActive && (ol || ul)) {\n var listStyleType_1 = listStyle((ol || ul).attrs);\n items = items.map(function (item, index) { return (__assign(__assign({}, item), { selected: listStyleType_1 ? item.style === listStyleType_1 : index === 0 })); });\n }\n return (React.createElement(\"span\", { onMouseDown: function (e) { e.preventDefault(); } },\n React.createElement(SplitButton, { textField: \"text\", items: items, icon: props.icon, svgIcon: props.svgIcon, onButtonClick: onButtonClick, onItemClick: onItemClick, buttonClass: isActive ? 'k-selected' : undefined, title: props.title !== undefined ? props.title : localization.toLanguageString(props.titleKey, messages[props.titleKey]) })));\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { TableMap } from '@progress/kendo-editor-common';\nimport { parentNode } from '../utils';\n/**\n * @hidden\n */\nexport var reUnit = /[\\D]+$/;\n/**\n * @hidden\n */\nexport var getUnit = function (value) {\n var unitsMatch = value.match(reUnit);\n return unitsMatch ? unitsMatch[0] : '';\n};\n/**\n * @hidden\n */\nexport var nodeSize = function (node, style) {\n var _a;\n var _b;\n var value = parseStyle(((_b = node.attrs) === null || _b === void 0 ? void 0 : _b.style) || '')[style] || '';\n return _a = {},\n _a[style] = parseFloat(value) || null,\n _a[style + 'Unit'] = getUnit(value),\n _a;\n};\n/**\n * @hidden\n */\nexport var parseStyle = function (styleText) {\n var styles = (styleText || '').split(/\\s*;\\s*/).filter(Boolean).map(function (s) {\n var _a;\n var nameValue = s.split(/\\s*:\\s*/);\n return _a = {}, _a[nameValue[0]] = nameValue[1], _a;\n }).reduce(function (acc, val) { return (__assign(__assign({}, acc), val)); }, {});\n return styles;\n};\nvar changeStylesString = function (styleText, newStyle) {\n var styleToChange = newStyle.style;\n var regExp = newStyle.value;\n var newValue = newStyle.newValue;\n if (!styleText) {\n return { changed: false, style: null };\n }\n var styles = styleText.split(/\\s*;\\s*/).filter(function (s) { return Boolean(s); });\n var filtered = styles.filter(function (s) {\n var nameValue = s.split(/\\s*:\\s*/);\n return !(nameValue[0].toLowerCase() === styleToChange && regExp.test(nameValue[1]));\n });\n if (newValue) {\n filtered.push(\"\".concat(styleToChange, \": \").concat(newValue));\n }\n return {\n style: filtered.join('; ') + (filtered.length ? ';' : ''),\n changed: Boolean(newValue) || filtered.length !== styles.length\n };\n};\nvar reAnyValue = /^.+$/;\n/**\n * @hidden\n */\nexport function setNodeStyle(nodeAttrs, styleType, value) {\n var attrs;\n if (new RegExp('[^-]?' + styleType + ':').test(nodeAttrs.style || '')) {\n var style = changeStylesString(nodeAttrs.style || '', { style: styleType, value: reAnyValue, newValue: value }).style;\n attrs = __assign(__assign({}, nodeAttrs), { style: style });\n }\n else if (nodeAttrs.style) {\n var st_1 = parseStyle(nodeAttrs.style);\n st_1[styleType] = value;\n attrs = __assign(__assign({}, nodeAttrs), { style: Object.keys(st_1).filter(function (s) { return Boolean(st_1[s]); }).reduce(function (acc, cur) { return acc + cur + ': ' + st_1[cur] + '; '; }, '').trim() });\n }\n else {\n if (value) {\n attrs = __assign(__assign({}, nodeAttrs), { style: styleType + ': ' + value + ';' });\n }\n else {\n attrs = __assign({}, nodeAttrs);\n }\n }\n return attrs;\n}\nvar getCells = function (state) {\n var doc = state.doc, selection = state.selection;\n var result = [];\n selection.ranges.forEach(function (range) {\n var from = range.$from.pos;\n var to = range.$to.pos;\n doc.nodesBetween(from, to, function (node, pos, _parent, _index) {\n if (node.type.name === 'table_cell' || node.type.name === 'table_header') {\n result.push({ node: node, pos: pos });\n }\n });\n });\n return result;\n};\n/**\n * @hidden\n */\nexport var selectedCells = function (state) {\n var startNodeTable = parentNode(state.selection.$from, function (n) { return n.type.name === 'table'; });\n var endNodeTable = parentNode(state.selection.$to, function (n) { return n.type.name === 'table'; });\n if (startNodeTable && endNodeTable && startNodeTable.depth === endNodeTable.depth && startNodeTable.node.eq(endNodeTable.node)) {\n var cells = getCells(state).filter(function (_a) {\n var pos = _a.pos;\n var parentTable = parentNode(state.doc.resolve(pos), function (n) { return n.type.name === 'table'; });\n return parentTable && parentTable.depth === startNodeTable.depth && startNodeTable.node.eq(parentTable.node);\n });\n return cells;\n }\n return [];\n};\n/**\n * @hidden\n */\nexport var tableCells = function (state) {\n var cells = [];\n if (selectedCells(state).length) {\n var $pos = state.selection.$from;\n var parentTable = parentNode($pos, function (n) { return n.type.spec.tableRole === 'table'; });\n if (parentTable === null) {\n return cells;\n }\n var tablePos_1 = $pos.start(parentTable.depth);\n var tableNode = parentTable.node;\n var map = TableMap.get(tableNode);\n var doc_1 = state.doc;\n map.map.forEach(function (m) {\n var pos = m + tablePos_1;\n cells.push({ pos: pos, node: doc_1.nodeAt(pos) });\n });\n }\n return cells;\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { EditorToolsSettings } from '../config/toolsSettings';\nimport { InsertTableToolNS, InsertTablePopupNS } from './insertTable';\nimport * as AlignTool from './align';\nimport { FontStyleToolNS } from './fontStyle';\nimport { ApplyColorTool } from './applyColor';\nimport { FormatBlockToolNS } from './formatBlock';\nimport { HistoryToolNS } from './history';\nimport { IndentToolNS } from './indent';\nimport { InlineFormatToolNS } from './inlineFormat';\nimport * as InsertImageTool from './insertImage';\nimport { LinkToolNS } from './insertLink';\nimport { ListToolNS } from './lists';\nimport { OutdentToolNS } from './outdent';\nimport { TableEditNS } from './tableEdit';\nimport { UnlinkToolNS } from './unlink';\nimport { ViewHtmlToolNS } from './viewHtml';\nimport { Print as PrintTool } from './print';\nimport { Pdf as PdfTool } from './pdf';\nimport { SelectAll as SelectAllTool } from './selectAll';\nimport { CleanFormatting as CleanFormattingTool } from './cleanFormatting';\nimport { FindAndReplace as FindAndReplaceTool } from './findReplace';\nimport { ListTool } from './lists-styled';\nimport { listLatinBigIcon, listLatinSmallIcon, listOrderedIcon, listRomanLowerIcon, listRomanUpperIcon, listUnorderedIcon, listUnorderedOutlineIcon, listUnorderedSquareIcon } from '@progress/kendo-svg-icons';\nimport { TableCellProperties as TableCellPropertiesTool } from './table-wizard/tableCellProperties';\nimport { TableProperties as TablePropertiesTool } from './table-wizard/tableProperties';\n/**\n * Represents a wrapping namespace for the tool components, props, and functions of the Editor.\n */\nexport var EditorTools;\n(function (EditorTools) {\n /**\n * Creates the Align tool component of the Editor.\n *\n * @param {AlignSettings} settings\n * @returns {React.ComponentClass} - Editor's Align tool component.\n */\n function createAlignTool(settings) { return AlignTool.createAlignTool(settings); }\n EditorTools.createAlignTool = createAlignTool;\n /**\n * The AlignLeft tool component.\n */\n var AlignLeft = /** @class */ (function (_super) {\n __extends(AlignLeft, _super);\n function AlignLeft() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AlignLeft;\n }(createAlignTool(EditorToolsSettings.alignLeft)));\n EditorTools.AlignLeft = AlignLeft;\n /**\n * The AlignRight tool component.\n */\n var AlignRight = /** @class */ (function (_super) {\n __extends(AlignRight, _super);\n function AlignRight() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AlignRight;\n }(createAlignTool(EditorToolsSettings.alignRight)));\n EditorTools.AlignRight = AlignRight;\n /**\n * The AlignCenter tool component.\n */\n var AlignCenter = /** @class */ (function (_super) {\n __extends(AlignCenter, _super);\n function AlignCenter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AlignCenter;\n }(createAlignTool(EditorToolsSettings.alignCenter)));\n EditorTools.AlignCenter = AlignCenter;\n /**\n * The AlignJustify tool component.\n */\n var AlignJustify = /** @class */ (function (_super) {\n __extends(AlignJustify, _super);\n function AlignJustify() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AlignJustify;\n }(createAlignTool(EditorToolsSettings.alignJustify)));\n EditorTools.AlignJustify = AlignJustify;\n /**\n * Creates the InsertTable tool component of the Editor.\n *\n * @param {InsertTableSettings} - The settings of the InsertTable tool.\n * @returns {React.ComponentClass} - The InsertTable tool component of the Editor.\n */\n function createInsertTableTool(settings) { return InsertTableToolNS.createInsertTableTool(settings); }\n EditorTools.createInsertTableTool = createInsertTableTool;\n /**\n * The InsertTable tool component.\n */\n var InsertTable = /** @class */ (function (_super) {\n __extends(InsertTable, _super);\n function InsertTable() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InsertTable;\n }(createInsertTableTool(EditorToolsSettings.insertTable)));\n EditorTools.InsertTable = InsertTable;\n /**\n * The `InsertTablePopup` component.\n */\n var InsertTablePopup = /** @class */ (function (_super) {\n __extends(InsertTablePopup, _super);\n function InsertTablePopup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InsertTablePopup;\n }(InsertTablePopupNS.InsertTablePopup));\n EditorTools.InsertTablePopup = InsertTablePopup;\n /**\n * Creates the DropDownList tool component of the Editor which applies inline styles to inline HTML elements.\n *\n * @param {StyleDropDownListSettings} settings\n * @returns {React.ComponentClass} - The DropDownList tool component of the Editor.\n */\n function createStyleDropDownList(settings) { return FontStyleToolNS.createStyleDropDownList(settings); }\n EditorTools.createStyleDropDownList = createStyleDropDownList;\n /**\n * The FontSize tool component.\n */\n var FontSize = /** @class */ (function (_super) {\n __extends(FontSize, _super);\n function FontSize() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return FontSize;\n }(createStyleDropDownList(EditorToolsSettings.fontSize)));\n EditorTools.FontSize = FontSize;\n /**\n * The FontName tool component.\n */\n var FontName = /** @class */ (function (_super) {\n __extends(FontName, _super);\n function FontName() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return FontName;\n }(createStyleDropDownList(EditorToolsSettings.fontName)));\n EditorTools.FontName = FontName;\n /**\n * The ForeColor tool component.\n */\n EditorTools.ForeColor = function (props) {\n return React.createElement(ApplyColorTool, __assign({}, EditorToolsSettings.foreColor, props));\n };\n /**\n * The BackColor tool component.\n */\n EditorTools.BackColor = function (props) {\n return React.createElement(ApplyColorTool, __assign({}, EditorToolsSettings.backColor, props));\n };\n /**\n * Creates the FormatBlock tool component of the Editor.\n *\n * @param {FormatBlockDropDownListSettings} settings\n * @returns {React.ComponentClass} - The FormatBlock tool component of the Editor.\n */\n function createFormatBlockDropDownList(settings) { return FormatBlockToolNS.createFormatBlockDropDownList(settings); }\n EditorTools.createFormatBlockDropDownList = createFormatBlockDropDownList;\n /**\n * The FormatBlock tool component.\n */\n var FormatBlock = /** @class */ (function (_super) {\n __extends(FormatBlock, _super);\n function FormatBlock() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return FormatBlock;\n }(createFormatBlockDropDownList(EditorToolsSettings.formatBlock)));\n EditorTools.FormatBlock = FormatBlock;\n /**\n * Creates the Undo tool component of the Editor.\n *\n * @param {ToolSettings} settings\n * @returns {React.ComponentClass} - The Undo tool component of the Editor.\n */\n function createUndoTool(settings) { return HistoryToolNS.createUndoTool(settings); }\n EditorTools.createUndoTool = createUndoTool;\n /**\n * Creates the Redo tool component of the Editor.\n *\n * @param {ToolSettings} settings\n * @returns {React.ComponentClass} - The Redo tool component of the Editor.\n */\n function createRedoTool(settings) { return HistoryToolNS.createRedoTool(settings); }\n EditorTools.createRedoTool = createRedoTool;\n /**\n * The Undo tool component of the Editor.\n */\n var Undo = /** @class */ (function (_super) {\n __extends(Undo, _super);\n function Undo() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Undo;\n }(createUndoTool(EditorToolsSettings.undo)));\n EditorTools.Undo = Undo;\n /**\n * The Redo tool component of the Editor.\n */\n var Redo = /** @class */ (function (_super) {\n __extends(Redo, _super);\n function Redo() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Redo;\n }(createRedoTool(EditorToolsSettings.redo)));\n EditorTools.Redo = Redo;\n /**\n * Creates the Indent tool component of the Editor.\n *\n * @param {IndentationSettings} settings\n * @returns {React.ComponentClass} - The Indent tool component of the Editor.\n */\n function createIndentTool(settings) { return IndentToolNS.createIndentTool(settings); }\n EditorTools.createIndentTool = createIndentTool;\n /**\n * The Indent tool component.\n */\n var Indent = /** @class */ (function (_super) {\n __extends(Indent, _super);\n function Indent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Indent;\n }(createIndentTool(EditorToolsSettings.indent)));\n EditorTools.Indent = Indent;\n /**\n * Creates the InlineFormat tool component of the Editor.\n *\n * @param {InlineFormatSettings} settings\n * @returns {React.ComponentClass} - Editor's InlineFormat tool component.\n */\n function createInlineFormatTool(settings) {\n return InlineFormatToolNS.createInlineFormatTool(settings);\n }\n EditorTools.createInlineFormatTool = createInlineFormatTool;\n /**\n * The Bold tool component.\n */\n var Bold = /** @class */ (function (_super) {\n __extends(Bold, _super);\n function Bold() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Bold;\n }(createInlineFormatTool(EditorToolsSettings.bold)));\n EditorTools.Bold = Bold;\n /**\n * The Italic tool component.\n */\n var Italic = /** @class */ (function (_super) {\n __extends(Italic, _super);\n function Italic() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Italic;\n }(createInlineFormatTool(EditorToolsSettings.italic)));\n EditorTools.Italic = Italic;\n /**\n * The Underline tool component.\n */\n var Underline = /** @class */ (function (_super) {\n __extends(Underline, _super);\n function Underline() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Underline;\n }(createInlineFormatTool(EditorToolsSettings.underline)));\n EditorTools.Underline = Underline;\n /**\n * The Strikethrough tool component.\n */\n var Strikethrough = /** @class */ (function (_super) {\n __extends(Strikethrough, _super);\n function Strikethrough() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Strikethrough;\n }(createInlineFormatTool(EditorToolsSettings.strikethrough)));\n EditorTools.Strikethrough = Strikethrough;\n /**\n * The Subscript tool component.\n */\n var Subscript = /** @class */ (function (_super) {\n __extends(Subscript, _super);\n function Subscript() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Subscript;\n }(createInlineFormatTool(EditorToolsSettings.subscript)));\n EditorTools.Subscript = Subscript;\n /**\n * The Superscript tool component.\n */\n var Superscript = /** @class */ (function (_super) {\n __extends(Superscript, _super);\n function Superscript() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Superscript;\n }(createInlineFormatTool(EditorToolsSettings.superscript)));\n EditorTools.Superscript = Superscript;\n /**\n * Creates the InsertImage tool component of the Editor.\n *\n * @param {ImageSettings} settings\n * @returns {React.ComponentClass} - The InsertImage tool component of the Editor.\n */\n function createInsertImageTool(settings) { return InsertImageTool.createInsertImageTool(settings); }\n EditorTools.createInsertImageTool = createInsertImageTool;\n /**\n * The InsertImage tool component.\n */\n var InsertImage = /** @class */ (function (_super) {\n __extends(InsertImage, _super);\n function InsertImage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InsertImage;\n }(createInsertImageTool(EditorToolsSettings.image)));\n EditorTools.InsertImage = InsertImage;\n /**\n * Creates the Link tool component of the Editor.\n *\n * @param {LinkSettings} settings\n * @returns {React.ComponentClass} - The Link tool component of the Editor.\n */\n function createLinkTool(settings) { return LinkToolNS.createLinkTool(settings); }\n EditorTools.createLinkTool = createLinkTool;\n /**\n * The Link tool component.\n */\n var Link = /** @class */ (function (_super) {\n __extends(Link, _super);\n function Link() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Link;\n }(createLinkTool(EditorToolsSettings.link)));\n EditorTools.Link = Link;\n /**\n * The InsertFile tool component.\n */\n var InsertFile = /** @class */ (function (_super) {\n __extends(InsertFile, _super);\n function InsertFile() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return InsertFile;\n }(createLinkTool(EditorToolsSettings.insertFile)));\n EditorTools.InsertFile = InsertFile;\n /**\n * Creates the List tool component of the Editor.\n *\n * @param {ToolSettings} settings\n * @returns {React.ComponentClass} - The List tool component of the Editor.\n */\n function createListTool(settings) { return ListToolNS.createListTool(settings); }\n EditorTools.createListTool = createListTool;\n /**\n * The basic OrderedList tool component. Will render a button which applies `
      ` HTML element.\n */\n var OrderedList = /** @class */ (function (_super) {\n __extends(OrderedList, _super);\n function OrderedList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return OrderedList;\n }(createListTool(EditorToolsSettings.orderedList)));\n EditorTools.OrderedList = OrderedList;\n /**\n * The basic UnorderedList tool component. Will render a button which applies `
        ` HTML element.\n */\n var UnorderedList = /** @class */ (function (_super) {\n __extends(UnorderedList, _super);\n function UnorderedList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return UnorderedList;\n }(createListTool(EditorToolsSettings.bulletList)));\n EditorTools.UnorderedList = UnorderedList;\n /**\n * The BulletedList tool component.\n * Will render a SplitButton which applies `
          ` HTML element with predefined styles - disc and square.\n */\n EditorTools.BulletedList = function (props) {\n var ulItems = [\n { icon: 'list-unordered', svgIcon: listUnorderedIcon, text: 'Disc', style: 'disc' },\n { icon: 'list-unordered-outline', svgIcon: listUnorderedOutlineIcon, text: 'Circle', style: 'circle' },\n { icon: 'list-unordered-square', svgIcon: listUnorderedSquareIcon, text: 'Square', style: 'square' }\n ];\n return (React.createElement(ListTool, __assign({ listType: EditorToolsSettings.bulletList.listType, items: ulItems, icon: \"list-unordered\", svgIcon: listUnorderedIcon, titleKey: EditorToolsSettings.bulletList.messages.title }, props)));\n };\n /**\n * The NumberedList tool component.\n * Will render a SplitButton which applies `
            ` HTML element with predefined styles - upper-roman, lower-roman, upper-latin and lower-latin.\n */\n EditorTools.NumberedList = function (props) {\n var olItems = [\n { icon: 'list-ordered', svgIcon: listOrderedIcon, text: 'Decimal' },\n // { icon: 'list-leading-zero', text: 'Decimal with leading zero', styleType: 'decimal-leading-zero' },\n { icon: 'list-roman-upper', svgIcon: listRomanUpperIcon, text: 'Upper roman', style: 'upper-roman' },\n { icon: 'list-roman-lower', svgIcon: listRomanLowerIcon, text: 'Lower roman', style: 'lower-roman' },\n { icon: 'list-latin-big', svgIcon: listLatinBigIcon, text: 'Upper latin', style: 'upper-latin' },\n { icon: 'list-latin-small', svgIcon: listLatinSmallIcon, text: 'Lower latin', style: 'lower-latin' }\n ];\n return (React.createElement(ListTool, __assign({ listType: EditorToolsSettings.orderedList.listType, items: olItems, icon: \"list-ordered\", svgIcon: listOrderedIcon, titleKey: EditorToolsSettings.orderedList.messages.title }, props)));\n };\n /**\n * The TableCellProperties tool component.\n */\n EditorTools.TableCellProperties = TableCellPropertiesTool;\n ;\n /**\n * The TableProperties tool component.\n */\n EditorTools.TableProperties = TablePropertiesTool;\n ;\n /**\n * Creates the Outdent tool component of the Editor.\n *\n * @param {IndentationSettings} settings\n * @returns {React.ComponentClass} - The Outdent tool component of the Editor.\n */\n function createOutdentTool(settings) { return OutdentToolNS.createOutdentTool(settings); }\n EditorTools.createOutdentTool = createOutdentTool;\n /**\n * The Outdent tool component.\n */\n var Outdent = /** @class */ (function (_super) {\n __extends(Outdent, _super);\n function Outdent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Outdent;\n }(createOutdentTool(EditorToolsSettings.outdent)));\n EditorTools.Outdent = Outdent;\n /**\n * The Print tool component.\n * Designed to work only if Editor's defaultEditMode prop is set to 'iframe'.\n */\n EditorTools.Print = function (props) { return React.createElement(PrintTool, __assign({}, props)); };\n /**\n * The Export to PDF tool component.\n *\n * To modify the default PDF export options, see the following example:\n *\n * @example\n * ```tsx-no-run\n * import { Editor, EditorTools } from '@progress/kendo-react-editor';\n * const { Bold, Italic, Pdf } = EditorTools;\n *\n * const PdfTool = (props: EditorTools.PdfProps) => (\n * \n * );\n *\n * class App extends React.Component {\n * render() {\n * return (\n * text

            \"\n * />\n * );\n * }\n * }\n * ```\n */\n EditorTools.Pdf = function (props) { return React.createElement(PdfTool, __assign({}, props)); };\n /**\n * The SelectAll tool component.\n */\n EditorTools.SelectAll = function (props) { return React.createElement(SelectAllTool, __assign({}, props)); };\n /**\n * The CleanFormatting tool component.\n */\n EditorTools.CleanFormatting = function (props) { return React.createElement(CleanFormattingTool, __assign({}, props)); };\n /**\n * Creates the AddRowBefore tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the AddRowBefore tool.\n * @returns {React.ComponentClass} - The AddRowBefore tool component of the Editor.\n */\n function createAddRowBeforeTool(settings) { return TableEditNS.createAddRowBeforeTool(settings); }\n EditorTools.createAddRowBeforeTool = createAddRowBeforeTool;\n /**\n * Creates the AddRowAfter tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the AddRowAfter tool.\n * @returns {React.ComponentClass} - The AddRowAfter tool component of the Editor.\n */\n function createAddRowAfterTool(settings) { return TableEditNS.createAddRowAfterTool(settings); }\n EditorTools.createAddRowAfterTool = createAddRowAfterTool;\n /**\n * Creates the AddColumnBefore tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the AddColumnBefore tool.\n * @returns {React.ComponentClass} - The AddColumnBefore tool component of the Editor.\n */\n function createAddColumnBeforeTool(settings) {\n return TableEditNS.createAddColumnBeforeTool(settings);\n }\n EditorTools.createAddColumnBeforeTool = createAddColumnBeforeTool;\n /**\n * Creates the AddColumnAfter tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the AddColumnAfter tool.\n * @returns {React.ComponentClass} - The AddColumnAfter tool component of the Editor.\n */\n function createAddColumnAfterTool(settings) { return TableEditNS.createAddColumnAfterTool(settings); }\n EditorTools.createAddColumnAfterTool = createAddColumnAfterTool;\n /**\n * Creates the DeleteRow tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the DeleteRow tool.\n * @returns {React.ComponentClass} - The DeleteRow tool component of the Editor.\n */\n function createDeleteRowTool(settings) { return TableEditNS.createDeleteRowTool(settings); }\n EditorTools.createDeleteRowTool = createDeleteRowTool;\n /**\n * Creates the DeleteColumn tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the DeleteColumn tool.\n * @returns {React.ComponentClass} - The DeleteColumn tool component of the Editor.\n */\n function createDeleteColumnTool(settings) { return TableEditNS.createDeleteColumnTool(settings); }\n EditorTools.createDeleteColumnTool = createDeleteColumnTool;\n /**\n * Creates the DeleteTable tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the DeleteTable tool.\n * @returns {React.ComponentClass} - The DeleteTable tool component of the Editor.\n */\n function createDeleteTableTool(settings) { return TableEditNS.createDeleteTableTool(settings); }\n EditorTools.createDeleteTableTool = createDeleteTableTool;\n /**\n * Creates the MergeCells tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the MergeCells tool\n * @returns {React.ComponentClass} - The MergeCells tool component of the Editor.\n */\n function createMergeCellsTool(settings) { return TableEditNS.createMergeCellsTool(settings); }\n EditorTools.createMergeCellsTool = createMergeCellsTool;\n /**\n * Creates the SplitCell tool component of the Editor.\n *\n * @param {ToolSettings} - The settings of the SplitCell tool.\n * @returns {React.ComponentClass} - The SplitCell tool component of the Editor.\n */\n function createSplitCellTool(settings) { return TableEditNS.createSplitCellTool(settings); }\n EditorTools.createSplitCellTool = createSplitCellTool;\n /**\n * The AddRowBefore tool component.\n */\n var AddRowBefore = /** @class */ (function (_super) {\n __extends(AddRowBefore, _super);\n function AddRowBefore() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AddRowBefore;\n }(createAddRowBeforeTool(EditorToolsSettings.addRowBefore)));\n EditorTools.AddRowBefore = AddRowBefore;\n /**\n * The AddRowAfter tool component.\n */\n var AddRowAfter = /** @class */ (function (_super) {\n __extends(AddRowAfter, _super);\n function AddRowAfter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AddRowAfter;\n }(createAddRowAfterTool(EditorToolsSettings.addRowAfter)));\n EditorTools.AddRowAfter = AddRowAfter;\n /**\n * The AddColumnBefore tool component.\n */\n var AddColumnBefore = /** @class */ (function (_super) {\n __extends(AddColumnBefore, _super);\n function AddColumnBefore() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AddColumnBefore;\n }(createAddColumnBeforeTool(EditorToolsSettings.addColumnBefore)));\n EditorTools.AddColumnBefore = AddColumnBefore;\n /**\n * The AddColumnAfter tool component.\n */\n var AddColumnAfter = /** @class */ (function (_super) {\n __extends(AddColumnAfter, _super);\n function AddColumnAfter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return AddColumnAfter;\n }(createAddColumnAfterTool(EditorToolsSettings.addColumnAfter)));\n EditorTools.AddColumnAfter = AddColumnAfter;\n /**\n * The DeleteRow tool component.\n */\n var DeleteRow = /** @class */ (function (_super) {\n __extends(DeleteRow, _super);\n function DeleteRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return DeleteRow;\n }(createDeleteRowTool(EditorToolsSettings.deleteRow)));\n EditorTools.DeleteRow = DeleteRow;\n /**\n * The DeleteColumn tool component.\n */\n var DeleteColumn = /** @class */ (function (_super) {\n __extends(DeleteColumn, _super);\n function DeleteColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return DeleteColumn;\n }(createDeleteColumnTool(EditorToolsSettings.deleteColumn)));\n EditorTools.DeleteColumn = DeleteColumn;\n /**\n * The DeleteTable tool component.\n */\n var DeleteTable = /** @class */ (function (_super) {\n __extends(DeleteTable, _super);\n function DeleteTable() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return DeleteTable;\n }(createDeleteTableTool(EditorToolsSettings.deleteTable)));\n EditorTools.DeleteTable = DeleteTable;\n /**\n * The MergeCells tool component.\n */\n var MergeCells = /** @class */ (function (_super) {\n __extends(MergeCells, _super);\n function MergeCells() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return MergeCells;\n }(createMergeCellsTool(EditorToolsSettings.mergeCells)));\n EditorTools.MergeCells = MergeCells;\n /**\n * The SplitCell tool component.\n */\n var SplitCell = /** @class */ (function (_super) {\n __extends(SplitCell, _super);\n function SplitCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return SplitCell;\n }(createSplitCellTool(EditorToolsSettings.splitCell)));\n EditorTools.SplitCell = SplitCell;\n /**\n * Creates the Unlink tool component of the Editor.\n *\n * @param {UnlinkSettings} settings\n * @returns {React.ComponentClass} - The Unlink tool component of the Editor.\n */\n function createUnlinkTool(settings) { return UnlinkToolNS.createUnlinkTool(settings); }\n EditorTools.createUnlinkTool = createUnlinkTool;\n /**\n * The Unlink tool component.\n */\n var Unlink = /** @class */ (function (_super) {\n __extends(Unlink, _super);\n function Unlink() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Unlink;\n }(createUnlinkTool(EditorToolsSettings.unlink)));\n EditorTools.Unlink = Unlink;\n /**\n * Creates the ViewHtml tool component of the Editor.\n *\n * @param {ViewHtmlSettings} settings\n * @returns {React.ComponentClass} - The ViewHtml tool component of the Editor.\n */\n function createViewHtmlTool(settings) { return ViewHtmlToolNS.createViewHtmlTool(settings); }\n EditorTools.createViewHtmlTool = createViewHtmlTool;\n /**\n * The ViewHtml tool component.\n */\n var ViewHtml = /** @class */ (function (_super) {\n __extends(ViewHtml, _super);\n function ViewHtml() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return ViewHtml;\n }(createViewHtmlTool(EditorToolsSettings.viewHtml)));\n EditorTools.ViewHtml = ViewHtml;\n /**\n * The FindAndReplace tool component.\n */\n var FindAndReplace = /** @class */ (function (_super) {\n __extends(FindAndReplace, _super);\n function FindAndReplace() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return FindAndReplace;\n }(FindAndReplaceTool));\n EditorTools.FindAndReplace = FindAndReplace;\n})(EditorTools || (EditorTools = {}));\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { htmlToFragment } from '@progress/kendo-editor-common';\nimport { getUnit, parseStyle, selectedCells, setNodeStyle, tableCells } from './utils';\nimport { parentNode } from '../utils';\nvar colgroupAttr = 'k-colgroup-data';\nvar cellsWidth = function (cells, table, $pos) {\n var result = {\n cellWidth: null,\n widthUnit: ''\n };\n var tableNode = table.node;\n var tablePos = $pos.start(table.depth);\n if (!tableNode.attrs[colgroupAttr]) {\n return result;\n }\n var width = new Set();\n var value = '';\n var colgroup = htmlToFragment(tableNode.attrs[colgroupAttr]).firstChild;\n cells.forEach(function (cell) {\n var $cell = tableNode.resolve(cell.pos - tablePos);\n var row = $cell.parent;\n var cellIndex = $cell.index();\n var colSpan = 0;\n for (var i = 0; i <= cellIndex; i++) {\n colSpan += row.child(i).attrs.colspan;\n }\n var col = colgroup.children[colSpan - 1];\n if (col) {\n value = col.style.width;\n width.add(value);\n }\n });\n if (width.size === 1 && value) {\n result.cellWidth = parseFloat(value) || null;\n result.widthUnit = getUnit(value);\n }\n return result;\n};\nvar cellsHeight = function (cells, table, $pos) {\n var result = {\n cellHeight: null,\n heightUnit: ''\n };\n var tableNode = table.node;\n var tablePos = $pos.start(table.depth);\n var height = new Set();\n var value = '';\n cells.forEach(function (cell) {\n var _a;\n var $cell = tableNode.resolve(cell.pos - tablePos);\n var row = $cell.parent;\n value = parseStyle(((_a = row.attrs) === null || _a === void 0 ? void 0 : _a.style) || '').height || '';\n height.add(value);\n });\n if (height.size === 1 && value) {\n result.cellHeight = parseFloat(value) || null;\n result.heightUnit = getUnit(value);\n }\n return result;\n};\nvar cellsStyle = function (cells, style) {\n var values = new Set();\n var value = '';\n cells.forEach(function (cell) {\n var _a;\n value = parseStyle(((_a = cell.node.attrs) === null || _a === void 0 ? void 0 : _a.style) || '')[style] || '';\n values.add(value);\n });\n if (values.size === 1 && value) {\n return value;\n }\n return '';\n};\nvar cellsProp = function (cells, prop) {\n var values = new Set();\n var value = '';\n cells.forEach(function (cell) {\n value = (cell.node.attrs || {})[prop] || '';\n values.add(value);\n });\n if (values.size === 1 && value) {\n return value;\n }\n return '';\n};\n/**\n * @hidden\n */\nvar initialCellData = {\n applyToAll: false,\n cellWidth: null,\n widthUnit: '',\n cellHeight: null,\n heightUnit: '',\n alignment: { x: '', y: '' },\n textControl: '',\n backgroundColor: undefined,\n cellPadding: null,\n borderWidth: null,\n borderColor: undefined,\n borderStyle: null,\n id: '',\n className: ''\n};\n/**\n * @hidden\n */\nvar cellsDefaultData = function (state) {\n var cells = selectedCells(state);\n var $pos = state.selection.$from;\n var table = cells.length ? parentNode($pos, function (n) { return n.type.spec.tableRole === 'table'; }) : null;\n if (!table) {\n return initialCellData;\n }\n return __assign(__assign(__assign(__assign({}, initialCellData), cellsWidth(cells, table, $pos)), cellsHeight(cells, table, $pos)), { alignment: { x: cellsStyle(cells, 'text-align'), y: cellsStyle(cells, 'vertical-align') }, textControl: cellsStyle(cells, 'white-space'), backgroundColor: cellsStyle(cells, 'background-color') || undefined, cellPadding: parseFloat(cellsStyle(cells, 'padding')) || null, borderWidth: parseFloat(cellsStyle(cells, 'border-width')) || null, borderColor: cellsStyle(cells, 'border-color') || undefined, borderStyle: cellsStyle(cells, 'border-style') || null, id: cellsProp(cells, 'id'), className: cellsProp(cells, 'class') });\n};\nvar setCellWidth = function (tr, pos, width) {\n var _a, _b;\n var $cell = tr.doc.resolve(pos);\n var row = $cell.parent;\n var cellIndex = $cell.index();\n var colSpan = 0;\n for (var i = 0; i <= cellIndex; i++) {\n colSpan += row.child(i).attrs.colspan;\n }\n var tableNode = $cell.node($cell.depth - 1);\n var tablePos = $cell.posAtIndex(0, $cell.depth - 1) - 1;\n var attrs = tableNode.attrs;\n var col;\n if (attrs && attrs[colgroupAttr]) {\n // const colgroup = parseStrColgroup(tableNode.attrs[colgroupAttr]);\n var colgroup = htmlToFragment(attrs[colgroupAttr]).firstChild;\n col = colgroup.children[colSpan - 1];\n col.style.width = width;\n attrs = __assign(__assign({}, attrs), (_a = {}, _a[colgroupAttr] = colgroup.outerHTML, _a));\n tr.setNodeMarkup(tablePos, null, attrs);\n }\n else {\n var total = 0;\n for (var i = 0; i < row.childCount; i++) {\n total += row.child(i).attrs.colspan;\n }\n var colgroup = document.createElement('colgroup');\n var cols = new Array(total);\n for (var i = 0; i < total; i++) {\n cols[i] = document.createElement('col');\n colgroup.appendChild(cols[i]);\n }\n col = cols[cellIndex];\n col.style.width = width;\n attrs = __assign(__assign({}, attrs), (_b = {}, _b[colgroupAttr] = '